File: D:/HostingSpaces/SBogers10/shop.komma.nl/resources/js/global/models/AbstractTranslatable.js
import Model from "./Model";
import AbstractTranslation from "./AbstractTranslation";
export default class AbstractTranslatable extends Model {
/**
* @return {number}
*/
get id() {
return this._id;
}
/**
* @param {number} value
*/
set id(value) {
this._id = typeof value === 'number' ? value : Model.newId();
}
/**
* @return {AbstractTranslation|{}}
*/
get translation() {
return this._translation;
}
/**
* @param {AbstractTranslation|{}} value
*/
set translation(value) {
if(typeof value === "undefined") this._translation = null
else if(value instanceof AbstractTranslation) this._translation = value;
else this._translation = new AbstractTranslation(value)
}
/**
* @return {AbstractTranslation[]}
*/
get translations() {
if(!Array.isArray(this._translations)) this._translations = [];
return this._translations;
}
/**
* @param {AbstractTranslation[]|[{}]} values
*/
set translations(values) {
this._translations = [];
if(typeof values === "undefined") values = []
values.forEach((translation) => {
if(translation instanceof AbstractTranslation) this._translations.push(translation)
else this._translations.push(new AbstractTranslation(translation))
});
}
/**
* @return {string}
*/
get names() {
if(this.translations.length === 0) return ''
return this.translations.map(
/** @param {AbstractTranslation} translation */
(translation) => translation.name
).filter((value, index, self) => {
return self.indexOf(value) === index ;
}).join(' / ')
}
}