403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/sale/barcode/src/widget/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/sale/barcode/src/widget/widget.js
import {Tag, Event} from 'main.core';
import BarcodeItem from "./items/barcode";
import MarkingCodeItem from "./items/markingcode";
import './../css/widget/items/barcode.css';

export default class Widget
{
	static COLUMN_TYPE_BARCODE = 'barcode';
	static COLUMN_TYPE_MARKING_CODE = 'markingCode';

	constructor(props)
	{
		this._headData = props.headData;
		this._orderId = props.orderId;
		this._basketId = props.basketId;
		this._storeId = props.storeId;
		this._isBarcodeMulti = props.isBarcodeMulti;
		this._readonly = props.readonly;

		this._items = this.createItems(props.rowData, props.rowsCount);
		this._eventEmitter = new Event.EventEmitter();
	}

	get orderId()
	{
		return this._orderId;
	}

	get basketId()
	{
		return this._basketId;
	}

	get storeId()
	{
		return this._storeId;
	}

	createItems(data, count)
	{
		let items = [];

		data.forEach((rowData) => {
			items.push(this.createItemsRow(rowData));
		});

		if(data.length < count)
		{
			for (let i = 0, l = count - data.length; i < l; i++)
			{
				items.push(this.createEmptyRow());
			}
		}

		return items;
	}

	createEmptyRow()
	{
		let result = {id: 0};

		if(this.isBarcodeNeeded())
		{
			let barcodeItem = new BarcodeItem({});
			barcodeItem.onChangeSubscribe(this.onBarcodeItemChange.bind(this));
			result[Widget.COLUMN_TYPE_BARCODE] = barcodeItem;
		}

		if(this.isMarkingCodeNeeded)
		{
			let markingCodeItem = new MarkingCodeItem({});
			markingCodeItem.onChangeSubscribe(this.onMarkingCodeItemChange.bind(this));
			result[Widget.COLUMN_TYPE_MARKING_CODE] = markingCodeItem;
		}

		return result;
	}

	onBarcodeItemChange(event)
	{
		let barcodeValue;
		if (typeof event.data.value === "string")
		{
			barcodeValue = event.data.value;
		}
		else
		{
			barcodeValue = event.data.value.value;
		}

		this.isBarcodeExist(barcodeValue)
		.then((result) => {
			let barcodeItem = {
				isExist: result,
				value: barcodeValue,
			}

			if(!this._isBarcodeMulti)
			{
				this.synchronizeBarcodes(barcodeItem.value, barcodeItem.isExist);
			}

			this.onChange();

		})
		.catch((data) => {
			BX.debug(data);
		});
	}

	onMarkingCodeItemChange()
	{
		this.onChange();
	}

	onChange()
	{
		this._eventEmitter.emit('onChange', this);
	}

	onChangeSubscribe(callback)
	{
		this._eventEmitter.subscribe('onChange', callback);
	}

	synchronizeBarcodes(value, isExist)
	{
		this._items.forEach((item) => {
			if(item[Widget.COLUMN_TYPE_BARCODE])
			{
				item[Widget.COLUMN_TYPE_BARCODE].value = value;
				item[Widget.COLUMN_TYPE_BARCODE].isExist = isExist;
			}
		});
	}

	isBarcodeExist(barcode)
	{
		if(barcode)
		{
			let storeId = this._isBarcodeMulti ? this.storeId : 0;

			 return BX.Sale.Barcode.Checker.isBarcodeExist(
				barcode, this.basketId, this.orderId, storeId
			);
		}
		else
		{
			return new Promise((resolve) => {resolve(null);});
		}
	}

	createItemsRow(rowData)
	{
		let result = {id: rowData.id};

		if(this.isBarcodeNeeded())
		{
			let barcodeItem = new BarcodeItem({
				id: rowData.id,
				value: rowData.barcode,
				widget: this,
				readonly: this._readonly
			});

			barcodeItem.onChangeSubscribe(this.onBarcodeItemChange.bind(this));
			result[Widget.COLUMN_TYPE_BARCODE] = barcodeItem;
		}

		if(this.isMarkingCodeNeeded())
		{
			let markingCodeItem = new MarkingCodeItem({
				id: rowData.id,
				value: rowData.markingCode,
				readonly: this._readonly
			});

			markingCodeItem.onChangeSubscribe(this.onMarkingCodeItemChange.bind(this));
			result[Widget.COLUMN_TYPE_MARKING_CODE] = markingCodeItem;
		}

		return result;
	}

	isBarcodeNeeded()
	{
		return (typeof this._headData[Widget.COLUMN_TYPE_BARCODE] !== 'undefined');
	}

	isMarkingCodeNeeded()
	{
		return (typeof this._headData[Widget.COLUMN_TYPE_MARKING_CODE] !== 'undefined');
	}

	createTh(type)
	{
		let th = document.createElement('th');
		th.innerHTML = this._headData[type].title;
		return th;
	}

	render()
	{
		let tableNode = Tag.render`<table></table>`;
		let headRow = tableNode.insertRow();

		if(this.isBarcodeNeeded())
		{
			headRow.appendChild(
				this.createTh(Widget.COLUMN_TYPE_BARCODE)
			);
		}

		if(this.isMarkingCodeNeeded())
		{
			headRow.appendChild(
				this.createTh(Widget.COLUMN_TYPE_MARKING_CODE)
			);
		}

		this._items.forEach((row) => {
			let tableRow = tableNode.insertRow(-1);

			if(this.isBarcodeNeeded())
			{
				let cell = 	tableRow.insertCell();
				cell.appendChild(row[Widget.COLUMN_TYPE_BARCODE].render());
			}

			if(this.isMarkingCodeNeeded())
			{
				let cell = 	tableRow.insertCell();
				cell.appendChild(row[Widget.COLUMN_TYPE_MARKING_CODE].render());
			}
		});

		return tableNode;
	}

	getItemsData()
	{
		let result = [];

		this._items.forEach((item) => {
			result.push({
				id: item.id,
				barcode: {
					value: item[Widget.COLUMN_TYPE_BARCODE] ? item[Widget.COLUMN_TYPE_BARCODE].value : '',
					isExist: item[Widget.COLUMN_TYPE_BARCODE] ? item[Widget.COLUMN_TYPE_BARCODE].isExist : false
				},
				markingCode: {
					value: item[Widget.COLUMN_TYPE_MARKING_CODE] ? item[Widget.COLUMN_TYPE_MARKING_CODE].value : ''
				}
			});
		});

		return result;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit