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 @@
-
+
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.css b/ui/sections/task/inspectors/tasks.reel/_tasks.css new file mode 100644 index 0000000000..40ec7212fd --- /dev/null +++ b/ui/sections/task/inspectors/tasks.reel/_tasks.css @@ -0,0 +1,34 @@ +.TasksInspector { + flex: 1; + display: flex; + flex-direction: column; + min-height: 0; +} + +.TasksInspector-table { + flex: 1; + display: flex; + flex-direction: column; + margin-bottom: 1rem; + + & .TableReadOnly { + flex: 1; + display: flex; + flex-direction: column; + } + + & .Table-content { + flex: 1; + display: flex; + flex-direction: column; + } + + & .Table { + flex: 1; + display: flex; + flex-direction: column; + } + + & .Table-caption { flex-shrink: 0; } + & .Table-header-group { flex-shrink: 0; } +} 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..067fff0b76 --- /dev/null +++ b/ui/sections/task/inspectors/tasks.reel/task-details.reel/task-details.html @@ -0,0 +1,86 @@ + + + + + + + + +
+
+
+
+
+
+
+
+ + 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# */ { +}); diff --git a/ui/sections/task/inspectors/tasks.reel/tasks.html b/ui/sections/task/inspectors/tasks.reel/tasks.html index f91ef1d515..2d39be0a3c 100644 --- a/ui/sections/task/inspectors/tasks.reel/tasks.html +++ b/ui/sections/task/inspectors/tasks.reel/tasks.html @@ -2,111 +2,27 @@ - + -
-
-
-
-
-
-
-
-
-
- from: -
-
-
- to: -
-
-
-
- - -
-
-
-
+
+
+
+
+
diff --git a/ui/sections/task/inspectors/tasks.reel/tasks.js b/ui/sections/task/inspectors/tasks.reel/tasks.js index 7243e73429..6c629bc388 100644 --- a/ui/sections/task/inspectors/tasks.reel/tasks.js +++ b/ui/sections/task/inspectors/tasks.reel/tasks.js @@ -2,62 +2,43 @@ * @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) { + 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); } } });