UNPKG

jaydata

Version:

Cross-platform HTML5 data-management, JavaScript Language Query (JSLQ) support for OData, SQLite, WebSQL, IndexedDB, YQL and Facebook (packaged for Node.JS)

16 lines (15 loc) 12.4 kB
// JayData 1.5.10 // Dual licensed under MIT and GPL v2 // Copyright JayStack Technologies (http://jaydata.org/licensing) // // JayData is a standards-based, cross-platform Javascript library and a set of // practices to access and manipulate data from various online and offline sources. // // Credits: // Hajnalka Battancs, Dániel József, János Roden, László Horváth, Péter Nochta // Péter Zentai, Róbert Bónay, Szabolcs Czinege, Viktor Borza, Viktor Lázár, // Zoltán Gyebrovszki, Gábor Dolla // // More info: http://jaydata.org !function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define("jaydata/modules/kendo",["jaydata/core"],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.$data=e()}}(function(){return function e(t,n,a){function r(i,d){if(!n[i]){if(!t[i]){var s="function"==typeof require&&require;if(!d&&s)return s(i,!0);if(o)return o(i,!0);var l=new Error("Cannot find module '"+i+"'");throw l.code="MODULE_NOT_FOUND",l}var u=n[i]={exports:{}};t[i][0].call(u.exports,function(e){var n=t[i][1][e];return r(n?n:e)},u,u.exports,e,t,n,a)}return n[i].exports}for(var o="function"==typeof require&&require,i=0;i<a.length;i++)r(a[i]);return r}({1:[function(e,t,n){(function(a){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var o=e("jaydata/core"),i=r(o),d="undefined"!=typeof window?window.jQuery:"undefined"!=typeof a?a.jQuery:null,s=r(d),l="undefined"!=typeof window?window.kendo:"undefined"!=typeof a?a.kendo:null,u=r(l);!function(e,t){var n=e.Entity.inheritedTypeProcessor;e.kendo={},e.kendo.BaseModelType=u["default"].data.Model.define({init:function(e){u["default"].data.Model.fn.init.call(this,e)}}),e.kendo.attachMode=!0,e.EntityAttachMode&&(e.kendo.attachMode=e.EntityAttachMode.KeepChanges);var a={"$data.Blob":"string","$data.String":"string","$data.Boolean":"boolean","$data.Integer":"number","$data.Number":"number","$data.Date":"date","$data.DateTimeOffset":"date","$data.Time":"string","$data.Day":"string","$data.Duration":"string","$data.Byte":"number","$data.SByte":"number","$data.Int16":"number","$data.Int32":"number","$data.Int64":"number","$data.Decimal":"string","$data.Float":"number"};e.Entity.inheritedTypeProcessor=function(t){function r(e,t){return a[e]||"object"}function o(n){function a(e,t){return"$data.Boolean"===e?!0:t.required!==!0}function o(e,t){return"$data.Boolean"===e?!1:t.required||"nullable"in t?!t.nullable:!1}function i(e,t){}var d=t.memberDefinitions,s={};d.getPublicMappedProperties().forEach(function(t){var n=e.Container.resolveName(t.type);s[t.name]={type:r(n,t),nullable:a(n,t),defaultValue:t.defaultValue,editable:!t.computed,validation:{required:o(n,t)}}});var l={fields:s,init:function(a){var r=(n&&n.owningContextType||void 0,[]);n&&n.owningContextType&&(r=n.owningContextType.memberDefinitions.getPublicMappedProperties().filter(function(t){return e.Container.resolveType(t.type)===e.EntitySet}).map(function(t){return e.Container.resolveType(t.elementType)}));var o={entityBuilder:function(t,n){n.forEach(function(n){if(n.key!==!0&&(n.required===!0||n.nullable===!1)){var d=e.Container.resolveType(n.type);if(d.isAssignableTo&&d.isAssignableTo(e.Entity)&&-1===r.indexOf(d)){var s;a&&(s=a[n.name]),t[n.name]=new d(s,o)}else i(t,n)}})}},d=a instanceof t?a:new t(a,o),s=d.initData,l={};for(var f in s){var c=t.getMemberDefinition(f),p=s[f];if(p instanceof e.Entity){var y=p.asKendoObservable();l[f]=y}else if(c&&e.Container.resolveType(c.type)===Array){var v=e.Container.resolveType(c.elementType),h=v;v.asKendoModel&&(h=v.asKendoModel());var m=new u["default"].data.ObservableArray(s[f],h);l[f]=m,l[f].bind("change",function(e){d.changeFromKendo=!0,this.parent().dirty=!0,d[c.name]=this.toJSON(),delete d.changeFromKendo})}else c&&e.Container.resolveType(c.type)===e.Blob?l[f]=e.Blob.toBase64(p):l[f]=p}for(var b=t.memberDefinitions.getPublicMappedProperties().filter(function(t){return e.Container.resolveType(t.dataType)===Array&&!e.Container.resolveType(t.elementType).asKendoModel}),f=0;f<b.length;f++){var g=b[f];null!==s[g.name]&&void 0!==s[g.name]||(l[g.name]=new u["default"].data.ObservableArray([],e.Container.resolveType(g.elementType)),l[g.name].bind("change",function(e){d.changeFromKendo=!0,this.parent().dirty=!0,d[g.name]=this.toJSON(),delete d.changeFromKendo}))}var T=this;this.innerInstance=function(){return d},e.kendo.BaseModelType.fn.init.call(this,l),d.propertyChanged.attach(function(t,n){var a=this,r=n.newValue,o=d.getType().getMemberDefinition(n.propertyName);if(a.changeFromKendo){if(e.Container.resolveType(o.type)===e.Blob){var i=e.Blob.toString(r);r=e.Container.convertTo(atob(i),e.Blob),d.changeFromJay=!0,d.initData[o.name]=r,delete d.changeFromJay}}else r=r&&r.asKendoObservable?r.asKendoObservable():r,d.changeFromJay=!0,e.Container.resolveType(o.type)===e.Blob&&r&&(r=e.Blob.toBase64(r)),T.set(n.propertyName,r),o.computed&&T[n.propertyName]!==r&&(T[n.propertyName]=r),delete d.changeFromJay}),this.bind("set",function(t){var a=t.field,r=a.split(".");if(d.changeFromKendo=!0,1==r.length){var o=t.value;d.changeFromJay||(o=o&&o.innerInstance?o.innerInstance():o,d[a]=o,n&&n.autoSave&&d.save())}else{var i=d[r[0]];i instanceof e.Entity&&(d[r[0]]=i)}delete d.changeFromKendo}),n&&n.newInstanceCallback&&n.newInstanceCallback(d)},save:function(){return this.innerInstance().save()},remove:function(){return this.innerInstance().remove()}},f=d.getKeyProperties();switch(f.length){case 0:break;case 1:l.id=f[0].name;break;default:console.warn("entity with multiple keys not supported")}e.Trace.log("md",l);var c=u["default"].data.Model.define(e.kendo.BaseModelType,l);return c}function i(e){var n=e||t;return n.kendoModelType||(n.kendoModelType=o(e))}function d(e,n){var a=t.asKendoModel(n);return new a(e)}function s(e){return e||""}function l(e,t){if(t.provider){var n=s(t.databaseName)+s(t.tableName)+s(t.url)+s(t.apiUrl)+s(t.oDataServiceHost),a={provider:t.provider,databaseName:t.databaseName,tableName:t.tableName,dataSource:t.url,apiUrl:t.apiUrl,oDataServiceHost:t.oDataServiceHost};return Object.keys(a).forEach(function(e){delete t[e]}),e.setStore(n,a),n}}t.memberDefinitions;t.asKendoModel=i,t.prototype.asKendoObservable=function(e){var t=d(this,e);return t},t.asKendoDataSource=function(n,a,r){n=n||{};var o=a||{},i=l(t,n)||r,d=e.ItemStore._getStoreAlias(t,i),s=e.ItemStore._getContextPromise(d,t),u=s.getEntitySetFromElementType(t);return u.asKendoDataSource(n,o)},n&&n(t)},e.Queryable.addMember("asKendoColumns",function(n){function r(e){e=Array.isArray(e)?e:[e];var t=this.concat(e);return d(t)}function o(e){e=Array.isArray(e)?e:[e];var t=e.concat(this);return d(t)}function i(e,n){var a=this.filter(function(t){return t.field==e})[0];return t.extend(a,n),this}function d(e){return e.prepend=o,e.append=r,e.setColumn=i,e}var s=[];n=n||{};var l=n.$showComplexFields===!0;return delete n.$showComplexFields,this.defaultType.memberDefinitions.getPublicMappedProperties().forEach(function(r){if(l||a[e.Container.resolveName(r.type)]){var o=n[r.name]||{},i={field:r.name};t.extend(i,o),s.push(i)}}),d(s)}),e.EntityContext.addProperty("EntitySetNames",function(){var e=this;return Object.keys(e._entitySetReferences).map(function(t){return e._entitySetReferences[t].tableName})}),e.Queryable.addMember("asKendoModel",function(e){return e.owningContextType=e.owningContextType||this.entityContext.getType(),this.defaultType.asKendoModel(e)}),e.Queryable.addMember("asKendoRemoteTransportClass",function(t){var n=this,a=n.entityContext,r=u["default"].data.RemoteTransport.extend({init:function(){this.items=[]},read:function(t){var a=n;a.entityContext.onReady().then(function(){var n=a,r=(a.entityContext.storageProvider,a.entityContext.storageProvider.supportedSetOperations.withInlineCount),o=!r&&a.entityContext.storageProvider.supportedSetOperations.length;if(r&&(n=n.withInlineCount()),t.data.filter){var i="",d={};t.data.filter.filters.forEach(function(n,a){switch(a>0&&(i+="or"==t.data.filter.logic?" || ":" && "),n.operator){case"eq":i+="it."+n.field,i+=" == this."+n.field;break;case"neq":i+="it."+n.field,i+=" != this."+n.field;break;case"startswith":i+="it."+n.field,i+=".startsWith(this."+n.field+")";break;case"contains":i+="it."+n.field,i+=".contains(this."+n.field+")";break;case"doesnotcontain":i+="!",i+="it."+n.field,i+=".contains(this."+n.field+")";break;case"endswith":i+="it."+n.field,i+=".endsWith(this."+n.field+")";break;case"gte":i+="it."+n.field,i+=" >= this."+n.field;break;case"gt":i+="it."+n.field,i+=" > this."+n.field;break;case"lte":i+="it."+n.field,i+=" <= this."+n.field;break;case"lt":i+="it."+n.field,i+=" < this."+n.field;break;default:e.Trace.log("unknown operator",n.operator)}d[n.field]=n.value}),n=n.filter(i,d)}var l=n;t.data.sort&&t.data.sort.forEach(function(e){n=n.order(("desc"==e.dir?"-":"")+e.field)}),t.data.skip&&(n=n.skip(t.data.skip)),t.data.take&&(n=n.take(t.data.take));var u=[];u.push(n.toArray()),o?u.push(l.length()):r||u.push(l.toArray()),e.Trace.log(u),s["default"].when.apply(this,u).then(function(n,a){var i=n.map(function(t){var n=(t instanceof e.Entity?t.initData:t,t.asKendoObservable());return n}),d={data:i,total:r?n.totalCount:o?a:a.length};e.Trace.log(d),t.success(d)}).fail(function(){console.log("error in create"),t.error({},arguments)})})},create:function(e,t){var r=n;r.entityContext.onReady().then(function(){if(t.length>1){var n=[];t.forEach(function(e){n.push(e.innerInstance())}),a.addMany(n),a.saveChanges().then(function(){var t=[];n.forEach(function(e){t.push(e.initData)}),e.success()}).fail(function(){console.log("error in create"),e.error({},arguments),a.stateManager.reset()})}else t[0].innerInstance().save(a.storeToken).then(function(){e.success()}).fail(function(){console.log("error in create"),e.error({},arguments)})})},update:function(t,r){var o=n;o.entityContext.onReady().then(function(){if(r.length>1){var n=r.map(function(e){return e.innerInstance()});n.forEach(function(t){a.attach(t,e.kendo.attachMode)}),a.saveChanges().then(function(){t.success()}).fail(function(){a.stateManager.reset(),t.error({},arguments)})}else r[0].innerInstance().save(void 0,void 0,e.kendo.attachMode).then(function(e){t.success()}).fail(function(){t.error({},arguments)})})},destroy:function(e,t){var r=n;r.entityContext.onReady().then(function(){t.length>1?(t.forEach(function(e){a.remove(e.innerInstance())}),a.saveChanges().then(function(){e.success({data:e.data})}).fail(function(){a.stateManager.reset(),e.error({},"error",e.data)})):t[0].innerInstance().remove().then(function(){e.success({data:e.data})}).fail(function(){a.stateManager.reset(),e.error({},"error",e.data)})})},setup:function(){e.Trace.log("setup"),e.Trace.log(arguments)}});return r});var r=u["default"].data.DataSource.extend({init:function(){u["default"].data.DataSource.fn.init.apply(this,arguments)},createItem:function(e){var t=this.options.schema.model;return new t(e)},_promise:function(e,n,a){var r=this,o=t.extend,i=r.transport;return t.Deferred(function(t){i[a].call(i,o({success:function(e){t.resolve({response:e,models:n,type:a})},error:function(e,n,a){t.reject(e),r.error(e,n,a)}},e),n)}).promise()}});e.kendo=e.kendo||{},e.kendo.defaultPageSize=25,e.Queryable.addMember("asKendoDataSource",function(t,n){var a=this;n=n||{};var o=a.asKendoModel(n);t=t||{},t.serverPaging=void 0===t.serverPaging?!0:t.serverPaging,t.serverFiltering=void 0===t.serverFiltering?!0:t.serverFiltering,t.serverSorting=void 0===t.serverSorting?!0:t.serverSorting,t.pageSize=void 0===t.pageSize?e.kendo.defaultPageSize:t.pageSize;var i=a.asKendoRemoteTransportClass(o);return t.transport=new i,t.schema={model:o,data:"data",total:"total"},new r(t)}),u["default"].data.binders.submit=u["default"].data.Binder.extend({init:function(e,n,a){u["default"].data.Binder.fn.init.call(this,e,n,a),t(e).bind("submit",function(){var e=n.submit.source,t=e[n.submit.path];return"function"==typeof t?(t.apply(e,arguments),!1):void 0})},refresh:function(){}})}(i["default"],s["default"]),n["default"]=i["default"],t.exports=n["default"]}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"jaydata/core":"jaydata/core"}]},{},[1])(1)}); //# sourceMappingURL=kendo.min.js.map