PHP Classes

File: client/modules/pim/src/views/product-attribute-value/record/detail.js

Recommend this page to a friend!
  Classes of alex nov   KennerPIM   client/modules/pim/src/views/product-attribute-value/record/detail.js   Download  
File: client/modules/pim/src/views/product-attribute-value/record/detail.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: KennerPIM
Product information management application
Author: By
Last change:
Date: 1 year ago
Size: 5,062 bytes
 

Contents

Class file image Download
/* * Pim * Free Extension * Copyright (c) TreoLabs GmbH * Copyright (c) Kenner Soft Service GmbH * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. */ Espo.define('pim:views/product-attribute-value/record/detail', 'views/record/detail', Dep => Dep.extend({ pipelines: { updateModelDefs: ['clientDefs', 'ProductAttributeValue', 'updateModelDefs'], changeFieldsReadOnlyStatus: ['clientDefs', 'ProductAttributeValue', 'changeFieldsReadOnlyStatus'] }, setup() { Dep.prototype.setup.call(this); this.handleValueModelDefsUpdating(); }, handleValueModelDefsUpdating() { this.updateModelDefs(); this.listenTo(this.model, 'change:attributeId', () => { this.updateModelDefs(); if (this.model.get('attributeId')) { const inputLanguageList = this.getConfig().get('inputLanguageList') || []; if (this.getConfig().get('isMultilangActive') && inputLanguageList.length) { const valuesKeysList = ['value', ...inputLanguageList.map(lang => { return lang.split('_').reduce((prev, curr) => prev + Espo.Utils.upperCaseFirst(curr.toLocaleLowerCase()), 'value'); })]; valuesKeysList.forEach(value => { this.model.set({[value]: null}, { silent: true }); }); } this.clearView('middle'); this.gridLayout = null; this.createMiddleView(() => this.reRender()); } }); }, updateModelDefs() { // readOnly this.changeFieldsReadOnlyStatus(['attribute', 'channels', 'product', 'scope'], !this.model.get('isCustom')); if (this.model.get('attributeId')) { // prepare data let type = this.model.get('attributeType'); let typeValue = this.model.get('typeValue'); if (type) { // prepare field defs let fieldDefs = { type: type, options: typeValue, view: type !== 'bool' ? this.getFieldManager().getViewName(type) : 'pim:views/fields/bool-required', required: !!this.model.get('isRequired') }; // for unit if (type === 'unit') { fieldDefs.measure = (typeValue || ['Length'])[0]; } // enum and multiEnum is readOnly for locales attributes if ((type === 'enum' || type === 'multiEnum') && this.model.get('locale')) { fieldDefs.readOnly = true; } // set field defs this.model.defs.fields.value = fieldDefs; } } this.runPipeline('updateModelDefs'); }, changeFieldsReadOnlyStatus(fields, condition) { fields.forEach(field => this.model.defs.fields[field].readOnly = condition); this.runPipeline('changeFieldsReadOnlyStatus', fields); }, fetch() { let data = Dep.prototype.fetch.call(this); let view = this.getFieldView('value'); if (view) { this.extendFieldData(view, data); } return data; }, extendFieldData(view, data) { let additionalData = false; if (view.type === 'unit') { let actualFieldDefs = this.getMetadata().get(['fields', view.type, 'actualFields']) || []; let actualFieldValues = this.getFieldManager().getActualAttributes(view.type, view.name) || []; actualFieldDefs.forEach((field, i) => { if (field) { additionalData = additionalData || {}; additionalData[field] = data[actualFieldValues[i]]; } }); } if (view.type === 'image') { _.extend((data || {}), {value: (data || {}).valueId}); } if (additionalData) { _.extend((data || {}), {data: additionalData}); } } }) );