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  }