%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 18.117.77.73 Web Server : Apache/2.4.52 (Ubuntu) System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64 User : www-root ( 1010) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/components/bitrix/main.ui.grid/templates/.default/js/ |
Upload File : |
;(function() { 'use strict'; BX.namespace('BX.Grid'); /** * BX.Grid.InlineEditor * @param {BX.Main.grid} parent * @param {Object} types * @constructor */ BX.Grid.InlineEditor = function(parent, types) { this.parent = null; this.types = null; this.init(parent, types); }; BX.Grid.InlineEditor.prototype = { init: function(parent, types) { this.parent = parent; try { this.types = eval(types); } catch (err) { this.types = null; } }, createContainer: function() { return BX.create('div', { props: { className: this.parent.settings.get('classEditorContainer') } }); }, createTextarea: function(editObject, height) { var textarea = BX.create('textarea', { props: { className: [ this.parent.settings.get('classEditor'), this.parent.settings.get('classEditorTextarea') ].join(' ') }, attrs: { name: editObject.NAME, style: 'height:' + height + 'px' }, html: editObject.VALUE }); return textarea; }, createInput: function(editObject) { var className = this.parent.settings.get('classEditorText'); var attrs = { value: (editObject.VALUE !== undefined && editObject.VALUE !== null) ? BX.util.htmlspecialcharsback(editObject.VALUE) : '', name: (editObject.NAME !== undefined && editObject.NAME !== null) ? editObject.NAME : '' }; if (editObject.TYPE === this.types.CHECKBOX) { className = this.parent.settings.get('classEditorCheckbox'); attrs.type = 'checkbox'; attrs.checked = (attrs.value == 'Y'); } if (editObject.TYPE === this.types.DATE) { className = [className, this.parent.settings.get('classEditorDate')].join(' '); } if (editObject.TYPE === this.types.NUMBER) { className = [className, this.parent.settings.get('classEditorNumber')].join(' '); attrs.type = 'number'; } if (editObject.TYPE === this.types.RANGE) { className = [className, this.parent.settings.get('classEditorRange')].join(' '); attrs.type = 'range'; if (BX.type.isPlainObject(editObject.DATA)) { attrs.min = editObject.DATA.MIN || '0'; attrs.max = editObject.DATA.MAX || 99999; attrs.step = editObject.DATA.STEP || ''; } } className = [this.parent.settings.get('classEditor'), className].join(' '); return BX.create('input', { props: { className: className, id: editObject.NAME + '_control' }, attrs: attrs }); }, createCustom: function(editObject) { var className = this.parent.settings.get('classEditorCustom'); className = [this.parent.settings.get('classEditor'), className].join(' '); return BX.create('div', { props: { className: className }, attrs: { 'data-name': editObject.NAME }, html: editObject.VALUE || "" }); }, createOutput: function(editObject) { return BX.create('output', { props: { className: this.parent.settings.get('classEditorOutput') || '' }, attrs: { for: editObject.NAME + '_control' }, text: editObject.VALUE || '' }); }, getDropdownValueItemByValue: function(items, value) { var result = items.filter(function(current) { return current.VALUE === value; }); return result.length > 0 ? result[0] : items[0]; }, createDropdown: function(editObject) { var valueItem = this.getDropdownValueItemByValue( editObject.DATA.ITEMS, editObject.VALUE ); return BX.create('div', { props: { className: [ this.parent.settings.get('classEditor'), 'main-dropdown main-grid-editor-dropdown' ].join(' '), id: editObject.NAME + '_control' }, attrs: { name: editObject.NAME, 'data-items': JSON.stringify(editObject.DATA.ITEMS), 'data-value': valueItem.VALUE }, children: [BX.create('span', { props: {className: 'main-dropdown-inner'}, html: valueItem.NAME })] }); }, validateEditObject: function(editObject) { return ( BX.type.isPlainObject(editObject) && ('TYPE' in editObject) && ('NAME' in editObject) && ('VALUE' in editObject) && (!('items' in editObject) || (BX.type.isArray(editObject.items) && editObject.items.length)) ); }, initCalendar: function(event) { BX.calendar({node: event.target, field: event.target}); }, bindOnRangeChange: function(control, output) { function bubble(control, output) { BX.html(output, control.value); var value = parseFloat(control.value); var max = parseFloat(control.getAttribute('max')); var min = parseFloat(control.getAttribute('min')); var thumbWidth = 16; var range = (max - min); var position = (((value - min) / range) * 100); var positionOffset = (Math.round(thumbWidth * position / 100) - (thumbWidth / 2)); output.style.left = position + '%'; output.style.marginLeft = -positionOffset + 'px'; } setTimeout(function() { bubble(control, output); }, 0); BX.bind(control, 'input', function() { bubble(control, output); }); }, createImageEditor: function(editObject) { return (new BX.Grid.ImageField(this.parent, editObject)).getLayout(); }, getEditor: function(editObject, height) { var control, span; var container = this.createContainer(); if (this.validateEditObject(editObject)) { editObject.VALUE = editObject.VALUE === null ? '' : editObject.VALUE; switch (editObject.TYPE) { case this.types.TEXT : { control = this.createInput(editObject); BX.bind(control, 'click', function(event) { event.stopPropagation(); }); BX.bind(control, 'keydown', BX.delegate(this._onControlKeydown, this)); break; } case this.types.DATE : { control = this.createInput(editObject); BX.bind(control, 'click', this.initCalendar); BX.bind(control, 'click', function(event) { event.stopPropagation(); }); BX.bind(control, 'keydown', BX.delegate(this._onControlKeydown, this)); break; } case this.types.NUMBER : { control = this.createInput(editObject); BX.bind(control, 'click', function(event) { event.stopPropagation(); }); BX.bind(control, 'keydown', BX.delegate(this._onControlKeydown, this)); break; } case this.types.RANGE : { control = this.createInput(editObject); span = this.createOutput(editObject); this.bindOnRangeChange(control, span); BX.bind(control, 'click', function(event) { event.stopPropagation(); }); BX.bind(control, 'keydown', BX.delegate(this._onControlKeydown, this)); break; } case this.types.CHECKBOX : { control = this.createInput(editObject); BX.bind(control, 'click', function(event) { event.stopPropagation(); }); BX.bind(control, 'keydown', BX.delegate(this._onControlKeydown, this)); break; } case this.types.TEXTAREA : { control = this.createTextarea(editObject, height); BX.bind(control, 'click', function(event) { event.stopPropagation(); }); BX.bind(control, 'keydown', BX.delegate(this._onControlKeydown, this)); break; } case this.types.DROPDOWN : { control = this.createDropdown(editObject); break; } case this.types.IMAGE : { control = this.createImageEditor(editObject); break; } case this.types.CUSTOM : { control = this.createCustom(editObject); requestAnimationFrame(function() { if (editObject.HTML) { var res = BX.processHTML(editObject.HTML); res.SCRIPT.forEach(function(item) { if (item.isInternal && item.JS) { BX.evalGlobal(item.JS); } }) } }); BX.bind(control, 'click', function(event) { event.stopPropagation(); }); break; } default : { break; } } } if (BX.type.isDomNode(span)) { container.appendChild(span); } if (BX.type.isDomNode(control)) { container.appendChild(control); } return container; }, _onControlKeydown: function(event) { if (event.code === 'Enter') { event.stopPropagation(); event.preventDefault(); var saveButton = BX.Grid.Utils.getBySelector(this.parent.getContainer(), '#grid_save_button > button', true); if (saveButton) { BX.fireEvent(saveButton, 'click'); } } } }; })();