You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tez.apache.org by sr...@apache.org on 2015/11/05 03:22:16 UTC

tez git commit: TEZ-2894. Tez UI: Disable sorting for few columns while in progress. Display an alert on trying to sort them (sree)

Repository: tez
Updated Branches:
  refs/heads/master d7ba1098e -> e9344fb6e


TEZ-2894. Tez UI: Disable sorting for few columns while in progress. Display an alert on trying to sort them (sree)


Project: http://git-wip-us.apache.org/repos/asf/tez/repo
Commit: http://git-wip-us.apache.org/repos/asf/tez/commit/e9344fb6
Tree: http://git-wip-us.apache.org/repos/asf/tez/tree/e9344fb6
Diff: http://git-wip-us.apache.org/repos/asf/tez/diff/e9344fb6

Branch: refs/heads/master
Commit: e9344fb6eb7155c777b644512795189919e88231
Parents: d7ba109
Author: Sreenath Somarajapuram <sr...@apache.org>
Authored: Thu Nov 5 07:51:48 2015 +0530
Committer: Sreenath Somarajapuram <sr...@apache.org>
Committed: Thu Nov 5 07:51:48 2015 +0530

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../components/basic-table/column-definition.js |  2 ++
 .../components/basic-table/header-cell-view.js  |  7 ++++++-
 .../controllers/dag-task-attempts-controller.js |  4 +++-
 .../webapp/app/scripts/controllers/dag_tasks.js |  4 +++-
 .../controllers/table-page-controller.js        | 12 +++++++++++
 .../task_task_attempts_controller.js            |  2 ++
 .../vertex_task_attempts_controller.js          |  2 ++
 .../controllers/vertex_tasks_controller.js      |  2 ++
 .../main/webapp/app/scripts/helpers/dialogs.js  | 22 +++++++++++++++++++-
 .../src/main/webapp/app/scripts/helpers/misc.js |  7 +++++--
 .../scripts/mixins/auto-counter-column-mixin.js |  2 +-
 12 files changed, 60 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tez/blob/e9344fb6/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 355a85c..c4113f2 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -7,6 +7,7 @@ INCOMPATIBLE CHANGES
   TEZ-2679. Admin forms of launch env settings
 
 ALL CHANGES:
+  TEZ-2894. Tez UI: Disable sorting for few columns while in progress. Display an alert on trying to sort them
   TEZ-2893. Tez UI: Retain vertex info displayed in DAG details page even after completion
   TEZ-2878. Tez UI: AM error handling - Make the UI handle cases in which AM returns unexpected/no data
   TEZ-2922. Tez Live UI gives access denied for admins

http://git-wip-us.apache.org/repos/asf/tez/blob/e9344fb6/tez-ui/src/main/webapp/app/scripts/components/basic-table/column-definition.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/components/basic-table/column-definition.js b/tez-ui/src/main/webapp/app/scripts/components/basic-table/column-definition.js
index 3e29a45..27e6a9f 100644
--- a/tez-ui/src/main/webapp/app/scripts/components/basic-table/column-definition.js
+++ b/tez-ui/src/main/webapp/app/scripts/components/basic-table/column-definition.js
@@ -33,6 +33,8 @@ App.BasicTableComponent.ColumnDefinition = (function () {
     headerCellName: "Not Available!",
     searchAndSortable: true,
 
+    onSort: null,
+
     width: "",
 
     customStyle: function () {

http://git-wip-us.apache.org/repos/asf/tez/blob/e9344fb6/tez-ui/src/main/webapp/app/scripts/components/basic-table/header-cell-view.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/components/basic-table/header-cell-view.js b/tez-ui/src/main/webapp/app/scripts/components/basic-table/header-cell-view.js
index b4f1165..4cfe6e8 100644
--- a/tez-ui/src/main/webapp/app/scripts/components/basic-table/header-cell-view.js
+++ b/tez-ui/src/main/webapp/app/scripts/components/basic-table/header-cell-view.js
@@ -52,7 +52,12 @@ App.BasicTableComponent.HeaderCellView = Ember.View.extend({
 
   actions: {
     sort: function () {
-      this.get('parentView').send('sort', this.get('column.id'));
+      var column = this.get('column'),
+          onSort = column.get('onSort');
+
+      if(!onSort || onSort.call(column, column)) {
+        this.get('parentView').send('sort', this.get('column.id'));
+      }
     },
     startColResize: function () {
       var mouseTracker = {

http://git-wip-us.apache.org/repos/asf/tez/blob/e9344fb6/tez-ui/src/main/webapp/app/scripts/controllers/dag-task-attempts-controller.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/controllers/dag-task-attempts-controller.js b/tez-ui/src/main/webapp/app/scripts/controllers/dag-task-attempts-controller.js
index ade2c7f..a5e5200 100644
--- a/tez-ui/src/main/webapp/app/scripts/controllers/dag-task-attempts-controller.js
+++ b/tez-ui/src/main/webapp/app/scripts/controllers/dag-task-attempts-controller.js
@@ -140,6 +140,7 @@ App.DagTaskAttemptsController = App.TablePageController.extend({
         templateName: 'components/basic-table/status-cell',
         contentPath: 'status',
         observePath: true,
+        onSort: this.onInProgressColumnSort.bind(this),
         getCellContent: function(row) {
           var status = App.Helpers.misc.getFixedupDisplayStatus(row.get('status'));
           return {
@@ -153,6 +154,7 @@ App.DagTaskAttemptsController = App.TablePageController.extend({
         headerCellName: 'Progress',
         contentPath: 'progress',
         observePath: true,
+        onSort: this.onInProgressColumnSort.bind(this),
         templateName: 'components/basic-table/progress-cell'
       },
       {
@@ -260,7 +262,7 @@ App.DagTaskAttemptsController = App.TablePageController.extend({
           App.get('Configs.tables.entity.taskAttempt') || [],
           App.get('Configs.tables.sharedColumns') || []
         )
-      )
+      , this)
     );
   }.property('defaultColumnConfigs'),
 

http://git-wip-us.apache.org/repos/asf/tez/blob/e9344fb6/tez-ui/src/main/webapp/app/scripts/controllers/dag_tasks.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/controllers/dag_tasks.js b/tez-ui/src/main/webapp/app/scripts/controllers/dag_tasks.js
index 33a11d6..d8cae6a 100644
--- a/tez-ui/src/main/webapp/app/scripts/controllers/dag_tasks.js
+++ b/tez-ui/src/main/webapp/app/scripts/controllers/dag_tasks.js
@@ -145,6 +145,7 @@ App.DagTasksController = App.TablePageController.extend({
         templateName: 'components/basic-table/status-cell',
         contentPath: 'status',
         observePath: true,
+        onSort: this.onInProgressColumnSort.bind(this),
         getCellContent: function(row) {
           var status = row.get('status');
           return {
@@ -159,6 +160,7 @@ App.DagTasksController = App.TablePageController.extend({
         headerCellName: 'Progress',
         contentPath: 'progress',
         observePath: true,
+        onSort: this.onInProgressColumnSort.bind(this),
         templateName: 'components/basic-table/progress-cell'
       },
       {
@@ -229,7 +231,7 @@ App.DagTasksController = App.TablePageController.extend({
           App.get('Configs.tables.entity.task') || [],
           App.get('Configs.tables.sharedColumns') || []
         )
-      )
+      , this)
     );
   }.property('defaultColumnConfigs'),
 

http://git-wip-us.apache.org/repos/asf/tez/blob/e9344fb6/tez-ui/src/main/webapp/app/scripts/controllers/table-page-controller.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/controllers/table-page-controller.js b/tez-ui/src/main/webapp/app/scripts/controllers/table-page-controller.js
index 285cc69..cf3d02c 100644
--- a/tez-ui/src/main/webapp/app/scripts/controllers/table-page-controller.js
+++ b/tez-ui/src/main/webapp/app/scripts/controllers/table-page-controller.js
@@ -62,6 +62,18 @@ App.TablePageController = App.PollingController.extend(
         return this.get('loading') ? "Loading all records..." : null;
       }.property('loading'),
 
+      onInProgressColumnSort: function (columnDef) {
+        var inProgress = this.get('pollster.isRunning');
+        if(inProgress) {
+          App.Helpers.Dialogs.alert(
+            'Cannot sort',
+            'Sorting on %@ is disabled for in-progress DAGs!'.fmt(columnDef.get('headerCellName')),
+            this
+          );
+        }
+        return !inProgress;
+      },
+
       actions: {
         refresh: function () {
           this.loadData(true);

http://git-wip-us.apache.org/repos/asf/tez/blob/e9344fb6/tez-ui/src/main/webapp/app/scripts/controllers/task_task_attempts_controller.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/controllers/task_task_attempts_controller.js b/tez-ui/src/main/webapp/app/scripts/controllers/task_task_attempts_controller.js
index eef2a4a..73151bf 100644
--- a/tez-ui/src/main/webapp/app/scripts/controllers/task_task_attempts_controller.js
+++ b/tez-ui/src/main/webapp/app/scripts/controllers/task_task_attempts_controller.js
@@ -123,6 +123,7 @@ App.TaskAttemptsController = App.TablePageController.extend(App.AutoCounterColum
         templateName: 'components/basic-table/status-cell',
         contentPath: 'status',
         observePath: true,
+        onSort: this.onInProgressColumnSort.bind(this),
         getCellContent: function(row) {
           var status = App.Helpers.misc.getFixedupDisplayStatus(row.get('status'));
           return {
@@ -136,6 +137,7 @@ App.TaskAttemptsController = App.TablePageController.extend(App.AutoCounterColum
         headerCellName: 'Progress',
         contentPath: 'progress',
         observePath: true,
+        onSort: this.onInProgressColumnSort.bind(this),
         templateName: 'components/basic-table/progress-cell'
       },
       {

http://git-wip-us.apache.org/repos/asf/tez/blob/e9344fb6/tez-ui/src/main/webapp/app/scripts/controllers/vertex_task_attempts_controller.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/controllers/vertex_task_attempts_controller.js b/tez-ui/src/main/webapp/app/scripts/controllers/vertex_task_attempts_controller.js
index f9fa086..8f1e8f5 100644
--- a/tez-ui/src/main/webapp/app/scripts/controllers/vertex_task_attempts_controller.js
+++ b/tez-ui/src/main/webapp/app/scripts/controllers/vertex_task_attempts_controller.js
@@ -140,6 +140,7 @@ App.VertexTaskAttemptsController = App.TablePageController.extend(App.AutoCounte
         templateName: 'components/basic-table/status-cell',
         contentPath: 'status',
         observePath: true,
+        onSort: this.onInProgressColumnSort.bind(this),
         getCellContent: function(row) {
           var status = App.Helpers.misc.getFixedupDisplayStatus(row.get('status'));
           return {
@@ -153,6 +154,7 @@ App.VertexTaskAttemptsController = App.TablePageController.extend(App.AutoCounte
         headerCellName: 'Progress',
         contentPath: 'progress',
         observePath: true,
+        onSort: this.onInProgressColumnSort.bind(this),
         templateName: 'components/basic-table/progress-cell'
       },
       {

http://git-wip-us.apache.org/repos/asf/tez/blob/e9344fb6/tez-ui/src/main/webapp/app/scripts/controllers/vertex_tasks_controller.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/controllers/vertex_tasks_controller.js b/tez-ui/src/main/webapp/app/scripts/controllers/vertex_tasks_controller.js
index 5ffa185..88b8dee 100644
--- a/tez-ui/src/main/webapp/app/scripts/controllers/vertex_tasks_controller.js
+++ b/tez-ui/src/main/webapp/app/scripts/controllers/vertex_tasks_controller.js
@@ -128,6 +128,7 @@ App.VertexTasksController = App.TablePageController.extend(App.AutoCounterColumn
         templateName: 'components/basic-table/status-cell',
         contentPath: 'status',
         observePath: true,
+        onSort: this.onInProgressColumnSort.bind(this),
         getCellContent: function(row) {
           var status = row.get('status');
           return {
@@ -142,6 +143,7 @@ App.VertexTasksController = App.TablePageController.extend(App.AutoCounterColumn
         headerCellName: 'Progress',
         contentPath: 'progress',
         observePath: true,
+        onSort: this.onInProgressColumnSort.bind(this),
         templateName: 'components/basic-table/progress-cell'
       },
       {

http://git-wip-us.apache.org/repos/asf/tez/blob/e9344fb6/tez-ui/src/main/webapp/app/scripts/helpers/dialogs.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/helpers/dialogs.js b/tez-ui/src/main/webapp/app/scripts/helpers/dialogs.js
index ddf7535..d4cdfae 100644
--- a/tez-ui/src/main/webapp/app/scripts/helpers/dialogs.js
+++ b/tez-ui/src/main/webapp/app/scripts/helpers/dialogs.js
@@ -16,7 +16,27 @@
  * limitations under the License.
  */
 
-App.Dialogs = Em.Namespace.create({
+App.Helpers.Dialogs = Em.Namespace.create({
+
+  /**
+   * Shows an alert box with a title and body
+   * @param title {String} The alert window title
+   * @param message {String} The alert message
+   * @param controller {Controller} Active ember controller
+   */
+   alert: function (title, message, controller) {
+      Bootstrap.ModalManager.open(
+      'alertModal',
+      title,
+      Ember.View.extend({
+        template: Em.Handlebars.compile(
+          '<p id="modalMessage">%@</p>'.fmt(message)
+        )
+      }), [
+        Ember.Object.create({title: 'OK', dismiss: 'modal'})
+      ], controller);
+   },
+
   /*
    * Displays a dialog with a multiselector based on the provided data.
    * - Helper looks for id & displayText in listItems.

http://git-wip-us.apache.org/repos/asf/tez/blob/e9344fb6/tez-ui/src/main/webapp/app/scripts/helpers/misc.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/helpers/misc.js b/tez-ui/src/main/webapp/app/scripts/helpers/misc.js
index d6bd67a..550a758 100644
--- a/tez-ui/src/main/webapp/app/scripts/helpers/misc.js
+++ b/tez-ui/src/main/webapp/app/scripts/helpers/misc.js
@@ -160,7 +160,7 @@ App.Helpers.misc = {
    * @param counterConfigs Array
    * @return Normalized configurations
    */
-  normalizeCounterConfigs: function (counterConfigs, inProgress) {
+  normalizeCounterConfigs: function (counterConfigs, controller) {
     return counterConfigs.map(function (configuration) {
       var groupName = configuration.counterGroupName || configuration.groupId,
           counterName = configuration.counterName || configuration.counterId;
@@ -175,7 +175,10 @@ App.Helpers.misc = {
       configuration.contentPath = 'counterGroups';
       configuration.counterGroupName = groupName;
       configuration.counterName = counterName;
-      configuration.searchAndSortable = !inProgress;
+
+      if(controller) {
+        configuration.onSort = controller.onInProgressColumnSort.bind(controller);
+      }
 
       configuration.getSortValue = App.Helpers.misc.getCounterCellContent;
       configuration.getCellContent =

http://git-wip-us.apache.org/repos/asf/tez/blob/e9344fb6/tez-ui/src/main/webapp/app/scripts/mixins/auto-counter-column-mixin.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/mixins/auto-counter-column-mixin.js b/tez-ui/src/main/webapp/app/scripts/mixins/auto-counter-column-mixin.js
index 2c6b531..e868117 100644
--- a/tez-ui/src/main/webapp/app/scripts/mixins/auto-counter-column-mixin.js
+++ b/tez-ui/src/main/webapp/app/scripts/mixins/auto-counter-column-mixin.js
@@ -32,7 +32,7 @@ App.AutoCounterColumnMixin = Em.Mixin.create({
         App.get('Configs.tables.entity.' + this.get('baseEntityType')) || [],
         App.get('Configs.tables.sharedColumns') || []
       )
-    ), dynamicCounterConfigs = [];
+    , this), dynamicCounterConfigs = [];
 
     this.get('data').forEach(function (row) {
       var counterGroups = row.get('counterGroups');