HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
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(' / ')
    }
}