AMBARI-20425 Empty current and recommended values in "Recommended configs" 
panel during Add Service. (ababiichuk)


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

Branch: refs/heads/branch-feature-AMBARI-12556
Commit: 592c1a90c66b621cada4c6f335196dce2121814a
Parents: 369057a
Author: ababiichuk <ababiic...@hortonworks.com>
Authored: Mon Mar 13 18:12:23 2017 +0200
Committer: ababiichuk <ababiic...@hortonworks.com>
Committed: Mon Mar 13 19:51:42 2017 +0200

----------------------------------------------------------------------
 ambari-web/app/messages.js                      |  3 +-
 ambari-web/app/styles/application.less          | 19 ++++++++-----
 .../views/common/configs/config_diff_view.js    | 29 ++++++++++++++++++--
 3 files changed, 40 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/592c1a90/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 2e80a2b..1a26516 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -477,7 +477,8 @@ Em.I18n.translations = {
   'popup.dependent.configs.table.currentValue': 'Current Value',
   'popup.dependent.configs.table.recommendedValue': 'Recommended Value',
   'popup.dependent.configs.table.newValue': 'New Value',
-  'popup.dependent.configs.table.not.defined': 'Not Defined',
+  'popup.dependent.configs.table.undefined': 'Property undefined',
+  'popup.dependent.configs.table.removed': 'Property removed',
 
 
   'popup.dependent.configs.select.config.group.header': 'Select Config Group',

http://git-wip-us.apache.org/repos/asf/ambari/blob/592c1a90/ambari-web/app/styles/application.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/application.less 
b/ambari-web/app/styles/application.less
index 8a15fb1..151e404 100644
--- a/ambari-web/app/styles/application.less
+++ b/ambari-web/app/styles/application.less
@@ -2293,6 +2293,10 @@ input[type="radio"].align-checkbox, 
input[type="checkbox"].align-checkbox {
 @config-dependency-t-group-width: 140px;
 @config-dependency-t-filename-width: 150px;
 @config-dependency-t-value-width: 230px;
+@diff-background-insert: #eaffea;
+@diff-background-delete: #ffecec;
+@diff-background-equal: #fff;
+@diff-background-empty: #ddd;
 
 #config-dependencies {
   max-height: 500px;
@@ -2327,17 +2331,18 @@ input[type="radio"].align-checkbox, 
input[type="checkbox"].align-checkbox {
         &.empty {
           width: 50%;
         }
-        &.delete, &.insert, &.replace {
-          color: #fff;
-        }
         &.delete {
-          background-color: @health-status-red !important;
+          background-color: @diff-background-delete !important;
         }
         &.insert {
-          background-color: @health-status-green !important;
+          background-color: @diff-background-insert !important;
+        }
+        &.equal, &.not-defined:last-of-type, &.is-removed:first-of-type {
+          background-color: @diff-background-equal;
         }
-        &.replace {
-          background-color: @health-status-orange !important;
+        &.not-defined:first-of-type, &.is-removed:last-of-type {
+          background-color: @diff-background-empty;
+          font-style: italic;
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/592c1a90/ambari-web/app/views/common/configs/config_diff_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/config_diff_view.js 
b/ambari-web/app/views/common/configs/config_diff_view.js
index 135efb7..cbaf2b0 100644
--- a/ambari-web/app/views/common/configs/config_diff_view.js
+++ b/ambari-web/app/views/common/configs/config_diff_view.js
@@ -29,12 +29,35 @@ App.ConfigDiffView = Em.View.extend({
       }).sort().join("\n");
       return difflib.stringAsLines(values);
     };
-    var initialValues = trimAndSort(this.get('config.initialValue'));
-    var recommendedValues = trimAndSort(this.get('config.recommendedValue'));
+    var initialValues = trimAndSort(this.get('config.initialValue')),
+      recommendedValues = trimAndSort(this.get('config.recommendedValue')),
+      opcodes = new difflib.SequenceMatcher(initialValues, 
recommendedValues).get_opcodes();
+    if (initialValues.length === 1 && recommendedValues.length === 1) {
+      // changes in properties with single-line values shouldn't be highlighted
+      opcodes[0][0] = 'equal';
+    }
+    if (!initialValues.length) {
+      if (recommendedValues.length > 1) {
+        // initial and recommended values should have the same number of rows
+        initialValues = Array(recommendedValues.length - 
1).join('.').split('.');
+      }
+      
initialValues.unshift(Em.I18n.t('popup.dependent.configs.table.undefined'));
+      opcodes[0][0] = 'not-defined'; // class name for cell corresponding to 
undefined property
+      opcodes[0][2] = recommendedValues.length; // specifying rows number 
explicitly to avoid omitting of 'Property undefined' message
+    }
+    if (!recommendedValues.length) {
+      if (initialValues.length > 1) {
+        // initial and recommended values should have the same number of rows
+        recommendedValues = Array(initialValues.length - 
1).join('.').split('.');
+      }
+      
recommendedValues.unshift(Em.I18n.t('popup.dependent.configs.table.removed'));
+      opcodes[0][0] = 'is-removed'; // class name for cell corresponding to 
removed property
+      opcodes[0][4] = initialValues.length; // specifying rows number 
explicitly to avoid omitting of 'Property removed' message
+    }
     return new Handlebars.SafeString(diffview.buildView({
       baseTextLines: initialValues,
       newTextLines: recommendedValues,
-      opcodes: new difflib.SequenceMatcher(initialValues, 
recommendedValues).get_opcodes()
+      opcodes: opcodes
     }).outerHTML);
   }.property('config.initialValues', 'config.recommendedValues')
 });

Reply via email to