From 795cd663a2933dc404ce0ff0e517b6e018fc897a Mon Sep 17 00:00:00 2001 From: maximesangoi Date: Thu, 8 Jan 2015 11:16:59 +0100 Subject: [PATCH] Add input field (not complete) --- .../directives/fields/checkbox.tpl.jade | 7 +- .../directives/fields/fields.directive.coffee | 18 ++++- .../common/directives/fields/radio.tpl.jade | 8 +-- .../services/fields/fields.service.coffee | 66 ++++++++++++------- .../app/settings/settings.controller.coffee | 10 ++- www/base/src/app/settings/settings.tpl.jade | 23 +++++-- www/base/src/styles/styles.less | 4 ++ 7 files changed, 93 insertions(+), 43 deletions(-) diff --git a/www/base/src/app/common/directives/fields/checkbox.tpl.jade b/www/base/src/app/common/directives/fields/checkbox.tpl.jade index b06bcc517de..21048836fa2 100644 --- a/www/base/src/app/common/directives/fields/checkbox.tpl.jade +++ b/www/base/src/app/common/directives/fields/checkbox.tpl.jade @@ -1,4 +1,3 @@ -div - label - input(type="checkbox", ng-model="data.value", ng-change="changeSettings(data.name, data.value)", ng-value="data.value") - | {{ data.name }} \ No newline at end of file +label + input(type="checkbox", ng-model="data.value", ng-change="changeSettings(data.name, data.value)", ng-value="data.value" ng-disabled="isDisabled") + | {{ data.name }} \ No newline at end of file diff --git a/www/base/src/app/common/directives/fields/fields.directive.coffee b/www/base/src/app/common/directives/fields/fields.directive.coffee index 1c990319cf4..dccc94417c4 100644 --- a/www/base/src/app/common/directives/fields/fields.directive.coffee +++ b/www/base/src/app/common/directives/fields/fields.directive.coffee @@ -3,7 +3,7 @@ class bbcheckbox extends Directive('common') return { restrict: 'E' transclude: true - scope: {data:'='} + scope: {data:'=', isDisabled:'='} templateUrl: 'views/checkbox.html' controller: '_fieldController' } @@ -13,11 +13,23 @@ class bbradio extends Directive('common') return { restrict: 'E' transclude: true - scope: {data:'='} + scope: {data:'=', isDisabled:'='} templateUrl: 'views/radio.html' controller: '_fieldController' } +class bbinput extends Directive('common') + constructor: (RecursionHelper) -> + return { + restrict: 'E' + replace: true + transclude: true + scope: {data:'=', isDisabled:'='} + templateUrl: 'views/input.html' + controller: '_fieldController' + } + class _field extends Controller('common') constructor: ($scope) -> - $scope.changeSettings = (settings, value) -> localStorage.setItem(settings, value) + $scope.changeSettings = (settings, value) -> + localStorage.setItem(settings, value) diff --git a/www/base/src/app/common/directives/fields/radio.tpl.jade b/www/base/src/app/common/directives/fields/radio.tpl.jade index 05e259d36e5..b48c5d7900a 100644 --- a/www/base/src/app/common/directives/fields/radio.tpl.jade +++ b/www/base/src/app/common/directives/fields/radio.tpl.jade @@ -1,4 +1,4 @@ -div - label(ng-repeat="(key,answer) in data.answers") - input(type="radio", ng-model="data.value", ng-change="changeSettings(data.name, answer)", ng-value="answer") - | {{ key }} \ No newline at end of file +div(ng-repeat="(key,answer) in data.answers") + label(class="bbradio" class="radio-inline") + input(type="radio" name="{{data.name}}" ng-model="data.value" ng-change="changeSettings(data.name, answer)" ng-value="answer" class="bbradio") + | {{ answer }} \ No newline at end of file diff --git a/www/base/src/app/common/services/fields/fields.service.coffee b/www/base/src/app/common/services/fields/fields.service.coffee index 0f963478bb7..cd292ca61b2 100644 --- a/www/base/src/app/common/services/fields/fields.service.coffee +++ b/www/base/src/app/common/services/fields/fields.service.coffee @@ -2,31 +2,47 @@ class fieldsService extends Factory('common') constructor: -> return { - checkbox: (name) -> - if localStorage.getItem(name) isnt undefined - initial_value = localStorage.getItem(name) is "true" + checkbox: (name, model) -> + if localStorage.getItem("#{name}")? + initial_value = localStorage.getItem("#{name}") is "true" + else + initial_value = model + + field = + type: 'checkbox' + name: "#{name}" + value: initial_value + return field + + radio: (name, model, specific_answers...) -> + default_answers = ["yes", "no"] + answers = default_answers + if specific_answers.length > 0 + answers = specific_answers + + if localStorage.getItem("#{name}")? + initial_value = localStorage.getItem("#{name}") + else + initial_value = model + + field = + name: "#{name}" + type: 'radio' + value: initial_value + answers: answers + return field + + input: (name, model) -> + if localStorage.getItem("#{name}")? + initial_value = localStorage.getItem("#{name}") + else + initial_value = model + + field = + name: "#{name}" + type: 'text' + value: initial_value + return field - ret = - type: 'checkbox' - name: name - value: initial_value - - return ret - - radio: (name, answers...) -> - default_answers = - "yes": "yes" - "no" : "no" - - if localStorage.getItem(name) isnt undefined - initial_value = localStorage.getItem(name) - - ret = - name: name - type: 'radio' - value: initial_value - answers: default_answers - - return ret } diff --git a/www/base/src/app/settings/settings.controller.coffee b/www/base/src/app/settings/settings.controller.coffee index d9f8f0e1e80..230763b2445 100644 --- a/www/base/src/app/settings/settings.controller.coffee +++ b/www/base/src/app/settings/settings.controller.coffee @@ -3,7 +3,13 @@ class Settings extends Controller # All settings definition # + $scope.settings1 = true + $scope.settings5 = "Here is a test" + $scope.val = "First choice" $scope.settings = - settings1: fieldsService.checkbox("Settings 1") + settings1: fieldsService.checkbox("Settings 1", $scope.settings1) settings2: fieldsService.checkbox("Settings 2") - settings3: fieldsService.radio("Settings 3") + settings3: fieldsService.radio("Settings 3", $scope.val, "First choice", "Second choice", "Third choice") + settings4: fieldsService.radio("Settings 4", true, "First choice", "Second choice") + settings5: fieldsService.input("Settings 5", $scope.settings5) + diff --git a/www/base/src/app/settings/settings.tpl.jade b/www/base/src/app/settings/settings.tpl.jade index bcd086b2972..4b2c1a80cf8 100644 --- a/www/base/src/app/settings/settings.tpl.jade +++ b/www/base/src/app/settings/settings.tpl.jade @@ -1,9 +1,22 @@ .container .row .well - h2 About this buildbot + h2 Settings .row - div - bbcheckbox(data="settings.settings1") - bbcheckbox(data="settings.settings2") - bbradio(data="settings.settings3") \ No newline at end of file + h3 First Settings + form(name="settings1") + div(class="checkbox") + bbcheckbox(data="settings.settings1") + div(class="checkbox") + bbcheckbox(data="settings.settings2") + span(class="help-block" ng-show="settings.settings1.value") Warning : {{ settings.settings1.name }} is checked + h3 Second Settings + form + div(class="radio") + bbradio(data="settings.settings3") + div(class="radio") + bbradio(data="settings.settings4") + h3 Third Settings + form(class="form-horizontal") + div(class="form-group") + bbinput(data="settings.settings5") \ No newline at end of file diff --git a/www/base/src/styles/styles.less b/www/base/src/styles/styles.less index 7b59daf3ba0..c394b5d3d05 100644 --- a/www/base/src/styles/styles.less +++ b/www/base/src/styles/styles.less @@ -102,3 +102,7 @@ background-color: #ccc } } + +.bbradio { + margin-right: 20px; +}