This commit is contained in:
2026-07-06 19:48:30 +03:00
parent 1d7e70aa15
commit 704e3e6e85
+62 -70
View File
@@ -87,7 +87,7 @@ export class Table {
this.mode = mode;
if (mode == Table.CLEAN) {
if (mode === Table.CLEAN) {
this.id = 0;
}
}
@@ -131,33 +131,31 @@ export class Table {
makeFilterForm() {
let that = this;
this.filterForm = El('form', { novalidate: true, className: 'sp-form filter-main' });
Render.makeUiElements(Ut.objVal(this.opts.filter).children, this.filterForm);
this.ui.append(this.filterForm);
this.filterForm.dxOn('changed clear', 'input[type="text"]', () => that.filterForm.dxTrigger('submit.form'));
this.filterForm.dxOn('change', 'select, input[type="radio"], input[type="checkbox"]', () => that.filterForm.dxTrigger('submit.form'));
this.filterForm.dxOn('changed clear', 'input[type="text"]', _ => this.filterForm.dxTrigger('submit.form'));
this.filterForm.dxOn('change', 'select, input[type="radio"], input[type="checkbox"]', () => this.filterForm.dxTrigger('submit.form'));
new FormValidator(this.filterForm, {
onInit: el => that.filterFormEl = el,
onSubmit: function(vars) {
onInit: el => this.filterFormEl = el,
onSubmit: vars => {
that.vars = vars;
this.vars = vars;
that.vars.set('pg', 1);
this.vars.set('pg', 1);
that.setMode(Table.CLEAN);
this.setMode(Table.CLEAN);
that.makeRequest();
this.makeRequest();
}
});
fillData(that.filterFormEl, this.vars);
fillData(this.filterFormEl, this.vars);
}
// Make header toolbar
@@ -198,7 +196,7 @@ export class Table {
this.makeRequest();
});
this.paginationEl.dxOn('click', 'a.btn-after', function() {
this.paginationEl.dxOn('click', 'a.btn-after', _ => {
this.vars.set('before', '');
this.vars.set('after', this.data.after);
@@ -278,11 +276,9 @@ export class Table {
makeTableRows() {
let that = this;
if (this.mode === Table.UPDATE) {
if (this.mode == Table.UPDATE) {
let row = this.getRow(this.id);
const row = this.getRow(this.id);
if (row) {
@@ -294,7 +290,7 @@ export class Table {
for (; n < data.length; n++) {
let cell = that.opts.header.cell ? (that.opts.header.cell[ n - 1 ] || {}) : {};
let cell = this.opts.header.cell ? (this.opts.header.cell[ n - 1 ] || {}) : {};
let column = El('div', { className: 't-col' });
@@ -306,19 +302,20 @@ export class Table {
column.dxHtml(data[n]);
}
if (n == 1 && that.opts.sortable) {
if (n === 1 && this.opts.sortable) {
column.classList.add('flex', 'v-center');
column.prepend( El('i', { className: 'handle' }) );
}
}
}
return;
}
else {
this.data.items.forEach((data, i) => {
let tbody = El('div', {
className: 'tbody' + (that.opts.body && that.opts.body.cls ? ' ' + that.opts.body.cls : ''),
className: 'tbody' + (this.opts.body && that.opts.body.cls ? ' ' + this.opts.body.cls : ''),
'data-id': data[0],
'data-pos': i
});
@@ -327,7 +324,7 @@ export class Table {
for (; n < data.length; n++) {
let cell = that.opts.header.cell ? (that.opts.header.cell[ n - 1 ] || {}) : {};
let cell = this.opts.header.cell ? (this.opts.header.cell[ n - 1 ] || {}) : {};
let column = El('div', { className: 't-col' });
@@ -339,21 +336,21 @@ export class Table {
column.dxHtml(data[n]);
}
if (n == 1 && that.opts.sortable) {
if (n === 1 && this.opts.sortable) {
column.classList.add('flex', 'v-center');
column.prepend( El('i', { className: 'handle' }) );
}
if (that.mode == Table.PREPEND) {
that.table.prepend(tbody);
}
else {
that.table.append(tbody);
if (this.mode === Table.PREPEND) {
this.table.prepend(tbody);
continue;
}
this.table.append(tbody);
}
});
}
}
// Set info rows
@@ -365,11 +362,9 @@ export class Table {
makeRequest() {
let that = this;
let vars = {};
if (this.mode == Table.UPDATE) {
if (this.mode === Table.UPDATE) {
vars.id = this.id;
}
else {
@@ -382,11 +377,11 @@ export class Table {
this.caller(this.reqOpts).then(jr => {
if (jr.code != Rc.DONE) {
that.setInfo('No Data');
this.setInfo('No Data');
return;
}
that.setTableData(jr.data);
this.setTableData(jr.data);
}).catch(error => console.error(error));
}
@@ -395,12 +390,11 @@ export class Table {
setSortable() {
let that = this,
isHandle = false,
toDrag;
let isBefore = function(a, b) {
if (a.parentNode == b.parentNode) {
const isBefore = (a, b) => {
if (a.parentNode === b.parentNode) {
for (let cur = a; cur; cur = cur.previousSibling) {
if (cur === b) {
return true;
@@ -411,51 +405,48 @@ export class Table {
return false;
}
this.table.dxOn('mousedown mouseup', 'i.handle', function(e) {
this.table.dxOn('mousedown mouseup', 'i.handle', e => {
let parent = this.dxParents('.tbody');
const parent = this.dxParents('.tbody');
if (e.type == 'mousedown') {
if (e.type === 'mousedown') {
isHandle = true;
parent.setAttribute('draggable', true);
return;
}
else {
isHandle = false;
parent.removeAttribute('draggable');
}
});
this.table.dxOn('dragenter', '.tbody', function(e) {
this.table.dxOn('dragenter', '.tbody', (e, t) => {
if (!isHandle) {
return;
}
let target = this.matches('.tbody') ? this : this.dxParents('.tbody');
const target = t.matches('.tbody') ? t : t.dxParents('.tbody');
if (isBefore( toDrag, target )) {
target.before(toDrag);
return;
}
else {
if (target.nextElementSibling === null) {
$('.sp-table').append( toDrag );
}
else {
target.nextElementSibling.before(toDrag);
}
return;
}
target.nextElementSibling.before(toDrag);
});
this.table.dxOn('dragstart', '.tbody', function(e) {
this.table.dxOn('dragstart', '.tbody', (e, t) => {
if (!isHandle) {
return;
}
toDrag = this;
toDrag = t;
e.dataTransfer.setData('text/plain', null);
e.dataTransfer.effectAllowed = 'move';
@@ -463,7 +454,7 @@ export class Table {
toDrag.style.opacity = 0.4;
});
this.table.dxOn('dragend', '.tbody', function(e) {
this.table.dxOn('dragend', '.tbody', _ => {
if (!isHandle) {
return;
@@ -478,7 +469,7 @@ export class Table {
let data = {};
that.table.dxFind('.tbody', (el, i) => {
this.table.dxFind('.tbody', (el, i) => {
if (el.dataset.pos != i && !onSort) {
onSort = true;
@@ -487,16 +478,14 @@ export class Table {
if (el.dataset.pos != i) {
data[ el.dataset.id ] = i;
el.dataset.pos = i;
}
});
if (onSort) {
Ut.trigger(that.opts.onSort, that, data);
Ut.trigger(this.opts.onSort, this, data);
onSort = false;
}
});
}
@@ -546,10 +535,12 @@ export class Table {
j = 1;
}
const currentPage = parseInt(this.vars.get('pg'));
for (let i = this.data.pagination.start; i <= this.data.pagination.end; i++) {
pg_btns[j] = [
i, i, (this.vars.get('pg') == i)
i, i, (currentPage === i)
]
j++;
@@ -604,11 +595,11 @@ export class Table {
if (data) {
this.setTableData(data);
return;
}
else {
this.makeRequest();
}
}
// Update All Rows
@@ -618,19 +609,21 @@ export class Table {
if (data) {
this.setTableData(data);
return;
}
else {
this.makeRequest();
}
}
// Delete Row
deleteRow(id) {
let row = this.getRow(id);
const row = this.getRow(id);
if (row) {
if (!row) {
return;
}
this.rows--;
this.updateInfoRows();
@@ -639,7 +632,7 @@ export class Table {
if (!this.rows) {
let pg = this.vars.get('pg');
let pg = parseInt(this.vars.get('pg'));
if (pg > 1) {
this.vars.set('pg', --pg);
@@ -650,7 +643,6 @@ export class Table {
Ut.trigger(this.opts.onUpdate, this);
}
}
// Add Row At The End of the table
@@ -660,11 +652,11 @@ export class Table {
if (data) {
this.setTableData(data);
return;
}
else {
this.makeRequest();
}
}
// Add Row At Begining of the table
@@ -674,11 +666,11 @@ export class Table {
if (data) {
this.setTableData(data);
return;
}
else {
this.makeRequest();
}
}
// Set Info Table