Files
jube-fork/Jube.App/wwwroot/kendo/examples/content/shared/js/kendo.data.kinvey.min.js
2022-11-04 13:24:24 +02:00

15 lines
3.5 KiB
JavaScript
Executable File

/**
* kinvey-kendo-data-source - Kinvey extension of the Kendo UI for jQuery DataSource component.
* @version v0.0.1
* @author Kinvey, Inc.
* @link https://www.kinvey.com
* @license Apache-2.0
*/
(function(){function q(a){var b={};if(a){if(a.skip||0===a.skip)b.skip=a.skip,delete a.skip;a.take&&(b.limit=a.take,delete a.take,delete a.pageSize,delete a.page);if(a.sort){var h=a.sort,g={};l(h)||(h=[h]);r(h,function(a,b){g[b.field]="asc"===b.dir?1:-1});b.sort=g;delete a.sort}if(a.filter){var k=a.filter,m={};h=k.logic;m=k.filters;k=[];var f,n=m.length;for(f=0;f<n;f++){var c=m[f];var p=c.operator;var e=c.field;c=c.value;var d={};switch(p){case "eq":d[e]=c;break;case "neq":d[e]={$ne:c};break;case "isnull":d[e]=
{$eq:null};break;case "isnotnull":d[e]={$ne:null};break;case "lt":d[e]={$lt:c};break;case "gt":d[e]={$gt:c};break;case "lte":d[e]={$lte:c};break;case "gte":d[e]={$gte:c};break;case "startswith":d[e]={$regex:"^"+c};break;case "endswith":d[e]={$regex:c+"$"};break;case "isin":l(c)||(c=[c]);d[e]={$in:c};break;case "isnotin":l(c)||(c=[c]);d[e]={$nin:c};break;default:throw Error("Unsupported filtering operator: "+p);}k.push(d)}m={};m["and"===h?"$and":"$or"]=k;delete a.filter;b.filter=m}}return b}if(("undefined"===
typeof window||"undefined"!==typeof window.jQuery)&&"undefined"!==typeof window.kendo&&window.kendo.data){var f=window.jQuery,g=window.kendo,t=f.extend,r=f.each,l=Array.isArray,n=null;f=g.data.RemoteTransport.extend({init:function(a){if(!Kinvey)throw Error("An instance of the Kinvey JavaScript SDK is not available. Initialize the Kinvey global object.");if(!a.typeName&&!a.dataStore)throw Error("A collection name or a data store instance must be provided to the data source options.");this.dataStore=
a.dataStore?a.dataStore:Kinvey.DataStore.collection(a.typeName,Kinvey.DataStoreType.Network);g.data.RemoteTransport.fn.init.call(this,a)},read:function(a){var b=this.options.read,h=this;if(b&&b.url)return g.data.RemoteTransport.fn.read.call(this,a);b=q(a.data);var f=new Kinvey.Query(b);if(0<=b.limit){var k={};b.filter&&(k.filter=b.filter);b=new Kinvey.Query(k);h.dataStore.count(b).toPromise().then(function(a){n=a;return h.dataStore.find(f).toPromise()}).then(function(b){a.success(b)})["catch"](function(b){a.error(b)})}else h.dataStore.find(f).toPromise().then(function(b){a.success(b)})["catch"](function(b){a.error(b)})},
update:function(a){var b=this.options.update;if(b&&b.url)return g.data.RemoteTransport.fn.read.call(this,a);l(a.data.models)?a.error("Batch update is not supported. Set the data source 'batch' option to 'false'."):this.dataStore.save(a.data).then(function(b){a.success(b)})["catch"](function(b){a.error(b)})},create:function(a){var b=this.options.create;if(b&&b.url)return g.data.RemoteTransport.fn.read.call(this,a);l(a.data.models)?a.error("Batch create is not supported. Set the data source 'batch' option to 'false'."):
(b=a.data,""===b._id&&delete b._id,this.dataStore.save(b).then(function(b){a.success(b)})["catch"](function(b){a.error(b)}))},destroy:function(a){var b=this.options.destroy;if(b&&b.url)return g.data.RemoteTransport.fn.read.call(this,a);l(a.data.models)&&a.error("Batch delete is not supported. Set the data source 'batch' option to 'false'.");this.dataStore.removeById(a.data._id).then(function(b){a.success(b)})["catch"](function(b){a.error(b)})},parameterMap:function(a,b){return g.data.transports.kinvey.parameterMap(a,
b,!0)}});t(!0,g.data,{transports:{kinvey:f},schemas:{kinvey:{type:"json",total:function(a){return n?n:a.length},data:function(a){return a},model:{id:"_id"}}}})}})();