import * as _StoreMixin from "dgrid/_StoreMixin";
import * as DGridPagination from "dgrid/extensions/Pagination";
import * as Tooltip from "dijit/Tooltip";
import * as declare from "dojo/_base/declare";
export const GridHelper = declare(null, {
allowTextSelection: true,
noDataMessage: "...empty...",
loadingMessage: "loading...",
postCreate: function postCreate(inherited) {
this.inherited(postCreate, arguments);
this.__hpcc_tooltip_header = new Tooltip({
connectId: [this.id],
selector: ".dgrid-resize-header-container",
showDelay: 400,
getContent(node) {
if (node.offsetWidth < node.scrollWidth - 4) {
return node.innerHTML;
}
return "";
}
});
this.__hpcc_tooltip_header.position = ["above-centered", "below-centered", "before-centered", "after-centered"];
this.__hpcc_tooltip = new Tooltip({
connectId: [this.id],
selector: "td",
showDelay: 400,
getContent(node) {
if (node.offsetWidth <= node.scrollWidth) {
return node.innerHTML;
}
return "";
}
});
this.__hpcc_tooltip.position = ["above-centered", "below-centered", "before-centered", "after-centered"];
},
refresh: function refresh(options) {
this.inherited(refresh, arguments, [options || {
keepScrollPosition: true,
keepCurrentPage: true
}]);
}/*,
_onNotify(object, existingId) {
this.inherited(arguments);
if (this.onSelectedChangedCallback) {
this.onSelectedChangedCallback();
}
},
onSelectionChanged(callback) {
this.onSelectedChangedCallback = callback;
this.on("dgrid-select, dgrid-deselect, dgrid-refresh-complete", function (event) {
callback(event);
});
},
clearSelection() {
this.inherited(arguments);
query("input[type=checkbox]", this.domNode).forEach(function (node) {
node.checked = false;
node.indeterminate = false;
});
},
setSelection(arrayOfIDs) {
this.clearSelection();
const context = this;
arrayUtil.forEach(arrayOfIDs, function (item, idx) {
if (idx === 0) {
const row = context.row(item);
if (row.element) {
row.element.scrollIntoView();
}
}
context.select(item);
});
},
setSelected(items) {
this.clearSelection();
const context = this;
arrayUtil.forEach(items, function (item, idx) {
if (idx === 0) {
const row = context.row(item);
if (row.element) {
row.element.scrollIntoView();
}
}
context.select(context.store.getIdentity(item));
});
},
getSelected(store) {
if (!store) {
store = this.store;
}
const retVal = [];
for (const id in this.selection) {
if (this.selection[id]) {
const storeItem = store.get(id);
if (storeItem && storeItem.StateID !== 999) {
retVal.push(storeItem);
}
}
}
return retVal;
}
*/
});
export const Pagination = declare([DGridPagination], {
refresh(options?) {
const self = this;
const page = options && options.keepCurrentPage ?
Math.min(this._currentPage, Math.ceil(this._total / this.rowsPerPage)) || 1 : 1;
_StoreMixin.prototype.refresh.apply(this, arguments);
// Reset to first page and return promise from gotoPage
return this.gotoPage(page).then(function (results) {
self._emitRefreshComplete();
return results;
});
}
});