You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ak...@apache.org on 2014/05/19 20:21:58 UTC

git commit: AMBARI-5812. Add 'Create App' wizard to Slider Apps view. (akovalenko)

Repository: ambari
Updated Branches:
  refs/heads/trunk 4abd45570 -> dd85e2feb


AMBARI-5812. Add 'Create App' wizard to Slider Apps view. (akovalenko)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/dd85e2fe
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/dd85e2fe
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/dd85e2fe

Branch: refs/heads/trunk
Commit: dd85e2feb69bbe1c57d17cd60b69a2a3e111d9b1
Parents: 4abd455
Author: Aleksandr Kovalenko <ak...@hortonworks.com>
Authored: Mon May 19 21:17:26 2014 +0300
Committer: Aleksandr Kovalenko <ak...@hortonworks.com>
Committed: Mon May 19 21:21:18 2014 +0300

----------------------------------------------------------------------
 .../src/main/resources/ui/app/config/router.js  | 12 +++-
 .../ui/app/controllers/createAppWizard.js       | 51 ++++++++++++++
 .../createAppWizard/createAppWizard.js          | 21 ++++++
 .../resources/ui/app/routes/createAppWizard.js  | 35 ++++++++++
 .../src/main/resources/ui/app/routes/main.js    | 10 ++-
 .../resources/ui/app/styles/application.less    | 33 +++++++++
 .../ui/app/templates/createAppWizard.hbs        | 46 +++++++++++++
 .../ui/app/templates/createAppWizard/step1.hbs  | 31 +++++++++
 .../ui/app/templates/createAppWizard/step2.hbs  | 54 +++++++++++++++
 .../ui/app/templates/createAppWizard/step3.hbs  | 24 +++++++
 .../ui/app/templates/createAppWizard/step4.hbs  | 39 +++++++++++
 .../resources/ui/app/templates/slider_apps.hbs  |  5 +-
 .../src/main/resources/ui/app/translations.js   |  8 ++-
 .../resources/ui/app/views/createAppWizard.js   | 70 ++++++++++++++++++++
 14 files changed, 432 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/dd85e2fe/contrib/views/slider/src/main/resources/ui/app/config/router.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/config/router.js b/contrib/views/slider/src/main/resources/ui/app/config/router.js
index cf5068f..5a6eaa6 100755
--- a/contrib/views/slider/src/main/resources/ui/app/config/router.js
+++ b/contrib/views/slider/src/main/resources/ui/app/config/router.js
@@ -18,6 +18,14 @@
 
 'use strict';
 
-module.exports = App.Router.map(function() {
-  this.resource("slider_apps", { path: "/slider" });
+module.exports = App.Router.map(function () {
+  this.resource("slider_apps", { path: "/slider" }, function () {
+    this.resource('createAppWizard', function(){
+      this.route('step1');
+      this.route('step2');
+      this.route('step3');
+      this.route('step4');
+    });
+  });
 });
+

http://git-wip-us.apache.org/repos/asf/ambari/blob/dd85e2fe/contrib/views/slider/src/main/resources/ui/app/controllers/createAppWizard.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/controllers/createAppWizard.js b/contrib/views/slider/src/main/resources/ui/app/controllers/createAppWizard.js
new file mode 100644
index 0000000..664ff6a
--- /dev/null
+++ b/contrib/views/slider/src/main/resources/ui/app/controllers/createAppWizard.js
@@ -0,0 +1,51 @@
+/**
+ * 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.
+ */
+
+App.CreateAppWizardController = Ember.ObjectController.extend({
+
+  currentStep: 1,
+
+  TOTAL_STEPS_NUMBER: 4,
+
+  loadStep: function () {
+    this.set('currentStep', 1);
+    this.gotoStep(this.get('currentStep'));
+  },
+
+  gotoStep: function (step, fromNextButon) {
+    if (step > this.get('TOTAL_STEPS_NUMBER') || step < 1 || (!fromNextButon && step > this.get('currentStep'))) {
+      return false;
+    }
+    this.set('currentStep', step);
+    this.transitionToRoute('createAppWizard.step' + step);
+  },
+
+  nextStep: function () {
+    this.gotoStep(this.get('currentStep') + 1, true);
+  },
+
+  prevStep: function () {
+    this.gotoStep(this.get('currentStep') - 1);
+  },
+
+  actions: {
+    gotoStep: function (step) {
+      this.gotoStep(step);
+    }
+  }
+});

http://git-wip-us.apache.org/repos/asf/ambari/blob/dd85e2fe/contrib/views/slider/src/main/resources/ui/app/controllers/createAppWizard/createAppWizard.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/controllers/createAppWizard/createAppWizard.js b/contrib/views/slider/src/main/resources/ui/app/controllers/createAppWizard/createAppWizard.js
new file mode 100644
index 0000000..2209646
--- /dev/null
+++ b/contrib/views/slider/src/main/resources/ui/app/controllers/createAppWizard/createAppWizard.js
@@ -0,0 +1,21 @@
+/**
+ * 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.
+ */
+
+App.CreateAppWizardStep1Controller = Ember.ObjectController.extend({
+  types: ['HBase', 'Pig']
+});

http://git-wip-us.apache.org/repos/asf/ambari/blob/dd85e2fe/contrib/views/slider/src/main/resources/ui/app/routes/createAppWizard.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/routes/createAppWizard.js b/contrib/views/slider/src/main/resources/ui/app/routes/createAppWizard.js
new file mode 100644
index 0000000..1392067
--- /dev/null
+++ b/contrib/views/slider/src/main/resources/ui/app/routes/createAppWizard.js
@@ -0,0 +1,35 @@
+/**
+ * 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.
+ */
+App.CreateAppWizardRoute = Ember.Route.extend({
+
+  controller: null,
+
+  setupController: function (controller) {
+    this.set('controller', controller);
+  },
+
+  actions: {
+    nextStep: function () {
+      this.get('controller').nextStep();
+    },
+
+    prevStep: function () {
+      this.get('controller').prevStep();
+    }
+  }
+});

http://git-wip-us.apache.org/repos/asf/ambari/blob/dd85e2fe/contrib/views/slider/src/main/resources/ui/app/routes/main.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/routes/main.js b/contrib/views/slider/src/main/resources/ui/app/routes/main.js
index 22807b8..04831b9 100644
--- a/contrib/views/slider/src/main/resources/ui/app/routes/main.js
+++ b/contrib/views/slider/src/main/resources/ui/app/routes/main.js
@@ -17,13 +17,19 @@
  */
 
 App.IndexRoute = Ember.Route.extend({
-  redirect: function() {
+  redirect: function () {
     this.transitionTo('slider_apps');
   }
 });
 
 App.SliderAppsRoute = Ember.Route.extend({
-  setupController: function(controller) {
+  setupController: function (controller) {
     controller.set('model', App.SliderApp.FIXTURES);
+  },
+
+  actions: {
+    createApp: function () {
+      this.transitionTo('createAppWizard');
+    }
   }
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/dd85e2fe/contrib/views/slider/src/main/resources/ui/app/styles/application.less
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/styles/application.less b/contrib/views/slider/src/main/resources/ui/app/styles/application.less
index 72bcd4a..1edc9e9 100644
--- a/contrib/views/slider/src/main/resources/ui/app/styles/application.less
+++ b/contrib/views/slider/src/main/resources/ui/app/styles/application.less
@@ -301,4 +301,37 @@
   .table-bordered  {
     border-left:1px solid #dddddd;
   }
+}
+
+#createAppWizard {
+  width: 60%;
+  margin: -250px 0 auto;
+  left: 20%;
+
+  .next-btn {
+    margin-left: 5px;
+  }
+  .type-select {
+    width: 90%;
+    min-height: 250px;
+  }
+  #app-name-input {
+    margin-left: 10px;
+  }
+  #configs-text-area {
+    width: 98%;
+    height: 225px;
+  }
+  #step4 {
+    ul {
+      list-style: none;
+    }
+  }
+  .step2-input {
+    width: 80%;
+    margin: 5% 10%;
+  }
+  .components-table {
+    margin-bottom: 30px;
+  }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/dd85e2fe/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard.hbs b/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard.hbs
new file mode 100644
index 0000000..20efa2b
--- /dev/null
+++ b/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard.hbs
@@ -0,0 +1,46 @@
+{{!
+* 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" id="createAppWizard">
+  <div class="modal-header">
+    <button type="button" class="close" {{action hide target="view"}}>&times;</button>
+    <h3 id="myModalLabel">{{t wizard.name}}</h3>
+  </div>
+  <div class="modal-body">
+    <div class="wizard">
+      <div class="container">
+        <div class="container-fluid">
+          <div class="row-fluid">
+            <div class="span3">
+              <div class="well">
+                <ul class="nav nav-pills nav-stacked">
+                  <li {{bindAttr class="view.isStep1:active view.isStep1Disabled:disabled"}}><a href="javascript:void(null);" {{action gotoStep 1 target="controller"}}>{{t wizard.step1.name}}</a></li>
+                  <li {{bindAttr class="view.isStep2:active view.isStep2Disabled:disabled"}}><a href="javascript:void(null);" {{action gotoStep 2 target="controller"}}>{{t wizard.step2.name}}</a></li>
+                  <li {{bindAttr class="view.isStep3:active view.isStep3Disabled:disabled"}}><a href="javascript:void(null);" {{action gotoStep 3 target="controller"}}>{{t wizard.step3.name}}</a></li>
+                  <li {{bindAttr class="view.isStep4:active view.isStep4Disabled:disabled"}}><a href="javascript:void(null);" {{action gotoStep 4 target="controller"}}>{{t wizard.step4.name}}</a></li>
+                </ul>
+              </div>
+            </div>
+            <div class="wizard-content well span9">
+              {{outlet}}
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/dd85e2fe/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard/step1.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard/step1.hbs b/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard/step1.hbs
new file mode 100644
index 0000000..5031603
--- /dev/null
+++ b/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard/step1.hbs
@@ -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.
+}}
+<h4>Available Types</h4>
+<div class="row-fluid">
+  <div class="span6">
+    {{view Ember.Select contentBinding="controller.types" multiple="true" class="type-select"}}
+  </div>
+  <div class="span6">
+  <label>Name: {{input id="app-name-input"}}</label>
+    <h5>Description:</h5>
+    <p>
+      Deploys HBase cluster on YARN.
+    </p>
+  </div>
+</div>
+<button class="btn btn-success pull-right next-btn" {{action nextStep target="controller"}}>Next</button>

http://git-wip-us.apache.org/repos/asf/ambari/blob/dd85e2fe/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard/step2.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard/step2.hbs b/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard/step2.hbs
new file mode 100644
index 0000000..271af97
--- /dev/null
+++ b/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard/step2.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.
+}}
+
+<p>
+  HBase	applica;on	requires	resources	to	be	allocated	on	the	cluster.
+  Provide	resource	allocation	requests	for	each	component	of	the	application	below.
+</p>
+<table class="components-table">
+  <thead>
+  <tr>
+    <th></th>
+    <th>
+      Number of Instances
+    </th>
+    <th>
+      YARN Memory (MB)
+    </th>
+    <th>
+      YARN CPU Cores
+    </th>
+  </tr>
+  </thead>
+  <tbody>
+  <tr>
+    <td>HBASE_MASTER</td>
+    <td>{{input class="step2-input"}}</td>
+    <td>{{input class="step2-input"}}</td>
+    <td>{{input class="step2-input"}}</td>
+  </tr>
+  <tr>
+    <td>HBASE_REGIONSERVER</td>
+    <td>{{input class="step2-input"}}</td>
+    <td>{{input class="step2-input"}}</td>
+    <td>{{input class="step2-input"}}</td>
+  </tr>
+  </tbody>
+</table>
+<button class="btn btn-success pull-right next-btn" {{action nextStep}}>Next</button>
+<button class="btn pull-right" {{action prevStep}}>Back</button>

http://git-wip-us.apache.org/repos/asf/ambari/blob/dd85e2fe/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard/step3.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard/step3.hbs b/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard/step3.hbs
new file mode 100644
index 0000000..4662bd3
--- /dev/null
+++ b/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard/step3.hbs
@@ -0,0 +1,24 @@
+{{!
+* 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.
+}}
+
+<p>
+  Provide configuration details for HBase application
+</p>
+{{view Ember.TextArea id="configs-text-area"}}
+<button class="btn btn-success pull-right next-btn" {{action nextStep}}>Next</button>
+<button class="btn pull-right" {{action prevStep}}>Back</button>

http://git-wip-us.apache.org/repos/asf/ambari/blob/dd85e2fe/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard/step4.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard/step4.hbs b/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard/step4.hbs
new file mode 100644
index 0000000..7fd39cb
--- /dev/null
+++ b/contrib/views/slider/src/main/resources/ui/app/templates/createAppWizard/step4.hbs
@@ -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 id="step4">
+<h5>Summary</h5>
+<ul>
+  <li>App Name: HBase Cluster 1</li>
+  <li>App Type: HBase</li>
+</ul>
+<h5>Components</h5>
+<ul>
+  <li>HBASE_MASTER: 1</li>
+  <li>HBASE_REGION_SERVER: 5</li>
+</ul>
+<h5>Configuration</h5>
+<ul>
+  <li>"site.global.app_user": "yarn",</li>
+  <li>"site.global.app_log_dir": "${AGENT_LOG_ROOT}/app/log",</li>
+  <li>"site.global.app_pid_dir": "${AGENT_WORK_ROOT}/app/run”,</li>
+  <li>"site.hbase-site.hbase.hstore.flush.retries.number": "120",</li>
+</ul>
+
+<button class="btn btn-success pull-right" {{action finish target="view"}}>Finish</button>
+</div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/dd85e2fe/contrib/views/slider/src/main/resources/ui/app/templates/slider_apps.hbs
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/templates/slider_apps.hbs b/contrib/views/slider/src/main/resources/ui/app/templates/slider_apps.hbs
index a56b468..3844857 100644
--- a/contrib/views/slider/src/main/resources/ui/app/templates/slider_apps.hbs
+++ b/contrib/views/slider/src/main/resources/ui/app/templates/slider_apps.hbs
@@ -22,7 +22,7 @@
       <h1>{{t slider.apps.title}}</h1>
     </div>
     <div class="pull-right create-app">
-      <a href="#" class="btn btn-inverse">
+      <a href="#" class="btn btn-inverse" {{action createApp}}>
         <i class="icon-plus"></i><span>&nbsp;{{t slider.apps.create}}</span>
       </a>
     </div>
@@ -89,4 +89,5 @@
       {{view view.paginationRight}}
     </div>
   </div>
-</div>
\ No newline at end of file
+</div>
+{{outlet}}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/dd85e2fe/contrib/views/slider/src/main/resources/ui/app/translations.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/translations.js b/contrib/views/slider/src/main/resources/ui/app/translations.js
index 032a8d1..f4a7401 100644
--- a/contrib/views/slider/src/main/resources/ui/app/translations.js
+++ b/contrib/views/slider/src/main/resources/ui/app/translations.js
@@ -33,5 +33,11 @@ Em.I18n.translations = {
 
   'slider.apps.title': 'Slider Apps',
   'slider.apps.create': 'Create App',
-  'sliderApps.filters.info': '{0} of {1} sliders showing'
+  'sliderApps.filters.info': '{0} of {1} sliders showing',
+
+  'wizard.name': 'Create Slider App',
+  'wizard.step1.name': 'Select Type',
+  'wizard.step2.name': 'Allocate Resources',
+  'wizard.step3.name': 'Configuration',
+  'wizard.step4.name': 'Deploy'
 };
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ambari/blob/dd85e2fe/contrib/views/slider/src/main/resources/ui/app/views/createAppWizard.js
----------------------------------------------------------------------
diff --git a/contrib/views/slider/src/main/resources/ui/app/views/createAppWizard.js b/contrib/views/slider/src/main/resources/ui/app/views/createAppWizard.js
new file mode 100644
index 0000000..3a6f1b6
--- /dev/null
+++ b/contrib/views/slider/src/main/resources/ui/app/views/createAppWizard.js
@@ -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.
+ */
+
+App.CreateAppWizardView = Ember.View.extend({
+
+  didInsertElement: function(){
+    this.get('controller').loadStep();
+  },
+
+  isStep1: function () {
+    return this.get('controller.currentStep') == 1;
+  }.property('controller.currentStep'),
+
+  isStep2: function () {
+    return this.get('controller.currentStep') == 2;
+  }.property('controller.currentStep'),
+
+  isStep3: function () {
+    return this.get('controller.currentStep') == 3;
+  }.property('controller.currentStep'),
+
+  isStep4: function () {
+    return this.get('controller.currentStep') == 4;
+  }.property('controller.currentStep'),
+
+  isStep1Disabled: function () {
+    return this.get('controller.currentStep') < 1;
+  }.property('controller.currentStep'),
+
+  isStep2Disabled: function () {
+    return this.get('controller.currentStep') < 2;
+  }.property('controller.currentStep'),
+
+  isStep3Disabled: function () {
+    return this.get('controller.currentStep') < 3;
+  }.property('controller.currentStep'),
+
+  isStep4Disabled: function () {
+    return this.get('controller.currentStep') < 4;
+  }.property('controller.currentStep'),
+
+  actions: {
+    hide: function () {
+      this.hidePopup();
+    },
+    finish: function () {
+      this.hidePopup();
+    }
+  },
+
+  hidePopup: function () {
+    $(this.get('element')).find('.modal').hide();
+    this.get('controller').transitionToRoute('slider_apps');
+  }
+});