You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jo...@apache.org on 2014/09/22 19:48:01 UTC

[03/16] git commit: AMBARI-7427 It is not possible to change "Custom" Created dates again. (Buzhor Denys via ababiichuk)

AMBARI-7427 It is not possible to change "Custom" Created dates again. (Buzhor Denys via ababiichuk)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/af150a1b
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/af150a1b
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/af150a1b

Branch: refs/heads/branch-alerts-dev
Commit: af150a1be3dd007625397c5dc03aa6547343cf28
Parents: 3590d7d
Author: aBabiichuk <ab...@cybervisiontech.com>
Authored: Mon Sep 22 14:40:03 2014 +0300
Committer: aBabiichuk <ab...@cybervisiontech.com>
Committed: Mon Sep 22 14:40:03 2014 +0300

----------------------------------------------------------------------
 .../main/dashboard/config_history_controller.js |  1 +
 ambari-web/app/views/common/filter_view.js      | 74 +++++++++++++++++++-
 .../views/main/dashboard/config_history_view.js | 10 ++-
 3 files changed, 82 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/af150a1b/ambari-web/app/controllers/main/dashboard/config_history_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/dashboard/config_history_controller.js b/ambari-web/app/controllers/main/dashboard/config_history_controller.js
index e6d8614..582874c 100644
--- a/ambari-web/app/controllers/main/dashboard/config_history_controller.js
+++ b/ambari-web/app/controllers/main/dashboard/config_history_controller.js
@@ -127,6 +127,7 @@ App.MainConfigHistoryController = Em.ArrayController.extend(App.TableServerMixin
           time = curTime - 2592000000;
           break;
         case 'Custom':
+        case 'Custom2':
           customDatePopup.showCustomDatePopup(this, this.get('actualValues'));
           break;
         case 'Any':

http://git-wip-us.apache.org/repos/asf/ambari/blob/af150a1b/ambari-web/app/views/common/filter_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/filter_view.js b/ambari-web/app/views/common/filter_view.js
index f279fd3..83d23a7 100644
--- a/ambari-web/app/views/common/filter_view.js
+++ b/ambari-web/app/views/common/filter_view.js
@@ -50,6 +50,24 @@ var wrapperView = Ember.View.extend({
    */
   fieldId: null,
 
+  /**
+   * This option is useful for Em.Select, if you want get events when same option selected more than one time a raw.
+   * This property is Object[] (for example see App.MainConfigHistoryView.modifiedFilterView),
+   * that have followed structure:
+   *
+   * <code>
+   * [
+   *  {
+   *    values: ['DefinedValue1', 'DefinedValue2'], // this properties should be defined in `content` property
+   *    displayAs: 'Choose me' // this value will be displayed
+   *  }
+   * ]
+   * </code>
+   * @type {Array}
+   *
+   **/
+  triggeredOnSameValue: null,
+
   clearFilter: function(){
     this.set('value', this.get('emptyValue'));
     if(this.get('setPropertyOnApply')){
@@ -136,6 +154,60 @@ var wrapperView = Ember.View.extend({
     var parent = this.$().parent();
     this.set('parentNode', parent);
     parent.addClass('notActive');
+    this.checkSelectSpecialOptions();
+  },
+
+  /**
+   * Check for Em.Select that should use dispatching event when option with same value selected more than one time.
+   **/
+  checkSelectSpecialOptions: function() {
+    // check predefined property
+    if (!this.get('triggeredOnSameValue') || !this.get('triggeredOnSameValue').length) return;
+    // add custom additional observer that will handle property changes
+    this.addObserver('value', this, 'valueCustomObserver');
+    // get the full class attribute to find our select
+    var classInlineAttr = this.get('fieldType').split(',')
+      .map(function(className) {
+        return '.' + className.trim();
+      }).join('');
+    this.set('classInlineAttr', classInlineAttr);
+    this.get('triggeredOnSameValue').forEach(function(triggeredValue) {
+      triggeredValue.values.forEach(function(value, index) {
+        // option with property `value`
+        var $optionEl = $(this.get('element')).find(classInlineAttr)
+          .find('option[value="' + value + '"]');
+        // should be displayed with `displayAs` caption
+        $optionEl.text(triggeredValue.displayAs);
+        // the second one option should be hidden
+        // as the result, on init stage we show only one option that could be selected
+        if (index == 1) {
+          $optionEl.css('display', 'none');
+        }
+      }, this);
+    }, this);
+  },
+  /**
+   *
+   * Custom observer that used for special case of Em.Select related to dispatching event
+   * when option with same value selected more than one time.
+   *
+   **/
+  valueCustomObserver: function() {
+    var hiddenValue;
+    this.get('triggeredOnSameValue').forEach(function(triggeredValue) {
+      var values = triggeredValue.values;
+      // find current selected value from `values` list
+      var currentValueIndex = values.indexOf(this.get('value'));
+      if (currentValueIndex < 0) return;
+      // value assigned to hidden option
+      hiddenValue = values[Number(currentValueIndex == 0)];
+    }, this);
+    // our select
+    var $select = $(this.get('element')).find(this.get('classInlineAttr'));
+    // now hide option with current value
+    $select.find('option[value="{0}"]'.format(this.get('value'))).css('display', 'none');
+    // and show option that was hidden
+    $select.find('option[value="{0}"'.format(hiddenValue)).css('display', 'block');
   }
 });
 
@@ -274,7 +346,7 @@ module.exports = {
 
     config.fieldType = config.fieldType || 'input-medium';
     config.filterView = selectFieldView.extend({
-      classNames : [ config.fieldType ],
+      classNames : config.fieldType.split(','),
       attributeBindings: ['disabled','multiple'],
       disabled: false
     });

http://git-wip-us.apache.org/repos/asf/ambari/blob/af150a1b/ambari-web/app/views/main/dashboard/config_history_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/dashboard/config_history_view.js b/ambari-web/app/views/main/dashboard/config_history_view.js
index 792e31f..49e1d82 100644
--- a/ambari-web/app/views/main/dashboard/config_history_view.js
+++ b/ambari-web/app/views/main/dashboard/config_history_view.js
@@ -149,8 +149,14 @@ App.MainConfigHistoryView = App.TableView.extend({
 
   modifiedFilterView: filters.createSelectView({
     column: 3,
-    fieldType: 'filter-input-width',
-    content: ['Any', 'Past 1 hour',  'Past 1 Day', 'Past 2 Days', 'Past 7 Days', 'Past 14 Days', 'Past 30 Days', 'Custom'],
+    triggeredOnSameValue: [
+      {
+        values: ['Custom', 'Custom2'],
+        displayAs: 'Custom'
+      }
+    ],
+    fieldType: 'filter-input-width,modified-filter',
+    content: ['Any', 'Past 1 hour',  'Past 1 Day', 'Past 2 Days', 'Past 7 Days', 'Past 14 Days', 'Past 30 Days', 'Custom', 'Custom2'],
     valueBinding: "controller.modifiedFilter.optionValue",
     startTimeBinding: "controller.modifiedFilter.actualValues.startTime",
     endTimeBinding: "controller.modifiedFilter.actualValues.endTime",