Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | 31x 31x 31x 60x 1x 2x | /* eslint-disable ish-custom-rules/project-structure */
import { Injectable } from '@angular/core';
import { ImageMapper } from 'ish-core/models/image/image.mapper';
import { VariationAttributeData, VariationAttributeMetaData } from './variation-attribute.interface';
import { VariationAttribute, VariationAttributeType } from './variation-attribute.model';
/**
* Maps variation attributes data of HTTP requests to client side model instance.
*/
@Injectable({ providedIn: 'root' })
export class VariationAttributeMapper {
constructor(private imageMapper: ImageMapper) {}
fromData(data: VariationAttributeData[]): VariationAttribute[] {
return (
data?.map(varAttr => ({
variationAttributeId: varAttr.variationAttributeId,
name: varAttr.name,
value: varAttr.value.value,
attributeType: varAttr.attributeType,
metaData: this.mapMetaData(varAttr.attributeType, varAttr.metadata),
})) ?? []
);
}
fromMasterData(variationAttributes: VariationAttributeData[]): VariationAttribute[] {
return variationAttributes
?.map(varAttr =>
varAttr.values.map(value => ({
variationAttributeId: varAttr.variationAttributeId,
name: varAttr.name,
value: value.value.value,
attributeType: varAttr.attributeType,
metaData: this.mapMetaData(varAttr.attributeType, value.metadata),
}))
)
.flat();
}
private mapMetaData(attributeType: VariationAttributeType, metaData: VariationAttributeMetaData): string {
switch (attributeType) {
case 'colorCode':
case 'defaultAndColorCode':
return metaData?.colorCode;
case 'swatchImage':
case 'defaultAndSwatchImage':
return this.imageMapper.fromEffectiveUrl(metaData?.imagePath);
default:
return;
}
}
}
|