@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
1 lines • 3.65 kB
JavaScript
module.exports=function(e){function t(i){if(n[i])return n[i].exports;var s=n[i]={exports:{},id:i,loaded:!1};return e[i].call(s.exports,s,s.exports,t),s.loaded=!0,s.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}({0:function(e,t,n){n(1637),e.exports=n(1637)},3:function(e,t){e.exports=function(){throw Error("define cannot be used indirect")}},5:function(e,t){e.exports=require("../kendo.data")},20:function(e,t){e.exports=require("../kendo.core")},1603:function(e,t){e.exports=require("./sheet")},1637:function(e,t,n){var i,s,o;!function(h,define){s=[n(20),n(5),n(1603)],i=h,o="function"==typeof i?i.apply(t,s):i,!(void 0!==o&&(e.exports=o))}(function(){!function(e){var t=function(e){return e},n=e.Class.extend({init:function(t){this.options=e.jQuery.extend({},this.options,t),this.columns=this._normalizeColumns(this.options.columns),this._sheet(),this._dataSource(),this._header(),this._boundRowsCount=0,this.dataSource.fetch()},_sheet:function(){this.sheet=this.options.sheet,this._sheetChangeHandler=this._sheetChange.bind(this),this._sheetDeleteRowHandler=this._sheetDeleteRow.bind(this),this._sheetInsertRowHandler=this._sheetInsertRow.bind(this),this.sheet.bind("change",this._sheetChangeHandler).bind("afterDeleteRow",this._sheetDeleteRowHandler).bind("afterInsertRow",this._sheetInsertRowHandler)},_sheetInsertRow:function(e){void 0!==e.index&&this.dataSource.insert(Math.max(e.index-1,0),{})},_sheetDeleteRow:function(e){var t,n;void 0!==e.index&&(t=this.dataSource,n=t.view()[e.index-1],n&&t.remove(n))},_header:function(){this.sheet.batch(function(){this.columns.forEach(function(e,t){this.sheet.range(0,t).value(e.title)}.bind(this))}.bind(this))},_sheetChange:function(n){var i,s,o,h,r,a,d;n.insertRow||n.deleteRow||n.recalc&&n.ref&&(i=this.dataSource,s=i.view(),o=this.columns,i.reader.model&&(h=i.reader.model.fields),!o.length&&s.length&&(o=Object.keys(s[0].toJSON())),r=o.map(function(n){var i=n.field;return i&&h&&h[i]&&"date"==h[i].type?e.spreadsheet.numberToDate:t}),this._skipRebind=!0,a=this.sheet._grid.normalize(n.ref),d=this.sheet.range(a).values(),a.forEach(function(e){var t,n,h,a,u;for(e=e.toRangeRef(),n=0,h=e.topLeft.row;h<=e.bottomRight.row;h++){for(t=s[h-1],t||(t=i.insert(h-1,{}),s=i.view()),a=0,u=e.topLeft.col;u<=e.bottomRight.col&&u<o.length;u++)t.set(o[u].field,r[u](d[n][a++]));n++}}),this._boundRowsCount=i.view().length,this._skipRebind=!1)},_normalizeColumns:function(e){return e.map(function(e){var t=e.field||e;return{field:t,title:e.title||t}})},_dataSource:function(){var t=this.options,n=t.dataSource;n=Array.isArray(n)?{data:n}:n,this.dataSource&&this._changeHandler?this.dataSource.unbind("change",this._changeHandler):this._changeHandler=this._change.bind(this),this.dataSource=e.data.DataSource.create(n).bind("change",this._changeHandler)},_change:function(){var t,n,i;this._skipRebind||this.sheet.trigger("dataBinding")||(t=this.dataSource.view(),n=this.columns,!n.length&&t.length&&(this.columns=n=this._normalizeColumns(Object.keys(t[0].toJSON())),this._header()),i=n.map(function(t){return e.getter(t.field)}),this.sheet.batch(function(){var e,n,s,o=Math.max(t.length,this._boundRowsCount,this.sheet._grid.rowCount-1);for(e=0;e<o;e++)for(n=0;n<i.length;n++)s=t[e]?i[n](t[e]):null,this.sheet.range(e+1,n).value(s)}.bind(this)),this._boundRowsCount=t.length,this.sheet.trigger("dataBound"))},destroy:function(){this.dataSource.unbind("change",this._changeHandler),this.sheet.unbind("change",this._sheetChangeHandler).unbind("deleteRow",this._sheetDeleteRowHandler).unbind("insertRow",this._sheetInsertRowHandler)},options:{columns:[]}});e.spreadsheet.SheetDataSourceBinder=n}(kendo)},n(3))}});