소스 검색

HUE-1803 [oozie] Support global configuration

Front end for global config.
Abraham Elmahrek 12 년 전
부모
커밋
343481f957

+ 26 - 16
apps/oozie/src/oozie/templates/editor/edit_workflow.mako

@@ -93,7 +93,7 @@ ${ layout.menubar(section='workflows') }
         </div>
 
       <%
-      workflows.key_value_field(workflow_form['parameters'], {
+      workflows.key_value_field(workflow_form['parameters'].label, workflow_form['parameters'].help_text, {
       'name': 'parameters',
       'remove': '$root.removeParameter',
       'add': '$root.addParameter',
@@ -101,7 +101,7 @@ ${ layout.menubar(section='workflows') }
       %>
 
       <%
-      workflows.key_value_field(workflow_form['job_properties'], {
+      workflows.key_value_field(workflow_form['job_properties'].label, workflow_form['job_properties'].help_text, {
       'name': 'job_properties',
       'remove': '$root.removeJobProperty',
       'add': '$root.addJobProperty',
@@ -120,26 +120,36 @@ ${ layout.menubar(section='workflows') }
 
         <div id="globalPropertiesEditord" class="control-group">
           <label class="control-label">
-              ${ _('Global properties') }
+            ${ _('Global properites') }
           </label>
-          
-	      <%
-	      workflows.key_value_field(type('globalProperties', (object,), {'label': 'l', 'help_text': 'h'}), {
-	        'name': 'globalProperties',
-	        'remove': '$root.removeGlobalProperties',
-	        'add': '$root.addGlobalProperties',
-	      })
-	      %>
-
-          ${ utils.globalConfigForm() }
-        </div>   
+          <%
+          workflows.key_value_field(_("Global properties"), _("Global properties"), {
+          'name': 'data.global_properties',
+          'remove': '$root.removeGlobalProperty',
+          'add': '$root.addGlobalProperty',
+          })
+          %>
+        </div>
+
+        <div id="globalConfigEditord" class="control-group">
+          <label class="control-label">
+            ${ _('Global config') }
+          </label>
+          <%
+          workflows.key_value_field(_("Global config"), _("Global config"), {
+          'name': 'data.global_config',
+          'remove': '$root.removeGlobalConfig',
+          'add': '$root.addGlobalConfig',
+          })
+          %>
+        </div>
       
         <div id="slaEditord" class="control-group">
           <label class="control-label">
-              ${ _('SLA') }
+            ${ _('SLA') }
           </label>
           
-          ${ utils.slaForm() }  
+          ${ utils.slaForm() }
         </div>      
       
         % if user_can_edit_job:

+ 4 - 4
apps/oozie/src/oozie/templates/editor/workflow_utils.mako

@@ -19,10 +19,10 @@
 %>
 
 
-<%def name="key_value_field(field, javascript_attrs={})">
+<%def name="key_value_field(label, help_text, javascript_attrs={})">
   <div id="${ javascript_attrs['name'] }" class="control-group ko-${ javascript_attrs['name'] }" rel="popover"
-      data-original-title="${ field.label }" data-content="${ field.help_text }">
-    <label class="control-label">${ field.label }</label>
+      data-original-title="${ label }" data-content="${ help_text }">
+    <label class="control-label">${ label }</label>
 
     <div class="controls">
       <table class="table-condensed designTable" data-bind="visible: ${ javascript_attrs['name'] }().length > 0" style="text-align: left;">
@@ -45,4 +45,4 @@
       <button class="btn" data-bind="click: function(data, event) { ${ javascript_attrs['add'] }.call($root, data, event) }">${ _('Add') }</button>
     </div>
   </div>
-</%def>
+</%def>

+ 0 - 30
apps/oozie/src/oozie/templates/utils.inc.mako

@@ -278,36 +278,6 @@
 </%def>
 
 
-<%def name="globalPropertiesForm()">
-  <div data-bind="foreach: { 'data': globalProperties }">
-    <div class="controls">
-      <div class="span3">
-        <span></span>
-      </div>
-      <div class="span9">
-        <input type="text" data-bind="value: key" class="span6">
-        <input type="text" data-bind="value: value" class="span6">
-      </div>
-    </div>
-  </div>
-</%def>
-
-
-<%def name="globalConfigForm()">
-  <div data-bind="foreach: { 'data': globalConfig }">
-    <div class="controls">
-      <div class="span3">
-        <span></span>
-      </div>
-      <div class="span9">
-        <input type="text" data-bind="value: key" class="span6">
-        <input type="text" data-bind="value: value" class="span6">
-      </div>
-    </div>
-  </div>
-</%def>
-
-
 ## Would be nice include it in slaForm() somehow
 <%def name="slaGlobal()">
   function addSLATextAndPlaceholder(elements, $data) {

+ 32 - 14
apps/oozie/static/js/workflow.js

@@ -436,8 +436,8 @@ var WorkflowModule = function($, NodeModelChooser, Node, ForkNode, DecisionNode,
       return self.data.sla();
     });
     self.globalProperties = ko.computed(function() {
-        return self.data.globalProperties();
-      });     
+      return self.data.globalProperties();
+    });
     self.globalConfig = ko.computed(function() {
       return self.data.globalConfig();
     });
@@ -688,22 +688,40 @@ var WorkflowModule = function($, NodeModelChooser, Node, ForkNode, DecisionNode,
       self.job_properties.remove(data);
     },
 
-    addGlobalProperties: function(data, event) {
+    addGlobalProperty: function(data, event) {
       var self = this;
       var prop = { name: ko.observable(""), value: ko.observable("") };
       // force bubble up to containing observable array.
-//      prop.name.subscribe(function(){
-//        self.globalProperties.valueHasMutated();
-//      });
-//      prop.value.subscribe(function(){
-//        self.globalProperties.valueHasMutated();
-//      });
-      self.globalProperties.push(prop);
+      prop.name.subscribe(function(){
+        self.data.global_properties.valueHasMutated();
+      });
+      prop.value.subscribe(function(){
+        self.data.global_properties.valueHasMutated();
+      });
+      self.data.global_properties.push(prop);
+    },
+
+    removeGlobalProperty: function(data, event) {
+      var self = this;
+      self.data.global_properties.remove(data);
+    },
+
+    addGlobalConfig: function(data, event) {
+      var self = this;
+      var prop = { name: ko.observable(""), value: ko.observable("") };
+      // force bubble up to containing observable array.
+      prop.name.subscribe(function(){
+        self.data.global_config.valueHasMutated();
+      });
+      prop.value.subscribe(function(){
+        self.data.global_config.valueHasMutated();
+      });
+      self.data.global_config.push(prop);
+    },
+    removeGlobalConfig: function(data, event) {
+      var self = this;
+      self.data.global_config.remove(data);
     },
-	removeGlobalProperties: function(data, event) {
-	  var self = this;
-      self.globalProperties.remove(data);
-    },    
     
     // Workflow UI
     // Function to build nodes... recursively.

+ 13 - 1
apps/oozie/static/js/workflow.models.js

@@ -32,7 +32,11 @@ var DEFAULT_SLA = [
 ];
 
 function getDefaultData() {
- return {'sla': DEFAULT_SLA.slice(0)};
+ return {
+  'sla': DEFAULT_SLA.slice(0),
+  'global_properties': [],
+  'global_config': []
+  };
 }
 
 function normalize_model_fields(node_model) {
@@ -393,6 +397,14 @@ function initializeData() {
   if (!('sla' in self.data)) {
     self.data['sla'] = DEFAULT_SLA.slice(0);
   }
+
+  if (!('global_properties' in self.data)) {
+    self.data['global_properties'] = [];
+  }
+
+  if (!('global_config' in self.data)) {
+    self.data['global_config'] = [];
+  }
 }
 
 var WorkflowModel = ModelModule($);