Browse Source

AMBARI-15138 SCRIPT params should support visibility attribute (zhewang)

Zhe (Joe) Wang 9 years ago
parent
commit
32da806c99

+ 10 - 3
ambari-web/app/controllers/main/alerts/definition_configs_controller.js

@@ -136,6 +136,7 @@ App.MainAlertDefinitionConfigsController = Em.Controller.extend({
    * @method renderConfigs
    */
   renderConfigs: function () {
+    var self = this;
     var alertDefinitionType = this.get('alertDefinitionType');
     var configs = [];
     switch (alertDefinitionType) {
@@ -163,7 +164,9 @@ App.MainAlertDefinitionConfigsController = Em.Controller.extend({
       default:
     }
 
-    configs.setEach('isDisabled', !this.get('canEdit'));
+    configs.forEach(function (config) {
+      config.set('isDisabled', !self.get('canEdit') || config.get('readonly'));
+    });
 
     this.set('configs', configs);
   },
@@ -346,7 +349,9 @@ App.MainAlertDefinitionConfigsController = Em.Controller.extend({
         label: isWizard ? '' : parameter.get('displayName'),
         threshold: isWizard ? '' : parameter.get('threshold'),
         units: isWizard ? '' : parameter.get('units'),
-        type: isWizard ? '' : parameter.get('type')
+        type: isWizard ? '' : parameter.get('type'),
+        hidden: parameter.get('visibility') === "HIDDEN",
+        readonly: parameter.get('visibility') === "READ_ONLY"
       }));
     });
 
@@ -454,7 +459,9 @@ App.MainAlertDefinitionConfigsController = Em.Controller.extend({
       property.set('previousValue', property.get('value'));
       property.set('previousText', property.get('text'));
     });
-    this.get('configs').setEach('isDisabled', false);
+    this.get('configs').forEach(function (config) {
+      config.set('isDisabled', config.get('readonly'));
+    });
     this.set('canEdit', true);
   },
 

+ 2 - 1
ambari-web/app/mappers/alert_definitions_mapper.js

@@ -124,7 +124,8 @@ App.alertDefinitionsMapper = App.QuickDataMapper.create({
               value: parameter.value,
               description: parameter.description,
               type: parameter.type,
-              threshold: parameter.threshold
+              threshold: parameter.threshold,
+              visibility: parameter.visibility
             });
           });
         }

+ 2 - 1
ambari-web/app/models/alerts/alert_definition.js

@@ -284,7 +284,8 @@ App.AlertDefinitionParameter = DS.Model.extend({
   value: DS.attr('string'),
   description: DS.attr('string'),
   type: DS.attr('string'),
-  threshold: DS.attr('string')
+  threshold: DS.attr('string'),
+  visibility: DS.attr('string')
 });
 
 App.AlertReportDefinition = DS.Model.extend({

+ 16 - 14
ambari-web/app/templates/main/alerts/configs.hbs

@@ -23,22 +23,24 @@
     </div>
   {{/if}}
   {{#each property in controller.configs}}
-    <div {{bindAttr class=":control-group property.name property.isValid::error"}}>
-      {{#if property.isPreLabeled}}
-        <label {{bindAttr class=":control-label property.isShifted:shifted"}}>{{property.label}}</label>
+    {{#unless property.hidden}}
+      <div {{bindAttr class=":control-group property.name property.isValid::error"}}>
+        {{#if property.isPreLabeled}}
+          <label {{bindAttr class=":control-label property.isShifted:shifted"}}>{{property.label}}</label>
 
-        <div {{bindAttr class=":controls property.isShifted:shifted"}}>
-          {{view property.viewClass propertyBinding="property"}}
-        </div>
-      {{else}}
-        <div class="controls">
-          <label class="radio">
+          <div {{bindAttr class=":controls property.isShifted:shifted"}}>
             {{view property.viewClass propertyBinding="property"}}
-            {{property.label}}
-          </label>
-        </div>
-      {{/if}}
-    </div>
+          </div>
+        {{else}}
+          <div class="controls">
+            <label class="radio">
+              {{view property.viewClass propertyBinding="property"}}
+              {{property.label}}
+            </label>
+          </div>
+        {{/if}}
+      </div>
+    {{/unless}}
   {{/each}}
   {{#if controller.hasThresholdsError}}
     <div class="error-message controls">