From f90e2ee9319f700f28df489c016f79a0be83ecbf Mon Sep 17 00:00:00 2001 From: Marcin Warpechowski Date: Wed, 12 Jun 2013 15:42:14 +0200 Subject: [PATCH] Angular UI Handsontable 0.3.10 --- CHANGELOG.md | 2 +- dist/angular-ui-handsontable.full.css | 4 ++-- dist/angular-ui-handsontable.full.js | 4 ++-- dist/angular-ui-handsontable.full.min.css | 4 ++-- dist/angular-ui-handsontable.full.min.js | 4 ++-- package.json | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 080672bc..13688e87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## Head +## 0.3.10 (Jun 12, 2012) Other: - define Handsontable as Bower dependency diff --git a/dist/angular-ui-handsontable.full.css b/dist/angular-ui-handsontable.full.css index d1acb6c3..29010b1c 100644 --- a/dist/angular-ui-handsontable.full.css +++ b/dist/angular-ui-handsontable.full.css @@ -1,7 +1,7 @@ /** - * angular-ui-handsontable 0.3.9 + * angular-ui-handsontable 0.3.10 * - * Date: Wed Jun 12 2013 15:40:00 GMT+0200 (Central European Daylight Time) + * Date: Wed Jun 12 2013 15:41:30 GMT+0200 (Central European Daylight Time) */ /** diff --git a/dist/angular-ui-handsontable.full.js b/dist/angular-ui-handsontable.full.js index d029a91c..a4dd9cbc 100644 --- a/dist/angular-ui-handsontable.full.js +++ b/dist/angular-ui-handsontable.full.js @@ -1,7 +1,7 @@ /** - * angular-ui-handsontable 0.3.9 + * angular-ui-handsontable 0.3.10 * - * Date: Wed Jun 12 2013 15:40:00 GMT+0200 (Central European Daylight Time) + * Date: Wed Jun 12 2013 15:41:30 GMT+0200 (Central European Daylight Time) */ /** diff --git a/dist/angular-ui-handsontable.full.min.css b/dist/angular-ui-handsontable.full.min.css index a7f6b5e0..10ddbae7 100644 --- a/dist/angular-ui-handsontable.full.min.css +++ b/dist/angular-ui-handsontable.full.min.css @@ -1,7 +1,7 @@ /** - * angular-ui-handsontable 0.3.9 + * angular-ui-handsontable 0.3.10 * - * Date: Wed Jun 12 2013 15:40:05 GMT+0200 (Central European Daylight Time) + * Date: Wed Jun 12 2013 15:41:32 GMT+0200 (Central European Daylight Time) */ diff --git a/dist/angular-ui-handsontable.full.min.js b/dist/angular-ui-handsontable.full.min.js index 5d67c858..65e26db5 100644 --- a/dist/angular-ui-handsontable.full.min.js +++ b/dist/angular-ui-handsontable.full.min.js @@ -1,7 +1,7 @@ /** - * angular-ui-handsontable 0.3.9 + * angular-ui-handsontable 0.3.10 * - * Date: Wed Jun 12 2013 15:40:00 GMT+0200 (Central European Daylight Time) + * Date: Wed Jun 12 2013 15:41:30 GMT+0200 (Central European Daylight Time) */ document.all&&!document.addEventListener&&(document.createElement("ui-handsontable"),document.createElement("datacolumn"),document.createElement("optionlist")),angular.module("uiHandsontable",[]).factory("getHandsontableSettings",function(){return function(t){var e=t.data("uiDatagrid");return e||(e={settings:{columns:[],colHeaders:!0,outsideClickDeselects:!0,autoComplete:[]},$container:$('
')},t.data("uiDatagrid",e)),e}}).factory("getDatacolumnSettings",function(){return function(t){var e=t.data("uiDatagridDatacolumn");return e||(e={},t.data("uiDatagridDatacolumn",e)),e}}).directive("uiHandsontable",function(t,e,n){for(var i=["data","width","height","rowHeaders","colHeaders","colWidths","columns","cells","dataSchema","contextMenu","onSelection","onSelectionByProp","onBeforeChange","onChange","onCopyLimit","startRows","startCols","minRows","minCols","maxRows","maxCols","minSpareRows","minSpareCols","multiSelect","fillHandle","undo","outsideClickDeselects","enterBeginsEditing","enterMoves","tabMoves","autoWrapRow","autoWrapCol","copyRowsLimit","copyColsLimit","currentRowClassName","currentColClassName","asyncRendering","stretchH","columnSorting","manualColumnMove","manualColumnResize"],o={selectedIndex:"=selectedindex"},s=0,r=i.length;r>s;s++)o[i[s]]="="+i[s].toLowerCase();var a={restrict:"EA",scope:o,priority:490,compile:function(o,s){var r,a,l,c=function(e,n,i){var o=n.optionList,s=o.match(/^\s*(.+)\s+in\s+(.*)\s*$/);if(!s)throw Error("Expected datarows in form of '_item_ in _collection_' but got '"+o+"'.");var r,a,l,c=s[1],h=s[2],u=e.$new();i.$container.on("blur","textarea",function(){l&&l()}),n.source=function(t,o){l&&l();var s=function(){var t=i.$container.data("handsontable"),n=t.getSelected()[0];return u[i.lhs]=e.$parent.$eval(i.rhs)[n],u.$eval(h)};r=s(),u.$$phase||u.$apply(),o(r),a.$apply(),l=e.$parent.$watch(s,function(e,i){e!==i&&setTimeout(function(){n.source(t,o)},0)}),n.saveOnBlur||(u.$eval(n.value+' = "'+$.trim(t).replace(/"/g,'"')+'"'),u.$apply())},n.sorter=function(t){return t},n.highlighter=function(e){var i,o=u.$new();return o[c]=e,a=o,n.transclude?n.transclude(o,function(t){i=t[0]}):i=t(""+n.optionTemplate+"")(o),i},n.onSelect=function(t,e,i,o,s){u[c]=r[s],u.$eval(n.clickrow),u.$apply()}},h=s.datarows;if(h&&(r=h.match(/^\s*(.+)\s+in\s+(.*)\s*$/)),!r)throw Error("Expected datarows in form of '_item_ in _collection_' but got '"+h+"'.");return a=r[1],l=r[2],function(t,o,s){var r,h,u=n(o);u.lhs=a,u.rhs=l,u.settings=angular.extend(u.settings,t.$parent.$eval(s.uiHandsontable||s.settings));for(r in i)i.hasOwnProperty(r)&&t[i[r]]!==void 0&&(u.settings[i[r]]=t[i[r]]);$(o).append(u.$container);var d=t.$parent.$eval(l);if(d!==void 0&&(u.settings.data=d),u.settings.columns){var p=RegExp("^("+a+"\\.)");for(r=0,h=u.settings.columns.length;h>r;r++)u.settings.columns[r].data=u.settings.columns[r].value.replace(p,""),"autocomplete"===u.settings.columns[r].type&&c(t,u.settings.columns[r],u)}u.settings.afterChange=function(){e.$$phase||t.$apply()},u.settings.afterSelectionByProp=function(e,n,i,o){t.$emit("datagridSelection",u.$container,e,n,i,o)},u.$container.handsontable(u.settings);var f=0;for(t.$watch(function(){if(t.$parent.$eval(l)!==u.$container.handsontable("getData"))return!0;var e=u.$container.data("handsontable"),n=e.countRows();if(f!==n)return f=n;for(var i="",o=e.countCols(),s=e.rowOffset(),r=s+e.countVisibleRows();r>s;s++)for(var a=0;o>a;a++)i+=e.getDataAtCell(s,a);return i},function(e,n){1==e?u.$container.handsontable("loadData",t.$parent.$eval(l)):e!==n&&u.$container.handsontable("render")},!1),r=0,h=i.length;h>r;r++)(function(e){t.$watch(e,function(n,i){if(n!==i){if("columns"===e)for(var o=RegExp("^("+a+"\\.)"),s=0,r=n.length;r>s;s++)n[s].data=n[s].value.replace(o,""),"autocomplete"===n[s].type&&c(t,n[s],u);var l={};l[e]=n,u.$container.handsontable("updateSettings",l)}},!0)})(i[r])}}};return a}).directive("datacolumn",function(t,e){var n={restrict:"E",priority:500,compile:function(n,i){return function(n,o,s){var r,a=t(o.parent()),l=e(o),c=n.$parent.$eval(s.title),h=n.$parent.$eval(s.width),u=n.$parent.$eval(s.type),d=s.options,p=[];for(r in s)i.hasOwnProperty(r)&&p.push(r);l.value=s.value,l.source=null,l.saveOnBlur=-1!==$.inArray("saveonblur",p),l.strict=-1!==$.inArray("strict",p);var f=n.$new(),g=n.$parent.$eval(d)||{};switch(g.value=s.value,g.type=u,g.title=c,g.width=h,u){case"autocomplete":for(r in l)l.hasOwnProperty(r)&&(g[r]=l[r]);break;case"checkbox":s.checkedtemplate!==void 0&&(g.checkedTemplate=n.$parent.$eval(s.checkedtemplate)),s.uncheckedtemplate!==void 0&&(g.uncheckedTemplate=n.$parent.$eval(s.uncheckedtemplate))}s.readonly!==void 0&&(g.readOnly=!0);for(r in s)s.hasOwnProperty(r)&&"$"!==r.charAt(0)&&g[r]===void 0&&(g[r]=f.$eval(s[r]));a.settings.columns.push(g)}}};return n}).directive("optionlist",function(t){var e={restrict:"E",transclude:"element",priority:510,compile:function(e,n,i){return function(e,n,o){var s=t(n.parent());s.optionList=o.datarows,s.clickrow=o.clickrow,s.transclude=i}}};return e}).directive("selectedindex",function(t){var e={restrict:"A",priority:491,compile:function(){return function(e,n){var i,o,s,r=t(n).$container;t(n).settings.afterSelection=function(t,n){i=!0,o=t,s=n,e.$$phase||void 0===e.selectedIndex||e.selectedIndex==t||e.$apply(function(){e.selectedIndex=t})},t(n).settings.afterDeselect=function(){i=!1,o=null,e.$$phase||void 0===e.selectedIndex||null==e.selectedIndex||e.$apply(function(){e.selectedIndex=null})},e.$watch("selectedIndex",function(t){var e=parseInt(t,10);if(t!==void 0&&null!==t&&e!==o){var n=s||0;r.handsontable("selectCell",e,n,e,n,!0)}},!1)}}};return e});var Handsontable={extension:{},helper:{}};(function(t,e,n){"use strict";function i(t){this.isCellEdited=!1,this.instance=t,this.createElements(),this.bindEvents()}function o(t){this.isCellEdited=!1,this.instance=t,this.createElements(),this.bindEvents(),this.emptyStringLabel="   "}function s(t,e,i,o){n.helper.stringify(t.getDataAtRowProp(e,i))===n.helper.stringify(o.checkedTemplate)?t.setDataAtRowProp(e,i,o.uncheckedTemplate):t.setDataAtRowProp(e,i,o.checkedTemplate)}function r(e){if(!t.datepicker)throw Error("jQuery UI Datepicker dependency not found. Did you forget to include jquery-ui.custom.js or its substitute?");this.isCellEdited=!1,this.instance=e,this.createElements(),this.bindEvents()}function a(t){this.isCellEdited=!1,this.instance=t,this.createElements(),this.bindEvents()}function l(){var e,i=this,o=5;this.beforeInit=function(){this.autoColumnWidths=[],this.autoColumnSizeTmp={thead:null,theadTh:null,theadStyle:null,tbody:null,tbodyTd:null,noRenderer:null,noRendererTd:null,renderer:null,rendererTd:null,container:null,containerStyle:null,$container:null,$noRenderer:null,$renderer:null}},this.determineColumnWidth=function(i){var s,r=e.autoColumnSizeTmp;r.container||(s=document,r.thead=s.createElement("table"),r.thead.appendChild(s.createElement("thead")).appendChild(s.createElement("tr")).appendChild(s.createElement("th")),r.theadTh=r.thead.getElementsByTagName("th")[0],r.thead.className="htTable",r.theadStyle=r.thead.style,r.theadStyle.tableLayout="auto",r.theadStyle.width="auto",r.tbody=r.thead.cloneNode(!1),r.tbody.appendChild(s.createElement("tbody")).appendChild(s.createElement("tr")).appendChild(s.createElement("td")),r.tbodyTd=r.tbody.getElementsByTagName("td")[0],r.noRenderer=r.tbody.cloneNode(!0),r.noRendererTd=r.noRenderer.getElementsByTagName("td")[0],r.renderer=r.tbody.cloneNode(!0),r.rendererTd=r.renderer.getElementsByTagName("td")[0],r.container=s.createElement("div"),r.container.className=e.rootElement[0].className+" hidden",r.containerStyle=r.container.style,r.container.appendChild(r.thead),r.container.appendChild(r.tbody),r.container.appendChild(r.noRenderer),r.container.appendChild(r.renderer),r.$container=t(r.container),r.$noRenderer=t(r.noRenderer),r.$renderer=t(r.renderer),e.rootElement[0].parentNode.appendChild(r.container)),r.container.className=e.rootElement[0].className+" hidden";for(var a=e.countRows(),l={},c=0,h=0;a>h;h++){var u=n.helper.stringify(e.getDataAtCell(h,i)),d=u.length;d>c&&(c=d),l[d]||(l[d]={needed:o,strings:[]}),l[d].needed&&(l[d].strings.push(u),l[d].needed--)}var p=e.getSettings();p.colHeaders&&e.view.appendColHeader(i,r.theadTh);var f="";for(var g in l)if(l.hasOwnProperty(g))for(var m=0,w=l[g].strings.length;w>m;m++)f+=l[g].strings[m]+"
";r.tbodyTd.innerHTML=f,e.view.wt.wtDom.empty(r.rendererTd),e.view.wt.wtDom.empty(r.noRendererTd),r.containerStyle.display="block";var v=r.$container.outerWidth(),y=e.getCellMeta(0,i);if(y.renderer){var b=9999999999;r.noRendererTd.appendChild(document.createTextNode(b));var C=n.helper.getCellMethod("renderer",y.renderer);C(e,r.rendererTd,0,i,e.colToProp(i),b,y),v+=r.$renderer.width()-r.$noRenderer.width()}return r.containerStyle.display="none",v},this.determineColumnsWidth=function(){e=this;var t=this.getSettings();if(t.autoColumnSize||!t.colWidths)for(var n=this.countCols(),o=0;n>o;o++)this.autoColumnWidths[o]=i.determineColumnWidth(o)},this.getColWidth=function(t,e){this.autoColumnWidths[t]&&this.autoColumnWidths[t]>e.width&&(e.width=this.autoColumnWidths[t])}}function c(){var e,n=this;this.afterInit=function(){var e=this;this.getSettings().columnSorting&&(this.sortIndex=[],this.rootElement.on("click.handsontable",".columnSorting",function(i){var o=t(i.target);if(o.is(".columnSorting")){var s=o.closest("th").index();e.getSettings().rowHeaders&&s--,e.sortColumn===s?e.sortOrder=!e.sortOrder:(e.sortColumn=s,e.sortOrder=!0),n.sort.call(e),e.render()}}))},this.sort=function(){e=!1;var t=this;this.sortIndex.length=0;for(var n=0,i=this.countRows();i>n;n++)this.sortIndex.push([n,t.getDataAtCell(n,this.sortColumn)]);this.sortIndex.sort(function(e,n){return e[1]===n[1]?0:null===e[1]?1:null===n[1]?-1:e[1]n[1]?t.sortOrder?1:-1:0}),e=!0},this.translateRow=function(t){e&&this.sortIndex&&this.sortIndex.length&&(t.row=this.sortIndex[t.row][0])},this.getColHeader=function(e,n){this.getSettings().columnSorting&&(t(n).find("span.colHeader")[0].className+=" columnSorting")}}function h(){function e(t){var e=s.getSelected();if(e)switch(t){case"row_above":s.alter("insert_row",e[0]);break;case"row_below":s.alter("insert_row",e[2]+1);break;case"col_left":s.alter("insert_col",e[1]);break;case"col_right":s.alter("insert_col",e[3]+1);break;case"remove_row":s.alter(t,e[0],e[2]-e[0]+1);break;case"remove_col":s.alter(t,e[1],e[3]-e[1]+1);break;case"undo":s.undo();break;case"redo":s.redo()}}function n(t){return s.countRows()>=s.getSettings().maxRows&&("row_above"===t||"row_below"===t)?!0:s.countCols()>=s.getSettings().maxCols&&("col_left"===t||"col_right"===t)?!0:!1}var i,o,s=this,r=s.rootElement[0].id,a={row_above:{name:"Insert row above",disabled:n},row_below:{name:"Insert row below",disabled:n},hsep1:"---------",col_left:{name:"Insert column on the left",disabled:n},col_right:{name:"Insert column on the right",disabled:n},hsep2:"---------",remove_row:{name:"Remove row",disabled:n},remove_col:{name:"Remove column",disabled:n},hsep3:"---------",undo:{name:"Undo",disabled:function(){return!s.isUndoAvailable()}},redo:{name:"Redo",disabled:function(){return!s.isRedoAvailable()}}},l={selector:"#"+r+" table, #"+r+" div",trigger:"right",callback:e},c={},h=s.getSettings();if(h.contextMenu){if(h.contextMenu===!0)c.items=a;else if("[object Array]"===Object.prototype.toString.apply(h.contextMenu))for(c.items={},i=0,o=h.contextMenu.length;o>i;i++){var u=h.contextMenu[i];if(a[u]===void 0)throw Error('Context menu key "'+u+'" is not recognised');c.items[u]=a[u]}else if("[object Object]"===Object.prototype.toString.apply(h.contextMenu)){if(c=h.contextMenu,c.items)for(i in c.items)c.items.hasOwnProperty(i)&&a[i]&&(c.items[i]="string"==typeof c.items[i]?a[i]:t.extend(!0,a[i],c.items[i]));else c.items=a;if(c.callback){var d=l.callback,p=c.callback;c.callback=function(t,e){d(t,e),p(t,e)}}}if(!r)throw Error("Handsontable container must have an id");t.contextMenu(t.extend(!0,l,c))}}function u(){var e=this.rootElement[0].id;t.contextMenu("destroy","#"+e+" table, #"+e+" div")}function d(){var e,n,i,o,s,r,a=document.createElement("DIV"),l=a.style;a.className="ghost",l.position="absolute",l.top="25px",l.left=0,l.width="10px",l.height="10px",l.backgroundColor="#CCC",l.opacity=.7,t(document).mousemove(function(t){n&&(l.left=r+t.pageX-s+6+"px","none"===l.display&&(l.display="block"))}),t(document).mouseup(function(){n&&(o>i&&o--,e.getSettings().rowHeaders&&(i--,o--),e.manualColumnPositions.splice(o,0,e.manualColumnPositions.splice(i,1)[0]),t(".manualColumnMover.active").removeClass("active"),n=!1,e.forceFullRender=!0,e.view.render(),l.display="none",e.PluginHooks.run("afterColumnMove",i,o))}),this.beforeInit=function(){this.manualColumnPositions=[]},this.afterInit=function(){if(this.getSettings().manualColumnMove){var c=this;this.rootElement.on("mousedown.handsontable",".manualColumnMover",function(o){e=c;var h=t(o.target),u=h.closest("th");i=u.index(),n=!0,s=o.pageX;var d=c.rootElement.find(".htCore");d.parent()[0].appendChild(a),l.width=h.parent().width()+"px",l.height=d.height()+"px",r=parseInt(u.offset().left-d.offset().left,10),l.left=r+6+"px"}),this.rootElement.on("mouseenter.handsontable","td, th",function(){if(n){t(".manualColumnMover.active").removeClass("active");var e=c.rootElement.find("thead th");o=t(this).index();var i=e.eq(o).find(".manualColumnMover").addClass("active");e.not(i).removeClass("active")}})}},this.modifyCol=function(t){return this.getSettings().manualColumnMove?(this.manualColumnPositions[t]===void 0&&(this.manualColumnPositions[t]=t),this.manualColumnPositions[t]):t},this.getColHeader=function(t,e){if(this.getSettings().manualColumnMove){var n=document.createElement("DIV");n.className="manualColumnMover",e.firstChild.appendChild(n)}}}function p(){var e,n,i,o,s,r,a,l,c,h,u=0,d=document.createElement("DIV"),p=document.createElement("DIV"),f=p.style;d.className="manualColumnResizer",p.className="manualColumnResizerLine",f.position="absolute",f.top=0,f.left=0,f.width=0,f.borderRight="1px dashed #777",p.appendChild(d),t(document).mousemove(function(t){e&&(i=c+(t.pageX-l),r=g(n,i),f.left=h+i-1+"px","none"===f.display&&(f.display="block"))}),t(document).mouseup(function(){e&&(t(".manualColumnResizer.active").removeClass("active"),e=!1,s.forceFullRender=!0,s.view.render(),f.display="none",s.PluginHooks.run("afterColumnResize",n,r))}),this.beforeInit=function(){this.manualColumnWidths=[]},this.afterInit=function(){if(this.getSettings().manualColumnResize){var d=this;this.rootElement.on("mousedown.handsontable",".manualColumnResizer",function(){null==o&&(o=setTimeout(function(){u>=2&&(g(n,L.determineColumnWidth.call(s,n)),s.PluginHooks.run("afterColumnResize",n,r)),u=0,o=null},500)),u++}),this.rootElement.on("mousedown.handsontable",".manualColumnResizer",function(o){var r=o.target,u=d.rootElement.find(".htCore"),g=t(r.parentNode.parentNode);s=d,n=r.getAttribute("rel"),a=t(d.rootElement[0].getElementsByTagName("col")[g.index()]),e=!0,l=o.pageX,c=a.width(),i=c,r.className+=" active",f.height=u.height()+"px",u.parent()[0].appendChild(p),h=parseInt(g.offset().left-u.offset().left,10),f.left=h+i-1+"px"})}};var g=function(t,e){return e=Math.max(e,20),e=Math.min(e,500),s.manualColumnWidths[t]=e,e};this.getColHeader=function(t,e){if(this.getSettings().manualColumnResize){var n=document.createElement("DIV");n.className="manualColumnResizer",n.setAttribute("rel",t),e.firstChild.appendChild(n)}},this.getColWidth=function(t,e){this.getSettings().manualColumnResize&&this.manualColumnWidths[t]&&(e.width=this.manualColumnWidths[t])}}function f(){function t(e,n){for(var i in n){var o=n[i];o instanceof Object&&(Object.unobserve(o,e),o.____Path=n.____Path+"/"+i,t(e,o))}}function n(t,e){delete e.____Path,Object.observe(e,t);for(var i in e){var o=e[i];o instanceof Object&&n(t,o)}}function i(i,r){var h=[],u=i;if(Object.observe)var d=function(e){u.___Path||(Object.unobserve(u,d),u.____Path="",t(d,u),e.forEach(function(t){"____Path"!=t.name&&a[t.type].call(t,h,t.object.____Path)}),n(d,u)),r&&r.call(h)};else{d={};for(var p,f=0,g=l.length;g>f;f++)if(l[f].obj===i){p=l[f];break}if(p||(p={obj:i},l.push(p)),p.value=JSON.parse(JSON.stringify(i)),r){c.push(r);var m,w=[100],v=0,y=function(){var t=s(d);t.length>0&&(d.patches=[],r.call(null,t))},b=function(){clearTimeout(m),m=setTimeout(function(){y(),v=0,m=setTimeout(C,w[v++])},0)},C=function(){y(),v==w.length&&(v=w.length-1),m=setTimeout(C,w[v++])};["mousedown","mouseup","keydown"].forEach(function(t){e.addEventListener(t,b)}),m=setTimeout(C,w[v++])}}return d.patches=h,d.object=i,o(d,i,h)}function o(t,e,n){Object.observe&&Object.observe(e,t);for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s&&"object"==typeof s&&o(t,s,n)}return t}function s(t){if(Object.observe)Object.deliverChangeRecords(t);else{for(var e,n=0,i=l.length;i>n;n++)if(l[n].obj===t.object){e=l[n];break}r(e.value,t.object,t.patches,"")}return t.patches}function r(t,e,n,i){for(var o=Object.keys(e),s=Object.keys(t),a=!1,l=!1,c=0;s.length>c;c++){var h=s[c],u=t[h];if(e.hasOwnProperty(h)){var d=e[h];u instanceof Object?r(u,d,n,i+"/"+h):u!=d&&(a=!0,n.push({op:"replace",path:i+"/"+h,value:d}),t[h]=d)}else n.push({op:"remove",path:i+"/"+h}),l=!0}if(l||o.length!=s.length)for(var c=0;o.length>c;c++){var h=o[c];t.hasOwnProperty(h)||n.push({op:"add",path:i+"/"+h,value:e[h]})}}var a={"new":function(t,e){var n={op:"add",path:e+"/"+this.name,value:this.object[this.name]};t.push(n)},deleted:function(t,e){var n={op:"remove",path:e+"/"+this.name};t.push(n)},updated:function(t,e){var n={op:"replace",path:e+"/"+this.name,value:this.object[this.name]};t.push(n)}},l=[],c=[];this.afterLoadData=function(){if(!this.observer&&this.getSettings().observeChanges){var t=this;this.observer=i(this.getData(),function(){t.render()})}}}function g(t){var e,n=this;t=t||document.body,this.elDiv=document.createElement("DIV"),e=this.elDiv.style,e.position="fixed",e.top=0,e.left=0,t.appendChild(this.elDiv),this.elTextarea=document.createElement("TEXTAREA"),this.elTextarea.className="copyPaste",e=this.elTextarea.style,e.width="1px",e.height="1px",this.elDiv.appendChild(this.elTextarea),e.opacity!==void 0&&(e.opacity=0),this._bindEvent(t,"keydown",function(t){var e=!1;t.metaKey?e=!0:t.ctrlKey&&-1===navigator.userAgent.indexOf("Mac")&&(e=!0),e&&(n.selectNodeText(n.elTextarea),setTimeout(function(){n.selectNodeText(n.elTextarea)},0)),!e||67!==t.keyCode&&86!==t.keyCode&&88!==t.keyCode||(88===t.keyCode?setTimeout(function(){n.triggerCut(t)},0):86===t.keyCode&&setTimeout(function(){n.triggerPaste(t)},0))})}function m(t,e){var n;this.instance=t,this.settings=e,this.wtDom=this.instance.wtDom,this.main=document.createElement("div"),n=this.main.style,n.position="absolute",n.top=0,n.left=0;for(var i=0;5>i;i++){var o=document.createElement("DIV");o.className="wtBorder "+(e.className||""),n=o.style,n.backgroundColor=e.border.color,n.height=e.border.width+"px",n.width=e.border.width+"px",this.main.appendChild(o)}this.top=this.main.childNodes[0],this.left=this.main.childNodes[1],this.bottom=this.main.childNodes[2],this.right=this.main.childNodes[3],this.topStyle=this.top.style,this.leftStyle=this.left.style,this.bottomStyle=this.bottom.style,this.rightStyle=this.right.style,this.corner=this.main.childNodes[4],this.corner.className+=" corner",this.cornerStyle=this.corner.style,this.cornerStyle.width="5px",this.cornerStyle.height="5px",this.cornerStyle.border="2px solid #FFF",this.disappear(),t.wtTable.hider.appendChild(this.main)}function w(){this.offset=0,this.total=0,this.fixedCount=0}function v(){}function y(){this.cache=[]}function b(){this.countTH=0}function C(t,e,n){var i,o=0;for(this.containerSizeFn=t,this.cellSizesSum=0,this.cellSizes=[],this.cellStretch=[],this.cellCount=0,this.remainingSize=0,this.strategy=n;;){if(i=e(o),void 0===i)break;if(this.cellSizesSum>=this.getContainerSize(this.cellSizesSum+i))break;this.cellSizes.push(i),this.cellSizesSum+=i,this.cellCount++,o++}var s=this.getContainerSize(this.cellSizesSum);this.remainingSize=this.cellSizesSum-s}function S(t){var e=this,n=[];if(this.wtSettings=new M(this,t),this.wtDom=new x,this.wtTable=new A(this),this.wtScroll=new E(this),this.wtScrollbars=new H(this),this.wtViewport=new O(this),this.wtWheel=new V(this),this.wtEvent=new T(this),this.wtTable.THEAD.childNodes.length&&this.wtTable.THEAD.childNodes[0].childNodes.length){for(var i=0,o=this.wtTable.THEAD.childNodes[0].childNodes.length;o>i;i++)n.push(this.wtTable.THEAD.childNodes[0].childNodes[i].innerHTML);this.getSetting("columnHeaders").length||this.update("columnHeaders",[function(t,i){e.wtDom.avoidInnerHTML(i,n[t])}])}this.selections={};var s=this.getSetting("selections");if(s)for(var r in s)s.hasOwnProperty(r)&&(this.selections[r]=new $(this,s[r]));this.drawn=!1,this.drawInterrupted=!1}function x(){}function T(e){var n=this;this.instance=e,this.wtDom=this.instance.wtDom;var i=[null,null,null,null];this.instance.dblClickTimeout=null;var o,s=function(t){var e=n.parentCell(t.target);e.TD&&"TD"===e.TD.nodeName?n.instance.hasSetting("onCellMouseDown")&&n.instance.getSetting("onCellMouseDown",t,e.coords,e.TD):n.wtDom.hasClass(t.target,"corner")&&n.instance.getSetting("onCellCornerMouseDown",t,t.target),2!==t.button&&(e.TD&&"TD"===e.TD.nodeName?(i.shift(),i.push(e.TD)):n.wtDom.hasClass(t.target,"corner")&&(i.shift(),i.push(t.target)))},r=function(t){if(n.instance.hasSetting("onCellMouseOver")){var e=n.wtDom.closest(t.target,["TD","TH"]);e&&e!==o&&(o=e,"TD"===e.nodeName&&n.instance.getSetting("onCellMouseOver",t,n.instance.wtTable.getCoords(e),e))}},a=function(t){if(2!==t.button){var e=n.parentCell(t.target);e.TD&&"TD"===e.TD.nodeName?(i.shift(),i.push(e.TD)):(i.shift(),i.push(t.target)),null!==i[3]&&i[3]===i[2]&&(n.instance.dblClickTimeout&&i[2]===i[1]&&i[1]===i[0]?(e.TD?n.instance.getSetting("onCellDblClick",t,e.coords,e.TD):n.wtDom.hasClass(t.target,"corner")&&n.instance.getSetting("onCellCornerDblClick",t,e.coords,e.TD),clearTimeout(n.instance.dblClickTimeout),n.instance.dblClickTimeout=null):(clearTimeout(n.instance.dblClickTimeout),n.instance.dblClickTimeout=setTimeout(function(){n.instance.dblClickTimeout=null},500)))}};t(this.instance.wtTable.parent).on("mousedown",s),t(this.instance.wtTable.TABLE).on("mouseover",r),t(this.instance.wtTable.parent).on("mouseup",a)}function k(){}function R(t,e){this.containerSizeFn=t,this.sizeAtIndex=e,this.cellSizesSum=0,this.cellSizes=[],this.cellCount=0,this.remainingSize=-1/0}function E(t){this.instance=t}function D(){}function P(){this.lastWindowScrollPosition=0/0}function H(t){switch(t.getSetting("scrollbarModelV")){case"dragdealer":this.vertical=new F(t);break;case"native":this.vertical=new j(t)}switch(t.getSetting("scrollbarModelH")){case"dragdealer":this.horizontal=new W(t);break;case"native":this.horizontal=new X(t)}}function $(t,e){this.instance=t,this.settings=e,this.selected=[],e.border&&(this.border=new m(t,e))}function M(t,e){var n=this;this.instance=t,this.defaults={table:void 0,scrollH:"auto",scrollV:"auto",scrollbarModelH:"dragdealer",scrollbarModelV:"dragdealer",stretchH:"hybrid",currentRowClassName:null,currentColumnClassName:null,data:void 0,offsetRow:0,offsetColumn:0,fixedColumnsLeft:0,fixedRowsTop:0,rowHeaders:[],columnHeaders:[],totalRows:void 0,totalColumns:void 0,width:null,height:null,cellRenderer:function(t,e,i){var o=n.getSetting("data",t,e);n.instance.wtDom.avoidInnerHTML(i,void 0===o||null===o?"":o)},columnWidth:50,selections:null,onCellMouseDown:null,onCellMouseOver:null,onCellDblClick:null,onCellCornerMouseDown:null,onCellCornerDblClick:null,beforeDraw:null,onDraw:null,scrollbarWidth:10,scrollbarHeight:10},this.settings={};for(var i in this.defaults)if(this.defaults.hasOwnProperty(i))if(void 0!==e[i])this.settings[i]=e[i];else{if(void 0===this.defaults[i])throw Error('A required setting "'+i+'" was not provided');this.settings[i]=this.defaults[i]}}function A(e){this.instance=e,this.TABLE=this.instance.getSetting("table"),this.wtDom=this.instance.wtDom,this.wtDom.removeTextNodes(this.TABLE),this.hasEmptyCellProblem=t.browser.msie&&7>=parseInt(t.browser.version,10),this.hasCellSpacingProblem=t.browser.msie&&7>=parseInt(t.browser.version,10),this.hasCellSpacingProblem&&(this.TABLE.cellSpacing=0);var n=this.TABLE.parentNode;if(!n||1!==n.nodeType||!this.wtDom.hasClass(n,"wtHolder")){var i=document.createElement("DIV");i.className="wtSpreader",n&&n.insertBefore(i,this.TABLE),i.appendChild(this.TABLE)}if(this.spreader=this.TABLE.parentNode,n=this.spreader.parentNode,!n||1!==n.nodeType||!this.wtDom.hasClass(n,"wtHolder")){var o=document.createElement("DIV");o.className="wtHider",n&&n.insertBefore(o,this.spreader),o.appendChild(this.spreader)}if(this.hider=this.spreader.parentNode,this.hiderStyle=this.hider.style,this.hiderStyle.position="relative",n=this.hider.parentNode,!n||1!==n.nodeType||!this.wtDom.hasClass(n,"wtHolder")){var s=document.createElement("DIV");s.style.position="relative",s.className="wtHolder",n&&n.insertBefore(s,this.hider),s.appendChild(this.hider)}if(this.parent=this.hider.parentNode,this.TBODY=this.TABLE.getElementsByTagName("TBODY")[0],this.TBODY||(this.TBODY=document.createElement("TBODY"),this.TABLE.appendChild(this.TBODY)),this.THEAD=this.TABLE.getElementsByTagName("THEAD")[0],this.THEAD||(this.THEAD=document.createElement("THEAD"),this.TABLE.insertBefore(this.THEAD,this.TBODY)),this.COLGROUP=this.TABLE.getElementsByTagName("COLGROUP")[0],this.COLGROUP||(this.COLGROUP=document.createElement("COLGROUP"),this.TABLE.insertBefore(this.COLGROUP,this.THEAD)),this.instance.getSetting("columnHeaders").length&&!this.THEAD.childNodes.length){var r=document.createElement("TR");this.THEAD.appendChild(r)}this.colgroupChildrenLength=this.COLGROUP.childNodes.length,this.theadChildrenLength=this.THEAD.firstChild?this.THEAD.firstChild.childNodes.length:0,this.tbodyChildrenLength=this.TBODY.childNodes.length,this.oldCellCache=new y,this.currentCellCache=new y,this.rowFilter=new k,this.columnFilter=new b,this.verticalRenderReverse=!1}function O(t){this.instance=t,this.resetSettings()}function V(e){"native"!==e.getSetting("scrollbarModelV")&&"native"!==e.getSetting("scrollbarModelH")&&t(e.wtTable.TABLE).on("mousewheel",function(t,n,i,o){o>0&&0===e.getSetting("offsetRow")||0>o&&e.wtTable.isLastRowFullyVisible()||0>i&&0===e.getSetting("offsetColumn")||i>0&&e.wtTable.isLastColumnFullyVisible()||(clearTimeout(e.wheelTimeout),e.wheelTimeout=setTimeout(function(){o?e.wtScrollbars.vertical.visible&&e.scrollVertical(-Math.ceil(o)).draw():i&&e.wtScrollbars.horizontal.visible&&e.scrollHorizontal(Math.ceil(i)).draw()},0),t.preventDefault())})}n.Core=function(i,o){function s(e,n){for(var i=t.Deferred(),o=[],s=function(n){var i=t.Deferred();o.push(i);var s=e[n][3],r="string"==typeof s?s.toLowerCase():null;return function(t){for(var o=!1,a=0,l=t.length;l>a;a++){if(s===t[a]){o=!0;break}if(r===t[a].toLowerCase()){e[n][3]=t[a],o=!0;break}}o||(e[n]=null),i.resolve()}},r=e.length-1;r>=0;r--){var a=f.getCellMeta(e[r][0],c.propToCol(e[r][1]));a.strict&&a.source&&(t.isFunction(a.source)?a.source(e[r][3],s(r)):s(r)(a.source))}return t.when.apply(t,o).then(function(){for(var o=e.length-1;o>=0;o--)if(null===e[o])e.splice(o,1);else{var s=f.getCellMeta(e[o][0],c.propToCol(e[o][1]));"number"===s.dataType&&"string"==typeof e[o][3]&&e[o][3].length>0&&/^[0-9\s]*[.]*[0-9]*$/.test(e[o][3])&&(e[o][3]=numeral().unformat(e[o][3]||"0"))}if(e.length){var r=f.PluginHooks.execute("beforeChange",e,n);"function"==typeof r?t.when(r).then(function(){i.resolve()}):(r===!1&&e.splice(0,e.length),i.resolve())}else i.resolve()}),t.when(i)}function r(t,e){var n=t.length-1;if(!(0>n)){for(;n>=0;n--)if(null!==t[n]){if(l.settings.minSpareRows)for(;t[n][0]>f.countRows()-1;)c.createRow();if("array"===l.dataType&&l.settings.minSpareCols)for(;c.propToCol(t[n][1])>f.countCols()-1;)c.createCol();c.set(t[n][0],t[n][1],t[n][3])}else t.splice(n,1);f.forceFullRender=!0,h.adjustRowsAndCols(),u.refreshBorders(),f.PluginHooks.run("afterChange",t,e||"edit")}}function a(e,n,i){return"object"==typeof e?e:t.isPlainObject(i)?i:[[e,n,i]]}var l,c,h,u,d,p,f=this,m=function(){};n.helper.inherit(m,N),n.helper.extend(m.prototype,o),this.rootElement=i,this.guid="ht_"+n.helper.randomString(),this.rootElement[0].id||(this.rootElement[0].id=this.guid),l={columnSettings:[],columnsSettingConflicts:["data","width"],settings:new m,settingsFromDOM:{},selStart:new n.SelectionPoint,selEnd:new n.SelectionPoint,editProxy:!1,isPopulated:null,scrollable:null,undoRedo:null,extensions:{},colToProp:null,propToCol:null,dataSchema:null,dataType:"array",firstRun:!0},c={recursiveDuckSchema:function(e){var n;if(t.isPlainObject(e)){n={};for(var i in e)e.hasOwnProperty(i)&&(n[i]=t.isPlainObject(e[i])?c.recursiveDuckSchema(e[i]):null)}else n=[];return n},recursiveDuckColumns:function(e,n,i){var o,s;if(n===void 0&&(n=0,i=""),t.isPlainObject(e))for(s in e)e.hasOwnProperty(s)&&(null===e[s]?(o=i+s,l.colToProp.push(o),l.propToCol[o]=n,n++):n=c.recursiveDuckColumns(e[s],n,s+"."));return n},createMap:function(){if(c.getSchema()===void 0)throw Error("trying to create `columns` definition but you didnt' provide `schema` nor `data`");var t,e,n=c.getSchema();if(l.colToProp=[],l.propToCol={},l.settings.columns)for(t=0,e=l.settings.columns.length;e>t;t++)l.colToProp[t]=l.settings.columns[t].data,l.propToCol[l.settings.columns[t].data]=t;else c.recursiveDuckColumns(n)},colToProp:function(t){return t=n.PluginHooks.execute(f,"modifyCol",t),l.colToProp&&l.colToProp[t]!==void 0?l.colToProp[t]:t},propToCol:function(t){var e;return e=l.propToCol[t]!==void 0?l.propToCol[t]:t,e=n.PluginHooks.execute(f,"modifyCol",e)},getSchema:function(){return l.settings.dataSchema?"function"==typeof l.settings.dataSchema?l.settings.dataSchema():l.settings.dataSchema:l.duckDataSchema},createRow:function(e){var n,i=f.countRows();if(("number"!=typeof e||e>=i)&&(e=i),"array"===l.dataType){n=[];for(var o=0,s=f.countCols();s>o;o++)n.push(null)}else n="function"===l.dataType?l.settings.dataSchema(e):t.extend(!0,{},c.getSchema());e===i?m.prototype.data.push(n):m.prototype.data.splice(e,0,n),f.PluginHooks.run("afterCreateRow",e),f.forceFullRender=!0},createCol:function(t){if("object"===l.dataType||l.settings.columns)throw Error("Cannot create new column. When data source in an object, you can only have as much columns as defined in first data row, data schema or in the 'columns' setting");var e=0,i=f.countRows(),o=m.prototype.data,s=n.helper.columnFactory(m,l.columnsSettingConflicts,n.TextCell);if("number"!=typeof t||t>=f.countCols()){for(;i>e;e++)o[e]===void 0&&(o[e]=[]),o[e].push(null);l.columnSettings.push(s)}else{for(;i>e;e++)o[e].splice(t,0,null);l.columnSettings.splice(t,0,s)}f.PluginHooks.run("afterCreateCol",t),f.forceFullRender=!0},removeRow:function(t,e){e||(e=1),"number"!=typeof t&&(t=-e),m.prototype.data.splice(t,e),f.PluginHooks.run("afterRemoveRow",t,e),f.forceFullRender=!0},removeCol:function(t,e){if("object"===l.dataType||l.settings.columns)throw Error("cannot remove column with object data source or columns option specified");e||(e=1),"number"!=typeof t&&(t=-e);for(var n=m.prototype.data,i=0,o=f.countRows();o>i;i++)n[i].splice(t,e);f.PluginHooks.run("afterRemoveCol",t,e),l.columnSettings.splice(t,e),f.forceFullRender=!0},spliceCol:function(t,e,i){var o=arguments.length>=4?[].slice.call(arguments,3):[],s=f.getDataAtCol(t),r=s.slice(e,e+i),a=s.slice(e+i);n.helper.extendArray(o,a);for(var l=0;i>l;)o.push(null),l++;return n.helper.to2dArray(o),f.populateFromArray(e,t,o,null,null,"spliceCol"),r},spliceRow:function(t,e,i){var o=arguments.length>=4?[].slice.call(arguments,3):[],s=f.getDataAtRow(t),r=s.slice(e,e+i),a=s.slice(e+i);n.helper.extendArray(o,a);for(var l=0;i>l;)o.push(null),l++;return f.populateFromArray(t,e,[o],null,null,"spliceRow"),r},getVars:{},get:function(t,e){if(c.getVars.row=t,c.getVars.prop=e,f.PluginHooks.run("beforeGet",c.getVars),"string"==typeof c.getVars.prop&&c.getVars.prop.indexOf(".")>-1){var n=c.getVars.prop.split("."),i=l.settings.data[c.getVars.row]; diff --git a/package.json b/package.json index e5d299e6..bb797cbb 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "url": "https://github.com/warpech/angular-ui-handsontable/issues" }, "author": "Marcin Warpechowski ", - "version": "0.3.9", + "version": "0.3.10", "devDependencies": { "grunt": "~0.4.0", "grunt-css": "~0.5.4",