github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/ui/app/serializers/evaluation.js (about) 1 import { inject as service } from '@ember/service'; 2 import { get } from '@ember/object'; 3 import ApplicationSerializer from './application'; 4 import classic from 'ember-classic-decorator'; 5 6 @classic 7 export default class Evaluation extends ApplicationSerializer { 8 @service system; 9 10 mapToArray = ['FailedTGAllocs']; 11 separateNanos = ['CreateTime', 'ModifyTime']; 12 13 normalize(typeHash, hash) { 14 hash.PlainJobId = hash.JobID; 15 hash.Namespace = hash.Namespace || get(hash, 'Job.Namespace') || 'default'; 16 hash.JobID = JSON.stringify([hash.JobID, hash.Namespace]); 17 18 const relatedEvals = hash.RelatedEvals; 19 20 const normalizedHash = super.normalize(typeHash, hash); 21 22 if (relatedEvals?.length) { 23 this._handleRelatedEvalsRelationshipData(relatedEvals, normalizedHash); 24 } 25 26 return normalizedHash; 27 } 28 29 _handleRelatedEvalsRelationshipData(relatedEvals, normalizedHash) { 30 normalizedHash.data.relationships = normalizedHash.data.relationships || {}; 31 32 normalizedHash.data.relationships.relatedEvals = { 33 data: relatedEvals.map((evaluationStub) => { 34 return { id: evaluationStub.ID, type: 'evaluation-stub' }; 35 }), 36 }; 37 38 normalizedHash.included = normalizedHash.included || []; 39 40 const included = relatedEvals.reduce((acc, evaluationStub) => { 41 const jsonDocument = this.normalize( 42 this.store.modelFor('evaluation-stub'), 43 evaluationStub 44 ); 45 46 return [...acc, jsonDocument.data]; 47 }, normalizedHash.included); 48 49 normalizedHash.included = included; 50 } 51 }