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 @@
-
+
-
-
-
+
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);
}
}
});