@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
1 lines • 3.8 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(1675),e.exports=n(1675)},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")},1641:function(e,t){e.exports=require("./sheet")},1675:function(e,t,n){var i,s,o;!function(h,define){s=[n(20),n(5),n(1641)],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,u,c,l,f,g,_;if(!n.insertRow&&!n.deleteRow&&n.recalc&&n.ref){for(i=e.spreadsheet.UnionRef,s=this.dataSource,o=s.view(),h=this.columns,r=[],a=this.sheet,_=function(e){var t,n,i,a,d,c;for(e=e.toRangeRef(),n=0,i=e.topLeft.row;i<=e.bottomRight.row;i++){for(t=o[i-1],t||(t=s.insert(i-1,{}),o=s.view()),a=0,d=e.topLeft.col;d<=e.bottomRight.col&&d<h.length;d++)c=r[l][n][a++],t.set(h[d].field,u[d](c));n++}},s.reader.model&&(d=s.reader.model.fields),!h.length&&o.length&&(h=Object.keys(o[0].toJSON())),u=h.map(function(n){var i=n.field;return i&&d&&d[i]&&"date"==d[i].type?e.spreadsheet.numberToDate:t}),this._skipRebind=!0,c=a._grid.normalize(n.ref),c instanceof i||(c=new i([c])),g=c.refs,g.forEach(function(e){r.push(a.range(e).values())}),l=0;l<g.length;l++)f=g[l],f.forEach(_);this._boundRowsCount=s.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))}});