Repository: ambari Updated Branches: refs/heads/trunk c61c920bc -> e813af2fe
AMBARI-10087 Refactor existing configs to support tabs of configs with Advanced tab. (ababiichuk) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/e813af2f Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/e813af2f Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/e813af2f Branch: refs/heads/trunk Commit: e813af2fe942fba96627f54744d9ee758d328830 Parents: c61c920 Author: aBabiichuk <[email protected]> Authored: Mon Mar 16 19:35:05 2015 +0200 Committer: aBabiichuk <[email protected]> Committed: Mon Mar 16 20:43:32 2015 +0200 ---------------------------------------------------------------------- .../templates/common/configs/service_config.hbs | 46 ++++++++++++---- .../common/configs/service_config_wizard.hbs | 32 +++++++++-- .../views/common/configs/service_config_view.js | 56 +++++++++++++++++++- 3 files changed, 120 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/e813af2f/ambari-web/app/templates/common/configs/service_config.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/common/configs/service_config.hbs b/ambari-web/app/templates/common/configs/service_config.hbs index fa1d006..120a985 100644 --- a/ambari-web/app/templates/common/configs/service_config.hbs +++ b/ambari-web/app/templates/common/configs/service_config.hbs @@ -83,15 +83,43 @@ {{/if}} {{#if versionLoaded}} - {{#each category in selectedService.configCategories}} - <div class="accordion"> - {{#if category.isCustomView}} - {{view category.customView categoryBinding="category" serviceBinding="selectedService" canEditBinding="view.canEdit" serviceConfigsBinding="selectedService.configs"}} - {{else}} - {{view App.ServiceConfigsByCategoryView categoryBinding="category" canEditBinding="view.canEdit" serviceBinding="selectedService" serviceConfigsBinding="selectedService.configs" supportsHostOverridesBinding="view.supportsHostOverrides"}} - {{/if}} - </div> - {{/each}} + {{#if view.supportsConfigLayout}} + <ul class="nav nav-tabs"> + {{#each tab in view.tabs}} + <li {{bindAttr class="tab.isActive:active" }}><a href="#" {{bindAttr data-target="tab.className"}} data-toggle="tab">{{tab.displayName}}</a></li> + {{/each}} + </ul> + + {{#each tab in view.tabs}} + <div {{bindAttr class=":tab-pane tab.isActive:active tab.id"}}> + {{#if tab.isAdvanced}} + {{#each category in selectedService.configCategories}} + <div class="accordion"> + {{#if category.isCustomView}} + {{view category.customView categoryBinding="category" serviceBinding="selectedService" canEditBinding="view.canEdit" serviceConfigsBinding="selectedService.configs"}} + {{else}} + {{view App.ServiceConfigsByCategoryView categoryBinding="category" canEditBinding="view.canEdit" serviceBinding="selectedService" serviceConfigsBinding="selectedService.configs" supportsHostOverridesBinding="view.supportsHostOverrides"}} + {{/if}} + </div> + {{/each}} + {{else}} + {{! + @TODO Fancy Config view goes here + }} + {{/if}} + </div> + {{/each}} + {{else}} + {{#each category in selectedService.configCategories}} + <div class="accordion"> + {{#if category.isCustomView}} + {{view category.customView categoryBinding="category" serviceBinding="selectedService" canEditBinding="view.canEdit" serviceConfigsBinding="selectedService.configs"}} + {{else}} + {{view App.ServiceConfigsByCategoryView categoryBinding="category" canEditBinding="view.canEdit" serviceBinding="selectedService" serviceConfigsBinding="selectedService.configs" supportsHostOverridesBinding="view.supportsHostOverrides"}} + {{/if}} + </div> + {{/each}} + {{/if}} {{else}} <div class="spinner"></div> {{/if}} http://git-wip-us.apache.org/repos/asf/ambari/blob/e813af2f/ambari-web/app/templates/common/configs/service_config_wizard.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/common/configs/service_config_wizard.hbs b/ambari-web/app/templates/common/configs/service_config_wizard.hbs index 3b4cb5b..576c548 100644 --- a/ambari-web/app/templates/common/configs/service_config_wizard.hbs +++ b/ambari-web/app/templates/common/configs/service_config_wizard.hbs @@ -48,8 +48,32 @@ </div> {{/if}} -<div class="accordion"> - {{#each catView in view.serviceConfigsByCategoryView.childViews}} - {{view catView}} +{{#if view.supportsConfigLayout}} + <ul class="nav nav-tabs"> + {{#each tab in view.tabs}} + <li {{bindAttr class="tab.isActive:active" }}><a href="#" {{bindAttr data-target="tab.className"}} data-toggle="tab">{{tab.displayName}}</a></li> + {{/each}} + </ul> + + {{#each tab in view.tabs}} + <div {{bindAttr class=":tab-pane tab.isActive:active tab.id"}}> + {{#if tab.isAdvanced}} + <div class="accordion"> + {{#each catView in view.serviceConfigsByCategoryView.childViews}} + {{view catView}} + {{/each}} + </div> + {{else}} + {{! + @TODO Fancy Config view goes here + }} + {{/if}} + </div> {{/each}} -</div> +{{else}} + <div class="accordion"> + {{#each catView in view.serviceConfigsByCategoryView.childViews}} + {{view catView}} + {{/each}} + </div> +{{/if}} http://git-wip-us.apache.org/repos/asf/ambari/blob/e813af2f/ambari-web/app/views/common/configs/service_config_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/common/configs/service_config_view.js b/ambari-web/app/views/common/configs/service_config_view.js index d97ef6d..ec11fe5 100644 --- a/ambari-web/app/views/common/configs/service_config_view.js +++ b/ambari-web/app/views/common/configs/service_config_view.js @@ -36,6 +36,18 @@ App.ServiceConfigView = Em.View.extend({ return false; } }.property('controller.name', 'controller.selectedService'), + + /** + * Check for layout config supports. + * @returns {Boolean} + */ + supportsConfigLayout: function() { + var supportedControllers = ['wizardStep7Controller', 'mainServiceInfoConfigsController']; + var unSupportedServices = ['MISC']; + + return supportedControllers.contains(this.get('controllerName')) || !unSupportedServices.contains(this.get('controller.selectedService.serviceName')); + }.property('controller.name', 'controller.selectedService'), + showConfigHistoryFeature: false, toggleRestartMessageView: function () { this.$('.service-body').toggle('blind', 200); @@ -71,5 +83,47 @@ App.ServiceConfigView = Em.View.extend({ }.observes( 'App.router.mainServiceInfoConfigsController.selectedConfigGroup.name', 'App.router.wizardStep7Controller.selectedConfigGroup.name' - ) + ), + + // TODO remove workaround for `Advanced` tab after Tab model implementation + /** + * Create `Advanced` tab which is not related to fancy tab section. + * This tab contains properties without widgets. + * + * @returns {Ember.Object} + */ + getAdvancedTab: function() { + var tabId = 'advanced-' + this.get('controller.selectedService.serviceName').toLowerCase() + '-tab'; + return this.createTabObject(Em.Object.create({ + id: tabId, + name: Em.I18n.t('common.advanced') + })); + }, + + /** + * @param {Ember.Object} model + * @returns {Ember.Object} + */ + createTabObject: function(model) { + return Em.Object.create({ + id: model.get('id'), + displayName: model.get('name'), + tabClassName: '.' + model.get('id'), + isAdvanced: model.get('name') == Em.I18n.t('common.advanced') + }); + }, + + /** + * Object that used for Twitter Bootstrap tabs markup. + * + * @returns {Ember.A} + */ + tabs: function() { + var tabs = Em.A([]); + // filter Tab models by service name and create object here + tabs.pushObject(this.getAdvancedTab()); + // make first tab active + tabs.get('firstObject').set('isActive', true); + return tabs; + }.property('controller.selectedService.serviceName') });
