Updated Branches: refs/heads/trunk 3d404d8ef -> 33bf2302c
AMBARI-3907. Restart message should have correct message for single hosts/components. (Denys Buzhor via akovalenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/33bf2302 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/33bf2302 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/33bf2302 Branch: refs/heads/trunk Commit: 33bf2302c7eeb76d251146fe2859c6315ae0d5e9 Parents: 3d404d8 Author: Aleksandr Kovalenko <[email protected]> Authored: Thu Nov 28 14:15:44 2013 +0200 Committer: Aleksandr Kovalenko <[email protected]> Committed: Thu Nov 28 14:15:44 2013 +0200 ---------------------------------------------------------------------- ambari-web/app/messages.js | 2 +- .../app/templates/main/service/info/configs.hbs | 2 +- ambari-web/app/utils/helper.js | 38 +++++++++++++++++++- ambari-web/app/views/main/host/summary.js | 12 +++++-- ambari-web/app/views/main/service/menu.js | 16 +++++++-- 5 files changed, 62 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/33bf2302/ambari-web/app/messages.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js index 693dfca..3d9eb34 100644 --- a/ambari-web/app/messages.js +++ b/ambari-web/app/messages.js @@ -1324,7 +1324,7 @@ Em.I18n.translations = { 'hosts.host.summary.addComponent':'Add Component', 'hosts.host.details.hostActions':'Host Actions', - 'hosts.host.details.needToRestart':'Host needs {0} components restarted', + 'hosts.host.details.needToRestart':'Host needs {0} {1} restarted', 'hosts.host.details.needToRestart.button':'Restart components', 'hosts.host.details.needToRestart.stopButton':'Stop Components', 'hosts.host.details.needToRestart.startButton':'Start Components', http://git-wip-us.apache.org/repos/asf/ambari/blob/33bf2302/ambari-web/app/templates/main/service/info/configs.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/main/service/info/configs.hbs b/ambari-web/app/templates/main/service/info/configs.hbs index b87321f..655ab98 100644 --- a/ambari-web/app/templates/main/service/info/configs.hbs +++ b/ambari-web/app/templates/main/service/info/configs.hbs @@ -23,7 +23,7 @@ {{#if App.isAdmin}} <div> <div class="alert alert-warning clearfix"> - <i class="icon-refresh"></i> {{{view.needToRestartMessage}}} {{t services.service.config.restartService.needToRestart}} <a href="#" {{action showComponentsShouldBeRestarted target="controller"}}>{{view.componentsCount}} {{t common.components}}</a> {{t on}} <a href="#" {{action showHostsShouldBeRestarted target="controller"}}>{{view.hostsCount}} {{t dashboard.services.hosts}}</a> {{t services.service.config.restartService.needToRestartEnd}} + <i class="icon-refresh"></i> {{{view.needToRestartMessage}}} {{t services.service.config.restartService.needToRestart}} <a href="#" {{action showComponentsShouldBeRestarted target="controller"}}>{{view.componentsCount}} {{pluralize view.componentsCount "t:common.component" "t:common.components"}}</a> {{t on}} <a href="#" {{action showHostsShouldBeRestarted target="controller"}}>{{view.hostsCount}} {{pluralize view.hostsCount "t:common.host" "t:common.hosts"}}</a> {{t services.service.config.restartService.needToRestartEnd}} <button {{bindAttr class=":btn :restart-components :pull-right view.startComponentsIsDisabled::btn-success view.startComponentsIsDisabled:disabled" }} {{action restartComponents target="controller"}}> {{t hosts.host.details.needToRestart.startButton}} http://git-wip-us.apache.org/repos/asf/ambari/blob/33bf2302/ambari-web/app/utils/helper.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/helper.js b/ambari-web/app/utils/helper.js index f86a2be..5f7fbbd 100644 --- a/ambari-web/app/utils/helper.js +++ b/ambari-web/app/utils/helper.js @@ -99,6 +99,42 @@ Em.Handlebars.registerHelper('highlight', function (property, words, fn) { return new Em.Handlebars.SafeString(property); }) + +/* + * Return singular or plural word based on Em.I18n property key. + * @param count - integer count property *required + * @param singular - singular version of word, for example "t:common.host" *required + * @param plural - plural version of word *required + * @return {String} + * + * Example: {{pluralize hostsCount "t:host" "t:hosts"}} + */ +Em.Handlebars.registerHelper('pluralize', function(count, singular, plural, fn) { + var context = (fn.contexts && fn.contexts[0]) || this; + count = Em.Handlebars.getPath(context, count, fn); + + tDetect = function(word, keyOnly) { + var splitted = word.split(':'); + if (splitted.length > 1 && splitted[0] == 't') { + if (keyOnly) { + return splitted[1]; + } + return Em.I18n.t(splitted[1]); + } else { + return splitted[0]; + } + } + singular = tDetect(singular); + plural = tDetect(plural); + if (singular && plural) { + if (count > 1) { + return plural; + } else { + return singular; + } + } +}); + /** * Replace {i} with argument. where i is number of argument to replace with * @return {String} @@ -368,4 +404,4 @@ App.popover = function(self, options) { self.on("remove", function () { $(this).trigger('mouseleave'); }); -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ambari/blob/33bf2302/ambari-web/app/views/main/host/summary.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/host/summary.js b/ambari-web/app/views/main/host/summary.js index ea7bee8..d281197 100644 --- a/ambari-web/app/views/main/host/summary.js +++ b/ambari-web/app/views/main/host/summary.js @@ -57,7 +57,15 @@ App.MainHostSummaryView = Em.View.extend({ }.property('[email protected]'), needToRestartMessage: function() { - return Em.I18n.t('hosts.host.details.needToRestart').format(this.get('needToRestartComponentsCount')); + var componentsCount, word; + this.set('needToRestartComponentsCount', 1); + componentsCount = this.get('needToRestartComponentsCount'); + if (componentsCount > 1) { + word = Em.I18n.t('common.components').toLowerCase(); + } else { + word = Em.I18n.t('common.component').toLowerCase(); + } + return Em.I18n.t('hosts.host.details.needToRestart').format(this.get('needToRestartComponentsCount'), word); }.property('needToRestartComponentsCount'), /** @@ -480,4 +488,4 @@ App.MainHostSummaryView = Em.View.extend({ } return ""; }.property('content.lastHeartBeatTime') -}); \ No newline at end of file +}); http://git-wip-us.apache.org/repos/asf/ambari/blob/33bf2302/ambari-web/app/views/main/service/menu.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/service/menu.js b/ambari-web/app/views/main/service/menu.js index f7cf9d5..4dfa693 100644 --- a/ambari-web/app/views/main/service/menu.js +++ b/ambari-web/app/views/main/service/menu.js @@ -80,7 +80,7 @@ App.MainServiceMenuView = Em.CollectionView.extend({ }.property('App.router.clusterController.alerts'), refreshRestartRequiredMessage: function() { - var restarted, componentsCount, hostsCount, message; + var restarted, componentsCount, hostsCount, message, tHosts, tComponents; restarted = this.get('content.restartRequiredHostsAndComponents'); componentsCount = 0; hostsCount = 0; @@ -89,8 +89,18 @@ App.MainServiceMenuView = Em.CollectionView.extend({ hostsCount++; componentsCount += restarted[host].length; } - message += componentsCount + ' ' + Em.I18n.t('common.components') + ' ' + Em.I18n.t('on') + ' ' + - hostsCount + ' ' + Em.I18n.t('common.hosts') + ' ' + Em.I18n.t('services.service.config.restartService.needToRestartEnd'); + if (hostsCount > 1) { + tHosts = Em.I18n.t('common.hosts'); + } else { + tHosts = Em.I18n.t('common.host'); + } + if (componentsCount > 1) { + tComponents = Em.I18n.t('common.components'); + } else { + tComponents = Em.I18n.t('common.component'); + } + message += componentsCount + ' ' + tComponents + ' ' + Em.I18n.t('on') + ' ' + + hostsCount + ' ' + tHosts + ' ' + Em.I18n.t('services.service.config.restartService.needToRestartEnd'); this.set('restartRequiredMessage', message); }.observes('content.restartRequiredHostsAndComponents') })
