102 lines
7.2 KiB
JavaScript
102 lines
7.2 KiB
JavaScript
/**
|
|
* Kendo UI v2016.1.226 (http://www.telerik.com/kendo-ui)
|
|
* Copyright 2016 Telerik AD. All rights reserved.
|
|
*
|
|
* Kendo UI commercial licenses may be obtained at
|
|
* http://www.telerik.com/purchase/license-agreement/kendo-ui-complete
|
|
* If you do not own a commercial license, this file shall be governed by the trial license terms.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/
|
|
(function (f, define) {
|
|
define('kendo.data.signalr', ['kendo.data'], f);
|
|
}(function () {
|
|
var __meta__ = {
|
|
id: 'data.signalr',
|
|
name: 'SignalR',
|
|
category: 'framework',
|
|
depends: ['data'],
|
|
hidden: true
|
|
};
|
|
(function ($) {
|
|
var transport = kendo.data.RemoteTransport.extend({
|
|
init: function (options) {
|
|
var signalr = options && options.signalr ? options.signalr : {};
|
|
var promise = signalr.promise;
|
|
if (!promise) {
|
|
throw new Error('The "promise" option must be set.');
|
|
}
|
|
if (typeof promise.done != 'function' || typeof promise.fail != 'function') {
|
|
throw new Error('The "promise" option must be a Promise.');
|
|
}
|
|
this.promise = promise;
|
|
var hub = signalr.hub;
|
|
if (!hub) {
|
|
throw new Error('The "hub" option must be set.');
|
|
}
|
|
if (typeof hub.on != 'function' || typeof hub.invoke != 'function') {
|
|
throw new Error('The "hub" option is not a valid SignalR hub proxy.');
|
|
}
|
|
this.hub = hub;
|
|
kendo.data.RemoteTransport.fn.init.call(this, options);
|
|
},
|
|
push: function (callbacks) {
|
|
var client = this.options.signalr.client || {};
|
|
if (client.create) {
|
|
this.hub.on(client.create, callbacks.pushCreate);
|
|
}
|
|
if (client.update) {
|
|
this.hub.on(client.update, callbacks.pushUpdate);
|
|
}
|
|
if (client.destroy) {
|
|
this.hub.on(client.destroy, callbacks.pushDestroy);
|
|
}
|
|
},
|
|
_crud: function (options, type) {
|
|
var hub = this.hub;
|
|
var server = this.options.signalr.server;
|
|
if (!server || !server[type]) {
|
|
throw new Error(kendo.format('The "server.{0}" option must be set.', type));
|
|
}
|
|
var args = [server[type]];
|
|
var data = this.parameterMap(options.data, type);
|
|
if (!$.isEmptyObject(data)) {
|
|
args.push(data);
|
|
}
|
|
this.promise.done(function () {
|
|
hub.invoke.apply(hub, args).done(options.success).fail(options.error);
|
|
});
|
|
},
|
|
read: function (options) {
|
|
this._crud(options, 'read');
|
|
},
|
|
create: function (options) {
|
|
this._crud(options, 'create');
|
|
},
|
|
update: function (options) {
|
|
this._crud(options, 'update');
|
|
},
|
|
destroy: function (options) {
|
|
this._crud(options, 'destroy');
|
|
}
|
|
});
|
|
$.extend(true, kendo.data, { transports: { signalr: transport } });
|
|
}(window.kendo.jQuery));
|
|
return window.kendo;
|
|
}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {
|
|
(a3 || a2)();
|
|
})); |