@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
545 lines (444 loc) • 18.9 kB
JavaScript
module.exports =
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(4);
module.exports = __webpack_require__(4);
/***/ }),
/* 1 */,
/* 2 */,
/* 3 */
/***/ (function(module, exports) {
module.exports = function() { throw new Error("define cannot be used indirect"); };
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(5), __webpack_require__(6), __webpack_require__(7), __webpack_require__(8) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
})(function(){
(function ($, undefined) {
var kendo = window.kendo,
escapeQuoteRegExp = /'/ig,
extend = $.extend,
isArray = $.isArray,
isPlainObject = $.isPlainObject,
POINT = ".";
function parameterMap(options, operation, serializationOptions) {
var result = {};
if (options.sort) {
result[this.options.prefix + "sort"] = $.map(options.sort, function(sort) {
return sort.field + "-" + sort.dir;
}).join("~");
delete options.sort;
} else {
result[this.options.prefix + "sort"] = "";
}
if (options.page) {
result[this.options.prefix + "page"] = options.page;
delete options.page;
}
if (options.pageSize) {
result[this.options.prefix + "pageSize"] = options.pageSize;
delete options.pageSize;
}
if (options.group) {
result[this.options.prefix + "group"] = $.map(options.group, function(group) {
return group.field + "-" + group.dir;
}).join("~");
delete options.group;
} else {
result[this.options.prefix + "group"] = "";
}
if (options.aggregate) {
result[this.options.prefix + "aggregate"] = $.map(options.aggregate, function(aggregate) {
return aggregate.field + "-" + aggregate.aggregate;
}).join("~");
delete options.aggregate;
}
if (options.filter) {
result[this.options.prefix + "filter"] = serializeFilter(options.filter, serializationOptions.encode);
delete options.filter;
} else {
result[this.options.prefix + "filter"] = "";
delete options.filter;
}
delete options.take;
delete options.skip;
var serializer = new Serializer(serializationOptions);
serializer.serialize(result, options, "");
return result;
}
var Serializer = function(options) {
options = options || {};
this.culture = options.culture || kendo.culture();
this.stringifyDates = options.stringifyDates;
this.decimalSeparator = this.culture.numberFormat[POINT];
};
Serializer.prototype = Serializer.fn = {
serialize: function(result, data, prefix) {
var valuePrefix;
for (var key in data) {
valuePrefix = prefix ? prefix + "." + key : key;
this.serializeField(result, data[key], data, key, valuePrefix);
}
},
serializeField: function (result, value, data, key, prefix) {
if (isArray(value)) {
this.serializeArray(result, value, prefix);
} else if (isPlainObject(value)) {
this.serialize(result, value, prefix);
} else {
if (result[prefix] === undefined) {
result[prefix] = data[key] = this.serializeValue(value);
}
}
},
serializeArray: function (result, data, prefix) {
var value, key, valuePrefix;
for (var sourceIndex = 0, destinationIndex = 0; sourceIndex < data.length; sourceIndex++) {
value = data[sourceIndex];
key = "[" + destinationIndex + "]";
valuePrefix = prefix + key;
this.serializeField(result, value, data, key, valuePrefix);
destinationIndex++;
}
},
serializeValue: function (value) {
if (value instanceof Date) {
if (this.stringifyDates) {
value = kendo.stringify(value).replace(/"/g, "");
} else {
value = kendo.toString(value, "G", this.culture.name);
}
} else if (typeof value === "number") {
value = value.toString().replace(POINT, this.decimalSeparator);
}
return value;
}
};
function serializeFilter(filter, encode) {
if (filter.filters) {
return $.map(filter.filters, function(f) {
var hasChildren = f.filters && f.filters.length > 1,
result = serializeFilter(f, encode);
if (result && hasChildren) {
result = "(" + result + ")";
}
return result;
}).join("~" + filter.logic + "~");
}
if (filter.field) {
return filter.field + "~" + filter.operator + "~" + encodeFilterValue(filter.value, encode);
} else {
return undefined;
}
}
function encodeFilterValue(value, encode) {
if (typeof value === "string") {
if (value.indexOf('Date(') > -1) {
value = new Date(parseInt(value.replace(/^\/Date\((.*?)\)\/$/, '$1'), 10));
} else {
value = value.replace(escapeQuoteRegExp, "''");
if (encode) {
value = encodeURIComponent(value);
}
return "'" + value + "'";
}
}
if (value && value.getTime) {
return "datetime'" + kendo.format("{0:yyyy-MM-ddTHH-mm-ss}", value) + "'";
}
return value;
}
function valueOrDefault(value, defaultValue) {
return typeof value !== "undefined" ? value : defaultValue;
}
function translateGroup(group) {
var hasSubgroups = group.HasSubgroups || group.hasSubgroups || false;
var items = group.Items || group.items;
return {
value: valueOrDefault(group.Key, valueOrDefault(group.key, group.value)),
field: group.Member || group.member || group.field,
hasSubgroups: hasSubgroups,
aggregates: translateAggregate(group.Aggregates || group.aggregates),
items: hasSubgroups ? $.map(items, translateGroup) : items
};
}
function translateAggregateResults(aggregate) {
var obj = {};
obj[aggregate.AggregateMethodName.toLowerCase()] = aggregate.Value;
return obj;
}
function translateAggregate(aggregates) {
var functionResult = {},
key,
functionName,
aggregate;
for (key in aggregates) {
functionResult = {};
aggregate = aggregates[key];
for (functionName in aggregate) {
functionResult[functionName.toLowerCase()] = aggregate[functionName];
}
aggregates[key] = functionResult;
}
return aggregates;
}
function convertAggregates(aggregates) {
var idx, length, aggregate;
var result = {};
for (idx = 0, length = aggregates.length; idx < length; idx++) {
aggregate = aggregates[idx];
result[aggregate.Member] = extend(true, result[aggregate.Member], translateAggregateResults(aggregate));
}
return result;
}
extend(true, kendo.data, {
schemas: {
"aspnetmvc-ajax": {
groups: function(data) {
return $.map(this._dataAccessFunction(data), translateGroup);
},
aggregates: function(data) {
data = data.d || data;
var aggregates = data.AggregateResults || [];
if (!$.isArray(aggregates)) {
for (var key in aggregates) {
aggregates[key] = convertAggregates(aggregates[key]);
}
return aggregates;
}
return convertAggregates(aggregates);
}
}
}
});
extend(true, kendo.data, {
transports: {
"aspnetmvc-ajax": kendo.data.RemoteTransport.extend({
init: function(options) {
var that = this,
stringifyDates = (options || {}).stringifyDates;
kendo.data.RemoteTransport.fn.init.call(this,
extend(true, {}, this.options, options, {
parameterMap: function(options, operation) {
return parameterMap.call(that, options, operation, {
encode: false,
stringifyDates: stringifyDates
});
}
})
);
},
read: function(options) {
var data = this.options.data,
url = this.options.read.url;
if (isPlainObject(data)) {
if (url) {
this.options.data = null;
}
if (!data.Data.length && url) {
kendo.data.RemoteTransport.fn.read.call(this, options);
} else {
options.success(data);
}
} else {
kendo.data.RemoteTransport.fn.read.call(this, options);
}
},
options: {
read: {
type: "POST"
},
update: {
type: "POST"
},
create: {
type: "POST"
},
destroy: {
type: "POST"
},
parameterMap: parameterMap,
prefix: ""
}
})
}
});
extend(true, kendo.data, {
schemas: {
"webapi": kendo.data.schemas["aspnetmvc-ajax"]
}
});
extend(true, kendo.data, {
transports: {
"webapi": kendo.data.RemoteTransport.extend({
init: function(options) {
var that = this;
var stringifyDates = (options || {}).stringifyDates;
if (options.update) {
var updateUrl = typeof options.update === "string" ? options.update : options.update.url;
options.update = extend(options.update, {url: function (data) {
return kendo.format(updateUrl, data[options.idField]);
}});
}
if (options.destroy) {
var destroyUrl = typeof options.destroy === "string" ? options.destroy : options.destroy.url;
options.destroy = extend(options.destroy, {url: function (data) {
return kendo.format(destroyUrl, data[options.idField]);
}});
}
if(options.create && typeof options.create === "string") {
options.create = {
url: options.create
};
}
kendo.data.RemoteTransport.fn.init.call(this,
extend(true, {}, this.options, options, {
parameterMap: function(options, operation) {
return parameterMap.call(that, options, operation, {
encode: false,
stringifyDates: stringifyDates,
culture: kendo.cultures["en-US"]
});
}
})
);
},
read: function(options) {
var data = this.options.data,
url = this.options.read.url;
if (isPlainObject(data)) {
if (url) {
this.options.data = null;
}
if (!data.Data.length && url) {
kendo.data.RemoteTransport.fn.read.call(this, options);
} else {
options.success(data);
}
} else {
kendo.data.RemoteTransport.fn.read.call(this, options);
}
},
options: {
read: {
type: "GET"
},
update: {
type: "PUT"
},
create: {
type: "POST"
},
destroy: {
type: "DELETE"
},
parameterMap: parameterMap,
prefix: ""
}
})
}
});
extend(true, kendo.data, {
transports: {
"aspnetmvc-server": kendo.data.RemoteTransport.extend({
init: function(options) {
var that = this;
kendo.data.RemoteTransport.fn.init.call(this,
extend(options, {
parameterMap: function(options, operation) {
return parameterMap.call(that, options, operation, {
encode: true
});
}
}
));
},
read: function(options) {
var url,
prefix = this.options.prefix,
params = [prefix + "sort",
prefix + "page",
prefix + "pageSize",
prefix + "group",
prefix + "aggregate",
prefix + "filter"],
regExp = new RegExp("(" + params.join('|') + ")=[^&]*&?", "g"),
query;
query = location.search.replace(regExp, "").replace("?", "");
if (query.length && !(/&$/.test(query))) {
query += "&";
}
options = this.setup(options, "read");
url = options.url;
if (url.indexOf("?") >= 0) {
query = query.replace(/(.*?=.*?)&/g, function(match){
if(url.indexOf(match.substr(0, match.indexOf("="))) >= 0){
return "";
}
return match;
});
url += "&" + query;
} else {
url += "?" + query;
}
url += $.map(options.data, function(value, key) {
return key + "=" + value;
}).join("&");
location.href = url;
}
})
}
});
})(window.kendo.jQuery);
}, __webpack_require__(3));
/***/ }),
/* 5 */
/***/ (function(module, exports) {
module.exports = require("../kendo.data");
/***/ }),
/* 6 */
/***/ (function(module, exports) {
module.exports = require("../kendo.combobox");
/***/ }),
/* 7 */
/***/ (function(module, exports) {
module.exports = require("../kendo.multiselect");
/***/ }),
/* 8 */
/***/ (function(module, exports) {
module.exports = require("../kendo.validator");
/***/ })
/******/ ]);