56 lines
1.9 KiB
JavaScript
56 lines
1.9 KiB
JavaScript
import AbsTable from '/js/libs/js-AbsTable.js'
|
|
import APaging from '/js/libs/js-APaging.js'
|
|
import AOverlay from '/js/libs/js-AOverlay.js'
|
|
|
|
export default class ATable extends AbsTable {
|
|
constructor(e, pageSize = 5) {
|
|
super(e);
|
|
this.hForm = new FormData();
|
|
this.absPaging = new APaging(e);
|
|
this.aOverlay = new AOverlay(e);
|
|
this.aOverlay.createOverlay();
|
|
this.absPaging.pageSize = pageSize;
|
|
this.absPaging.activePage = 1;
|
|
this.absPaging.maxRow = -1;
|
|
this.absPaging.on("PagingChange", ((e) => {
|
|
this.SendData(false);
|
|
}).bind(this));
|
|
|
|
}
|
|
LoadDataUrl(url, first = true) {
|
|
this.url = url;
|
|
this.aOverlay.showOverlay();
|
|
this.SendData(first);
|
|
}
|
|
SendData(first) {
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.open("POST", this.url);
|
|
var f = function (evt) {
|
|
if (evt.currentTarget.readyState == 4 && evt.currentTarget.status == 200) {
|
|
if (evt.currentTarget.responseText) {
|
|
var o = JSON.parse(evt.currentTarget.responseText);
|
|
if (o.mrows != null) {
|
|
this.absPaging.SetPaging(o.mrows);
|
|
}
|
|
this.LoadData(o.data);
|
|
this.aOverlay.removeOverlay();
|
|
}
|
|
}
|
|
}.bind(this);
|
|
xhr.addEventListener("readystatechange", f, false);
|
|
var frm = new FormData();
|
|
AddFormData(frm, "isFirstQuery", first);
|
|
AddFormData(frm, "pageSize", this.absPaging.pageSize);
|
|
AddFormData(frm, "pageNumber", this.absPaging.activePage);
|
|
AddFormData(frm, "maxRow", this.absPaging.maxRow);
|
|
xhr.send(frm);
|
|
}
|
|
RefreshPage(page, firstQ = false) {
|
|
this.absPaging.activePage = page;
|
|
this.SendData(firstQ);
|
|
}
|
|
RefreshCurrentPage(firstQ = false) {
|
|
this.SendData(firstQ);
|
|
}
|
|
}
|