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 <[email protected]> Authored: Mon May 19 21:17:26 2014 +0300 Committer: Aleksandr Kovalenko <[email protected]> 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"}}>×</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> {{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'); + } +});
