From 1072577ce03a3658f772ada3bdd6a2a5ee0db2d3 Mon Sep 17 00:00:00 2001 From: Lisa Passing Date: Wed, 1 Jul 2015 17:09:05 +0200 Subject: [PATCH] add compontents for settings --- app/components/env-var.coffee | 55 +++++++++++++++++++ app/components/settings-switch.coffee | 26 +++++++++ app/components/ssh-key.coffee | 5 ++ app/templates/components/env-var.hbs | 1 + app/templates/components/settings-switch.hbs | 9 +++ app/templates/components/ssh-key.hbs | 1 + tests/unit/components/env-var-test.coffee | 17 ++++++ .../components/settings-switch-test.coffee | 17 ++++++ tests/unit/components/ssh-key-test.coffee | 17 ++++++ 9 files changed, 148 insertions(+) create mode 100644 app/components/env-var.coffee create mode 100644 app/components/settings-switch.coffee create mode 100644 app/components/ssh-key.coffee create mode 100644 app/templates/components/env-var.hbs create mode 100644 app/templates/components/settings-switch.hbs create mode 100644 app/templates/components/ssh-key.hbs create mode 100644 tests/unit/components/env-var-test.coffee create mode 100644 tests/unit/components/settings-switch-test.coffee create mode 100644 tests/unit/components/ssh-key-test.coffee diff --git a/app/components/env-var.coffee b/app/components/env-var.coffee new file mode 100644 index 00000000..52a7e3e7 --- /dev/null +++ b/app/components/env-var.coffee @@ -0,0 +1,55 @@ +`import Ember from 'ember'` + +EnvVarComponent = Ember.Component.extend + + + name: DS.attr() + value: DS.attr() + public: DS.attr('boolean') + + repo: DS.belongsTo('repo', async: true) + + isEditing: false + isDeleting: false + + validates: + name: ['presence'] + + actionType: 'Save' + showValueField: Ember.computed.alias('public') + + value: ( (key, value) -> + if arguments.length == 2 + @get('model').set('value', value) + value + else if @get('public') + @get('model.value') + else + '••••••••••••••••' + ).property('model.value', 'public') + + actions: + delete: -> + return if @get('isDeleting') + @set('isDeleting', true) + + @get('model').destroyRecord() + + edit: -> + @set('isEditing', true) + + cancel: -> + @set('isEditing', false) + @get('model').revert() + + save: -> + return if @get('isSaving') + + if @isValid() + env_var = @get('model') + + # TODO: handle errors + env_var.save().then => + @set('isEditing', false) + +`export default EnvVarComponent` diff --git a/app/components/settings-switch.coffee b/app/components/settings-switch.coffee new file mode 100644 index 00000000..2381b68c --- /dev/null +++ b/app/components/settings-switch.coffee @@ -0,0 +1,26 @@ +`import Ember from 'ember'` + +SettingsSwitchComponent = Ember.Component.extend + + tagName: 'a' + classNames: ['settings-switch'] + classNameBindings: ['_active:active'] + + # TODO: how to handle overriding properties to + # avoid naming it _action? + _active: (-> + @get('target.active') || @get('active') + ).property('target.active', 'active') + + click: -> + target = @get('target') + if @get('toggleAutomatically') != 'false' + if target + @set('target.active', !@get('target.active')) + else + @set('active', !@get('active')) + # allow for bindings to propagate + Ember.run.next this, -> + @sendAction('action', target) + +`export default SettingsSwitchComponent` diff --git a/app/components/ssh-key.coffee b/app/components/ssh-key.coffee new file mode 100644 index 00000000..939f29dc --- /dev/null +++ b/app/components/ssh-key.coffee @@ -0,0 +1,5 @@ +`import Ember from 'ember'` + +SshKeyComponent = Ember.Component.extend() + +`export default SshKeyComponent` diff --git a/app/templates/components/env-var.hbs b/app/templates/components/env-var.hbs new file mode 100644 index 00000000..afa31207 --- /dev/null +++ b/app/templates/components/env-var.hbs @@ -0,0 +1 @@ +

this is an env-var

diff --git a/app/templates/components/settings-switch.hbs b/app/templates/components/settings-switch.hbs new file mode 100644 index 00000000..e4c7672d --- /dev/null +++ b/app/templates/components/settings-switch.hbs @@ -0,0 +1,9 @@ +
+ + ON + + + OFF + +
+Some label text \ No newline at end of file diff --git a/app/templates/components/ssh-key.hbs b/app/templates/components/ssh-key.hbs new file mode 100644 index 00000000..437eda01 --- /dev/null +++ b/app/templates/components/ssh-key.hbs @@ -0,0 +1 @@ +

This is an ssh key

diff --git a/tests/unit/components/env-var-test.coffee b/tests/unit/components/env-var-test.coffee new file mode 100644 index 00000000..ece08e45 --- /dev/null +++ b/tests/unit/components/env-var-test.coffee @@ -0,0 +1,17 @@ +`import { test, moduleForComponent } from 'ember-qunit'` + +moduleForComponent 'env-var', { + # specify the other units that are required for this test + # needs: ['component:foo', 'helper:bar'] +} + +test 'it renders', (assert) -> + assert.expect 2 + + # creates the component instance + component = @subject() + assert.equal component._state, 'preRender' + + # renders the component to the page + @render() + assert.equal component._state, 'inDOM' diff --git a/tests/unit/components/settings-switch-test.coffee b/tests/unit/components/settings-switch-test.coffee new file mode 100644 index 00000000..674547fc --- /dev/null +++ b/tests/unit/components/settings-switch-test.coffee @@ -0,0 +1,17 @@ +`import { test, moduleForComponent } from 'ember-qunit'` + +moduleForComponent 'settings-switch', { + # specify the other units that are required for this test + # needs: ['component:foo', 'helper:bar'] +} + +test 'it renders', (assert) -> + assert.expect 2 + + # creates the component instance + component = @subject() + assert.equal component._state, 'preRender' + + # renders the component to the page + @render() + assert.equal component._state, 'inDOM' diff --git a/tests/unit/components/ssh-key-test.coffee b/tests/unit/components/ssh-key-test.coffee new file mode 100644 index 00000000..9cb96498 --- /dev/null +++ b/tests/unit/components/ssh-key-test.coffee @@ -0,0 +1,17 @@ +`import { test, moduleForComponent } from 'ember-qunit'` + +moduleForComponent 'ssh-key', { + # specify the other units that are required for this test + # needs: ['component:foo', 'helper:bar'] +} + +test 'it renders', (assert) -> + assert.expect 2 + + # creates the component instance + component = @subject() + assert.equal component._state, 'preRender' + + # renders the component to the page + @render() + assert.equal component._state, 'inDOM'