You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tez.apache.org by hi...@apache.org on 2014/11/11 22:07:39 UTC
tez git commit: TEZ-1765. Allow dropdown lists in table filters.
(Prakash Ramachandran via hitesh)
Repository: tez
Updated Branches:
refs/heads/TEZ-8 7ef637b1e -> ac8c86b40
TEZ-1765. Allow dropdown lists in table filters. (Prakash Ramachandran via hitesh)
Project: http://git-wip-us.apache.org/repos/asf/tez/repo
Commit: http://git-wip-us.apache.org/repos/asf/tez/commit/ac8c86b4
Tree: http://git-wip-us.apache.org/repos/asf/tez/tree/ac8c86b4
Diff: http://git-wip-us.apache.org/repos/asf/tez/diff/ac8c86b4
Branch: refs/heads/TEZ-8
Commit: ac8c86b408c7ca5081a24287127e61ddf8b7d6a0
Parents: 7ef637b
Author: Hitesh Shah <hi...@apache.org>
Authored: Tue Nov 11 13:07:10 2014 -0800
Committer: Hitesh Shah <hi...@apache.org>
Committed: Tue Nov 11 13:07:10 2014 -0800
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../app/scripts/components/extended-table.js | 66 ++++++++++++++++++--
.../webapp/app/scripts/controllers/dag_tasks.js | 2 +
.../app/scripts/controllers/dag_vertices.js | 2 +
.../app/scripts/controllers/dags_controller.js | 4 +-
.../task_task_attempts_controller.js | 2 +
.../controllers/vertex_tasks_controller.js | 2 +
.../src/main/webapp/app/scripts/helpers/misc.js | 30 ++++++++-
.../components/extended-table/filter-cell.hbs | 4 +-
9 files changed, 102 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tez/blob/ac8c86b4/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index c3b1412..bb5f4d0 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -16,6 +16,7 @@ ALL CHANGES:
TEZ-1741. App view.
TEZ-1751. Log view & download links in task and task attempt view.
TEZ-1753. Queue in dags view.
+ TEZ-1765. Allow dropdown lists in table filters.
Release 0.5.2: Unreleased
http://git-wip-us.apache.org/repos/asf/tez/blob/ac8c86b4/tez-ui/src/main/webapp/app/scripts/components/extended-table.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/components/extended-table.js b/tez-ui/src/main/webapp/app/scripts/components/extended-table.js
index 5047af9..fc8e092 100644
--- a/tez-ui/src/main/webapp/app/scripts/components/extended-table.js
+++ b/tez-ui/src/main/webapp/app/scripts/components/extended-table.js
@@ -18,7 +18,7 @@
App.ExTable = Ember.Namespace.create();
-App.ExTable.FilterField = Em.TextField.extend({
+App.ExTable.FilterTextField = Em.TextField.extend({
classNames: ['filter'],
classNameBindings: ['isPopulated','isInputDirty:input-dirty'],
type: 'search',
@@ -28,6 +28,7 @@ App.ExTable.FilterField = Em.TextField.extend({
isPopulated: function() {
return !Em.isEmpty(this.get('value'));
}.property('value'),
+
insertNewline: function(event) {
if (this.get('isInputDirty')) {
this.set('filterValue', this.get('value'));
@@ -44,6 +45,20 @@ App.ExTable.FilterField = Em.TextField.extend({
}.property('value', 'filterValue')
});
+App.ExTable.FilterDropdownField = Em.Select.extend({
+ valueBinding: Em.Binding.oneWay('filterValue'),
+ change: function(key) {
+ if (this.get('isInputDirty')) {
+ this.set('filterValue', this.get('value'));
+ this.get('parentView.controller')
+ .send('filterUpdated', this.get('parentView.content'), this.get('value'));
+ }
+ },
+ isInputDirty: function() {
+ return $.trim(this.get('value')) != $.trim(this.get('filterValue'));
+ }.property('value', 'filterValue')
+});
+
App.ExTable.FilterRow = Ember.View.extend(Ember.AddeparMixins.StyleBindingsMixin, {
templateName: 'components/extended-table/filter-row',
classNames: ['ember-table-table-row', 'ember-table-header-row'],
@@ -68,22 +83,59 @@ App.ExTable.FilterBlock = Ember.Table.TableBlock.extend({
}.property('columns')
});
-App.ExTable.FilterTableContainer = Ember.Table.TableContainer.extend(Ember.Table.ShowHorizontalScrollMixin, {
+App.ExTable.FilterTableContainer = Ember.Table.TableContainer.extend(
+ Ember.Table.ShowHorizontalScrollMixin, {
templateName: 'components/extended-table/filter-container',
- classNames: ['ember-table-table-container', 'ember-table-fixed-table-container', 'ember-table-header-container'],
+ classNames: [
+ 'ember-table-table-container',
+ 'ember-table-fixed-table-container',
+ 'ember-table-header-container'
+ ],
height: Ember.computed.alias('controller._filterHeight'),
width: Ember.computed.alias('controller._tableContainerWidth')
});
App.ExTable.FilterCell = Ember.View.extend(Ember.AddeparMixins.StyleBindingsMixin, {
+ init: function() {
+ var inputFieldView = null;
+ if (this.get('content.isFilterable')) {
+ var filterType = this.get('content.filterType');
+ switch (filterType) {
+ case 'dropdown':
+ inputFieldView = App.ExTable.FilterDropdownField.create({
+ content: this.get('content.dropdownValues'),
+ optionValuePath: 'content.id',
+ optionLabelPath: 'content.label',
+ classNames: 'inline-display'
+ });
+ break;
+ case 'textbox':
+ inputFieldView = App.ExTable.FilterTextField.create({
+ filterValueBinding: 'content.columnFilterValue',
+ classNames: 'inline-display'
+ });
+ break;
+ default:
+ console.log('Unknown filter type ' + filterType + ' defined on column ' +
+ this.get('content.headerCellName') + '.Will be ignored');
+ break;
+ }
+ }
+ if (!inputFieldView) {
+ // if no filter is specified or type is unknown, use empty view.
+ inputFieldView = Em.View.create();
+ }
+ this.set('inputFieldView', inputFieldView);
+ this._super();
+ },
templateName: 'components/extended-table/filter-cell',
classNames: ['ember-table-cell', 'ember-table-header-cell'],
classNameBindings: ['column.textAlign'],
styleBindings: ['width', 'height'],
- column: Ember.computed.alias('content'),
+ column: Ember.computed.alias('content'),
width: Ember.computed.alias('column.columnWidth'),
height: function() {
- return this.get('controller._filterHeight');
+ return this.get('controller._filterHeight');
}.property('controller._filterHeight'),
// Currently resizing is not handled automatically. if required will need to do here.
});
@@ -96,7 +148,9 @@ App.ExTable.ColumnDefinition = Ember.Table.ColumnDefinition.extend({
.to('columnFilterValue');
columnFilterValueBinding.connect(this);
}
+ this._super();
},
+ filterType: 'textbox', // default is textbox
textAlign: 'text-align-left',
filterCellView: 'App.ExTable.FilterCell',
filterCellViewClass: Ember.computed.alias('filterCellView'),
@@ -187,4 +241,4 @@ App.ExTable.FilterColumnMixin = Ember.Mixin.create({
}.property('columnFilterValue'),
});
-Ember.Handlebars.helper('extended-table-component', App.ExTable.TableComponent);
\ No newline at end of file
+Ember.Handlebars.helper('extended-table-component', App.ExTable.TableComponent);
http://git-wip-us.apache.org/repos/asf/tez/blob/ac8c86b4/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 a7d3c38..b41dbda 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
@@ -118,6 +118,8 @@ App.DagTasksController = Em.ObjectController.extend(App.PaginatedContentMixin, {
var statusCol = App.ExTable.ColumnDefinition.createWithMixins(App.ExTable.FilterColumnMixin,{
headerCellName: 'Status',
filterID: 'status_filter',
+ filterType: 'dropdown',
+ dropdownValues: App.Helpers.misc.taskStatusUIOptions,
tableCellViewClass: Em.Table.TableCell.extend({
template: Em.Handlebars.compile(
'<span class="ember-table-content"> \
http://git-wip-us.apache.org/repos/asf/tez/blob/ac8c86b4/tez-ui/src/main/webapp/app/scripts/controllers/dag_vertices.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/controllers/dag_vertices.js b/tez-ui/src/main/webapp/app/scripts/controllers/dag_vertices.js
index 5751de7..91777ab 100644
--- a/tez-ui/src/main/webapp/app/scripts/controllers/dag_vertices.js
+++ b/tez-ui/src/main/webapp/app/scripts/controllers/dag_vertices.js
@@ -98,6 +98,8 @@ App.DagVerticesController = Em.ObjectController.extend(App.PaginatedContentMixin
var statusCol = App.ExTable.ColumnDefinition.createWithMixins(App.ExTable.FilterColumnMixin,{
headerCellName: 'Status',
filterID: 'status_filter',
+ filterType: 'dropdown',
+ dropdownValues: App.Helpers.misc.vertexStatusUIOptions,
tableCellViewClass: Em.Table.TableCell.extend({
template: Em.Handlebars.compile(
'<span class="ember-table-content"> \
http://git-wip-us.apache.org/repos/asf/tez/blob/ac8c86b4/tez-ui/src/main/webapp/app/scripts/controllers/dags_controller.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/controllers/dags_controller.js b/tez-ui/src/main/webapp/app/scripts/controllers/dags_controller.js
index 9997202..63f2f0d 100644
--- a/tez-ui/src/main/webapp/app/scripts/controllers/dags_controller.js
+++ b/tez-ui/src/main/webapp/app/scripts/controllers/dags_controller.js
@@ -139,6 +139,8 @@ App.DagsController = Em.ObjectController.extend(App.PaginatedContentMixin, {
textAlign: 'text-align-left',
headerCellName: 'Status',
filterID: 'status_filter',
+ filterType: 'dropdown',
+ dropdownValues: App.Helpers.misc.dagStatusUIOptions,
tableCellViewClass: Em.Table.TableCell.extend({
template: Em.Handlebars.compile(
'<span class="ember-table-content"> \
@@ -192,4 +194,4 @@ App.DagsController = Em.ObjectController.extend(App.PaginatedContentMixin, {
}.property(),
-});
\ No newline at end of file
+});
http://git-wip-us.apache.org/repos/asf/tez/blob/ac8c86b4/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 1b48277..244dd1d 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
@@ -78,6 +78,8 @@ App.TaskAttemptsController = Em.ObjectController.extend(App.PaginatedContentMixi
var statusCol = App.ExTable.ColumnDefinition.createWithMixins(App.ExTable.FilterColumnMixin,{
headerCellName: 'Status',
filterID: 'status_filter',
+ filterType: 'dropdown',
+ dropdownValues: App.Helpers.misc.taskStatusUIOptions,
tableCellViewClass: Em.Table.TableCell.extend({
template: Em.Handlebars.compile(
'<span class="ember-table-content"> \
http://git-wip-us.apache.org/repos/asf/tez/blob/ac8c86b4/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 a093d86..986dedd 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
@@ -118,6 +118,8 @@ App.VertexTasksController = Em.ObjectController.extend(App.PaginatedContentMixin
var statusCol = App.ExTable.ColumnDefinition.createWithMixins(App.ExTable.FilterColumnMixin,{
headerCellName: 'Status',
filterID: 'status_filter',
+ filterType: 'dropdown',
+ dropdownValues: App.Helpers.misc.taskStatusUIOptions,
tableCellViewClass: Em.Table.TableCell.extend({
template: Em.Handlebars.compile(
'<span class="ember-table-content"> \
http://git-wip-us.apache.org/repos/asf/tez/blob/ac8c86b4/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 8db04a0..66651b5 100644
--- a/tez-ui/src/main/webapp/app/scripts/helpers/misc.js
+++ b/tez-ui/src/main/webapp/app/scripts/helpers/misc.js
@@ -72,5 +72,33 @@ App.Helpers.misc = {
isValidTaskStatus: function(status) {
return $.inArray(status, ['RUNNING', 'SUCCEEDED', 'FAILED', 'KILLED']) != -1;
- }
+ },
+
+ dagStatusUIOptions: [
+ { label: 'All', id: null },
+ { label: 'Submitted', id: 'SUBMITTED' },
+ { label: 'Running', id: 'RUNNING' },
+ { label: 'Succeeded', id: 'SUCCEEDED' },
+ { label: 'Failed', id: 'FAILED' },
+ { label: 'Killed', id: 'KILLED' },
+ { label: 'Error', id: 'ERROR' },
+ ],
+
+ vertexStatusUIOptions: [
+ { label: 'All', id: null },
+ { label: 'Running', id: 'RUNNING' },
+ { label: 'Succeeded', id: 'SUCCEEDED' },
+ { label: 'Failed', id: 'FAILED' },
+ { label: 'Killed', id: 'KILLED' },
+ { label: 'Error', id: 'ERROR' },
+ ],
+
+ taskStatusUIOptions: [
+ { label: 'All', id: null },
+ { label: 'Running', id: 'RUNNING' },
+ { label: 'Succeeded', id: 'SUCCEEDED' },
+ { label: 'Failed', id: 'FAILED' },
+ { label: 'Killed', id: 'KILLED' },
+ ],
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tez/blob/ac8c86b4/tez-ui/src/main/webapp/app/templates/components/extended-table/filter-cell.hbs
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/templates/components/extended-table/filter-cell.hbs b/tez-ui/src/main/webapp/app/templates/components/extended-table/filter-cell.hbs
index a29906b..f0ec7bb 100644
--- a/tez-ui/src/main/webapp/app/templates/components/extended-table/filter-cell.hbs
+++ b/tez-ui/src/main/webapp/app/templates/components/extended-table/filter-cell.hbs
@@ -1,7 +1,5 @@
<div class="ember-table-content-container" style='cursor: auto;'>
<span class="ember-table-content" style='white-space: nowrap; cursor: auto;'>
- {{#if view.content.isFilterable}}
- {{view App.ExTable.FilterField filterValueBinding='view.content.columnFilterValue' class='inline-display'}}
- {{/if}}
+ {{view view.inputFieldView}}
</span>
</div>
\ No newline at end of file