-
-
-
Width of the lines in the timeseries plots.
+
+
+
+
-
+ {/if}
+
+
+
+
+
+
+ Width of the lines in the timeseries plots.
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
diff --git a/web/frontend/src/config/admin/AddUser.svelte b/web/frontend/src/config/admin/AddUser.svelte
index 2712e17..43f08de 100644
--- a/web/frontend/src/config/admin/AddUser.svelte
+++ b/web/frontend/src/config/admin/AddUser.svelte
@@ -1,103 +1,156 @@
-
+
+
Role:
+ {#each roles as role, i}
+ {#if i == 0}
+
+
+
+
+ {:else if i == 1}
+
+
+
+
+ {:else}
+
+
+
+
+ {/if}
+ {/each}
+
+
+
+ {#if displayMessage}
+ {message.msg}
+
{/if}
+
+
diff --git a/web/frontend/src/config/admin/EditProject.svelte b/web/frontend/src/config/admin/EditProject.svelte
index 857f7db..a4a8d75 100644
--- a/web/frontend/src/config/admin/EditProject.svelte
+++ b/web/frontend/src/config/admin/EditProject.svelte
@@ -1,97 +1,129 @@
-
- Edit Project Managed By User (Manager Only)
-
-
-
-
-
-
-
-
-
- {#if displayMessage}Update: {message.msg}
{/if}
-
-
+
+ Edit Project Managed By User (Manager Only)
+
+
+
+
+
+
+
+
+
+ {#if displayMessage}Update: {message.msg}
{/if}
+
+
diff --git a/web/frontend/src/config/admin/EditRole.svelte b/web/frontend/src/config/admin/EditRole.svelte
index ca14699..f201f38 100644
--- a/web/frontend/src/config/admin/EditRole.svelte
+++ b/web/frontend/src/config/admin/EditRole.svelte
@@ -1,104 +1,131 @@
-
- Edit User Roles
-
-
-
-
-
-
-
-
-
- {#if displayMessage}Update: {message.msg}
{/if}
-
-
+
+ Edit User Roles
+
+
+
+
+
+
+
+
+
+ {#if displayMessage}Update: {message.msg}
{/if}
+
+
diff --git a/web/frontend/src/config/admin/Options.svelte b/web/frontend/src/config/admin/Options.svelte
index 44f9650..8ad3c44 100644
--- a/web/frontend/src/config/admin/Options.svelte
+++ b/web/frontend/src/config/admin/Options.svelte
@@ -1,29 +1,34 @@
-
- Scramble Names / Presentation Mode
-
- Active?
-
+
+ Scramble Names / Presentation Mode
+
+ Active?
+
diff --git a/web/frontend/src/config/admin/ShowUsers.svelte b/web/frontend/src/config/admin/ShowUsers.svelte
index 439bebb..be9b146 100644
--- a/web/frontend/src/config/admin/ShowUsers.svelte
+++ b/web/frontend/src/config/admin/ShowUsers.svelte
@@ -1,68 +1,87 @@
-
- Special Users
-
- Not created by an LDAP sync and/or having a role other than user
-
-
-
-
-
-
- Username |
- Name |
- Project(s) |
- Email |
- Roles |
- JWT |
- Delete |
-
-
-
- {#each userList as user}
-
-
- |
-
- {:else}
-
-
- Loading...
- |
-
- {/each}
-
-
-
-
+
+ Special Users
+
+ Not created by an LDAP sync and/or having a role other than user
+
+
+
+
+
+
+ Username |
+ Name |
+ Project(s) |
+ Email |
+ Roles |
+ JWT |
+ Delete |
+
+
+
+ {#each userList as user}
+
+
+ |
+
+ {:else}
+
+
+
+ Loading...
+
+ |
+
+ {/each}
+
+
+
+
diff --git a/web/frontend/src/config/admin/ShowUsersRow.svelte b/web/frontend/src/config/admin/ShowUsersRow.svelte
index 34b2240..9845241 100644
--- a/web/frontend/src/config/admin/ShowUsersRow.svelte
+++ b/web/frontend/src/config/admin/ShowUsersRow.svelte
@@ -1,28 +1,32 @@
{user.username} |
{user.name} |
{user.projects} |
{user.email} |
-
{user.roles.join(', ')} |
+
{user.roles.join(", ")} |
- {#if ! jwt}
-
- {:else}
-
- {/if}
+ {#if !jwt}
+
+ {:else}
+
+ {/if}
|
diff --git a/web/frontend/src/filters/Cluster.svelte b/web/frontend/src/filters/Cluster.svelte
index 2740b74..9c82321 100644
--- a/web/frontend/src/filters/Cluster.svelte
+++ b/web/frontend/src/filters/Cluster.svelte
@@ -1,77 +1,95 @@
-
(isOpen = !isOpen)}>
-
- Select Cluster & Slurm Partition
-
-
- {#if $initialized}
- Cluster
-
- (pendingCluster = null, pendingPartition = null)}>
- Any Cluster
-
- {#each clusters as cluster}
- (pendingCluster = cluster.name, pendingPartition = null)}>
- {cluster.name}
-
- {/each}
-
- {/if}
- {#if $initialized && pendingCluster != null}
-
- Partiton
-
- (pendingPartition = null)}>
- Any Partition
-
- {#each clusters.find(c => c.name == pendingCluster).partitions as partition}
- (pendingPartition = partition)}>
- {partition}
-
- {/each}
-
- {/if}
-
-
-
-
-
-
+ (isOpen = !isOpen)}>
+ Select Cluster & Slurm Partition
+
+ {#if $initialized}
+ Cluster
+
+ ((pendingCluster = null), (pendingPartition = null))}
+ >
+ Any Cluster
+
+ {#each clusters as cluster}
+ (
+ (pendingCluster = cluster.name), (pendingPartition = null)
+ )}
+ >
+ {cluster.name}
+
+ {/each}
+
+ {/if}
+ {#if $initialized && pendingCluster != null}
+
+ Partiton
+
+ (pendingPartition = null)}
+ >
+ Any Partition
+
+ {#each clusters.find((c) => c.name == pendingCluster).partitions as partition}
+ (pendingPartition = partition)}
+ >
+ {partition}
+
+ {/each}
+
+ {/if}
+
+
+
+
+
+
diff --git a/web/frontend/src/filters/Duration.svelte b/web/frontend/src/filters/Duration.svelte
index ca2ce45..132ce05 100644
--- a/web/frontend/src/filters/Duration.svelte
+++ b/web/frontend/src/filters/Duration.svelte
@@ -1,158 +1,244 @@
- (isOpen = !isOpen)}>
-
- Select Job Duration
-
-
- Duration more than
-
-
-
-
-
-
-
-
-
+ (isOpen = !isOpen)}>
+ Select Job Duration
+
+ Duration more than
+
+
+
+
+
+
+
+
+
- Duration less than
-
-
-
-
-
-
-
-
-
+ Duration less than
+
+
+
+
+
+
+
+
+
- Duration between
-
-
-
-
-
-
-
-
- and
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ Duration between
+
+
+
+
+
+
+
+
+ and
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/web/frontend/src/filters/Filters.svelte b/web/frontend/src/filters/Filters.svelte
index 49eaed6..8e7a8ef 100644
--- a/web/frontend/src/filters/Filters.svelte
+++ b/web/frontend/src/filters/Filters.svelte
@@ -10,373 +10,418 @@
- void update(additionalFilters: Object?): Triggers an update
-->
-
-
-
-
- Filters
-
-
-
- Manage Filters
-
- {#if menuText}
- {menuText}
-
- {/if}
- (isClusterOpen = true)}>
- Cluster/Partition
-
- (isJobStatesOpen = true)}>
- Job States
-
- (isStartTimeOpen = true)}>
- Start Time
-
- (isDurationOpen = true)}>
- Duration
-
- (isTagsOpen = true)}>
- Tags
-
- (isResourcesOpen = true)}>
- Resources
-
- (isStatsOpen = true)}>
- (isStatsOpen = true)}/> Statistics
-
- {#if startTimeQuickSelect}
-
- Start Time Qick Selection
- {#each [
- { text: 'Last 6hrs', url: 'last6h', seconds: 6*60*60 },
- // { text: 'Last 12hrs', seconds: 12*60*60 },
- { text: 'Last 24hrs', url: 'last24h', seconds: 24*60*60 },
- // { text: 'Last 48hrs', seconds: 48*60*60 },
- { text: 'Last 7 days', url: 'last7d', seconds: 7*24*60*60 },
- { text: 'Last 30 days', url: 'last30d', seconds: 30*24*60*60 }
- ] as {text, url, seconds}}
- {
- filters.startTime.from = (new Date(Date.now() - seconds * 1000)).toISOString()
- filters.startTime.to = (new Date(Date.now())).toISOString()
- filters.startTime.text = text,
- filters.startTime.url = url
- update()
- }}>
- {text}
-
- {/each}
- {/if}
-
-
-
-
- {#if filters.cluster}
- (isClusterOpen = true)}>
- {filters.cluster}
- {#if filters.partition}
- ({filters.partition})
- {/if}
-
+
+
+
+
+ Filters
+
+
+ Manage Filters
+ {#if menuText}
+ {menuText}
+
{/if}
+ (isClusterOpen = true)}>
+ Cluster/Partition
+
+ (isJobStatesOpen = true)}>
+ Job States
+
+ (isStartTimeOpen = true)}>
+ Start Time
+
+ (isDurationOpen = true)}>
+ Duration
+
+ (isTagsOpen = true)}>
+ Tags
+
+ (isResourcesOpen = true)}>
+ Resources
+
+ (isStatsOpen = true)}>
+ (isStatsOpen = true)} /> Statistics
+
+ {#if startTimeQuickSelect}
+
+ Start Time Qick Selection
+ {#each [{ text: "Last 6hrs", url: "last6h", seconds: 6 * 60 * 60 }, { text: "Last 24hrs", url: "last24h", seconds: 24 * 60 * 60 }, { text: "Last 7 days", url: "last7d", seconds: 7 * 24 * 60 * 60 }, { text: "Last 30 days", url: "last30d", seconds: 30 * 24 * 60 * 60 }] as { text, url, seconds }}
+ {
+ filters.startTime.from = new Date(
+ Date.now() - seconds * 1000,
+ ).toISOString();
+ filters.startTime.to = new Date(Date.now()).toISOString();
+ (filters.startTime.text = text), (filters.startTime.url = url);
+ update();
+ }}
+ >
+
+ {text}
+
+ {/each}
+ {/if}
+
+
+
+
+ {#if filters.cluster}
+ (isClusterOpen = true)}>
+ {filters.cluster}
+ {#if filters.partition}
+ ({filters.partition})
+ {/if}
+
+ {/if}
- {#if filters.states.length != allJobStates.length}
- (isJobStatesOpen = true)}>
- {filters.states.join(', ')}
-
- {/if}
+ {#if filters.states.length != allJobStates.length}
+ (isJobStatesOpen = true)}>
+ {filters.states.join(", ")}
+
+ {/if}
- {#if filters.startTime.from || filters.startTime.to}
- (isStartTimeOpen = true)}>
- {#if filters.startTime.text}
- {filters.startTime.text}
- {:else}
- {new Date(filters.startTime.from).toLocaleString()} - {new Date(filters.startTime.to).toLocaleString()}
- {/if}
-
+ {#if filters.startTime.from || filters.startTime.to}
+ (isStartTimeOpen = true)}>
+ {#if filters.startTime.text}
+ {filters.startTime.text}
+ {:else}
+ {new Date(filters.startTime.from).toLocaleString()} - {new Date(
+ filters.startTime.to,
+ ).toLocaleString()}
{/if}
+
+ {/if}
- {#if filters.duration.from || filters.duration.to}
- (isDurationOpen = true)}>
- {Math.floor(filters.duration.from / 3600)}h:{Math.floor(filters.duration.from % 3600 / 60)}m
- -
- {Math.floor(filters.duration.to / 3600)}h:{Math.floor(filters.duration.to % 3600 / 60)}m
-
- {/if}
+ {#if filters.duration.from || filters.duration.to}
+ (isDurationOpen = true)}>
+ {Math.floor(filters.duration.from / 3600)}h:{Math.floor(
+ (filters.duration.from % 3600) / 60,
+ )}m -
+ {Math.floor(filters.duration.to / 3600)}h:{Math.floor(
+ (filters.duration.to % 3600) / 60,
+ )}m
+
+ {/if}
- {#if filters.duration.lessThan}
- (isDurationOpen = true)}>
- Duration less than {Math.floor(filters.duration.lessThan / 3600)}h:{Math.floor(filters.duration.lessThan % 3600 / 60)}m
-
- {/if}
+ {#if filters.duration.lessThan}
+ (isDurationOpen = true)}>
+ Duration less than {Math.floor(
+ filters.duration.lessThan / 3600,
+ )}h:{Math.floor((filters.duration.lessThan % 3600) / 60)}m
+
+ {/if}
- {#if filters.duration.moreThan}
- (isDurationOpen = true)}>
- Duration more than {Math.floor(filters.duration.moreThan / 3600)}h:{Math.floor(filters.duration.moreThan % 3600 / 60)}m
-
- {/if}
+ {#if filters.duration.moreThan}
+ (isDurationOpen = true)}>
+ Duration more than {Math.floor(
+ filters.duration.moreThan / 3600,
+ )}h:{Math.floor((filters.duration.moreThan % 3600) / 60)}m
+
+ {/if}
- {#if filters.tags.length != 0}
- (isTagsOpen = true)}>
- {#each filters.tags as tagId}
-
- {/each}
-
- {/if}
+ {#if filters.tags.length != 0}
+ (isTagsOpen = true)}>
+ {#each filters.tags as tagId}
+
+ {/each}
+
+ {/if}
- {#if filters.numNodes.from != null || filters.numNodes.to != null ||
- filters.numHWThreads.from != null || filters.numHWThreads.to != null ||
- filters.numAccelerators.from != null || filters.numAccelerators.to != null }
- (isResourcesOpen = true)}>
- {#if isNodesModified } Nodes: {filters.numNodes.from} - {filters.numNodes.to} {/if}
- {#if isNodesModified && isHwthreadsModified }, {/if}
- {#if isHwthreadsModified } HWThreads: {filters.numHWThreads.from} - {filters.numHWThreads.to} {/if}
- {#if (isNodesModified || isHwthreadsModified) && isAccsModified }, {/if}
- {#if isAccsModified } Accelerators: {filters.numAccelerators.from} - {filters.numAccelerators.to} {/if}
-
+ {#if filters.numNodes.from != null || filters.numNodes.to != null || filters.numHWThreads.from != null || filters.numHWThreads.to != null || filters.numAccelerators.from != null || filters.numAccelerators.to != null}
+ (isResourcesOpen = true)}>
+ {#if isNodesModified}
+ Nodes: {filters.numNodes.from} - {filters.numNodes.to}
{/if}
+ {#if isNodesModified && isHwthreadsModified},
+ {/if}
+ {#if isHwthreadsModified}
+ HWThreads: {filters.numHWThreads.from} - {filters.numHWThreads.to}
+ {/if}
+ {#if (isNodesModified || isHwthreadsModified) && isAccsModified},
+ {/if}
+ {#if isAccsModified}
+ Accelerators: {filters.numAccelerators.from} - {filters
+ .numAccelerators.to}
+ {/if}
+
+ {/if}
- {#if filters.node != null }
- (isResourcesOpen = true)}>
- Node: {filters.node}
-
- {/if}
+ {#if filters.node != null}
+ (isResourcesOpen = true)}>
+ Node: {filters.node}
+
+ {/if}
- {#if filters.stats.length > 0}
- (isStatsOpen = true)}>
- {filters.stats.map(stat => `${stat.text}: ${stat.from} - ${stat.to}`).join(', ')}
-
- {/if}
-
+ {#if filters.stats.length > 0}
+ (isStatsOpen = true)}>
+ {filters.stats
+ .map((stat) => `${stat.text}: ${stat.from} - ${stat.to}`)
+ .join(", ")}
+
+ {/if}
+
update()} />
+ {disableClusterSelection}
+ bind:isOpen={isClusterOpen}
+ bind:cluster={filters.cluster}
+ bind:partition={filters.partition}
+ on:update={() => update()}
+/>
update()} />
+ bind:isOpen={isJobStatesOpen}
+ bind:states={filters.states}
+ on:update={() => update()}
+/>
{
- delete filters.startTime['text']
- delete filters.startTime['url']
- update()
- }} />
+ bind:isOpen={isStartTimeOpen}
+ bind:from={filters.startTime.from}
+ bind:to={filters.startTime.to}
+ on:update={() => {
+ delete filters.startTime["text"];
+ delete filters.startTime["url"];
+ update();
+ }}
+/>
update()} />
+ bind:isOpen={isDurationOpen}
+ bind:lessThan={filters.duration.lessThan}
+ bind:moreThan={filters.duration.moreThan}
+ bind:from={filters.duration.from}
+ bind:to={filters.duration.to}
+ on:update={() => update()}
+/>
update()} />
+ bind:isOpen={isTagsOpen}
+ bind:tags={filters.tags}
+ on:update={() => update()}
+/>
- update()} />
+ update()}
+/>
- update()} />
+ update()}
+/>
diff --git a/web/frontend/src/filters/InfoBox.svelte b/web/frontend/src/filters/InfoBox.svelte
index 58fc8a5..8fe75ab 100644
--- a/web/frontend/src/filters/InfoBox.svelte
+++ b/web/frontend/src/filters/InfoBox.svelte
@@ -1,11 +1,11 @@
-