diff --git a/CHANGELOG.md b/CHANGELOG.md index fabd12e1..afc55000 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## HEAD +## 0.3.6 (Mar 26, 2012) Feature: - split-screen.html demo now uses all available space in window diff --git a/dist/angular-ui-handsontable.full.css b/dist/angular-ui-handsontable.full.css index f8540360..025ffeb8 100644 --- a/dist/angular-ui-handsontable.full.css +++ b/dist/angular-ui-handsontable.full.css @@ -1,7 +1,7 @@ /** - * angular-ui-handsontable 0.3.5 + * angular-ui-handsontable 0.3.6 * - * Date: Tue Mar 26 2013 02:37:48 GMT+0100 (Central European Standard Time) + * Date: Tue Mar 26 2013 02:41:07 GMT+0100 (Central European Standard Time) */ /** diff --git a/dist/angular-ui-handsontable.full.js b/dist/angular-ui-handsontable.full.js index 7554282d..dd83cee5 100644 --- a/dist/angular-ui-handsontable.full.js +++ b/dist/angular-ui-handsontable.full.js @@ -1,7 +1,7 @@ /** - * angular-ui-handsontable 0.3.5 + * angular-ui-handsontable 0.3.6 * - * Date: Tue Mar 26 2013 02:37:48 GMT+0100 (Central European Standard Time) + * Date: Tue Mar 26 2013 02:41:07 GMT+0100 (Central European Standard Time) */ /** diff --git a/dist/angular-ui-handsontable.full.min.css b/dist/angular-ui-handsontable.full.min.css index 473af7d5..61ddc72e 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.5 + * angular-ui-handsontable 0.3.6 * - * Date: Tue Mar 26 2013 02:37:50 GMT+0100 (Central European Standard Time) + * Date: Tue Mar 26 2013 02:41:09 GMT+0100 (Central European Standard Time) */ diff --git a/dist/angular-ui-handsontable.full.min.js b/dist/angular-ui-handsontable.full.min.js index 428019c2..36625f25 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.5 + * angular-ui-handsontable 0.3.6 * - * Date: Tue Mar 26 2013 02:37:48 GMT+0100 (Central European Standard Time) + * Date: Tue Mar 26 2013 02:41:07 GMT+0100 (Central European Standard Time) */ document.all&&!document.addEventListener&&(document.createElement("ui-handsontable"),document.createElement("datacolumn"),document.createElement("optionlist")),angular.module("uiHandsontable",[]).directive("uiHandsontable",["$compile",function(t){for(var e=["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"],n={selectedIndex:"=selectedindex"},i=0,s=e.length;s>i;i++)n[e[i]]="="+e[i].toLowerCase();var o={restrict:"EA",scope:n,priority:490,compile:function(n,i){var s,o,r,a={columns:[],colHeaders:!0,outsideClickDeselects:!0,autoComplete:[]},l=function(e,n,i){var s=n.optionList,o=s.match(/^\s*(.+)\s+in\s+(.*)\s*$/);if(!o)throw Error("Expected datarows in form of '_item_ in _collection_' but got '"+s+"'.");var r,a,l,h=o[1],u=o[2],d=e.$new();c.on("blur","textarea",function(){l&&l()}),n.source=function(t,s){l&&l();var o=function(){var t=i.$container.data("handsontable"),n=t.getSelected()[0];return d[i.lhs]=e.$parent.$eval(i.rhs)[n],d.$eval(u)};r=o(),d.$$phase||d.$apply(),s(r),a.$apply(),l=e.$parent.$watch(o,function(e,i){e!==i&&setTimeout(function(){n.source(t,s)},0)}),n.saveOnBlur||(d.$eval(n.value+' = "'+$.trim(t).replace(/"/g,'"')+'"'),d.$apply())},n.sorter=function(t){return t},n.highlighter=function(e){var i,s=d.$new();return s[h]=e,a=s,n.transclude?n.transclude(s,function(t){i=t[0]}):i=t(""+n.optionTemplate+"")(s),i},n.onSelect=function(t,e,i,s,o){d[h]=r[o],d.$eval(n.clickrow),d.$apply()}},c=$('
'),h=i.datarows;if(h&&(s=h.match(/^\s*(.+)\s+in\s+(.*)\s*$/)),!s)throw Error("Expected datarows in form of '_item_ in _collection_' but got '"+h+"'.");return o=s[1],r=s[2],n.data("uiDatagrid",{lhs:o,rhs:r,settings:angular.extend({},a),$container:c}),function(t,n,i){var s,a,h=n.data("uiDatagrid");h.settings=angular.extend(h.settings,t.$parent.$eval(i.uiHandsontable||i.settings));for(s in e)e.hasOwnProperty(s)&&t[e[s]]!==void 0&&(h.settings[e[s]]=t[e[s]]);$(n).append(c);var u=t.$parent.$eval(r);if(u!==void 0&&(h.settings.data=u),h.settings.columns){var d=RegExp("^("+o+"\\.)");for(s=0,a=h.settings.columns.length;a>s;s++)h.settings.columns[s].data=h.settings.columns[s].value.replace(d,""),"autocomplete"===h.settings.columns[s].type&&l(t,h.settings.columns[s],h)}c.handsontable(h.settings),c.on("datachange.handsontable",function(){t.$$phase||t.$apply()}),c.on("selectionbyprop.handsontable",function(e,n,i,s,o){t.$emit("datagridSelection",c,n,i,s,o)});var p=0;for(t.$watch(function(){if(t.$parent.$eval(r)!==c.handsontable("getData"))return!0;var e=c.data("handsontable"),n=e.countRows();if(p!==n)return p=n;for(var i="",s=e.countCols(),o=e.rowOffset(),a=o+e.countVisibleRows();a>o;o++)for(var l=0;s>l;l++)i+=e.getDataAtCell(o,l);return i},function(e,n){1==e?c.handsontable("loadData",t.$parent.$eval(r)):e!==n&&c.handsontable("render")},!1),s=0,a=e.length;a>s;s++)(function(e){t.$watch(e,function(n,i){if(n!==i){if("columns"===e)for(var s=RegExp("^("+o+"\\.)"),r=0,a=n.length;a>r;r++)n[r].data=n[r].value.replace(s,""),"autocomplete"===n[r].type&&l(t,n[r],h);var u={};u[e]=n,c.handsontable("updateSettings",u)}},!0)})(e[s])}}};return o}]).directive("datacolumn",function(){var t={restrict:"E",priority:500,compile:function(t,e){var n=[];for(var i in e)e.hasOwnProperty(i)&&n.push(i);return t.data("uiDatagridColumn",{value:e.value,source:null,saveOnBlur:-1!==$.inArray("saveonblur",n),strict:-1!==$.inArray("strict",n)}),function(t,e,n){var i,s=e.inheritedData("uiDatagrid"),o=t.$parent.$eval(n.title),r=t.$parent.$eval(n.width),a=t.$parent.$eval(n.type),l=n.options,c=t.$new(),h=t.$parent.$eval(l)||{};switch(h.value=n.value,h.type=a,h.title=o,h.width=r,a){case"autocomplete":var u=e.data("uiDatagridColumn");for(i in u)u.hasOwnProperty(i)&&(h[i]=u[i]);break;case"checkbox":n.checkedtemplate!==void 0&&(h.checkedTemplate=t.$parent.$eval(n.checkedtemplate)),n.uncheckedtemplate!==void 0&&(h.uncheckedTemplate=t.$parent.$eval(n.uncheckedtemplate))}n.readonly!==void 0&&(h.readOnly=!0);for(i in n)n.hasOwnProperty(i)&&"$"!==i.charAt(0)&&h[i]===void 0&&(h[i]=c.$eval(n[i]));s.settings.columns.push(h)}}};return t}).directive("optionlist",function(){var t={restrict:"E",transclude:"element",priority:510,compile:function(t,e,n){return function(t,e,i){var s=e.inheritedData("uiDatagridColumn");s.optionList=i.datarows,s.clickrow=i.clickrow,s.transclude=n}}};return t}).directive("selectedindex",function(){var t={restrict:"A",priority:491,compile:function(){return function(t,e){var n,i,s,o=e.data("uiDatagrid"),r=o.$container;r.on("selection.handsontable",function(e,o,r){n=!0,i=o,s=r,t.$$phase||void 0===t.selectedIndex||t.selectedIndex==o||t.$apply(function(){t.selectedIndex=o})}),r.on("deselect.handsontable",function(){n=!1,i=null,t.$$phase||void 0===t.selectedIndex||null==t.selectedIndex||t.$apply(function(){t.selectedIndex=null})}),t.$watch("selectedIndex",function(t){var e=parseInt(t,10);if(t!==void 0&&null!==t&&e!==i){var n=s||0;r.handsontable("selectCell",e,n,e,n,!0)}},!1)}}};return t});var Handsontable={extension:{},helper:{}};(function(t,e,n){"use strict";function i(t){t&&(this.isCellEdited=!1,this.instance=t,this.createElements(),this.bindEvents())}function s(t){t&&(this.isCellEdited=!1,this.instance=t,this.createElements(),this.bindEvents())}function o(t,e,i,s){n.helper.stringify(t.getDataAtRowProp(e,i))===n.helper.stringify(s.checkedTemplate)?t.setDataAtRowProp(e,i,s.uncheckedTemplate):t.setDataAtRowProp(e,i,s.checkedTemplate)}function r(t){t&&(this.isCellEdited=!1,this.instance=t,this.createElements(),this.bindEvents())}function a(t){t&&(this.isCellEdited=!1,this.instance=t,this.createElements(),this.bindEvents())}function l(){var e,i,s,o,r,a,l,c,h,u,d,p=this,f=5;this.beforeInit=function(){this.autoColumnWidths=[]},this.determineColumnWidth=function(p){if(!i){var g=document;a=g.createElement("table"),a.appendChild(g.createElement("thead")).appendChild(g.createElement("tr")).appendChild(g.createElement("th")),l=a.getElementsByTagName("th")[0],a.className="htTable",a.style.tableLayout="auto",a.style.width="auto",o=a.cloneNode(!1),o.appendChild(g.createElement("tbody")).appendChild(g.createElement("tr")).appendChild(g.createElement("td")),r=o.getElementsByTagName("td")[0],c=o.cloneNode(!0),h=c.getElementsByTagName("td")[0],u=o.cloneNode(!0),d=u.getElementsByTagName("td")[0],i=g.createElement("div"),i.className="handsontable hidden",i.appendChild(a),i.appendChild(o),i.appendChild(c),i.appendChild(u),s=t(i),c=s.children().eq(2),u=s.children().eq(3),g.body.appendChild(i)}for(var m=e.countRows(),v={},w=0,y=0;m>y;y++){var b=n.helper.stringify(e.getDataAtCell(y,p)),C=b.length;C>w&&(w=C),v[C]||(v[C]={needed:f,strings:[]}),v[C].needed&&(v[C].strings.push(b),v[C].needed--)}var E=e.getSettings();E.colHeaders&&e.getColHeader(p,l);var x="";for(var T in v)if(v.hasOwnProperty(T))for(var S=0,R=v[T].strings.length;R>S;S++)x+=v[T].strings[S]+"
";r.innerHTML=x,n.helper.empty(d),n.helper.empty(h),i.style.display="block";var k=s.outerWidth(),D=e.getCellMeta(0,p);if(D.renderer){var M=9999999999;h.innerHTML=M,D.renderer(e,d,0,p,e.colToProp(p),M,D),k+=u.width()-c.width()}return i.style.display="none",k},this.determineColumnsWidth=function(){e=this;var t=this.getSettings();if(t.autoColumnSize||!t.colWidths)for(var n=this.countCols(),i=0;n>i;i++)this.autoColumnWidths[i]=p.determineColumnWidth(i)},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 s=t(i.target);if(s.is(".columnSorting")){var o=s.closest("th").index();e.getSettings().rowHeaders&&o--,e.sortColumn===o?e.sortOrder=!e.sortOrder:(e.sortColumn=o,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=o.getSelected();if(e)switch(t){case"row_above":o.alter("insert_row",e[0]);break;case"row_below":o.alter("insert_row",e[2]+1);break;case"col_left":o.alter("insert_col",e[1]);break;case"col_right":o.alter("insert_col",e[3]+1);break;case"remove_row":o.alter(t,e[0],e[2]);break;case"remove_col":o.alter(t,e[1],e[3]);break;case"undo":o.undo();break;case"redo":o.redo()}}function n(t){return o.countRows()>=o.getSettings().maxRows&&("row_above"===t||"row_below"===t)?!0:o.countCols()>=o.getSettings().maxCols&&("col_left"===t||"col_right"===t)?!0:!1}var i,s,o=this,r=o.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!o.isUndoAvailable()}},redo:{name:"Redo",disabled:function(){return!o.isRedoAvailable()}}},l={selector:"#"+r+" table, #"+r+" div",trigger:"right",callback:e},c={},h=o.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,s=h.contextMenu.length;s>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,s,o,r,a=t('
');a.css({position:"absolute",top:"25px",left:0,width:"10px",height:"10px",backgroundColor:"#CCC",opacity:.7}),t(document).mousemove(function(t){n&&(a[0].style.left=r+t.pageX-o+6+"px","none"===a[0].style.display&&(a[0].style.display="block"))}),t(document).mouseup(function(){n&&(s>i&&s--,e.getSettings().rowHeaders&&(i--,s--),e.manualColumnPositions.splice(s,0,e.manualColumnPositions.splice(i,1)[0]),t(".manualColumnMover.active").removeClass("active"),n=!1,e.forceFullRender=!0,e.view.render(),a[0].style.display="none")}),this.beforeInit=function(){this.manualColumnPositions=[]},this.afterInit=function(){if(this.getSettings().manualColumnMove){var l=this;this.rootElement.on("mousedown.handsontable",".manualColumnMover",function(s){e=l;var c=t(s.target),h=c.closest("th");i=h.index(),n=!0,o=s.pageX;var u=l.rootElement.find(".htCore");a.appendTo(u.parent()),a.width(c.parent().width()),a.height(u.height()),r=parseInt(h.offset().left-u.offset().left,10),a[0].style.left=r+6+"px"}),this.rootElement.on("mouseenter.handsontable","td, th",function(){if(n){t(".manualColumnMover.active").removeClass("active");var e=l.rootElement.find("thead th");s=t(this).index();var i=e.eq(s).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,s,o,r,a,l,c=t('
');c.css({position:"absolute",top:0,left:0,width:0,borderRight:"1px dashed #777"}),t(document).mousemove(function(t){e&&(i=a+(t.pageX-r),h(n,i),c[0].style.left=l+i-1+"px","none"===c[0].style.display&&(c[0].style.display="block"))}),t(document).mouseup(function(){e&&(t(".manualColumnResizer.active").removeClass("active"),e=!1,s.forceFullRender=!0,s.view.render(),c[0].style.display="none")}),t(document).dblclick(function(e){t(e.target).is(".manualColumnResizer")&&h(n,R.determineColumnWidth.call(s,n))}),this.beforeInit=function(){this.manualColumnWidths=[]},this.afterInit=function(){if(this.getSettings().manualColumnResize){var h=this;this.rootElement.on("mousedown.handsontable",".manualColumnResizer",function(u){var d=u.target,p=h.rootElement.find(".htCore"),f=t(d.parentNode.parentNode);s=h,n=d.getAttribute("rel"),o=t(h.rootElement[0].getElementsByTagName("col")[f.index()]),e=!0,r=u.pageX,a=o.width(),i=a,d.className+=" active",c.appendTo(p.parent()).height(p.height()),l=parseInt(f.offset().left-p.offset().left,10),c[0].style.left=l+i-1+"px"})}};var h=function(t,e){e=Math.max(e,20),e=Math.min(e,500),s.manualColumnWidths[t]=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(t,e){this.instance=t,this.settings=e,this.wtDom=this.instance.wtDom,this.main=document.createElement("div"),this.main.style.position="absolute",this.main.style.top=0,this.main.style.left=0;for(var n=0;5>n;n++){var i=document.createElement("DIV");i.className="wtBorder "+(e.className||""),i.style.backgroundColor=e.border.color,i.style.height=e.border.width+"px",i.style.width=e.border.width+"px",this.main.appendChild(i)}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.corner=this.main.childNodes[4],this.corner.className+=" corner",this.corner.style.width="5px",this.corner.style.height="5px",this.corner.style.border="2px solid #FFF",this.disappear(),t.wtTable.hider.appendChild(this.main)}function g(t){var e=[];if(this.wtSettings=new C(this,t),this.wtDom=new m(this),this.wtTable=new E(this),this.wtScroll=new w(this),this.wtWheel=new x(this),this.wtEvent=new v(this),this.wtTable.THEAD.childNodes.length&&this.wtTable.THEAD.childNodes[0].childNodes.length){for(var n=0,i=this.wtTable.THEAD.childNodes[0].childNodes.length;i>n;n++)e.push(this.wtTable.THEAD.childNodes[0].childNodes[n].innerHTML);this.hasSetting("columnHeaders")||this.update("columnHeaders",function(t,n){n.innerHTML=e[t]})}this.selections={};var s=this.getSetting("selections");if(s)for(var o in s)s.hasOwnProperty(o)&&(this.selections[o]=new b(this,s[o]));this.drawn=!1}function m(t){t&&(this.instance=t),this.tdCache=[]}function v(e){var n=this;this.instance=e,this.wtDom=this.instance.wtDom;var i=[null,null,null,null];this.instance.dblClickTimeout=null;var s,o=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!==s&&(s=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",o),t(this.instance.wtTable.TABLE).on("mouseover",r),t(this.instance.wtTable.parent).on("mouseup",a)}function w(t){this.instance=t,this.wtScrollbarV=new y(t,"vertical"),this.wtScrollbarH=new y(t,"horizontal")}function y(e,n){var i=this;this.instance=e,this.type=n,this.$table=t(this.instance.wtTable.TABLE),this.slider=document.createElement("DIV"),this.slider.style.position="absolute",this.slider.style.top="0",this.slider.style.left="0",this.slider.style.display="none",this.slider.className="dragdealer "+n,this.handle=document.createElement("DIV"),this.handle.className="handle",this.slider.appendChild(this.handle),this.instance.wtTable.parent.appendChild(this.slider);var s=!0;this.dragTimeout=null;var o,r=function(){i.onScroll(o)};this.dragdealer=new B(this.slider,{vertical:"vertical"===n,horizontal:"horizontal"===n,slide:!1,speed:100,animationCallback:function(t,e){return s?(s=!1,void 0):(i.skipRefresh=!0,o="vertical"===n?e:t,null===i.dragTimeout&&(i.dragTimeout=setInterval(r,100),r()),void 0)},callback:function(t,e){i.skipRefresh=!1,clearInterval(i.dragTimeout),i.dragTimeout=null,o="vertical"===n?e:t,i.onScroll(o)}}),i.skipRefresh=!1}function b(t,e){this.instance=t,this.settings=e,this.selected=[],this.wtDom=new m(this.instance),e.border&&(this.border=new f(t,e))}function C(t,e){var n=this;this.instance=t,this.defaults={table:void 0,async:!1,scrollH:"auto",scrollV:"auto",stretchH:"hybrid",currentRowClassName:null,currentColumnClassName:null,data:void 0,offsetRow:0,offsetColumn:0,frozenColumns:null,columnHeaders:null,totalRows:void 0,totalColumns:void 0,width:null,height:null,cellRenderer:function(t,e,i){var s=n.getSetting("data",t,e);void 0!==s?i.innerHTML=s:this.wtDom.empty(i)},columnWidth:50,selections:null,onCellMouseDown:null,onCellMouseOver:null,onCellDblClick:null,onCellCornerMouseDown:null,onCellCornerDblClick: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]}this.rowHeightCache=[]}function E(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),this.TABLE.setAttribute("tabindex",1e4),this.visibilityStartRow=this.visibilityStartColumn=this.visibilityEdgeRow=this.visibilityEdgeColumn=null;var n=this.TABLE.parentNode;if(!n||1!==n.nodeType||!this.wtDom.hasClass(n,"wtHolder")){var i=document.createElement("DIV");this.instance.hasSetting("width")&&this.instance.hasSetting("height")&&(i.style.position="absolute",i.style.top="0",i.style.left="0",i.style.width="4000px",i.style.height="4000px"),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 s=document.createElement("DIV");s.style.position="relative",s.className="wtHider",n&&n.insertBefore(s,this.spreader),s.appendChild(this.spreader)}if(this.hider=this.spreader.parentNode,n=this.hider.parentNode,!n||1!==n.nodeType||!this.wtDom.hasClass(n,"wtHolder")){var o=document.createElement("DIV");o.style.position="relative",o.className="wtHolder",n&&n.insertBefore(o,this.hider),o.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.hasSetting("columnHeaders")&&!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}function x(e){var n=this;this.instance=e,t(this.instance.wtTable.TABLE).on("mousewheel",function(t,e,i,s){clearTimeout(n.instance.wheelTimeout),n.instance.wheelTimeout=setTimeout(function(){s?n.instance.scrollVertical(-Math.ceil(s)).draw():i&&n.instance.scrollHorizontal(Math.ceil(i)).draw()},0),t.preventDefault()})}function T(t){var e=this;t=t||document.body,this.elDiv=document.createElement("DIV"),this.elDiv.style.position="fixed",this.elDiv.style.top=0,this.elDiv.style.left=0,t.appendChild(this.elDiv),this.elTextarea=document.createElement("TEXTAREA"),this.elTextarea.className="copyPaste",this.elTextarea.style.width="1px",this.elTextarea.style.height="1px",this.elDiv.appendChild(this.elTextarea),this.elTextarea.style.opacity!==void 0&&(this.elTextarea.style.opacity=0),this._bindEvent(t,"keydown",function(t){var n=!1;t.metaKey?n=!0:t.ctrlKey&&-1===navigator.userAgent.indexOf("Mac")&&(n=!0),n&&(e.selectNodeText(e.elTextarea),setTimeout(function(){e.selectNodeText(e.elTextarea)},0)),!n||67!==t.keyCode&&86!==t.keyCode&&88!==t.keyCode||(88===t.keyCode?setTimeout(function(){e.triggerCut(t)},0):86===t.keyCode&&setTimeout(function(){e.triggerPaste(t)},0))})}n.Core=function(i,s){function o(e,n){for(var i=t.Deferred(),s=[],o=function(n){var i=t.Deferred();s.push(i);var o=e[n][3],r="string"==typeof o?o.toLowerCase():null;return function(t){for(var s=!1,a=0,l=t.length;l>a;a++){if(o===t[a]){s=!0;break}if(r===t[a].toLowerCase()){e[n][3]=t[a],s=!0;break}}s||(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],o(r)):o(r)(a.source))}return t.when.apply(t,s).then(function(){for(var s=e.length-1;s>=0;s--)if(null===e[s])e.splice(s,1);else{var o=f.getCellMeta(e[s][0],c.propToCol(e[s][1]));"number"===o.dataType&&"string"==typeof e[s][3]&&e[s][3].length>0&&/^[0-9\s]*[.]*[0-9]*$/.test(e[s][3])&&(e[s][3]=numeral().unformat(e[s][3]||"0"))}if(l.settings.onBeforeChange&&e.length){var r=l.settings.onBeforeChange.apply(f.rootElement[0],[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=0,i=t.length;if(i){for(;i>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]),n++}f.forceFullRender=!0,h.keepEmptyRows(),u.refreshBorders(),g("datachange.handsontable",[t,e||"edit"])}}function a(e,n,i){return"object"==typeof e?e:t.isPlainObject(i)?value:[[e,n,i]]}this.rootElement=i,this.guid="ht_"+n.helper.randomString(),this.rootElement[0].id||(this.rootElement[0].id=this.guid);var l,c,h,u,d,p,f=this;l={settings:{},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 s,o;if(n===void 0&&(n=0,i=""),t.isPlainObject(e))for(o in e)e.hasOwnProperty(o)&&(null===e[o]?(s=i+o,l.colToProp.push(s),l.propToCol[s]=n,n++):n=c.recursiveDuckColumns(e[o],n,o+"."));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.PluginModifiers.run(f,"col",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.PluginModifiers.run(f,"col",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 s=0,o=f.countCols();o>s;s++)n.push(null)}else n="function"===l.dataType?l.settings.dataSchema(e):t.extend(!0,{},c.getSchema());l.settings.onCreateRow&&l.settings.onCreateRow(e,n),e===i?l.settings.data.push(n):l.settings.data.splice(e,0,n),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,n=f.countRows();if("number"!=typeof t||t>=f.countCols())for(;n>e;e++)l.settings.data[e]===void 0&&(l.settings.data[e]=[]),l.settings.data[e].push("");else for(;n>e;e++)l.settings.data[e].splice(t,0,"");f.forceFullRender=!0},removeRow:function(t,e){e||(e=1),"number"!=typeof t&&(t=-e),l.settings.data.splice(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=0,i=f.countRows();i>n;n++)l.settings.data[n].splice(t,e);f.forceFullRender=!0},getVars:{},get:function(t,e){if(c.getVars.row=t,c.getVars.prop=e,n.PluginHooks.run(f,"beforeGet",c.getVars),"string"==typeof c.getVars.prop&&c.getVars.prop.indexOf(".")>-1){var i=c.getVars.prop.split("."),s=l.settings.data[c.getVars.row];if(!s)return null;for(var o=0,r=i.length;r>o;o++)if(s=s[i[o]],s===void 0)return null;return s}return"function"==typeof c.getVars.prop?c.getVars.prop(l.settings.data.slice(c.getVars.row,c.getVars.row+1)[0]):l.settings.data[c.getVars.row]?l.settings.data[c.getVars.row][c.getVars.prop]:null},setVars:{},set:function(t,e,i){if(c.setVars.row=t,c.setVars.prop=e,c.setVars.value=i,n.PluginHooks.run(f,"beforeSet",c.setVars),"string"==typeof c.setVars.prop&&c.setVars.prop.indexOf(".")>-1){for(var s=c.setVars.prop.split("."),o=l.settings.data[c.setVars.row],r=0,a=s.length-1;a>r;r++)o=o[s[r]];o[s[r]]=c.setVars.value}else"function"==typeof c.setVars.prop?c.setVars.prop(l.settings.data.slice(c.setVars.row,c.setVars.row+1)[0],c.setVars.value):l.settings.data[c.setVars.row][c.setVars.prop]=c.setVars.value},clear:function(){for(var t=0;f.countRows()>t;t++)for(var e=0;f.countCols()>e;e++)c.set(t,c.colToProp(e),"")},getAll:function(){return l.settings.data},getRange:function(t,e){var n,i,s,o,r,a=[];for(i=Math.max(t.row,e.row),o=Math.max(t.col,e.col),n=Math.min(t.row,e.row);i>=n;n++){for(r=[],s=Math.min(t.col,e.col);o>=s;s++)r.push(c.get(n,c.colToProp(s)));a.push(r)}return a},getText:function(t,e){return SheetClip.stringify(c.getRange(t,e))}},h={alter:function(e,n,i){var s,o,r,a,d,p,m,v;switch(s=t.extend(!0,[],c.getAll()),e){case"insert_row":for(i||(i=1),v=0;i>v&&f.countRows()=n?(l.selStart.row(l.selStart.row()+v),u.transformEnd(v,0)):u.refreshBorders());break;case"insert_col":for(i||(i=1),v=0;i>v&&f.countCols()=n?(l.selStart.col(l.selStart.col()+v),u.transformEnd(0,v)):u.refreshBorders());break;case"remove_row":c.removeRow(n,i),h.keepEmptyRows(),u.refreshBorders();break;case"remove_col":c.removeCol(n,i),h.keepEmptyRows(),u.refreshBorders();break;default:throw Error('There is no such action "'+e+'"')}for(r=[],o=c.getAll(),a=0,d=o.length;d>a;a++)for(p=0,m=o[a].length;m>p;p++)r.push([a,p,s[a]?s[a][p]:null,o[a][p]]);g("datachange.handsontable",[r,"alter"]),h.keepEmptyRows()},keepEmptyRows:function(){var t,e,n,i=f.countEmptyRows(!0);if(e=f.countRows(),l.settings.minRows>e)for(t=0;l.settings.minRows-e>t;t++)c.createRow();if(l.settings.minSpareRows>i)for(;l.settings.minSpareRows>i&&f.countRows()n)for(;l.settings.minSpareCols>n&&f.countCols()l.settings.minRows&&l.settings.minSpareRows&&i>l.settings.minSpareRows;i--)c.removeRow();if(l.settings.enterBeginsEditing&&!l.settings.columns)for(;(l.settings.minCols||l.settings.minSpareCols)&&f.countCols()>l.settings.minCols&&l.settings.minSpareCols&&n>l.settings.minSpareCols;n--)c.removeCol();var s=f.countRows(),o=f.countCols();if((0===s||0===o)&&u.deselect(),l.selStart.exists()){var r,a=l.selStart.row(),h=l.selStart.col(),d=l.selEnd.row(),p=l.selEnd.col();a>s-1?(a=s-1,r=!0,d>a&&(d=a)):d>s-1&&(d=s-1,r=!0,a>d&&(a=d)),h>o-1?(h=o-1,r=!0,p>h&&(p=h)):p>o-1&&(p=o-1,r=!0,h>p&&(h=p)),r&&f.selectCell(a,h,d,p)}},populateFromArray:function(t,e,n,i){var s,o,r,a,c=[],h={};if(o=e.length,0===o)return!1;for(h.row=t.row,h.col=t.col,s=0;o>s&&!(n&&h.row>n.row||!l.settings.minSpareRows&&h.row>f.countRows()-1||h.row>=l.settings.maxRows);s++){for(h.col=t.col,a=e[s]?e[s].length:0,r=0;a>r&&!(n&&h.col>n.col||!l.settings.minSpareCols&&h.col>f.countCols()-1||h.col>=l.settings.maxCols);r++)f.getCellMeta(h.row,h.col).isWritable&&c.push([h.row,h.col,e[s][r]]),h.col++,n&&r===a-1&&(r=-1);h.row++,n&&s===o-1&&(s=-1)}f.setDataAtCell(c,null,null,i||"populateFromArray")},getCornerCoords:function(e){function n(e,n,i){function s(t){return t[i]}return Array.prototype.map?e.apply(Math,n.map(s)):e.apply(Math,t.map(n,s))}return{TL:{row:n(Math.min,e,"row"),col:n(Math.min,e,"col")},BR:{row:n(Math.max,e,"row"),col:n(Math.max,e,"col")}}},getCellsAtCoords:function(t,e){var n,i,s=h.getCornerCoords([t,e]),o=[];for(n=s.TL.row;s.BR.row>=n;n++)for(i=s.TL.col;s.BR.col>=i;i++)o.push(f.view.getCellAtCoords({row:n,col:i}));return o}},this.selection=u={inProgress:!1,begin:function(){f.selection.inProgress=!0},finish:function(){var t=f.getSelected();f.rootElement.triggerHandler("selectionend.handsontable",t),f.rootElement.triggerHandler("selectionendbyprop.handsontable",[t[0],f.colToProp(t[1]),t[2],f.colToProp(t[3])]),f.selection.inProgress=!1},isInProgress:function(){return f.selection.inProgress},setRangeStart:function(t){l.selStart.coords(t),u.setRangeEnd(t) diff --git a/package.json b/package.json index 67347e2c..8d29a571 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.5", + "version": "0.3.6", "devDependencies": { "grunt": "~0.4.0", "grunt-css": "~0.5.4",