Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🎨 [Frontend] Mock: Job Manager #7396

Merged
merged 56 commits into from
Mar 21, 2025
Merged
Changes from 1 commit
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
e47d59d
refactor
odeimaiz Mar 19, 2025
1b2cc72
refactor
odeimaiz Mar 19, 2025
ebced12
minor
odeimaiz Mar 19, 2025
5f12d43
unused
odeimaiz Mar 19, 2025
fc696a5
minor fix
odeimaiz Mar 19, 2025
7def8e5
rename class
odeimaiz Mar 19, 2025
405ee2d
renaming
odeimaiz Mar 19, 2025
c5c292b
fix duplicated entries in cog
odeimaiz Mar 19, 2025
e119966
minor
odeimaiz Mar 19, 2025
761303f
minor
odeimaiz Mar 19, 2025
f37b63d
refactoring
odeimaiz Mar 19, 2025
fa40c3d
rename class
odeimaiz Mar 19, 2025
bc8d4b3
minor
odeimaiz Mar 19, 2025
e078bfb
attachImportEventHandler
odeimaiz Mar 19, 2025
a29ada7
fix duplicated cards
odeimaiz Mar 19, 2025
201e531
osparc.store.Jobs
odeimaiz Mar 19, 2025
0c9689e
mock_jobs.json
odeimaiz Mar 19, 2025
9907c38
minor
odeimaiz Mar 19, 2025
0ab3c40
JobsButton
odeimaiz Mar 19, 2025
655ec96
Merge branch 'master' into feature/mock-job-manager
odeimaiz Mar 19, 2025
d402818
Merge branch 'feature/mock-job-manager' of github.com:odeimaiz/osparc…
odeimaiz Mar 19, 2025
da498a0
jobsButton on NavBar
odeimaiz Mar 19, 2025
1c9adea
Jobs table
odeimaiz Mar 19, 2025
0796a6f
job data model
odeimaiz Mar 19, 2025
ee7d6d7
jobs
odeimaiz Mar 19, 2025
f48c0e2
rotateSlow
odeimaiz Mar 19, 2025
9478e7f
JobsTable
odeimaiz Mar 19, 2025
29ba3fd
JobsTableModel
odeimaiz Mar 19, 2025
6d38550
Jobs Browser
odeimaiz Mar 19, 2025
63df19d
almost there
odeimaiz Mar 19, 2025
df05655
info column
odeimaiz Mar 19, 2025
7258335
minor
odeimaiz Mar 19, 2025
5eb3fe6
Merge branch 'master' into feature/mock-job-manager
odeimaiz Mar 20, 2025
ca12ae8
FontButtonRenderer
odeimaiz Mar 20, 2025
65fbd94
minor
odeimaiz Mar 20, 2025
1937e2d
Merge branch 'master' into feature/mock-job-manager
odeimaiz Mar 20, 2025
fd2b69a
minor
odeimaiz Mar 20, 2025
d6f6232
more jobs info
odeimaiz Mar 20, 2025
9142541
span
odeimaiz Mar 20, 2025
a620fd8
SVG button renderer
odeimaiz Mar 20, 2025
a44f460
cleanup
odeimaiz Mar 20, 2025
f9e2bff
refactor
odeimaiz Mar 20, 2025
3c98f7c
aesthetics
odeimaiz Mar 20, 2025
4da69c1
Actions
odeimaiz Mar 20, 2025
4864add
__handleButtonClick
odeimaiz Mar 20, 2025
58d4355
minors
odeimaiz Mar 20, 2025
cc39821
JobInfo
odeimaiz Mar 20, 2025
948310d
Merge branch 'master' into feature/mock-job-manager
odeimaiz Mar 21, 2025
5ed15df
isJobsEnabled
odeimaiz Mar 21, 2025
332ef05
filters
odeimaiz Mar 21, 2025
88abc43
filterJobs in the frontend
odeimaiz Mar 21, 2025
025cbea
icons
odeimaiz Mar 21, 2025
705dd27
Merge branch 'master' into feature/mock-job-manager
odeimaiz Mar 21, 2025
93d2f60
Merge remote-tracking branch 'upstream/master' into feature/mock-job-…
odeimaiz Mar 21, 2025
018dc18
Merge branch 'feature/mock-job-manager' of github.com:odeimaiz/osparc…
odeimaiz Mar 21, 2025
4ad61a3
Merge branch 'master' into feature/mock-job-manager
odeimaiz Mar 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
JobsTableModel
odeimaiz committed Mar 19, 2025
commit 29ba3fdf1bbd40d40f110bc2d832b11887cd267c
Original file line number Diff line number Diff line change
@@ -63,14 +63,14 @@ qx.Class.define("osparc.jobs.JobsTable", {
label: qx.locale.Manager.tr("Progress"),
width: 100
},
SUBMITTED: {
id: "submitted",
SUBMIT: {
id: "submit",
column: 4,
label: qx.locale.Manager.tr("Submitted"),
width: 150
},
STARTED: {
id: "started",
START: {
id: "start",
column: 5,
label: qx.locale.Manager.tr("Started"),
width: 150
Original file line number Diff line number Diff line change
@@ -19,29 +19,24 @@
qx.Class.define("osparc.jobs.JobsTableModel", {
extend: qx.ui.table.model.Remote,

construct(walletId, filters) {
construct(filters) {
this.base(arguments);

const checkoutsCols = osparc.jobs.JobsTable.COLS;
const colLabels = Object.values(checkoutsCols).map(col => col.label);
const colIDs = Object.values(checkoutsCols).map(col => col.id);

const jobsCols = osparc.jobs.JobsTable.COLS;
const colLabels = Object.values(jobsCols).map(col => col.label);
const colIDs = Object.values(jobsCols).map(col => col.id);
this.setColumns(colLabels, colIDs);
this.setWalletId(walletId);

if (filters) {
this.setFilters(filters);
}
this.setSortColumnIndexWithoutSortingData(checkoutsCols.START.column);

this.setSortColumnIndexWithoutSortingData(jobsCols.SUBMIT.column);
this.setSortAscendingWithoutSortingData(false);
this.setColumnSortable(checkoutsCols.DURATION.column, false);
this.setColumnSortable(jobsCols.INSTANCE.column, false);
},

properties: {
walletId: {
check: "Number",
nullable: true
},

filters: {
check: "Object",
init: null
@@ -56,7 +51,7 @@ qx.Class.define("osparc.jobs.JobsTableModel", {
orderBy: {
check: "Object",
init: {
field: "startAt",
field: "started_at",
direction: "desc"
}
},
@@ -65,7 +60,7 @@ qx.Class.define("osparc.jobs.JobsTableModel", {
statics: {
SERVER_MAX_LIMIT: 49,
COLUMN_ID_TO_DB_COLUMN_MAP: {
0: "startAt",
0: "started_at",
},
},

@@ -81,22 +76,22 @@ qx.Class.define("osparc.jobs.JobsTableModel", {

// overridden
_loadRowCount() {
const walletId = this.getWalletId();
const urlParams = {
offset: 0,
limit: 1,
filters: this.getFilters() ?
JSON.stringify({
"startAt": this.getFilters()
"started_at": this.getFilters()
}) :
null,
orderBy: JSON.stringify(this.getOrderBy()),
};
const options = {
resolveWResponse: true
};
osparc.store.LicensedItems.getInstance().getCheckedOutLicensedItems(walletId, urlParams, options)
.then(resp => this._onRowCountLoaded(resp["_meta"].total))
const jobsStore = osparc.store.Jobs.getInstance();
jobsStore.fetchJobs(urlParams, options)
.then(jobs => this._onRowCountLoaded(jobs.length))
.catch(() => this._onRowCountLoaded(null));
},

@@ -107,7 +102,6 @@ qx.Class.define("osparc.jobs.JobsTableModel", {
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 walletId = this.getWalletId();
const urlParams = {
limit,
offset,
@@ -118,36 +112,20 @@ qx.Class.define("osparc.jobs.JobsTableModel", {
null,
orderBy: JSON.stringify(this.getOrderBy())
};
const licensedItemsStore = osparc.store.LicensedItems.getInstance();
return Promise.all([
licensedItemsStore.getLicensedItems(),
licensedItemsStore.getCheckedOutLicensedItems(walletId, urlParams),
])
.then(values => {
const licensedItems = values[0];
const checkoutsItems = values[1];

const jobsStore = osparc.store.Jobs.getInstance();
jobsStore.fetchJobs(urlParams)
.then(jobs => {
const data = [];
const checkoutsCols = osparc.desktop.credits.JobsTable.COLS;
checkoutsItems.forEach(checkoutsItem => {
const licensedItemId = checkoutsItem["licensedItemId"];
const licensedItem = licensedItems[licensedItemId];
let start = "";
let duration = "";
if (checkoutsItem["startedAt"]) {
start = osparc.utils.Utils.formatDateAndTime(new Date(checkoutsItem["startedAt"]));
if (checkoutsItem["stoppedAt"]) {
duration = osparc.utils.Utils.formatMsToHHMMSS(new Date(checkoutsItem["stoppedAt"]) - new Date(checkoutsItem["startedAt"]));
}
}
const jobsCols = osparc.desktop.credits.JobsTable.COLS;
jobs.forEach(job => {
data.push({
[checkoutsCols.CHECKOUT_ID.id]: checkoutsItem["licensedItemCheckoutId"],
[checkoutsCols.ITEM_ID.id]: licensedItemId,
[checkoutsCols.ITEM_LABEL.id]: licensedItem ? licensedItem.getDisplayName() : "unknown model",
[checkoutsCols.START.id]: start,
[checkoutsCols.DURATION.id]: duration,
[checkoutsCols.SEATS.id]: checkoutsItem["numOfSeats"],
[checkoutsCols.USER.id]: checkoutsItem["userEmail"],
[jobsCols.JOB_ID.id]: job.getJobId(),
[jobsCols.SOLVER.id]: job.getSolver(),
[jobsCols.STATUS.id]: job.getStatus(),
[jobsCols.PROGRESS.id]: job.getProgress(),
[jobsCols.SUBMIT.id]: job.getSubmittedAt(),
[jobsCols.START.id]: job.getStartedAt(),
[jobsCols.INSTANCE.id]: job.getInstance(),
});
});
return data;