You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@falcon.apache.org by sr...@apache.org on 2015/04/01 13:10:41 UTC

[14/21] falcon git commit: FALCON-790 Falcon UI to enable entity/process/feed edits and management. Contributed by Armando Reyna/Kenneth Ho

http://git-wip-us.apache.org/repos/asf/falcon/blob/c4df0a5e/falcon-ui/app/html/directives/serverMessagesDv.html
----------------------------------------------------------------------
diff --git a/falcon-ui/app/html/directives/serverMessagesDv.html b/falcon-ui/app/html/directives/serverMessagesDv.html
new file mode 100644
index 0000000..df4e20c
--- /dev/null
+++ b/falcon-ui/app/html/directives/serverMessagesDv.html
@@ -0,0 +1,31 @@
+<!--
+/**
+ * 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="col-xs-24 messages-to-show" ng-show="server.responses.display">
+    
+    <div ng-repeat="message in server.responses.queue" class="alert repeat-animation" 
+      ng-class="{'bg-success': message.success, 'bg-danger': !message.success}">
+      
+      <span ng-class="{'text-success': message.success, 'text-danger': !message.success}">{{ message.status }}</span> 
+      {{ message.message }} 
+      <div class="entypo cross" ng-class="{'text-success': message.success, 'text-danger': !message.success}" ng-click="closeAlert($index)"></div>
+      
+    </div> 
+</div>
+

http://git-wip-us.apache.org/repos/asf/falcon/blob/c4df0a5e/falcon-ui/app/html/directives/timeZoneSelectDv.html
----------------------------------------------------------------------
diff --git a/falcon-ui/app/html/directives/timeZoneSelectDv.html b/falcon-ui/app/html/directives/timeZoneSelectDv.html
new file mode 100644
index 0000000..110c2ee
--- /dev/null
+++ b/falcon-ui/app/html/directives/timeZoneSelectDv.html
@@ -0,0 +1,53 @@
+<!--
+/**
+ * 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.
+ */
+-->
+<select class="padding0 TZSelect form-control" ng-model="ngModel">
+  <option value="" disabled style='display:none;'>-Select timezone-</option>
+  <option value="GMT-12:00">(GMT -12:00) Eniwetok, Kwajalein</option>
+  <option value="GMT-11:00">(GMT -11:00) Midway Island, Samoa</option>
+  <option value="GMT-10:00">(GMT -10:00) Hawaii</option>
+  <option value="GMT-09:00">(GMT -9:00) Alaska</option>
+  <option value="GMT-08:00">(GMT -8:00) Pacific Time (US &amp; Canada)</option>
+  <option value="GMT-07:00">(GMT -7:00) Mountain Time (US &amp; Canada)</option>
+  <option value="GMT-06:00">(GMT -6:00) Central Time (US &amp; Canada), Mexico City</option>
+  <option value="GMT-05:00">(GMT -5:00) Eastern Time (US &amp; Canada), Bogota, Lima</option>
+  <option value="GMT-04:00">(GMT -4:00) Atlantic Time (Canada), Caracas, La Paz</option>
+  <option value="GMT-03:50">(GMT -3:30) Newfoundland</option>
+  <option value="GMT-03:00">(GMT -3:00) Brazil, Buenos Aires, Georgetown</option>
+  <option value="GMT-02:00">(GMT -2:00) Mid-Atlantic</option>
+  <option value="GMT-01:00">(GMT -1:00 hour) Azores, Cape Verde Islands</option>
+  <option value="GMT+00:00">(GMT) Western Europe Time, London, Lisbon, Casablanca</option>
+  <option value="GMT+01:00">(GMT +1:00 hour) Brussels, Copenhagen, Madrid, Paris</option>
+  <option value="GMT+02:00">(GMT +2:00) Kaliningrad, South Africa</option>
+  <option value="GMT+03:00">(GMT +3:00) Baghdad, Riyadh, Moscow, St. Petersburg</option>
+  <option value="GMT+03:50">(GMT +3:30) Tehran</option>
+  <option value="GMT+04:00">(GMT +4:00) Abu Dhabi, Muscat, Baku, Tbilisi</option>
+  <option value="GMT+04:50">(GMT +4:30) Kabul</option>
+  <option value="GMT+05:00">(GMT +5:00) Ekaterinburg, Islamabad, Karachi, Tashkent</option>
+  <option value="GMT+05:50">(GMT +5:30) Bombay, Calcutta, Madras, New Delhi</option>
+  <option value="GMT+05:75">(GMT +5:45) Kathmandu</option>
+  <option value="GMT+06:00">(GMT +6:00) Almaty, Dhaka, Colombo</option>
+  <option value="GMT+07:00">(GMT +7:00) Bangkok, Hanoi, Jakarta</option>
+  <option value="GMT+08:00">(GMT +8:00) Beijing, Perth, Singapore, Hong Kong</option>
+  <option value="GMT+09:00">(GMT +9:00) Tokyo, Seoul, Osaka, Sapporo, Yakutsk</option>
+  <option value="GMT+09:50">(GMT +9:30) Adelaide, Darwin</option>
+  <option value="GMT+10:00">(GMT +10:00) Eastern Australia, Guam, Vladivostok</option>
+  <option value="GMT+11:00">(GMT +11:00) Magadan, Solomon Islands, New Caledonia</option>
+  <option value="GMT+12:00">(GMT +12:00) Auckland, Wellington, Fiji, Kamchatka</option>
+</select>

http://git-wip-us.apache.org/repos/asf/falcon/blob/c4df0a5e/falcon-ui/app/html/entityDetailsTpl.html
----------------------------------------------------------------------
diff --git a/falcon-ui/app/html/entityDetailsTpl.html b/falcon-ui/app/html/entityDetailsTpl.html
new file mode 100644
index 0000000..0897638
--- /dev/null
+++ b/falcon-ui/app/html/entityDetailsTpl.html
@@ -0,0 +1,34 @@
+<!--
+/**
+ * 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="col-sm-24 detailsHeaders"> 
+  <h3>
+    <small>{{clusterEntity._name}}</small>
+    {{ viewDock._name }}
+  </h3>
+</div>
+<div class="col-sm-23 detailsBox">
+  <h5>
+    Definition
+  </h5>
+  <div>
+    <textarea ng-model="prettyXml" rows="25" ng-disabled="true"></textarea>
+  </div>
+    
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/falcon/blob/c4df0a5e/falcon-ui/app/html/feed/feedFormClustersStepTpl.html
----------------------------------------------------------------------
diff --git a/falcon-ui/app/html/feed/feedFormClustersStepTpl.html b/falcon-ui/app/html/feed/feedFormClustersStepTpl.html
new file mode 100644
index 0000000..8d2322f
--- /dev/null
+++ b/falcon-ui/app/html/feed/feedFormClustersStepTpl.html
@@ -0,0 +1,152 @@
+<!--
+/**
+ * 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.
+ */
+-->
+<form name="feedForm">
+  <div ng-repeat="cluster in feed.clusters">
+    <div class="row">
+      <h4 class="col-sm-24">{{capitalize(cluster.type)}} Cluster </h4>
+    </div>
+
+    <div class="row detailsBox">
+      <div class="col-sm-offset-1 col-sm-22">
+
+        <div class="row">
+          <div class="col-xs-24">
+            <select ng-model="cluster.name" validation-message="{{validations.messages.cluster}}"
+                    ng-required="true" class="col-sm-24 form-control padding0">
+              <option value="" disabled selected style='display:none;'>-Select cluster-</option>
+              <option ng-repeat="clusterItem in clusterList">{{clusterItem.name}}</option>
+            </select>
+          </div>
+            
+
+          <div class="col-xs-24 feedLocationNavBox nopointer">
+            <h4 class="col-xs-7" ng-show="!feed.storage.fileSystem.active">Default Storage type</h4>
+            <h4 class="col-xs-7" ng-show="feed.storage.fileSystem.active">Storage type</h4>
+
+            <div class="col-xs-17 feedLocationNav">
+              <div class="btn btn-default pull-right" ng-class="{active: feed.storage.catalog.active}">
+                Catalog Storage
+              </div>
+              <div class="btn btn-default pull-right" ng-class="{active: feed.storage.fileSystem.active}">
+                File System
+              </div>
+              <div class="clearfix"></div>
+            </div>
+          </div>
+
+          <div class="col-xs-19">
+            <label>Location</label>
+            <label class="light">(if not defined, will use default location)</label>
+          </div>
+
+          <div class="col-xs-24"
+               ng-show="feed.storage.fileSystem.active"
+               ng-repeat="location in cluster.storage.fileSystem.locations">
+            <label class="light">{{location.type}} path</label>
+            <input type="text" class="form-control" ng-model="location.path" ng-pattern="validations.patterns.osPath" />
+          </div>
+
+          <div class="col-xs-24 mb10" ng-show="feed.storage.catalog.active">
+            <label class="light">Table uri</label>
+            <input type="text" class="form-control" ng-model="cluster.storage.catalog.catalogTable.uri" ng-pattern="validations.patterns.osPath"/>
+          </div>
+
+          <label class="col-xs-24"> Validity </label>
+
+          <div class="col-xs-12">
+           
+              <label class="light col-xs-24">Start</label>
+            
+              <div class="input-group input-group-xs">
+                <span class="input-group-addon btn btn-default entypo calendar" ng-click="openDatePicker($event, cluster.validity.start)"></span>
+                <input type="text" class="form-control" placeholder="Select start Date"
+                  datepicker-popup="{{dateFormat}}"
+                  ng-model="cluster.validity.start.date"
+                  is-open="cluster.validity.start.opened"
+                  ng-required="true">
+              </div>
+            
+          </div>
+          <div class="col-xs-12">
+            <timepicker class="timePicker" ng-model="cluster.validity.start.time" hour-step="1" minute-step="1" ></timepicker>
+          </div>
+          <div class="col-xs-12">
+           
+            <label class="light col-xs-24">End</label>
+           
+            <div class="input-group input-group-xs">
+              <span class="input-group-addon btn btn-default entypo calendar" ng-click="openDatePicker($event, cluster.validity.end)"></span>
+              <input type="text" class="form-control" placeholder="Select end Date"
+                     datepicker-popup="{{dateFormat}}"
+                     ng-model="cluster.validity.end.date"
+                     is-open="cluster.validity.end.opened"
+                     ng-required="true">
+            </div>
+          </div>
+          <div class="col-xs-12">
+            <timepicker class="timePicker" ng-model="cluster.validity.end.time" hour-step="1" minute-step="1" ></timepicker>
+          </div>
+
+
+          <label class="light col-xs-24"> Retention </label>
+
+          <div class="col-xs-24 inlineInputsGroup">
+            <input type="text" class="form-control" validation-message="{{validations.messages.number}}"
+                   ng-required="true" ng-model="cluster.retention.quantity" ng-keydown="validations.acceptOnlyNumber($event)"
+                   ng-pattern="validations.patterns.twoDigits">
+
+            <select ng-model="cluster.retention.unit"
+                    ng-required="true">
+              <option selected value="minutes">minutes</option>
+              <option value="hours">hours</option>
+              <option value="days">days</option>
+              <option value="months">months</option>
+            </select>
+          </div>
+
+          <div class="row"  ng-if="cluster.type !== 'source'">
+            <div class="btn btn-default pull-right btn-xs" ng-click="removeCluster($index)">
+              - delete
+            </div>
+          </div>
+
+        </div>
+
+      </div>
+    </div>
+  </div>
+
+  <div class="btn btn-default btn-xs" ng-click="addCluster()">
+    + add cluster
+  </div>
+  <div class="col-xs-24">
+    <div class="row feedBottomButtons">
+      <div class="btn btn-default col-xs-6" ng-click="goBack('forms.feed.location')" >
+        Previous
+      </div>
+      <div class="btn btn-default col-xs-6 pull-right" ng-click="goNext(feedForm.$invalid, 'forms.feed.summary')" >
+        Next
+      </div>
+      <u class="col-xs-3 pull-right" ui-sref="main">
+        Cancel
+      </u>
+    </div>
+  </div>
+</form>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/falcon/blob/c4df0a5e/falcon-ui/app/html/feed/feedFormGeneralStepTpl.html
----------------------------------------------------------------------
diff --git a/falcon-ui/app/html/feed/feedFormGeneralStepTpl.html b/falcon-ui/app/html/feed/feedFormGeneralStepTpl.html
new file mode 100644
index 0000000..3e2ecb9
--- /dev/null
+++ b/falcon-ui/app/html/feed/feedFormGeneralStepTpl.html
@@ -0,0 +1,121 @@
+<!--
+/**
+ * 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.
+ */
+-->
+<form name="feedForm">
+
+
+    <div class="col-sm-24">
+      <label class="light">Name</label>
+      <input type="text" class="form-control" ng-disabled="!cloningMode" ng-keydown="validations.acceptNoSpaces($event)"
+             check-name="{type:'feed', check:cloningMode}" ng-class="{fakeInvalid:!validations.nameAvailable}"
+             ng-model="feed.name" ng-required="true" ng-pattern="validations.patterns.name"/>
+    </div>
+    <div class="col-sm-24">
+      <label class="light">Description</label>
+      <input type="text" class="form-control"
+        ng-model="feed.description"
+        ng-pattern="validations.patterns.freeText"/>
+    </div>
+
+    <div class="col-sm-24">
+      <label class="light">Tags</label>
+    </div>
+
+    <div class="col-sm-24">
+      <div ng-repeat="tag in feed.tags">
+        <div class="row dynamic-table-spacer">
+          <div class="col-xs-10">
+            <input type="text" class="form-control" ng-model="tag.key"
+              ng-pattern="validations.patterns.alpha" ng-required="tag.value" placeholder="key"/>
+          </div>
+          <div class="col-xs-11">
+            <input type="text" class="form-control"
+              ng-model="tag.value" ng-pattern="validations.patterns.alpha" ng-required="tag.key" placeholder="value"/>
+          </div>
+          <div class="col-xs-3">
+            <div class="btn btn-default btn-xs" ng-click="removeTag($index)" ng-if="$index>0">
+              <span class="entypo minus"></span> delete
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="col-sm-24 dynamic-table-spacer">
+      <div class="btn btn-default btn-xs" ng-click="addTag()">
+        <span class="entypo plus"></span> add tag
+      </div>
+    </div>
+
+    <div class="col-sm-24">
+      <label class="light">Groups (comma separated)</label>
+      <input type="text" class="form-control"
+        ng-pattern="validations.patterns.commaSeparated"
+        ng-model="feed.groups"/>
+    </div>
+
+    <h4 class="col-sm-24"> Access Control List </h4>
+    <div class="col-sm-8">
+      <label class="light">Owner</label>
+      <input type="text" class="form-control"
+        ng-pattern="validations.patterns.unixId"
+        ng-model="feed.ACL.owner"/>
+    </div>
+    <div class="col-sm-8">
+      <label class="light">Group</label>
+      <input type="text" class="form-control"
+       ng-pattern="validations.patterns.unixId"
+       ng-model="feed.ACL.group"/>
+    </div>
+    <div class="col-sm-8">
+      <label class="light">Permissions</label>
+      <input type="text" class="form-control"
+        ng-pattern="validations.patterns.unixPermissions"
+        ng-model="feed.ACL.permission"/>
+    </div>
+
+    <h4 class="col-sm-24">Schema</h4>
+    <div class="col-sm-12">
+      <label class="light">Location</label>
+      <input type="text" class="form-control" validation-message="{{validations.messages.location}}"
+        ng-maxlength="200"
+        ng-pattern="validations.patterns.osPath"
+        ng-model="feed.schema.location"
+        ng-required="true"/>
+    </div>
+    <div class="col-sm-12">
+      <label class="light">Provider</label>
+      <input type="text" class="form-control" validation-message="{{validations.messages.provider}}"
+        ng-pattern="validations.patterns.osPath"
+        ng-model="feed.schema.provider"
+        ng-required="true"/>
+    </div>
+  
+
+  <div class="col-xs-24">
+    <div class="feedBottomButtons row">
+      <div class="btn btn-default col-xs-6 pull-right" ng-click="goNext(feedForm.$invalid, 'forms.feed.properties')">
+        Next
+      </div>
+      <u class="col-xs-3 pull-right" ng-click="cancel()" ui-sref="main">
+        Cancel
+      </u>
+    </div>
+  </div>
+
+</form>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/falcon/blob/c4df0a5e/falcon-ui/app/html/feed/feedFormLocationStepTpl.html
----------------------------------------------------------------------
diff --git a/falcon-ui/app/html/feed/feedFormLocationStepTpl.html b/falcon-ui/app/html/feed/feedFormLocationStepTpl.html
new file mode 100644
index 0000000..7e5b6c0
--- /dev/null
+++ b/falcon-ui/app/html/feed/feedFormLocationStepTpl.html
@@ -0,0 +1,105 @@
+<!--
+/**
+ * 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.
+ */
+-->
+<form name="feedForm">
+  <div class="col-xs-24">
+  <div class="row">
+    <div class="col-xs-24 feedLocationNavBox">
+      <h4 class="col-xs-10" ng-show="feed.storage.fileSystem.active">Default Storage type </h4>
+      <h4 class="col-xs-10" ng-show="feed.storage.catalog.active"> Storage type </h4>
+
+      <div class="col-xs-14 feedLocationNav">
+        <div class="btn btn-default pull-right"
+          ng-class="{active: feed.storage.catalog.active}"
+          ng-click="toggleStorage()">
+          Catalog Storage
+        </div>
+        <div class="btn btn-default pull-right"
+          ng-class="{active: feed.storage.fileSystem.active}"
+          ng-click="toggleStorage()">
+          File System
+        </div>
+        
+      </div>
+      <div class="clearfix"></div>
+    </div>
+    <h4 class="col-xs-12">Default Location</h4>
+    <div class="col-xs-24">
+      <div ng-show="feed.storage.fileSystem.active"
+        ng-repeat="location in feed.storage.fileSystem.locations" class="row">
+  
+        <div class="col-xs-8">
+          <label class="light">{{capitalize(location.type)}} path</label>
+        </div>
+        <div class="pull-right" ng-show="location.focused">
+          <label class="light">add</label>
+          <label ng-repeat="timeVariable in ['${YEAR}', '${MONTH}', '${DAY} ', '${HOUR}']"
+                 ng-click="appendVariable(timeVariable, location, 'path')">
+            {{timeVariable}}
+          </label>
+        </div>
+        <div class="clearfix hidden-md"></div>
+        <div class="col-xs-24">
+          <input type="text" class="form-control" validation-message="{{validations.messages.path}}"
+            ng-required="true"
+            ng-model="location.path"
+            ng-pattern="validations.patterns.osPath"
+            ng-focus="location.focused = true"/>
+        </div>
+      </div>
+    </div>
+    
+
+    <div ng-show="feed.storage.catalog.active">
+      <div class="col-xs-8">
+        <label class="light">Table uri</label>
+      </div>
+
+      <div class="pull-right" ng-show="feed.storage.catalog.catalogTable.focused">
+        <label class="light">add</label>
+        <label ng-repeat="timeVariable in ['${YEAR}', '${MONTH}', '${DAY} ', '${HOUR}']"
+               ng-click="appendVariable(timeVariable, feed.storage.catalog.catalogTable, 'uri')">
+          {{timeVariable}}
+        </label>
+      </div>
+
+      <div class="col-xs-24">
+        <input type="text" class="form-control"
+          ng-model="feed.storage.catalog.catalogTable.uri"
+          ng-pattern="validations.patterns.tableUri"
+          ng-required="feed.storage.catalog.active" validation-message="{{validations.messages.path}}"
+          ng-focus="feed.storage.catalog.catalogTable.focused = true"/>
+      </div>
+
+    </div>
+  </div>
+
+  <div class="row feedBottomButtons">
+    <div class="btn btn-default col-xs-6" ng-click="goBack('forms.feed.properties')" >
+      Previous
+    </div>
+    <div class="btn btn-default col-xs-6 pull-right" ng-click="goNext(feedForm.$invalid, 'forms.feed.clusters')" >
+      Next
+    </div>
+    <u class="col-xs-3 pull-right" ui-sref="main">
+      Cancel
+    </u>
+  </div>
+</div>
+</form>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/falcon/blob/c4df0a5e/falcon-ui/app/html/feed/feedFormPropertiesStepTpl.html
----------------------------------------------------------------------
diff --git a/falcon-ui/app/html/feed/feedFormPropertiesStepTpl.html b/falcon-ui/app/html/feed/feedFormPropertiesStepTpl.html
new file mode 100644
index 0000000..007fd91
--- /dev/null
+++ b/falcon-ui/app/html/feed/feedFormPropertiesStepTpl.html
@@ -0,0 +1,160 @@
+<!--
+/**
+ * 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.
+ */
+-->
+<form name="feedForm">
+
+    <h5 class="col-xs-24 mb10">Timing</h5>
+
+    <div class="col-xs-9 inlineInputsGroup">   
+      <div class="light">Frequency</div>
+      <span>Every</span>
+      <input type="text" class="form-control" validation-message="{{validations.messages.number}}"
+             ng-model="feed.frequency.quantity"
+             ng-required="true"
+             ng-keydown="validations.acceptOnlyNumber($event)"
+             ng-pattern="validations.patterns.twoDigits"/>
+
+      <select       
+        ng-model="feed.frequency.unit"
+        ng-required="true">
+        <option selected value="minutes">minutes</option>
+        <option value="hours">hours</option>
+        <option value="days">days</option>
+        <option value="months">months</option>
+      </select>
+    </div>
+
+    <div class="col-xs-9 inlineInputsGroup">   
+      <div class="light"><input type="checkbox" ng-model="feed.lateArrival.active" />Late Arrival</div>
+      <span>Up to</span>
+  
+      <input type="text" class="form-control" ng-keydown="validations.acceptOnlyNumber($event)"
+        ng-model="feed.lateArrival.cutOff.quantity"
+        ng-disabled="!feed.lateArrival.active"
+        ng-pattern="validations.patterns.twoDigits"
+        ng-required="feed.lateArrival.active"/>
+  
+      <select
+        ng-model="feed.lateArrival.cutOff.unit" ng-disabled="!feed.lateArrival.active"
+        ng-required="feed.lateArrival.active">
+        <option selected value="minutes">minutes</option>
+        <option value="hours">hours</option>
+        <option value="days">days</option>
+        <option value="months">months</option>
+      </select>
+    </div>
+    <div class="col-xs-6 inlineInputsGroup">
+      <div class="light">Availability Flag</div>
+      <input type="text" id="availInput" class="form-control"
+        ng-model="feed.availabilityFlag"
+        ng-pattern="validations.patterns.alpha">
+    </div>
+  </div>
+
+  <div class="col-xs-24">
+    <div class="row mt20">
+      <label class="col-xs-5 light">Timezone</label> 
+      <time-zone-select ng-model="feed.timezone" class="col-xs-19"></time-zone-select>
+  
+      <h5 class="col-xs-24">Properties</h5>
+  
+      <div class="col-xs-5">
+        <label class="light">Name</label>
+      </div>
+      <div class="col-xs-19">
+        <label class="light">Value</label>
+      </div>
+      <div class="col-xs-24" id="feedPropertiesBox">
+        <div ng-repeat="property in feed.properties" class="row">
+         
+          <label class="col-xs-5">{{property.key}}</label>
+        
+          <div class="col-xs-19" ng-if="property.key !== 'timeout' && property.key !== 'jobPriority'">
+            <input type="text" class="form-control"
+              ng-model="property.value"
+              ng-patter="validations.patterns.alpha"/>
+          </div>
+          <div class="col-xs-19 inlineInputsGroup" ng-if="property.key === 'timeout'">
+            At
+            <input type="text" class="form-control" ng-keydown="validations.acceptOnlyNumber($event)"
+                   ng-model="property.value.quantity"
+                   ng-pattern="validations.patterns.twoDigits"/>
+            <select
+              ng-model="property.value.unit">
+              <option selected value="minutes">minutes</option>
+              <option value="hours">hours</option>
+              <option value="days">days</option>
+              <option value="months">months</option>
+            </select>
+          </div>
+          <div class="col-xs-19" ng-if="property.key === 'jobPriority'">
+            <select ng-model="property.value" class="form-control padding0">
+              <option value="" disabled selected style='display:none;'>-Select job-</option>
+              <option value="VERY_HIGH">Very high</option>
+              <option value="HIGH">High</option>
+              <option value="NORMAL">Normal</option>
+              <option value="LOW">Low</option>
+              <option value="VERY_LOW">Very Low</option>
+            </select>
+          </div>
+        </div>
+      </div>
+      <div class="col-xs-24">
+        <div ng-repeat="property in feed.customProperties" class="row">
+          <div class="col-xs-5 mt10">
+            <input type="text" class="form-control" placeholder="key"
+              ng-model="property.key"
+              ng-pattern="validations.patterns.alpha"
+              ng-required="property.value"/>
+          </div>
+    
+          <div class="col-xs-15 mt10">
+            <input type="text" class="form-control" placeholder="value"
+              ng-model="property.value"
+              ng-pattern="validations.patterns.alpha"
+              ng-required="property.key"/>
+          </div>
+          <div class="col-xs-4 mt10"> 
+            <div class="btn btn-default btn-xs mt1" ng-click="removeCustomProperty($index)" ng-if="$index>0">
+              <span class="entypo minus"></span> delete
+            </div>   
+          </div>
+        </div>
+      </div>
+      <div class="col-xs-24 mt10">
+        <div class="btn btn-default btn-xs" ng-click="addCustomProperty()">
+          <span class="entypo plus"></span> add property
+        </div>
+      </div>
+    </div>
+  </div>
+  <div class="col-xs-24">
+    <div class="feedBottomButtons row">
+      <div class="btn btn-default col-xs-6" ng-click="goBack('forms.feed.general')">
+        Previous
+      </div>
+      <div class="btn btn-default col-xs-6 pull-right" ng-click="goNext(feedForm.$invalid, 'forms.feed.location')">
+        Next
+      </div>
+      <u class="col-xs-3 pull-right" ui-sref="main">
+        Cancel
+      </u>
+    </div>
+  </div>
+</form>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/falcon/blob/c4df0a5e/falcon-ui/app/html/feed/feedFormSummaryStepTpl.html
----------------------------------------------------------------------
diff --git a/falcon-ui/app/html/feed/feedFormSummaryStepTpl.html b/falcon-ui/app/html/feed/feedFormSummaryStepTpl.html
new file mode 100644
index 0000000..f67fa91
--- /dev/null
+++ b/falcon-ui/app/html/feed/feedFormSummaryStepTpl.html
@@ -0,0 +1,159 @@
+<!--
+/**
+ * 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="row">
+  <h4 class="col-sm-24">
+    General
+  </h4>
+  <div class="col-sm-12">
+    <label>Name</label>: {{feed.name}}
+  </div>
+  <div class="col-sm-12">
+    <label>Description</label>: {{optional(feed.description)}}
+  </div>
+
+  <h4 class="col-sm-24">
+    Tags
+  </h4>
+  <div class="col-sm-24">
+    <div ng-repeat="tag in feed.tags | filter:{key: '!!'}">
+      {{tag.key}} = {{tag.value}}
+    </div>
+    <div ng-show="!hasTags()">No tags selected</div>
+  </div>
+
+  <h4 class="col-sm-24">
+    Groups
+  </h4>
+  <div class="col-sm-24">
+    {{feed.groups}}
+    <div ng-show="!feed.groups">No groups selected</div>
+  </div>
+
+  <h4 class="col-sm-24">
+    Access Control List
+  </h4>
+  <div class="col-sm-8">
+    <label>Owner</label>: {{optional(feed.ACL.owner)}}
+  </div>
+  <div class="col-sm-8">
+    <label>Group</label>: {{optional(feed.ACL.group)}}
+  </div>
+  <div class="col-sm-8">
+    <label>Permissions</label>: {{optional(feed.ACL.permission)}}
+  </div>
+
+  <h4 class="col-sm-24">
+    Schema
+  </h4>
+
+  <div class="col-sm-12">
+    <label>Location</label>: {{optional(feed.schema.location)}}
+  </div>
+  <div class="col-sm-12">
+    <label>Provider</label>: {{optional(feed.schema.provider)}}
+  </div>
+
+  <h4 class="col-sm-24">
+    Properties
+  </h4>
+
+  <div class="col-sm-8">
+    <label>Frequency</label>: <frequency value="feed.frequency" prefix="Every"/>
+  </div>
+  <div class="col-sm-8">
+    <label>Late Arrival</label>: <frequency value="feed.lateArrival.cutOff" prefix="Up to"/>
+  </div>
+  <div class="col-sm-8">
+    <label>Availability Flag</label>: {{optional(feed.availabilityFlag)}}
+  </div>
+
+  <div class="col-sm-8" ng-repeat="property in feed.properties">
+    <label>{{property.key}}</label>:
+    <span ng-if="property.key !== 'timeout'">{{optional(property.value)}}</span>
+    <frequency ng-if="property.key === 'timeout'" value="property.value" prefix="at"/>
+  </div>
+
+  <div class="col-sm-8" ng-repeat="property in feed.customProperties | filter: {key: '!!'}">
+    <label>{{property.key}}</label>: {{property.value}}
+  </div>
+
+  <h4 class="col-sm-8" >
+    Default Storage Type:
+  </h4>
+
+  <div class="col-sm-8 light" ng-show="feed.storage.fileSystem.active">File System</div>
+  <div class="col-sm-8 light" ng-show="feed.storage.catalog.active">Catalog Storage</div>
+
+  <h4 class="col-sm-24" >Default Location:</h4>
+
+  <div ng-repeat="location in feed.storage.fileSystem.locations" ng-show="feed.storage.fileSystem.active">
+    <label class="col-sm-24" >{{capitalize(location.type)}}</label>
+    <div class="col-sm-24">{{optional(location.path)}}</div>
+  </div>
+
+  <div ng-show="feed.storage.catalog.active">
+    <label class="col-sm-24" >Table uri</label>
+    <div class="col-sm-24">{{optional(feed.storage.catalog.catalogTable.uri)}}</div>
+  </div>
+
+  <div ng-repeat="cluster in feed.clusters" >
+    <h4 class="col-sm-24" >{{capitalize(cluster.type)}} Cluster</h4>
+
+    <div class="col-sm-12">
+      <label>Name</label>: {{cluster.name}}
+    </div>
+    <div class="clearfix hidden-md"></div>
+
+    <div class="col-sm-12">
+      <label>Start</label>: {{cluster.validity.start.date}} {{cluster.validity.start.time}}
+    </div>
+    <div class="col-sm-12">
+      <label>End</label>: {{cluster.validity.end.date}} {{cluster.validity.end.time}}
+    </div>
+    <div class="col-sm-24">
+      <label>Timezone</label>: {{feed.timezone}}
+    </div>
+    <div class="col-sm-24">
+      <label>Retention</label>: <frequency value="cluster.retention" prefix="Archive in"/>
+    </div>
+  </div>
+  <div class="clearfix hidden-md"></div>
+  <h4 class="col-sm-24" >Location</h4>
+  <div ng-repeat="location in cluster.storage.fileSystem.locations" ng-show="cluster.storage.fileSystem">
+    <label class="col-sm-24" >{{capitalize(location.type)}}</label>
+    <div class="col-sm-24">{{optional(location.path)}}</div>
+  </div>
+  <div ng-show="cluster.storage.catalog.active">
+    <label class="col-sm-24" >Table uri</label>
+    <div class="col-sm-24">{{optional(cluster.storage.catalog.catalogTable.uri)}}</div>
+  </div>
+</div>
+
+<div class="feedBottomButtons row">
+  <div class="btn btn-default col-xs-6" ng-click="goBack('forms.feed.clusters')" >
+    Previous
+  </div>
+  <div class="btn btn-default col-xs-6 pull-right" ng-click="saveEntity()">
+    Save
+  </div>
+  <u class="col-xs-3 pull-right" ui-sref="main">
+    Cancel
+  </u>
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/falcon/blob/c4df0a5e/falcon-ui/app/html/feed/feedFormTpl.html
----------------------------------------------------------------------
diff --git a/falcon-ui/app/html/feed/feedFormTpl.html b/falcon-ui/app/html/feed/feedFormTpl.html
new file mode 100644
index 0000000..c05b963
--- /dev/null
+++ b/falcon-ui/app/html/feed/feedFormTpl.html
@@ -0,0 +1,97 @@
+<!--
+/**
+ * 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="col-sm-24 feedForm">
+  <div class="col-sm-22 col-sm-offset-2">
+    <div class="row">
+      <h3 class="col-sm-24">
+        New Feed
+      </h3>
+      <div class="col-sm-15 detailsBox">
+
+        <div class="feedProgressBox" ng-class="{
+          general:isActive('forms.feed.general'),
+          properties:isActive('forms.feed.properties'),
+          location:isActive('forms.feed.location'),
+          clusters:isActive('forms.feed.clusters'),
+          summary:isActive('forms.feed.summary')
+          }">
+          <div class="progressBar col-md-24">
+            <div>
+              <span>
+                <div class="fir">1<span class="entypo check"></span></div>              
+                <h6>General</h6>
+              </span>
+              <span>
+                <div class="sec">2<span class="entypo check"></span></div>
+                <h6>Properties</h6>
+              </span>
+              <span>
+                <div class="thi">3<span class="entypo check"></span></div>
+                <h6>Location</h6>
+              </span>
+              <span>
+                <div class="fou">4<span class="entypo check"></span></div>
+                <h6>Clusters</h6>
+              </span>
+              <span>
+                <div class="fif">5<span class="entypo check"></span></div>
+                <h6>Summary</h6>
+              </span>
+            </div>  
+          </div>
+        </div>
+     
+        <div class="row">
+          <div class="col-sm-offset-1 col-sm-22">
+            <fieldset ng-disabled="!editXmlDisabled">
+              <div ui-view class="formViewContainer"></div>
+            </fieldset>
+          </div>
+        </div>
+    
+      </div>
+
+      <div class="col-sm-8 detailsBox col-sm-offset-1">
+        <div class="row">
+
+          <h5 class="col-xs-13 col-xs-offset-1 noSpecial">XML Preview</h5>  
+          
+          <div class="col-xs-9">
+            <div class="btn btn-default btn-xs pull-right" ng-click="toggleEditXml()" ng-class="{'btn-warning':!editXmlDisabled}">
+              Edit XML
+            </div>
+          </div>
+
+          <div class="col-xs-24">
+            <div class="row">
+              <div class="col-sm-22 col-sm-offset-1">
+                <textarea ng-model="prettyXml" rows="35" class="form-control" ng-disabled="editXmlDisabled">
+                </textarea>
+                {{xmlEditValidationError}}
+              </div>
+            </div>
+          </div>
+          
+        </div>
+      </div>
+
+    </div>
+  </div>
+</div>

http://git-wip-us.apache.org/repos/asf/falcon/blob/c4df0a5e/falcon-ui/app/html/formsTpl.html
----------------------------------------------------------------------
diff --git a/falcon-ui/app/html/formsTpl.html b/falcon-ui/app/html/formsTpl.html
new file mode 100644
index 0000000..b8d50fb
--- /dev/null
+++ b/falcon-ui/app/html/formsTpl.html
@@ -0,0 +1,23 @@
+<!--
+/**
+ * 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="col-sm-24 formPage" ng-class="{showValidationStyle:validations.displayValidations.show}">
+  <div ui-view>
+  </div>
+</div>

http://git-wip-us.apache.org/repos/asf/falcon/blob/c4df0a5e/falcon-ui/app/html/mainTpl.html
----------------------------------------------------------------------
diff --git a/falcon-ui/app/html/mainTpl.html b/falcon-ui/app/html/mainTpl.html
new file mode 100644
index 0000000..4b0116e
--- /dev/null
+++ b/falcon-ui/app/html/mainTpl.html
@@ -0,0 +1,39 @@
+<!--
+/**
+ * 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="col-sm-24 dashboardBox"> 
+  <div class="row">   
+    <div class="col-sm-8">
+      <h3>Clusters</h3>
+      <entity-summary entities="lists.clusterList" type="cluster"></entity-summary>
+      <entities-list input="lists.clusterList" type="cluster" entity-details="entityDetails" clone="cloneEntity" remove="deleteEntity" edit="editEntity" schedule="scheduleEntity" suspend="suspendEntity" resume="resumeEntity"></entities-list>
+    </div>
+    <div class="col-sm-8">
+      <h3>Feeds</h3>
+      <entity-summary entities="lists.feedList" type="feed"></entity-summary>    
+      <entities-list input="lists.feedList" type="feed" entity-details="entityDetails" clone="cloneEntity" remove="deleteEntity" edit="editEntity" schedule="scheduleEntity" suspend="suspendEntity" resume="resumeEntity"></entities-list>
+    </div>
+    <div class="col-sm-8">
+      <h3>Processes</h3>
+      <entity-summary entities="lists.processList" type="process"></entity-summary>      
+      <entities-list input="lists.processList" entity-details="entityDetails" type="process" clone="cloneEntity" remove="deleteEntity" edit="editEntity" schedule="scheduleEntity" suspend="suspendEntity" resume="resumeEntity"></entities-list>
+    </div>
+  </div>
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/falcon/blob/c4df0a5e/falcon-ui/app/html/process/processFormClustersStepTpl.html
----------------------------------------------------------------------
diff --git a/falcon-ui/app/html/process/processFormClustersStepTpl.html b/falcon-ui/app/html/process/processFormClustersStepTpl.html
new file mode 100644
index 0000000..47886a2
--- /dev/null
+++ b/falcon-ui/app/html/process/processFormClustersStepTpl.html
@@ -0,0 +1,96 @@
+<!--
+/**
+ * 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.
+ */
+-->
+<form name="processForm" class="mt10">
+  <div class="col-sm-offset-1 col-sm-22">
+    <div ng-repeat="cluster in process.clusters" class="row">
+      <div class="col-xs-24 detailsBox processCluster">       
+          
+        <h5>Cluster</h5>
+        <div class="row">
+          <div class="col-xs-24">
+            <label class="light">Name</label>
+            <select ng-model="cluster.name" ng-required="true" class="form-control padding0" validation-message="{{validations.messages.cluster}}">
+              <option value="" disabled selected style='display:none;'>-Select cluster-</option>
+              <option ng-repeat="clusterItem in clusterList">{{clusterItem.name}}</option>
+            </select>
+          </div>
+        </div>
+        <div class="clearfix"></div>
+        
+        <h5>Validity</h5>
+        <div class="row">
+          <div class="col-xs-12">
+       
+            <div>Start</div>
+           
+            <div class="input-group input-group-xs">
+              <span class="input-group-addon btn btn-default entypo calendar" ng-click="openDatePicker($event, cluster.validity.start)"></span>
+              <input type="text" class="form-control" placeholder="Start Date"
+                     datepicker-popup="{{dateFormat}}"
+                     ng-model="cluster.validity.start.date"
+                     is-open="cluster.validity.start.opened"
+                     ng-required="true">
+            </div>     
+          </div>
+    
+          <div class="col-xs-12">
+            <div>End</div>
+            
+            <div class="input-group input-group-xs">
+              <span class="input-group-addon btn btn-default entypo calendar" ng-click="openDatePicker($event, cluster.validity.end)"></span>
+              <input type="text" class="form-control" placeholder="End Date"
+                     datepicker-popup="{{dateFormat}}"
+                     ng-model="cluster.validity.end.date"
+                     is-open="cluster.validity.end.opened"
+                     ng-required="true">
+            </div>    
+          </div>
+          <div class="col-xs-24 mt10">
+            <div class="btn btn-default pull-right btn-xs" ng-click="removeCluster($index)" ng-if="!$first">
+              - delete
+            </div>
+          </div>
+        </div>
+        
+        
+        
+      </div>
+    </div>
+  </div>
+  <div class="col-xs-24 mt10">
+    <div class="btn btn-default btn-xs" ng-click="addCluster()">
+      + add cluster
+    </div>
+  </div>
+  <div class="col-xs-24">
+    <div class="row feedBottomButtons">
+      <div class="btn btn-default col-xs-6" ng-click="goBack('forms.process.properties')" >
+        Previous
+      </div>
+      <div class="btn btn-default col-xs-6 pull-right" ng-click="goNext(processForm.$invalid, 'forms.process.io')" >
+        Next
+      </div>
+      <u class="col-xs-3 pull-right" ui-sref="main">
+        Cancel
+      </u>
+    </div>
+  </div>
+  
+</form>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/falcon/blob/c4df0a5e/falcon-ui/app/html/process/processFormGeneralStepTpl.html
----------------------------------------------------------------------
diff --git a/falcon-ui/app/html/process/processFormGeneralStepTpl.html b/falcon-ui/app/html/process/processFormGeneralStepTpl.html
new file mode 100644
index 0000000..4f41e39
--- /dev/null
+++ b/falcon-ui/app/html/process/processFormGeneralStepTpl.html
@@ -0,0 +1,119 @@
+<!--
+/**
+ * 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.
+ */
+-->
+<form name="processForm" class="mt10">
+ 
+    <div class="col-xs-24">
+      <label class="light">Name</label>
+      <input type="text" class="form-control" ng-keydown="validations.acceptNoSpaces($event)"
+             check-name="{type:'process', check:cloningMode}" ng-class="{fakeInvalid:!validations.nameAvailable}"
+             ng-disabled="!cloningMode" id="entityNameField" ng-model="process.name"
+             ng-required="true" ng-maxlength="39" ng-pattern="validations.patterns.name"/>
+    </div>
+
+    <div class="col-xs-24">
+      <label class="light">Tags</label>
+    </div>
+
+    <div id="tagsSection" class="col-xs-24">
+      <div ng-repeat="tag in process.tags">
+        <div class="row dynamic-table-spacer">
+          <div class="col-xs-10">
+            <input type="text" class="form-control" ng-model="tag.key" placeholder="key"
+                   ng-pattern="validations.patterns.alpha" ng-required="tag.value"/>
+          </div>
+          <div class="col-xs-11">
+            <input type="text" class="form-control" placeholder="value"
+                   ng-model="tag.value" ng-pattern="validations.patterns.alpha" ng-required="tag.key"/>
+          </div>
+          <div class="col-xs-3">
+            <div class="btn btn-default btn-xs" ng-click="removeTag($index)" ng-if="$index>0">
+              <span class="entypo minus"></span> delete
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="col-xs-24 mt10 mb10">
+      <div class="btn btn-default btn-xs" ng-click="addTag()">
+        <span class="entypo plus"></span> add tag
+      </div>
+    </div>
+
+  <h4 class="col-xs-24">Workflow</h4>
+
+  <div class="col-xs-24">
+    <div class="light">Name</div>
+    <input type="text" class="form-control" validation-message="{{validations.messages.name}}"
+           id="workflowNameField"
+           ng-model="process.workflow.name"
+           ng-required="true"
+           ng-maxlength="39"
+           ng-pattern="validations.patterns.name"/>
+  </div>
+
+  <div id="engineSection" class="col-xs-24">
+    <label class="light">Engine</label>
+    <div class="row">
+      <div class="col-xs-4" ng-class="{fakeInvalidRadio:!process.workflow.engine}">
+        <input type="radio" id="oozieEngineRadio"  ng-change="selectWorkflow()" ng-model="process.workflow.engine" value="oozie" ng-required="!process.workflow.engine"/> Oozie
+      </div>
+      <div class="col-xs-4" ng-class="{fakeInvalidRadio:!process.workflow.engine}">
+        <input type="radio" id="pigEngineRadio" ng-change="selectWorkflow()" ng-model="process.workflow.engine" value="pig" ng-required="!process.workflow.engine"/> Pig
+      </div>
+      <div class="col-xs-4" ng-class="{fakeInvalidRadio:!process.workflow.engine}">
+        <input type="radio" id="hiveEngineRadio" ng-change="selectWorkflow()" ng-model="process.workflow.engine" value="hive" ng-required="!process.workflow.engine"/> Hive
+      </div>
+      <select id="engineVersionField" ng-model="process.workflow.version"
+        ng-required="true" ng-show="process.workflow.engine" validation-message="{{validations.messages.engine}}">
+        
+        <option value="" disabled selected style='display:none;'>-Select {{process.workflow.engine}} version-</option>
+        
+        <option ng-repeat="version in versions"
+          id="{{process.workflow.engine}}Version{{$index}}"
+          value="{{version}}"
+          ng-selected="process.workflow.version === version">
+          {{version}}
+        </option>
+      </select>
+    </div>
+  </div>
+  <div class="col-xs-24">
+    <label class="light">Path</label>
+    <input type="text" class="form-control"
+           id="pathField"
+           ng-model="process.workflow.path"
+           ng-required="true"
+           ng-maxlength="200"
+           ng-pattern="validations.patterns.osPath"/>
+  </div>
+
+  <div class="col-xs-24">
+    <div class="feedBottomButtons row">
+      <div id="nextButton"
+           class="btn btn-default col-xs-6 pull-right" ng-click="goNext(processForm.$invalid, 'forms.process.properties')" >
+        Next
+      </div>
+      <u class="col-xs-3 pull-right" ng-click="cancel()" ui-sref="main">
+        Cancel
+      </u>
+    </div>
+  </div>
+
+</form>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/falcon/blob/c4df0a5e/falcon-ui/app/html/process/processFormInputsAndOutputsStepTpl.html
----------------------------------------------------------------------
diff --git a/falcon-ui/app/html/process/processFormInputsAndOutputsStepTpl.html b/falcon-ui/app/html/process/processFormInputsAndOutputsStepTpl.html
new file mode 100644
index 0000000..6ed54e1
--- /dev/null
+++ b/falcon-ui/app/html/process/processFormInputsAndOutputsStepTpl.html
@@ -0,0 +1,149 @@
+<!--
+/**
+ * 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.
+ */
+-->
+<form name="processForm">
+  <div class="col-sm-offset-1 col-sm-22">
+    <h4 ng-if="process.inputs.length === 0">Inputs</h4>
+
+    <div ng-repeat="input in process.inputs" class="row">
+      <h4 class="col-xs-24">Input</h4>
+  
+      <div class="col-xs-24 detailsBox processCluster">
+
+          <div class="row">
+            <div class="col-xs-24">
+              <label class="light">Name</label>
+              <input type="text" class="form-control" validation-message="{{validations.messages.name}}"
+                     ng-model="input.name"
+                     ng-required="true"
+                     ng-maxlength="39"
+                     ng-pattern="validations.patterns.name"/>
+            </div>
+          </div>
+
+        <div class="row">
+          <div class="col-xs-24">
+            <label class="light">Feed</label>
+  
+            <select ng-model="input.feed" ng-required="true" class="col-sm-24 form-control padding0"
+                    validation-message="{{validations.messages.feed}}">
+              <option value="" disabled selected style='display:none;'>-Select feed-</option>
+              <option ng-repeat="feedItem in feedsList">{{feedItem.name}}</option>
+            </select>
+          </div>
+        </div>
+
+          <div class="clearfix"></div>
+          <h5>Instance</h5>
+  
+          <div class="row">
+            <div class="col-xs-12">
+              <label class="light">Start</label>
+  
+              <input type="text" class="form-control" validation-message="{{validations.messages.value}}"
+                     ng-model="input.start"
+                     ng-required="true"
+                     ng-maxlength="39"/>
+  
+            </div>
+            <div class="col-xs-12">
+              <label class="light">End</label>
+  
+              <input type="text" class="form-control" validation-message="{{validations.messages.value}}"
+                     ng-model="input.end"
+                     ng-required="true"
+                     ng-maxlength="39"/>
+            </div>
+            
+            <div class="col-xs-24 mt10">
+              <div class="btn btn-default pull-right btn-xs" ng-click="removeInput($index)">
+                - delete
+              </div>
+            </div>
+          </div>  
+      </div>
+    </div>
+
+    <div class="btn btn-default btn-xs mt10 mb10" ng-click="addInput()">
+      + add input
+    </div>
+
+    <h4 ng-if="process.outputs.length === 0">Outputs</h4>
+
+    <div ng-repeat="output in process.outputs" class="row">
+      <h4 class="col-xs-24">Output</h4>
+  
+      <div class="col-xs-24 detailsBox processCluster">
+        <div class="row">
+          <div class="col-xs-24">
+            <label class="light">Name</label>
+            <input type="text" class="form-control" validation-message="{{validations.messages.name.patternInvalid}}"
+                   ng-model="output.name"
+                   ng-required="true"
+                   ng-maxlength="39"
+                   ng-pattern="validations.patterns.id"/>
+          </div>
+        </div>
+        <div class="row">
+          <div class="col-xs-24">
+            <label class="light">Feed</label>
+            <select ng-model="output.feed" ng-required="true" class="col-sm-24 form-control padding0"
+                    validation-message="{{validations.messages.feed}}" >
+              <option value="" disabled selected style='display:none;'>-Select feed-</option>
+              <option ng-repeat="feedItem in feedsList">{{feedItem.name}}</option>
+            </select>
+          </div>
+        </div>
+        <div class="clearfix"></div>
+        <h5>Instance</h5>
+        <div class="row">
+          <div class="col-xs-24">
+            <label class="light">Instance</label>
+
+            <input type="text" class="form-control" validation-message="{{validations.messages.value}}"
+                   ng-model="output.outputInstance"
+                   ng-required="true"
+                   ng-maxlength="39"/>
+          </div>
+        </div>
+        <div class="row mt10">
+          <div class="btn btn-default pull-right btn-xs" ng-click="removeOutput($index)">
+            - delete
+          </div>
+        </div>
+  
+      </div>
+    </div>
+
+    <div class="btn btn-default btn-xs mb10 mt10" ng-click="addOutput()">
+      + add output
+    </div>
+  </div>
+  <div class="row feedBottomButtons">
+    <div class="btn btn-default col-xs-6" ng-click="goBack('forms.process.clusters')">
+      Previous
+    </div>
+    <div class="btn btn-default col-xs-6 pull-right" ng-click="goNext(processForm.$invalid, 'forms.process.summary')" >
+      Next
+    </div>
+    <u class="col-xs-3 pull-right" ui-sref="main">
+      Cancel
+    </u>
+  </div>
+</form>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/falcon/blob/c4df0a5e/falcon-ui/app/html/process/processFormPropertiesStepTpl.html
----------------------------------------------------------------------
diff --git a/falcon-ui/app/html/process/processFormPropertiesStepTpl.html b/falcon-ui/app/html/process/processFormPropertiesStepTpl.html
new file mode 100644
index 0000000..5732060
--- /dev/null
+++ b/falcon-ui/app/html/process/processFormPropertiesStepTpl.html
@@ -0,0 +1,122 @@
+<!--
+/**
+ * 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.
+ */
+-->
+<form name="processForm" class="mt10">
+
+  <h5 class="col-xs-24">Timing</h5>
+
+  <div class="col-xs-24 mb10">
+    <label class="light">Timezone</label>
+    <time-zone-select ng-model="process.timezone"></time-zone-select>
+  </div>
+
+  <div class="col-xs-9">
+    <div class="inlineInputsGroup">
+      <div>Frequency</div>
+      <span>Every</span>
+      <input type="text" class="form-control" validation-message="{{validations.messages.number}}"
+             ng-model="process.frequency.quantity" ng-keydown="validations.acceptOnlyNumber($event)"
+             id="frequencyQuantity"
+             ng-required="true"
+             ng-pattern="validations.patterns.twoDigits"/>
+             
+      <select 
+        ng-model="process.frequency.unit"
+        ng-required="true">
+        <option selected value="minutes">minutes</option>
+        <option value="hours">hours</option>
+        <option value="days">days</option>
+        <option value="months">months</option>
+      </select>
+    </div>
+  </div>
+  <div class="col-xs-7">
+    <div class="inlineInputsGroup">
+      <div>Maximum Parallel Instances</div>
+      <select
+        ng-model="process.parallel"
+        ng-required="true">
+        <option ng-repeat="value in [1,2,3,4,5,6,7,8,9,10,11,12]">{{value}}</option>
+      </select>
+    </div>
+  </div>
+  <div class="col-xs-8">
+    <div class="inlineInputsGroup">
+      <div>Order</div>
+      <select ng-model="process.order" ng-required="true" validation-message="{{validations.messages.option}}">
+        <option value="" disabled selected style='display:none;'>-Select order-</option>
+        <option ng-repeat="value in ['FIFO', 'LIFO', 'LAST_ONLY']">{{value}}</option>
+      </select>
+    </div>
+  </div>
+  <div class="clearfix mb10"></div>
+  <h4 class="col-xs-24">Retry</h4>
+
+  <div class="col-xs-9 inlineInputsGroup">
+      <div class="mt10 mb10">Policy</div>
+      <select ng-model="process.retry.policy" ng-required="true" validation-message="{{validations.messages.option}}">
+        <option value="" disabled selected style='display:none;'>-Select policy-</option>
+        <option ng-repeat="value in ['periodic', 'exp-backoff', 'final']">{{value}}</option>
+      </select>
+    </div>
+  </div>
+  <div class="col-xs-7 inlineInputsGroup">
+      <div class="mt10">Attempts</div>
+
+      <input type="text" class="form-control" validation-message="{{validations.messages.number}}"
+             ng-model="process.retry.attempts" ng-keydown="validations.acceptOnlyNumber($event)"
+             id="attemptsField"
+             ng-required="true"
+             ng-pattern="validations.patterns.twoDigits"/>
+    </div>
+  </div>
+  <div class="col-xs-8">
+    <div class="inlineInputsGroup">
+      <div class="mt10">Delay</div>
+      <span>Up to</span>
+      <input type="text" class="form-control"
+             ng-model="process.retry.delay.quantity" validation-message="{{validations.messages.number}}"
+             id="delayQuantity" ng-keydown="validations.acceptOnlyNumber($event)"
+             ng-required="true"
+             ng-pattern="validations.patterns.twoDigits"/>
+             
+      <select ng-model="process.retry.delay.unit" ng-required="true" validation-message="{{validations.messages.option}}">
+        <option value="" disabled selected style='display:none;'>-Select delay-</option>
+        <option value="minutes">minutes</option>
+        <option value="hours">hours</option>
+        <option value="days">days</option>
+        <option value="months">months</option>
+      </select>
+    </div>
+  </div>
+
+  <div class="col-xs-24">
+    <div class="feedBottomButtons row">
+      <div class="btn btn-default col-xs-6" ng-click="goBack('forms.process.general')">
+        Previous
+      </div>
+      <div class="btn btn-default col-xs-6 pull-right" ng-click="goNext(processForm.$invalid, 'forms.process.clusters')" >
+        Next
+      </div>
+      <u class="col-xs-3 pull-right" ui-sref="main">
+        Cancel
+      </u>
+    </div>
+  </div>
+</form>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/falcon/blob/c4df0a5e/falcon-ui/app/html/process/processFormSummaryStepTpl.html
----------------------------------------------------------------------
diff --git a/falcon-ui/app/html/process/processFormSummaryStepTpl.html b/falcon-ui/app/html/process/processFormSummaryStepTpl.html
new file mode 100644
index 0000000..6c554da
--- /dev/null
+++ b/falcon-ui/app/html/process/processFormSummaryStepTpl.html
@@ -0,0 +1,168 @@
+<!--
+/**
+ * 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.
+ */
+-->
+<form name="processForm" class="mt10">
+
+  <div class="row">
+    <h4 class="col-sm-24">Process</h4>
+
+    <div class="clearfix hidden-md">&nbsp</div>
+
+    <label class="col-sm-24">Name</label>
+    <label class="col-sm-24 light">{{process.name}}</label>
+
+    <div class="clearfix hidden-md">&nbsp</div>
+
+    <label class="col-sm-24">Tags</label>
+    <div class="col-sm-24">
+      <div ng-repeat="tag in process.tags | filter:{key: '!!'}">
+        {{tag.key}} = {{tag.value}}
+      </div>
+      <div ng-show="!hasTags()">No tags selected</div>
+    </div>
+
+    <div class="clearfix hidden-md">&nbsp</div>
+
+    <h4 class="col-sm-24">Workflow</h4>
+    <div class="clearfix hidden-md">&nbsp</div>
+    <div class="row">
+      <div class="col-sm-8">
+        <label class="col-sm-24">Name</label>
+        <label class="col-sm-24 light">{{process.workflow.name}}</label>
+      </div>
+      <div class="col-sm-8">
+        <label class="col-sm-24">Engine</label>
+        <label class="col-sm-24 light">{{process.workflow.engine}}</label>
+      </div>
+      <div class="col-sm-8">
+        <label class="col-sm-24">Version</label>
+        <label class="col-sm-24 light">{{process.workflow.version}}</label>
+      </div>
+    </div>
+    <label class="col-sm-24">Path</label>
+    <label class="col-sm-24 light">{{process.workflow.path}}</label>
+
+
+    <h4 class="col-sm-24">Timing</h4>
+    <div class="clearfix hidden-md">&nbsp</div>
+    <label class="col-sm-24">Timezone</label>
+    <label class="col-sm-24 light">{{optional(process.timezone)}}</label>
+    <div class="row">
+      <div class="col-sm-8">
+        <label class="col-sm-24">Frequency</label>
+        <label class="col-sm-24 light">Every {{process.frequency.quantity}} {{process.frequency.unit}}</label>
+      </div>
+      <div class="col-sm-8">
+        <label class="col-sm-24">Max. parallel instances</label>
+        <label class="col-sm-24 light">{{process.parallel}}</label>
+      </div>
+      <div class="col-sm-8">
+        <label class="col-sm-24">Order</label>
+        <label class="col-sm-24 light">{{optional(process.order)}}</label>
+      </div>
+    </div>
+    <div class="clearfix hidden-md">&nbsp</div>
+    <h4 class="col-sm-24">Retry</h4>
+    <div class="clearfix hidden-md">&nbsp</div>
+    <div class="row">
+      <div class="col-sm-8">
+        <label class="col-sm-24">Policy</label>
+        <label class="col-sm-24 light">{{process.retry.policy}}</label>
+      </div>
+      <div class="col-sm-8">
+        <label class="col-sm-24">Attempts</label>
+        <label class="col-sm-24 light">{{process.retry.attempts}}</label>
+      </div>
+      <div class="col-sm-8">
+        <label class="col-sm-24">Delay</label>
+        <label class="col-sm-24 light">Up to {{process.retry.delay.quantity}} {{process.retry.delay.unit}}</label>
+      </div>
+    </div>
+    <div class="clearfix hidden-md">&nbsp</div>
+    <h4 class="col-sm-24">Clusters</h4>
+    <div ng-repeat="cluster in process.clusters">
+      <div class="row col-sm-offset-1 col-sm-22 detailsBox">
+        <label class="col-sm-24">Name</label>
+        <label class="col-sm-24 light">{{cluster.name}}</label>
+        <div class="clearfix hidden-md">&nbsp</div>
+        <h4 class="col-sm-24">Validity</h4>
+        <div class="row">
+          <div class="col-sm-12">
+            <label class="col-sm-24">Start</label>
+            <label class="col-sm-24 light">{{cluster.validity.start.date}} {{cluster.validity.start.time}}</label>
+          </div>
+          <div class="col-sm-12">
+            <label class="col-sm-24">End</label>
+            <label class="col-sm-24 light">{{cluster.validity.end.date}} {{cluster.validity.end.time}}</label>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="clearfix hidden-md">&nbsp</div>
+    <h4 class="col-sm-24">Inputs</h4>
+    <div ng-repeat="input in process.inputs">
+      <div class="row col-sm-offset-1 col-sm-22 detailsBox">
+        <label class="col-sm-24">Name</label>
+        <label class="col-sm-24 light">{{input.name}}</label>
+        <label class="col-sm-24">Feed</label>
+        <label class="col-sm-24 light">{{input.feed}}</label>
+        <div class="clearfix hidden-md">&nbsp</div>
+        <h4 class="col-sm-24">Instance</h4>
+        <div class="row">
+          <div class="col-sm-12">
+            <label class="col-sm-24">Start</label>
+            <label class="col-sm-24 light">{{input.start}}</label>
+          </div>
+          <div class="col-sm-12">
+            <label class="col-sm-24">End</label>
+            <label class="col-sm-24 light">{{input.end}}</label>
+          </div>
+        </div>
+      </div>
+    </div>
+    <h4 class="col-sm-24">Outputs</h4>
+    <div ng-repeat="output in process.outputs">
+      <div class="row col-sm-offset-1 col-sm-22 detailsBox">
+        <label class="col-sm-24">Name</label>
+        <label class="col-sm-24 light">{{output.name}}</label>
+        <label class="col-sm-24">Feed</label>
+        <label class="col-sm-24 light">{{output.feed}}</label>
+        <div class="clearfix hidden-md">&nbsp</div>
+        <h4 class="col-sm-24">Instance</h4>
+        <label class="col-sm-24">Instance</label>
+        <label class="col-sm-24 light">{{output.outputInstance}}</label>
+      </div>
+    </div>
+  </div>
+  <div class="clearfix hidden-md">&nbsp</div>
+
+  <div class="row feedBottomButtons">
+    <div class="btn btn-default col-sm-6" ng-click="goBack('forms.process.io')">
+      Previous
+    </div>
+    <div class="btn btn-default col-sm-6 pull-right"
+         ng-disabled="processForm.$invalid"
+         ng-click="saveEntity()">
+      Save
+    </div>
+    <u class="col-sm-3 pull-right" ui-sref="main">
+      Cancel
+    </u>
+  </div>
+</form>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/falcon/blob/c4df0a5e/falcon-ui/app/html/process/processFormTpl.html
----------------------------------------------------------------------
diff --git a/falcon-ui/app/html/process/processFormTpl.html b/falcon-ui/app/html/process/processFormTpl.html
new file mode 100644
index 0000000..7bf423e
--- /dev/null
+++ b/falcon-ui/app/html/process/processFormTpl.html
@@ -0,0 +1,95 @@
+<!--
+/**
+ * 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="col-sm-24 entityForm">
+  <div class="col-sm-22 col-sm-offset-2">
+    <div class="row">
+      <h3 id="formTitle" class="col-sm-24">
+        New Process
+      </h3>
+      <div class="col-sm-15 detailsBox">
+
+        <div class="processProgressBox" ng-class="{
+          general:isActive('forms.process.general'),
+          properties:isActive('forms.process.properties'),
+          clusters:isActive('forms.process.clusters'),
+          inputsAndOutputs: isActive('forms.process.io'),
+          summary:isActive('forms.process.summary')
+          }">
+          <div class="progressBar col-md-24">
+            <div>
+              <span>
+                <div class="fir">1<span class="entypo check"></span></div>
+                <h6>General</h6>
+              </span>
+              <span>
+                <div class="sec">2<span class="entypo check"></span></div>
+                <h6>Properties</h6>
+              </span>
+              <span>
+                <div class="thi">3<span class="entypo check"></span></div>
+                <h6>Clusters</h6>
+              </span>
+              <span>
+                <div class="fou">4<span class="entypo check"></span></div>
+                <h6>Inputs & Outputs</h6>
+              </span>
+              <span>
+                <div class="fif">5<span class="entypo check"></span></div>
+                <h6>Summary</h6>
+              </span>
+            </div>
+          </div>
+        </div>
+       
+        <div class="row">
+          <div class="col-sm-offset-1 col-sm-22">
+            <fieldset id="fieldWrapper" ng-disabled="!editXmlDisabled">
+              <div ui-view class="formViewContainer"></div>
+            </fieldset>
+          </div>
+        </div>
+        
+      </div>
+
+      <div class="col-sm-8 detailsBox col-sm-offset-1">
+        <div class="row">
+
+          <h5 class="col-xs-13 col-xs-offset-1 noSpecial">XML Preview</h5>  
+          <div class="col-xs-9">
+            <div id="editXmlButton" class="btn btn-default btn-xs pull-right" ng-click="toggleEditXml()" ng-class="{'btn-warning':!editXmlDisabled}">
+              Edit XML
+            </div>
+          </div>
+
+          <div class="col-sm-24">
+            <div class="row">
+              <div class="col-sm-22 col-sm-offset-1">
+                <textarea ng-model="prettyXml" rows="35" class="form-control" ng-disabled="editXmlDisabled">
+                </textarea>
+              </div>
+            </div>
+          </div>
+          
+        </div>
+      </div>
+      
+    </div>
+  </div>
+</div>

http://git-wip-us.apache.org/repos/asf/falcon/blob/c4df0a5e/falcon-ui/app/index.html
----------------------------------------------------------------------
diff --git a/falcon-ui/app/index.html b/falcon-ui/app/index.html
new file mode 100644
index 0000000..2552194
--- /dev/null
+++ b/falcon-ui/app/index.html
@@ -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.
+ */
+-->
+<!DOCTYPE html>
+<html ng-app="app">
+  <head>
+    <title>Falcon Web UI</title>
+    <meta charset="utf-8">
+    <meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
+    <link rel="stylesheet" href="css/main.css"/>
+    <link rel="icon" type="image/x-icon"
+      href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAKL2lDQ1BJQ0MgUHJvZmlsZQAASMedlndUVNcWh8+9d3qhzTDSGXqTLjCA9C4gHQRRGGYGGMoAwwxNbIioQEQREQFFkKCAAaOhSKyIYiEoqGAPSBBQYjCKqKhkRtZKfHl57+Xl98e939pn73P32XuftS4AJE8fLi8FlgIgmSfgB3o401eFR9Cx/QAGeIABpgAwWempvkHuwUAkLzcXerrICfyL3gwBSPy+ZejpT6eD/0/SrFS+AADIX8TmbE46S8T5Ik7KFKSK7TMipsYkihlGiZkvSlDEcmKOW+Sln30W2VHM7GQeW8TinFPZyWwx94h4e4aQI2LER8QFGVxOpohvi1gzSZjMFfFbcWwyh5kOAIoktgs4rHgRm4iYxA8OdBHxcgBwpLgvOOYLFnCyBOJDuaSkZvO5cfECui5Lj25qbc2ge3IykzgCgaE/k5XI5LPpLinJqUxeNgCLZ/4sGXFt6aIiW5paW1oamhmZflGo/7r4NyXu7SK9CvjcM4jW94ftr/xS6gBgzIpqs+sPW8x+ADq2AiB3/w+b5iEAJEV9a7/xxXlo4nmJFwhSbYyNMzMzjbgclpG4oL/rfzr8DX3xPSPxdr+Xh+7KiWUKkwR0cd1YKUkpQj49PZXJ4tAN/zzE/zjwr/NYGsiJ5fA5PFFEqGjKuLw4Ubt5bK6Am8Kjc3n/qYn/MOxPWpxrkSj1nwA1yghI3aAC5Oc+gKIQARJ5UNz13/vmgw8F4psXpjqxOPefBf37rnCJ+JHOjfsc5xIYTGcJ+RmLa+JrCdCAACQBFcgDFaABdIEhMANWwBY4AjewAviBYBAO1gIWiAfJgA8yQS7YDApAEdgF9oJKUAPqQSNoASdABzgNLoDL4Dq4Ce6AB2AEjIPnYAa8AfMQBGEhMkSB5CFVSAsygMwgBmQ
 PuUE+UCAUDkVDcRAPEkK50BaoCCqFKqFaqBH6FjoFXYCuQgPQPWgUmoJ+hd7DCEyCqbAyrA0bwwzYCfaGg+E1cBycBufA+fBOuAKug4/B7fAF+Dp8Bx6Bn8OzCECICA1RQwwRBuKC+CERSCzCRzYghUg5Uoe0IF1IL3ILGUGmkXcoDIqCoqMMUbYoT1QIioVKQ21AFaMqUUdR7age1C3UKGoG9QlNRiuhDdA2aC/0KnQcOhNdgC5HN6Db0JfQd9Dj6DcYDIaG0cFYYTwx4ZgEzDpMMeYAphVzHjOAGcPMYrFYeawB1g7rh2ViBdgC7H7sMew57CB2HPsWR8Sp4sxw7rgIHA+XhyvHNeHO4gZxE7h5vBReC2+D98Oz8dn4Enw9vgt/Az+OnydIE3QIdoRgQgJhM6GC0EK4RHhIeEUkEtWJ1sQAIpe4iVhBPE68QhwlviPJkPRJLqRIkpC0k3SEdJ50j/SKTCZrkx3JEWQBeSe5kXyR/Jj8VoIiYSThJcGW2ChRJdEuMSjxQhIvqSXpJLlWMkeyXPKk5A3JaSm8lLaUixRTaoNUldQpqWGpWWmKtKm0n3SydLF0k/RV6UkZrIy2jJsMWyZf5rDMRZkxCkLRoLhQWJQtlHrKJco4FUPVoXpRE6hF1G+o/dQZWRnZZbKhslmyVbJnZEdoCE2b5kVLopXQTtCGaO+XKC9xWsJZsmNJy5LBJXNyinKOchy5QrlWuTty7+Xp8m7yifK75TvkHymgFPQVAhQyFQ4qXFKYVqQq2iqyFAsVTyjeV4KV9JUCldYpHVbqU5pVVlH2UE5V3q98UXlahabiqJKgUqZyVmVKlaJqr8pVLVM9p/qMLkt3oifRK+g99Bk1JTVPNaFarVq/2ry6jnqIep56q/ojDYIGQyNWo0yjW2NGU1XTVzNXs1nzvhZei6EVr7VPq1drTltHO0x7m3aH9qSOnI6XTo5Os85DXbKug26abp3ubT2MHkMvUe+A3k19
 WN9CP16/Sv+GAWxgacA1OGAwsBS91Hopb2nd0mFDkqGTYYZhs+GoEc3IxyjPqMPohbGmcYTxbuNe408mFiZJJvUmD0xlTFeY5pl2mf5qpm/GMqsyu21ONnc332jeaf5ymcEyzrKDy+5aUCx8LbZZdFt8tLSy5Fu2WE5ZaVpFW1VbDTOoDH9GMeOKNdra2Xqj9WnrdzaWNgKbEza/2BraJto22U4u11nOWV6/fMxO3Y5pV2s3Yk+3j7Y/ZD/ioObAdKhzeOKo4ch2bHCccNJzSnA65vTC2cSZ79zmPOdi47Le5bwr4urhWuja7ybjFuJW6fbYXd09zr3ZfcbDwmOdx3lPtKe3527PYS9lL5ZXo9fMCqsV61f0eJO8g7wrvZ/46Pvwfbp8Yd8Vvnt8H67UWslb2eEH/Lz89vg98tfxT/P/PgAT4B9QFfA00DQwN7A3iBIUFdQU9CbYObgk+EGIbogwpDtUMjQytDF0Lsw1rDRsZJXxqvWrrocrhHPDOyOwEaERDRGzq91W7109HmkRWRA5tEZnTdaaq2sV1iatPRMlGcWMOhmNjg6Lbor+wPRj1jFnY7xiqmNmWC6sfaznbEd2GXuKY8cp5UzE2sWWxk7G2cXtiZuKd4gvj5/munAruS8TPBNqEuYS/RKPJC4khSW1JuOSo5NP8WR4ibyeFJWUrJSBVIPUgtSRNJu0vWkzfG9+QzqUvia9U0AV/Uz1CXWFW4WjGfYZVRlvM0MzT2ZJZ/Gy+rL1s3dkT+S453y9DrWOta47Vy13c+7oeqf1tRugDTEbujdqbMzfOL7JY9PRzYTNiZt/yDPJK817vSVsS1e+cv6m/LGtHlubCyQK+AXD22y31WxHbedu799hvmP/jk+F7MJrRSZF5UUfilnF174y/ariq4WdsTv7SyxLDu7C7OLtGtrtsPtoqXRpTunYHt897WX0ssKy13uj9l4tX1Zes4+wT7hvpMKnonO/5v5d+z9UxlfeqXKua
 q1Wqt5RPXeAfWDwoOPBlhrlmqKa94e4h+7WetS212nXlR/GHM44/LQ+tL73a8bXjQ0KDUUNH4/wjowcDTza02jV2Nik1FTSDDcLm6eORR67+Y3rN50thi21rbTWouPguPD4s2+jvx064X2i+yTjZMt3Wt9Vt1HaCtuh9uz2mY74jpHO8M6BUytOdXfZdrV9b/T9kdNqp6vOyJ4pOUs4m3924VzOudnzqeenL8RdGOuO6n5wcdXF2z0BPf2XvC9duex++WKvU++5K3ZXTl+1uXrqGuNax3XL6+19Fn1tP1j80NZv2d9+w+pG503rm10DywfODjoMXrjleuvyba/b1++svDMwFDJ0dzhyeOQu++7kvaR7L+9n3J9/sOkh+mHhI6lH5Y+VHtf9qPdj64jlyJlR19G+J0FPHoyxxp7/lP7Th/H8p+Sn5ROqE42TZpOnp9ynbj5b/Wz8eerz+emCn6V/rn6h++K7Xxx/6ZtZNTP+kv9y4dfiV/Kvjrxe9rp71n/28ZvkN/NzhW/l3x59x3jX+z7s/cR85gfsh4qPeh+7Pnl/eriQvLDwG/eE8/s3BCkeAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QoRBwcQl9gdLAAAFKZJREFUeNrtWnl8VuWVft57vy8LoCCrhCVBAgkJYO04rVinFbVacUck7IshZF9YYlgCWQgge8hGQhLZNwHHilW72epo1bZCHQgJSdg3WXREyPZ99z3P/HFvAlqt1VHAmXl/v/vL78td3vc87znPec65F/j/8X97qKs9Yb/EMpgmXf4uf/2XpWP4RdfcmvKcy0tt7V8Z9b8HgPCk1ajImwwA+EHaJpflaeiroAYrqH8D4AZAAPWEvGIp/Wrl8ugL9n1lqMib9P0FIDyhGBUFMc0gPKKglkAh5PLErCXhBWAAMJRSfQCA5CGh+cD+/MjaAQnF2Os843sFQHBCEW
 oL4hAev2oglHpdKXQgsQtQ60Xkrcqi2A+/MEwSVvc3FZMBToLIzH2Fcc9eeT40Kh9VpYnXNwC3PbMaexZPRmhc4UoFJCmo8g+r/2vyx7+bLZ/xkMQSVORH27E/vRQfLL0c9/1i84OhjBoB/mgQvyfUb6tWxb133XtASGyucWBVioRE5+8DGKQo4VWrU44CQFhMEfYXx33pvQOnlfcSU87sWxxVDwB9o3J7GoY5g4qdQfQA8CMFfABhelVp8svXHQD9IpepyvJp7Bu14ryieudAWcojABAanYeqkqS/u77PpFxVU5bCsISSO5Shtiuo7gAglF/6+7jHvr/s6YsAcP+snb6nLp5PJXC6qb6x0jBkFYiBVBhUUzrl3d4xK3GwOPnaAhA8cYmqXZPKPhOXfqqUsaL6uakZ/WJylbfJYO2aJATHF8Dfx99UUAagoAyFD5ZN8PaZtGKTUhgF4Ncg74RSN0AZZYryMKB+I+QAZaj2IAMB9WZ1acrPAKD35GUdDQt/JLmuds30JX3GL0LNurSvtWbj2zK+54hM1K5JZe8JS97WZEr1c1Mz+k7KNcQC3f72NLWFCdi7IlK37RPO1l0DVasuPe0NUGpaU10dGi5dXOxt8vzWU3epXryeNU0N9S96GurGWh7P0976unu9jY2fNNRfHAIAvZJXwrT4Sc1z0/oTbAyesGRczbo0hKeUXH0P6DV2IQ5vmIle4xZmQKmbDq+bkdJ70nKlRLP2uVQnHa66hSLLDMP4OZRqrZypRaS6ojA2pNvw7P4CvRCG8lFwbTm1NX1t0Jj5/Y9snL3vJwDedubqO34Z6j2XcGJLBvpELoMGcKh8GgInLr6pTbubdMWKqE+vSQj0Gr9oAEWWHNkw8xdB4xapT+vr+PGObIREr+jiaWj8jWm4BkKp9QDeh+J5EAYAAVVHGCqCWp+gwmsH16SuUerrLeuWCctwaO00hKeUJlTkRhWEJ5ehYuV3J54+MwJH5SgA6Dk
 y583PnwsYlXNj4Mh5ZT3GPtvlfzJHWFLZowPiV7X6quv6J5XeF5ZcNvaqe0DgqJwyuF2ZR9fNONFjxCIc32oTUZeR89SZLXMIAD3HLMSxjTO/fPGJJdiXH42whNIQAO0Mhc4EHleKTysoCBApovYY4AVqNijArDjR8SR2Df1MPTEgqfRPe/Oi7uwXX4zKwq9Wj65vTHqjcgDxmjB9A4Xy3vF1M04EjV2IIxsus3Dbzh3YOaXc3JsbqW/o2P6fY2Vl9SaMpwHcrICDJH5JSpBSqtBU8AMA5bJt7h90DkgsOaopiZUFsbtsCS03OOyunPriu8sCx7ZmaWqdcnxzeikAHNkw05Gy5QCA6pVxUErdFJa8+taK3Oi/rxOSr2Bsw8CAxELsy499xWLdCK2xQESqQb4sxOsU+pHynkXebllys1jSV4tMIaW1AfVSeHxxiVNDmLZv85+y4Rt7AAj0GDGvk3K5VrTEauJq7M+fjMqCSPRPKr8NSuYQXFt/ts2u5mt+GvMy3ix+GABQsTIa/aeUdoGg476VURV2tihCRUGcBeAVAK+ExxYNVwpTNPBQVWHcK+GJ5YDhMWi6zlXmReUCyA2LK5oNMCc8vsiPoisAAJZFXK0RllByJRH9y4Ck1bXhSaUtRt+aWvq5CrG818CU8mUDU8o/GTil/O+IITQ6z/4bWxgTGlfIfnH5A1vujS1ouW70oHSExxTZXhdXmBYaV8h+0QUDr2qDIyzOXtCt8Rvd4Yklvw1PLGZ4QtGPv5ily6YPSCk7OjCljANSyhmWVPrTFkkcs8KpI/IUAIROXnlfaEw+Q2Ly4myQV365/I4rtAGLyd8DAP1iCr57w0PiChAWV2AAQFhswcNh8UUMiy862QXpyq79SxUAdHmiSPVPWr1iQHIZBySXXXD+sn9C6UMAEJ5Self/pHJfx/hHr/AChkbnnQKAkJj8r8xWoTH5TgX59Yz/xiSoYBj7ixKkX1xBPoFdpLy1vzCu
 2xnkcEDyaqMiL4oDkkqf6dTDVUfAf+/KSYqU/wQEFF22ryDqV/1TyqYbUD7K4ICB09a0o2acXQGuTKUItGA+ABwoTvzKeK4qtvsDlasSvnsA+kzOV1VFcRISk/+yaEkg+V5lUcK/hcWvMgGAWrqFJ5acJtl6X97kVhV5k2PCE0umAbiLAs++/OioPtHFvorI3Js76XUI2tFjtQYlxJ5BxpNETWlS4XftyV8bgOCJy1GzOpF9o/O2Q/RDJPZUFSfe0S+2wNxfGKvD41dNAHDQUNZt+/InZ4SnlN4BzIQClioKFPUcAPD1NX9FSoFT+t4tYrWlsGfgzgZQGE6i+mpw2NdKg30il6OmfCr6TFoxg5Y1jAqXaspSfhgSm29UrkrQ4QnFawn+tKIgxgcA+ieXPbcvd9LT4fGr8kiCgLeiIHZx/8SSjgq8l8QCO2XL/XD75aKhHj6vFo8HBQDevO4AqCmfiuDIFb0heqECAGX+EAAOrEqU8Piilyly5/6iuPa2JC1bD2G5IxkSQYLgDtgVUKlBQlHvdX6HKk0fUi5ASwoIKKDqagDwT4fALZFLnfC0fg0t0IKi6rIpNXYaKtpC8qH9nZo6OHo8jtS3782PeiM8rvAZW5ESJJf2inxOgfyFkNhbEH/O9gDeoJTVSwmrIfIDUACF+usKgEPl09ErcukD1Lq3gDi4dnq8owOmKnCEAI8iawpD44o6kVKovd77bWmKp0GCJKqK4nf7+TUOVkI/Cg83P1tEINpzp1bqDyICEYEGjesGgL6Ry22P93gzKAICafbOF4SRWEbKu1VF8bsAwDSMPxCsrCxOOBEaW+JLMIQkQL7t7PYkglCgT4uqJiGaQ9jUWAT7Wigt6roBwOPxuABAUwYJiUPr0hYDAIV/IgmAUQAQGl/4AMhwaD5rG+uZQGf3IdzrGHuv/T+pAYCQ6BU3Otf0M0JCTrIFEN3+ugHgyIYZ3lvGLhohloamTWyhMflzSLQlcahyV
 dI++2GqhCDE/eFGO73hcWdDQWC3A0B722CEAMCBkimfOrve5WDmcBHyPzQIKnXndcUBQv2oFg1fl88aZ/ezQYGCJNvStfBHFAmkyP7KlVnOyw/eCggBgYDVfaILO5Bw2U4DT0sIiAZFI2RS7sOmy5VNLSDlAQAIGrfo+gCg0eMJBAzUrn/m7b6TV8YTdl636HrD1sYy1Yn1d+3ipqANya7NHgDijAErQEGgICQl8DIABIUUSvahdWm/g8KnlmXhlqeX3XZkfdp14gHaaq0MtcVZ8RyIBii7a1fHX3SYLAJCkNgDAPB6O0I0IFpBNKpXJ1WRdDvG2qh0f6u5tXAaoALltp+vPmG4TPccEvDW1yVf8xAIGrOgeZGBWnvXhSYUdqSwCwkA6iUACI7Ju8NWeoRX0fEI9bOW+OflEsohQJCCkCG773B8oLIZmMPvbBt/eOPMPCp4LJHxANB/3IprB8CRjbPsDRU57u/jf1wam4Y1WyWWtRUADOHwZqMOFiftdUwdiM8jQN3CiCCgLd3H8Z63QYFzLAcAH9M1SWsLgaPnx+5bP+Xah4CCaji8adZ+EQmlsndbUZ2yw0Pf1uLaLXEt/aiI5qNXXK4bMM/Yd1IIQine5zQy/+ikQlJ0u96RS+85ujl9gzJdf2toalzmNGHNawqA28dd7fTRw5UQimhobNvK6+x2SMu2trQM6a+EUAIoIQwvgsXvxjMQCoSECCAyAgBcbv/dDgCaJOi1ygEgoEPHu7SIf8DI7GnHNqfrawpA30EPjHUYW1MIUs4eXxmre8YW+UDYxTaILakNWgIp9FIEFMIQHVabP9GiyHmKkEJSxKdvVG7vA6VJnxCopohBEVLroF7jnx29Z1VCXWv/Vo81NDYu/VnyZr+uT2WpruMWXn0Auo6ch7dSBl0RDQSAOgDw0U0mKYbj/meviBmBgoICoQgRuc1pf/8VoBvKbl1rj9d5e6FSNWhoUGlbCa4HgGObZr/kdrlzK0
 5U/vn09gxePHfq6gNwesucK1xb6mxes4sVNjb5NGcAUrpfqe+dQ5EARIIAQENW2REgSoQgJBEAhsxM26XISxBqkKTWRtDo+dsA4Oz2rCkCnu0SkZF86dV89J645Np1hET4V5vx2VysKJKg2KF9GQD57AEMtic03wV4GSHRvr0nLnmgMExRGa65mmJqUmmCXm0Nv2XMosEA8PHOnPu04P7uoxcMPLgm9doBYJjmYSe1CQBoBWlJc3LF5z9XpkASEAkAgINrpp0neYg2CygSEMubZqfcmSsUYDnSUIEUj9X4OgC0ezzVPL8966Emj8fvmvYED65J3WJXgOhyV+4rhr/LbTsyBUJB36ilHZwQULSHnd4oCJ645EEAME3XaoiYjhcAwsG9Ji7pap9z3y1CJUKK0NBa0C0ia98nLy7RAcOy1LntmX/u/i0S4dcCoM+E5Y7TGyeF0v5sRY2P+LTytmQGIbyadzjK8QJJ8zIPEJZlTQCA2rXPLBKloEGlQWoS9Hp2AsDRTbPeNl2u1XYY2Oe8Wod3i8h66dSODHZ/Kgsn1s+8NgDUrJ0Kpy+QRxJNTY3GgVWxTQCPOHEN5bV+bCth9aGQhoBoPkgZwss88e+QlkqJFA4KHvdscEBElnliy5xoH9N8WyiqmUo92vtIj5HZy05sz0BARPa1CwEAaNWqzToK4QL/1U75rNBCaBKW19vP9hJzd3MrsKUlqKVN8LhFfQHAz+eGWAK2JiKVFhGPZf3+1LYM7bonDie2ZdzlNl1/0iLKbpNR6puapnYbkb3w1La56D4iW10TAIInLkXV6uQzSqm9mhxnKzmfV1rYXikbFK+3yE6NzRxACAlNnQsAB9YknYHCC6QoJ40qLbpn0JgFT1ivF+Hm4Vnq9POZP/Fxu3fYKVMsEWF9U+OMgIjMRSe2zmXn4XONqw5A7Zrpzga7xmuv924AGD44qARQsNO9BI5K+T3atr3pIgDPFRygAGrLsu65b+EuFwD
 c2KrdeCcjEk4qtSzvCwDw4fMZ7DEqx/xwW+ZTbh/fJ5Rh+AihhJC6Js8zHYfNWX/2+Wy5JiHgtMn2GC7j47DYfL9FEyNA4AMRwhKNdz76y5C9xfEXSbzfXCE4h0nSt7Zi73gAqChLvGSYrgwRKi2AUMHSgu4j570IANrj0Y/NegFnn8988dTOHMPX7d5EEUNE0NTkGdth6Jy/5T1fbQJAtxHZVw+AW8YvRMfHMmAarlENFy/dDABu01UkQlAAj6cpGgB83b4Z1FS27ndqQMKyvN6lzc86vjk92zTMKmkOBZJer/VY4KicYad2ZGPv8SqETFyM4KcyeXZH9phuXbv2cLldiw3TRL2n6db0zWutmyMyHz+5da4t278mQX5jIgmeMB+1a2cDAHqMnIfjW+agy/AMj9babRjGmTPPZ92slEJARNZ5EelwxUwEoHzcPncf2zT7DQCImPmC683aD7xaRAMw7ZJBoWfnTp3+XJh4Pmj0AhzZNAsBI7JxyjEUAALHLHjs/KefDnKbZprL5drtY5hRp7bN3X1VAPii0W1E1rgmj2edUgpul6vfqW2ZVb1Gzp9Q521aA6XYMh8Jl2mePrUtI6BvxCJUb0tDzzGLejQ21h0TinY8UyllnD+3I7vT5+cJGPcs2p47h8pXl322aIvINk5vmyvXBoB7ooDXS9HxyfTzlmV1aOXn/+KpbRlPAEDA8IyTWusA2B9A0gFB+fr6P3hs8+zXuk8owIm1Ceg1dknnS/WfntEiopw60mW69p/ZkRXe6cnZ5rmd87/1nsC39/rpdfs7oNat2jwMw0C9xzO45Q2sr9/DohQ0SUf9KQ3Ao735AKAazwMADm9IPduq9Y3dTdNQIqIEpMfyhHUaNvcvzcb3HLvoOgUAQHDCEhzdMONdH5dPIUXadonI/HGHYXPVsQ0z97hN12KSqqUjRNLr8QYHjp4/5PjWTHQbvQgPvkocXZ968v0F2aZhut4nqQjAo63bOwxN
 ryGJYxvS0H3kvOsTgNqCVASNWajObs9MMAzzhGVZ6z7akc02Q9JwaltGmmkYv7pCHiuCqG9q3AAATY0X1asP2hEZlprGj3bOu93fzy8FUKAmvJYV3H5oel1o5NLeJ7bMgfnAt9Mo/U5eQHYYNtf8aEe2bvv4LHZse0PIwXUzq/1/MRUNry1Hp2Fzq72Wt88VDUTl7+uXdnpbxuIWkhuRA69uwLnt83Hv9DWt/3b4UL6lrYlaCwzDgK+v7/Rzz2cuu24BaB7dxy1sU9/QMPrj7dklPUcvwLFNdou907C57zdZ3h8299YMpVRQ1+7tKw7VXPC8tryFxbuOexan189oeV67oekrSUnyWF64Xe6Pb2rdaujRjelvtGShiGyc3Db3+gCg66gcnN6cbi/8ydn4ZOf8z3nJnDLLa0UC0CRNt8t14KMXckKDxy5RtRtS/+FXYT3HLPjRhbq6DK31YB+321+0TLvBz/fl41vnVgNAj1ELcXzzzGvvAV86Bo0D3lmPbiPnjbtUX79OnE5SK1//hWd2ZM76h1pjVA5OOsACwI1D026EmP3a+rd60ivicbvcG49vmlmF6310Gz1fAcAdc9b6tB+afqD1o2ls/cgzDBiVfR8AdInI+spn9ByZY7Qflu5y/XzKZ16a9Bi9EN+b0fmpDBMAbo7IfKTtE7MutHl0BruNyhnwvTPkm46eoxd85neX4ZlPdBw294OQyLw2V2P+/waCldfgs3UggwAAAABJRU5ErkJggg=="/>
+  </head>
+  <body ng-cloak ng-controller="RootCtrl">  
+  
+  <section class="container-fluid">
+    <header class="row" nav-header></header>
+    <server-messages></server-messages>
+  </section>
+  
+  <section class="container-fluid">
+    <div class="row mainUIView" ui-view></div>
+  </section>
+  
+  <script src="js/vendor.min.js"></script>
+  <script src="js/main.min.js"></script>
+  
+  </body>
+</html>