devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
224 lines (217 loc) • 7.6 kB
JavaScript
/**
* DevExtreme (data/data_source/utils.js)
* Version: 20.1.7
* Build date: Tue Aug 25 2020
*
* Copyright (c) 2012 - 2020 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.normalizeDataSourceOptions = exports.normalizeLoadResult = exports.mapDataRespectingGrouping = exports.normalizeStoreLoadOptionAccessorArguments = exports.isPending = exports.CANCELED_TOKEN = void 0;
var _ajax = require("../../core/utils/ajax");
var _abstract_store = require("../abstract_store");
var _abstract_store2 = _interopRequireDefault(_abstract_store);
var _array_store = require("../array_store");
var _array_store2 = _interopRequireDefault(_array_store);
var _iterator = require("../../core/utils/iterator");
var _custom_store = require("../custom_store");
var _custom_store2 = _interopRequireDefault(_custom_store);
var _extend = require("../../core/utils/extend");
var _type = require("../../core/utils/type");
var _utils = require("../utils");
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
}
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function(sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable
})
}
keys.push.apply(keys, symbols)
}
return keys
}
function _objectSpread(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function(key) {
_defineProperty(target, key, source[key])
})
} else {
if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))
} else {
ownKeys(Object(source)).forEach(function(key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))
})
}
}
}
return target
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
})
} else {
obj[key] = value
}
return obj
}
function _objectWithoutProperties(source, excluded) {
if (null == source) {
return {}
}
var target = _objectWithoutPropertiesLoose(source, excluded);
var key, i;
if (Object.getOwnPropertySymbols) {
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
for (i = 0; i < sourceSymbolKeys.length; i++) {
key = sourceSymbolKeys[i];
if (excluded.indexOf(key) >= 0) {
continue
}
if (!Object.prototype.propertyIsEnumerable.call(source, key)) {
continue
}
target[key] = source[key]
}
}
return target
}
function _objectWithoutPropertiesLoose(source, excluded) {
if (null == source) {
return {}
}
var target = {};
var sourceKeys = Object.keys(source);
var key, i;
for (i = 0; i < sourceKeys.length; i++) {
key = sourceKeys[i];
if (excluded.indexOf(key) >= 0) {
continue
}
target[key] = source[key]
}
return target
}
var CANCELED_TOKEN = exports.CANCELED_TOKEN = "canceled";
var isPending = exports.isPending = function(deferred) {
return "pending" === deferred.state()
};
var normalizeStoreLoadOptionAccessorArguments = exports.normalizeStoreLoadOptionAccessorArguments = function(originalArguments) {
switch (originalArguments.length) {
case 0:
return;
case 1:
return originalArguments[0]
}
return [].slice.call(originalArguments)
};
var mapGroup = function(group, level, mapper) {
return (0, _iterator.map)(group, function(item) {
var items = item.items,
restItem = _objectWithoutProperties(item, ["items"]);
return _objectSpread(_objectSpread({}, restItem), {}, {
items: mapRecursive(items, level - 1, mapper)
})
})
};
var mapRecursive = function(items, level, mapper) {
if (!Array.isArray(items)) {
return items
}
return level ? mapGroup(items, level, mapper) : (0, _iterator.map)(items, mapper)
};
var mapDataRespectingGrouping = exports.mapDataRespectingGrouping = function(items, mapper, groupInfo) {
var level = groupInfo ? (0, _utils.normalizeSortingInfo)(groupInfo).length : 0;
return mapRecursive(items, level, mapper)
};
var normalizeLoadResult = exports.normalizeLoadResult = function(data, extra) {
var _data;
if (null === (_data = data) || void 0 === _data ? void 0 : _data.data) {
extra = data;
data = data.data
}
if (!Array.isArray(data)) {
data = [data]
}
return {
data: data,
extra: extra
}
};
var createCustomStoreFromLoadFunc = function(options) {
var storeConfig = {};
(0, _iterator.each)(["useDefaultSearch", "key", "load", "loadMode", "cacheRawData", "byKey", "lookup", "totalCount", "insert", "update", "remove"], function() {
storeConfig[this] = options[this];
delete options[this]
});
return new _custom_store2.default(storeConfig)
};
var createStoreFromConfig = function(storeConfig) {
var alias = storeConfig.type;
delete storeConfig.type;
return _abstract_store2.default.create(alias, storeConfig)
};
var createCustomStoreFromUrl = function(url, normalizationOptions) {
return new _custom_store2.default({
load: function() {
return (0, _ajax.sendRequest)({
url: url,
dataType: "json"
})
},
loadMode: null === normalizationOptions || void 0 === normalizationOptions ? void 0 : normalizationOptions.fromUrlLoadMode
})
};
var normalizeDataSourceOptions = exports.normalizeDataSourceOptions = function(options, normalizationOptions) {
var store;
if ("string" === typeof options) {
options = {
paginate: false,
store: createCustomStoreFromUrl(options, normalizationOptions)
}
}
if (void 0 === options) {
options = []
}
if (Array.isArray(options) || options instanceof _abstract_store2.default) {
options = {
store: options
}
} else {
options = (0, _extend.extend)({}, options)
}
if (void 0 === options.store) {
options.store = []
}
store = options.store;
if ("load" in options) {
store = createCustomStoreFromLoadFunc(options)
} else {
if (Array.isArray(store)) {
store = new _array_store2.default(store)
} else {
if ((0, _type.isPlainObject)(store)) {
store = createStoreFromConfig((0, _extend.extend)({}, store))
}
}
}
options.store = store;
return options
};