From b990c04f872399a18f3c927d909d80aff3d66c3c Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Mon, 14 Apr 2025 14:37:13 +0200 Subject: [PATCH 1/5] isJobsEnabled --- .../client/source/class/osparc/utils/DisabledPlugins.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/static-webserver/client/source/class/osparc/utils/DisabledPlugins.js b/services/static-webserver/client/source/class/osparc/utils/DisabledPlugins.js index 37fcce0187bb..38659cd71a09 100644 --- a/services/static-webserver/client/source/class/osparc/utils/DisabledPlugins.js +++ b/services/static-webserver/client/source/class/osparc/utils/DisabledPlugins.js @@ -61,7 +61,7 @@ qx.Class.define("osparc.utils.DisabledPlugins", { }, isJobsEnabled: function() { - if (osparc.utils.Utils.isDevelopmentPlatform() && osparc.product.Utils.isProduct("s4lacad")) { + if (osparc.store.StaticInfo.getInstance().isDevFeaturesEnabled() && osparc.product.Utils.isS4LProduct()) { return true; } return false; From 667c60fdc919da93f565226849eae501aded4c0f Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Mon, 14 Apr 2025 14:50:08 +0200 Subject: [PATCH 2/5] minor --- .../static-webserver/client/source/class/osparc/store/Jobs.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/store/Jobs.js b/services/static-webserver/client/source/class/osparc/store/Jobs.js index 155a97597557..560d9ad86c58 100644 --- a/services/static-webserver/client/source/class/osparc/store/Jobs.js +++ b/services/static-webserver/client/source/class/osparc/store/Jobs.js @@ -63,7 +63,7 @@ qx.Class.define("osparc.store.Jobs", { if (index === -1) { const job = new osparc.data.Job(jobData); jobs.push(job); - this.fireEvent("changeJobs"); + this.fireDataEvent("changeJobs"); return job; } return null; @@ -72,7 +72,7 @@ qx.Class.define("osparc.store.Jobs", { removeJobs: function() { const jobs = this.getJobs(); jobs.forEach(job => job.dispose()); - this.fireEvent("changeJobs"); + this.fireDataEvent("changeJobs"); }, } }); From 4fd2e09bffe8f6caa0b3b5919ed5e9f8133bb552 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Mon, 14 Apr 2025 14:52:18 +0200 Subject: [PATCH 3/5] JobsAndClusters --- .../class/osparc/jobs/JobsAndClusters.js | 60 +++++++++++++++++++ .../source/class/osparc/jobs/JobsBrowser.js | 12 ---- .../source/class/osparc/jobs/JobsButton.js | 4 +- 3 files changed, 62 insertions(+), 14 deletions(-) create mode 100644 services/static-webserver/client/source/class/osparc/jobs/JobsAndClusters.js diff --git a/services/static-webserver/client/source/class/osparc/jobs/JobsAndClusters.js b/services/static-webserver/client/source/class/osparc/jobs/JobsAndClusters.js new file mode 100644 index 000000000000..d1c34a96c2c3 --- /dev/null +++ b/services/static-webserver/client/source/class/osparc/jobs/JobsAndClusters.js @@ -0,0 +1,60 @@ +/* ************************************************************************ + + osparc - the simcore frontend + + https://osparc.io + + Copyright: + 2025 IT'IS Foundation, https://itis.swiss + + License: + MIT: https://opensource.org/licenses/MIT + + Authors: + * Odei Maiz (odeimaiz) + +************************************************************************ */ + + +qx.Class.define("osparc.jobs.JobsAndClusters", { + extend: qx.ui.tabview.TabView, + + construct() { + this.base(arguments); + + this.set({ + contentPadding: 5, + barPosition: "top", + }); + + const jobsPage = new qx.ui.tabview.Page(this.tr("Jobs")).set({ + layout: new qx.ui.layout.VBox(10) + }); + const jobsBrowser = new osparc.jobs.JobsBrowser(); + const scroller1 = new qx.ui.container.Scroll(); + scroller1.add(jobsBrowser); + jobsPage.add(scroller1); + this.add(jobsPage); + + const clustersPage = new qx.ui.tabview.Page(this.tr("Clusters")).set({ + layout: new qx.ui.layout.VBox(10) + }); + const clustersBrowser = new osparc.jobs.JobsBrowser(); + const scroller2 = new qx.ui.container.Scroll(); + scroller2.add(clustersBrowser); + clustersPage.add(scroller2); + this.add(clustersPage); + }, + + statics: { + popUpInWindow: function(jobsAndClusters) { + if (!jobsAndClusters) { + jobsAndClusters = new osparc.jobs.JobsAndClusters(); + } + const title = qx.locale.Manager.tr("Jobs and Clusters"); + const win = osparc.ui.window.Window.popUpInWindow(jobsAndClusters, title, 1100, 500); + win.open(); + return win; + } + }, +}); diff --git a/services/static-webserver/client/source/class/osparc/jobs/JobsBrowser.js b/services/static-webserver/client/source/class/osparc/jobs/JobsBrowser.js index bab800f08d6b..3302acf37ee6 100644 --- a/services/static-webserver/client/source/class/osparc/jobs/JobsBrowser.js +++ b/services/static-webserver/client/source/class/osparc/jobs/JobsBrowser.js @@ -36,18 +36,6 @@ qx.Class.define("osparc.jobs.JobsBrowser", { }); }, - statics: { - popUpInWindow: function(jobsBrowser) { - if (!jobsBrowser) { - jobsBrowser = new osparc.jobs.JobsBrowser(); - } - const title = qx.locale.Manager.tr("Jobs"); - const win = osparc.ui.window.Window.popUpInWindow(jobsBrowser, title, 1100, 500); - win.open(); - return win; - } - }, - members: { _createChildControlImpl: function(id) { let control; diff --git a/services/static-webserver/client/source/class/osparc/jobs/JobsButton.js b/services/static-webserver/client/source/class/osparc/jobs/JobsButton.js index 0cb4379bab38..2f84aedf3635 100644 --- a/services/static-webserver/client/source/class/osparc/jobs/JobsButton.js +++ b/services/static-webserver/client/source/class/osparc/jobs/JobsButton.js @@ -28,12 +28,12 @@ qx.Class.define("osparc.jobs.JobsButton", { alignX: "center", cursor: "pointer", visibility: "excluded", - toolTipText: this.tr("Jobs"), + toolTipText: this.tr("Jobs and Clusters"), }); const jobsStore = osparc.store.Jobs.getInstance(); jobsStore.addListener("changeJobs", e => this.__updateJobsButton(), this); - this.addListener("tap", () => osparc.jobs.JobsBrowser.popUpInWindow(), this); + this.addListener("tap", () => osparc.jobs.JobsAndClusters.popUpInWindow(), this); }, members: { From 1d976d35197028ff9051b3fd29f9c336dbedcac3 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Mon, 14 Apr 2025 15:10:28 +0200 Subject: [PATCH 4/5] mocking clusters --- .../class/osparc/jobs/ClustersBrowser.js | 43 +++++ .../source/class/osparc/jobs/ClustersTable.js | 66 ++++++++ .../class/osparc/jobs/ClustersTableModel.js | 149 ++++++++++++++++++ .../class/osparc/jobs/JobsAndClusters.js | 2 +- .../source/class/osparc/store/Clusters.js | 67 ++++++++ .../source/resource/osparc/mock_clusters.json | 33 ++++ 6 files changed, 359 insertions(+), 1 deletion(-) create mode 100644 services/static-webserver/client/source/class/osparc/jobs/ClustersBrowser.js create mode 100644 services/static-webserver/client/source/class/osparc/jobs/ClustersTable.js create mode 100644 services/static-webserver/client/source/class/osparc/jobs/ClustersTableModel.js create mode 100644 services/static-webserver/client/source/class/osparc/store/Clusters.js create mode 100644 services/static-webserver/client/source/resource/osparc/mock_clusters.json diff --git a/services/static-webserver/client/source/class/osparc/jobs/ClustersBrowser.js b/services/static-webserver/client/source/class/osparc/jobs/ClustersBrowser.js new file mode 100644 index 000000000000..0edc08d6c80b --- /dev/null +++ b/services/static-webserver/client/source/class/osparc/jobs/ClustersBrowser.js @@ -0,0 +1,43 @@ +/* ************************************************************************ + + osparc - the simcore frontend + + https://osparc.io + + Copyright: + 2025 IT'IS Foundation, https://itis.swiss + + License: + MIT: https://opensource.org/licenses/MIT + + Authors: + * Odei Maiz (odeimaiz) + +************************************************************************ */ + + +qx.Class.define("osparc.jobs.ClustersBrowser", { + extend: qx.ui.core.Widget, + + construct() { + this.base(arguments); + + this._setLayout(new qx.ui.layout.VBox(10)); + + this.getChildControl("clusters-table"); + }, + + members: { + _createChildControlImpl: function(id) { + let control; + switch (id) { + case "clusters-table": + control = new osparc.jobs.ClustersTable(); + this._add(control); + break; + } + + return control || this.base(arguments, id); + }, + } +}) diff --git a/services/static-webserver/client/source/class/osparc/jobs/ClustersTable.js b/services/static-webserver/client/source/class/osparc/jobs/ClustersTable.js new file mode 100644 index 000000000000..3a4dd0296e33 --- /dev/null +++ b/services/static-webserver/client/source/class/osparc/jobs/ClustersTable.js @@ -0,0 +1,66 @@ +/* ************************************************************************ + + osparc - the simcore frontend + + https://osparc.io + + Copyright: + 2025 IT'IS Foundation, https://itis.swiss + + License: + MIT: https://opensource.org/licenses/MIT + + Authors: + * Odei Maiz (odeimaiz) + +************************************************************************ */ + + +qx.Class.define("osparc.jobs.ClustersTable", { + extend: qx.ui.table.Table, + + construct: function(filters) { + this.base(arguments); + + const model = new osparc.jobs.ClustersTableModel(filters); + this.setTableModel(model); + + this.set({ + statusBarVisible: false, + headerCellHeight: 26, + rowHeight: 26, + }); + + const columnModel = this.getTableColumnModel(); + columnModel.setColumnVisible(this.self().COLS.CLUSTER_ID.column, false); + }, + + statics: { + COLS: { + CLUSTER_ID: { + id: "clusterId", + column: 0, + label: qx.locale.Manager.tr("Cluster Id"), + width: 170 + }, + NAME: { + id: "name", + column: 1, + label: qx.locale.Manager.tr("Name"), + width: 100 + }, + STATUS: { + id: "status", + column: 2, + label: qx.locale.Manager.tr("Status"), + width: 170 + }, + N_WORKERS: { + id: "nWorkers", + column: 3, + label: qx.locale.Manager.tr("# Workers"), + width: 80 + }, + } + }, +}); diff --git a/services/static-webserver/client/source/class/osparc/jobs/ClustersTableModel.js b/services/static-webserver/client/source/class/osparc/jobs/ClustersTableModel.js new file mode 100644 index 000000000000..f8a61bb953a1 --- /dev/null +++ b/services/static-webserver/client/source/class/osparc/jobs/ClustersTableModel.js @@ -0,0 +1,149 @@ +/* ************************************************************************ + + osparc - the simcore frontend + + https://osparc.io + + Copyright: + 2025 IT'IS Foundation, https://itis.swiss + + License: + MIT: https://opensource.org/licenses/MIT + + Authors: + * Odei Maiz (odeimaiz) + +************************************************************************ */ + + +qx.Class.define("osparc.jobs.ClustersTableModel", { + extend: qx.ui.table.model.Remote, + + construct(filters) { + this.base(arguments); + + const clustersCols = osparc.jobs.ClustersTable.COLS; + const colLabels = Object.values(clustersCols).map(col => col.label); + const colIDs = Object.values(clustersCols).map(col => col.id); + this.setColumns(colLabels, colIDs); + + if (filters) { + this.setFilters(filters); + } + + this.setSortAscendingWithoutSortingData(false); + this.setColumnSortable(clustersCols.CLUSTER_ID.column, false); + this.setColumnSortable(clustersCols.N_WORKERS.column, false); + }, + + properties: { + isFetching: { + check: "Boolean", + init: false, + event: "changeFetching" + }, + + filters: { + check: "Object", + init: null, + apply: "reloadData", // force reload + }, + + orderBy: { + check: "Object", + init: { + field: "name", + direction: "asc" + } + }, + }, + + statics: { + SERVER_MAX_LIMIT: 49, + }, + + members: { + // overridden + _loadRowCount() { + const urlParams = { + offset: 0, + limit: 1, + filters: this.getFilters() ? + JSON.stringify({ + "started_at": this.getFilters() + }) : + null, + orderBy: JSON.stringify(this.getOrderBy()), + }; + const options = { + resolveWResponse: true + }; + osparc.store.Clusters.getInstance().fetchClusters(urlParams, options) + .then(clusters => { + this._onRowCountLoaded(clusters.length); + }) + .catch(() => this._onRowCountLoaded(null)); + }, + + // overridden + _loadRowData(firstRow, qxLastRow) { + this.setIsFetching(true); + + const lastRow = Math.min(qxLastRow, this._rowCount - 1); + // Returns a request promise with given offset and limit + const getFetchPromise = (offset, limit=this.self().SERVER_MAX_LIMIT) => { + const urlParams = { + limit, + offset, + filters: this.getFilters() ? + JSON.stringify({ + "started_at": this.getFilters() + }) : + null, + orderBy: JSON.stringify(this.getOrderBy()) + }; + return osparc.store.Clusters.getInstance().fetchClusters(urlParams) + .then(clusters => { + const data = []; + const jobsCols = osparc.jobs.JobsTable.COLS; + clusters.forEach(cluster => { + data.push({ + [jobsCols.CLUSTER_ID.id]: cluster.getClusterId(), + [jobsCols.NAME.id]: cluster.getName(), + [jobsCols.STATUS.id]: cluster.getStatus(), + [jobsCols.N_WORKERS.id]: cluster.getNWorkers() ? cluster.getNWorkers() : 0, + }); + }); + return data; + }); + }; + + // Divides the model row request into several server requests to comply with the number of rows server limit + const reqLimit = lastRow - firstRow + 1; // Number of requested rows + const nRequests = Math.ceil(reqLimit / this.self().SERVER_MAX_LIMIT); + if (nRequests > 1) { + const requests = []; + for (let i=firstRow; i <= lastRow; i += this.self().SERVER_MAX_LIMIT) { + requests.push(getFetchPromise(i, i > lastRow - this.self().SERVER_MAX_LIMIT + 1 ? reqLimit % this.self().SERVER_MAX_LIMIT : this.self().SERVER_MAX_LIMIT)) + } + Promise.all(requests) + .then(responses => this._onRowDataLoaded(responses.flat())) + .catch(err => { + console.error(err); + this._onRowDataLoaded(null); + }) + .finally(() => this.setIsFetching(false)); + } else { + getFetchPromise(firstRow, reqLimit) + .then(data => { + this._onRowDataLoaded(data); + }) + .catch(err => { + console.error(err) + this._onRowDataLoaded(null); + }) + .finally(() => this.setIsFetching(false)); + } + } + } +}) diff --git a/services/static-webserver/client/source/class/osparc/jobs/JobsAndClusters.js b/services/static-webserver/client/source/class/osparc/jobs/JobsAndClusters.js index d1c34a96c2c3..7797e14075c3 100644 --- a/services/static-webserver/client/source/class/osparc/jobs/JobsAndClusters.js +++ b/services/static-webserver/client/source/class/osparc/jobs/JobsAndClusters.js @@ -39,7 +39,7 @@ qx.Class.define("osparc.jobs.JobsAndClusters", { const clustersPage = new qx.ui.tabview.Page(this.tr("Clusters")).set({ layout: new qx.ui.layout.VBox(10) }); - const clustersBrowser = new osparc.jobs.JobsBrowser(); + const clustersBrowser = new osparc.jobs.ClustersBrowser(); const scroller2 = new qx.ui.container.Scroll(); scroller2.add(clustersBrowser); clustersPage.add(scroller2); diff --git a/services/static-webserver/client/source/class/osparc/store/Clusters.js b/services/static-webserver/client/source/class/osparc/store/Clusters.js new file mode 100644 index 000000000000..21c7728b4db4 --- /dev/null +++ b/services/static-webserver/client/source/class/osparc/store/Clusters.js @@ -0,0 +1,67 @@ +/* ************************************************************************ + + osparc - the simcore frontend + + https://osparc.io + + Copyright: + 2025 IT'IS Foundation, https://itis.swiss + + License: + MIT: https://opensource.org/licenses/MIT + + Authors: + * Odei Maiz (odeimaiz) + +************************************************************************ */ + +/** + * @asset(osparc/mock_clusters.json") + */ + +qx.Class.define("osparc.store.Clusters", { + extend: qx.core.Object, + type: "singleton", + + properties: { + clusters: { + check: "Array", + init: [], + nullable: true, + event: "changeClusters" + } + }, + + members: { + fetchClusters: function() { + return osparc.utils.Utils.fetchJSON("/resource/osparc/mock_clusters.json") + .then(clustersData => { + if ("clusters" in clustersData) { + clustersData["clusters"].forEach(jobData => { + this.addJob(jobData); + }); + } + return this.getClusters(); + }) + .catch(err => console.error(err)); + }, + + addJob: function(jobData) { + const clusters = this.getClusters(); + const index = clusters.findIndex(t => t.getJobId() === jobData["job_id"]); + if (index === -1) { + const job = new osparc.data.Job(jobData); + clusters.push(job); + this.fireDataEvent("changeClusters"); + return job; + } + return null; + }, + + removeClusters: function() { + const clusters = this.getClusters(); + clusters.forEach(job => job.dispose()); + this.fireDataEvent("changeClusters"); + }, + } +}); diff --git a/services/static-webserver/client/source/resource/osparc/mock_clusters.json b/services/static-webserver/client/source/resource/osparc/mock_clusters.json new file mode 100644 index 000000000000..dba848415faf --- /dev/null +++ b/services/static-webserver/client/source/resource/osparc/mock_clusters.json @@ -0,0 +1,33 @@ +{ + "clusters": [{ + "job_id": "0cde4607-07de-4bb5-b3e6-487f22387a70", + "name": "cluster_1", + "status": "RUNNING", + "nWorkers": 2 + }, { + "job_id": "5685a699-4927-479e-9b34-e5ab1616303a", + "name": "cluster_2", + "status": "WAITING FOR RESOURCES", + "nWorkers": 4 + }, { + "job_id": "a8ca6a02-8816-48a6-8c6b-b94b3e431c8c", + "name": "cluster_3", + "status": "PENDING", + "nWorkers": 8 + }, { + "job_id": "a8ca6a02-8816-48a6-8c6b-b94b3e431c8d", + "name": "cluster_4", + "status": "ERROR", + "nWorkers": 12 + }, { + "job_id": "a8ca6a02-8816-48a6-8c6b-b94b3e431c81", + "name": "cluster_5", + "status": "IDK", + "nWorkers": 24 + }, { + "job_id": "a8ca6a02-8816-48a6-8c6b-b94b3e431c82", + "name": "cluster_6", + "status": "SOMETHING_ELSE", + "nWorkers": 42 + }] +} From ea8f5f4b87972f2cffa2840b62a9289f08d281ff Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Mon, 14 Apr 2025 15:21:31 +0200 Subject: [PATCH 5/5] Clusters mock --- .../source/class/osparc/data/Cluster.js | 57 +++++++++++++++++++ .../source/class/osparc/jobs/ClustersTable.js | 6 +- .../class/osparc/jobs/ClustersTableModel.js | 10 ++-- .../source/class/osparc/store/Clusters.js | 16 +++--- .../source/resource/osparc/mock_clusters.json | 24 ++++---- 5 files changed, 86 insertions(+), 27 deletions(-) create mode 100644 services/static-webserver/client/source/class/osparc/data/Cluster.js diff --git a/services/static-webserver/client/source/class/osparc/data/Cluster.js b/services/static-webserver/client/source/class/osparc/data/Cluster.js new file mode 100644 index 000000000000..0cc58dfeda53 --- /dev/null +++ b/services/static-webserver/client/source/class/osparc/data/Cluster.js @@ -0,0 +1,57 @@ +/* ************************************************************************ + + osparc - the simcore frontend + + https://osparc.io + + Copyright: + 2025 IT'IS Foundation, https://itis.swiss + + License: + MIT: https://opensource.org/licenses/MIT + + Authors: + * Odei Maiz (odeimaiz) + +************************************************************************ */ + +qx.Class.define("osparc.data.Cluster", { + extend: qx.core.Object, + + construct: function(clusterData) { + this.base(arguments); + + this.set({ + clusterId: clusterData["cluster_id"], + name: clusterData["name"], + status: clusterData["status"], + nWorkers: clusterData["n_workers"], + }); + }, + + properties: { + clusterId: { + check: "String", + nullable: false, + init: null, + }, + + name: { + check: "String", + nullable: false, + init: null, + }, + + status: { + check: "String", + nullable: false, + init: null, + }, + + nWorkers: { + check: "Number", + init: 0, + nullable: true, + }, + }, +}); diff --git a/services/static-webserver/client/source/class/osparc/jobs/ClustersTable.js b/services/static-webserver/client/source/class/osparc/jobs/ClustersTable.js index 3a4dd0296e33..328f0b05a4c4 100644 --- a/services/static-webserver/client/source/class/osparc/jobs/ClustersTable.js +++ b/services/static-webserver/client/source/class/osparc/jobs/ClustersTable.js @@ -32,7 +32,9 @@ qx.Class.define("osparc.jobs.ClustersTable", { }); const columnModel = this.getTableColumnModel(); - columnModel.setColumnVisible(this.self().COLS.CLUSTER_ID.column, false); + columnModel.setColumnVisible(this.self().COLS.CLUSTER_ID.column, true); + + Object.values(this.self().COLS).forEach(col => columnModel.setColumnWidth(col.column, col.width)); }, statics: { @@ -41,7 +43,7 @@ qx.Class.define("osparc.jobs.ClustersTable", { id: "clusterId", column: 0, label: qx.locale.Manager.tr("Cluster Id"), - width: 170 + width: 280 }, NAME: { id: "name", diff --git a/services/static-webserver/client/source/class/osparc/jobs/ClustersTableModel.js b/services/static-webserver/client/source/class/osparc/jobs/ClustersTableModel.js index f8a61bb953a1..68352d2d870c 100644 --- a/services/static-webserver/client/source/class/osparc/jobs/ClustersTableModel.js +++ b/services/static-webserver/client/source/class/osparc/jobs/ClustersTableModel.js @@ -105,13 +105,13 @@ qx.Class.define("osparc.jobs.ClustersTableModel", { return osparc.store.Clusters.getInstance().fetchClusters(urlParams) .then(clusters => { const data = []; - const jobsCols = osparc.jobs.JobsTable.COLS; + const clustersCols = osparc.jobs.ClustersTable.COLS; clusters.forEach(cluster => { data.push({ - [jobsCols.CLUSTER_ID.id]: cluster.getClusterId(), - [jobsCols.NAME.id]: cluster.getName(), - [jobsCols.STATUS.id]: cluster.getStatus(), - [jobsCols.N_WORKERS.id]: cluster.getNWorkers() ? cluster.getNWorkers() : 0, + [clustersCols.CLUSTER_ID.id]: cluster.getClusterId(), + [clustersCols.NAME.id]: cluster.getName(), + [clustersCols.STATUS.id]: cluster.getStatus(), + [clustersCols.N_WORKERS.id]: cluster.getNWorkers() ? cluster.getNWorkers() : 0, }); }); return data; diff --git a/services/static-webserver/client/source/class/osparc/store/Clusters.js b/services/static-webserver/client/source/class/osparc/store/Clusters.js index 21c7728b4db4..9cc616272d53 100644 --- a/services/static-webserver/client/source/class/osparc/store/Clusters.js +++ b/services/static-webserver/client/source/class/osparc/store/Clusters.js @@ -37,8 +37,8 @@ qx.Class.define("osparc.store.Clusters", { return osparc.utils.Utils.fetchJSON("/resource/osparc/mock_clusters.json") .then(clustersData => { if ("clusters" in clustersData) { - clustersData["clusters"].forEach(jobData => { - this.addJob(jobData); + clustersData["clusters"].forEach(clusterData => { + this.addCluster(clusterData); }); } return this.getClusters(); @@ -46,21 +46,21 @@ qx.Class.define("osparc.store.Clusters", { .catch(err => console.error(err)); }, - addJob: function(jobData) { + addCluster: function(clusterData) { const clusters = this.getClusters(); - const index = clusters.findIndex(t => t.getJobId() === jobData["job_id"]); + const index = clusters.findIndex(t => t.getClusterId() === clusterData["cluster_id"]); if (index === -1) { - const job = new osparc.data.Job(jobData); - clusters.push(job); + const cluster = new osparc.data.Cluster(clusterData); + clusters.push(cluster); this.fireDataEvent("changeClusters"); - return job; + return cluster; } return null; }, removeClusters: function() { const clusters = this.getClusters(); - clusters.forEach(job => job.dispose()); + clusters.forEach(cluster => cluster.dispose()); this.fireDataEvent("changeClusters"); }, } diff --git a/services/static-webserver/client/source/resource/osparc/mock_clusters.json b/services/static-webserver/client/source/resource/osparc/mock_clusters.json index dba848415faf..b8807211dcaa 100644 --- a/services/static-webserver/client/source/resource/osparc/mock_clusters.json +++ b/services/static-webserver/client/source/resource/osparc/mock_clusters.json @@ -1,33 +1,33 @@ { "clusters": [{ - "job_id": "0cde4607-07de-4bb5-b3e6-487f22387a70", + "cluster_id": "0cde4607-07de-4bb5-b3e6-487f22387a70", "name": "cluster_1", "status": "RUNNING", - "nWorkers": 2 + "n_workers": 2 }, { - "job_id": "5685a699-4927-479e-9b34-e5ab1616303a", + "cluster_id": "5685a699-4927-479e-9b34-e5ab1616303a", "name": "cluster_2", "status": "WAITING FOR RESOURCES", - "nWorkers": 4 + "n_workers": 4 }, { - "job_id": "a8ca6a02-8816-48a6-8c6b-b94b3e431c8c", + "cluster_id": "a8ca6a02-8816-48a6-8c6b-b94b3e431c8c", "name": "cluster_3", "status": "PENDING", - "nWorkers": 8 + "n_workers": 8 }, { - "job_id": "a8ca6a02-8816-48a6-8c6b-b94b3e431c8d", + "cluster_id": "a8ca6a02-8816-48a6-8c6b-b94b3e431c8d", "name": "cluster_4", "status": "ERROR", - "nWorkers": 12 + "n_workers": 12 }, { - "job_id": "a8ca6a02-8816-48a6-8c6b-b94b3e431c81", + "cluster_id": "a8ca6a02-8816-48a6-8c6b-b94b3e431c81", "name": "cluster_5", "status": "IDK", - "nWorkers": 24 + "n_workers": 24 }, { - "job_id": "a8ca6a02-8816-48a6-8c6b-b94b3e431c82", + "cluster_id": "a8ca6a02-8816-48a6-8c6b-b94b3e431c82", "name": "cluster_6", "status": "SOMETHING_ELSE", - "nWorkers": 42 + "n_workers": 42 }] }