From 0afe717a472af977561cd3860ca0ce0bb9eb5f9e Mon Sep 17 00:00:00 2001 From: Xin Tan Date: Wed, 18 Jan 2017 14:07:52 -0800 Subject: [PATCH 1/7] ADDED: detail panel for task --- .../task-details.reel/task-details.html | 75 +++++++++++++++++++ .../task-details.reel/task-details.js | 11 +++ 2 files changed, 86 insertions(+) create mode 100644 ui/sections/task/inspectors/tasks.reel/task-details.reel/task-details.html create mode 100644 ui/sections/task/inspectors/tasks.reel/task-details.reel/task-details.js diff --git a/ui/sections/task/inspectors/tasks.reel/task-details.reel/task-details.html b/ui/sections/task/inspectors/tasks.reel/task-details.reel/task-details.html new file mode 100644 index 0000000000..5768e5bb1b --- /dev/null +++ b/ui/sections/task/inspectors/tasks.reel/task-details.reel/task-details.html @@ -0,0 +1,75 @@ + + + + + + + + +
+
+
+
+
+
+
+ + diff --git a/ui/sections/task/inspectors/tasks.reel/task-details.reel/task-details.js b/ui/sections/task/inspectors/tasks.reel/task-details.reel/task-details.js new file mode 100644 index 0000000000..e434f84d2b --- /dev/null +++ b/ui/sections/task/inspectors/tasks.reel/task-details.reel/task-details.js @@ -0,0 +1,11 @@ +/** + * @module ui/sections/task/inspectors/tasks.reel/task-details.reel + */ +var Component = require("montage/ui/component").Component; + +/** + * @class TaskDetails + * @extends Component + */ +exports.TaskDetails = Component.specialize(/** @lends TaskDetails# */ { +}); From 5386093c5b0cc338db5169ddd376e94e4f9a4236 Mon Sep 17 00:00:00 2001 From: Xin Tan Date: Wed, 18 Jan 2017 14:10:38 -0800 Subject: [PATCH 2/7] UPDATED: enable task ui --- data/sections-descriptors.json | 7 +++---- src/service/routing-service.ts | 5 +++++ ui/main.reel/main.html | 6 +++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/data/sections-descriptors.json b/data/sections-descriptors.json index e66dad0131..8b77744a27 100644 --- a/data/sections-descriptors.json +++ b/data/sections-descriptors.json @@ -46,12 +46,11 @@ "index": 6, "icon": "console" }, - "task": { + "tasks": { "label": "Task", - "id": "task", + "id": "tasks", "index": 7, - "icon": "container", - "isHidden": true + "icon": "container" }, "calendar": { "label": "Calendar", diff --git a/src/service/routing-service.ts b/src/service/routing-service.ts index ba86460d81..e725a789f6 100644 --- a/src/service/routing-service.ts +++ b/src/service/routing-service.ts @@ -170,6 +170,7 @@ export class RoutingService { this.loadVmsRoutes(); this.loadContainersRoutes(); this.loadWizardRoutes(); + this.loadTasksRoutes(); } private loadCalendarRoutes() { @@ -380,6 +381,10 @@ export class RoutingService { (kerberosKeytabId) => this.accountsRoute.getKerberosKeytab(kerberosKeytabId, this.currentStacks.get('accounts'))); } + private loadTasksRoutes() { + crossroads.addRoute('/tasks', () => this.sectionRoute.getOld('tasks')); + } + private loadDashboardRoutes() { crossroads.addRoute('/dashboard', () => this.sectionRoute.getOld('dashboard')); } diff --git a/ui/main.reel/main.html b/ui/main.reel/main.html index c04a2d70f6..b99fad903a 100644 --- a/ui/main.reel/main.html +++ b/ui/main.reel/main.html @@ -45,10 +45,10 @@ "element": {"#": "dashboard"} } }, - "task": { + "tasks": { "prototype": "ui/sections/task/inspectors/tasks.reel", "properties": { - "element": {"#": "task"} + "element": {"#": "tasks"} } }, "console": { @@ -142,7 +142,7 @@
-
+
From 5b3c75134e2ceb3140823e8aa22cf34397fb266e Mon Sep 17 00:00:00 2001 From: Xin Tan Date: Wed, 18 Jan 2017 14:11:47 -0800 Subject: [PATCH 3/7] UPDATED: new task ui with preset tabs and details --- .../controls/table-task.reel/table-task.html | 4 + .../task/inspectors/tasks.reel/tasks.html | 139 +++--------------- .../task/inspectors/tasks.reel/tasks.js | 58 +++----- 3 files changed, 46 insertions(+), 155 deletions(-) diff --git a/ui/sections/task/controls/table-task.reel/table-task.html b/ui/sections/task/controls/table-task.reel/table-task.html index b65f7b46ed..103e8eff9b 100644 --- a/ui/sections/task/controls/table-task.reel/table-task.html +++ b/ui/sections/task/controls/table-task.reel/table-task.html @@ -8,6 +8,9 @@ "owner": { "properties": { "element": {"#": "owner"} + }, + "bindings": { + "selectedRow": {"<-": "@table.selectedRow"} } }, "table": { @@ -16,6 +19,7 @@ "element": {"#": "table"}, "delegate": {"@": "owner"}, "label": "Tasks", + "isSelectionEnabled": true, "columns": [ { "value": "ID", diff --git a/ui/sections/task/inspectors/tasks.reel/tasks.html b/ui/sections/task/inspectors/tasks.reel/tasks.html index f91ef1d515..a5254ca303 100644 --- a/ui/sections/task/inspectors/tasks.reel/tasks.html +++ b/ui/sections/task/inspectors/tasks.reel/tasks.html @@ -7,14 +7,13 @@ { "owner": { "properties": { - "element": {"#": "owner"} - }, - "listeners": [ - { - "type": "action", - "listener": {"@": "owner"} - } - ] + "element": {"#": "owner"}, + "views": [ + {"label": "Executing", "value": "EXECUTING"}, + {"label": "Failed", "value": "FAILED"}, + {"label": "Finished", "value": "FINISHED"} + ] + } }, "inspector": { "prototype": "ui/inspectors/inspector.reel", @@ -23,90 +22,14 @@ "isFooterHidden": true } }, - "taskIdValidator": { - "prototype": "core/converter/validator/integer-validator", - "properties": { - "floor": 1, - "errorMessage": "Port must be an integer" - } - }, - "taskIdConverter": { - "prototype": "core/converter/string-to-integer-or-null-converter", - "properties": { - "validator": {"@": "taskIdValidator"} - } - }, - "id": { - "prototype": "blue-shark/ui/field-text-input.reel", - "properties": { - "element": {"#": "id"}, - "label": "id", - "converter" : {"@": "taskIdConverter"}, - "placeholder": "e.g. 15" - }, - "bindings": { - "value": {"<->": "@owner.filter.id"} - } - }, - "name": { - "prototype": "blue-shark/ui/field-text-input.reel", - "properties": { - "element": {"#": "name"}, - "label": "Type", - "placeholder": "e.g. volume.delete" - }, - "bindings": { - "value": {"<->": "@owner.filter.name"} - } - }, - "state": { - "prototype": "blue-shark/ui/field-select.reel", + "viewTabs": { + "prototype": "blue-shark/ui/tabs.reel", "properties": { - "element": {"#": "state"}, - "label": "Status" + "element": {"#": "viewTabs"} }, "bindings": { - "options": {"<-": "[{label: '-', value: null}].concat(@owner.stateOptions)"}, - "selectedValue": {"<->": "@owner.filter.state"} - } - }, - "dateRagne": { - "prototype": "blue-shark/ui/field.reel", - "properties": { - "element": {"#": "dateRange"}, - "label": "Date Range" - } - }, - "started_after": { - "prototype": "blue-shark/ui/date.reel", - "properties": { - "element": {"#": "started_after"} - }, - "bindings": { - "value": {"<->": "@owner.filter.started_after"} - } - }, - "finished_at": { - "prototype": "blue-shark/ui/date.reel", - "properties": { - "element": {"#": "finished_at"} - }, - "bindings": { - "value": {"<->": "@owner.filter.finished_at"} - } - }, - "apply": { - "prototype": "blue-shark/ui/button.reel", - "properties": { - "element": {"#": "apply"}, - "value": "Apply Filters" - } - }, - "clear": { - "prototype": "blue-shark/ui/button.reel", - "properties": { - "element": {"#": "clear"}, - "value": "Clear Filters" + "options": {"<-": "@owner.views"}, + "selection": {"<->": "@owner.currentView"} } }, "table": { @@ -115,14 +38,16 @@ "element": {"#": "table"} }, "bindings": { - "rows": {"<-": "@owner.tasks"} + "rows": {"<-": "@owner.entries.filter{state==@owner.currentView}"} } }, - "filtersTitle": { - "prototype": "ui/controls/inspector-section-title.reel", + "details": { + "prototype": "./task-details.reel", "properties": { - "element": {"#": "filtersTitle"}, - "value": "Filter Tasks" + "element": {"#": "details"} + }, + "bindings": { + "object": {"<-": "@table.selectedRow"} } } } @@ -131,29 +56,9 @@
-
-
-
-
-
-
-
-
- from: -
-
-
- to: -
-
-
-
- - -
-
-
-
+
+
+
diff --git a/ui/sections/task/inspectors/tasks.reel/tasks.js b/ui/sections/task/inspectors/tasks.reel/tasks.js index 7243e73429..a86e1938c0 100644 --- a/ui/sections/task/inspectors/tasks.reel/tasks.js +++ b/ui/sections/task/inspectors/tasks.reel/tasks.js @@ -2,62 +2,44 @@ * @module ui/sections/task/inspectors/tasks.reel */ var AbstractInspector = require("ui/abstract/abstract-inspector").AbstractInspector, - TaskService = require("core/service/task-service").TaskService; + TaskService = require("core/service/task-service").TaskService, + EventDispatcherService = require("core/service/event-dispatcher-service").EventDispatcherService, + ModelEventName = require("core/model-event-name").ModelEventName, + DataObjectChangeService = require("core/service/data-object-change-service").DataObjectChangeService, +_ = require("lodash"); /** * @class Tasks * @extends AbstractInspector */ exports.Tasks = AbstractInspector.specialize(/** @lends Tasks# */ { - stateOptions: { - value: [ - "CREATED", - "WAITING", - "EXECUTING", - "ROLLBACK", - "FINISHED", - "FAILED", - "ABORTED" - ] - }, templateDidLoad: { value: function () { var self = this; this.filter = {}; this._service = TaskService.getInstance(); - this._service.loadEntries().then(function (entries) { - self.tasks = entries; - }); + this._dataObjectChangeService = new DataObjectChangeService(); + this._eventDispatcherService = EventDispatcherService.getInstance(); + this._eventDispatcherService.addEventListener(ModelEventName.Task.contentChange, this._handleTaskListUpdate.bind(this)); + this.entries = []; } }, - handleClearAction: { - value: function () { - this.filter = {}; + enterDocument: { + value: function (isFirsttime){ + var self = this; + this.currentView = "EXECUTING"; + this._service.loadEntries().then(function (entries) { + console.log(entries); + self.entries = entries.sort(function(a,b) {return (b.id > a.id) ? 1 : ((a.id > b.id) ? - 1 : 0);}); + }); } }, - handleApplyAction: { - value:function() { - var self = this, - filter = {}; - if (this.filter.id) { - filter.id = this.filter.id; - } - if (this.filter.name) { - filter.name = this.filter.name; - } - if (this.filter.state) { - filter.state = this.filter.state; - } - // FIXME: add the right stuff here - if (this.filter.started_after) { - filter.started_at = this.filter.started_after; - } - this._service.findTasks(filter).then(function (entries) { - self.tasks = entries; - }) + _handleTaskListUpdate: { + value: function(state) { + this._dataObjectChangeService.handleDataChange(this.entries, state); } } }); From 6b72fbef3ff564c0104aa6ee1c0dc947aae7868f Mon Sep 17 00:00:00 2001 From: Joshua Rule Dobson Date: Wed, 18 Jan 2017 17:28:17 -0500 Subject: [PATCH 4/7] fixes scrolling on tasks section --- ui/sections/task/inspectors/tasks.reel/_tasks.css | 5 +++++ ui/sections/task/inspectors/tasks.reel/tasks.html | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 ui/sections/task/inspectors/tasks.reel/_tasks.css diff --git a/ui/sections/task/inspectors/tasks.reel/_tasks.css b/ui/sections/task/inspectors/tasks.reel/_tasks.css new file mode 100644 index 0000000000..51f1b0f309 --- /dev/null +++ b/ui/sections/task/inspectors/tasks.reel/_tasks.css @@ -0,0 +1,5 @@ +.TasksInspector { + flex: 1; + display: flex; + flex-direction: column; +} diff --git a/ui/sections/task/inspectors/tasks.reel/tasks.html b/ui/sections/task/inspectors/tasks.reel/tasks.html index a5254ca303..d48e1dd9dc 100644 --- a/ui/sections/task/inspectors/tasks.reel/tasks.html +++ b/ui/sections/task/inspectors/tasks.reel/tasks.html @@ -2,7 +2,7 @@ - +
+
diff --git a/ui/sections/task/inspectors/tasks.reel/tasks.html b/ui/sections/task/inspectors/tasks.reel/tasks.html index d48e1dd9dc..dad07ddb4e 100644 --- a/ui/sections/task/inspectors/tasks.reel/tasks.html +++ b/ui/sections/task/inspectors/tasks.reel/tasks.html @@ -15,13 +15,6 @@ ] } }, - "inspector": { - "prototype": "ui/inspectors/inspector.reel", - "properties": { - "element": {"#": "inspector"}, - "isFooterHidden": true - } - }, "viewTabs": { "prototype": "blue-shark/ui/tabs.reel", "properties": { @@ -54,11 +47,11 @@ -
-
-
-
-
+
+
+
+
+
From 23408699be12e9a8c8f8faf8c56b21b634c4815f Mon Sep 17 00:00:00 2001 From: Xin Tan Date: Thu, 19 Jan 2017 14:19:11 -0800 Subject: [PATCH 6/7] DELETED: console.log --- ui/sections/task/inspectors/tasks.reel/tasks.js | 1 - 1 file changed, 1 deletion(-) diff --git a/ui/sections/task/inspectors/tasks.reel/tasks.js b/ui/sections/task/inspectors/tasks.reel/tasks.js index a86e1938c0..6c629bc388 100644 --- a/ui/sections/task/inspectors/tasks.reel/tasks.js +++ b/ui/sections/task/inspectors/tasks.reel/tasks.js @@ -31,7 +31,6 @@ exports.Tasks = AbstractInspector.specialize(/** @lends Tasks# */ { var self = this; this.currentView = "EXECUTING"; this._service.loadEntries().then(function (entries) { - console.log(entries); self.entries = entries.sort(function(a,b) {return (b.id > a.id) ? 1 : ((a.id > b.id) ? - 1 : 0);}); }); } From 81bedfdacce82ef2d37a3a7183bdf06a7eab2027 Mon Sep 17 00:00:00 2001 From: Xin Tan Date: Fri, 20 Jan 2017 10:12:41 -0800 Subject: [PATCH 7/7] UPDATED: tag name to queued --- ui/sections/task/inspectors/tasks.reel/tasks.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/sections/task/inspectors/tasks.reel/tasks.html b/ui/sections/task/inspectors/tasks.reel/tasks.html index dad07ddb4e..2d39be0a3c 100644 --- a/ui/sections/task/inspectors/tasks.reel/tasks.html +++ b/ui/sections/task/inspectors/tasks.reel/tasks.html @@ -9,7 +9,7 @@ "properties": { "element": {"#": "owner"}, "views": [ - {"label": "Executing", "value": "EXECUTING"}, + {"label": "Queued", "value": "EXECUTING"}, {"label": "Failed", "value": "FAILED"}, {"label": "Finished", "value": "FINISHED"} ]