You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by xi...@apache.org on 2015/01/07 22:05:45 UTC
[1/2] ambari git commit: AMBARI-9017. Alerts UI: saving notification
with same name fails w/o informing user.(xiwang)
Repository: ambari
Updated Branches:
refs/heads/trunk 915f0e789 -> 0e1cc1de4
AMBARI-9017. Alerts UI: saving notification with same name fails w/o informing user.(xiwang)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0e1cc1de
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0e1cc1de
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0e1cc1de
Branch: refs/heads/trunk
Commit: 0e1cc1de436c396476f43794d070c2759fd26d95
Parents: f90ac9e
Author: Xi Wang <xi...@apache.org>
Authored: Wed Jan 7 11:58:20 2015 -0800
Committer: Xi Wang <xi...@apache.org>
Committed: Wed Jan 7 12:57:39 2015 -0800
----------------------------------------------------------------------
.../manage_alert_notifications_controller.js | 57 ++++++++++++++++----
ambari-web/app/messages.js | 2 +
.../main/alerts/create_alert_notification.hbs | 6 ++-
...anage_alert_notifications_controller_test.js | 31 +++++++++++
4 files changed, 84 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/0e1cc1de/ambari-web/app/controllers/main/alerts/manage_alert_notifications_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/alerts/manage_alert_notifications_controller.js b/ambari-web/app/controllers/main/alerts/manage_alert_notifications_controller.js
index 2dd442e..2d84994 100644
--- a/ambari-web/app/controllers/main/alerts/manage_alert_notifications_controller.js
+++ b/ambari-web/app/controllers/main/alerts/manage_alert_notifications_controller.js
@@ -350,16 +350,45 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
}.property('controller.inputFields.method.value'),
nameValidation: function () {
- this.set('parentView.hasErrors', !this.get('controller.inputFields.name.value').trim());
+ var newName = this.get('controller.inputFields.name.value').trim();
+ var errorMessage = '';
+ // on editing, save current notification name
+ if (newName && !this.get('currentName')) {
+ this.set('currentName', newName);
+ }
+ if (isEdit) {
+ // edit current alert notification
+ if (!newName) {
+ this.set('nameError', true);
+ errorMessage = Em.I18n.t('alerts.actions.manage_alert_notifications_popup.error.name.empty');
+ } else if (newName && newName != this.get('currentName') && self.get('alertNotifications').mapProperty('name').contains(newName)) {
+ this.set('nameError', true);
+ errorMessage = Em.I18n.t('alerts.actions.manage_alert_notifications_popup.error.name.existed');
+ } else {
+ this.set('nameError', false);
+ }
+ } else {
+ // add new alert notification
+ if (!newName) {
+ this.set('nameError', true);
+ errorMessage = Em.I18n.t('alerts.actions.manage_alert_notifications_popup.error.name.empty');
+ } else if (newName && self.get('alertNotifications').mapProperty('name').contains(newName)) {
+ this.set('nameError', true);
+ errorMessage = Em.I18n.t('alerts.actions.manage_alert_notifications_popup.error.name.existed');
+ } else {
+ this.set('nameError', false);
+ }
+ }
+ this.set('controller.inputFields.name.errorMsg', errorMessage);
}.observes('controller.inputFields.name.value'),
emailToValidation: function () {
var emailTo = this.get('controller.inputFields.email.value');
if (emailTo && !validator.isValidEmail(emailTo)) {
- this.set('parentView.hasErrors', true);
+ this.set('emailToError', true);
this.set('controller.inputFields.email.errorMsg', Em.I18n.t('alerts.notifications.error.email'));
} else {
- this.set('parentView.hasErrors', false);
+ this.set('emailToError', false);
this.set('controller.inputFields.email.errorMsg', null);
}
}.observes('controller.inputFields.email.value'),
@@ -367,10 +396,10 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
emailFromValidation: function () {
var emailFrom = this.get('controller.inputFields.emailFrom.value');
if (emailFrom && !validator.isValidEmail(emailFrom)) {
- this.set('parentView.hasErrors', true);
+ this.set('emailFromError', true);
this.set('controller.inputFields.emailFrom.errorMsg', Em.I18n.t('alerts.notifications.error.email'));
} else {
- this.set('parentView.hasErrors', false);
+ this.set('emailFromError', false);
this.set('controller.inputFields.emailFrom.errorMsg', null);
}
}.observes('controller.inputFields.emailFrom.value'),
@@ -378,10 +407,10 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
smtpPortValidation: function () {
var value = this.get('controller.inputFields.SMTPPort.value');
if (value && (!validator.isValidInt(value) || value < 0)) {
- this.set('parentView.hasErrors', true);
+ this.set('smtpPortError', true);
this.set('controller.inputFields.SMTPPort.errorMsg', Em.I18n.t('alerts.notifications.error.integer'));
} else {
- this.set('parentView.hasErrors', false);
+ this.set('smtpPortError', false);
this.set('controller.inputFields.SMTPPort.errorMsg', null);
}
}.observes('controller.inputFields.SMTPPort.value'),
@@ -389,10 +418,10 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
portValidation: function () {
var value = this.get('controller.inputFields.port.value');
if (value && (!validator.isValidInt(value) || value < 0)) {
- this.set('parentView.hasErrors', true);
+ this.set('portError', true);
this.set('controller.inputFields.port.errorMsg', Em.I18n.t('alerts.notifications.error.integer'));
} else {
- this.set('parentView.hasErrors', false);
+ this.set('portError', false);
this.set('controller.inputFields.port.errorMsg', null);
}
}.observes('controller.inputFields.port.value'),
@@ -401,14 +430,20 @@ App.ManageAlertNotificationsController = Em.Controller.extend({
var passwordValue = this.get('controller.inputFields.SMTPPassword.value');
var retypePasswordValue = this.get('controller.inputFields.retypeSMTPPassword.value');
if (passwordValue !== retypePasswordValue) {
- this.set('parentView.hasErrors', true);
+ this.set('passwordError', true);
this.set('controller.inputFields.retypeSMTPPassword.errorMsg', Em.I18n.t('alerts.notifications.error.retypePassword'));
} else {
- this.set('parentView.hasErrors', false);
+ this.set('passwordError', false);
this.set('controller.inputFields.retypeSMTPPassword.errorMsg', null);
}
}.observes('controller.inputFields.retypeSMTPPassword.value', 'controller.inputFields.SMTPPassword.value'),
+ setParentErrors: function () {
+ var hasErrors = this.get('nameError') || this.get('emailToError') || this.get('emailFromError') ||
+ this.get('smtpPortError') || this.get('portError') || this.get('passwordError');
+ this.set('parentView.hasErrors', hasErrors);
+ }.observes('nameError', 'emailToError', 'emailFromError', 'smtpPortError', 'portError', 'passwordError'),
+
groupsSelectView: Em.Select.extend({
attributeBindings: ['disabled'],
http://git-wip-us.apache.org/repos/asf/ambari/blob/0e1cc1de/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 30b7edb..096662e 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -1903,6 +1903,8 @@ Em.I18n.translations = {
'alerts.actions.manage_alert_notifications_popup.selectAll':'Select All',
'alerts.actions.manage_alert_notifications_popup.confirmDeleteHeader':'Confirm Delete',
'alerts.actions.manage_alert_notifications_popup.confirmDeleteBody':'Are you sure you want to delete {0} notification?',
+ 'alerts.actions.manage_alert_notifications_popup.error.name.empty': 'Notification name is required',
+ 'alerts.actions.manage_alert_notifications_popup.error.name.existed': 'Notification name already exists',
'hosts.host.add':'Add New Hosts',
'hosts.table.noHosts':'No hosts to display',
http://git-wip-us.apache.org/repos/asf/ambari/blob/0e1cc1de/ambari-web/app/templates/main/alerts/create_alert_notification.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/alerts/create_alert_notification.hbs b/ambari-web/app/templates/main/alerts/create_alert_notification.hbs
index 451e3e1..00ba20e 100644
--- a/ambari-web/app/templates/main/alerts/create_alert_notification.hbs
+++ b/ambari-web/app/templates/main/alerts/create_alert_notification.hbs
@@ -22,12 +22,16 @@
{{! alert-notification name }}
- <div class="control-group">
+ <div {{bindAttr class=":control-group controller.inputFields.name.errorMsg:error"}}>
<label class="control-label" for="inputName">{{controller.inputFields.name.label}}</label>
<div class="controls">
{{view Em.TextField valueBinding="controller.inputFields.name.value" id="inputName" class="input-xlarge"}}
</div>
+
+ <div class="controls error-msg">
+ {{controller.inputFields.name.errorMsg}}
+ </div>
</div>
{{! alert-notification name end }}
http://git-wip-us.apache.org/repos/asf/ambari/blob/0e1cc1de/ambari-web/test/controllers/main/alerts/manage_alert_notifications_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/alerts/manage_alert_notifications_controller_test.js b/ambari-web/test/controllers/main/alerts/manage_alert_notifications_controller_test.js
index 831009c..9f3c498 100644
--- a/ambari-web/test/controllers/main/alerts/manage_alert_notifications_controller_test.js
+++ b/ambari-web/test/controllers/main/alerts/manage_alert_notifications_controller_test.js
@@ -352,6 +352,7 @@ describe('App.ManageAlertNotificationsController', function () {
view = controller.showCreateEditPopup().get('bodyClass').create({
controller: Em.Object.create({
inputFields: {
+ name: {},
global: {},
allGroups: {},
SMTPPassword: {},
@@ -404,6 +405,36 @@ describe('App.ManageAlertNotificationsController', function () {
});
+ describe('#nameValidation', function () {
+
+ it('should check inputFields.name.value', function () {
+ view.set('controller.inputFields.name.value', '');
+ expect(view.get('controller.inputFields.name.errorMsg')).to.equal(Em.I18n.t('alerts.actions.manage_alert_notifications_popup.error.name.empty'));
+ expect(view.get('parentView.hasErrors')).to.be.true;
+ });
+
+ it('should check inputFields.name.value', function () {
+ view.set('controller.inputFields.name.errorMsg', 'error');
+ view.set('controller.inputFields.name.value', 'test');
+ expect(view.get('controller.inputFields.name.errorMsg')).to.equal('');
+ });
+
+ it('should check inputFields.name.value', function () {
+ view.set('isEdit', true);
+ view.set('controller.inputFields.name.value', '');
+ expect(view.get('controller.inputFields.name.errorMsg')).to.equal(Em.I18n.t('alerts.actions.manage_alert_notifications_popup.error.name.empty'));
+ expect(view.get('parentView.hasErrors')).to.be.true;
+ });
+
+ it('should check inputFields.name.value', function () {
+ view.set('isEdit', true);
+ view.set('controller.inputFields.name.errorMsg', 'error');
+ view.set('controller.inputFields.name.value', 'test');
+ expect(view.get('controller.inputFields.name.errorMsg')).to.equal('');
+ });
+
+ });
+
describe('#retypePasswordValidation', function () {
it('should check inputFields.retypeSMTPPassword.value', function () {
[2/2] ambari git commit: AMBARI-9013. Alerts UI: type=aggregate
should have interval as editable.(xiwang)
Posted by xi...@apache.org.
AMBARI-9013. Alerts UI: type=aggregate should have interval as editable.(xiwang)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f90ac9e6
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f90ac9e6
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f90ac9e6
Branch: refs/heads/trunk
Commit: f90ac9e67eb5d2348b8e5ec5a13fd53090e11d7f
Parents: 915f0e7
Author: Xi Wang <xi...@apache.org>
Authored: Tue Jan 6 13:07:58 2015 -0800
Committer: Xi Wang <xi...@apache.org>
Committed: Wed Jan 7 12:57:39 2015 -0800
----------------------------------------------------------------------
.../app/controllers/main/alerts/definition_configs_controller.js | 3 +++
.../main/alerts/definitions_configs_controller_test.js | 3 ++-
2 files changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/f90ac9e6/ambari-web/app/controllers/main/alerts/definition_configs_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/alerts/definition_configs_controller.js b/ambari-web/app/controllers/main/alerts/definition_configs_controller.js
index 264f6d1..ca29fdd 100644
--- a/ambari-web/app/controllers/main/alerts/definition_configs_controller.js
+++ b/ambari-web/app/controllers/main/alerts/definition_configs_controller.js
@@ -304,6 +304,9 @@ App.MainAlertDefinitionConfigsController = Em.Controller.extend({
App.AlertConfigProperties.Description.create({
value: isWizard ? '' : alertDefinition.get('description')
}),
+ App.AlertConfigProperties.Interval.create({
+ value: isWizard ? '' : alertDefinition.get('interval')
+ }),
App.AlertConfigProperties.Thresholds.OkThreshold.create({
label: 'Thresholds',
showInputForValue: false,
http://git-wip-us.apache.org/repos/asf/ambari/blob/f90ac9e6/ambari-web/test/controllers/main/alerts/definitions_configs_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/alerts/definitions_configs_controller_test.js b/ambari-web/test/controllers/main/alerts/definitions_configs_controller_test.js
index 0ea85e6..ac06de7 100644
--- a/ambari-web/test/controllers/main/alerts/definitions_configs_controller_test.js
+++ b/ambari-web/test/controllers/main/alerts/definitions_configs_controller_test.js
@@ -283,6 +283,7 @@ describe('App.MainAlertDefinitionConfigsController', function () {
controller.set('content', Em.Object.create({
name: 'alertDefinitionName',
description: 'alertDefinitionDescription',
+ interval: 60,
reporting: [
Em.Object.create({
type: 'warning',
@@ -301,7 +302,7 @@ describe('App.MainAlertDefinitionConfigsController', function () {
var result = controller.renderAggregateConfigs();
- expect(result.length).to.equal(4);
+ expect(result.length).to.equal(5);
});
});