You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by yu...@apache.org on 2012/10/04 01:49:00 UTC
svn commit: r1393835 [1/2] - in /incubator/ambari/branches/AMBARI-666: ./
ambari-web/app/ ambari-web/app/controllers/
ambari-web/app/controllers/installer/ ambari-web/app/controllers/main/
ambari-web/app/controllers/main/admin/ ambari-web/app/controlle...
Author: yusaku
Date: Wed Oct 3 23:48:57 2012
New Revision: 1393835
URL: http://svn.apache.org/viewvc?rev=1393835&view=rev
Log:
AMBARI-802. Enhance Cluster Management pages. (yusaku)
Added:
incubator/ambari/branches/AMBARI-666/ambari-web/app/data/mock/service_components.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/common/grid/filter.hbs
incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/common/grid/pager.hbs
incubator/ambari/branches/AMBARI-666/ambari-web/app/views/common/grid.js
incubator/ambari/branches/AMBARI-666/ambari-web/test/main/
incubator/ambari/branches/AMBARI-666/ambari-web/test/main/dashboard_test.js
incubator/ambari/branches/AMBARI-666/ambari-web/test/main/host/
incubator/ambari/branches/AMBARI-666/ambari-web/test/main/host/details_test.js
incubator/ambari/branches/AMBARI-666/ambari-web/test/main/host_test.js
incubator/ambari/branches/AMBARI-666/ambari-web/test/main/item_test.js
incubator/ambari/branches/AMBARI-666/ambari-web/test/utils/form_field_test.js
Removed:
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/installer/step3.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/hosts.hbs
incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/service/info/audit.hbs
incubator/ambari/branches/AMBARI-666/ambari-web/app/views/installer/step1.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/views/installer/step2.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/views/installer/step3.js
Modified:
incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/login_controller.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/advanced.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/authentication.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/item.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/user.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/user/edit.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/alert.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/dashboard.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/host.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/host/details.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/audit.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/configs.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/metrics.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/summary.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/item.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/messages.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/models/authentication.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/models/cluster.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/models/form.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/models/pagination.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/models/service.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/models/service_audit.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/models/user.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/router.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/routes/main.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/styles/app.css
incubator/ambari/branches/AMBARI-666/ambari-web/app/styles/application.less
incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/common/grid/header.hbs
incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step3.hbs
incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin.hbs
incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin/audit.hbs
incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin/authentication.hbs
incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin/security.hbs
incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin/user.hbs
incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin/user/edit.hbs
incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/dashboard.hbs
incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/host.hbs
incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/host/details.hbs
incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/host/summary.hbs
incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/service/info/summary.hbs
incubator/ambari/branches/AMBARI-666/ambari-web/app/utils/db.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/utils/helper.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/utils/validator.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/admin/audit.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/admin/menu.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/host.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/host/summary.js
incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/service/info/audit.js
incubator/ambari/branches/AMBARI-666/ambari-web/test/login_test.js
incubator/ambari/branches/AMBARI-666/ambari-web/test/utils/validator_test.js
Modified: incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt (original)
+++ incubator/ambari/branches/AMBARI-666/AMBARI-666-CHANGES.txt Wed Oct 3 23:48:57 2012
@@ -12,6 +12,8 @@ AMBARI-666 branch (unreleased changes)
NEW FEATURES
+ AMBARI-802. Enhance Cluster Management pages. (yusaku)
+
AMBARI-800. Hack to add a stage for testing in in-memory db. (jitendra)
AMBARI-801. Fix heartbeat message from the agent which is causing NPE at the
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers.js Wed Oct 3 23:48:57 2012
@@ -26,6 +26,7 @@ require('controllers/installer/step1_con
require('controllers/installer/step2_controller');
require('controllers/installer/step3_controller');
require('controllers/installer/step4_controller');
+require('controllers/installer/step6_controller');
require('controllers/installer/step5_controller');
require('controllers/installer/step6_controller');
require('controllers/installer/step7_controller');
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/login_controller.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/login_controller.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/login_controller.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/login_controller.js Wed Oct 3 23:48:57 2012
@@ -20,29 +20,42 @@ var App = require('app');
App.LoginController = Em.Object.extend({
- name: 'loginController',
- loginName: '',
- password: '',
- errorMessage: '',
+ name:'loginController',
+ loginName:'',
+ password:'',
+ errorMessage:'',
submit: function (e) {
console.log('Login: ' + this.get('loginName') + ' Password: ' + this.get('password'));
this.set('errorMessage', '');
- if (this.validateCredentials()) {
- console.log('Logging in as: ' + this.get('loginName'));
- App.get('router').login(this.get('loginName'));
+ var user = this.validateCredentials();
+ if (user) {
+ App.get('router').login(this.get('loginName'), user);
} else {
console.log('Failed to login as: ' + this.get('loginName'));
this.set('errorMessage', Em.I18n.t('login.error'));
}
-
},
+ /**
+ *
+ * @return {number} user by credentials || {undefined}
+ */
validateCredentials: function () {
//TODO: REST api that validates the login
- return (this.get('loginName').trim() !== '' && this.get('loginName') === this.get('password'));
+ var thisController = this;
+
+ var user = App.store.filter(App.User, function (data) {
+ return data.get('user_name') == thisController.get('loginName') && data.get('password') == thisController.get('password');
+ });
+
+ var clientId = user.content[0];
+
+ if (user.content[0] !== undefined) {
+ return App.store.findByClientId(App.User, clientId);
+ }
}
});
\ No newline at end of file
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main.js Wed Oct 3 23:48:57 2012
@@ -16,6 +16,8 @@
* limitations under the License.
*/
+var App = require('app');
+
App.MainController = Em.Controller.extend({
name: 'mainController'
})
\ No newline at end of file
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin.js Wed Oct 3 23:48:57 2012
@@ -16,6 +16,9 @@
* limitations under the License.
*/
+var App = require('app');
+
App.MainAdminController = Em.Controller.extend({
- name:'mainAdminController'
+ name:'mainAdminController',
+ category:'user'
})
\ No newline at end of file
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/advanced.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/advanced.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/advanced.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/advanced.js Wed Oct 3 23:48:57 2012
@@ -16,6 +16,8 @@
* limitations under the License.
*/
+var App = require('app');
+
App.MainAdminAdvancedController = Em.Controller.extend({
name:'mainAdminAdvancedController',
uninstall: function(event){
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/authentication.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/authentication.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/authentication.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/authentication.js Wed Oct 3 23:48:57 2012
@@ -16,19 +16,23 @@
* limitations under the License.
*/
+var App = require('app');
+
App.MainAdminAuthenticationController = Em.Controller.extend({
name:'mainAdminAuthenticationController',
save:function (event) {
var form = event.context;
- form.save();
- App.ModalPopup.show({
- header: Em.I18n.t('admin.authentication.form.testConfiguration'),
- body:form.get('resultText'),
- secondary:false,
- onPrimary: function(){
- this.hide();
- }
- });
+ if (form.isValid()) {
+ form.save();
+ App.ModalPopup.show({
+ header:Em.I18n.t('admin.authentication.form.testConfiguration'),
+ body:form.get('resultText'),
+ secondary:false,
+ onPrimary:function () {
+ this.hide();
+ }
+ });
+ }
},
content:App.Authentication.find(1)
})
\ No newline at end of file
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/item.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/item.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/item.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/item.js Wed Oct 3 23:48:57 2012
@@ -16,6 +16,8 @@
* limitations under the License.
*/
+var App = require('app');
+
App.MainAdminItemController = Em.Controller.extend({
name:'mainAdminItemController'
})
\ No newline at end of file
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/user.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/user.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/user.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/user.js Wed Oct 3 23:48:57 2012
@@ -16,10 +16,18 @@
* limitations under the License.
*/
+var App = require('app');
+
App.MainAdminUserController = Em.Controller.extend({
name:'mainAdminUserController',
deleteRecord:function (event) {
- if (Em.I18n.t('question.sure')) {
+
+ if (event.context.get('userName') == App.get('router').getLoginName()) {
+ alert(Em.I18n.t('admin.users.deleteYourselfMessage'));
+ return;
+ }
+
+ if (confirm(Em.I18n.t('question.sure'))) {
event.context.deleteRecord();
App.store.commit();
}
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/user/edit.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/user/edit.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/user/edit.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/admin/user/edit.js Wed Oct 3 23:48:57 2012
@@ -16,6 +16,8 @@
* limitations under the License.
*/
+var App = require('app');
+
App.MainAdminUserEditController = Em.Controller.extend({
name:'mainAdminUserEditController',
content:false
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/alert.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/alert.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/alert.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/alert.js Wed Oct 3 23:48:57 2012
@@ -16,6 +16,8 @@
* limitations under the License.
*/
+var App = require('app');
+
App.MainAlertController = Em.ArrayController.extend({
name:'mainAlertController'
})
\ No newline at end of file
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/dashboard.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/dashboard.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/dashboard.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/dashboard.js Wed Oct 3 23:48:57 2012
@@ -16,6 +16,8 @@
* limitations under the License.
*/
+var App = require('app');
+
App.MainDashboardController = Em.Controller.extend({
name:'mainDashboardController',
alerts: App.Alert.find(),
@@ -33,6 +35,6 @@ App.MainDashboardController = Em.Control
}
},
alertsCount: function() {
- return this.alerts.get('content').length;
+ return this.alerts.filterProperty('status', 'corrupt').length;
}.property()
})
\ No newline at end of file
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/host.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/host.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/host.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/host.js Wed Oct 3 23:48:57 2012
@@ -16,13 +16,14 @@
* limitations under the License.
*/
+var App = require('app');
App.MainHostController = Em.ArrayController.extend(App.Pagination, {
name:'mainHostController',
content: [],
fullContent: App.Host.find(),
clusters: App.Cluster.find(),
- allComponents: App.Component.find(),
+ componentsForFilter: App.Component.find(),
totalBinding: 'fullContent.length',
filters: {components:[]},
pageSize: 3,
@@ -31,7 +32,10 @@ App.MainHostController = Em.ArrayControl
allChecked: false,
selectedHostsIds: [],
sortingAsc: true,
-
+ isSort: false,
+ sortClass: function(){
+ return this.get('sortingAsc')? 'icon-arrow-down' : 'icon-arrow-up';
+ }.property('sortingAsc'),
isDisabled:true,
onAllChecked: function () {
@@ -42,11 +46,12 @@ App.MainHostController = Em.ArrayControl
this.set('selectedHostsIds', selectedHostsIds);
}.observes('allChecked'),
- onHostChecked: function (checked, hostId) {
+ onHostChecked: function (host) {
var selected = this.get('selectedHostsIds');
- if (checked) selected.push(hostId);
+ host.set('isChecked', !host.get('isChecked'));
+ if (host.get('isChecked')) selected.push(host.get('id'));
else {
- var index = selected.indexOf(hostId);
+ var index = selected.indexOf(host.get('id'));
if(index!=-1) selected.splice(index, 1);
}
this.set('isDisabled', selected.length == 0);
@@ -63,19 +68,20 @@ App.MainHostController = Em.ArrayControl
this.set('selectedHostsIds', selectedHosts.getEach('id'));
},
- setFilters: function(checked, componentId) {
- var filters = this.get('filters.components');
- if (checked){
- filters.push(componentId);
- } else {
- var index = filters.indexOf(componentId);
- if(index!=-1) filters.splice(index, 1);
- }
+ filterByComponentsIds: function(componentsIds) {
+ this.set('filters.components', componentsIds);
+ this.get('componentsForFilter').forEach(function(component) {
+ if (componentsIds.indexOf(component.get('id')) == -1){
+ component.set('isChecked', false);
+ } else component.set('isChecked', true);
+ });
this.changeContent();
},
- filterByComponentId: function(componentId) {
- this.set('filters.components', [componentId]);
+ filterByComponent: function(component) {
+ this.get('componentsForFilter').setEach('isChecked', false);
+ component.set('isChecked', true);
+ this.set('filters.components', [component.get('id')]);
this.changeContent();
},
@@ -84,10 +90,10 @@ App.MainHostController = Em.ArrayControl
var filters = this.get('filters.components');
if (filters.length){
this.get('fullContent').forEach(function(item) {
- var inFilters = true;
- $.each(filters, function (i, componentId) {
- if (item.get('components').getEach('id').indexOf(componentId) == -1){
- inFilters = false;
+ var inFilters = false;
+ item.get('components').forEach(function(component) {
+ if (filters.indexOf(component.get('id')) != -1){
+ inFilters = true;
}
});
if (inFilters){
@@ -102,7 +108,7 @@ App.MainHostController = Em.ArrayControl
var content = items.slice(this.get('rangeStart'), this.get('rangeStop'));
this.replace(0, this.get('length'), content);
this.changeSelectedHosts();
- }.observes('rangeStart', 'rangeStop', 'filters.components', 'total'),
+ }.observes('rangeStart', 'rangeStop', 'total'),
showNextPage: function() {
this.nextPage();
@@ -187,6 +193,7 @@ App.MainHostController = Em.ArrayControl
return 0;
});
this.set('fullContent', objects);
+ this.set('isSort', true);
this.set('sortingAsc', !this.get('sortingAsc'));
this.changeContent();
}
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/host/details.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/host/details.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/host/details.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/host/details.js Wed Oct 3 23:48:57 2012
@@ -16,25 +16,26 @@
* limitations under the License.
*/
+var App = require('app');
+
App.MainHostDetailsController = Em.Controller.extend({
name: 'mainHostDetailsController',
content: null,
- startComponents: function(){
+
+ isFromHosts: false,
+
+ isStarting: function(){
return this.get('content.workStatus');
}.property('content.workStatus'),
- stopComponents: function(){
- return !this.get('startComponents');
- }.property('startComponents'),
- changeWorkStatus: function(){
- if (this.get('startComponents')) {
- this.set('iconClass', 'play');
- } else {
- this.set('iconClass', 'stop');
- }
- }.observes('startComponents'),
- iconClass: '',
+ isStopping: function(){
+ return !this.get('isStarting');
+ }.property('isStarting'),
- startConfirmPopup: function (event) {
+ setBack: function(isFromHosts){
+ this.set('isFromHosts', isFromHosts);
+ },
+
+ startComponent: function(event){
var self = this;
App.ModalPopup.show({
header: Em.I18n.t('hosts.host.start.popup.header'),
@@ -42,11 +43,50 @@ App.MainHostDetailsController = Em.Contr
primary: 'Yes',
secondary: 'No',
onPrimary: function() {
- console.log(self.get('content.components').getEach('workStatus'));
- self.get('content.components').setEach('workStatus', self.get('content.workStatus'));
+ var component = event.context;
+ component.set('workStatus', true);
+ var stopped = self.get('content.components').filterProperty('workStatus', false);
+ if (stopped.length == 0)
+ self.set('content.workStatus', true);
+ this.hide();
+ },
+ onSecondary: function() {
+ this.hide();
+ }
+ });
+ },
+ stopComponent: function(event){
+ var self = this;
+ App.ModalPopup.show({
+ header: Em.I18n.t('hosts.host.start.popup.header'),
+ body: Em.I18n.t('hosts.host.start.popup.body'),
+ primary: 'Yes',
+ secondary: 'No',
+ onPrimary: function() {
+ var component = event.context;
+ component.set('workStatus', false);
+ var started = self.get('content.components').filterProperty('workStatus', true);
+ if (started.length == 0)
+ self.set('content.workStatus', false);
+ this.hide();
+ },
+ onSecondary: function() {
+ this.hide();
+ }
+ });
- self.set('content.workStatus', !self.get('content.workStatus'));
+ },
+ startConfirmPopup: function (event) {
+ var self = this;
+ App.ModalPopup.show({
+ header: Em.I18n.t('hosts.host.start.popup.header'),
+ body: Em.I18n.t('hosts.host.start.popup.body'),
+ primary: 'Yes',
+ secondary: 'No',
+ onPrimary: function() {
+ self.get('content.components').setEach('workStatus', true);
+ self.set('content.workStatus', !self.get('content.workStatus'));
this.hide();
},
onSecondary: function() {
@@ -62,8 +102,7 @@ App.MainHostDetailsController = Em.Contr
primary: 'Yes',
secondary: 'No',
onPrimary: function() {
- console.log(self.get('content.components').getEach('workStatus'));
- self.get('content.components').setEach('workStatus', self.get('content.workStatus'));
+ self.get('content.components').setEach('workStatus', false);
self.set('content.workStatus', !self.get('content.workStatus'));
this.hide();
},
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service.js Wed Oct 3 23:48:57 2012
@@ -16,6 +16,8 @@
* limitations under the License.
*/
+var App = require('app');
+
App.MainServiceController = Em.ArrayController.extend({
name:'mainServiceController',
content: App.Service.find()
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/audit.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/audit.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/audit.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/audit.js Wed Oct 3 23:48:57 2012
@@ -16,17 +16,8 @@
* limitations under the License.
*/
+var App = require('app');
+
App.MainServiceInfoAuditController = Em.Controller.extend({
- name: 'mainServiceInfoAuditController',
- users: App.User.find(),
- performedBy: function() {
- var auditItems = this.content.get('serviceAudit');
- var itemUsers = auditItems.getEach('user');
- var result = [];
- this.users.forEach(function(item, index, self) {
- if (res = itemUsers.findProperty ('id', item.get('id')))
- result.push(res);
- });
- return result;
- }.property('content')
+ name: 'mainServiceInfoAuditController'
})
\ No newline at end of file
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/configs.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/configs.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/configs.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/configs.js Wed Oct 3 23:48:57 2012
@@ -16,6 +16,8 @@
* limitations under the License.
*/
+var App = require('app');
+
App.MainServiceInfoConfigsController = Em.Controller.extend({
name: 'mainServiceInfoConfigsController',
content: 'Configs'
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/metrics.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/metrics.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/metrics.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/metrics.js Wed Oct 3 23:48:57 2012
@@ -16,6 +16,8 @@
* limitations under the License.
*/
+var App = require('app');
+
App.MainServiceInfoMetricsController = Em.Controller.extend({
name: 'mainServiceInfoMetricsController',
content: 'Metrics'
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/summary.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/summary.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/summary.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/info/summary.js Wed Oct 3 23:48:57 2012
@@ -16,6 +16,8 @@
* limitations under the License.
*/
+var App = require('app');
+
App.MainServiceInfoSummaryController = Em.Controller.extend({
name: 'mainServiceInfoSummaryController'
})
\ No newline at end of file
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/item.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/item.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/item.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/controllers/main/service/item.js Wed Oct 3 23:48:57 2012
@@ -16,9 +16,11 @@
* limitations under the License.
*/
+var App = require('app');
+
App.MainServiceItemController = Em.Controller.extend({
name: 'mainServiceItemController',
-// content: App.Service.find(1),
+ content: App.Service.find(1),
showRebalancer: function() {
if(this.content.get('serviceName') == 'hdfs') {
return true;
Added: incubator/ambari/branches/AMBARI-666/ambari-web/app/data/mock/service_components.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/data/mock/service_components.js?rev=1393835&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/data/mock/service_components.js (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/data/mock/service_components.js Wed Oct 3 23:48:57 2012
@@ -0,0 +1,245 @@
+/**
+ * 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.
+ */
+
+module.exports = new Ember.Set([
+
+ {
+ service_name: 'HDFS',
+ component_name: 'NAMENODE',
+ display_name: 'NameNode',
+ isMaster: true,
+ isClient: false,
+ description: 'Master server that manages the file system namespace and regulates access to files by clients'
+ },
+ {
+ service_name: 'HDFS',
+ component_name: 'SNAMENODE',
+ display_name: 'SNameNode',
+ isMaster: true,
+ isClient: false,
+ description: 'Helper to the primary NameNode that is responsible for supporting periodic checkpoints of the HDFS metadata'
+ },
+ {
+ service_name: 'HDFS',
+ component_name: 'DATANODE',
+ display_name: 'Datanode',
+ isMaster: false,
+ isClient: false,
+ description: 'The slave for HDFS'
+ },
+ {
+ service_name: 'HDFS',
+ component_name: 'HDFS_CLIENT',
+ display_name: 'HDFS Client',
+ isMaster: false,
+ isClient: true,
+ description: 'Client component for HDFS'
+ },
+ {
+ service_name: 'MAPREDUCE',
+ component_name: 'JOBTRACKER',
+ display_name: 'JobTracker',
+ isMaster: true,
+ isClient: false,
+ description: 'Central Master service that pushes work (MR tasks) out to available TaskTracker nodes in the cluster'
+ },
+ {
+ service_name: 'MAPREDUCE',
+ component_name: 'TASKTRACKER',
+ display_name: 'TaskTracker',
+ isMaster: false,
+ isClient: false,
+ description: 'The slave for MapReduce'
+ },
+ {
+ service_name: 'MAPREDUCE',
+ component_name: 'MAPREDUCE_CLIENT',
+ display_name: 'MapReduce Client',
+ isMaster: false,
+ isClient: true,
+ description: 'Client component for MapReduce'
+ },
+ {
+ service_name: 'ZOOKEEPER',
+ component_name: 'ZOOKEEPER_SERVER',
+ display_name: 'ZooKeeper',
+ isMaster: true,
+ isClient: false,
+ description: ''
+ },
+ {
+ service_name: 'ZOOKEEPER',
+ component_name: 'ZOOKEEPER_CLIENT',
+ display_name: 'ZooKeeper Client',
+ isMaster: false,
+ isClient: true,
+ description: ''
+ },
+ {
+ service_name: 'HBASE',
+ component_name: 'HBASE_MASTER',
+ display_name: 'HBase Master',
+ isMaster: true,
+ isClient: false,
+ description: ''
+ },
+ {
+ service_name: 'HBASE',
+ component_name: 'HBASE_REGIONSERVER',
+ display_name: 'HBase Region Server',
+ isMaster: false,
+ isClient: false,
+ description: 'The slave for HBase'
+ },
+ {
+ service_name: 'HBASE',
+ component_name: 'HBASE_CLIENT',
+ display_name: 'HBase Client',
+ isMaster: false,
+ isClient: true,
+ description: 'The slave for HBase'
+ },
+ {
+ service_name: 'PIG',
+ component_name: 'PIG_CLIENT',
+ display_name: 'Pig Client',
+ isMaster: false,
+ isClient: true,
+ description: ''
+ },
+ {
+ service_name: 'SQOOP',
+ component_name: 'SQOOP_CLIENT',
+ display_name: 'Sqoop Client',
+ isMaster: false,
+ isClient: true,
+ description: ''
+ },
+ {
+ service_name: 'OOZIE',
+ component_name: 'OOZIE_SERVER',
+ display_name: 'Oozie Server',
+ isMaster: true,
+ isClient: false,
+ description: ''
+ },
+ {
+ service_name: 'OOZIE',
+ component_name: 'OOZIE_CLIENT',
+ display_name: 'Oozie Client',
+ isMaster: false,
+ isClient: true,
+ description: ''
+ },
+ {
+ service_name: 'HIVE',
+ component_name: 'HIVE_SERVER',
+ display_name: 'Hive Metastore',
+ isMaster: true,
+ isClient: false,
+ description: ''
+ },
+ {
+ service_name: 'HIVE',
+ component_name: 'HIVE_CLIENT',
+ display_name: 'Hive Client',
+ isMaster: false,
+ isClient: true,
+ description: ''
+ },
+ {
+ service_name: 'HIVE',
+ component_name: 'HIVE_MYSQL',
+ display_name: 'MySql Server for Hive',
+ isMaster: false,
+ isClient: false,
+ description: 'The slave for HBase'
+ },
+ {
+ service_name: 'TEMPLETON',
+ component_name: 'TEMPLETON_SERVER',
+ display_name: 'Templeton Server',
+ isMaster: true,
+ isClient: false,
+ description: ''
+ },
+ {
+ service_name: 'TEMPLETON',
+ component_name: 'TEMPLETON_CLIENT',
+ display_name: 'Templeton Client',
+ isMaster: false,
+ isClient: true,
+ description: ''
+ },
+ {
+ service_name: 'DASHBOARD',
+ component_name: 'DASHBOARD',
+ display_name: 'Monitoring Dashboard',
+ isMaster: false,
+ isClient: false,
+ description: ''
+ },
+ {
+ service_name: 'NAGIOS',
+ component_name: 'NAGIOS_SERVER',
+ display_name: 'Nagios Server',
+ isMaster: true,
+ isClient: false,
+ description: ''
+ },
+ {
+ service_name: 'GANGLIA',
+ component_name: 'GANGLIA_MONITOR_SERVER',
+ display_name: 'Ganglia Collector',
+ isMaster: true,
+ isClient: false,
+ description: ''
+ },
+ {
+ service_name: 'GANGLIA',
+ component_name: 'GANGLIA_MONITOR',
+ display_name: 'Ganglia Slave',
+ isMaster: false,
+ isClient: false,
+ description: ''
+ },
+ {
+ service_name: 'KERBEROS',
+ component_name: 'KERBEROS_SERVER',
+ display_name: 'Kerberos Server',
+ isMaster: true,
+ isClient: false,
+ description: ''
+ },
+ {
+ service_name: 'KERBEROS',
+ component_name: 'KERBEROS_ADMIN_CLIENT',
+ display_name: 'Kerberos Admin Client',
+ isMaster: false,
+ isClient: true,
+ description: ''
+ },
+ {
+ service_name: 'KERBEROS',
+ component_name: 'KERBEROS_CLIENT',
+ display_name: 'Kerberos Client',
+ isMaster: false,
+ isClient: true,
+ description: ''
+ }
+]);
\ No newline at end of file
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/messages.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/messages.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/messages.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/messages.js Wed Oct 3 23:48:57 2012
@@ -42,8 +42,7 @@ Em.I18n.translations = {
'installer.header': 'Cluster Install Wizard',
'installer.step1.header': 'Welcome',
'installer.step1.body.header': 'Welcome to Apache Ambari!',
- 'installer.step1.body':
- 'Ambari makes it easy to install, manage, and monitor Hadoop clusters.<br>' +
+ 'installer.step1.body': 'Ambari makes it easy to install, manage, and monitor Hadoop clusters.<br>' +
'We will walk you through the cluster installation process with this step-by-step wizard.',
'installer.step1.clusterName': 'Name your cluster',
'installer.step1.clusterName.tooltip.title': 'Cluster Name',
@@ -115,54 +114,57 @@ Em.I18n.translations = {
'installer.step9.host.status.success': 'success',
'installer.step9.host.status.warning': 'tolerable failures encountered',
'installer.step9.host.status.failed': 'failures encountered',
+
'installer.step10.header': 'Summary',
'form.create': 'Create',
'form.save': 'Save',
'form.cancel': 'Cancel',
- 'form.password':'Password',
- 'form.passwordRetype':'Retype Password',
- 'form.saveSuccess':'Successfully saved.',
- 'form.saveError':'Sorry, errors occured.',
-
- 'form.validator.invalidIp':'Please enter valid ip address',
-
- 'admin.advanced.title':'Advanced',
- 'admin.advanced.caution':'This section is for advanced user only.<br/>Proceed with caution.',
- 'admin.advanced.button.uninstallIncludingData':'Uninstall cluster including all data.',
- 'admin.advanced.button.uninstallKeepData':'Uninstall cluster but keep data.',
+ 'form.password': 'Password',
+ 'form.passwordRetype': 'Retype Password',
+ 'form.saveSuccess': 'Successfully saved.',
+ 'form.saveError': 'Sorry, errors occured.',
+
+ 'form.validator.invalidIp': 'Please enter valid ip address',
+
+ 'admin.advanced.title': 'Advanced',
+ 'admin.advanced.caution': 'This section is for advanced user only.<br/>Proceed with caution.',
+ 'admin.advanced.button.uninstallIncludingData': 'Uninstall cluster including all data.',
+ 'admin.advanced.button.uninstallKeepData': 'Uninstall cluster but keep data.',
- 'admin.advanced.popup.header':'Uninstall Cluster',
+ 'admin.advanced.popup.header': 'Uninstall Cluster',
/*'admin.advanced.popup.text':'Uninstall Cluster',*/
- 'admin.audit.grid.date':"Date/Time",
- 'admin.audit.grid.category':"Category",
- 'admin.audit.grid.operationName':"Operation",
- 'admin.audit.grid.performedBy':"Performed By",
-
- 'admin.authentication.form.method.database':'Use Ambari Database to authenticate users',
- 'admin.authentication.form.method.ldap':'Use LDAP/Active Directory to authenticate',
- 'admin.authentication.form.primaryServer':'Primary Server',
- 'admin.authentication.form.secondaryServer':'Secondary Server',
- 'admin.authentication.form.useSsl':'Use SSL',
- 'admin.authentication.form.bind.anonymously':"Bind Anonymously",
- 'admin.authentication.form.bind.useCrenedtials':"Use Credentials To Bind",
- 'admin.authentication.form.bindUserDN':'Bind User DN',
- 'admin.authentication.form.searchBaseDN':'Search Base DN',
- 'admin.authentication.form.usernameAttribute':'Username Attribute',
-
- 'admin.authentication.form.userDN':'User DN',
- 'admin.authentication.form.password':'Password',
- 'admin.authentication.form.configurationTest':'Configuration Test',
- 'admin.authentication.form.testConfiguration':'Test Configuration',
+ 'admin.audit.grid.date': "Date/Time",
+ 'admin.audit.grid.category': "Category",
+ 'admin.audit.grid.operationName': "Operation",
+ 'admin.audit.grid.performedBy': "Performed By",
+ 'admin.audit.grid.service': "Category",
+
+ 'admin.authentication.form.method.database': 'Use Ambari Database to authenticate users',
+ 'admin.authentication.form.method.ldap': 'Use LDAP/Active Directory to authenticate',
+ 'admin.authentication.form.primaryServer': 'Primary Server',
+ 'admin.authentication.form.secondaryServer': 'Secondary Server',
+ 'admin.authentication.form.useSsl': 'Use SSL',
+ 'admin.authentication.form.bind.anonymously': "Bind Anonymously",
+ 'admin.authentication.form.bind.useCrenedtials': "Use Credentials To Bind",
+ 'admin.authentication.form.bindUserDN': 'Bind User DN',
+ 'admin.authentication.form.searchBaseDN': 'Search Base DN',
+ 'admin.authentication.form.usernameAttribute': 'Username Attribute',
+
+ 'admin.authentication.form.userDN': 'User DN',
+ 'admin.authentication.form.password': 'Password',
+ 'admin.authentication.form.configurationTest': 'Configuration Test',
+ 'admin.authentication.form.testConfiguration': 'Test Configuration',
- 'admin.authentication.form.test.success':'The configuration passes the test',
- 'admin.authentication.form.test.fail':'The configuration fails the test',
+ 'admin.authentication.form.test.success': 'The configuration passes the test',
+ 'admin.authentication.form.test.fail': 'The configuration fails the test',
- 'admin.security.title':'Kerberos Security has not been enabled on this cluster.',
- 'admin.security.button.enable':'Kerberos Security has not been enabled on this cluster.',
+ 'admin.security.title': 'Kerberos Security has not been enabled on this cluster.',
+ 'admin.security.button.enable': 'Enable Kerberos Security on this cluster',
- 'admin.users.ldapAuthentionUsed':'LDAP Authentication is being used to authenticate users',
+ 'admin.users.ldapAuthentionUsed': 'LDAP Authentication is being used to authenticate users',
+ 'admin.users.deleteYourselfMessage': 'You can\'t delete yourself',
'admin.users.addButton': 'Add User',
'admin.users.delete': 'delete',
'admin.users.edit': 'edit',
@@ -190,5 +192,4 @@ Em.I18n.translations = {
'hosts.decommission.popup.header': 'Confirmation',
'hosts.delete.popup.body': 'Are you sure?',
'hosts.delete.popup.header': 'Confirmation'
-};
-
+};
\ No newline at end of file
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/models/authentication.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/models/authentication.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/models/authentication.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/models/authentication.js Wed Oct 3 23:48:57 2012
@@ -24,7 +24,7 @@ App.Authentication = DS.Model.extend({
bindMethod:DS.attr('boolean'), // use credentials
bindUser:DS.attr('string'),
password:DS.attr('string'),
- retypePassword:DS.attr('string'),
+ passwordRetype:DS.attr('string'),
searchBaseDn:DS.attr('string'),
usernameAttribute:DS.attr('string')
});
@@ -32,16 +32,16 @@ App.Authentication = DS.Model.extend({
App.Authentication.FIXTURES = [
{
id:1,
- method:false,
- primary_server:"1.2.3.4:78",
- secondary_server:"225.225.255.255:12",
+ method:0,
+ primary_server:"",
+ secondary_server:"",
use_ssl:false,
- bind_method:false,
- bind_user:"hadoop\Administrator",
- password:"1234",
- retype_password:"1234",
- search_base_dn:"DC=hadoop,DC=abc,DC=com",
- username_attribute:"sAMAccountName"
+ bind_method:0,
+ bind_user:"",
+ password:"",
+ password_retype:"",
+ search_base_dn:"",
+ username_attribute:""
}
]
@@ -55,19 +55,40 @@ App.AuthenticationForm = App.Form.extend
{value:1, label:Em.I18n.t("admin.authentication.form.method.ldap")}
]
},
- { name:"primaryServer", displayName:Em.I18n.t("admin.authentication.form.primaryServer"), validator:'ipaddress'},
- { name:"secondaryServer", displayName:Em.I18n.t("admin.authentication.form.secondaryServer"), validator:'ipaddress'},
+ { name:"primaryServer", displayName:Em.I18n.t("admin.authentication.form.primaryServer"), /*validator:'ipaddress',*/
+ isRequired:function () {
+ return this.get('form.field.method.value');
+ }.property('form.field.method.value')
+ },
+ { name:"secondaryServer", displayName:Em.I18n.t("admin.authentication.form.secondaryServer"), /*validator:'ipaddress',*/ isRequired:false},
{ name:"useSsl", displayName:Em.I18n.t("admin.authentication.form.useSsl"), displayType:"checkbox", isRequired:false },
{ name:"bindMethod", displayName:'', displayType:"select", isRequired:false,
values:[
{value:0, label:Em.I18n.t("admin.authentication.form.bind.anonymously")},
{value:1, label:Em.I18n.t("admin.authentication.form.bind.useCrenedtials")}
]},
- { name:"bindUser", displayName:Em.I18n.t('admin.authentication.form.bindUserDN')},
- { name:"password", displayName:Em.I18n.t('form.password'), displayType:"password" },
- { name:"passwordRetype", displayName:Em.I18n.t('form.passwordRetype'), displayType:"passwordRetype"},
- { name:"searchBaseDn", displayName:Em.I18n.t('admin.authentication.form.searchBaseDN')},
- { name:"usernameAttribute", displayName:Em.I18n.t('admin.authentication.form.usernameAttribute')},
+ { name:"bindUser", displayName:Em.I18n.t('admin.authentication.form.bindUserDN'), isRequired:function () {
+ return this.get('form.field.bindMethod.value');
+ }.property('form.field.bindMethod.value')},
+ { name:"password", displayName:Em.I18n.t('form.password'), displayType:"password",
+ isRequired:function () {
+ return this.get('form.field.bindMethod.value');
+ }.property('form.field.bindMethod.value') },
+ { name:"passwordRetype", displayName:Em.I18n.t('form.passwordRetype'), displayType:"password",
+ validator: "passwordRetype",
+ isRequired:function () {
+ return this.get('form.field.bindMethod.value');
+ }.property('form.field.bindMethod.value')},
+ { name:"searchBaseDn", displayName:Em.I18n.t('admin.authentication.form.searchBaseDN'),
+ isRequired:function () {
+ return this.get('form.field.method.value');
+ }.property('form.field.method.value')
+ },
+ { name:"usernameAttribute", displayName:Em.I18n.t('admin.authentication.form.usernameAttribute'),
+ isRequired:function () {
+ return this.get('form.field.method.value');
+ }.property('form.field.method.value')
+ },
{ name:"userDN", displayName:Em.I18n.t('admin.authentication.form.userDN') },
{ name:"userPassword", displayName:Em.I18n.t('admin.authentication.form.password'), displayType:'password'}
@@ -83,5 +104,6 @@ App.AuthenticationForm = App.Form.extend
}.property('testResult'),
testConfigurationClass:function () {
return this.get('testResult') ? "text-success" : "text-error";
- }.property('testConfigurationMessage')
-});
\ No newline at end of file
+ }.property('testConfigurationMessage'),
+})
+;
\ No newline at end of file
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/models/cluster.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/models/cluster.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/models/cluster.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/models/cluster.js Wed Oct 3 23:48:57 2012
@@ -60,7 +60,6 @@ App.Host = DS.Model.extend({
loadAvg: DS.attr('string'),
os: DS.attr('string'),
ip: DS.attr('string'),
- isChecked: false,
healthStatus: DS.attr('string'),
workStatus: DS.attr('boolean')
});
@@ -70,7 +69,7 @@ App.Host.FIXTURES = [
id: 1,
host_name: 'z_host1',
cluster_id: 1,
- components:[1, 2, 3, 4],
+ components:[1, 2, 4],
cpu: '2x2.5GHz',
memory: '8GB',
disk_usage: '40',
@@ -104,6 +103,7 @@ App.Host.FIXTURES = [
id: 4,
host_name: 'b_host4',
cluster_id: 2,
+ components:[1, 2, 4, 5],
health_status: 'DEAD',
work_status: false
},
@@ -111,7 +111,7 @@ App.Host.FIXTURES = [
id: 5,
host_name: 'host5',
cluster_id: 1,
- components:[4, 5],
+ components:[3, 4, 5],
cpu: '2x2.5GHz',
memory: '8GB',
disk_usage: '20',
@@ -138,7 +138,7 @@ App.Host.FIXTURES = [
id: 7,
host_name: 'host7',
cluster_id: 1,
- components:[4, 5],
+ components:[3, 4, 7],
cpu: '2x2.5GHz',
memory: '8GB',
disk_usage: '20',
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/models/form.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/models/form.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/models/form.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/models/form.js Wed Oct 3 23:48:57 2012
@@ -45,9 +45,8 @@ App.Form = Em.View.extend({
thisForm.set("field." + field.get('name'), field);
});
},
- getField:function (name) {
-// return this.fields[name];
+ getField:function (name) {
var field = false;
$.each(this.fields, function () {
if (this.get('name') == name) {
@@ -55,14 +54,15 @@ App.Form = Em.View.extend({
}
});
return field;
-
},
+
isValid:function () {
var isValid = true;
$.each(this.fields, function () {
this.validate();
if (!this.get('isValid')) {
isValid = false;
+ console.warn(this.get('name') + " IS INVALID : " + this.get('errorMessage'));
}
})
@@ -78,7 +78,7 @@ App.Form = Em.View.extend({
var object = this.get('object');
if (object instanceof Em.Object) {
$.each(this.fields, function () {
- this.set('value', object.get(this.get('name')));
+ this.set('value', this.get('displayType') == 'password' ? '' : object.get(this.get('name')));
});
} else {
this.clearValues();
@@ -92,7 +92,8 @@ App.Form = Em.View.extend({
getValues:function () {
var values = {};
$.each(this.fields, function () {
- values[this.get('name')] = this.get('value');
+ if(!(this.get('displayType') == 'password') && validator.empty(this.get('value'))) // if this is not empty password field
+ values[this.get('name')] = this.get('value');
});
return values;
},
@@ -163,7 +164,7 @@ App.FormField = Em.Object.extend({ // tr
form:false,
isRequired:true, // by default a config property is required
unit:'',
- value:null,
+ value:'',
isValid:function () {
return this.get('errorMessage') === '';
@@ -181,15 +182,12 @@ App.FormField = Em.Object.extend({ // tr
element = Em.Select;
options.content = this.get('values');
options.valueBinding = "value";
- options.optionValuePath="content.value";
- options.optionLabelPath="content.label";
+ options.optionValuePath = "content.value";
+ options.optionLabelPath = "content.label";
break;
case 'password':
options['type'] = 'password';
break;
- case 'passwordRetype':
- options['type'] = 'password';
- break;
case 'textarea':
element = Em.TextArea;
break;
@@ -201,32 +199,42 @@ App.FormField = Em.Object.extend({ // tr
validate:function () {
var digitsRegex = /^\d+$/;
var numberRegex = /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/;
-
var value = this.get('value');
-
var isError = false;
+ this.set('errorMessage', '');
- if (!(!this.get('form.isObjectNew') && this.get('disableRequiredOnExistent')) && this.get('isRequired')) {
- if (typeof value === 'string' && value.trim().length === 0) {
- this.set('errorMessage', 'This is required');
- isError = true;
- }
+ if (this.get('isRequired') && (typeof value === 'string' && value.trim().length === 0)) {
+ this.set('errorMessage', 'This is required');
+ isError = true;
}
- if (!isError) {
+ if (typeof value === 'string' && value.trim().length === 0) { // this is not to validate empty field.
+ isError = true;
+ }
+ if (!isError) {
switch (this.get('validator')) {
case 'ipaddress':
- if (!validator.isIpAddress(value)) {
+ if (!validator.isIpAddress(value) && !validator.isDomainName(value)) {
isError = true;
this.set('errorMessage', Em.I18n.t("form.validator.invalidIp"));
- };
+ }
+ break;
+ case 'passwordRetype':
+ var form = this.get('form');
+ var passwordField = form.getField('password');
+ if (passwordField.get('isValid')
+ && (passwordField.get('value') != this.get('value'))
+ && passwordField.get('value') && this.get('value')
+ ) {
+ this.set('errorMessage', "Passwords are different");
+ isError = true;
+ }
break;
default:
break;
}
-
switch (this.get('displayType')) {
case 'digits':
if (!digitsRegex.test(value)) {
@@ -246,18 +254,6 @@ App.FormField = Em.Object.extend({ // tr
break;
case 'password':
break;
- case 'passwordRetype':
- var form = this.get('form');
- var passwordField = form.getField('password');
- if (passwordField.get('isValid')
- && (passwordField.get('value') != this.get('value'))
- && passwordField.get('value') && this.get('value')
- ) {
- this.set('errorMessage', "Passwords are different");
- isError = true;
- }
-
- break;
}
}
if (!isError) {
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/models/pagination.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/models/pagination.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/models/pagination.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/models/pagination.js Wed Oct 3 23:48:57 2012
@@ -27,7 +27,6 @@ App.Pagination = Em.Mixin.create({
total: 0,
rangeStart: 0,
pageSize: 0,
-// didRequestRange: Em.K,
rangeStop: function() {
var rangeStop = this.get('rangeStart') + this.get('pageSize'),
@@ -63,8 +62,10 @@ App.Pagination = Em.Mixin.create({
}.property('rangeStop', 'pageSize').cacheable(),
startPosition: function() {
+ if (this.get('total') == 0)
+ return 0;
return this.get('rangeStart') + 1;
- }.property('rangeStart').cacheable(),
+ }.property('rangeStart', 'total').cacheable(),
totalPages: function() {
return Math.ceil(this.get('total') / this.get('pageSize'));
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/models/service.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/models/service.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/models/service.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/models/service.js Wed Oct 3 23:48:57 2012
@@ -62,7 +62,7 @@ App.Component = DS.Model.extend({
type:DS.attr('boolean'),
service:DS.belongsTo('App.Service'),
host:DS.belongsTo('App.Host'),
- workStatus:DS.attr('string')
+ workStatus: DS.attr('boolean')
});
App.Component.FIXTURES = [
@@ -73,7 +73,7 @@ App.Component.FIXTURES = [
type: true,
service_id:1,
host_id:1,
- work_status:true
+ work_status:false
},
{
id:2,
@@ -82,7 +82,7 @@ App.Component.FIXTURES = [
type: true,
service_id:1,
host_id:2,
- work_status:false
+ work_status:true
},
{
id:3,
@@ -90,12 +90,13 @@ App.Component.FIXTURES = [
label: 'DN',
service_id:1,
type: false,
- host_id:2
+ host_id:2,
+ work_status:true
},
{
id:4,
component_name:'JobTracker',
- label: 'TT',
+ label: 'JT',
type: true,
service_id:2,
host_id:4,
@@ -104,10 +105,11 @@ App.Component.FIXTURES = [
{
id:5,
component_name:'TaskTracker',
- label: 'JT',
+ label: 'TT',
type: false,
service_id:2,
- host_id:4
+ host_id:4,
+ work_status:true
},
{
id:6,
@@ -115,7 +117,8 @@ App.Component.FIXTURES = [
label: 'HBM',
type: true,
service_id:3,
- host_id:4
+ host_id:4,
+ work_status:true
},
{
id:7,
@@ -123,7 +126,8 @@ App.Component.FIXTURES = [
label: 'RS',
type: false,
service_id:3,
- host_id:2
+ host_id:2,
+ work_status:true
}
];
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/models/service_audit.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/models/service_audit.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/models/service_audit.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/models/service_audit.js Wed Oct 3 23:48:57 2012
@@ -30,36 +30,42 @@ App.ServiceAudit.FIXTURES = [
id: 1,
date: 'September 12, 2012 17:00',
operation_name: 'Reconfigure',
- user_id: 2
+ user_id: 2,
+ service_id: 1
},
{
id: 2,
date: 'September 13, 2012 17:00',
operation_name: 'Start',
- user_id: 1
+ user_id: 1,
+ service_id: 1
},
{
id: 3,
date: 'September 14, 2012 17:00',
operation_name: 'Install',
- user_id: 1
+ user_id: 1,
+ service_id: 1
},
{
id: 4,
date: 'September 12, 2012 17:00',
operation_name: 'Reconfigure',
- user_id: 2
+ user_id: 2,
+ service_id: 2
},
{
id: 5,
date: 'September 13, 2012 17:00',
operation_name: 'Start',
- user_id: 1
+ user_id: 1,
+ service_id: 2
},
{
id: 6,
date: 'September 14, 2012 17:00',
operation_name: 'Install',
- user_id: 1
+ user_id: 1,
+ service_id: 2
}
];
\ No newline at end of file
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/models/user.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/models/user.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/models/user.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/models/user.js Wed Oct 3 23:48:57 2012
@@ -17,6 +17,7 @@
*/
var App = require('app');
+var validator = require('utils/validator');
App.UserModel = Em.Object.extend({
userName:null,
@@ -34,22 +35,62 @@ App.UserForm = App.Form.extend({
className:App.User,
fieldsOptions:[
{ name:"userName", displayName:"Username" },
- { name:"password", displayName:"Password", displayType:"password", disableRequiredOnExistent:true },
- { name:"passwordRetype", displayName:"Retype Password", displayType:"passwordRetype", disableRequiredOnExistent:true },
+ { name:"password", displayName:"Password", displayType:"password", isRequired: function(){ return this.get('form.isObjectNew'); }.property('form.isObjectNew') },
+ { name:"passwordRetype", displayName:"Retype Password", displayType:"password", validator:"passwordRetype", isRequired: false },
{ name:"admin", displayName:"Admin", displayType:"checkbox", isRequired:false }
],
fields:[],
disableUsername:function () {
var field = this.getField("userName");
if (field) field.set("disabled", this.get('isObjectNew') ? false : "disabled");
- }.observes('isObjectNew')
+
+ }.observes('isObjectNew'),
+ disableAdminCheckbox:function () {
+ if (!this.get('isObjectNew')) {
+ var object = this.get('object');
+ var field = this.getField("admin");
+ if (field) {
+ field.set("disabled", object.get('userName') == App.get('router').getLoginName() ? "disabled" : false);
+ }
+ }
+ }.observes('isObjectNew'),
+
+ isValid: function(){
+ var isValid = this._super();
+ thisForm = this;
+
+ var passField = this.get('field.password');
+ var passRetype = this.get('field.passwordRetype');
+
+ if(!validator.empty(passField.get('value'))) {
+ if(passField.get('value') != passRetype.get('value')) {
+ passRetype.set('errorMessage', "Passwords are different");
+ isValid = false;
+ }
+ }
+
+ if(isValid && this.get('isObjectNew')) {
+ var users = App.User.find();
+ var userNameField = this.getField('userName');
+ var userName = userNameField.get('value');
+
+ users.forEach(function(user){
+ if(userName == user.get('userName')) {
+ userNameField.set('errorMessage', 'User with the same name is already exists');
+ return isValid = false;
+ }
+ });
+ }
+
+ return isValid;
+ }
});
App.User.FIXTURES = [
{
id:1,
user_name:'admin',
- password: 'admin',
+ password:'admin',
admin:1
},
{
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/router.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/router.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/router.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/router.js Wed Oct 3 23:48:57 2012
@@ -66,11 +66,20 @@ App.Router = Em.Router.extend({
//localStorage.setItem('Ambari' + 'loginName', loginName);
},
- login: function (loginName) {
+ // that works incorrectly
+ setUser: function(user){ App.db.setUser(user); },
+ // that works incorrectly
+ getUser: function(){ return App.db.getUser(); },
+
+ login: function (loginName, user) {
// TODO: this needs to be hooked up with server authentication
console.log("In login function");
this.setAuthenticated(true);
this.setLoginName(loginName);
+
+// refactor to get user attributes
+// this.setUser(user);
+
this.transitionTo(this.getSection());
},
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/routes/main.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/routes/main.js?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/routes/main.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/routes/main.js Wed Oct 3 23:48:57 2012
@@ -34,9 +34,9 @@ module.exports = Em.Route.extend({
}
},
- index: Ember.Route.extend({
- route: '/',
- redirectsTo: 'dashboard'
+ index:Ember.Route.extend({
+ route:'/',
+ redirectsTo:'dashboard'
}),
connectOutlets:function (router, context) {
@@ -56,7 +56,10 @@ module.exports = Em.Route.extend({
router.get('mainController').connectOutlet('mainHost');
},
- showDetails:Em.Router.transitionTo('hostDetails.index')
+ showDetails:function (router, event) {
+ router.get('mainHostDetailsController').setBack(true);
+ router.transitionTo('hostDetails.index', event.context)
+ }
}),
@@ -106,32 +109,41 @@ module.exports = Em.Route.extend({
admin:Em.Route.extend({
route:'/admin',
- enter:function (router) {
- Ember.run.next(function () {
- router.transitionTo('adminUser');
- });
+
+ enter: function(router) {
+ if(router.get('currentState.name') != 'main') { // is user comes from main -> navigate to users
+ Em.run.next(function () {
+ router.transitionTo('adminUser');
+ });
+ }
+ },
+
+ connectOutlets:function (router, context) {
+ router.get('mainController').connectOutlet('mainAdmin');
},
adminUser:Em.Route.extend({
route:'/user',
enter:function (router) {
- Ember.run.next(function () {
- router.transitionTo('all');
+ router.set('mainAdminController.category', "user");
+ Em.run.next(function () {
+ router.transitionTo('allUsers');
});
},
- connectOutlets:function (router) {
- console.log("ADMIN USER RECONNECTED");
- },
- all:Em.Route.extend({
+ // events
+ gotoUsers:Em.Router.transitionTo("allUsers"),
+ gotoCreateUser:Em.Router.transitionTo("createUser"),
+ gotoEditUser:function (router, event) { router.transitionTo("editUser", event.context) },
+
+ // states
+ allUsers:Em.Route.extend({
route:'/',
connectOutlets:function (router) {
router.get('mainAdminController').connectOutlet('mainAdminUser');
}
}),
- gotoUsers:Em.Router.transitionTo("all"),
-
createUser:Em.Route.extend({
route:'/create',
connectOutlets:function (router) {
@@ -139,8 +151,6 @@ module.exports = Em.Route.extend({
}
}),
- gotoCreateUser:Em.Router.transitionTo("createUser"),
-
editUser:Em.Route.extend({
route:'/edit/:userName',
connectOutlets:function (router, user) {
@@ -148,15 +158,12 @@ module.exports = Em.Route.extend({
router.get('mainAdminController').connectOutlet('mainAdminUserEdit', user);
}
}),
-
- gotoEditUser:function (router, event) {
- router.transitionTo("editUser", event.context);
- }
}),
adminAuthentication:Em.Route.extend({
route:'/authentication',
connectOutlets:function (router) {
+ router.set('mainAdminController.category', "authentication");
router.get('mainAdminController').connectOutlet('mainAdminAuthentication');
}
}),
@@ -164,6 +171,7 @@ module.exports = Em.Route.extend({
adminSecurity:Em.Route.extend({
route:'/security',
connectOutlets:function (router) {
+ router.set('mainAdminController.category', "security");
router.get('mainAdminController').connectOutlet('mainAdminSecurity');
}
}),
@@ -171,6 +179,7 @@ module.exports = Em.Route.extend({
adminAdvanced:Em.Route.extend({
route:'/advanced',
connectOutlets:function (router) {
+ router.set('mainAdminController.category', "advanced");
router.get('mainAdminController').connectOutlet('mainAdminAdvanced');
}
}),
@@ -178,33 +187,14 @@ module.exports = Em.Route.extend({
adminAudit:Em.Route.extend({
route:'/audit',
connectOutlets:function (router) {
+ router.set('mainAdminController.category', "audit");
router.get('mainAdminController').connectOutlet('mainAdminAudit');
}
}),
- connectOutlets:function (router, context) {
- router.get('mainController').connectOutlet('mainAdmin');
- },
-
-// adminDetails:Em.Route.extend({
-// route:'/:route',
-// connectOutlets:function (router, menu) {
-// router.get('mainAdminController').connectOutlet('mainAdmin' + menu.route.capitalize(), menu);
-// }
-// }),
-
-// advanced:Em.Route.extend({
-// route:'/:name',
-// connectOutlets:function (router, service) {
-// router.get('mainServiceController').connectOutlet('mainServiceItem', service);
-// }
-// }),
-
adminNavigate:function (router, object) {
- object.view._parentView.activateView(object.context.route);
- console.log(object.context.route);
Em.run.next(function () {
- router.transitionTo('admin' + object.context.route.capitalize());
+ router.transitionTo('admin' + object.context.capitalize());
});
}
}),
@@ -213,12 +203,6 @@ module.exports = Em.Route.extend({
route:'/dashboard',
connectOutlets:function (router, context) {
router.get('mainController').connectOutlet('mainDashboard');
- },
- selectService: Em.Route.transitionTo('services.service'),
- selectHost: Em.Router.transitionTo('hostDetails.index'),
- filterHosts: function(router, component) {
- router.get('mainHostController').set('filters.components', [component.context.get('id')]);
- router.transitionTo('hosts');
}
}),
@@ -233,7 +217,7 @@ module.exports = Em.Route.extend({
if (!service) {
service = App.Service.find(1); // getting the first service to display
}
- router.transitionTo('service', service);
+ router.transitionTo('service.summary', service);
});
},
connectOutlets:function (router, context) {
@@ -279,12 +263,6 @@ module.exports = Em.Route.extend({
router.get('mainServiceItemController').connectOutlet('mainServiceInfoAudit', item);
}
}),
- selectService: Em.Route.transitionTo('services.service'),
- selectHost: Em.Router.transitionTo('hostDetails.index'),
- filterHosts: function(router, component) {
- router.get('mainHostController').set('filters.components', [component.context.get('id')]);
- router.transitionTo('hosts');
- },
showInfo:function (router, event) {
var parent = event.view._parentView;
parent.deactivateChildViews();
@@ -292,25 +270,21 @@ module.exports = Em.Route.extend({
router.transitionTo(event.context);
}
}),
- connectOutlets:function (router, context) {
- router.get('mainController').connectOutlet('mainService');
- },
showService:Em.Router.transitionTo('service')
}),
+ selectService:Em.Route.transitionTo('services.service'),
+ selectHost:function (router, event) {
+ router.get('mainHostDetailsController').setBack(false);
+ router.transitionTo('hostDetails.index', event.context);
+ },
+ filterHosts:function (router, component) {
+ router.get('mainHostController').filterByComponent(component.context);
+ router.transitionTo('hosts');
+ },
navigate:function (router, event) {
var parent = event.view._parentView;
parent.deactivateChildViews(event.context);
router.transitionTo(event.context.routing);
}
-
- // TODO: create new routes here
- // dashboard
- // charts
- // hosts
- // hosts/:hostname
- // admin
- // etc...
-
-
});
\ No newline at end of file
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/styles/app.css
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/styles/app.css?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/styles/app.css (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/styles/app.css Wed Oct 3 23:48:57 2012
@@ -16,55 +16,6 @@
* limitations under the License.
*/
-/*Box styles*/
-.box {
- border: 1px solid #5fa3c3;
- margin-bottom: 20px;
-}
-.box-header,
-.box-footer {
- padding: 10px;
- background: #dedede;
-}
-.box-footer hr {
- margin: 0px;
-}
-.box-header:after,
-.box-footer:after {
- content: "";
- display: table;
- clear: both;
-}
-.box-header .btn-group {
- float: right;
-}
-.box-header h4 {
- float: left;
-}
-
-.alerts {
- margin: 0px;
-}
-.alerts li {
- border-bottom: 1px solid #b7b9bb;
- list-style: none;
- padding: 5px 10px 5px 43px;
-}
-.alerts li.status-ok {
- background: url("../img/status-ok.jpg") no-repeat 14px 9px;
-}
-.alerts li.status-corrupt {
- background: url("../img/status-corrupt.jpg") no-repeat 14px 9px;
-}
-.alerts li .date-time {
- float: right;
-}
-.go-to {
- float: right;
- background: url("../img/arrow-right.png") no-repeat right center;
- padding-right: 40px;
- margin-top: 20px;
-}
/*Services*/
.service-summary {
background: #F6FAFD;
@@ -106,7 +57,7 @@
.service-button {
text-align: right;
margin-bottom: 5px;
- margin-top: -57px;
+ margin-top: -55px;
}
.add-service-button {
position: relative;
@@ -143,18 +94,22 @@
#hosts .table td.first label{
padding-top: 3px;
}
-#hosts .table td.first label span{
+#hosts .table td.name span{
display: block;
+ float: left;
height: 13px;
- margin: 3px 0 0 3px;
+ margin: 4px 5px 0 0;
width: 13px;
}
-#hosts .table ul.filter-components li{
+#hosts .open-group > .dropdown-menu{
+ display: block;
+}
+#hosts .table ul#filter-dropdown li{
display: block;
padding: 3px 0 3px 5px;
line-height: 20px;
}
-#hosts .table ul.filter-components li input[type="checkbox"]{
+#hosts .table ul#filter-dropdown li input[type="checkbox"]{
margin-top: 0;
margin-right: 2px;
margin-bottom: 2px;
@@ -232,7 +187,7 @@
border: 1px solid #DEDEDE;
background: #fff;
}
-#host-details .host-components .btn{
+#host-details .host-components .btn-group{
margin:0 5px 10px 0;
}
/*End Hosts*/
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/styles/application.less
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/styles/application.less?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/styles/application.less (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/styles/application.less Wed Oct 3 23:48:57 2012
@@ -16,6 +16,13 @@
* limitations under the License.
*/
+.gradient(@color: #FAFAFA, @start: #FFFFFF, @stop: #F2F2F2) {
+ background: @color;
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0, @start), color-stop(1, @stop));
+ background: -ms-linear-gradient(top, @start, @stop);
+ background: -moz-linear-gradient(center top, @start 0%, @stop 100%);
+}
+
html, body {
height: 100%;
}
@@ -226,9 +233,51 @@ a:focus {
@status-live-marker: url("../img/health-status-live.png");
@status-dead-marker: url("../img/health-status-dead.png");
+@status-ok-marker: url("../img/status-ok.jpg");
+@status-corrupt-marker: url("../img/status-corrupt.jpg");
+@arrow-right: url("../img/arrow-right.png");
+
+/*****start styles for boxes*****/
+.box {
+ border: 1px solid #D4D4D4;
+ border-radius: 4px;
+ margin-bottom: 20px;
+
+ .box-header {
+ border-bottom: 1px solid #D4D4D4;
+ border-radius: 4px 4px 0 0;
+ }
+ .box-header,
+ .box-footer {
+ padding: 10px;
+ /*background: #dedede;*/
+ .gradient(#dedede, #ffffff, #dedede)
+ }
+ .box-header:after,
+ .box-footer:after {
+ content: "";
+ display: table;
+ clear: both;
+ }
+ .box-header {
+ .btn-group {
+ float: right;
+ }
+ h4 {
+ float: left;
+ }
+ }
+ .box-footer {
+ hr {
+ margin: 0px;
+ }
+ }
+}
+/*****end styles for boxes*****/
-/*Dashboard*/
+/*****start styles for dashboard page*****/
+/*start services summary*/
.services {
margin-left: 5px;
.tab-marker-position {
@@ -245,7 +294,50 @@ a:focus {
.tab-marker-position;
background-image: @status-dead-marker;
}
+ dt {
+ text-align: left;
+ width: 120px;
+ }
+ dd{
+ margin-left: 145px;
+ }
+}
+/*end services summary*/
+
+/*start alerts summary*/
+.alerts {
+ margin: 0px;
+ li {
+ border-bottom: 1px solid #b7b9bb;
+ list-style: none;
+ padding: 5px 10px 5px 43px;
+ background-position: 14px 9px;
+ background-repeat: no-repeat;
+ .date-time {
+ float: right;
+ }
+ p {
+ margin-bottom: 2px;
+ }
+ }
+ li.status-ok {
+ background-image: @status-ok-marker;
+ }
+ li.status-corrupt {
+ background-image: @status-corrupt-marker;
+ }
+}
+.go-to {
+ float: right;
+ background-position: right center;
+ background-repeat: no-repeat;
+ background-image: @arrow-right;
+ padding-right: 40px;
+ margin-top: 10px;
}
+/*end alerts summary*/
+
+/*****end styles for dashboard page*****/
/*Services*/
.nav-tabs {
@@ -332,17 +424,18 @@ a:focus {
border: solid 1px #cccccc;
padding: 8px;
margin-bottom: 10px;
- background-color: #FFFAFA;
+ background-color: #fafafa;
}
.host-assignments .assignedService {
- padding: 5px;
+ padding: 2px 8px;
border: solid 1px #cccccc;
margin: 2px;
- background-color: #69BE28;
+ background-color: @green;
color: white;
white-space: nowrap;
font-size: 0.9em;
+ display: inline-block;
}
.form-horizontal .controls {
@@ -364,7 +457,7 @@ a:focus {
}
.controls .badge {
- background-color: #ADC299;
+ background-color: @green;
color: #ffffff;
cursor: pointer;
font-weight: bold;
@@ -372,7 +465,7 @@ a:focus {
}
.assign-master .controls .badge:hover {
- background-color: #99B280;
+ background-color: @green;
}
.alertFlag {
@@ -388,4 +481,23 @@ a:focus {
/*Dashboard*/
.alerts-count {
margin-left: 5px;
+}
+
+ul.filter {
+ background: #ffffff;
+ list-style: none;
+ position: absolute;
+ padding: 10px;
+}
+
+#main-admin-menu {
+ margin-left: 0;
+
+ ul {
+ margin-bottom: 0;
+ }
+}
+
+#user-auth-method select {
+ width: 320px;
}
\ No newline at end of file
Added: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/common/grid/filter.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/common/grid/filter.hbs?rev=1393835&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/common/grid/filter.hbs (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/common/grid/filter.hbs Wed Oct 3 23:48:57 2012
@@ -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.
+-->
+{{#each filter in view.filters}}
+<li>
+ <label class="checkbox">
+ {{view Em.Checkbox checkedBinding="filter.checked"}} {{filter.label}}
+ </label>
+</li>
+{{/each}}
\ No newline at end of file
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/common/grid/header.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/common/grid/header.hbs?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/common/grid/header.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/common/grid/header.hbs Wed Oct 3 23:48:57 2012
@@ -15,4 +15,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
-->
-{{view.label}}<i {{action doFilter target="view"}} class="icon-filter"></i>
\ No newline at end of file
+{{view.label}}<i {{action toggleFilter target="view"}} class="icon-filter"></i>
+{{#if view.showFilter}}
+{{view view.filter}}
+ <a {{action applyFilter target="view"}}>apply</a>
+{{/if}}
\ No newline at end of file
Added: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/common/grid/pager.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/common/grid/pager.hbs?rev=1393835&view=auto
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/common/grid/pager.hbs (added)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/common/grid/pager.hbs Wed Oct 3 23:48:57 2012
@@ -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.
+-->
+<ul>
+ <li {{bindAttr class="view.prevPageDisabled"}}><a {{action activatePrevPage target="view"}} href="#">Prev</a></li>
+ {{#each page in view.pages}}
+ <li {{bindAttr class="page.activeClass"}} ><a {{action activatePage page target="view" }} href="#">{{page.number}}</a></li>
+ {{/each}}
+ <li {{bindAttr class="view.nextPageDisabled"}}><a {{action activateNextPage target="view"}} href="#">Next</a></li>
+</ul>
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step3.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step3.hbs?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step3.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/installer/step3.hbs Wed Oct 3 23:48:57 2012
@@ -57,7 +57,6 @@
<tr>
<th>
{{view Ember.Checkbox checkedBinding="allChecked"}}
- {{controller.category}}
</th>
<th>Status</th>
<!-- given by the parsing function that parses data from bootstrap call -->
@@ -65,8 +64,9 @@
<!-- retrieved from local storage initially -->
<th>Message</th>
<!-- given by the parsing function that parses data from bootstrap call, dynamically assign the color -->
- <th>Delete</th>
+ <th>Action</th>
<!-- trash icon -->
+ <!-- retry icon -->
</tr>
</thead>
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin.hbs?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin.hbs Wed Oct 3 23:48:57 2012
@@ -16,7 +16,9 @@
* limitations under the License.
-->
+<div id="main-admin-menu" class="well span2">
{{view App.MainAdminMenuView}}
+</div>
<div class="span9">
{{outlet}}
</div>
\ No newline at end of file
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin/audit.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin/audit.hbs?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin/audit.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin/audit.hbs Wed Oct 3 23:48:57 2012
@@ -16,22 +16,20 @@
* limitations under the License.
-->
-<table class="table">
+<table class="table table-striped">
<thead>
<tr>
{{#each column in view.columns}}
- {{view column}}
+ {{view column}}
{{/each}}
</tr>
</thead>
+ <tbody>
+ {{#each row in view.rows}}
+ {{view row}}
+ {{/each}}
+ </tbody>
</table>
-<div class="pagination">
- <ul>
- <li><a href="#">Prev</a></li>
- <li><a href="#">1</a></li>
- <li><a href="#">2</a></li>
- <li><a href="#">3</a></li>
- <li><a href="#">4</a></li>
- <li><a href="#">Next</a></li>
- </ul>
-</div>
\ No newline at end of file
+{{#if view.pager}}
+ {{view view.pager}}
+{{/if}}
\ No newline at end of file
Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin/authentication.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin/authentication.hbs?rev=1393835&r1=1393834&r2=1393835&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin/authentication.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin/authentication.hbs Wed Oct 3 23:48:57 2012
@@ -16,7 +16,7 @@
* limitations under the License.
-->
-{{view App.FormFieldTemplate fieldBinding="view.form.field.method"}}
+{{view App.FormFieldTemplate fieldBinding="view.form.field.method" id="user-auth-method"}}
{{#if view.ldapChecked}}
{{view App.FormFieldTemplate fieldBinding="view.form.field.primaryServer"}}
@@ -42,8 +42,7 @@
<p {{bindAttr class="view.form.testConfigurationClass"}}>{{view.form.testConfigurationMessage}}</p>
{{/if}}
{{/if}}
-<div class="span3"></div>
-<div>
+<div style="margin:40px 0">
<button {{action updateValues target="view.form"}} class="btn">{{t form.cancel}}</button>
<button {{action save view.form target="App.router.mainAdminAuthenticationController"}} class="btn btn-primary">{{t form.save}}</button>
</div>
\ No newline at end of file