mirror of
https://github.com/Karaka-Management/jsOMS.git
synced 2026-01-10 17:38:41 +00:00
87 lines
2.0 KiB
JavaScript
87 lines
2.0 KiB
JavaScript
import { jsOMS } from '../Utils/oLib.js';
|
|
/**
|
|
* Manual order class.
|
|
*
|
|
* @copyright Dennis Eichhorn
|
|
* @license OMS License 2.2
|
|
* @version 1.0.0
|
|
* @since 1.0.0
|
|
*/
|
|
export class Order
|
|
{
|
|
/**
|
|
* @constructor
|
|
*
|
|
* @param {Object} app Application
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
constructor (app)
|
|
{
|
|
this.app = app;
|
|
};
|
|
|
|
/**
|
|
* Bind element
|
|
*
|
|
* @param {Object} [element] DOM element
|
|
*
|
|
* @return {void}
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
bind (element = null)
|
|
{
|
|
if (element !== null) {
|
|
this.bindElement(element);
|
|
|
|
return;
|
|
}
|
|
|
|
const elements = document.querySelectorAll('.oms-ordercontainer');
|
|
const length = !elements ? 0 : elements.length;
|
|
|
|
for (let i = 0; i < length; ++i) {
|
|
this.bindElement(elements[i]);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Bind DOM element
|
|
*
|
|
* @param {string} id DOM element
|
|
*
|
|
* @return {void}
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
bindElement (element)
|
|
{
|
|
if (!element) {
|
|
return;
|
|
}
|
|
|
|
element.addEventListener('click', function (event) {
|
|
if (!jsOMS.hasClass(event.target, 'order-up')
|
|
&& !jsOMS.hasClass(event.target, 'order-down')
|
|
) {
|
|
return;
|
|
}
|
|
|
|
jsOMS.preventAll(event);
|
|
|
|
const rowLength = element.children.length;
|
|
const thisElement = event.target.closest('.oms-ordercontainer ' + this.children[rowLength - 1].tagName);
|
|
|
|
const rowId = Array.from(element.children).indexOf(thisElement);
|
|
const orderType = jsOMS.hasClass(event.target, 'order-up') ? 1 : -1;
|
|
|
|
if (orderType === 1 && rowId > 0) {
|
|
element.insertBefore(element.children[rowId], element.children[rowId - 1]);
|
|
} else if (orderType === -1 && rowId < rowLength) {
|
|
element.insertBefore(element.children[rowId], element.children[rowId + 2]);
|
|
}
|
|
}, false);
|
|
}
|
|
};
|