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/12/09 14:22:36 UTC

svn commit: r1418938 [3/3] - in /incubator/ambari/branches/AMBARI-666/ambari-web: ./ app/ app/assets/data/apps/ app/assets/data/clusters/ app/assets/data/users/ app/controllers/ app/controllers/global/ app/controllers/main/ app/controllers/main/admin/ ...

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin/user/row.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin/user/row.hbs?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin/user/row.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/admin/user/row.hbs Sun Dec  9 13:22:27 2012
@@ -19,6 +19,7 @@
 <tr>
   <td>{{user.userName}}</td>
   <td>{{view Ember.Checkbox disabledBinding="view.disableCheckBoxes" checkedBinding="user.admin"}}</td>
+  <td>{{user.type}}</td>
   <td>
     <a href="#" {{action gotoEditUser user on="click"}}>{{t admin.users.edit}}</a>&nbsp;
     <a href="#" {{action deleteRecord user target="App.router.mainAdminUserController" }}>{{t admin.users.delete}}</a>

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/apps.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/apps.hbs?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/apps.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/apps.hbs Sun Dec  9 13:22:27 2012
@@ -78,16 +78,16 @@
       <th>Run Date</th>
     </tr>
     <tr>
-      <th>{{view view.starFilterView viewName="starFilterViewInstance"}}</th>
-      <th>{{view view.appidFilterView}}</th>
-      <th>{{view view.nameFilterView}}</th>
-      <th>{{view view.typeSelectView}}</th>
-      <th>{{view view.userFilterView}}<input id="user_filter" type="hidden"></th>
-      <th>{{view view.jobsFilterView}}</th>
-      <th>{{view view.inputFilterView}}</th>
-      <th>{{view view.outputFilterView}}</th>
-      <th>{{view view.durationFilterView}}</th>
-      <th>{{view view.rundateSelectView}}</th>
+      <th class="notActive"><div class="view-wrapper">{{view view.starFilterView viewName="starFilterViewInstance"}}</div></th>
+      <th class="notActive"><div class="view-wrapper">{{view view.appidFilterView viewName="appidFilterViewInstance"}}</div> <a href="#" {{action "clearFilterButtonClick" target="view"}} id="view_appidFilterViewInstance" class="ui-icon ui-icon-circle-close ui-appid"></a></th>
+      <th class="notActive"><div class="view-wrapper">{{view view.nameFilterView viewName="nameFilterViewInstance"}}</div> <a href="#" {{action "clearFilterButtonClick" target="view"}} id="view_nameFilterViewInstance" class="ui-icon ui-icon-circle-close ui-name"></a></th>
+      <th class="notActive"><div class="view-wrapper">{{view view.typeSelectView viewName="typeSelectViewInstance"}}</div> <a href="#" {{action "clearFilterButtonClick" target="view"}} id="view_typeSelectViewInstance" class="ui-icon ui-icon-circle-close ui-type"></a></th>
+      <th class="notActive"><div class="view-wrapper">{{view view.userFilterView viewName="userFilterViewInstance"}}</div> <a href="#" {{action "clearFilterButtonClick" target="view"}} id="view_userFilterViewInstance" class="ui-icon ui-icon-circle-close ui-user"></a><input id="user_filter" type="hidden"></th>
+      <th class="notActive"><div class="view-wrapper">{{view view.jobsFilterView viewName="jobsFilterViewInstance"}}</div> <a href="#" {{action "clearFilterButtonClick" target="view"}} id="view_jobsFilterViewInstance" class="ui-icon ui-icon-circle-close ui-jobs"></a></th>
+      <th class="notActive"><div class="view-wrapper">{{view view.inputFilterView viewName="inputFilterViewInstance"}}</div> <a href="#" {{action "clearFilterButtonClick" target="view"}} id="view_inputFilterViewInstance" class="ui-icon ui-icon-circle-close ui-input"></a></th>
+      <th class="notActive"><div class="view-wrapper">{{view view.outputFilterView viewName="outputFilterViewInstance"}}</div> <a href="#" {{action "clearFilterButtonClick" target="view"}} id="view_outputFilterViewInstance" class="ui-icon ui-icon-circle-close ui-output"></a></th>
+      <th class="notActive"><div class="view-wrapper">{{view view.durationFilterView viewName="durationFilterViewInstance"}}</div> <a href="#" {{action "clearFilterButtonClick" target="view"}} id="view_durationFilterViewInstance" class="ui-icon ui-icon-circle-close ui-duration"></a></th>
+      <th class="notActive"><div class="view-wrapper">{{view view.rundateSelectView viewName="rundateSelectViewInstance"}}</div> <a href="#" {{action "clearFilterButtonClick" target="view"}} id="view_rundateSelectViewInstance" class="ui-icon ui-icon-circle-close ui-rundate"></a></th>
     </tr>
     </thead>
     <tbody>

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/apps/list_row.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/apps/list_row.hbs?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/apps/list_row.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/apps/list_row.hbs Sun Dec  9 13:22:27 2012
@@ -25,4 +25,4 @@
 <td>{{unbound run.inputFormatted}}</td>
 <td>{{unbound run.outputFormatted}}</td>
 <td>{{unbound run.duration}}</td>
-<td>{{unbound run.lastUpdateTimeFormatted}} {{#if run.isRunning}}<b class='red'>*</b>{{/if}}</td>
\ No newline at end of file
+<td>{{unbound run.lastUpdateTimeFormatted}}&nbsp;{{#if run.isRunning}}<b class='red'>*</b>{{/if}}</td>
\ No newline at end of file

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/dashboard.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/dashboard.hbs?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/dashboard.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/dashboard.hbs Sun Dec  9 13:22:27 2012
@@ -25,12 +25,9 @@
             <h4>{{t dashboard.services}}</h4>
           </div>
           <dl class="dl-horizontal services">
-            {{view App.MainDashboardServiceHdfsView controllerBinding="controller"}}
-            {{view App.MainDashboardServiceMapreduceView controllerBinding="controller"}}
-            {{view App.MainDashboardServiceHbaseView controllerBinding="controller"}}
-            {{view App.MainDashboardServiceHiveView controllerBinding="controller"}}
-            {{view App.MainDashboardServiceZookeperView controllerBinding="controller"}}
-            {{view App.MainDashboardServiceOozieView controllerBinding="controller"}}
+            {{#each item in view.content}}
+              {{view item.viewName serviceBinding="item.model"}}
+            {{/each}}
           </dl>
         </div>
       </div>

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/dashboard/service/hbase.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/dashboard/service/hbase.hbs?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/dashboard/service/hbase.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/dashboard/service/hbase.hbs Sun Dec  9 13:22:27 2012
@@ -70,7 +70,7 @@
   </tr>
   </tbody>
 </table>
-<div class="chart">
+<div class="dashboard-mini-chart">
   {{view view.Chart}}
   <div class="chartLabel">{{t dashboard.services.hbase.chart.label}}</div>
   {{#if view.service.quickLinks.length}}

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/dashboard/service/hdfs.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/dashboard/service/hdfs.hbs?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/dashboard/service/hdfs.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/dashboard/service/hdfs.hbs Sun Dec  9 13:22:27 2012
@@ -120,7 +120,7 @@
   </tr>
   </tbody>
 </table>
-<div class="chart">
+<div class="dashboard-mini-chart">
   {{view view.Chart}}
   <div class="chartLabel">{{t dashboard.services.hdfs.chart.label}}</div>
   {{#if view.service.quickLinks.length}}

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/dashboard/service/mapreduce.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/dashboard/service/mapreduce.hbs?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/dashboard/service/mapreduce.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/dashboard/service/mapreduce.hbs Sun Dec  9 13:22:27 2012
@@ -67,7 +67,8 @@
     <td>{{t dashboard.services.mapreduce.taskTrackerCounts}}</td>
     <td>
       {{view.service.grayListTrackers.length}} {{t dashboard.services.mapreduce.nodes.blacklist}} /
-      {{view.service.blackListTrackers.length}} {{t dashboard.services.mapreduce.nodes.graylist}}
+      {{view.service.blackListTrackers.length}} {{t dashboard.services.mapreduce.nodes.graylist}} /
+      {{view.service.trackersDecommisioned}} {{t dashboard.services.hdfs.nodes.decom}} 
     </td>
   </tr>
   <!-- JobTracker Heap -->
@@ -107,7 +108,7 @@
   </tr>
   </tbody>
 </table>
-<div class="chart">
+<div class="dashboard-mini-chart">
   {{view App.ChartServiceMetricsMapReduce_JobsRunningWaiting}}
   
   {{#if view.service.quickLinks.length}}

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/host.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/host.hbs?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/host.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/host.hbs Sun Dec  9 13:22:27 2012
@@ -62,7 +62,7 @@
       <th>Load Avg</th>
       <th>
         <div {{bindAttr class="view.btnGroupClass"}} >
-          <button class="btn btn-info" {{action "clickFilterButton" target="view"}}>
+          <button class="btn btn-info single-btn-group" {{action "clickFilterButton" target="view"}}>
             Components
             <span class="caret"></span>
           </button>

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/host/summary.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/host/summary.hbs?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/host/summary.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/host/summary.hbs Sun Dec  9 13:22:27 2012
@@ -17,7 +17,7 @@
 }}
 
 <div class="row">
-  <div class="span5 host-configuration">
+  <div class="span6 host-configuration">
     <div class="box">
 		  <div class="box-header">
 		    <h4>Summary</h4>
@@ -26,9 +26,9 @@
 		    <dl class="dl-horizontal">
 		      <dt>IP:</dt><dd>{{view.content.ip}}</dd>
 		      <dt>CPU:</dt><dd>{{view.content.cpu}}</dd>
-		      <dt>OS:</dt><dd>type</dd>
-		      <dt>Disk Usage:</dt><dd>{{view.content.diskUsage}}</dd>
-		      <dt>Memory:</dt><dd>{{view.content.memory}}</dd>
+          <dt>OS:</dt><dd>{{view.content.osType}}&nbsp;({{view.content.osArch}})</dd>
+          <dt>Disk Usage:</dt><dd>{{view.content.diskUsage}}</dd>
+          <dt>Memory:</dt><dd>{{view.content.memoryFormatted}}</dd>
 		      <dt>Load Avg:</dt><dd>{{view.content.loadAvg}}</dd>
 		      <dt>Agent:</dt><dd>running</dd>
 		    </dl>
@@ -39,10 +39,17 @@
   <div class="span3 host-components pull-right">
     {{#each component in view.content.components}}
     {{#view view.ComponentButtonView contentBinding="component"}}
-      <div {{bindAttr class=":btn-group view.positionButton:pull-right:pull-left"}}>
-        <button {{bindAttr class=":component-operation-button :btn :btn-success :dropdown-toggle view.disabledClass"}} data-toggle="dropdown">
+    {{#if view.isClient}}
+    <div class="btn-group pull-left">
+      <button class="btn">
+        {{unbound view.content.displayName}}
+      </button>
+    </div>
+    {{else}}
+      <div {{bindAttr class=":btn-group :pull-left"}}>
+        <button {{bindAttr class=":component-operation-button :btn :dropdown-toggle view.disabledClass"}} data-toggle="dropdown">
           <span {{bindAttr class=":components-health view.indicatorClass"}}></span>
-          {{unbound view.content.componentName}}
+          {{unbound view.content.displayName}}
           <span class="caret"></span>
         </button>
         <ul class="dropdown-menu">
@@ -70,6 +77,7 @@
             </li>
         </ul>
       </div>
+    {{/if}}
     {{/view}}
     {{/each}}
   </div>

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/service/menu_item.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/service/menu_item.hbs?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/service/menu_item.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/main/service/menu_item.hbs Sun Dec  9 13:22:27 2012
@@ -18,9 +18,9 @@
 
 <a href="#/main/services/{{unbound view.content.id}}/summary">
   {{view App.MainDashboardServiceHealthView class="service-health" serviceBinding="view.content"}}&nbsp;<span>{{unbound view.content.displayName}}</span>
-  {{#if view.serviceOperationsCount}}
-    <span class="label operations-count" {{action "showPopup" target="App.router.backgroundOperationsController"}}>
-      {{view.serviceOperationsCount}}
+  {{#if view.alertsCount}}
+    <span class="label operations-count">
+      {{view.alertsCount}}
     </span>
   {{/if}}
 </a>

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/wizard/step5.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/wizard/step5.hbs?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/wizard/step5.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/wizard/step5.hbs Sun Dec  9 13:22:27 2012
@@ -36,6 +36,7 @@
             selectedHostBinding="selectedHost"
             serviceNameBinding="display_name"
             zIdBinding="zId"
+            disabledBinding="isInstalled"
           }}
           {{#if showAddControl}}
           {{view App.AddControlView

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/wizard/step6.hbs
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/wizard/step6.hbs?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/wizard/step6.hbs (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/templates/wizard/step6.hbs Sun Dec  9 13:22:27 2012
@@ -66,7 +66,7 @@
     {{#each hosts}}
     <tr>
         {{#view App.WizardStep6HostView hostBinding = "this" }}
-          {{hostname}}
+          {{hostName}}
           {{#if isMaster}}
             <i class=icon-asterisks>&#10037</i>
           {{/if}}

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/utils/data_table.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/utils/data_table.js?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/utils/data_table.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/utils/data_table.js Sun Dec  9 13:22:27 2012
@@ -322,9 +322,8 @@ jQuery.extend($.fn.dataTableExt.afnFilte
             break;
           case '=':
             if (compareValue == rowValue) match = true;
-            break;
           default:
-            match = false;
+            if (rangeExp == rowValue) match = true;
         }
       }
 

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/utils/date.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/utils/date.js?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/utils/date.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/utils/date.js Sun Dec  9 13:22:27 2012
@@ -77,7 +77,7 @@ module.exports = {
   dateUnformatInterval: function(formattedDate) {
     var d = formattedDate.split(':');
     for (var k in d) {
-      d[k] = parseInt(d[k]);
+      d[k] = parseInt(d[k], 10);
     }
     return d[0]*3600+d[1]*60+d[2];
   }

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/utils/db.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/utils/db.js?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/utils/db.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/utils/db.js Sun Dec  9 13:22:27 2012
@@ -50,7 +50,10 @@ App.db.cleanUp = function () {
     'app': {
       'loginName': '',
       'authenticated': false
-    }
+    },
+    'Installer' : {},
+    'AddHost' : {},
+    'AddService' : {}
   };
   console.log("In cleanup./..");
   localStorage.setObject('ambari', App.db.data);
@@ -80,7 +83,10 @@ App.db.setAmbariStacks = function (stack
   localStorage.setObject('ambari', App.db.data);
 };
 
-// that works incorrectly
+/**
+ * Set user model to db
+ * @param user
+ */
 App.db.setUser = function (user) {
   console.log('TRACE: Entering db:setUser function');
   App.db.data = localStorage.getObject('ambari');
@@ -100,106 +106,45 @@ App.db.setAuthenticated = function (auth
   console.log('Now present value of authentication is: ' + App.db.data.app.authenticated);
 };
 
-App.db.setSection = function (section) {
-  console.log('TRACE: Entering db:setSection function');
-  App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  if (App.db.data[user] == undefined) {
-    App.db.data[user] = {'name': user};
-  }
-  if (App.db.data[user].ClusterName == undefined) {
-    App.db.data[user].ClusterName = {};
-  }
-  App.db.data[user].section = section;
-  localStorage.setObject('ambari', App.db.data);
-};
-
-App.db.setInstallerCurrentStep = function (currentStep, completed) {
-  console.log('TRACE: Entering db:setInstallerCurrentStep function');
-  App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  if (App.db.data[user] == undefined) {
-    console.log('In data[user] condition');
-    App.db.data[user] = {'name': user};
-    console.log('value of data[user].name: ' + App.db.data[user].name);
-  }
-  if (App.db.data[user].Installer == undefined) {
-    App.db.data[user].Installer = {};
-    console.log('');
-  }
-  App.db.data[user].Installer.currentStep = currentStep;
-  App.db.data[user].Installer.completed = completed;
-  localStorage.setObject('ambari', App.db.data);
-};
-
 App.db.setClusterName = function (name) {
   console.log('TRACE: Entering db:setClusterName function');
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  // all information from Installer.ClusterName will be transferred to clusters[ClusterName] when app migrates from installer to main
-  if (App.db.data[user] == undefined) {
-    App.db.data[user] = {'name': user};
-  }
-  if (App.db.data[user].clusters == undefined) {
-    App.db.data[user].clusters = {};
-  }
-
-  if (App.db.data[user].Installer == undefined) {
-    App.db.data[user].Installer = {};
-  }
-  App.db.data[user].Installer.ClusterName = name;
+  App.db.data.Installer.ClusterName = name;
   localStorage.setObject('ambari', App.db.data);
 };
 
 App.db.setAllHostNames = function (hostNames) {
   console.log('TRACE: Entering db:setAllHostNames function');
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  if (App.db.data[user] == undefined) {
-    App.db.data[user] = {'name': user};
-  }
-  App.db.data[user].Installer.hostNames = hostNames;
+  App.db.data.Installer.hostNames = hostNames;
   localStorage.setObject('ambari', App.db.data);
 };
 
 App.db.setHosts = function (hostInfo) {
   console.log('TRACE: Entering db:setHosts function');
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  if (App.db.data[user] == undefined) {
-    App.db.data[user] = {'name': user};
-  }
-  App.db.data[user].Installer.hostInfo = hostInfo;
+  App.db.data.Installer.hostInfo = hostInfo;
   localStorage.setObject('ambari', App.db.data);
 };
 
 App.db.setInstallType = function (installType) {
   console.log('TRACE: Entering db:setInstallType function');
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  if (App.db.data[user] == undefined) {
-    App.db.data[user] = {'name': user};
-  }
-  App.db.data[user].Installer.installType = installType;
+  App.db.data.Installer.installType = installType;
   localStorage.setObject('ambari', App.db.data);
 };
 
 App.db.setSoftRepo = function (softRepo) {
   console.log('TRACE: Entering db:setSoftRepo function');
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  if (App.db.data[user] == undefined) {
-    App.db.data[user] = {'name': user};
-  }
-  App.db.data[user].Installer.softRepo = softRepo;
+  App.db.data.Installer.softRepo = softRepo;
   localStorage.setObject('ambari', App.db.data);
 };
 
 App.db.setBootStatus = function (status) {
   console.log('TRACE: Entering db:setBootStatus function');
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  App.db.data[user].Installer.bootStatus = status;
+  App.db.data.Installer.bootStatus = status;
   localStorage.setObject('ambari', App.db.data);
 };
 
@@ -216,87 +161,89 @@ App.db.removeHosts = function (hostInfo)
 App.db.setService = function (serviceInfo) {
   console.log('TRACE: Entering db:setService function');
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  App.db.data[user].Installer.serviceInfo = serviceInfo;
+  App.db.data.Installer.serviceInfo = serviceInfo;
   localStorage.setObject('ambari', App.db.data);
 };
 
 App.db.setSelectedServiceNames = function (serviceNames) {
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  App.db.data[user].Installer.selectedServiceNames = serviceNames;
+  App.db.data.Installer.selectedServiceNames = serviceNames;
   localStorage.setObject('ambari', App.db.data);
 };
 
 App.db.setClientsForSelectedServices = function (clientInfo) {
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  App.db.data[user].Installer.clientInfo = clientInfo;
+  App.db.data.Installer.clientInfo = clientInfo;
   localStorage.setObject('ambari', App.db.data);
 };
 
 App.db.setMasterComponentHosts = function (masterComponentHosts) {
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  App.db.data[user].Installer.masterComponentHosts = masterComponentHosts;
-  localStorage.setObject('ambari', App.db.data);
-};
-
-App.db.setHostToMasterComponent = function (hostToMasterComponent) {
-  App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  App.db.data[user].Installer.hostToMasterComponent = hostToMasterComponent;
+  App.db.data.Installer.masterComponentHosts = masterComponentHosts;
   localStorage.setObject('ambari', App.db.data);
 };
 
 App.db.setHostSlaveComponents = function (hostSlaveComponents) {
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  App.db.data[user].Installer.hostSlaveComponents = hostSlaveComponents;
+  App.db.data.Installer.hostSlaveComponents = hostSlaveComponents;
   localStorage.setObject('ambari', App.db.data);
 };
 
 App.db.setSlaveComponentHosts = function (slaveComponentHosts) {
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  App.db.data[user].Installer.slaveComponentHosts = slaveComponentHosts;
+  App.db.data.Installer.slaveComponentHosts = slaveComponentHosts;
   localStorage.setObject('ambari', App.db.data);
 };
 
 App.db.setServiceConfigs = function (serviceConfigs) {
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  App.db.data[user].Installer.serviceConfigs = serviceConfigs;
+  App.db.data.Installer.serviceConfigs = serviceConfigs;
   localStorage.setObject('ambari', App.db.data);
 };
 
 App.db.setAdvancedServiceConfig = function(serviceConfigs) {
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  App.db.data[user].Installer.advanceServiceConfigs = serviceConfigs;
+  App.db.data.Installer.advanceServiceConfigs = serviceConfigs;
   localStorage.setObject('ambari', App.db.data);
 };
 
 App.db.setServiceConfigProperties = function (configProperties) {
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  App.db.data[user].Installer.configProperties = configProperties;
+  App.db.data.Installer.configProperties = configProperties;
   localStorage.setObject('ambari', App.db.data);
 };
 
 App.db.setClusterStatus = function (status) {
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  App.db.data[user].clusterStatus = status;
+  App.db.data.Installer.clusterStatus = status;
   console.log('db.setClusterStatus called: ' + JSON.stringify(status));
   localStorage.setObject('ambari', App.db.data);
 };
 
+/**
+ * Set current step value for specified Wizard Type
+ * @param wizardType
+ * @param currentStep
+ * @param completed
+ */
+App.db.setWizardCurrentStep = function (wizardType, currentStep, completed) {
+  console.log('TRACE: Entering db:setWizardCurrentStep function');
+
+  App.db.data[wizardType.capitalize()].currentStep = currentStep;
+  App.db.data[wizardType.capitalize()].completed = completed;
+
+  localStorage.setObject('ambari', App.db.data);
+};
+
+
 /*
  *  getter methods
  */
 
-// that works incorrectly
+/**
+ * Get user model from db
+ * @return {*}
+ */
 App.db.getUser = function () {
   console.log('TRACE: Entering db:getUser function');
   App.db.data = localStorage.getObject('ambari');
@@ -315,25 +262,10 @@ App.db.getAuthenticated = function () {
   return App.db.data.app.authenticated;
 };
 
-App.db.getSection = function () {
-  console.log('Trace: Entering db:getSection function');
-  App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName
-  if (App.db.data[user] == undefined || App.db.data[user] == '') {
-    return 0;
-  }
-  return App.db.data[user].section;
-}
-
 App.db.getClusterName = function () {
   console.log('Trace: Entering db:getClusterName function');
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  if (user && App.db.data[user] && App.db.data[user].Installer) {
-    return App.db.data[user].Installer.ClusterName;
-  } else {
-    return null;
-  }
+  return App.db.data.Installer.ClusterName;
 };
 
 App.db.getAmbariStacks = function () {
@@ -349,162 +281,97 @@ App.db.getAmbariStacks = function () {
  */
 App.db.getWizardCurrentStep = function (wizardType) {
   console.log('Trace: Entering db:getWizardCurrentStep function for ', wizardType);
-  var user = this.getUser();
-  if (App.db.data[user] && App.db.data[user][wizardType.capitalize()]) {
-    return App.db.data[user][wizardType.capitalize()].currentStep;
+  if (App.db.data[wizardType.capitalize()]) {
+    return App.db.data[wizardType.capitalize()].currentStep;
   }
   return 0;
 };
 
-/**
- * Set current step value for specified Wizard Type
- * @param wizardType
- * @param currentStep
- * @param completed
- */
-App.db.setWizardCurrentStep = function (wizardType, currentStep, completed) {
-  console.log('TRACE: Entering db:setWizardCurrentStep function');
-
-  var user = this.getUser();
-  if (!App.db.data[user]) {
-    App.db.data[user] = {name: user};
-    console.log('value of data[user].name: ' + App.db.data[user].name);
-  }
-  App.db.data[user][wizardType.capitalize()] = {
-    currentStep: currentStep,
-    completed: completed
-  };
-  localStorage.setObject('ambari', App.db.data);
-};
-
-App.db.getInstallerCurrentStep = function () {
-  console.log('Trace: Entering db:getInstallerCurrentStep function');
-  App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  if (App.db.data[user] == undefined || App.db.data[user] == '') {
-    return 0;
-  }
-  return App.db.data[user].Installer.currentStep;
-};
-
 App.db.getAllHostNames = function () {
   console.log('TRACE: Entering db:getHostNames function');
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  return App.db.data[user].Installer.hostNames;
+  return App.db.data.Installer.hostNames;
 };
 
 App.db.getInstallType = function () {
   console.log('TRACE: Entering db:getHostNames function');
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  return App.db.data[user].Installer.installType;
+  return App.db.data.Installer.installType;
 };
 
 App.db.getSoftRepo = function () {
   console.log('TRACE: Entering db:getSoftRepo function');
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  return App.db.data[user].Installer.softRepo;
+  return App.db.data.Installer.softRepo;
 };
 
 App.db.isCompleted = function () {
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  return App.db.data[user].Installer.completed;
+  return App.db.data.Installer.completed;
 };
 
 App.db.getHosts = function () {
   console.log('TRACE: Entering db:getHosts function');
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  if (App.db.data[user] == undefined || App.db.data[user] == '') {
-    console.log('ERROR: loginName required for storing host info');
-    return 0;
-  }
-  return App.db.data[user].Installer.hostInfo;
+  return App.db.data.Installer.hostInfo;
 };
 
 App.db.getBootStatus = function () {
   console.log('TRACE: Entering db:getBootStatus function');
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  return App.db.data[user].Installer.bootStatus;
+  return App.db.data.Installer.bootStatus;
 };
 
 App.db.getService = function () {
   console.log('TRACE: Entering db:getService function');
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  return App.db.data[user].Installer.serviceInfo;
+  return App.db.data.Installer.serviceInfo;
 };
 
 App.db.getSelectedServiceNames = function () {
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  return App.db.data[user].Installer.selectedServiceNames;
+  return App.db.data.Installer.selectedServiceNames;
 };
 
 App.db.getClientsForSelectedServices = function () {
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  return App.db.data[user].Installer.clientInfo;
+  return App.db.data.Installer.clientInfo;
 };
 
 App.db.getMasterComponentHosts = function () {
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  return App.db.data[user].Installer.masterComponentHosts;
+  return App.db.data.Installer.masterComponentHosts;
 };
 
-App.db.getHostToMasterComponent = function () {
-  App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  return App.db.data[user].Installer.hostToMasterComponent;
-}
-
 App.db.getHostSlaveComponents = function () {
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  return App.db.data[user].Installer.hostSlaveComponents;
+  return App.db.data.Installer.hostSlaveComponents;
 };
 
 App.db.getSlaveComponentHosts = function () {
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  if (App.db.data[user] && App.db.data[user].Installer) {
-    return App.db.data[user].Installer.slaveComponentHosts;
-  }
-  return null;
+  return App.db.data.Installer.slaveComponentHosts;
 };
 
 App.db.getServiceConfigs = function () {
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  return App.db.data[user].Installer.serviceConfigs;
+  return App.db.data.Installer.serviceConfigs;
 };
 
 App.db.getAdvancedServiceConfig = function() {
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  return App.db.data[user].Installer.advanceServiceConfigs;
+  return App.db.data.Installer.advanceServiceConfigs;
 };
 
 App.db.getServiceConfigProperties = function () {
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  return App.db.data[user].Installer.configProperties;
+  return App.db.data.Installer.configProperties;
 };
 
 App.db.getClusterStatus = function () {
   console.log('TRACE: Entering db:getClusterStatus function');
   App.db.data = localStorage.getObject('ambari');
-  var user = App.db.data.app.loginName;
-  if (App.db.data[user] && App.db.data[user].clusterStatus) {
-    return App.db.data[user].clusterStatus;
-  } else {
-    return null;
-  }
+  return App.db.data.Installer.clusterStatus;
 };
 
 module.exports = App.db;

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/admin/menu.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/admin/menu.js?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/admin/menu.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/admin/menu.js Sun Dec  9 13:22:27 2012
@@ -23,11 +23,11 @@ App.MainAdminMenuView = Em.CollectionVie
     {
       route:'user',
       label:'Users'
-    },
+    }/*,
     {
       route:'authentication',
       label:'Authentication'
-    }/*,
+    },
     {
       route:'security',
       label:'Security'

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/admin/user/edit.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/admin/user/edit.js?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/admin/user/edit.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/admin/user/edit.js Sun Dec  9 13:22:27 2012
@@ -25,12 +25,16 @@ App.MainAdminUserEditView = Em.View.exte
     var form = this.get("userForm");
     if(form.isValid()) {
       var controller = this.get('controller');
-      var roles="user";
-      if(form.getValues().admin=="") roles="admin";
+      if(form.getValues().admin === "" || form.getValues().admin == true) {
+        form.field.roles.set('value',"admin");
+        form.field.admin.set('value',"true");
+      } else{
+        form.field.roles.set('value',"user");
+      }
       controller.sendCommandToServer('/users/' + form.getValues().userName, {
         Users: {
           password: form.getValues().password,
-          roles: roles
+          roles: form.getValues().roles
         }
       }, function (requestId) {
 

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/apps/item/dag_view.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/apps/item/dag_view.js?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/apps/item/dag_view.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/apps/item/dag_view.js Sun Dec  9 13:22:27 2012
@@ -92,6 +92,14 @@ App.MainAppsItemDagView = Em.View.extend
         null
       ]
     });
+
+    // Hard reset filter settings
+    innerTable.fnSettings().aiDisplay = innerTable.fnSettings().aiDisplayMaster.slice();
+    // Redraw table
+    innerTable.fnDraw(false);
+    innerTable.fnSettings().oFeatures.bFilter = false;
+
+    console.log(innerTable.fnSettings());
     var dagSchema = this.get('controller.content.workflowContext');
     var jobs = this.get('jobs');
     var graph = new DagViewer(false, 'dag_viewer')

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/apps_view.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/apps_view.js?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/apps_view.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/apps_view.js Sun Dec  9 13:22:27 2012
@@ -232,7 +232,6 @@ App.MainAppsView = Em.View.extend({
       this.get('oTable').fnPageChange(Math.floor(rowIndex / perPage));
     }
     var d = this.get('oTable').fnGetData();
-    console.log(this.get('oTable').fnSettings()['aiDisplay']);
   }.observes('controller.lastStarClicked'),
   /**
    * Flush all starred runs
@@ -254,13 +253,24 @@ App.MainAppsView = Em.View.extend({
       $('#dataTable .icon-star').removeClass('stared');
       $('a.icon-star.a').removeClass('active');
       this.get('starFilterViewInstance').set('value', '');
-      $('#dataTable tbody tr').each(function(index) {
+      /*$('#dataTable tbody tr').each(function(index) {
         var td = $(this).find('td:eq(0)');
         self.get('oTable').fnUpdate( td.html(), index, 0);
-      });
+      });*/
+      this.updateStars();
     }
   }.observes('controller.staredRunsLength'),
   /**
+   * Update stars data in dataTable. data taken from page
+   * Experimental. Need to be tested.
+   */
+  updateStars: function() {
+    var self = this;
+    $('#dataTable tbody tr').each(function(index) {
+      self.get('oTable').fnUpdate( $('#dataTable tbody tr:eq(' + index + ') td:eq(0)').html(), self.get('oTable').fnSettings()['aiDisplay'][index], 0);
+    });
+  },
+  /**
    * Reset filters and "turn off" stars
    */
   showAll: function() {
@@ -271,6 +281,7 @@ App.MainAppsView = Em.View.extend({
    * Display only stared rows
    */
   showStared: function() {
+    this.updateStars();
     this.get('starFilterViewInstance').set('value', 'stared');
     this.set('whatAvgShow', false);
     $('a.icon-star.a').addClass('active');
@@ -291,7 +302,6 @@ App.MainAppsView = Em.View.extend({
         $(element).addClass('selected');
       }
     });
-    console.log(viewType);
     switch(viewType) {
       case 'all':
         table.fnSettings().oFeatures.bFilter = false;
@@ -397,6 +407,24 @@ App.MainAppsView = Em.View.extend({
     this.setFilteredRuns(this.get('oTable')._('tr', {"filter":"applied"}));
   },
   /**
+   * Clear selected filter
+   * @param event
+   */
+  clearFilterButtonClick: function(event) {
+    var viewName = event.target.id.replace('view_', '');
+    var elementId = this.get(viewName).get('elementId');
+    if(this.get(viewName).get('tagName') === 'input') {
+      this.get(viewName).set('value', '');
+    }
+    if(this.get(viewName).get('tagName') === 'select') {
+      this.get(viewName).set('value', 'Any');
+      this.get(viewName).change();
+    }
+    if(this.get(viewName).get('multiple')) {
+      this.get(viewName).get('clearFilter')(this.get(viewName));
+    }
+  },
+  /**
    * apply each filter to dataTable
    *
    * @param {parentView}
@@ -427,9 +455,12 @@ App.MainAppsView = Em.View.extend({
     content:['Any', 'Pig', 'Hive', 'mapReduce'],
     change:function(event){
       if(this.get('selection') === 'Any') {
+        this.$().closest('th').addClass('notActive');
         this.get('parentView').get('oTable').fnFilter('', 3);
-      } else {
-      this.get('parentView').get('oTable').fnFilter(this.get('selection'), 3);
+      }
+      else {
+        this.$().closest('th').removeClass('notActive');
+        this.get('parentView').get('oTable').fnFilter(this.get('selection'), 3);
       }
       this.get('parentView').set('filtered',this.get('parentView').get('oTable').fnSettings().fnRecordsDisplay());
     }
@@ -446,6 +477,12 @@ App.MainAppsView = Em.View.extend({
     classNames:['input-medium'],
     elementId: 'rundate_filter',
     change:function(event) {
+      if (this.get('selection') == 'Any') {
+        this.$().closest('th').addClass('notActive');
+      }
+      else {
+        this.$().closest('th').removeClass('notActive');
+      }
       this.get('parentView').get('applyFilter')(this.get('parentView'), 9);
     }
   }),
@@ -465,11 +502,17 @@ App.MainAppsView = Em.View.extend({
    * Filter-field for AppId
    */
   appidFilterView: Em.TextField.extend({
-    classNames:['input-small'],
+    classNames:['input-medium'],
     type:'text',
     placeholder: 'Any ID',
     elementId:'appid_filter',
     filtering:function() {
+      if (this.get('value') == '') {
+        this.$().closest('th').addClass('notActive');
+      }
+      else {
+        this.$().closest('th').removeClass('notActive');
+      }
       this.get('parentView').get('applyFilter')(this.get('parentView'), 1, this.get('value'));
     }.observes('value')
   }),
@@ -481,6 +524,12 @@ App.MainAppsView = Em.View.extend({
     type:'text',
     placeholder: 'Any Name',
     filtering:function(){
+      if (this.get('value') == '') {
+        this.$().closest('th').addClass('notActive');
+      }
+      else {
+        this.$().closest('th').removeClass('notActive');
+      }
       this.get('parentView').get('applyFilter')(this.get('parentView'), 2, this.get('value'));
     }.observes('value')
   }),
@@ -493,6 +542,12 @@ App.MainAppsView = Em.View.extend({
     placeholder: 'Any ',
     elementId:'jobs_filter',
     filtering:function(){
+      if (this.get('value') == '') {
+        this.$().closest('th').addClass('notActive');
+      }
+      else {
+        this.$().closest('th').removeClass('notActive');
+      }
       this.get('parentView').get('applyFilter')(this.get('parentView'), 5);
     }.observes('value')
   }),
@@ -505,6 +560,12 @@ App.MainAppsView = Em.View.extend({
     placeholder: 'Any ',
     elementId: 'input_filter',
     filtering:function(){
+      if (this.get('value') == '') {
+        this.$().closest('th').addClass('notActive');
+      }
+      else {
+        this.$().closest('th').removeClass('notActive');
+      }
       this.get('parentView').get('applyFilter')(this.get('parentView'), 6);
     }.observes('value')
   }),
@@ -517,7 +578,13 @@ App.MainAppsView = Em.View.extend({
     placeholder: 'Any ',
     elementId: 'output_filter',
     filtering:function(){
-        this.get('parentView').get('applyFilter')(this.get('parentView'), 7);
+      if (this.get('value') == '') {
+        this.$().closest('th').addClass('notActive');
+      }
+      else {
+        this.$().closest('th').removeClass('notActive');
+      }
+      this.get('parentView').get('applyFilter')(this.get('parentView'), 7);
     }.observes('value')
   }),
   /**
@@ -529,6 +596,12 @@ App.MainAppsView = Em.View.extend({
     placeholder: 'Any ',
     elementId: 'duration_filter',
     filtering:function(){
+      if (this.get('value') == '') {
+        this.$().closest('th').addClass('notActive');
+      }
+      else {
+        this.$().closest('th').removeClass('notActive');
+      }
       this.get('parentView').get('applyFilter')(this.get('parentView'), 8);
     }.observes('value')
   }),
@@ -540,7 +613,6 @@ App.MainAppsView = Em.View.extend({
     classNameBindings: ['open'],
     multiple:true,
     open: false,
-    isApplyDisabled:true,
     users:function(){
       var users = [];
       for(var i = 0; i < this.get('parentView').get('users').length; i++)
@@ -551,7 +623,7 @@ App.MainAppsView = Em.View.extend({
       return users;
     }.property('parentView.users'),
     template: Ember.Handlebars.compile(
-      '<button class="btn btn-info" '+
+      '<button class="btn btn-info single-btn-group"'+
       '{{action "clickFilterButton" target="view"}}>'+
       'User&nbsp;<span class="caret"></span></button>'+
       '<ul class="dropdown-menu filter-components">'+
@@ -559,10 +631,13 @@ App.MainAppsView = Em.View.extend({
       '{{view Ember.Checkbox checkedBinding="view.allComponentsChecked"}} All</label></li>'+
       '{{#each user in view.users}}<li><label class="checkbox">' +
       '{{view Ember.Checkbox checkedBinding="user.checked"}}{{user.name}}'+
-      '</label></li>{{/each}}</ul>'+
-      '<button {{bindAttr disabled="view.isApplyDisabled"}}'+
-      'class="btn" {{action "applyFilter" target="view"}}>'+
-      'Apply</button>'
+      '</label></li>{{/each}}'+
+      '<li>' +
+      '<button class="btn" {{action "closeFilter" target="view"}}>' +
+      'Cancel</button>' +
+      '<button class="btn btn-primary" {{action "applyFilter" target="view"}}>'+
+      'Apply</button>'+
+      '</li></ul>'
     ),
     allComponentsChecked:false,
     toggleAllComponents: function() {
@@ -573,23 +648,31 @@ App.MainAppsView = Em.View.extend({
     }.observes('allComponentsChecked'),
     clickFilterButton:function(event) {
       this.set('open', !this.get('open'));
-      this.set('isApplyDisabled', !this.get('isApplyDisabled'));
     },
     clearFilter:function(self) {
       self.set('allComponentsChecked', true);
       self.set('allComponentsChecked', false);
       jQuery('#user_filter').val([]);
       self.get('parentView').get('oTable').fnFilter('', 3);
+      jQuery('#user_filter').closest('th').addClass('notActive');
+    },
+    closeFilter: function(){
+      this.set('open', false);
     },
     applyFilter:function() {
       var chosenUsers = new Array();
       this.set('open', !this.get('open'));
-      this.set('isApplyDisabled', !this.get('isApplyDisabled'));
       this.get('users').forEach(function(item){
           if(item.get('checked')) chosenUsers.push(item.get('name'));
       });
       jQuery('#user_filter').val(chosenUsers);
       this.get('parentView').get('applyFilter')(this.get('parentView'), 3);
+      if (chosenUsers.length == 0) {
+        this.$().closest('th').addClass('notActive');
+      }
+      else {
+        this.$().closest('th').removeClass('notActive');
+      }
     }
   }),
   /**

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/dashboard.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/dashboard.js?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/dashboard.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/dashboard.js Sun Dec  9 13:22:27 2012
@@ -19,5 +19,42 @@
 var App = require('app');
 
 App.MainDashboardView = Em.View.extend({
-  templateName: require('templates/main/dashboard')
+  templateName: require('templates/main/dashboard'),
+  content : [],
+  services:function(){
+    var services = App.Service.find();
+    services.forEach(function(item){
+      var vName;
+      var item2;
+      switch(item.get('serviceName')) {
+        case "HDFS":
+          vName = App.MainDashboardServiceHdfsView;
+          item2 = App.HDFSService.find(item.get('id'));
+          break;
+        case "MAPREDUCE":
+          vName = App.MainDashboardServiceMapreduceView;
+          item2 = App.MapReduceService.find(item.get('id'));
+          break;
+        case "HBASE":
+          vName = App.MainDashboardServiceHbaseView;
+          break;
+        case "HIVE":
+          vName = App.MainDashboardServiceHiveView ;
+          break;
+        case "ZOOKEEPER":
+          vName = App.MainDashboardServiceZookeperView;
+          break;
+        case "OOZIE":
+          vName = App.MainDashboardServiceOozieView;
+          break;
+        default:
+          vName = Em.View;
+      }
+      this.get('content').pushObject({
+        viewName : vName,
+        model: item2 || item
+      })
+    }, this);
+
+  }.observes('App.router.clusterController.dataLoadList.services')
 });
\ No newline at end of file

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/dashboard/service.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/dashboard/service.js?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/dashboard/service.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/dashboard/service.js Sun Dec  9 13:22:27 2012
@@ -79,23 +79,9 @@ App.MainDashboardServiceView = Em.View.e
     return this.get('controller.data.' + this.get('serviceName'));
   }.property('controller.data'),
 
-  service: function () {
-    var services = this.get('controller.services');
-    if (services) {
-      return services.findProperty('serviceName', this.get('serviceName'));
-    }
-  }.property('controller.services'),
-
   criticalAlertsCount: function () {
-    var alerts = this.get('service.alerts');
-    var count = 0;
-
-    if (alerts) {
-      alerts.forEach(function (alert) {
-        count += (alert.get('status') == App.AlertStatus.negative);
-      });
-    }
-    return count;
+    var alerts = this.get('controller.alerts');
+    return alerts.filterProperty('serviceType', this.get('service.id')).filterProperty('status', '1').length;
   }.property('service.alerts')
 
 });
\ No newline at end of file

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/dashboard/service/hdfs.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/dashboard/service/hdfs.js?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/dashboard/service/hdfs.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/dashboard/service/hdfs.js Sun Dec  9 13:22:27 2012
@@ -34,22 +34,18 @@ App.MainDashboardServiceHdfsView = App.M
     return this.t('dashboard.services.uptime').format(formatted.d, formatted.h, formatted.m);
   }.property("service.nameNodeStartTime"),
   
-  service: function(){
-    return App.HDFSService.find().objectAt(0);
-  }.property('App.router.clusterController.dataLoadList.services'),
-  
   nodeWebUrl: function(){
     return "http://"+this.get('service').get('nameNode').get('hostName')+":50070";
   }.property('service.nameNode'),
 
   nodeHeap:function () {
-
-    var percent = this.get('data.namenode_heap_total') > 0 ? 100 * this.get('data.namenode_heap_used') / this.get('data.namenode_heap_total') : 0;
-
+    var memUsed = this.get('service').get('jvmMemoryHeapUsed')*1000000;
+    var memCommitted = this.get('service').get('jvmMemoryHeapCommitted')*1000000;
+    var percent = memCommitted>0 ? ((100*memUsed)/memCommitted) : 0;
     return this.t('dashboard.services.hdfs.nodes.heapUsed').format(
-      (this.get('service').get('jvmMemoryHeapUsed')*1000000).bytesToSize(1, 'parseFloat'),
-      (this.get('service').get('jvmMemoryHeapCommitted')*1000000).bytesToSize(1, 'parseFloat')
-      , percent.toFixed(1));
+      memUsed.bytesToSize(1, 'parseFloat'),
+      memCommitted.bytesToSize(1, 'parseFloat'),
+      percent.toFixed(1));
 
   }.property('service'),
 
@@ -74,5 +70,5 @@ App.MainDashboardServiceHdfsView = App.M
   
   dataNodeComponent: function(){
     return App.Component.find().findProperty('componentName', 'DATANODE');
-  }.property('components')
+  }.property('+')
 });
\ No newline at end of file

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/dashboard/service/mapreduce.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/dashboard/service/mapreduce.js?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/dashboard/service/mapreduce.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/dashboard/service/mapreduce.js Sun Dec  9 13:22:27 2012
@@ -20,11 +20,6 @@ var App = require('app');
 App.MainDashboardServiceMapreduceView = App.MainDashboardServiceView.extend({
   templateName: require('templates/main/dashboard/service/mapreduce'),
   serviceName: 'MAPREDUCE',
-
-  service: function () {
-    return App.MapReduceService.find().objectAt(0);
-  }.property('App.router.clusterController.dataLoadList.services'),
-
   jobTrackerWebUrl: function () {
     return "http://" + this.get('service').get('jobTracker').get('hostName') + ":50030";
   }.property('service.nameNode'),
@@ -60,31 +55,40 @@ App.MainDashboardServiceMapreduceView = 
   }.property('service'),
 
   trackersHeapSummary: function () {
-    var heapUsed = this.get('service').get('jobTrackerHeapUsed');
-    var heapMax = this.get('service').get('jobTrackerHeapMax');
+    var heapUsed = this.get('service').get('jobTrackerHeapUsed') || 90;
+    var heapMax = this.get('service').get('jobTrackerHeapMax') || 90;
     var percent = heapMax > 0 ? 100 * heapUsed / heapMax : 0;
     return this.t('dashboard.services.mapreduce.jobTrackerHeapSummary').format(heapUsed.bytesToSize(1, "parseFloat"), heapMax.bytesToSize(1, "parseFloat"), percent.toFixed(1));
   }.property('service'),
 
   jobsSummary: function () {
+    var svc = this.get('service');
     var template = this.t('dashboard.services.mapreduce.jobsSummary');
-    return template.format(0, 0, 0);
+    return template.format(svc.get('jobsSubmitted'), svc.get('jobsCompleted'));
   }.property('service'),
 
   mapSlotsSummary: function () {
-    return this.t('dashboard.services.mapreduce.mapSlotsSummary').format(0,0);
+    var svc = this.get('service');
+    var template = this.t('dashboard.services.mapreduce.mapSlotsSummary');
+    return template.format(svc.get('mapSlotsOccupied'), svc.get('mapSlotsReserved'));
   }.property('service'),
 
   reduceSlotsSummary: function () {
-    return this.t('dashboard.services.mapreduce.reduceSlotsSummary').format(0,0);
+    var svc = this.get('service');
+    var template = this.t('dashboard.services.mapreduce.reduceSlotsSummary');
+    return template.format(svc.get('reduceSlotsOccupied'), svc.get('reduceSlotsReserved'));
   }.property('service'),
 
   mapTasksSummary: function () {
-    return this.t('dashboard.services.mapreduce.tasksSummary').format(0,0);
+    var svc = this.get('service');
+    var template = this.t('dashboard.services.mapreduce.tasksSummary');
+    return template.format(svc.get('mapsRunning'), svc.get('mapsWaiting'));
   }.property('service'),
 
   reduceTasksSummary: function () {
-    return this.t('dashboard.services.mapreduce.tasksSummary').format(0,0);
+    var svc = this.get('service');
+    var template = this.t('dashboard.services.mapreduce.tasksSummary');
+    return template.format(svc.get('reducesRunning'), svc.get('reducesWaiting'));
   }.property('service'),
 
   slotsCapacitySummary: function () {

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/host/summary.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/host/summary.js?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/host/summary.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/host/summary.js Sun Dec  9 13:22:27 2012
@@ -82,6 +82,12 @@ App.MainHostSummaryView = Em.View.extend
      */
     isDataNode: function() {
       return this.get('content.componentName') === 'DataNode';
+    }.property('content'),
+    /**
+     * Shows whether we need to show health status
+     */
+    isClient: function() {
+      return this.get('content.componentName').substr(-7) === '_CLIENT';
     }.property('content')
   })
 

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/service/menu.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/service/menu.js?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/service/menu.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/views/main/service/menu.js Sun Dec  9 13:22:27 2012
@@ -53,10 +53,14 @@ App.MainServiceMenuView = Em.CollectionV
     active: function(){
       return this.get('content.id') == this.get('parentView.activeServiceId') ? 'active' : '';
     }.property('parentView.activeServiceId'),
-    serviceOperationsCount: function () {
-      var operations = App.router.get('backgroundOperationsController').getOperationsFor(this.get('content.serviceName'));
-      return operations.length;
-    }.property('App.router.backgroundOperationsController.serviceOperationsChangeTime'),
+    alertsCount: function () {
+      var allAlerts = App.router.get('clusterController.alerts');
+      var serviceId = this.get('content.serviceName');
+      if (serviceId) {
+        return allAlerts.filterProperty('serviceType', serviceId).length;
+      }
+      return 0;
+    }.property('App.router.clusterController.alerts'),
 
     templateName: require('templates/main/service/menu_item')
   })

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step5_view.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step5_view.js?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step5_view.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step5_view.js Sun Dec  9 13:22:27 2012
@@ -43,6 +43,7 @@ App.SelectHostView = Em.Select.extend({
   zId: null,
   selectedHost: null,
   serviceName: null,
+  attributeBindings: ['disabled'],
 
   change: function () {
     this.get('controller').assignHostToMaster(this.get("serviceName"), this.get("value"), this.get("zId"));

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step9_view.js
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step9_view.js?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step9_view.js (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/app/views/wizard/step9_view.js Sun Dec  9 13:22:27 2012
@@ -27,6 +27,7 @@ App.WizardStep9View = Em.View.extend({
 
   didInsertElement: function () {
     var controller = this.get('controller');
+    this.get('controller.hosts').setEach('status', 'info');
     this.onStatus();
     controller.navigateStep();
   },
@@ -55,7 +56,6 @@ App.WizardStep9View = Em.View.extend({
       this.set('resultMsgColor', 'alert-success');
     }
   }.observes('controller.status')
-
 });
 
 App.HostStatusView = Em.View.extend({
@@ -77,15 +77,21 @@ App.HostStatusView = Em.View.extend({
       this.set('barColor', 'progress-info');
     } else if (this.get('obj.status') === 'warning') {
       this.set('barColor', 'progress-warning');
-      this.set('obj.message', Em.I18n.t('installer.step9.host.status.warning'));
+      if (this.get('obj.progress') === '100') {
+        this.set('obj.message', Em.I18n.t('installer.step9.host.status.warning'));
+      }
     } else if (this.get('obj.status') === 'failed') {
       this.set('barColor', 'progress-danger');
-      this.set('obj.message', Em.I18n.t('installer.step9.host.status.failed'));
+      if (this.get('obj.progress') === '100') {
+        this.set('obj.message', Em.I18n.t('installer.step9.host.status.failed'));
+      }
     } else if (this.get('obj.status') === 'success') {
       this.set('barColor', 'progress-success');
-      this.set('obj.message', Em.I18n.t('installer.step9.host.status.success'));
+      if (this.get('obj.progress') === '100') {
+        this.set('obj.message', Em.I18n.t('installer.step9.host.status.success'));
+      }
     }
-  }.observes('obj.status'),
+  }.observes('obj.status', 'obj.progress'),
 
   isFailed: function () {
     if (this.get('controller.isStepCompleted') === true && this.get('obj.status') === 'failed') {
@@ -127,7 +133,7 @@ App.HostStatusView = Em.View.extend({
           return this.get('parentView.obj');
         }.property('parentView.obj'),
 
-        startedTasks: [],  // initialized in didInsertElement
+        startedTasks: [], // initialized in didInsertElement
 
         task: null, // set in showTaskLog; contains task info including stdout and stderr
 
@@ -175,13 +181,13 @@ App.HostStatusView = Em.View.extend({
               url: url,
               dataType: 'text',
               timeout: 10000,
-              success: function(data) {
+              success: function (data) {
                 var task = $.parseJSON(data);
                 taskInfo.set('stdout', task.Tasks.stdout);
                 taskInfo.set('stderr', task.Tasks.stderr);
                 taskInfo.set('isLogHidden', false);
               },
-              error: function() {
+              error: function () {
                 alert('Failed to retrieve task log');
               }
             });

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/package.json
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/package.json?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/package.json (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/package.json Sun Dec  9 13:22:27 2012
@@ -26,7 +26,6 @@
     "chai":"1.2.0",
     "sinon":"1.4.2",
     "sinon-chai":"2.1.2",
-    "express":"2.5.8",
-    "jsdom":"0.2.19"
+    "express":"2.5.8"
   }
 }

Modified: incubator/ambari/branches/AMBARI-666/ambari-web/pom.xml
URL: http://svn.apache.org/viewvc/incubator/ambari/branches/AMBARI-666/ambari-web/pom.xml?rev=1418938&r1=1418937&r2=1418938&view=diff
==============================================================================
--- incubator/ambari/branches/AMBARI-666/ambari-web/pom.xml (original)
+++ incubator/ambari/branches/AMBARI-666/ambari-web/pom.xml Sun Dec  9 13:22:27 2012
@@ -69,9 +69,11 @@
             </goals>
             <configuration>
               <target name="ambari-web-test">
+                <!-- 
                 <exec dir="${basedir}" executable="brunch" failonerror="false">
                   <arg value="test"/>
                 </exec>
+                -->
               </target>
             </configuration>
           </execution>