devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
201 lines (199 loc) • 6.24 kB
JavaScript
/**
* DevExtreme (cjs/__internal/data/data_controller/data_controller.js)
* Version: 24.2.6
* Build date: Mon Mar 17 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _deferred = require("../../../core/utils/deferred");
var _array_store = _interopRequireDefault(require("../../../common/data/array_store"));
var _data_source = require("../../../common/data/data_source/data_source");
var _utils = require("../../../common/data/data_source/utils");
var _extend = require("../../../core/utils/extend");
var _type = require("../../../core/utils/type");
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
}
}
class DataController {
constructor(dataSourceOptions, _ref) {
let {
key: key
} = _ref;
this._isSharedDataSource = false;
this._keyExpr = key;
this.updateDataSource(dataSourceOptions)
}
_updateDataSource(dataSourceOptions) {
if (!dataSourceOptions) {
return
}
if (dataSourceOptions instanceof _data_source.DataSource) {
this._isSharedDataSource = true;
this._dataSource = dataSourceOptions
} else {
const normalizedDataSourceOptions = (0, _utils.normalizeDataSourceOptions)(dataSourceOptions);
this._dataSource = new _data_source.DataSource((0, _extend.extend)(true, {}, {}, normalizedDataSourceOptions))
}
}
_updateDataSourceByItems(items) {
this._dataSource = new _data_source.DataSource({
store: new _array_store.default({
key: this.key(),
data: items
}),
pageSize: 0
})
}
_disposeDataSource() {
if (this._dataSource) {
if (this._isSharedDataSource) {
this._isSharedDataSource = false
} else {
this._dataSource.dispose()
}
delete this._dataSource
}
}
load() {
return this._dataSource.load()
}
loadSingle(propName, propValue) {
if (!this._dataSource) {
return (new _deferred.Deferred).reject()
}
let pName = propName;
let pValue = propValue;
if (arguments.length < 2) {
pValue = propName;
pName = this.key()
}
return this._dataSource.loadSingle(pName, pValue)
}
loadFromStore(loadOptions) {
return this.store().load(loadOptions)
}
loadNextPage() {
this.pageIndex(1 + this.pageIndex());
return this.load()
}
loadOptions() {
return this._dataSource.loadOptions()
}
userData() {
return this._dataSource._userData
}
cancel(operationId) {
this._dataSource.cancel(operationId)
}
cancelAll() {
this._dataSource.cancelAll()
}
filter(filter) {
return this._dataSource.filter(filter)
}
addSearchFilter(storeLoadOptions) {
this._dataSource._addSearchFilter(storeLoadOptions)
}
group(group) {
return this._dataSource.group(group)
}
paginate() {
return this._dataSource.paginate()
}
pageSize() {
return this._dataSource._pageSize
}
pageIndex(pageIndex) {
if (void 0 === pageIndex) {
return this._dataSource.pageIndex(void 0)
}
return this._dataSource.pageIndex(pageIndex)
}
resetDataSource() {
this._disposeDataSource()
}
resetDataSourcePageIndex() {
if (this.pageIndex()) {
this.pageIndex(0);
this.load()
}
}
updateDataSource(items, key) {
const dataSourceOptions = items ?? this.items();
if (key) {
this._keyExpr = key
}
this._disposeDataSource();
if (Array.isArray(dataSourceOptions)) {
this._updateDataSourceByItems(dataSourceOptions)
} else {
this._updateDataSource(dataSourceOptions)
}
}
totalCount() {
return this._dataSource.totalCount()
}
isLastPage() {
return this._dataSource.isLastPage() || !this._dataSource._pageSize
}
isLoading() {
return this._dataSource.isLoading()
}
isLoaded() {
return this._dataSource.isLoaded()
}
searchValue(value) {
return this._dataSource.searchValue(value)
}
searchOperation(operation) {
return this._dataSource.searchOperation(operation)
}
searchExpr(expr) {
return this._dataSource.searchExpr(expr)
}
select() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key]
}
return this._dataSource.select(args)
}
key() {
var _this$_dataSource;
const storeKey = null === (_this$_dataSource = this._dataSource) || void 0 === _this$_dataSource ? void 0 : _this$_dataSource.key();
return (0, _type.isDefined)(storeKey) && "this" === this._keyExpr ? storeKey : this._keyExpr
}
keyOf(item) {
return this.store().keyOf(item)
}
store() {
return this._dataSource.store()
}
items() {
var _this$_dataSource2;
return null === (_this$_dataSource2 = this._dataSource) || void 0 === _this$_dataSource2 ? void 0 : _this$_dataSource2.items()
}
applyMapFunction(data) {
return this._dataSource._applyMapFunction(data)
}
getDataSource() {
return this._dataSource ?? null
}
reload() {
return this._dataSource.reload()
}
on(event, handler) {
this._dataSource.on(event, handler)
}
off(event, handler) {
this._dataSource.off(event, handler)
}
}
var _default = exports.default = DataController;