UNPKG

@noggin/elastic-noggin-sdk

Version:
162 lines (161 loc) 5.74 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Eno = void 0; const lodash_1 = require("lodash"); const EnoFactory_1 = require("../EnoFactory"); const constants_1 = __importDefault(require("../constants")); class Eno { constructor(proto) { this.tip = ''; this.sid = ''; (0, lodash_1.merge)(this, (0, lodash_1.cloneDeep)(proto)); } createDeletedEno(branch) { const enoFact = new EnoFactory_1.EnoFactory(); enoFact.setProtoToPatch(this); enoFact.setDeleted(true); if (branch) { enoFact.setBranch(branch); } return enoFact.makeEno(); } createSecurityChangedEno(security, branch) { const enoFact = new EnoFactory_1.EnoFactory(); enoFact.setProtoToPatch(this); enoFact.setSecurity(security); if (branch) { enoFact.setBranch(branch); } return enoFact.makeEno(); } toJson(option = {}) { const json = Object.create(null); for (const property of Object.keys(this)) { if (option && option.propWhiteList && option.propWhiteList.indexOf(property) === -1) { continue; } json[property] = (0, lodash_1.cloneDeep)(this[property]); } return json; } getBranch() { return this.serverT ? this.serverT.branch : this.clientT ? this.clientT.branch : null; } getType() { return this.source ? this.source.type : null; } getSessionId() { return this.serverT ? this.serverT.session : null; } hasError() { return !!(this.serverT && this.serverT.error && this.serverT.error.length > 0); } getFieldFormula(fieldTip) { if (this.source && this.source.field) { const field = this.source.field.filter((f) => f.tip === fieldTip)[0]; return field && field.formula && field.formula.length > 0 ? field.formula[0] : null; } return null; } getFieldValues(fieldTip, lang = constants_1.default.LANG_DEFAULT) { if (!this.source || !this.source.field) { return []; } const field = this.source.field.filter((f) => f.tip === fieldTip)[0]; if (!field) { return []; } if (field.value) { return field.value; } if (!field.i18n) { return []; } lang = lang.toLowerCase(); const maybeLang = lang.substr(0, 2); let maybeLangIndex = null; let defaultLangIndex = null; for (let i = 0; i < field.i18n.length; i++) { if (field.i18n[i].lang === lang) { return field.i18n[i].value || []; } if (maybeLangIndex === null && field.i18n[i].lang.substr(0, 2) === maybeLang) { maybeLangIndex = i; } else if (defaultLangIndex === null && field.i18n[i].lang === constants_1.default.LANG_DEFAULT) { defaultLangIndex = i; } } if (maybeLangIndex !== null) { return field.i18n[maybeLangIndex].value || []; } if (defaultLangIndex !== null) { return field.i18n[defaultLangIndex].value || []; } return []; } getFieldStringValue(fieldTip, lang = constants_1.default.LANG_DEFAULT) { return this.getFieldValues(fieldTip, lang).join(', ') || null; } getFieldNumberValue(fieldTip, lang = constants_1.default.LANG_DEFAULT) { const values = this.getFieldValues(fieldTip, lang); if (values.length === 0) { return null; } const numberValue = parseFloat(values[0]); if (isNaN(numberValue)) { return null; } return numberValue; } getFieldBooleanValue(fieldTip, lang = constants_1.default.LANG_DEFAULT) { const fieldValues = this.getFieldValues(fieldTip, lang); return fieldValues && fieldValues.length > 0 && fieldValues.filter((value) => value !== 'true').length === 0; } getFieldJsonValue(fieldTip) { const value = this.getFieldValues(fieldTip); if (value && value.length > 0) { return JSON.parse(value[0]); } return null; } getFieldRawI18n(fieldTip) { const field = this.source.field.filter((f) => f.tip === fieldTip)[0]; if ((0, lodash_1.isArray)(field.i18n)) { return [...field.i18n]; } if ((0, lodash_1.isArray)(field.value)) { return [{ lang: constants_1.default.LANG_DEFAULT, value: field.value }]; } return []; } isContentDiff(eno) { if (!this.source || !eno.source) { return true; } return this.source.deleted !== eno.source.deleted || this.source.type !== eno.source.type || this.source.security !== eno.source.security || this._isFieldDiff(eno); } _isFieldDiff(eno) { if (!this.source || !this.source.field || !eno.source || !eno.source.field) { return true; } const allFieldTips = (0, lodash_1.union)(this.source.field.map(iField => iField.tip), eno.source.field.map(iField => iField.tip)); for (const fieldTip of allFieldTips) { const isDiff = !(0, lodash_1.isEqual)(this.getFieldValues(fieldTip), eno.getFieldValues(fieldTip)); if (isDiff) { return true; } } return false; } } exports.Eno = Eno;