ambari-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nc...@apache.org
Subject [02/51] [abbrv] ambari git commit: AMBARI-19031: UI Enhancements, import/export assets and smart version configuration (Padma Priya via nitirajrathore)
Date Fri, 16 Dec 2016 22:02:10 GMT
http://git-wip-us.apache.org/repos/asf/ambari/blob/fb567758/contrib/views/wfmanager/src/main/resources/ui/app/routes/job.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/routes/job.js b/contrib/views/wfmanager/src/main/resources/ui/app/routes/job.js
index d849609..d95a226 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/routes/job.js
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/routes/job.js
@@ -22,11 +22,11 @@ export default Ember.Route.extend({
   queryParams: {
       jobType: { refreshModel: true },
       id: { refreshModel: true },
-      from : {refreshModel: true},
-      fromType :{refreshModel : true}
+      fromBundleId: {refreshModel: true},
+      fromCoordId: {refreshModel: true}
   },
-  from : null,
-  fromType : null,
+  fromBundleId: null,
+  fromCoordId: null,
   getJobInfo (url){
     var deferred = Ember.RSVP.defer();
     Ember.$.get(url).done(function(res){
@@ -48,18 +48,25 @@ export default Ember.Route.extend({
     });
   },
   afterModel : function (model, transition){
-    if(transition.queryParams.from){
-      this.set('from', transition.queryParams.from);
-      this.set('fromType',transition.queryParams.fromType);
+    if(transition.queryParams.fromBundleId){
+      this.set('fromBundleId', transition.queryParams.fromBundleId);
     }else{
-      this.set('from', null);
-      this.set('fromType', null);
+      this.set('fromBundleId', null);
+    }
+    if(transition.queryParams.fromCoordId){
+      this.set('fromCoordId', transition.queryParams.fromCoordId);
+    }else{
+      this.set('fromCoordId', null);
     }
   },
   actions : {
     didTransition (){
-      this.controller.set('from', this.get('from'));
-      this.controller.set('fromType',this.get('fromType'));
+      if (this.get('fromBundleId')) {
+        this.controller.set('fromBundleId', this.get('fromBundleId'));
+      }
+      if (this.get('fromCoordId')) {
+        this.controller.set('fromCoordId',this.get('fromCoordId'));
+      }
     },
     onTabChange : function(tab){
       this.set('currentTab', tab);

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb567758/contrib/views/wfmanager/src/main/resources/ui/app/services/dashboard-context.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/services/dashboard-context.js b/contrib/views/wfmanager/src/main/resources/ui/app/services/dashboard-context.js
new file mode 100644
index 0000000..6c5d183
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/services/dashboard-context.js
@@ -0,0 +1,38 @@
+/*
+*    Licensed to the Apache Software Foundation (ASF) under one or more
+*    contributor license agreements.  See the NOTICE file distributed with
+*    this work for additional information regarding copyright ownership.
+*    The ASF licenses this file to You under the Apache License, Version 2.0
+*    (the "License"); you may not use this file except in compliance with
+*    the License.  You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+*    Unless required by applicable law or agreed to in writing, software
+*    distributed under the License is distributed on an "AS IS" BASIS,
+*    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*    See the License for the specific language governing permissions and
+*    limitations under the License.
+*/
+import Ember from 'ember';
+
+export default Ember.Service.extend({
+  currentBundleName: null,
+  currentCoordName: null,
+
+  getCurrentBundleName: function() {
+    return this.get('currentBundleName');
+  },
+
+  setCurrentBundleName: function(currentBundleName) {
+    this.set('currentBundleName', currentBundleName);
+  },
+
+  getCurrentCoordName: function() {
+    return this.get('currentCoordName');
+  },
+
+  setCurrentCoordName: function(currentCoordName) {
+    this.set('currentCoordName', currentCoordName);
+  }
+});

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb567758/contrib/views/wfmanager/src/main/resources/ui/app/services/save-job.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/services/save-job.js b/contrib/views/wfmanager/src/main/resources/ui/app/services/save-job.js
new file mode 100644
index 0000000..d2e5fe2
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/services/save-job.js
@@ -0,0 +1,42 @@
+/*
+*    Licensed to the Apache Software Foundation (ASF) under one or more
+*    contributor license agreements.  See the NOTICE file distributed with
+*    this work for additional information regarding copyright ownership.
+*    The ASF licenses this file to You under the Apache License, Version 2.0
+*    (the "License"); you may not use this file except in compliance with
+*    the License.  You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*
+*    Unless required by applicable law or agreed to in writing, software
+*    distributed under the License is distributed on an "AS IS" BASIS,
+*    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*    See the License for the specific language governing permissions and
+*    limitations under the License.
+*/
+
+import Ember from 'ember';
+
+export default Ember.Service.extend({
+	saveWorkflow(url, jobxml){
+		var deferred = Ember.RSVP.defer();
+	    Ember.$.ajax({
+	      url: url,
+	      method: "POST",
+	      dataType: "text",
+	      contentType: "text/plain;charset=utf-8",
+	      beforeSend: function(request) {
+	        request.setRequestHeader("X-XSRF-HEADER", Math.round(Math.random()*100000));
+	        request.setRequestHeader("X-Requested-By", "workflow-designer");
+	      },
+	      data: jobxml,
+	      success: function(response) {
+	      	deferred.resolve(response);
+	      }.bind(this),
+	      error: function(response) {
+	      	deferred.reject(response);
+	      }.bind(this)
+	    });
+        return deferred;
+	}
+});

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb567758/contrib/views/wfmanager/src/main/resources/ui/app/styles/app.less
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/styles/app.less b/contrib/views/wfmanager/src/main/resources/ui/app/styles/app.less
index 5d1b3a3..036f529 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/styles/app.less
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/styles/app.less
@@ -63,6 +63,9 @@ a {
 .marginright5{
   margin-right: 5px !important;
 }
+.padding15pcnt {
+  padding:15%;
+}
 #arrow{
     top: 24%;
     left: -22px;
@@ -417,10 +420,6 @@ input:invalid {
     white-space: nowrap;
 }
 
-.breadcrumb {
-    margin: 0;
-}
-
 .collapse.width {
     height: auto;
     -webkit-transition: width 0.35s ease;
@@ -698,7 +697,7 @@ input:invalid {
   display: none !important;
 }
 #search-bar .bootstrap-tagsinput {
-    width: 260px;
+    width: 300px;
     border-radius: 0px;
     line-height: 20px;
     vertical-align: top;
@@ -716,7 +715,7 @@ input:invalid {
     border: 1px solid rgba(0,0,0,0.2);
     margin-top: 7px;
     background-color: white;
-    width: 60% !important;
+    width: auto;
     padding: 0 5px;
 }
 #job-detail-app-path{
@@ -741,6 +740,7 @@ input:invalid {
   height: 24px;
   margin-left: 10px;
   line-height: 30px;
+  display: inline-block;
 }
 
 .info {
@@ -869,11 +869,11 @@ input:invalid {
 
 #loading {
     position: absolute;
-    top: 90px;
-    left: 0;
+    top: 20%;
+    left: 30%;
     display: none;
-    width: 100vw;
-    height: 80vh;
+    width: 50vw;
+    height: 40vh;
     overflow: hidden;
     z-index: 1;
 }
@@ -1188,9 +1188,7 @@ input:invalid {
 }
 .wf-path {
     font-size: 12px;
-    float: left;
     color: gray;
-    margin-top: 17px;
     max-width: 150px;
     text-overflow: ellipsis;
     white-space: nowrap;
@@ -1318,6 +1316,9 @@ input:invalid {
   border: 1px solid @defaultRed;
 }
 
+.cy-panzoom-panner{
+  display:none;
+}
 .decision-condition-label {
   border-bottom: 1px solid #D0D0D0;
   padding: 3px;
@@ -1495,3 +1496,50 @@ input:invalid {
   max-height: 400px;
   overflow: scroll;
 }
+.jobIdClass {
+  width: 50px;
+}
+.width50 {
+    white-space: nowrap;
+    width: 150px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+}
+
+.twitter-typeahead .tt-input {
+  width:250px;
+}
+
+.breadcrumb {
+  padding: 0px;
+  margin: 0px;
+}
+
+.breadcrumb-item {
+  color: #777;
+  font-size: 11px;
+}
+
+.breadcrumb-item a {
+  color: #777;
+}
+
+.action-file-picker {
+  display: inline-block;
+}
+.prettyprint .CodeMirror {
+  height:auto;
+}
+#id{
+  width: 500px;
+}
+#xmlCodeStream{
+  width: 580px;
+  border: 1px solid #dddd;
+}
+.create-wf-menu{
+  display: inline-block;
+}
+.inlineBlock{
+  display:inline-block;
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb567758/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-config.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-config.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-config.hbs
index 27168a4..698535f 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-config.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-config.hbs
@@ -29,34 +29,32 @@
           </div>
         </div>
         <div class="navbar-brand pull-right paddingtop8 col-xs-18">
+          <div class="dropdown inlineBlock">
+            <button class="btn btn-default dropdown-toggle borderRightRadiusNone" type="button" data-toggle="dropdown">Bundle
+            <span class="caret"></span></button>
+            <ul class="dropdown-menu">
+              <li>
+              <a  class="pointer" title="Import workflow" {{action "openFileBrowser" "bundleFilePath"}}>
+                <i class="fa fa-download"> Import</i>
+              </a>
+            </li>
+            <li>
+              <a class="pointer" href="#" data-toggle="modal" data-target="#previewModal"  title="Preview Xml" {{action "preview"}}>
+                  <i class="fa fa-eye marginright5"></i>Preview xml
+                </a>
+              </li>
+            </ul>
+          </div>
           <div class="btn-group" role="group" aria-label="...">
             <button type="button" class="btn btn-default"  data-toggle="modal" data-target="#ConfirmDialog" title="New Workflow" {{action "confirmReset"}}>
               <i class="fa fa-refresh"> Reset</i>
             </button>
-            <button  type="button" class="btn btn-default" title="Import workflow" {{action "openFileBrowser" "bundleFilePath"}}>
-              <i class="fa fa-download"> Import</i>
+            <button type="button" class="btn btn-default" title="Bundle Versions" {{action "showVersionSettings" true}}>
+              <i class="fa fa-cog marginright5"></i>Versions
             </button>
             <button  id="import-bundle-test" type="button" class="btn btn-default hide" title="Import Bundle Test" {{action "importBundleTest"}}>
               <i class="fa fa-download"></i>
             </button>
-            <div class="btn-group">
-              <div class="dropdown">
-                <button class="btn btn-default dropdown-toggle borderRadiusNone" type="button" data-toggle="dropdown"><i class="marginright5"></i>More
-                <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li>
-                    <a href="javascript:void(0)" data-toggle="modal" data-target="#previewModal"  title="Preview Xml" {{action "preview"}}>
-                      <i class="fa fa-eye marginright5"></i>Preview xml
-                    </a>
-                  </li>
-                  <!-- <li>
-                    <a href="javascript:void(0)" data-toggle="modal" title="Download workflow" {{action "downloadWorkflowXml"}}>
-                      <i class="fa fa-download marginright5"></i>Download xml
-                    </a>
-                  </li> -->
-                </ul>
-              </div>
-            </div>
             <button type="button" class="btn btn-primary" title="Submit Bundle" {{action "submitBundle"}}>
               <i class="fa fa-upload"> Submit</i>
             </button>
@@ -66,6 +64,7 @@
     </div>
   </nav>
   <div class="container-fluid">
+    {{designer-errors errors=errors}}
     <form class="form-horizontal">
       <div class="col-sm-12 paddingtop10">
         <div class="col-sm-8 centralize-panel">
@@ -127,3 +126,6 @@
 {{#if showingPreview}}
   {{#preview-dialog title="Bundle XML Preview" previewXml=previewXml}}{{/preview-dialog}}
 {{/if}}
+{{#if showVersionSettings}}
+  {{bundle-version-settings schemaVersions=bundle.schemaVersions showVersionSettings="showVersionSettings" }}
+{{/if}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb567758/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-coord-config.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-coord-config.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-coord-config.hbs
index 86a49b9..140ff0a 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-coord-config.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-coord-config.hbs
@@ -17,13 +17,6 @@
 }}
 <div class="well">
   <div class="form-group">
-    <label class="control-label col-xs-2">Coordinator Name<span class="requiredField">&nbsp;*</span></label>
-    <div class="col-xs-7">
-      {{input type="text" class="form-control" name="name" value=coordinator.name placeholder="Coordinator Name"}}
-      {{#field-error model=this field='coordinator.name' showErrorMessage=showErrorMessage}}{{/field-error}}
-    </div>
-  </div>
-  <div class="form-group">
     <label class="control-label col-xs-2">Coordinator Path<span class="requiredField">&nbsp;*</span></label>
     <div class="col-xs-7">
       <div class="input-group">
@@ -33,12 +26,16 @@
           <button class="btn btn-default" type="button" {{action "openTab" 'coord' coordinator.appPath}} name="button"><i class="fa fa-external-link"></i></button>
         </span>
       </div>
-      {{#if coordinatorName}}
-        <span title="Name of the coordinator">({{coordinatorName}})</span>
-      {{/if}}
       {{#field-error model=this field='coordinator.appPath' showErrorMessage=showErrorMessage}}{{/field-error}}
     </div>
   </div>
+  <div class="form-group">
+    <label class="control-label col-xs-2">Coordinator Name<span class="requiredField">&nbsp;*</span></label>
+    <div class="col-xs-7">
+      {{input type="text" class="form-control" name="name" value=coordinator.name placeholder="Coordinator Name"}}
+      {{#field-error model=this field='coordinator.name' showErrorMessage=showErrorMessage}}{{/field-error}}
+    </div>
+  </div>
   <div class="panel panel-default">
     <div class="panel-heading">Configuration</div>
     <div class="panel-body handlerPanel">

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb567758/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-job-details.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-job-details.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-job-details.hbs
index f6b491b..97eb859 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-job-details.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-job-details.hbs
@@ -58,7 +58,6 @@
       <thead>
         <tr>
           <th>Name</th>
-          <th>Type</th>
           <th>Status</th>
           <th>User</th>
           <th>Group</th>
@@ -66,13 +65,13 @@
           <th>Time Unit</th>
           <th>Start Time</th>
           <th>End Time</th>
+          <th>Job Id</th>
         </tr>
       </thead>
       <tbody>
         {{#each model.bundleCoordJobs as |coordJob|}}
         <tr {{action 'showCoord' coordJob.coordJobId}} class="{{if (eq actionInfo model.actionDetails) "active"}}">
-          <td class="pointer">{{coordJob.coordJobId}}</td>
-          <td>{{coordJob.coordJobName}}</td>
+          <td class="pointer">{{coordJob.coordJobName}}</td>
           <td>{{coordJob.status}}</td>
           <td>{{coordJob.user}}</td>
           <td>{{coordJob.group}}</td>
@@ -80,6 +79,7 @@
           <td>{{coordJob.timeUnit}}</td>
           <td>{{coordJob.startTime}}</td>
           <td>{{coordJob.endTime}}</td>
+          <td>{{coordJob.coordJobId}}</td>
         </tr>
         {{/each}}
       </tbody>
@@ -88,7 +88,9 @@
   <div role="tabpanel" class="tab-pane" id="jobDefinition">
     <div class="panel panel-default">
       <div class="panel-body preview">
-        <pre class="prettyprint">{{model.jobDefinition}}</pre>
+        <pre class="prettyprint">
+          {{ivy-codemirror value=jobDefinition options=(hash lineNumbers=false mode="xml" indentWithTabs=true readOnly=true)}}
+        </pre>
       </div>
     </div>
   </div>
@@ -103,7 +105,7 @@
             </tr>
           </thead>
           <tbody>
-            {{#each model.configurationProperties as |configurationProperty|}}
+            {{#each configurationProperties as |configurationProperty|}}
               <tr>
                 <td class="propertyName">{{configurationProperty.name}}</td>
                 <td class="propertyValue">{{configurationProperty.value}}</td>

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb567758/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-version-settings.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-version-settings.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-version-settings.hbs
new file mode 100644
index 0000000..6d6f675
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/bundle-version-settings.hbs
@@ -0,0 +1,45 @@
+{{!
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+}}
+<div id="version-settings-dialog" class="modal fade" role="dialog">
+  <div class="modal-dialog">
+    <div class="modal-content">
+      <div class="modal-header">
+        <button type="button" class="close" {{action "cancel"}}>&times;</button>
+        <h4 class="modal-title">Version Configuration</h4>
+      </div>
+      <div class="modal-body">
+        <div class="row">
+          <div class="form-group">
+            <label class="control-label col-xs-3"> Bundle Version</label>
+            <div class="col-xs-7">
+              <select onchange={{action (mut currentBundleVersion) value="target.value"}} name="select-version" class="form-control">
+                {{#each bundleSchemaVersions as |version index|}}
+                  <option value={{version}} selected={{eq currentBundleVersion version}}>{{version}}</option>
+                {{/each}}
+              </select>
+            </div>
+          </div>
+        </div>
+      </div>
+      <div class="modal-footer">
+        <button type="button" class="btn btn-default" {{action "cancel"}}>Cancel</button>
+        <button type="button" class="btn btn-primary" {{action "save"}} data-dismiss="modal">Save</button>
+      </div>
+    </div>
+  </div>
+</div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb567758/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-config.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-config.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-config.hbs
index a6edcec..f26c2ec 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-config.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-config.hbs
@@ -24,19 +24,31 @@
             <label for="wf_title">Name </label>
             {{input class="form-control" type="text" name="coord_title" value=coordinator.name title="Coordinator Name" placeholder="Coordinator Name"}}
             {{#if (v-get this 'coordinator.name' 'isInvalid')}}
-              <span class="text-danger" title="Name is required"><i class="fa fa-close"></i>Name is required</span>
+            <span class="text-danger" title="Name is required"><i class="fa fa-close"></i>Name is required</span>
             {{/if}}
           </div>
         </div>
         <div class="navbar-brand pull-right paddingtop8 col-xs-18">
+          <div class="dropdown inlineBlock">
+            <button class="btn btn-default dropdown-toggle borderRightRadiusNone" type="button" data-toggle="dropdown">Coordinator
+            <span class="caret"></span></button>
+            <ul class="dropdown-menu">
+              <li>
+                <a  class="pointer" title="Import workflow" {{action "openFileBrowser" "coordinatorFilePath"}}>
+                  <i class="fa fa-download"> Import</i>
+                </a>
+             </li>
+              <li>
+                <a class="pointer" href="#" data-toggle="modal" data-target="#previewModal"  title="Preview Xml" {{action "preview"}}>
+                  <i class="fa fa-eye marginright5"></i>Preview xml
+                </a>
+              </li>
+            </ul>
+          </div>
           <div class="btn-group" role="group" aria-label="...">
             <button type="button" class="btn btn-default"  data-toggle="modal" data-target="#ConfirmDialog" title="New Workflow" {{action "confirmReset"}}>
               <i class="fa fa-refresh"> Reset</i>
             </button>
-            <button  type="button" class="btn btn-default" title="Import workflow" {{action "openFileBrowser" "coordinatorFilePath"}}>
-              <i class="fa fa-download"> Import</i>
-            </button>
-
             <button  id="import-test" type="button" class="btn btn-default hide" title="Import coordinator Test" {{action "importCoordinatorTest"}}>
               <i class="fa fa-download"></i>
             </button>
@@ -44,100 +56,88 @@
               <i class="fa fa-cog marginright5"></i>Parameters
             </button>
             <button type="button" class="btn btn-default"  data-toggle="modal" data-target="#control-dialog" title="Coordinator Controls" {{action "showControlConfig"}}>
-                 <i class="fa fa-wrench marginright5"></i>Controls
+              <i class="fa fa-wrench marginright5"></i>Controls
+            </button>
+            <button type="button" class="btn btn-default" title="Coordinator Versions" {{action "showVersionSettings" true}}>
+              <i class="fa fa-cog marginright5"></i>Versions
             </button>
-            <div class="btn-group">
-              <div class="dropdown">
-                <button class="btn btn-default dropdown-toggle borderRadiusNone" type="button" data-toggle="dropdown"><i class="marginright5"></i>More
-                <span class="caret"></span></button>
-                <ul class="dropdown-menu">
-                  <li>
-                    <a href="javascript:void(0)" data-toggle="modal" data-target="#previewModal"  title="Preview Xml" {{action "preview"}}>
-                      <i class="fa fa-eye marginright5"></i>Preview xml
-                    </a>
-                  </li>
-                  <!-- <li>
-                    <a href="javascript:void(0)" data-toggle="modal" title="Download workflow" {{action "downloadWorkflowXml"}}>
-                      <i class="fa fa-download marginright5"></i>Download xml
-                    </a>
-                  </li> -->
-                </ul>
-              </div>
-            </div>
             <button type="button" class="btn btn-primary" title="Submit Coordinator" {{action "submitCoordinator"}}>
               <i class="fa fa-upload marginright5"></i>Submit
             </button>
-          </div>
         </div>
       </div>
     </div>
-  </nav>
-  <div class="container-fluid">
-    <form class="form-horizontal">
-      <div class="col-sm-12 paddingtop10">
-        <div class="col-sm-8 centralize-panel">
-          <div class="panel panel-default">
-            <div class="panel-body">
-              <div class="form-group">
-                <label class="control-label col-xs-2">Workflow Path<span class="requiredField">&nbsp;*</span></label>
-                <div class="col-xs-7">
-                  <div class="input-group">
-                    {{input type="text" class="form-control" name="appPath" focus-out="showWorkflowName" value=coordinator.workflow.appPath placeholder="Path of the workflow file"}}
-                    <span class="input-group-btn">
-                      <button class="btn btn-primary" type="button" {{action "openFileBrowser" "coordinator.workflow.appPath"}}>Browse</button>
-                      <button class="btn btn-default" type="button" {{action "openTab" 'wf' coordinator.workflow.appPath}} name="button"><i class="fa fa-external-link"></i></button>
-                    </span>
-                  </div>
-                  {{#if workflowName}}
-                    <span title="Name of the workflow">({{workflowName}})</span>
-                  {{/if}}
-                  {{#field-error model=this field='coordinator.workflow.appPath' showErrorMessage=showErrorMessage}}{{/field-error}}
+  </div>
+</nav>
+<div class="container-fluid">
+  {{designer-errors errors=errors}}
+  <form class="form-horizontal">
+    <div class="col-sm-12 paddingtop10">
+      <div class="col-sm-8 centralize-panel">
+        <div class="panel panel-default">
+          <div class="panel-body">
+            <div class="form-group">
+              <label class="control-label col-xs-2">Workflow Path<span class="requiredField">&nbsp;*</span></label>
+              <div class="col-xs-7">
+                <div class="input-group">
+                  {{input type="text" class="form-control" name="appPath" focus-out="showWorkflowName" value=coordinator.workflow.appPath placeholder="Path of the workflow file"}}
+                  <span class="input-group-btn">
+                    <button class="btn btn-primary" type="button" {{action "openFileBrowser" "coordinator.workflow.appPath"}}>Browse</button>
+                    <button class="btn btn-default" type="button" {{action "openTab" 'wf' coordinator.workflow.appPath}} name="button"><i class="fa fa-external-link"></i></button>
+                  </span>
                 </div>
+                {{#if workflowName}}
+                <span title="Name of the workflow">({{workflowName}})</span>
+                {{/if}}
+                {{#field-error model=this field='coordinator.workflow.appPath' showErrorMessage=showErrorMessage}}{{/field-error}}
               </div>
-              <div class="form-group">
-                <label class="control-label col-xs-2">Frequency<span class="requiredField">&nbsp;*</span></label>
-                <div class="col-xs-2">
-                  <select class="form-control" name="frequency-type" title="Frequency type" onchange={{action (mut coordinator.frequency.type) value="target.value"}}>
-                    {{#each timeUnitOptions as |timeUnit|}}
-                    <option value={{timeUnit.value}} selected={{eq timeUnit.value coordinator.frequency.type}}>{{timeUnit.displayName}}</option>
-                    {{/each}}
-                  </select>
-                  {{#field-error model=this field='coordinator.frequency.type' showErrorMessage=showErrorMessage}}{{/field-error}}
-                </div>
-                <div class="col-xs-3">
-                  {{input class="form-control" type="text" value=coordinator.frequency.value placeholder="frequency" title="Periodic intervals at which datasets that are produced, and coordinator applications are scheduled to run"}}
-                  {{field-error model=this field='coordinator.frequency.value' showErrorMessage=showErrorMessage}}
-                </div>
+            </div>
+            <div class="form-group">
+              <label class="control-label col-xs-2">Frequency<span class="requiredField">&nbsp;*</span></label>
+              <div class="col-xs-2">
+                <select class="form-control" name="frequency-type" title="Frequency type" onchange={{action (mut coordinator.frequency.type) value="target.value"}}>
+                  {{#each timeUnitOptions as |timeUnit|}}
+                  <option value={{timeUnit.value}} selected={{eq timeUnit.value coordinator.frequency.type}}>{{timeUnit.displayName}}</option>
+                  {{/each}}
+                </select>
+                {{#field-error model=this field='coordinator.frequency.type' showErrorMessage=showErrorMessage}}{{/field-error}}
               </div>
-              {{#date-with-expr required=true inputName="start" label="Start" inputPlaceholder="Start Time" dateField=coordinator.start timezone=coordinator.timezone register="registerChild" deregister="deregisterChild"}}{{/date-with-expr}}
-              {{#date-with-expr required=true inputName="end" label="End" inputPlaceholder="End Time" dateField=coordinator.end timezone=coordinator.timezone register="registerChild" deregister="deregisterChild"}}{{/date-with-expr}}
-              <div class="form-group">
-                <label for="" class="control-label col-xs-2">Time Zone<span class="requiredField">&nbsp;*</span></label>
-                <div class="col-xs-7">
-                  <select onchange={{action (mut coordinator.timezone) value="target.value"}} name="select-input" class="form-control" data-show-icon="true">
-                    {{#each timezoneList as |timezone index|}}
-                    <option value={{timezone.value}} selected={{eq timezone.value coordinator.timezone}}>{{timezone.displayName}}</option>
-                    {{/each}}
-                  </select>
-                  {{field-error  model=this field='coordinator.timezone' showErrorMessage=showErrorMessage}}
-                </div>
+              <div class="col-xs-3">
+                {{input class="form-control" type="text" value=coordinator.frequency.value placeholder="frequency" title="Periodic intervals at which datasets that are produced, and coordinator applications are scheduled to run"}}
+                {{field-error model=this field='coordinator.frequency.value' showErrorMessage=showErrorMessage}}
               </div>
-              <div class="panel panel-default">
-                <div class="panel-heading clearfix">
-                  <h4 class="panel-title pull-left paddingtop7">Configuration</h4>
-                </div>
-                <div class="panel-body handlerPanel">
-                  {{#name-value-config configuration=coordinator.workflow.configuration}}{{/name-value-config}}
-                </div>
+            </div>
+            {{#date-with-expr required=true inputName="start" label="Start" inputPlaceholder="Start Time" dateField=coordinator.start timezone=coordinator.timezone register="registerChild" deregister="deregisterChild"}}{{/date-with-expr}}
+            {{#date-with-expr required=true inputName="end" label="End" inputPlaceholder="End Time" dateField=coordinator.end timezone=coordinator.timezone register="registerChild" deregister="deregisterChild"}}{{/date-with-expr}}
+            <div class="form-group">
+              <label for="" class="control-label col-xs-2">Time Zone<span class="requiredField">&nbsp;*</span></label>
+              <div class="col-xs-7">
+                <select onchange={{action (mut coordinator.timezone) value="target.value"}} name="select-input" class="form-control" data-show-icon="true">
+                  {{#each timezoneList as |timezone index|}}
+                  <option value={{timezone.value}} selected={{eq timezone.value coordinator.timezone}}>{{timezone.displayName}}</option>
+                  {{/each}}
+                </select>
+                {{field-error  model=this field='coordinator.timezone' showErrorMessage=showErrorMessage}}
               </div>
-              {{#sla-info slaInfo=coordinator.slaInfo register="registerChild" slaEnabled=coordinator.slaEnabled}}{{/sla-info}}
             </div>
-          </div>
-          <div class="panel panel-default">
-            <div class="panel-heading clearfix">
-              <h4 class="panel-title pull-left paddingtop7">Data</h4>
+            <div class="panel panel-default">
+              <div class="panel-heading clearfix">
+                <h4 class="panel-title pull-left paddingtop7">Configuration</h4>
+              </div>
+              <div class="panel-body handlerPanel">
+                {{#name-value-config configuration=coordinator.workflow.configuration}}{{/name-value-config}}
+              </div>
             </div>
-            <div class="panel-body handlerPanel">
+
+          </div>
+        </div>
+        <div class="panel panel-default">
+          <div class="panel-heading clearfix" data-toggle="collapse" data-target="#collapse">
+            <h4 class="panel-title pull-left paddingtop7">Input / Output Configuration</h4>
+            <i class="indicator glyphicon glyphicon-chevron-down pull-right paddingtop7"></i>
+          </div>
+          <div id="collapse" class="panel-collapse collapse">
+            <div class="panel-body">
               <div class="panel panel-default">
                 <div class="panel-heading clearfix">
                   <h4 class="panel-title pull-left paddingtop7">Datasets</h4>
@@ -162,18 +162,16 @@
                     {{/each}}
                   </ul>
                   {{#if datasetCreateMode}}
-                    {{#dataset-config dataset=currentDataset add="addDataset" cancel="cancelDatasetOperation" createMode=datasetCreateMode}}{{/dataset-config}}
+                  {{#dataset-config dataset=currentDataset add="addDataset" cancel="cancelDatasetOperation" createMode=datasetCreateMode}}{{/dataset-config}}
                   {{/if}}
                   {{#if datasetEditMode}}
-                    {{#dataset-config dataset=currentDataset update="updateDataset" cancel="cancelDatasetOperation" editMode=datasetEditMode}}{{/dataset-config}}
+                  {{#dataset-config dataset=currentDataset update="updateDataset" cancel="cancelDatasetOperation" editMode=datasetEditMode}}{{/dataset-config}}
                   {{/if}}
                 </div>
               </div>
               <div class="panel panel-default">
                 <div class="panel-heading clearfix">
-                  <h4 class="panel-title pull-left paddingtop7">Inputs</h4>
-                </div>
-                <div class="panel-body handlerPanel">
+                  <h4 class="panel-title pull-left paddingtop7">Input Data Events</h4>
                   {{#if coordinator.supportsConditionalDataInput}}
                   <div class="">
                     <label for="" class="control-label col-xs-2">Data Input Type</label>
@@ -187,65 +185,62 @@
                     </div>
                   </div>
                   {{/if}}
+                  {{#if (eq coordinator.dataInputType 'simple')}}
+                  <button id="dataset-create-btn" {{action 'createDataInput'}} type="button" class="btn btn-default pull-right">
+                    <i class="fa fa-plus-circle"></i> Add Data Input
+                  </button>
+                  {{else}}
+                  {{#if (not conditionalDataInExists)}}
+                  <button id="condition-create-btn" {{action 'createCondition'}} type="button" class="btn btn-default pull-right">
+                    <i class="fa fa-plus-circle"></i> Add Condition
+                  </button>
+                  {{/if}}
+                  {{/if}}
+                </div>
+                <div class="panel-body">
+                  {{#if (eq coordinator.dataInputType 'simple')}}
+                  <ul class="list-group">
+                    {{#each coordinator.dataInputs as |data index|}}
+                    <li class="list-group-item">
+                      {{data.name}}
+                      <span class="pull-right">
+                        <i class="fa fa-trash-o" title="Delete" {{action "deleteDataInput" index bubbles=false}}></i>
+                      </span>
+                      <span class="pull-right paddingright10">
+                        <i class="fa fa-pencil" title="Edit" {{action "editDataInput" index bubbles=false}}></i>
+                      </span>
+                    </li>
+                    {{else}}
+                    <li class="list-group-item">No Data inputs Configured</li>
+                    {{/each}}
+                  </ul>
+                  {{#if dataInputCreateMode}}
+                  {{#data-input-output-config datasets=datasetsForInputs data=currentDataInput type="input" add="addDataInput" cancel="cancelDataInputOperation" createMode=dataInputCreateMode}}{{/data-input-output-config}}
+                  {{/if}}
+                  {{#if dataInputEditMode}}
+                  {{#data-input-output-config datasets=datasetsForInputs data=currentDataInput type="input" update="updateDataInput" cancel="cancelDataInputOperation" editMode=dataInputEditMode}}{{/data-input-output-config}}
+                  {{/if}}
+                  {{/if}}
+                  {{#if (eq coordinator.dataInputType 'logical')}}
+                  <ul class="list-groups">
+                    {{#if conditionalDataInExists}}
+                    <li class="list-group-item">
+                      {{#conditional-data-input condition=coordinator.conditionalDataInput datasets=datasetsForInputs isToplevel=true register="registerChild" deregister="deregisterChild"}}
+                      <span class="pull-right">
+                        <i class="fa fa-trash-o" title="Delete" {{action "deleteCondition" index bubbles=false}}></i>
+                      </span>
+                      {{/conditional-data-input}}
+                    </li>
+                    {{else}}
+                    <li class="list-group-item">No Conditional Data Inputs Configured</li>
+                    {{/if}}
+                  </ul>
+                  {{/if}}
+                  {{input type="checkbox" checked=inputLogicEnabled}} Advanced
+                  {{#if inputLogicEnabled}}
                   <div class="panel panel-default">
                     <div class="panel-heading clearfix">
-                      <h4 class="panel-title pull-left paddingtop7">Datasets</h4>
-                      {{#if (eq coordinator.dataInputType 'simple')}}
-                        <button id="dataset-create-btn" {{action 'createDataInput'}} type="button" class="btn btn-default pull-right">
-                          <i class="fa fa-plus-circle"></i> Add Data Input
-                        </button>
-                      {{else}}
-                        {{#if (not conditionalDataInExists)}}
-                        <button id="condition-create-btn" {{action 'createCondition'}} type="button" class="btn btn-default pull-right">
-                          <i class="fa fa-plus-circle"></i> Add Condition
-                        </button>
-                        {{/if}}
-                      {{/if}}
-                    </div>
-                    <div class="panel-body">
-                      {{#if (eq coordinator.dataInputType 'simple')}}
-                        <ul class="list-group">
-                          {{#each coordinator.dataInputs as |data index|}}
-                          <li class="list-group-item">
-                            {{data.name}}
-                            <span class="pull-right">
-                              <i class="fa fa-trash-o" title="Delete" {{action "deleteDataInput" index bubbles=false}}></i>
-                            </span>
-                            <span class="pull-right paddingright10">
-                              <i class="fa fa-pencil" title="Edit" {{action "editDataInput" index bubbles=false}}></i>
-                            </span>
-                          </li>
-                          {{else}}
-                          <li class="list-group-item">No Data inputs Configured</li>
-                          {{/each}}
-                        </ul>
-                        {{#if dataInputCreateMode}}
-                          {{#data-input-output-config datasets=datasetsForInputs data=currentDataInput type="input" add="addDataInput" cancel="cancelDataInputOperation" createMode=dataInputCreateMode}}{{/data-input-output-config}}
-                        {{/if}}
-                        {{#if dataInputEditMode}}
-                          {{#data-input-output-config datasets=datasetsForInputs data=currentDataInput type="input" update="updateDataInput" cancel="cancelDataInputOperation" editMode=dataInputEditMode}}{{/data-input-output-config}}
-                        {{/if}}
-                      {{/if}}
-                      {{#if (eq coordinator.dataInputType 'logical')}}
-                      <ul class="list-groups">
-                        {{#if conditionalDataInExists}}
-                        <li class="list-group-item">
-                          {{#conditional-data-input condition=coordinator.conditionalDataInput datasets=datasetsForInputs isToplevel=true register="registerChild" deregister="deregisterChild"}}
-                          <span class="pull-right">
-                            <i class="fa fa-trash-o" title="Delete" {{action "deleteCondition" index bubbles=false}}></i>
-                          </span>
-                          {{/conditional-data-input}}
-                        </li>
-                        {{else}}
-                        <li class="list-group-item">No Conditional Data Inputs Configured</li>
-                        {{/if}}
-                      </ul>
-                      {{/if}}
-                    </div>
-                  </div>
-                  <div class="panel panel-default">
-                    <div class="panel-heading clearfix">
-                      <h4 class="panel-title pull-left paddingtop7">Conditional Inputs</h4>
+                      <h4 class="panel-title pull-left paddingtop7">Input Logic</h4>
                       {{#if (not inputLogicExists)}}
                       <button id="condition-create-btn" {{action 'createInputLogic'}} type="button" class="btn btn-default pull-right">
                         <i class="fa fa-plus-circle"></i> Add Condition
@@ -263,16 +258,17 @@
                           {{/conditional-data-input}}
                         </li>
                         {{else}}
-                        <li class="list-group-item">No Conditional Data Inputs Configured</li>
+                        <li class="list-group-item">No Input Logic Configured</li>
                         {{/if}}
                       </ul>
                     </div>
                   </div>
+                  {{/if}}
                 </div>
               </div>
               <div class="panel panel-default">
                 <div class="panel-heading clearfix">
-                  <h4 class="panel-title pull-left paddingtop7">Outputs</h4>
+                  <h4 class="panel-title pull-left paddingtop7">Output Data Events</h4>
                   <button id="dataset-create-btn" {{action 'createDataOutput'}} type="button" class="btn btn-default pull-right">
                     <i class="fa fa-plus-circle"></i> Add Data Output
                   </button>
@@ -294,59 +290,66 @@
                     {{/each}}
                   </ul>
                   {{#if dataOutputCreateMode}}
-                    {{#data-input-output-config datasets=datasetsForOutputs data=currentDataOutput type="output" add="addDataOutput" cancel="cancelDataOutputOperation" createMode=dataOutputCreateMode}}{{/data-input-output-config}}
+                  {{#data-input-output-config datasets=datasetsForOutputs data=currentDataOutput type="output" add="addDataOutput" cancel="cancelDataOutputOperation" createMode=dataOutputCreateMode}}{{/data-input-output-config}}
                   {{/if}}
                   {{#if dataOutputEditMode}}
-                    {{#data-input-output-config datasets=datasetsForOutputs data=currentDataOutput type="output" update="updateDataOutput" cancel="cancelDataOutputOperation" editMode=dataOutputEditMode}}{{/data-input-output-config}}
+                  {{#data-input-output-config datasets=datasetsForOutputs data=currentDataOutput type="output" update="updateDataOutput" cancel="cancelDataOutputOperation" editMode=dataOutputEditMode}}{{/data-input-output-config}}
                   {{/if}}
                 </div>
               </div>
+
             </div>
+
           </div>
         </div>
+        {{#sla-info slaInfo=coordinator.slaInfo register="registerChild" slaEnabled=coordinator.slaEnabled}}{{/sla-info}}
       </div>
-    </form>
-  </div>
+    </div>
+  </form>
+</div>
 </div>
 {{#if showingFileBrowser}}
-  {{hdfs-browser closeFileBrowser="closeFileBrowser" selectFileCallback=selectFileCallback filePath=filePath}}
+{{hdfs-browser closeFileBrowser="closeFileBrowser" selectFileCallback=selectFileCallback filePath=filePath}}
 {{/if}}
 {{#if showingJobConfig}}
-  {{job-config type='coord' closeJobConfigs="closeCoordSubmitConfig" jobFilePath=coordinatorFilePath openFileBrowser="openFileBrowser" closeFileBrowser="closeFileBrowser" jobConfigs=coordinatorConfigs}}
+{{job-config type='coord' closeJobConfigs="closeCoordSubmitConfig" jobFilePath=coordinatorFilePath openFileBrowser="openFileBrowser" closeFileBrowser="closeFileBrowser" jobConfigs=coordinatorConfigs}}
 {{/if}}
 {{#if showingResetConfirmation}}
-  {{#confirmation-dialog title="Confirm Coordinator Reset"
-    confirmationMessage="Any unsaved changes may be lost. Do you want to proceed resetting the coordinator ?"
-    okBtnText="Continue" cancelBtnText="Cancel" onOk="resetCoordinator"}}{{/confirmation-dialog}}
+{{#confirmation-dialog title="Confirm Coordinator Reset"
+confirmationMessage="Any unsaved changes may be lost. Do you want to proceed resetting the coordinator ?"
+okBtnText="Continue" cancelBtnText="Cancel" onOk="resetCoordinator"}}{{/confirmation-dialog}}
 {{/if}}
 {{#if showingPreview}}
-  {{#preview-dialog title="Coordinator XML Preview" previewXml=previewXml}}{{/preview-dialog}}
+{{#preview-dialog title="Coordinator XML Preview" previewXml=previewXml}}{{/preview-dialog}}
 {{/if}}
 {{#if showParameterSettings}}
-  {{#workflow-parameters type='coord' closeWorkFlowParam="closeWorkFlowParam" saveWorkFlowParam="saveWorkFlowParam" parameters=parameters}}{{/workflow-parameters}}
+{{#workflow-parameters type='coord' closeWorkFlowParam="closeWorkFlowParam" saveWorkFlowParam="saveWorkFlowParam" parameters=parameters}}{{/workflow-parameters}}
+{{/if}}
+{{#if showVersionSettings}}
+  {{coord-version-settings schemaVersions=coordinator.schemaVersions showVersionSettings="showVersionSettings" }}
 {{/if}}
 {{#if showControlConfig}}
-  <div id="control-dialog" class="modal fade" role="dialog">
-    <div class="modal-dialog">
-      <div class="modal-content">
-        <div class="modal-header">
-          <button type="button" class="close" data-dismiss="modal">&times;</button>
-          <h4 class="modal-title">Controls</h4>
-        </div>
-        <div class="modal-body">
-          <div class="panel panel-default">
-            <div class="panel-body handlerPanel form-horizontal">
-              {{#each coordinatorControls as |property|}}
-                {{#named-properties property=property labelWidthClass="col-xs-4" inputWidthClass="col-xs-8"}}{{/named-properties}}
-              {{/each}}
-            </div>
+<div id="control-dialog" class="modal fade" role="dialog">
+  <div class="modal-dialog">
+    <div class="modal-content">
+      <div class="modal-header">
+        <button type="button" class="close" data-dismiss="modal">&times;</button>
+        <h4 class="modal-title">Controls</h4>
+      </div>
+      <div class="modal-body">
+        <div class="panel panel-default">
+          <div class="panel-body handlerPanel form-horizontal">
+            {{#each coordinatorControls as |property|}}
+            {{#named-properties property=property labelWidthClass="col-xs-4" inputWidthClass="col-xs-8"}}{{/named-properties}}
+            {{/each}}
           </div>
         </div>
-        <div class="modal-footer">
-          <button type="button" class="btn btn-primary" data-dismiss="modal" {{action "saveCoordControls"}}>Save</button>
-          <button type="button" class="btn btn-default" data-dismiss="modal" onclick={{action (mut showControlConfig) false}}>Cancel</button>
-        </div>
+      </div>
+      <div class="modal-footer">
+        <button type="button" class="btn btn-primary" data-dismiss="modal" {{action "saveCoordControls"}}>Save</button>
+        <button type="button" class="btn btn-default" data-dismiss="modal" onclick={{action (mut showControlConfig) false}}>Cancel</button>
       </div>
     </div>
   </div>
+</div>
 {{/if}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb567758/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-job-details.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-job-details.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-job-details.hbs
index 350f873..1418121 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-job-details.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-job-details.hbs
@@ -112,7 +112,9 @@
   <div role="tabpanel" class="tab-pane" id="jobDefinition">
     <div class="panel panel-default">
       <div class="panel-body preview">
-        <pre class="prettyprint">{{model.jobDefinition}}</pre>
+        <pre class="prettyprint">
+          {{ivy-codemirror value=jobDefinition options=(hash lineNumbers=false mode="xml" indentWithTabs=true readOnly=true)}}
+        </pre>
       </div>
     </div>
   </div>
@@ -127,7 +129,7 @@
             </tr>
           </thead>
           <tbody>
-            {{#each model.configurationProperties as |configurationProperty|}}
+            {{#each configurationProperties as |configurationProperty|}}
               <tr>
                 <td class="propertyName">{{configurationProperty.name}}</td>
                 <td class="propertyValue">{{configurationProperty.value}}</td>

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb567758/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-version-settings.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-version-settings.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-version-settings.hbs
new file mode 100644
index 0000000..be862ac
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/coord-version-settings.hbs
@@ -0,0 +1,45 @@
+{{!
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+}}
+<div id="version-settings-dialog" class="modal fade" role="dialog">
+  <div class="modal-dialog">
+    <div class="modal-content">
+      <div class="modal-header">
+        <button type="button" class="close" {{action "cancel"}}>&times;</button>
+        <h4 class="modal-title">Version Configuration</h4>
+      </div>
+      <div class="modal-body">
+        <div class="row">
+          <div class="form-group">
+            <label class="control-label col-xs-3"> Coordinator Version</label>
+            <div class="col-xs-7">
+              <select onchange={{action (mut currentCoordinatorVersion) value="target.value"}} name="select-version" class="form-control">
+                {{#each coordinatorSchemaVersions as |version index|}}
+                  <option value={{version}} selected={{eq currentCoordinatorVersion version}}>{{version}}</option>
+                {{/each}}
+              </select>
+            </div>
+          </div>
+        </div>
+      </div>
+      <div class="modal-footer">
+        <button type="button" class="btn btn-default" {{action "cancel"}}>Cancel</button>
+        <button type="button" class="btn btn-primary" {{action "save"}} data-dismiss="modal">Save</button>
+      </div>
+    </div>
+  </div>
+</div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb567758/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/designer-workspace.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/designer-workspace.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/designer-workspace.hbs
index b775302..20e5b35 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/designer-workspace.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/designer-workspace.hbs
@@ -26,81 +26,98 @@
         </div>
         <div class="col-sm-8">
           <div class="text-right pull-right paddingtop7">
-            <div class="btn-group btn-group" role="group" aria-label="buttons">
-              <button id="wfs_btn" {{action 'show' 'wf'}} type="button" class="btn btn-default">
-                <i class="fa fa-sitemap marginright5"></i>
-                {{#if hasMultitabSupport}}
-                New Workflow
-                {{else}}
-                Workflow
-                {{/if}}
-              </button>
-              <button id="coords_btn" {{action 'show' 'coord'}} type="button" class="btn btn-default">
-                <i class="fa fa-history marginright5"></i>
-                {{#if hasMultitabSupport}}
-                New Coordinator
-                {{else}}
-                Coordinator
-                {{/if}}
-              </button>
-              <button id="bundles_btn" {{action 'show' 'bundle'}} type="button" class="btn btn-default">
-                <i class="fa fa-cubes marginright5"></i>
-                {{#if hasMultitabSupport}}
-                New Bundle
-                {{else}}
-                Bundle
-                {{/if}}
-              </button>
-              {{#link-to 'dashboard' class="backto-dashboard btn btn-default" title="Workflow Dashboard"}}
+            <div class="dropdown create-wf-menu">
+              <button class="btn btn-default dropdown-toggle borderRightRadiusNone" type="button" data-toggle="dropdown">Create
+                <span class="caret"></span></button>
+                <ul class="dropdown-menu">
+                  <li>
+                    <a id="wfs_btn" class="pointer" {{action 'show' 'wf'}}>
+                      <i class="fa fa-sitemap marginright5"></i>
+                      {{#if hasMultitabSupport}}
+                      Workflow
+                      {{else}}
+                      Workflow
+                      {{/if}}
+                    </a>
+                  </li>
+                  <li>
+                    <a id="coords_btn" class="pointer" {{action 'show' 'coord'}}>
+                      <i class="fa fa-history marginright5"></i>
+                      {{#if hasMultitabSupport}}
+                      Coordinator
+                      {{else}}
+                      Coordinator
+                      {{/if}}
+                    </a>
+                  </li>
+                  <li>
+                    <a id="bundles_btn" class="pointer" {{action 'show' 'bundle'}}>
+                      <i class="fa fa-cubes marginright5"></i>
+                      {{#if hasMultitabSupport}}
+                      Bundle
+                      {{else}}
+                      Bundle
+                      {{/if}}
+                    </a>
+                  </li>
+                </ul>
+              </div>
+              <button {{action 'showDashboard'}} class="backto-dashboard btn btn-default" title="Workflow Dashboard">
                 <i class="fa fa-th marginright5"></i>Dashboard
-              {{/link-to}}
+              </button>
+              {{help-icon}}
             </div>
-            {{help-icon}}
           </div>
         </div>
       </div>
-    </div>
-  </nav>
-  <ul class="nav nav-tabs tab-panel-heading">
-    {{#each tabs as |tab index|}}
-      <li class="{{if (eq index currentIndex) 'active'}}" title="{{tab.filePath}}">
-        <a href="#{{tab.id}}" data-toggle="tab" {{action 'interceptShow' tab}}>
+    </nav>
+    <ul class="nav nav-tabs tab-panel-heading">
+      {{#each tabs as |tab index|}}
+      <li class="{{if (eq index currentIndex) 'active'}}" title="{{tab.filePath}}" data-type="{{tab.type}}">
+        <a href="#{{tab.id}}" data-toggle="tab" {{action 'interceptShow' tab preventDefault=true}}>
           {{#if (eq tab.type 'wf')}}
-            <i class="fa fa-sitemap marginright5"></i>
+          <i class="fa fa-sitemap marginright5"></i>
           {{else if (eq tab.type 'coord')}}
-            <i class="fa fa-history marginright5"></i>
+          <i class="fa fa-history marginright5"></i>
           {{else if (eq tab.type 'bundle')}}
-            <i class="fa fa-cubes marginright5"></i>
+          <i class="fa fa-cubes marginright5"></i>
+          {{else}}
+          <i class="fa fa-th marginright5"></i>
           {{/if}}
           {{tab.name}}
           <span class="closeTab" {{action "closeTab" index bubbles=false }}>x</span>
         </a>
       </li>
-    {{/each}}
-  </ul>
-  <div class="tab-content">
-    {{#each tabs as |tab index|}}
+      {{/each}}
+    </ul>
+    <div class="tab-content">
+      {{#each tabs as |tab index|}}
       <div class="tab-pane {{if (eq index currentIndex) 'active'}}" id="{{tab.id}}">
         {{#if (eq tab.type 'wf')}}
-          {{flow-designer xmlAppPath=tab.path register="register" openTab="openTab" changeTabName="changeTabName" changeFilePath="changeFilePath" tabInfo=tab}}
+          {{flow-designer xmlAppPath=tab.path register="register" openTab="openTab" changeTabName="changeTabName"
+          changeFilePath="changeFilePath" tabInfo=tab}}
         {{else if (eq tab.type 'coord')}}
-          {{coord-config xmlAppPath=tab.path register="register" openTab="openTab" changeTabName="changeTabName" changeFilePath="changeFilePath" tabInfo=tab}}
+          {{coord-config xmlAppPath=tab.path register="register" openTab="openTab" changeTabName="changeTabName"
+          changeFilePath="changeFilePath" tabInfo=tab}}
         {{else if (eq tab.type 'bundle')}}
-          {{bundle-config register="register" openTab="openTab" changeTabName="changeTabName" changeFilePath="changeFilePath" tabInfo=tab}}
+          {{bundle-config register="register" openTab="openTab" changeTabName="changeTabName"
+          changeFilePath="changeFilePath" tabInfo=tab}}
+        {{else if (eq tab.type 'dashboard')}}
+          {{outlet}}
         {{else}}
           {{spin-spinner lines=7 length=3 width=3 radius=3 top=-10 left=150}}
         {{/if}}
       </div>
-    {{/each}}
+      {{/each}}
+    </div>
   </div>
-</div>
-<!--
+  <!--
   {{#if (eq type 'wf')}}
-    {{flow-designer xmlAppPath=appPath isNew=isNew}}
+  {{flow-designer xmlAppPath=appPath isNew=isNew}}
   {{else if (eq type 'coord')}}
-    {{coord-config}}
+  {{coord-config}}
   {{else if (eq type 'bundle')}}
-    {{bundle-config}}
+  {{bundle-config}}
   {{else}}
-    {{spin-spinner lines=7 length=3 width=3 radius=3 top=-10 left=150}}
+  {{spin-spinner lines=7 length=3 width=3 radius=3 top=-10 left=150}}
   {{/if}} -->

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb567758/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/flow-designer.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/flow-designer.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/flow-designer.hbs
index c8f0f0e..fa3215a 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/flow-designer.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/flow-designer.hbs
@@ -24,16 +24,58 @@
           <label for="wf_title">Name</label>
             {{input class="form-control job-title" type="text" name="wf_title" value=workflow.name title="Workflow Name" placeholder="Workflow Name"}}
         </div>
+        {{#if workflowFilePath}}
+          <div class="form-group wf-path marginleft20" title={{workflowFilePath}}>
+              Path:{{ workflowFilePath}}
+          </div>
+        {{/if}}
       </div>
-      {{#if workflowFilePath}}
-        <div class="wf-path padding20" title={{workflowFilePath}}>
-            Path:{{ workflowFilePath}}
-        </div>
-      {{/if}}
-      <div class="navbar-brand pull-right paddingtop8 col-xs-18">     
-        <button  type="button" class="btn btn-default" title="Import workflow" {{action "showFileBrowser"}}>
+      <div class="navbar-brand pull-right paddingtop8 col-xs-18">
+          <div class="btn-group">
+            <div class="dropdown">
+              <button class="btn btn-default dropdown-toggle borderRightRadiusNone" type="button" data-toggle="dropdown">Workflow
+              <span class="caret"></span></button>
+              <ul class="dropdown-menu">
+                <li>
+                  <!--a class="pointer" title="Save Draft" {{action "saveAsDraft"}}>
+                      <i class="fa fa-download marginright5"></i>Save As Draft
+                  </a-->
+                  <a class="pointer" title="Import workflow from HDFS" {{action "showFileBrowser"}}>
+                      <i class="fa fa-download marginright5"></i>Import from HDFS
+                  </a>
+                  <a class="pointer" title="Import workflow from Local File System">
+                    {{#file-picker fileLoaded="fileLoaded" preview=false}}
+                        <i class="fa fa-download marginright5"></i>Import from Local FS
+                    {{/file-picker}}
+                  </a>
+                  <!--a class="pointer" title="Save workflow" {{action "saveWorkflow" "save"}}>
+                      <i class="fa fa-floppy-o marginright5"></i>Save
+                  </a>
+                  <a class="pointer" title="Save workflow" {{action "saveWorkflow" }}>
+                      <i class="fa fa-floppy-o marginright5"></i>Save As
+                  </a-->
+                </li>
+                <li>
+                  <a class="pointer" data-toggle="modal" title="Save workflow to local file system" {{action "downloadWorkflowXml"}}>
+                    <i class="fa fa-download marginright5"></i>Export
+                  </a>
+                </li>
+                <li>
+                  <a class="pointer" data-toggle="modal" data-target="#previewModal"  title="Preview workflow" {{action "previewWorkflow"}}>
+                    <i class="fa fa-eye marginright5"></i>Preview xml
+                  </a>
+                </li>
+                <!--li>
+                  <a class="pointer" title="Create a coordinator with the workflow" {{action "scheduleWorkflow"}}>
+                    <i class="fa fa-eye marginright5"></i>Schedule
+                  </a>
+                </li-->
+              </ul>
+            </div>
+          </div>
+        <!--button  type="button" class="btn btn-default" title="Import workflow" {{action "showFileBrowser"}}>
             <i class="fa fa-download marginright5"></i>Import
-        </button>
+        </button-->
         <button  id="import-workflow-test" type="button" class="btn btn-default hide" title="Import workflow Test" {{action "importWorkflowTest"}}>
             <i class="fa fa-download"></i>
         </button>
@@ -43,13 +85,13 @@
             <span class="caret"></span></button>
             <ul class="dropdown-menu">
               <li>
-                <a  data-toggle="modal" data-target="#ConfirmDialog" title="Reset Workflow" {{action "conirmCreatingNewWorkflow"}}>
+                <a  class="pointer" data-toggle="modal" data-target="#ConfirmDialog" title="Reset Workflow" {{action "conirmCreatingNewWorkflow"}}>
                   Reset Workflow
                 </a>
               </li>
               {{#if useCytoscape}}
               <li>
-                <a title="Reset Layout" {{action "resetLayout"}}>
+                <a class="pointer" title="Reset Layout" {{action "resetLayout"}}>
                   Reset Layout
                 </a>
               </li>
@@ -64,10 +106,10 @@
               <span class="caret"></span></button>
               <ul class="dropdown-menu">
                 <li>
-                  <a data-toggle="modal" title="Create Kill Node" {{action "showCreateKillNode" true}}>
+                  <a class="pointer" data-toggle="modal" title="Create Kill Node" {{action "showCreateKillNode" true}}>
                       Create Kill Node
                   </a>
-                  <a data-toggle="modal" title="Manage Kill Nodes" {{action "showKillNodeManager" true}}>
+                  <a class="pointer" data-toggle="modal" title="Manage Kill Nodes" {{action "showKillNodeManager" true}}>
                       Manage Kill Nodes
                   </a>
                 </li>
@@ -101,13 +143,13 @@
               </ul>
             </div>
           </div>
-          <div class="btn-group">
+          <!--div class="btn-group">
             <div class="dropdown">
               <button class="btn btn-default dropdown-toggle borderRadiusNone" type="button" data-toggle="dropdown"><i class="marginright5"></i>More
               <span class="caret"></span></button>
               <ul class="dropdown-menu">
                 <li>
-                  <a href="javascript:void(0)" data-toggle="modal" data-target="#previewModal"  title="Preview workflow" {{action "previewWorkflow"}}>
+                  <a href="#" data-toggle="modal" data-target="#previewModal"  title="Preview workflow" {{action "previewWorkflow"}}>
                     <i class="fa fa-eye marginright5"></i>Preview xml
                   </a>
                 </li>
@@ -118,12 +160,9 @@
                 </li>
               </ul>
             </div>
-          </div>
-          <button type="button" class="btn btn-default" title="Submit workflow" {{action "saveWorkflow"}}>
-              <i class="fa fa-floppy-o marginright5"></i>Save
-          </button>           
-          <button type="button" class="btn btn-primary" title="Dry run workflow" {{action "dryRunWorkflow"}}>
-              <i class="fa fa-play marginright5"></i> Test Run
+          </div-->
+          <button type="button" class="btn btn-default" title="Validate workflow" {{action "dryRunWorkflow"}}>
+              <i class="fa fa-play marginright5"></i>Validate
           </button>
           <button type="button" class="btn btn-primary" title="Submit workflow" {{action "submitWorkflow"}}>
               <i class="fa fa-upload marginright5"></i>Submit
@@ -137,7 +176,7 @@
      {{component hoveredWidget hoveredAction=hoveredAction hideNotification="hideNotification"}}
   {{/if}}
   <div  id="content" class="panel panel-default designer-main-panel col-xs-20">
-    <div class="panel-body designer-panel designer-canvas">
+    <div class="designer-panel designer-canvas">
       {{designer-errors errors=errors validationErrors=validationErrors}}
       {{#if undoAvailable}}
         <div id="alert"class="alert alert-warning" role="alert">
@@ -156,20 +195,34 @@
       </div>
       {{/if}}
       {{#unless isImportingSuccess}}
-      <div id="loader">
-          <div id="alert"class="alert alert-danger alert-dismissible" role="alert">
-              There is some problem while importing.Please try again.
-              {{#if isStackTraceAvailable}}
-                {{#if isStackTraceVisible}}
-                  <a href="#" {{action "hideStackTrace"}}>Hide Log</a>
-                  <div id="stackTrace">{{{stackTrace}}}</div>
+        <div id="loader">
+            <div id="alert"class="alert alert-danger alert-dismissible" role="alert">
+                {{errorMsg}}
+                {{#if isStackTraceAvailable}}
+                  {{#if isStackTraceVisible}}
+                    <a href="#" {{action "hideStackTrace"}}>Hide Log</a>
+                    <div id="stackTrace">{{{stackTrace}}}</div>
+                  {{/if}}
+                  {{#unless isStackTraceVisible}}
+                    <a href="#" {{action "showStackTrace"}}>Show Log</a>
+                  {{/unless}}
                 {{/if}}
-                {{#unless isStackTraceVisible}}  
-                  <a href="#" {{action "showStackTrace"}}>Show Log</a>
-                {{/unless}}
-              {{/if}}
-          </div>
-      </div>
+            </div>
+        </div>
+      {{/unless}}
+      {{#if isAssetPublishing}}
+        <div id="loader">
+            <div id="alert"class="alert alert-info alert-dismissible" role="alert">
+              Publishing asset. Please wait...
+            </div>
+        </div>
+      {{/if}}
+      {{#unless isPublishingSuccess}}
+        <div id="loader">
+            <div id="alert"class="alert alert-danger alert-dismissible" role="alert">
+                {{errorMsg}}
+            </div>
+        </div>
       {{/unless}}
       <div id="flow-designer">
         {{#each flattenedNodes as |node|}}
@@ -224,6 +277,19 @@
             <span class="overlay-paste-icon" title="Replace Node from Clipboard">
               <i class="fa fa-paste"></i>
             </span>
+            <span class="overlay-local-fs-import-icon" title="Copy action settings from Local File System">
+              <div class="action-file-picker">
+                {{#file-picker fileLoaded="importActionSettings" preview=false}}
+                    <i class="fa fa-download"></i>
+                {{/file-picker}}
+              </div>
+            </span>
+            <span class="overlay-hdfs-import-icon" title="Import action" {{action "showActionSettingsFileBrowser"}}>
+                <i class="fa fa-download"></i>
+            </span>
+            <span class="overlay-hdfs-export-icon" title="Export action" {{action "showExportActionNodeFileBrowser"}}>
+                <i class="fa fa-upload"></i>
+            </span>
           </div>
           {{decision-add-branch node=node registerAddBranchAction="registerAddBranchAction" addDecisionBranch="addDecisionBranch" workflow=workflow}}
         </div>
@@ -233,16 +299,20 @@
         {{/if}}
       </div>
       <div id="workflow-actions" class="hidden">
-        {{workflow-actions element=popOverElement addNode="addNode" pasteNode="pasteNode" clipboard=clipboard}}
+        {{workflow-actions element=popOverElement addNode="addNode" pasteNode="pasteNode" showImportActionNodeFileBrowser="showImportActionNodeFileBrowser" importActionNodeLocalFS="importActionNodeLocalFS" clipboard=clipboard}}
       </div>
     </div>
   </div>
 </div>
+
+
+
+
 {{#if showActionEditor}}
   {{workflow-action-editor actionType=currentAction closeActionEditor="closeActionEditor" setNodeTransitions="setNodeTransitions" actionModel=currentNode.domain nodeType=currentNode.type currentNode=currentNode killNodes=workflow.killNodes credentials=workflow.credentials}}
 {{/if}}
 {{#if showingSaveWorkflow}}
-  {{save-wf type='wf' closeJobConfigs="closeWorkflowSubmitConfigs" jobFilePath=workflowFilePath openFileBrowser="openFileBrowser" closeFileBrowser="closeFileBrowser" jobConfigs=workflowSubmitConfigs setFilePath="setFilePath" isDryrun=dryrun}}
+  {{save-wf type='wf' saveFileinfo="saveFileinfo" closeJobConfigs="closeWorkflowSubmitConfigs" jobFilePath=workflowFilePath openFileBrowser="openFileBrowser" closeFileBrowser="closeFileBrowser" jobConfigs=workflowSubmitConfigs setFilePath="setFilePath" isDryrun=dryrun isDraft=isDraft jobXmlJSONStr=jobXmlJSONStr}}
 {{/if}}
 {{#if showingWorkflowConfigProps}}
   {{job-config type='wf' closeJobConfigs="closeWorkflowSubmitConfigs" jobFilePath=workflowFilePath openFileBrowser="openFileBrowser" closeFileBrowser="closeFileBrowser" jobConfigs=workflowSubmitConfigs isDryrun=dryrun}}
@@ -253,6 +323,15 @@
 {{#if showingFileBrowser}}
   {{hdfs-browser closeFileBrowser="closeFileBrowser" selectFileCallback=selectFileCallback filePath=workflowFilePath}}
 {{/if}}
+{{#if showingActionSettingsFileBrowser}}
+  {{hdfs-browser closeFileBrowser="closeActionSettingsFileBrowser" selectFileCallback=selectFileCallback filePath=actionSettingsFilePath}}
+{{/if}}
+{{#if showingImportActionNodeFileBrowser}}
+  {{hdfs-browser closeFileBrowser="closeImportActionNodeFileBrowser" selectFileCallback=selectFileCallback filePath=actionNodeFilePath}}
+{{/if}}
+{{#if showingExportActionNodeFileBrowser}}
+  {{hdfs-browser closeFileBrowser="closeExportActionNodeFileBrowser" selectFileCallback=selectFileCallback filePath=exportActionNodeFilePath}}
+{{/if}}
 {{#if showingPreview}}
   {{#preview-dialog title="Workflow XML Preview" previewXml=previewXml}}{{/preview-dialog}}
 {{/if}}
@@ -316,6 +395,9 @@
 {{#if showParameterSettings}}
   {{#workflow-parameters type='wf' closeWorkFlowParam="closeWorkFlowParam" saveWorkFlowParam="saveWorkFlowParam" parameters=parameters}}{{/workflow-parameters}}
 {{/if}}
+{{#if showingStreamImport}}
+  {{import-from-stream type='wf' importWorkflowStream="importWorkflowStream" hideStreamImport="hideStreamImport" showingStreamImport=showingStreamImport workflowStream=workflowStream}}
+{{/if}}
 {{#if showKillNodeManager}}
   {{#killnode-manager killNodes=workflow.killNodes killNode=killNode createKillnodeError=createKillnodeError createKillNode="createKillNode" deleteNode="deleteNode" addKillNodeMode=addKillNodeMode editMode=editMode closeKillNodeManager="closeKillNodeManager"}}{{/killnode-manager}}
 {{/if}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb567758/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/hdfs-browser.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/hdfs-browser.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/hdfs-browser.hbs
index 1922020..437640d 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/hdfs-browser.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/hdfs-browser.hbs
@@ -74,7 +74,7 @@
                 <label class="control-label">Selected Path</label>
               </div>
               <div class="col-xs-6">
-                {{input name="selectedPath" class="form-control" type="text" value=selectedPath placeholder="/enter folder here"}}
+                {{input name="selectedPath" class="form-control" type="text" value=selectedPath}}
               </div>
               <div class="col-xs-4">
                 <button type="button" class="btn btn-primary" {{action "selectFile"}}>Select</button>

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb567758/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/import-from-stream.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/import-from-stream.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/import-from-stream.hbs
new file mode 100644
index 0000000..067d714
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/import-from-stream.hbs
@@ -0,0 +1,63 @@
+{{!
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+}}
+<div class="modal fade" id="configureJob" role="dialog">
+  <div class="modal-dialog">
+    <div class="modal-content">
+      <div class="modal-header">
+        <button type="button" class="close" {{action "close"}}>&times;</button>
+        <b>Import Workflow From Stream</b>
+      </div>
+      <div class="modal-body">
+        <div class="panel panel-default">
+          <div class="panel-body">
+            <div class="row form-group">
+              <div class="col-xs-3"> 
+                <label class="control-label" for="{{type}}-path">{{displayName}} stream</label><span class="requiredField">&nbsp;*</span>
+              </div>
+            </div>
+
+            <div class="row form-group">
+              <div class="col-xs-8">
+                <div class="input-group">
+                  <div id="xmlCodeStream">
+                    {{ivy-codemirror value=workflowStream options=(hash lineNumbers=false mode="xml" indentWithTabs=true)}}
+                  </div>
+                </div>
+                {{field-error model=this field='workflowStream' showErrorMessage=showErrorMessage}}
+              </div>
+            </div>
+
+          </div>
+        </div>
+      </div>
+      <div class="modal-footer">
+        {{#if savingInProgress}}
+        {{spin-spinner lines=10 length=10 width=5 radius=10 }}
+        <span class="pull-left">Saving {{displayName}}</span>
+        {{/if}}
+        {{#if startingInProgress}}
+        {{spin-spinner lines=8 length=5 width=10 radius=5}}
+        <span class="pull-left">Starting {{displayName}}</span>
+        {{/if}}
+        <button type="button" class="btn btn-default" {{action "close"}}>Close</button>
+        <button type="button" class="btn btn-primary" {{action "save"}}>Import workflow stream</button>
+      </div>
+    </div>
+  </div>
+</div>
+

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb567758/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/job-config.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/job-config.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/job-config.hbs
index ede8cb1..f0d9ee3 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/job-config.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/job-config.hbs
@@ -21,7 +21,7 @@
       <div class="modal-header">
         <button type="button" class="close" data-dismiss="modal">&times;</button>
         {{#if isDryrun}}
-          <h4 class="modal-title">Dryrun {{displayName}}</h4>
+          <h4 class="modal-title">Validate {{displayName}}</h4>
         {{else}}
           <h4 class="modal-title">Submit {{displayName}}</h4>
         {{/if}}
@@ -39,14 +39,14 @@
                   <a href="#" {{action "hideStackTrace"}}>Hide Log</a>
                   <div id="stackTrace">{{{stackTrace}}}</div>
                 {{/if}}
-                {{#unless isStackTraceVisible}}  
+                {{#unless isStackTraceVisible}}
                   <a href="#" {{action "showStackTrace"}}>Show Log</a>
                 {{/unless}}
               {{/if}}
             </div>
             {{/if}}
             <div class="row form-group">
-              <div class="col-xs-3"> 
+              <div class="col-xs-3">
                 <label class="control-label" for="{{type}}-path">{{displayName}} path</label><span class="requiredField">&nbsp;*</span>
               </div>
               <div class="col-xs-8">
@@ -111,9 +111,9 @@
         {{/if}}
         <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
         {{#if isDryrun}}
-          <button type="button" class="btn btn-primary" {{action "dryrun"}}>Test Run</button>
+          <button type="button" class="btn btn-primary" {{action "dryrun"}}>Validate</button>
         {{else}}
-          <button type="button" class="btn btn-default" {{action "dryrun"}}>Test Run</button>
+          <button type="button" class="btn btn-default" {{action "dryrun"}}>Validate</button>
           <button type="button" class="btn btn-primary" {{action "save"}}>Submit</button>
         {{/if}}
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/fb567758/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/job-details.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/job-details.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/job-details.hbs
index f17f89e..32e468f 100644
--- a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/job-details.hbs
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/job-details.hbs
@@ -18,19 +18,35 @@
 <div id="job-details" class="panel panel-default">
   <div class="panel-heading">
     <div class="pull-right">
-      {{#if from}}
-      <button type="button" class="btn btn-default" title="Back" {{action 'back'}}>
-          <i class="fa fa-arrow-left"></i>
-      </button>
-      {{/if}}
-      {{#link-to 'dashboard' class="backto-dashboard"}}
+      {{#link-to 'design.dashboardtab' class="backto-dashboard"}}
       <button type="button" class="btn btn-default" title="Workflow Dashboard">
           <i class="fa fa-th"></i>
       </button>
       {{/link-to}}
     </div>
     <div class="pull-left">
-      <span class="jobTitle">{{displayType}} Job : {{name}} </span>
+      <div class="jobTitle">
+        <!-- {{displayType}} Job : {{name}}  -->
+        <ol class="breadcrumb">
+          {{#if fromBundleId}}
+            <li class="breadcrumb-item">
+              <a href="#" {{action 'back' 'bundles' fromBundleId}}>
+                {{#workflow-icon workflowType="bundles"}}{{/workflow-icon}} [ <span title="{{fromBundleId}}">{{dashboardContext.currentBundleName}}</span> ]
+              </a>
+            </li>
+          {{/if}}
+          {{#if fromCoordId}}
+            <li class="breadcrumb-item">
+              <a href="#" {{action 'back' 'coords' fromCoordId}}>
+                {{#workflow-icon workflowType="coords"}}{{/workflow-icon}} [ <span title="{{fromCoordId}}">{{dashboardContext.currentCoordName}}</span> ]
+              </a>
+            </li>
+          {{/if}}
+          <li class="breadcrumb-item">
+            {{#workflow-icon workflowType=model.jobType}}{{/workflow-icon}} [ <span title="{{id}}">{{name}}</span> ]
+          </li>
+        </ol>
+      </div>
       <span class="fa fa-refresh fa-1 pointer btn btn-default" title="Refresh" {{action 'doRefresh'}} aria-hidden="true"></span>
     </div>
     <div class="clearfix"></div>
@@ -39,7 +55,7 @@
     {{#if model.error}}<span class="messageDiv label label-danger">{{model.error}}</span>{{/if}}
     {{#if error}}<span class="messageDiv label label-danger">{{errorMessage}}</span>{{/if}}
     {{#if (eq model.jobType "wf")}}
-      {{#workflow-job-details model=model getJobLog="getJobLog" getActionDetails="getActionDetails" id=id}}
+      {{#workflow-job-details model=model jobDefinition=jobDefinition configurationProperties=configurationProperties getJobLog="getJobLog" getActionDetails="getActionDetails" id=id}}
         <div>
           <ul class="nav nav-tabs" role="tablist">
             <li role="presentation" class="active"><a href="#jobInfo" aria-controls="job-info" role="tab" data-toggle="tab">Info</a></li>
@@ -51,22 +67,20 @@
             <li {{action 'getAuditLog'}} role="presentation"><a href="#jobAuditLog" aria-controls="jobAuditLog" role="tab" data-toggle="tab">Audit Log</a></li>
             <li {{action 'getJobDag'}} role="presentation"><a href="#jobDag" aria-controls="jobDag" role="tab" data-toggle="tab">Flow Graph</a></li>
             <li role="presentation" class="pull-right">
-                {{#link-to 'design' (query-params appPath=model.appPath) class="backto-designer" }}
-                    <button type="button" class="btn btn-success" title="Edit Workflow" >
-                       Edit Workflow
-                    </button>
-                {{/link-to}}
-            </li>            
+				<button type="button" class="btn btn-success" title="Edit Workflow" {{action "editWorkflow" model.appPath}}>
+				   Edit Workflow
+				</button>
+            </li>
           </ul>
-          
+
       </div>
       {{/workflow-job-details}}
     {{else if (eq model.jobType "coords")}}
-      {{#coord-job-details model=model getJobLog="getJobLog" id=id getCoordActionReruns="getCoordActionReruns" showWorkflow="showWorkflow"}}
+      {{#coord-job-details model=model jobDefinition=jobDefinition configurationProperties=configurationProperties getJobLog="getJobLog" id=id getCoordActionReruns="getCoordActionReruns" showWorkflow="showWorkflow"}}
         <div>
           <ul class="nav nav-tabs" role="tablist">
             <li role="presentation" class="active"><a href="#jobInfo" aria-controls="job-info" role="tab" data-toggle="tab">Info</a></li>
-            <li {{action 'showFirstActionDetail'}} role="presentation"><a href="#jobAction" aria-controls="job-action" role="tab" data-toggle="tab">Action</a></li>
+            <li {{action 'showFirstActionDetail'}} role="presentation"><a href="#jobAction" aria-controls="job-action" role="tab" data-toggle="tab">Workflow Jobs</a></li>
             <li {{action 'getJobDefinition'}} role="presentation"><a href="#jobDefinition" aria-controls="jobDefinition" role="tab" data-toggle="tab">Definition</a></li>
             <li role="presentation"><a href="#jobConfig" aria-controls="jobConfig" role="tab" data-toggle="tab">Configuration</a></li>
             <li {{action 'getJobLog'}} role="presentation"><a href="#jobLog" aria-controls="jobLog" role="tab" data-toggle="tab">Log</a></li>
@@ -77,7 +91,7 @@
         </div>
       {{/coord-job-details}}
     {{else}}
-      {{#bundle-job-details model=model getJobLog="getJobLog" id=id showCoord="showCoord"}}
+      {{#bundle-job-details model=model jobDefinition=jobDefinition configurationProperties=configurationProperties getJobLog="getJobLog" id=id showCoord="showCoord"}}
         <div>
           <ul class="nav nav-tabs" role="tablist">
             <li role="presentation" class="active"><a href="#jobInfo" aria-controls="job-info" role="tab" data-toggle="tab">Info</a></li>


Mime
View raw message