2018-02-08 23:02:48 +00:00
|
|
|
import { get } from '@ember/object';
|
|
|
|
import ApplicationSerializer from './application';
|
2022-03-08 17:28:36 +00:00
|
|
|
import classic from 'ember-classic-decorator';
|
2018-02-08 23:02:48 +00:00
|
|
|
|
2022-03-08 17:28:36 +00:00
|
|
|
@classic
|
2020-06-10 13:49:16 +00:00
|
|
|
export default class JobSummary extends ApplicationSerializer {
|
2018-02-08 23:02:48 +00:00
|
|
|
normalize(modelClass, hash) {
|
|
|
|
hash.PlainJobId = hash.JobID;
|
|
|
|
hash.ID = JSON.stringify([hash.JobID, hash.Namespace || 'default']);
|
2018-03-28 21:56:15 +00:00
|
|
|
hash.JobID = hash.ID;
|
2018-02-08 23:02:48 +00:00
|
|
|
|
2020-08-20 17:14:49 +00:00
|
|
|
// Transform the map-based Summary object into an array-based
|
|
|
|
// TaskGroupSummary fragment list
|
|
|
|
|
2018-12-13 00:24:57 +00:00
|
|
|
const fullSummary = hash.Summary || {};
|
2020-09-05 02:44:21 +00:00
|
|
|
hash.TaskGroupSummaries = Object.keys(fullSummary)
|
|
|
|
.sort()
|
2021-12-28 14:45:20 +00:00
|
|
|
.map((key) => {
|
2020-09-05 02:44:21 +00:00
|
|
|
const allocStats = fullSummary[key] || {};
|
|
|
|
const summary = { Name: key };
|
2018-02-08 23:02:48 +00:00
|
|
|
|
2020-09-05 02:44:21 +00:00
|
|
|
Object.keys(allocStats).forEach(
|
2021-12-28 14:45:20 +00:00
|
|
|
(allocKey) => (summary[`${allocKey}Allocs`] = allocStats[allocKey])
|
2020-09-05 02:44:21 +00:00
|
|
|
);
|
2018-02-08 23:02:48 +00:00
|
|
|
|
2020-09-05 02:44:21 +00:00
|
|
|
return summary;
|
|
|
|
});
|
2018-02-08 23:02:48 +00:00
|
|
|
|
|
|
|
// Lift the children stats out of the Children object
|
|
|
|
const childrenStats = get(hash, 'Children');
|
|
|
|
if (childrenStats) {
|
|
|
|
Object.keys(childrenStats).forEach(
|
2021-12-28 16:08:12 +00:00
|
|
|
(childrenKey) =>
|
|
|
|
(hash[`${childrenKey}Children`] = childrenStats[childrenKey])
|
2018-02-08 23:02:48 +00:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2020-06-10 13:49:16 +00:00
|
|
|
return super.normalize(modelClass, hash);
|
|
|
|
}
|
|
|
|
}
|