ambari-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From yus...@apache.org
Subject [05/12] ambari git commit: AMBARI-17213. Create ambari workflow designer contrib view. (Venkat Ranganathan via yusaku)
Date Tue, 09 Aug 2016 20:16:18 GMT
http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/sqoop-action.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/sqoop-action.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/sqoop-action.hbs
new file mode 100644
index 0000000..3f0ec61
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/sqoop-action.hbs
@@ -0,0 +1,84 @@
+{{!
+* 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="panel panel-default">
+  <div class="panel-heading">General</div>
+  <div class="form-group padding10">
+    <label class="control-label col-xs-2">Send As</label>
+    <div class="col-xs-2">
+      <input type="radio" name="sendType" checked={{if (eq isArg false) 'checked'}}  {{action "onSendTypeChange" "command" preventDefault=false on="change"}}> Command
+    </div>
+    <div class="col-xs-2">
+      <input type="radio" name="sendType" checked={{if (eq isArg true) 'checked'}}  {{action "onSendTypeChange" "arg" preventDefault=false on="change"}}> Args
+    </div>
+  </div>
+  {{#if isArg}}
+    {{#arg-config args=actionModel.args register="register" title="arg"}}{{/arg-config}}
+  {{else}}
+    <div class="form-group padding10">
+      <label for="inputEmail" class="control-label col-xs-2">Command</label>
+      <div class="col-xs-7">
+        {{input type="text" class="form-control" name="command" value=actionModel.command placeholder="Sqoop Command"}}
+      </div>
+    </div>
+  {{/if}}
+  {{#jobxml-config jobXml=actionModel.jobXml openFileBrowser="openFileBrowser" register="register"}}{{/jobxml-config}}
+</div>
+<div class="panel panel-default">
+  <div class="panel-heading">Transition</div>
+  <div class="panel-body handlerPanel">
+    {{#transition-config transition=transition killNodes=killNodes currentNode=currentNode register="register"}}{{/transition-config}}
+  </div>
+</div>
+{{#action-credential-config credentials=credentials actionCredentials=actionModel.credentials}}{{/action-credential-config}}
+<div class="panel panel-default">
+  <div class="panel-heading" id="accordion" data-toggle="collapse" data-parent="#accordion" data-target="#collapseOne">
+    <h4 class="panel-title">
+      Advanced Properties
+      <i class="indicator glyphicon glyphicon-chevron-down pull-right"></i></h4>
+    </div>
+    <div id="collapseOne" class="panel-collapse collapse">
+      <br/>
+      <div class=" panel panel-default">
+        <div class="panel-body handlerPanel">
+          <div class="form-group">
+            <label for="inputEmail" class="control-label col-xs-2">Resource Manager</label>
+            <div class="col-xs-7">
+              {{input type="text" class="form-control" name="job-tracker" value=actionModel.jobTracker placeholder="Resource Manager"}}
+            </div>
+            {{field-error error=errors.actionModel.jobTracker}}
+          </div>
+          <div class="form-group">
+            <label for="inputPassword" class="control-label col-xs-2">Name node</label>
+            <div class="col-xs-7">
+              {{input type="text" class="form-control"  name="name-node" value=actionModel.nameNode validations="required,noWhitespace" placeholder="Name node"}}
+            </div>
+          </div>
+          {{#file-config files=actionModel.files openFileBrowser="openFileBrowser" register="register" title="File"}}{{/file-config}}
+          {{#file-config files=actionModel.archives openFileBrowser="openFileBrowser" register="register" title="Archive"}}{{/file-config}}
+          {{#prepare-config prepare=actionModel.prepare openFileBrowser="openFileBrowser" register="register"}}{{/prepare-config}}
+        </div>
+      </div>
+      <div class=" panel panel-default">
+        <div class="panel-heading">Configuration</div>
+        <div class="panel-body handlerPanel">
+          {{#name-value-config configuration=actionModel.configuration register="register"}}{{/name-value-config}}
+        </div>
+      </div>
+    </div>
+  </div>
+  {{#sla-info slaInfo=actionModel.slaInfo register="register" slaEnabled=actionModel.slaEnabled register="register"}}{{/sla-info}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/ssh-action.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/ssh-action.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/ssh-action.hbs
new file mode 100644
index 0000000..065e270
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/ssh-action.hbs
@@ -0,0 +1,70 @@
+{{!
+* 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="panel panel-default">
+  <div class="panel-heading">General</div>
+  <div class="panel-body">
+    <div class="form-group">
+      <label for="inputEmail" class="control-label col-xs-2">Host<span class="requiredField">&nbsp;*</span></label>
+      <div class="col-xs-7">
+        {{input type="text" class="form-control" name="host" value=actionModel.host placeholder="localhost"}}
+        {{field-error error=errors.actionModel.host}}
+      </div>
+    </div>
+    <div class="form-group">
+      <label for="inputEmail" class="control-label col-xs-2">Command<span class="requiredField">&nbsp;*</span></label>
+      <div class="col-xs-7">
+        {{input type="text" class="form-control" name="command" value=actionModel.command placeholder="command"}}
+        {{field-error error=errors.actionModel.command}}
+      </div>
+    </div>
+
+    <div class="form-group">
+      <label class="control-label col-xs-2"></label>
+      <div class="col-xs-2">
+        <input type="radio" name="Args" checked={{if (eq isSingle false) 'checked'}}  {{action "onJavaOptChange" "multiple" preventDefault=false on="change"}}> Args
+      </div>
+      <div class="col-xs-2">
+        <input type="radio" name="Arg" checked={{if (eq isSingle true) 'checked'}}  {{action "onJavaOptChange" "single" preventDefault=false on="change"}}> Arg
+      </div>
+    </div>
+
+    {{#if isSingle}}
+    {{#arg-config args=actionModel.arg register="register" title="Arg"}}{{/arg-config}}
+    {{else}}
+    {{#arg-config args=actionModel.args register="register" title="Args"}}{{/arg-config}}
+    {{/if}}
+
+    <div class="form-group">
+      <label class="control-label col-xs-2">Capture output</label>
+      <div class="col-xs-8">
+        <div class="checkbox">
+          <label title="capture output of the action">{{input type="checkbox" name="capture-output" checked=actionModel.captureOutput}}</label>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+
+<div class="panel panel-default">
+  <div class="panel-heading">Transition</div>
+  <div class="panel-body handlerPanel">
+    {{#transition-config transition=transition killNodes=killNodes currentNode=currentNode register="register"}}{{/transition-config}}
+  </div>
+</div>
+{{#action-credential-config credentials=credentials actionCredentials=actionModel.credentials}}{{/action-credential-config}}
+{{#sla-info slaInfo=actionModel.slaInfo register="register" slaEnabled=actionModel.slaEnabled register="register"}}{{/sla-info}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/sub-workflow.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/sub-workflow.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/sub-workflow.hbs
new file mode 100644
index 0000000..a1ffaba
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/sub-workflow.hbs
@@ -0,0 +1,56 @@
+{{!
+* 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="panel panel-default">
+  <div class="panel-heading">General</div>
+  <div class="panel-body">
+    <div class="form-group padding10">
+      <label class="control-label col-xs-2">App Path<span class="requiredField">&nbsp;*</span></label>
+      <div class="col-xs-7">
+        <div class="input-group">
+          {{input type="text" class="form-control" validations="required" name="appPath" value=actionModel.appPath placeholder="app path"}}
+          <span class="input-group-btn">
+            <button class="btn btn-primary" type="button" {{action "openFileBrowser" "actionModel.appPath"}}>Browse</button>
+          </span>
+        </div>
+        {{#field-error error=errors.actionModel.appPath}}{{/field-error}}
+      </div>
+    </div>
+    <div class="form-group">
+      <label class="control-label col-xs-2">Propagate configuration</label>
+      <div class="col-xs-10">
+        <div class="checkbox">
+          <label title="indicates that the workflow job configuration should be propagated to the child workflow">{{input type="checkbox" name="propagate-configuration" checked=actionModel.propagate-configuration}}</label>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+<div class=" panel panel-default">
+  <div class="panel-heading">Configuration</div>
+  <div class="panel-body handlerPanel">
+    {{#name-value-config configuration=actionModel.configuration register="register"}}{{/name-value-config}}
+  </div>
+</div>
+<div class="panel panel-default">
+  <div class="panel-heading">Transition</div>
+  <div class="panel-body handlerPanel">
+    {{#transition-config transition=transition killNodes=killNodes currentNode=currentNode register="register"}}{{/transition-config}}
+  </div>
+</div>
+{{#action-credential-config credentials=credentials actionCredentials=actionModel.credentials}}{{/action-credential-config}}
+{{#sla-info slaInfo=actionModel.slaInfo register="register" slaEnabled=actionModel.slaEnabled register="register"}}{{/sla-info}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/transition-config.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/transition-config.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/transition-config.hbs
new file mode 100644
index 0000000..65902b3
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/transition-config.hbs
@@ -0,0 +1,54 @@
+{{!
+* 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="form-group">
+  <label class="control-label col-xs-2">Error To<span class="requiredField">&nbsp;*</span></label>
+  <div class=" col-xs-7">
+    <select onchange={{action "onSelectChange" value="target.value"}} name="select-node" class="form-control" data-show-icon="true">
+      <optgroup label="Kill Nodes"></optgroup>
+      {{#each killNodes as |node index|}}
+      <option value={{node.name}} selected={{eq node.name transition.errorNode.name}}>{{node.name}}</option>
+      {{/each}}
+      <optgroup label="Other Nodes"></optgroup>
+      {{#each descendantNodes as |node index|}}
+      <option value={{node.name}} selected={{eq node.name transition.errorNode.name}}>{{node.name}}</option>
+      {{/each}}
+    </select>
+    {{field-error error=errors.errorNode.name}}
+  </div>
+</div>
+<div class="form-group margin0">
+  <label class="control-label col-xs-2">Ok To</label>
+  <div class=" col-xs-7 paddingClass">
+    {{okToNode.name}}
+  </div>
+</div>
+
+{{#if (eq selectedKillNode 'createNew')}}
+<div class="form-group" id="killNodeName">
+  <label class="control-label col-xs-2"> Kill node name</label>
+  <div class=" col-xs-7">
+    {{input class="form-control" type="text" name="kill-node-name" value=transition.errorNode.name}}
+  </div>
+</div>
+<div class="form-group">
+  <label class="control-label col-xs-2"> Kill message</label>
+  <div class=" col-xs-7">
+    {{textarea class="form-control" rows="5" placeholder="kill node message" name="kill-node-message" value=transition.errorNode.message}}
+  </div>
+</div>
+{{/if}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/version-settings.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/version-settings.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/version-settings.hbs
new file mode 100644
index 0000000..337ad7d
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/version-settings.hbs
@@ -0,0 +1,48 @@
+{{!
+* 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"> Workflow Verion</label>
+            <div class="col-xs-7">
+              <select onchange={{action (mut currentWorkflowVersion) value="target.value"}} name="select-version" class="form-control">
+                {{#each workflowSchemaVersions as |version index|}}
+                  <option value={{version}} selected={{eq currentWorkflowVersion version}}>{{version}}</option>
+                {{/each}}
+              </select>
+            </div>
+          </div>
+          {{#each actionVersions as |actionVersion|}}
+            {{#action-version-select actionVersion=actionVersion versionChanged="versionChanged"}}{{/action-version-select}}
+          {{/each}}
+        </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/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-action-editor.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-action-editor.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-action-editor.hbs
new file mode 100644
index 0000000..069c052
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-action-editor.hbs
@@ -0,0 +1,86 @@
+{{!
+* 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="action_properties_dialog">
+  <div class="modal-dialog" role="document">
+    <div class="modal-content">
+      <div class="modal-header">
+        <button type="button" class="close" data-dismiss="modal" aria-label="Close" {{action 'closeEditor'}}>
+          <span aria-hidden="true">&times;</span>
+        </button>
+        <h4 class="modal-title">
+          <span class="editor-icon-title">
+          <i class="fa fa-{{icon}}"></i><span class="grayed">{{currentNode.name}}</span>
+          </span>
+          </h4>
+      </div>
+      <div class="modal-body">
+        <div>
+            <form class="form-horizontal" id="action_properties">
+              {{#if (eq nodeType 'decision')}}
+                {{#decision-config actionModel=actionModel register="registerChild"}}{{/decision-config}}
+              {{/if}}
+              {{#if (eq nodeType 'action')}}
+                {{#if (eq actionType 'java')}}
+                  {{#java-action actionModel=actionModel transition=transition killNodes=killNodes openFileBrowser="openFileBrowser" register="registerChild" addKillNode="addKillNode" currentNode=currentNode credentials=credentials}}{{/java-action}}
+                {{else if (eq actionType 'hive')}}
+                  {{#hive-action actionModel=actionModel transition=transition killNodes=killNodes openFileBrowser="openFileBrowser" register="registerChild" addKillNode="addKillNode" currentNode=currentNode credentials=credentials}}{{/hive-action}}
+                {{else if (eq actionType 'sqoop')}}
+                  {{#sqoop-action actionModel=actionModel transition=transition killNodes=killNodes openFileBrowser="openFileBrowser" register="registerChild" addKillNode="addKillNode" currentNode=currentNode credentials=credentials}}{{/sqoop-action}}
+                {{else if (eq actionType 'pig')}}
+                  {{#pig-action actionModel=actionModel transition=transition killNodes=killNodes openFileBrowser="openFileBrowser" register="registerChild" addKillNode="addKillNode" currentNode=currentNode credentials=credentials credentials=credentials}}{{/pig-action}}
+                {{else if (eq actionType 'shell')}}
+                  {{#shell-action actionModel=actionModel transition=transition killNodes=killNodes openFileBrowser="openFileBrowser" register="registerChild" addKillNode="addKillNode" currentNode=currentNode credentials=credentials}}{{/shell-action}}
+                {{else if (eq actionType 'spark')}}
+                  {{#spark-action actionModel=actionModel transition=transition killNodes=killNodes openFileBrowser="openFileBrowser" register="registerChild" addKillNode="addKillNode" currentNode=currentNode credentials=credentials}}{{/spark-action}}
+                {{else if (eq actionType 'hive2')}}
+                  {{#hive2-action actionModel=actionModel transition=transition killNodes=killNodes openFileBrowser="openFileBrowser" register="registerChild" addKillNode="addKillNode" currentNode=currentNode credentials=credentials}}{{/hive2-action}}
+                {{else if (eq actionType 'map-reduce')}}
+                  {{#map-red-action actionModel=actionModel transition=transition killNodes=killNodes openFileBrowser="openFileBrowser" register="registerChild" addKillNode="addKillNode" currentNode=currentNode credentials=credentials}}{{/map-red-action}}
+                {{else if (eq actionType 'distcp')}}
+                  {{#distcp-action actionModel=actionModel transition=transition killNodes=killNodes openFileBrowser="openFileBrowser" register="registerChild" addKillNode="addKillNode" currentNode=currentNode credentials=credentials}}{{/distcp-action}}
+                {{else if (eq actionType 'ssh')}}
+                  {{#ssh-action actionModel=actionModel transition=transition killNodes=killNodes openFileBrowser="openFileBrowser" register="registerChild" addKillNode="addKillNode" currentNode=currentNode credentials=credentials}}{{/ssh-action}}
+                {{else if (eq actionType 'email')}}
+                  {{#email-action actionModel=actionModel transition=transition killNodes=killNodes openFileBrowser="openFileBrowser" register="registerChild" addKillNode="addKillNode" currentNode=currentNode}}{{/email-action}}
+                {{else if (eq actionType 'fs')}}
+                  {{#fs-action actionModel=actionModel transition=transition killNodes=killNodes openFileBrowser="openFileBrowser" register="registerChild" addKillNode="addKillNode" currentNode=currentNode credentials=credentials}}{{/fs-action}}
+                {{else if (eq actionType 'sub-workflow')}}
+                  {{#sub-workflow actionModel=actionModel transition=transition killNodes=killNodes openFileBrowser="openFileBrowser" register="registerChild" addKillNode="addKillNode" currentNode=currentNode credentials=credentials}}{{/sub-workflow}}
+              {{/if}}
+              {{/if}}
+              {{#if (eq nodeType 'kill')}}
+                <div class="form-group">
+                  <label class="control-label col-xs-2"> Kill message</label>
+                  <div class=" col-xs-7">
+                    {{textarea class="form-control" rows="5" placeholder="kill node message" name="kill-node-message" value=currentNode.killMessage}}
+                  </div>
+                </div>
+              {{/if}}
+          </form>
+        </div>
+      </div>
+      <div class="modal-footer">
+        <button type="button" class="btn btn-secondary" data-dismiss="modal" {{action 'closeEditor'}}>Cancel</button>
+        <button type="button" class="btn btn-primary" {{action 'save'}}>Save</button>
+      </div>
+    </div>
+  </div>
+</div>
+{{#if showingFileBrowser}}
+  {{hdfs-browser closeFileBrowser="closeFileBrowser" selectFileCallback=selectFileCallback filePath=filePath}}
+{{/if}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-actions.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-actions.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-actions.hbs
new file mode 100644
index 0000000..8670161
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-actions.hbs
@@ -0,0 +1,50 @@
+{{!
+* 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="workflow-actions-pop">
+  <span data-toggle="popover" title="Click on an Action to Insert"></span>
+  <div id="actions">
+    <div class="_actions_popup">
+      <h4>Control Flow Nodes</h4>
+      <ul class="actions_list_left control_flow">
+          <li {{action 'addAction' 'fork'}} data-name="fork" data-type="fork" class="dr_action_fork _fork enabled"> <i class="fa fa-sitemap"></i> Fork </li>
+          <li {{action 'addAction' 'decision'}} class="dr_action_switch switch enabled" data-name="Decision" data-type="decision"><span class="decisionText">Decision</span> </li>
+      </ul>
+      <div class="clearfix"></div>
+      <h4>Action Nodes</h4>
+      <ul class="actions_list_left actionNodes">
+          <li {{action 'addAction' 'hive'}} class="dr_action enabled" data-name="Hive" data-type="hive"> <i class="fa fa-server"></i> Hive </li>
+          <li {{action 'addAction' 'hive2'}} class="dr_action enabled" data-name="Hive" data-type="hive2"> <i class="fa fa-server"></i> Hive2</li>
+          <li {{action 'addAction' 'sqoop'}} class="dr_action enabled" data-name="Sqoop" data-type="sqoop"> <i class="fa fa-database"></i> Sqoop </li>
+          <li {{action 'addAction' 'pig'}} class="dr_action enabled" data-name="Pig" data-type="pig"> <i class="fa fa-product-hunt"></i>&nbsp; Pig </li>
+          <li {{action 'addAction' 'sub-workflow'}} class="dr_action enabled" data-name="sub-workflow" data-type="sub-workflow"> <i class="fa fa-share-alt-square"></i>Sub-wf</li>
+
+          <li {{action 'addAction' 'hdfs'}} class="dr_action disabled hide" data-name="HDFS" data-type="hdfs"> <i class="fa fa-copy"></i> HDFS </li>
+          <li {{action 'addAction' 'java'}} class="dr_action enabled" data-name="Java" data-type="java"> <i class="fa fa-code"></i> Java </li>
+          <li {{action 'addAction' 'shell'}} class="dr_action enabled" data-name="Shell" data-type="shell"> <i class="fa fa-terminal"></i> Shell </li>
+          <li {{action 'addAction' 'distcp'}} class="dr_action enabled" data-name="distcp" data-type="distcp"> <i class="fa fa-clone"></i> distcp </li>
+          <li {{action 'addAction' 'map-reduce'}} class="dr_action enabled" data-name="MR" data-type="mapreduce"> <i class="fa fa-cubes"></i> MR </li>
+          <li {{action 'addAction' 'ssh'}} class="dr_action enabled" data-name="SSH" data-type="ssh"> <i class="fa fa-terminal"></i> ssh </li>
+          <li {{action 'addAction' 'spark'}} class="dr_action enabled" data-name="Spark" data-type="spark"> <i class="fa fa-star"></i> Spark </li>
+          <li class="dr_action disabled hide" data-name="Stream" data-type="stream"> <i class="fa fa-exchange"></i> Stream </li>
+          <li {{action 'addAction' 'email'}} class="dr_action  enabled" data-name="Email" data-type="email"> <i class="fa fa-envelope"></i> Email </li>
+          <li {{action 'addAction' 'fs'}} class="dr_action  enabled" data-name="fs" data-type="fs"> <i class="fa fa-folder-o"></i> FS </li>
+      </ul>
+    </div>
+    <div class="clearfix"></div>
+  </div>
+</div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-config.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-config.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-config.hbs
new file mode 100644
index 0000000..1593165
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-config.hbs
@@ -0,0 +1,109 @@
+{{!
+* 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="configureWorkfowModal" 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">Submit Workflow</h4>
+      </div>
+      <div class="modal-body">
+        <div>
+          <div>
+            <div class="panel panel-default">
+              <div class="panel-body">
+            {{#if alertType}}
+            <div id="error" class="alert alert-{{alertType}}">
+              <div>{{alertMessage}}</div>
+              <div>{{alertDetails}}</div>
+            </div>
+            {{/if}}
+            <div class="row form-group">
+              <div class="col-xs-3">
+                <label class="control-label" for="Workflow Path">Workflow Path</label><span class="requiredField">&nbsp;*</span>
+              </div>
+              <div class="col-xs-8">
+                <div class="input-group">
+                  {{input class="form-control" type="text"  value=filePath}}
+                  <span class="input-group-btn">
+                  <button type="button" class="btn btn-primary" {{action "selectWorflowFile"}}>Browse</button>
+                </span>
+                </div>
+                {{input type="checkbox" checked=overwriteWorkflowPath}}Overwrite
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-xs-3">
+                  <label class="control-label">Execution Settings</label>
+              </div>
+              <div class="col-xs-8">
+              {{#each systemConfigs as |config|}}
+                <div>
+                  {{input type="checkbox" checked=config.value}}{{config.displayName}}
+                </div>
+              {{/each}}
+            </div>
+            </div>
+          </div>
+        </div>
+
+
+            <div  id="jobProperties">
+              {{#if configMap.length}}
+              <div class="panel panel-default">
+                <div class="panel-heading">
+                  Job Properties
+                </div>
+                <div class="panel-body">
+                {{#each configMap as |prop|}}
+                  <div class="row form-group">
+                    <div class="col-xs-3">
+                      <label class="control-label" for="{{prop}}">{{prop.name}}</label>
+                      {{#if prop.isRequired}}
+                        <span class="requiredField">&nbsp;*</span>
+                      {{/if}}
+                    </div>
+                    <div class="col-xs-8">
+                      {{input class="form-control" type="text" value=prop.value}}
+                    </div>
+                  </div>
+                {{/each}}
+                </div>
+              </div>
+              {{/if}}
+
+            </div>
+          </div>
+        </div>
+      </div>
+      <div class="modal-footer">
+        {{#if savingInProgress}}
+          <span class="pull-left">Saving Workflow</span>{{spin-spinner lines=8 length=5 width=3 radius=5 top=320 left=425}}
+        {{/if}}
+        {{#if startingInProgress}}
+          <span class="pull-left">Starting Workflow</span>{{spin-spinner lines=8 length=5 width=3 radius=5 top=320 left=425}}
+        {{/if}}
+        <button type="button" class="btn btn-primary" {{action "save"}}>Submit</button>
+        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
+      </div>
+    </div>
+  </div>
+</div>
+{{#if showingFileBrowser}}
+{{hdfs-browser closeFileBrowser="closeFileBrowser" selectFileCallback=selectFileCallback filePath=filePath}}
+{{/if}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-credentials.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-credentials.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-credentials.hbs
new file mode 100644
index 0000000..d0a2b43
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-credentials.hbs
@@ -0,0 +1,44 @@
+{{!
+* 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="workflow_credentials_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">Workflow Credentials</h4>
+      </div>
+      <div class="modal-body">
+        <div class=" panel panel-default">
+          <div class="panel-heading">Credentials</div>
+          <div class="panel-body handlerPanel">
+            {{#each credentialsList as |credential|}}
+              {{#credentials-config showCredentials="showCredentials" delete="deleteCredentials" register="register" credential=credential mode="edit"}}{{/credentials-config}}
+            {{else}}
+              No Credentials
+            {{/each}}
+          </div>
+        </div>
+        {{#credentials-config showCredentials="showCredentials" add="addCredentials" mode="create"}}{{/credentials-config}}
+      </div>
+      <div class="modal-footer">
+        <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+        <button type="button" class="btn btn-primary" {{action "saveCredentials"}}>Save</button>
+      </div>
+    </div>
+  </div>
+</div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-job-details.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-job-details.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-job-details.hbs
new file mode 100644
index 0000000..6465ca8
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-job-details.hbs
@@ -0,0 +1,235 @@
+{{!
+* 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.
+}}
+{{yield}}
+<div class="tab-content">
+  <div role="tabpanel" class="tab-pane active" id="jobInfo">
+    <div class="panel panel-default">
+      <div class="panel-body">
+        <div class="row">
+          <div class="col-md-12">
+            <div class="col-md-2">Job Id</div>
+            <div class="col-md-10">{{id}}</div>
+          </div>
+          <div class="col-md-12">
+            <div class="col-md-2">Status</div>
+            <div class="col-md-10">{{model.status}}</div>
+          </div>
+          <div class="col-md-12">
+            <div class="col-md-2">User</div>
+            <div class="col-md-10">{{model.user}}</div>
+          </div>
+          <div class="col-md-12">
+            <div class="col-md-2">Group</div>
+            <div class="col-md-10">{{model.group}}</div>
+          </div>
+          <div class="col-md-12">
+            <div class="col-md-2">App Path</div>
+            <div class="col-md-10" id="job-detail-app-path">{{model.appPath}}</div>
+          </div>
+          <div class="col-md-12">
+            <div class="col-md-2">Run</div>
+            <div class="col-md-10">{{model.run}}</div>
+          </div>
+          <div class="col-md-12">
+            <div class="col-md-2">Parent Coord</div>
+            <div class="col-md-10">{{model.parentId}}</div>
+          </div>
+          <div class="col-md-12">
+            <div class="col-md-2">Created Time</div>
+            <div class="col-md-10">{{model.createdTime}}</div>
+          </div>
+          <div class="col-md-12">
+            <div class="col-md-2">Start Time</div>
+            <div class="col-md-10">{{model.startTime}}</div>
+          </div>
+          <div class="col-md-12">
+            <div class="col-md-2">Last Modified Time</div>
+            <div class="col-md-10">{{model.lastModTime}}</div>
+          </div>
+          <div class="col-md-12">
+            <div class="col-md-2">End Time</div>
+            <div class="col-md-10">{{model.endTime}}</div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+  <div role="tabpanel" class="tab-pane" id="jobAction">
+    <table id="actions-list" class="table listing job-listing table-striped table-hover table-bordered">
+      <thead>
+        <tr>
+          <th>Name</th>
+          <th>Type</th>
+          <th>Status</th>
+          <th>Transition</th>
+          <th>Start Time</th>
+          <th>End Time</th>
+        </tr>
+      </thead>
+      <tbody>
+        {{#each model.actions as |actionInfo|}}
+        <tr {{action 'getActionDetails' actionInfo}} class="{{if (eq actionInfo model.actionDetails) "active"}}">
+          <td class="pointer">{{actionInfo.name}}</td>
+          <td>{{actionInfo.type}}</td>
+          <td>{{actionInfo.status}}</td>
+          <td>{{actionInfo.transition}}</td>
+          <td>{{actionInfo.startTime}}</td>
+          <td>{{actionInfo.endTime}}</td>
+        </tr>
+        {{/each}}
+      </tbody>
+    </table>
+    {{#if model.actionDetails}}
+    <div id="action-details">
+      <div class="panel panel-default">
+        <div class="panel-heading">
+          Action Details : {{model.actionDetails.name}}
+        </div>
+        <div class="panel-body">
+          <ul class="nav nav-tabs" role="tablist">
+            <li role="presentation" class="active"><a href="#actionInfo" aria-controls="action-info" role="tab" data-toggle="tab">Info</a></li>
+            <li role="presentation"><a href="#actionConf" aria-controls="action-conf" role="tab" data-toggle="tab">Configuration</a></li>
+          </ul>
+          <div class="tab-content">
+            <div role="tabpanel" class="tab-pane active" id="actionInfo">
+              <div class="panel panel-default">
+                <div class="panel-body">
+                  <div class="col-md-12">
+                    <div class="col-md-2">Name</div>
+                    <div class="col-md-10">{{model.actionDetails.name}}</div>
+                  </div>
+                  <div class="col-md-12">
+                    <div class="col-md-2">Type</div>
+                    <div class="col-md-10">{{model.actionDetails.type}}</div>
+                  </div>
+                  <div class="col-md-12">
+                    <div class="col-md-2">Transition</div>
+                    <div class="col-md-10">{{model.actionDetails.transition}}</div>
+                  </div>
+                  <div class="col-md-12">
+                    <div class="col-md-2">Start Time</div>
+                    <div class="col-md-10">{{model.actionDetails.startTime}}</div>
+                  </div>
+                  <div class="col-md-12">
+                    <div class="col-md-2">End Time</div>
+                    <div class="col-md-10">{{model.actionDetails.endTime}}</div>
+                  </div>
+                  <div class="col-md-12">
+                    <div class="col-md-2">Status</div>
+                    <div class="col-md-10">{{model.actionDetails.status}}</div>
+                  </div>
+                  <div class="col-md-12">
+                    <div class="col-md-2">Error Code</div>
+                    <div class="col-md-10">{{model.actionDetails.errorCode}}</div>
+                  </div>
+                  <div class="col-md-12">
+                    <div class="col-md-2">Error Message</div>
+                    <div class="col-md-10">{{model.actionDetails.errorMessage}}</div>
+                  </div>
+                  <div class="col-md-12">
+                    <div class="col-md-2">External ID</div>
+                    <div class="col-md-10">{{model.actionDetails.externalId}}</div>
+                  </div>
+                  <div class="col-md-12">
+                    <div class="col-md-2">External Status</div>
+                    <div class="col-md-10">{{model.actionDetails.externalStatus}}</div>
+                  </div>
+                  <div class="col-md-12">
+                    <div class="col-md-2">Console URL</div>
+                    {{#unless (eq "-" model.actionDetails.consoleUrl)}}
+                    <div class="col-md-10"><a target="_blank" href="{{model.actionDetails.consoleUrl}}">{{model.actionDetails.consoleUrl}}</a></div>
+                    {{else}}
+                    <div class="col-md-10">{{model.actionDetails.consoleUrl}}</div>
+                    {{/unless}}
+                  </div>
+                  <div class="col-md-12">
+                    <div class="col-md-2">Tracker URI</div>
+                    {{#unless (eq "-" model.actionDetails.trackerUri)}}
+                    <div class="col-md-10"><a target="_blank" href="{{model.actionDetails.trackerUri}}">{{model.actionDetails.trackerUri}}</a></div>
+                    {{else}}
+                    <div class="col-md-10">{{model.actionDetails.trackerUri}}</div>
+                    {{/unless}}
+                  </div>
+                </div>
+              </div>
+            </div>
+            <div role="tabpanel" class="tab-pane" id="actionConf">
+              <div class="panel panel-default">
+                <div class="panel-body preview">
+                  <pre class="prettyprint">{{model.actionDetails.conf}}</pre>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    {{/if}}
+  </div>
+  <div role="tabpanel" class="tab-pane" id="jobDefinition">
+    <div class="panel panel-default">
+      <div class="panel-body preview">
+        <pre class="prettyprint">{{model.jobDefinition}}</pre>
+      </div>
+    </div>
+  </div>
+  <div role="tabpanel" class="tab-pane" id="jobConfig">
+    <div class="panel panel-default">
+      <div class="panel-body preview">
+        <pre class="prettyprint">{{model.conf}}</pre>
+      </div>
+    </div>
+  </div>
+  <div role="tabpanel" class="tab-pane" id="jobLog">
+    {{#job-log getJobLog="getJobLog" jobType=model.jobType jobLog=model.jobLog error=model.error}}{{/job-log}}
+  </div>
+
+  <div role="tabpanel" class="tab-pane" id="jobErrorLog">
+    <div class="panel panel-default">
+      <div class="panel-body preview">
+        {{#if model.errorLog}}
+          <pre>{{model.errorLog}}</pre>
+        {{else if model.error}}
+          <pre>{{model.errorLog}}</pre>
+        {{else}}
+          {{spin-spinner lines=8 length=5 width=3 radius=5 top=220}}
+        {{/if}}
+      </div>
+    </div>
+  </div>
+  <div role="tabpanel" class="tab-pane" id="jobAuditLog">
+    <div class="panel panel-default">
+      <div class="panel-body preview">
+        {{#if model.auditLog}}
+          <pre>{{model.auditLog}}</pre>
+        {{else if model.error}}
+          <pre>{{model.auditLog}}</pre>
+        {{else}}
+          {{spin-spinner lines=8 length=5 width=3 radius=5 top=220}}
+        {{/if}}
+      </div>
+    </div>
+  </div>
+  <div role="tabpanel" class="tab-pane" id="jobDag">
+    <div class="panel panel-default">
+      <div class="panel-body">
+        <img src={{dagUrl}} />
+      </div>
+    </div>
+  </div>
+</div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-node.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-node.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-node.hbs
new file mode 100644
index 0000000..e80462c
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-node.hbs
@@ -0,0 +1,65 @@
+{{!
+* 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="node nodecontainer" id={{node.id}}>
+  <div class='node-item {{nodeSpecificClasses}}' >
+  {{#if (eq node.type 'start')}}
+    <i class="fa fa-play nodeStart"></i>
+  {{else if (eq node.type 'end')}}
+    <i class="fa fa-stop nodeEnd"></i>
+  {{else if (eq node.type 'kill')}}
+    <div class="node_actions node_left">
+      <i class="fa fa-cog node_properties" title="Edit" {{action "openEditor"}}></i>
+      <i class="fa fa-trash-o" title="Delete" {{action "deleteNode" }}></i>
+    </div>
+    <div class="action_node_data">
+      <i class="fa fa-ban"></i>
+      {{input required pattern="([a-zA-Z_]([\-_a-zA-Z0-9])*){1,39}" name="actionName" data-toggle="tooltip" title=node.name class="editable" classBinding="node.isUnique" value=node.name placeholder="Kill Node Name"}}
+    </div>
+  {{else if (eq node.type 'decision')}}
+    <div class='decision-data-wrapper'>
+      <div class="decision_node_data">
+        {{input required pattern="([a-zA-Z_]([\-_a-zA-Z0-9])*){1,39}" name="actionName" data-toggle="tooltip" title=node.name classBinding="node.errors:error:editable" class="editable" value=node.name placeholder="Action Name"}}
+      </div>
+    </div>
+    <div class="node_actions node_left">
+      <i class="fa fa-code-fork" title="Add condition" {{action "showAddBranch"}}></i>
+      <i class="fa fa-cog node_properties" title="Edit" {{action "openEditor"}}></i>
+      <i class="fa fa-trash-o" title="Delete" {{action "deleteNode"}}></i>
+    </div>
+  {{else if (eq node.type 'fork')}}
+    <div class="node_actions node_left forkAction">
+      <i class="fa fa-code-fork" title="Add Branch" {{action "addBranch"}}></i>
+      <i class="fa fa-trash-o" title="Delete" {{action "deleteNode"}}></i>
+    </div>
+    <div class="fork_node_data">
+      {{input required pattern="([a-zA-Z_]([\-_a-zA-Z0-9])*){1,39}" name="actionName" data-toggle="tooltip" title=node.name classBinding="node.errors:error:editable" class="editable" value=node.name placeholder="Action Name"}}
+    </div>
+  {{else if (eq node.type 'action')}}
+    <div class="node_actions node_left">
+      <i class="fa fa-cog node_properties" title="Edit" {{action "openEditor"}}></i>
+      <i class="fa fa-trash-o" title="Delete" {{action "deleteNode"}}></i>
+    </div>
+    <div class="action_node_data">
+      <i class="fa fa-{{icon}}"></i>
+      {{input required pattern="([a-zA-Z_]([\-_a-zA-Z0-9])*){1,39}" name="actionName" data-toggle="tooltip" title=node.name classBinding="node.errors:error:editable" class="editable" value=node.name placeholder="Action Name"}}
+    </div>
+
+  {{/if}}
+</div>
+{{decision-add-branch node=node registerAddBranchAction="registerAddBranchAction" addDecisionBranch="addDecisionBranch"}}
+</div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-parameters.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-parameters.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-parameters.hbs
new file mode 100644
index 0000000..769db30
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-parameters.hbs
@@ -0,0 +1,43 @@
+{{!
+* 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="workflow_parameters_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">Workflow Parameters</h4>
+      </div>
+      <div class="modal-body">
+
+      <div class=" panel panel-default">
+        <div class="panel-heading">Configuration</div>
+        <div class="panel-body handlerPanel">
+  {{#field-error error=errors.parameters}}{{/field-error}} 
+		  <form class="form-horizontal" id="action_properties">
+          	{{#name-value-config configuration=parameters.configuration register="register"}}{{/name-value-config}}
+          </form>	
+        </div>
+      </div>
+      </div>
+      <div class="modal-footer">
+        <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+        <button type="button" class="btn btn-primary" {{action "saveParameters"}}>Save</button>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-sla.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-sla.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-sla.hbs
new file mode 100644
index 0000000..800ca85
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/components/workflow-sla.hbs
@@ -0,0 +1,36 @@
+{{!
+* 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="workflow_sla_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">Workflow SLA</h4>
+      </div>
+      <div class="modal-body">
+        <form class="form-horizontal" id="action_properties">
+          {{#sla-info slaInfo=slaInfo register="register" slaEnabled=workflowSlaEnabled register="register"}}{{/sla-info}}
+        </form>
+      </div>
+      <div class="modal-footer">
+        <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+        <button type="button" class="btn btn-primary" {{action "saveWorkflowSla"}}>Save</button>
+      </div>
+    </div>
+  </div>
+</div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/connection-error.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/connection-error.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/connection-error.hbs
new file mode 100644
index 0000000..34d73ff
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/connection-error.hbs
@@ -0,0 +1,18 @@
+{{!
+* 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><span class="messageDiv label label-danger">Connection to Remote server Failed.<a href={{model}}>Retry</a></span></div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/dashboard.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/dashboard.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/dashboard.hbs
new file mode 100644
index 0000000..b580720
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/dashboard.hbs
@@ -0,0 +1,40 @@
+{{!
+* 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='loading'>
+    {{spin-spinner lines=13 length=20 width=10}}
+</div>
+<nav class="navbar navbar-default mb0">
+<div class="container-fluid">
+  <div class="navbar-header">
+    <span class="navbar-brand">Workflow Dashboard</span>
+    <div class="navbar-brand" id="create-new-button">
+      <button type="button" {{action "launchDesign"}} class="btn btn-default whiteLabel">
+          <i class="fa fa-sitemap"></i> Create Workflow
+      </button>
+      {{help-icon}}
+    </div>
+  </div>
+</div>
+</nav>
+<div id="dashboard" class="panel panel-default">
+    {{outlet 'error'}}
+    <div class="panel-body main-panel">
+      {{#search-create-new-bar onSearch="doSearch" onCreate="launchDesign" onRefresh="doRefresh" jobType=model.type filterParams=filterParams}}{{/search-create-new-bar}}
+      {{#search-table onSearch="doSearch" onAction="onJobAction" onShowJobDetails="onShowJobDetails" onBulkAction="onBulkAction" doRefresh="doRefresh" jobs=model jobType=model.type}}{{/search-table}}
+    </div>
+</div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/design.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/design.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/design.hbs
new file mode 100644
index 0000000..b020c86
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/design.hbs
@@ -0,0 +1,18 @@
+{{!
+* 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.
+}}
+{{flow-designer xmlAppPath=appPath}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/designtest.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/designtest.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/designtest.hbs
new file mode 100644
index 0000000..3c8871d
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/designtest.hbs
@@ -0,0 +1,49 @@
+{{!
+* 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>
+  <button type="button" {{action "showChart"}}>show graph</button>
+
+  <div id="a" class="node nodecontainer" style="top:100px;left:10px">
+    <div class="node-item action-node">
+    <div class="node_actions node_left">
+      <i class="fa fa-trash-o" data-ember-action="614"></i>
+    </div>
+    <div class="action_node_data">
+      <i class="fa fa-code"></i>
+      <input id="ember615" placeholder="Action Name" title="java" name="actionName" pattern="([a-zA-Z_]([\-_a-zA-Z0-9])*){1,39}" type="text" class="editable editable  ember-view ember-text-field">
+    </div>
+    <div class="action_node_button">
+      <i class="fa fa-2x fa-cog node_properties" data-ember-action="616"></i>
+    </div>
+  </div>
+  </div>
+  <div id="b" class="node nodecontainer" style="top:150px;left:250px;">
+    <div class="node-item action-node">
+    <div class="node_actions node_left">
+      <i class="fa fa-trash-o" data-ember-action="614"></i>
+    </div>
+    <div class="action_node_data">
+      <i class="fa fa-code"></i>
+      <input id="ember615" placeholder="Action Name" title="java" name="actionName" pattern="([a-zA-Z_]([\-_a-zA-Z0-9])*){1,39}" type="text" class="editable editable  ember-view ember-text-field">
+    </div>
+    <div class="action_node_button">
+      <i class="fa fa-2x fa-cog node_properties" data-ember-action="616"></i>
+    </div>
+  </div>
+  </div>
+</div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/error-template.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/error-template.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/error-template.hbs
new file mode 100644
index 0000000..c0f0a5b
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/error-template.hbs
@@ -0,0 +1,18 @@
+{{!
+* 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.
+}}
+<span class="messageDiv label label-danger">REST API Failed</span>

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/job.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/job.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/job.hbs
new file mode 100644
index 0000000..0a6da66
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/job.hbs
@@ -0,0 +1,18 @@
+{{!
+* 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.
+}}
+{{#job-details from=from back="back" model=model error=error currentTab=currentTab onTabChange="onTabChange" close="close" doRefresh="doRefresh" showWorkflow="showWorkflow" showCoord="showCoord"}}{{/job-details}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/templates/loading.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/templates/loading.hbs b/contrib/views/wfmanager/src/main/resources/ui/app/templates/loading.hbs
new file mode 100644
index 0000000..9f4fc79
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/templates/loading.hbs
@@ -0,0 +1,26 @@
+{{!
+* 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.
+}}
+<style type="text/css">
+.loading-container {
+    position: relative;
+    top: 200px;
+}
+</style>
+<div class='loading-container'>
+    {{spin-spinner lines=13 length=20 width=10}}
+</div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/utils/common-utils.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/utils/common-utils.js b/contrib/views/wfmanager/src/main/resources/ui/app/utils/common-utils.js
new file mode 100644
index 0000000..e575d20
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/utils/common-utils.js
@@ -0,0 +1,26 @@
+/*
+ *    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.Object.create({
+  extractSchemaVersion(xmlns){
+    return xmlns.substring(xmlns.lastIndexOf(":")+1);
+  },
+  extractSchema(xmlns){
+    return xmlns.substr(0,xmlns.lastIndexOf(":"));
+  }
+});

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/utils/constants.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/utils/constants.js b/contrib/views/wfmanager/src/main/resources/ui/app/utils/constants.js
new file mode 100644
index 0000000..d9ca912
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/utils/constants.js
@@ -0,0 +1,47 @@
+/*
+ *    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.Object.create({
+  globalSetting:{
+    useJoinNodeForDecision:false,
+    useAdditionalPlaceholderFlowForDecision:true,
+    defaultTransitionColor:"#005c99",
+    errorTransitionColor:"#b30000"
+  },
+  defaultKillNodeName:"kill",
+  showErrorTransitions:false,
+  generatedByCdata: "Generated by Worflow Designer",
+  rmDefaultValue: "${resourceManager}",
+  actions:{
+    hiveAction:{name : "hive",supportsSchema : true, currentVersion:''},
+    hive2Action:{name : "hive2",supportsSchema : true, currentVersion:''},
+    javaAction:{name : "java",supportsSchema : false, currentVersion:''},
+    pigAction:{name : "pig",supportsSchema : true, currentVersion:''},
+    sqoopAction:{name : "sqoop",supportsSchema : true, currentVersion:''},
+    shellAction:{name : "shell",supportsSchema : true, currentVersion:''},
+    sparkAction:{name : "spark",supportsSchema : true, currentVersion:''},
+    mapReduceAction:{name : "map-reduce",supportsSchema : false, currentVersion:''},
+    subWorkflowAction:{name : "sub-workflow",supportsSchema : false, currentVersion:''},
+    distcpAction:{name : "distcp",supportsSchema : true, currentVersion:''},
+    sshAction:{name : "ssh",supportsSchema : false, currentVersion:''},
+    emailAction:{name : "email",supportsSchema : true, currentVersion:''}
+  },
+  sparkMasterList :Ember.A([{value:'yarn-cluster',displayName:'Yarn Cluster'},
+                            {value:'yarn-client',displayName:'Yarn Client'},
+                            {value:'local',displayName:'Local'}])
+});

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/app/utils/hdfsviewer.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/app/utils/hdfsviewer.js b/contrib/views/wfmanager/src/main/resources/ui/app/utils/hdfsviewer.js
new file mode 100644
index 0000000..080409b
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/app/utils/hdfsviewer.js
@@ -0,0 +1,29 @@
+/*
+ *    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';
+import ViewerConfig from 'hdfs-directory-viewer/utils/viewer-config';
+export default ViewerConfig.extend({
+  showOnlyDirectories: false,
+
+  expandIcon: 'fa fa-chevron-right',
+  collapseIcon: 'fa fa-chevron-down',
+
+  listDirectoryUrl(pathParams) {
+    return   Ember.ENV.FILE_API_URL+`/fileops/listdir?${pathParams}`;
+  }
+});

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/bower.json
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/bower.json b/contrib/views/wfmanager/src/main/resources/ui/bower.json
new file mode 100644
index 0000000..cbab954
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/bower.json
@@ -0,0 +1,27 @@
+{
+  "name": "oozie-designer",
+  "dependencies": {
+    "ember": "~2.3.1",
+    "ember-cli-shims": "0.1.0",
+    "ember-cli-test-loader": "0.2.2",
+    "ember-qunit-notifications": "0.1.0",
+    "bootstrap": "~3.3.6",
+    "font-awesome": "fontawesome#^4.5.0",
+    "jsPlumb": "2.0.7",
+    "jquery-ui": "^1.11.4",
+    "dagre": "^0.7.4",
+    "x2js": "^1.2.0",
+    "form2js": "*",
+    "moment": "^2.11.2",
+    "handlebars": "^4.0.5",
+    "spin.js": "^2.3.2",
+    "typeahead.js": "^0.11.1",
+    "bootstrap-tagsinput": "^0.8.0",
+    "eonasdan-bootstrap-datetimepicker": "~4.17.37",
+    "code-prettify": "*",
+    "abdmob/x2js": "~1.2.0",
+    "bootstrap-treeview": "~1.2.0",
+    "datatables": "~1.10.11",
+    "vkBeautify": "https://github.com/vkiryukhin/vkBeautify.git"
+  }
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/config/environment.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/config/environment.js b/contrib/views/wfmanager/src/main/resources/ui/config/environment.js
new file mode 100644
index 0000000..3e6d865
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/config/environment.js
@@ -0,0 +1,74 @@
+/*
+ *    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.
+ */
+
+/* jshint node: true */
+
+module.exports = function(environment) {
+    var ENV = {
+        modulePrefix: 'oozie-designer',
+        environment: environment,
+        baseURL: '/',
+        locationType: 'hash',
+        EmberENV: {
+            FEATURES: {
+                // Here you can enable experimental features on an ember canary build
+                // e.g. 'with-controller': true
+            },
+            API_URL: "http://localhost:11002/oozie",
+            PAGE_SIZE: 10
+        },
+
+        contentSecurityPolicy: {
+            'default-src': "'none'",
+            'font-src': "'self'",
+            'img-src': "'self'",
+            'media-src': "'self'",
+            'style-src': "'self' 'unsafe-inline'"
+        },
+
+        APP: {
+            // Here you can pass flags/options to your application instance
+            // when it is created
+        }
+    };
+
+    if (environment === 'development') {
+        ENV.APP.LOG_RESOLVER = true;
+        ENV.APP.LOG_ACTIVE_GENERATION = true;
+        ENV.APP.LOG_TRANSITIONS = true;
+        ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
+        ENV.APP.LOG_VIEW_LOOKUPS = true;
+    }
+
+    if (environment === 'test') {
+        // Testem prefers this...
+        ENV.baseURL = '/';
+        ENV.locationType = 'none';
+
+        // keep test console output quieter
+        ENV.APP.LOG_ACTIVE_GENERATION = false;
+        ENV.APP.LOG_VIEW_LOOKUPS = false;
+
+        ENV.APP.rootElement = '#ember-testing';
+    }
+
+    if (environment === 'production') {
+
+    }
+
+    return ENV;
+};

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/ember-cli-build.js
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/ember-cli-build.js b/contrib/views/wfmanager/src/main/resources/ui/ember-cli-build.js
new file mode 100644
index 0000000..063c332
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/ember-cli-build.js
@@ -0,0 +1,112 @@
+/*
+ *    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.
+ */
+
+/*jshint node:true*/
+/* global require, module */
+var EmberApp = require('ember-cli/lib/broccoli/ember-app');
+
+module.exports = function(defaults) {
+    var app = new EmberApp(defaults, {
+        // Add options here
+    });
+
+    // Use `app.import` to add additional libraries to the generated
+    // output files.
+    //
+    // If you need to use different assets in different
+    // environments, specify an object as the first parameter. That
+    // object's keys should be the environment name and the values
+    // should be the asset to use in that environment.
+    //
+    // If the library that you are including contains AMD or ES6
+    // modules that you would like to import into your application
+    // please specify an object with the list of modules as keys
+    // along with the exports of each module as its value.
+
+    app.import('bower_components/bootstrap/dist/css/bootstrap.css');
+    app.import('bower_components/bootstrap/dist/js/bootstrap.js');
+
+    app.import('bower_components/jsPlumb/dist/js/jsPlumb-2.0.7.js');
+
+    app.import('bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff', {
+        destDir: 'fonts'
+    });
+    app.import('bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2', {
+        destDir: 'fonts'
+    });
+
+
+    app.import('bower_components/font-awesome/css/font-awesome.min.css');
+    app.import('bower_components/font-awesome/fonts/FontAwesome.otf', {
+        destDir: 'fonts'
+    });
+    app.import('bower_components/font-awesome/fonts/fontawesome-webfont.eot', {
+        destDir: 'fonts'
+    });
+    app.import('bower_components/font-awesome/fonts/fontawesome-webfont.svg', {
+        destDir: 'fonts'
+    });
+    app.import('bower_components/font-awesome/fonts/fontawesome-webfont.ttf', {
+        destDir: 'fonts'
+    });
+    app.import('bower_components/font-awesome/fonts/fontawesome-webfont.woff', {
+        destDir: 'fonts'
+    });
+    app.import('bower_components/font-awesome/fonts/fontawesome-webfont.woff2', {
+        destDir: 'fonts'
+    });
+
+    app.import('bower_components/x2js/xml2json.js');
+    app.import('bower_components/form2js/src/form2js.js');
+    app.import('bower_components/jquery-ui/jquery-ui.js');
+    app.import('bower_components/lodash/lodash.js');
+
+    app.import('bower_components/moment/moment.js');
+
+    app.import('bower_components/handlebars/handlebars.js');
+
+    app.import('bower_components/graphlib/dist/graphlib.core.js');
+    app.import('bower_components/dagre/dist/dagre.core.js');
+
+    //Datatable
+
+    app.import('bower_components/datatables/media/js/jquery.dataTables.js');
+    app.import('bower_components/datatables/media/js/dataTables.bootstrap4.js');
+    app.import('bower_components/datatables/media/css/dataTables.bootstrap4.css');
+
+    //Typeahead
+    app.import('bower_components/typeahead.js/dist/typeahead.bundle.js');
+
+    //Bootstrap Tags input
+    app.import('bower_components/bootstrap-tagsinput/src/bootstrap-tagsinput.css');
+    app.import('bower_components/bootstrap-tagsinput/src/bootstrap-tagsinput.js');
+
+    //DateTimePicker
+    app.import('bower_components/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js');
+    app.import('bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css');
+
+    //Code prettify
+    app.import('bower_components/code-prettify/src/run_prettify.js')
+
+    //x2js
+    app.import('bower_components/abdmob/x2js/xml2json.min.js')
+
+    //vkBeautify
+    app.import('bower_components/vkBeautify/vkbeautify.js')
+
+    return app.toTree();
+};

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/externaladdons/hdfs-directory-viewer/.bowerrc
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/externaladdons/hdfs-directory-viewer/.bowerrc b/contrib/views/wfmanager/src/main/resources/ui/externaladdons/hdfs-directory-viewer/.bowerrc
new file mode 100644
index 0000000..959e169
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/externaladdons/hdfs-directory-viewer/.bowerrc
@@ -0,0 +1,4 @@
+{
+  "directory": "bower_components",
+  "analytics": false
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/externaladdons/hdfs-directory-viewer/.editorconfig
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/externaladdons/hdfs-directory-viewer/.editorconfig b/contrib/views/wfmanager/src/main/resources/ui/externaladdons/hdfs-directory-viewer/.editorconfig
new file mode 100644
index 0000000..47c5438
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/externaladdons/hdfs-directory-viewer/.editorconfig
@@ -0,0 +1,34 @@
+# EditorConfig helps developers define and maintain consistent
+# coding styles between different editors and IDEs
+# editorconfig.org
+
+root = true
+
+
+[*]
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+indent_style = space
+indent_size = 2
+
+[*.js]
+indent_style = space
+indent_size = 2
+
+[*.hbs]
+insert_final_newline = false
+indent_style = space
+indent_size = 2
+
+[*.css]
+indent_style = space
+indent_size = 2
+
+[*.html]
+indent_style = space
+indent_size = 2
+
+[*.{diff,md}]
+trim_trailing_whitespace = false

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/externaladdons/hdfs-directory-viewer/.ember-cli
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/externaladdons/hdfs-directory-viewer/.ember-cli b/contrib/views/wfmanager/src/main/resources/ui/externaladdons/hdfs-directory-viewer/.ember-cli
new file mode 100644
index 0000000..5a339b9
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/externaladdons/hdfs-directory-viewer/.ember-cli
@@ -0,0 +1,27 @@
+/**
+ * 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.
+ */
+
+{
+  /**
+    Ember CLI sends analytics information by default. The data is completely
+    anonymous, but there are times when you might want to disable this behavior.
+
+    Setting `disableAnalytics` to true will prevent any data from being sent.
+  */
+  "disableAnalytics": false
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/f66b4c0b/contrib/views/wfmanager/src/main/resources/ui/externaladdons/hdfs-directory-viewer/.gitignore
----------------------------------------------------------------------
diff --git a/contrib/views/wfmanager/src/main/resources/ui/externaladdons/hdfs-directory-viewer/.gitignore b/contrib/views/wfmanager/src/main/resources/ui/externaladdons/hdfs-directory-viewer/.gitignore
new file mode 100644
index 0000000..86fceae
--- /dev/null
+++ b/contrib/views/wfmanager/src/main/resources/ui/externaladdons/hdfs-directory-viewer/.gitignore
@@ -0,0 +1,17 @@
+# See http://help.github.com/ignore-files/ for more about ignoring files.
+
+# compiled output
+/dist
+/tmp
+
+# dependencies
+/node_modules
+/bower_components
+
+# misc
+/.sass-cache
+/connect.lock
+/coverage/*
+/libpeerconnection.log
+npm-debug.log
+testem.log


Mime
View raw message