@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
342 lines (267 loc) • 11.3 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__) {
module.exports = __webpack_require__(1053);
/***/ }),
/***/ 3:
/***/ (function(module, exports) {
module.exports = function() { throw new Error("define cannot be used indirect"); };
/***/ }),
/***/ 1006:
/***/ (function(module, exports) {
module.exports = require("./kendo.core");
/***/ }),
/***/ 1053:
/***/ (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__(1006) ], __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(){
var __meta__ = { // jshint ignore:line
id: "data.xml",
name: "XML",
category: "framework",
depends: [ "core" ],
hidden: true
};
/*jshint eqnull: true, boss: true */
(function($, undefined) {
var kendo = window.kendo,
isArray = $.isArray,
isPlainObject = $.isPlainObject,
map = $.map,
each = $.each,
extend = $.extend,
getter = kendo.getter,
Class = kendo.Class;
var XmlDataReader = Class.extend({
init: function(options) {
var that = this,
total = options.total,
model = options.model,
parse = options.parse,
errors = options.errors,
serialize = options.serialize,
data = options.data;
if (model) {
if (isPlainObject(model)) {
var base = options.modelBase || kendo.data.Model;
if (model.fields) {
each(model.fields, function(field, value) {
if (isPlainObject(value) && value.field) {
if (!$.isFunction(value.field)) {
value = extend(value, { field: that.getter(value.field) });
}
} else {
value = { field: that.getter(value) };
}
model.fields[field] = value;
});
}
var id = model.id;
if (id) {
var idField = {};
idField[that.xpathToMember(id, true)] = { field : that.getter(id) };
model.fields = extend(idField, model.fields);
model.id = that.xpathToMember(id);
}
model = base.define(model);
}
that.model = model;
}
if (total) {
if (typeof total == "string") {
total = that.getter(total);
that.total = function(data) {
return parseInt(total(data), 10);
};
} else if (typeof total == "function"){
that.total = total;
}
}
if (errors) {
if (typeof errors == "string") {
errors = that.getter(errors);
that.errors = function(data) {
return errors(data) || null;
};
} else if (typeof errors == "function"){
that.errors = errors;
}
}
if (data) {
if (typeof data == "string") {
data = that.xpathToMember(data);
that.data = function(value) {
var result = that.evaluate(value, data),
modelInstance;
result = isArray(result) ? result : [result];
if (that.model && model.fields) {
modelInstance = new that.model();
return map(result, function(value) {
if (value) {
var record = {}, field;
for (field in model.fields) {
record[field] = modelInstance._parse(field, model.fields[field].field(value));
}
return record;
}
});
}
return result;
};
} else if (typeof data == "function") {
that.data = data;
}
}
if (typeof parse == "function") {
var xmlParse = that.parse;
that.parse = function(data) {
var xml = parse.call(that, data);
return xmlParse.call(that, xml);
};
}
if (typeof serialize == "function") {
that.serialize = serialize;
}
},
total: function(result) {
return this.data(result).length;
},
errors: function(data) {
return data ? data.errors : null;
},
serialize: function(data) {
return data;
},
parseDOM: function(element) {
var result = {},
parsedNode,
node,
nodeType,
nodeName,
member,
attribute,
attributes = element.attributes,
attributeCount = attributes.length,
idx;
for (idx = 0; idx < attributeCount; idx++) {
attribute = attributes[idx];
result["@" + attribute.nodeName] = attribute.nodeValue;
}
for (node = element.firstChild; node; node = node.nextSibling) {
nodeType = node.nodeType;
if (nodeType === 3 || nodeType === 4) {
// text nodes or CDATA are stored as #text field
result["#text"] = node.nodeValue;
} else if (nodeType === 1) {
// elements are stored as fields
parsedNode = this.parseDOM(node);
nodeName = node.nodeName;
member = result[nodeName];
if (isArray(member)) {
// elements of same nodeName are stored as array
member.push(parsedNode);
} else if (member !== undefined) {
member = [member, parsedNode];
} else {
member = parsedNode;
}
result[nodeName] = member;
}
}
return result;
},
evaluate: function(value, expression) {
var members = expression.split("."),
member,
result,
length,
intermediateResult,
idx;
while (member = members.shift()) {
value = value[member];
if (isArray(value)) {
result = [];
expression = members.join(".");
for (idx = 0, length = value.length; idx < length; idx++) {
intermediateResult = this.evaluate(value[idx], expression);
intermediateResult = isArray(intermediateResult) ? intermediateResult : [intermediateResult];
result.push.apply(result, intermediateResult);
}
return result;
}
}
return value;
},
parse: function(xml) {
var documentElement,
tree,
result = {};
documentElement = xml.documentElement || $.parseXML(xml).documentElement;
tree = this.parseDOM(documentElement);
result[documentElement.nodeName] = tree;
return result;
},
xpathToMember: function(member, raw) {
if (!member) {
return "";
}
member = member.replace(/^\//, "") // remove the first "/"
.replace(/\//g, "."); // replace all "/" with "."
if (member.indexOf("@") >= 0) {
// replace @attribute with '["@attribute"]'
return member.replace(/\.?(@.*)/, raw? '$1':'["$1"]');
}
if (member.indexOf("text()") >= 0) {
// replace ".text()" with '["#text"]'
return member.replace(/(\.?text\(\))/, raw? '#text':'["#text"]');
}
return member;
},
getter: function(member) {
return getter(this.xpathToMember(member), true);
}
});
$.extend(true, kendo.data, {
XmlDataReader: XmlDataReader,
readers: {
xml: XmlDataReader
}
});
})(window.kendo.jQuery);
return window.kendo;
}, __webpack_require__(3));
/***/ })
/******/ });