Built files from Bizgaze WebServer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

autofill.min.js 18KB

1
  1. var Unibase;(function(n){let t;(function(t){let i;(function(t){let i;(function(t){let i;(function(t){class i{constructor(){this.hederText={};this.colType={String:"string",Number:"number",Custom:"custom",Formula:"formula",Time:"time",LongDate:"longdate",ShortDate:"shortdate",Scientific:"scientific",Fraction:"fraction",Text:"text",General:"general",Accounting:"accounting",Currency:"currency",Percentage:"percentage",Date:"date",DateTime:"datetime"};this.customList=[["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["January","February","March","April","May","June","July","August","September","October","November","December"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]];this.UC={uniqueOBracket:String.fromCharCode(129),uniqueCBracket:String.fromCharCode(130),uniqueCSeparator:String.fromCharCode(131),uniqueCOperator:String.fromCharCode(132),uniquePOperator:String.fromCharCode(133),uniqueSOperator:String.fromCharCode(134),uniqueMOperator:String.fromCharCode(135),uniqueDOperator:String.fromCharCode(136),uniqueModOperator:String.fromCharCode(137),uniqueConcateOperator:String.fromCharCode(138),uniqueEqualOperator:String.fromCharCode(139),uniqueExpOperator:String.fromCharCode(140),uniqueGTOperator:String.fromCharCode(141),uniqueLTOperator:String.fromCharCode(142)}}init(n){this.base=n;this.ssObj=n.ssObj;this.initProp()}initProp(){this.beforeSelectFn=this.beforeSelect.bind(this);this.base.ssObj.addEventListener("beforeSelect",this.beforeSelectFn);this.selectFn=this.selected.bind(this);this.base.ssObj.addEventListener("select",this.selectFn);this.actionCompleteFn=this.updateAutofill.bind(this);this.base.ssObj.addEventListener("actionComplete",this.actionCompleteFn);this.createdFn=this.created.bind(this);this.base.ssObj.addEventListener("created",this.createdFn);this.dataBoundFn=this.dataBound.bind(this);this.base.ssObj.addEventListener("dataBound",this.dataBoundFn);this.cellEditFn=this.cellEdit.bind(this);this.base.ssObj.addEventListener("cellEditing",this.cellEditFn);this.cellSaveFn=this.cellSave.bind(this);this.base.ssObj.addEventListener("cellSave",this.cellSaveFn);this.base.ssObj.on("activeSheetChanged",this.updateAutofill,this);this.base.ssObj.on("mouseDown",this.mouseDown,this)}destroy(){this.base.ssObj.removeEventListener("beforeSelect",this.beforeSelectFn);this.base.ssObj.removeEventListener("select",this.selectFn);this.base.ssObj.removeEventListener("actionComplete",this.actionCompleteFn);this.base.ssObj.removeEventListener("created",this.createdFn);this.base.ssObj.removeEventListener("dataBound",this.dataBoundFn);this.base.ssObj.removeEventListener("cellEditing",this.cellEditFn);this.base.ssObj.removeEventListener("cellSave",this.cellSaveFn);this.base.ssObj.off("activeSheetChanged",this.updateAutofill);this.base.ssObj.on("mouseDown",this.mouseDown,this);ej.base.EventHandler.remove(this.base.ssObj.element,"mouseup",this.mouseUp);ej.base.EventHandler.remove(this.base.ssObj.element,"keydown",this.keypress);ej.base.EventHandler.remove(this.base.ssObj.element,"dblclick",this.dblClick)}cellEdit(){this.hideAutofill()}cellSave(){this.updateAutofill()}dataBound(){this.updateAutofill()}createBorders(){if(!this.base.ssObj.element.getElementsByClassName("biz-af-bdr")[0]){let n=this.base.ssObj.element.getElementsByClassName("e-sheet-content")[0];this.bdrAF=n.appendChild(ej.base.createElement("div",{className:"biz-af-bdr"}))}}hideBorders(){this.bdrAF&&(this.bdrAF.style.display="none")}showBorders(){this.bdrAF&&(this.bdrAF.style.display="")}updateBorderDirection(n){this.bdrAF.style.borderRightWidth="1px";this.bdrAF.style.borderLeftWidth="1px";this.bdrAF.style.borderTopWidth="1px";this.bdrAF.style.borderBottomWidth="1px";this.bdrAF.style["border"+n+"Width"]="0px"}mouseDown(n){if(n.target.classList.contains("biz-autofill")){this.isDrag=!0;ej.base.EventHandler.add(this.base.ssObj.element,"mousemove",this.mouseMoveHandler,this);this.x=n.clientX;this.y=n.clientY;this.indexes=this.base.ssObj.biz.getIndexes();this.createBorders();let t=this.base.ssObj.element.getElementsByClassName("e-selection")[0],i=this.base.ssObj.element.getElementsByClassName("e-active-cell")[0];this.selection=t.classList.contains("e-hide")?i:t;this.selOffset=this.selection.getBoundingClientRect();this.parentOffset=this.selection.offsetParent.getBoundingClientRect();this.left=parseInt(this.selection.style.left);this.top=parseInt(this.selection.style.top)}}mouseUp(){this.isDrag=!1;ej.base.EventHandler.remove(this.base.ssObj.element,"mousemove",this.mouseMoveHandler);this.direction!=undefined&&this.autoFill();this.direction=undefined;this.hideBorders();this.isDragged=!1;this.prevTarget=undefined}createAutofill(){if(!this.base.ssObj.element.getElementsByClassName("biz-autofill")[0]){this.element=document.createElement("div");this.element.classList.add("biz-autofill");let n=this.base.ssObj.element.getElementsByClassName("e-sheet-content")[0];n&&n.appendChild(this.element)}this.element.classList.remove("biz-hide")}updateAutofill(){this.base.ssObj.isEdit?this.hideAutofill():this.positionAutofill()}dblClick(){setTimeout(()=>{this.hideAutofill()},1)}positionAutofill(){setTimeout(()=>{this.createAutofill();let t=this.base.ssObj.element.getElementsByClassName("e-selection")[0],n=this.base.ssObj.element.getElementsByClassName("e-active-cell")[0];t&&!t.classList.contains("e-hide")&&(n=t);this.element&&n&&(this.element.style.top=parseInt(n.style.top)+parseInt(n.style.height)-6+"px");this.element&&n&&(this.element.style.left=parseInt(n.style.left)+parseInt(n.style.width)+-5+"px")},10)}hideAutofill(){let n=this.base.ssObj.element.getElementsByClassName("biz-autofill")[0];n&&n.classList.add("biz-hide")}mouseMoveHandler(n){n.preventDefault();let v=n.clientX,y=n.clientY;if(n.target!==this.prevTarget){let a=ej.base.closest(n.target,"tr"),l=ej.base.closest(n.target,".e-cell");if(this.isDragged||this.showBorders(),this.isDragged=!0,a&&l){let t=parseInt(l.getAttribute("aria-colindex"))-1,i=parseInt(a.getAttribute("aria-rowindex"))-1;if(this.indexes[0]<=i&&this.indexes[2]>=i&&this.indexes[1]<=t&&this.indexes[3]>=t){this.hideBorders();return}let p=l.getBoundingClientRect(),r="px";this.showBorders();let u=this.base.ssObj.biz.getActiveSheet(),o=this.base.ssObj.frozenRowCount(u),s=this.base.ssObj.frozenColCount(u),f,h,e,c;switch(!0){case this.indexes[3]<t&&this.indexes[0]-i<t-this.indexes[3]&&i-this.indexes[2]<t-this.indexes[3]:this.direction="right";f=this.left+this.selOffset.width;h=ej.spreadsheet.getCellPosition(u,[i-1,t+1],o,s).left-(this.left+this.selOffset.width);this.updateBorderDirection("Left");this.bdrAF.style.top=this.top+r;this.bdrAF.style.left=f+r;this.bdrAF.style.height=this.selOffset.height+r;this.bdrAF.style.width=h+r;this.fIndexes=[this.indexes[0],this.indexes[3]+1,this.indexes[2],t];this.startCell={rowIndex:this.indexes[0],colIndex:this.indexes[1]};this.endCell={rowIndex:this.indexes[2],colIndex:t};break;case this.indexes[1]>t&&this.indexes[0]-i<=this.indexes[1]-t&&i-this.indexes[2]<this.indexes[1]-t:this.direction="left";f=ej.spreadsheet.getCellPosition(u,[i-1,t],o,s).left;h=this.left-f;this.updateBorderDirection("Right");this.bdrAF.style.top=this.top+r;this.bdrAF.style.left=f+r;this.bdrAF.style.height=this.selOffset.height+r;this.bdrAF.style.width=h+r;this.fIndexes=[this.indexes[0],t,this.indexes[2],this.indexes[3]-1];this.startCell={rowIndex:this.indexes[0],colIndex:t};this.endCell={rowIndex:this.indexes[2],colIndex:this.indexes[3]};break;case this.indexes[0]>i:this.direction="up";e=ej.spreadsheet.getCellPosition(u,[i,t-1],o,s).top;c=this.top-e;this.updateBorderDirection("Bottom");this.bdrAF.style.top=e+r;this.bdrAF.style.left=this.left+r;this.bdrAF.style.height=c+r;this.bdrAF.style.width=this.selOffset.width+r;this.fIndexes=[i,this.indexes[1],this.indexes[0]-1,this.indexes[3]];this.startCell={rowIndex:i,colIndex:this.indexes[1]};this.endCell={rowIndex:this.indexes[2],colIndex:this.indexes[3]};break;case this.indexes[2]<i:this.direction="down";e=this.top+this.selOffset.height;c=ej.spreadsheet.getCellPosition(u,[i+1,t-1],o,s).top-(this.top+this.selOffset.height);this.updateBorderDirection("Top");this.bdrAF.style.top=e+r;this.bdrAF.style.left=this.left+r;this.bdrAF.style.height=c+r;this.bdrAF.style.width=this.selOffset.width+r;this.fIndexes=[this.indexes[2]+1,this.indexes[1],i,this.indexes[3]];this.startCell={rowIndex:this.indexes[0],colIndex:this.indexes[1]};this.endCell={rowIndex:i,colIndex:this.indexes[3]};break;default:this.direction=undefined}this.prevTarget=n.target;this.drawAutoFill(n)}}}drawAutoFill(){}selected(n){this.range=n.range;this.updateAutofill()}beforeSelect(n){this.isDrag&&(n.cancel=!0);this.hideAutofill()}created(){ej.base.EventHandler.add(this.base.ssObj.element,"mouseup",this.mouseUp,this);ej.base.EventHandler.add(this.base.ssObj.element,"keydown",this.keypress,this);ej.base.EventHandler.add(this.base.ssObj.element,"dblclick",this.dblClick,this)}keypress(){this.updateAutofill()}autoFill(){let t={},i=this.base.getSheetIndex();t.sheetIdx=i;t.dataRange=this.indexes;t.fillRange=this.fIndexes;this.base.ssObj.updateUndoRedoCollection({name:"bizAction",args:{action:"autofill",options:t,direction:this.direction,oldCells:this.base.getCellsFromIndexes(t.fillRange)}});this.applyValues(t);this.base.ssObj.selectRange(this.base.generateHeaderText(this.startCell.colIndex+1)+(this.startCell.rowIndex+1)+":"+this.base.generateHeaderText(this.endCell.colIndex+1)+(this.endCell.rowIndex+1));n.Apps.Collaboration.Components.Common.Download.Instance().ssAutoSave({action:"autofill"},this.base,!0);this.updateAutofill()}applyAutofill(n,t){this.direction=t;this.applyValues(n);this.direction=undefined}applyValues(t){let v={Down:"down",Up:"up",Left:"left",Right:"right"},r,tt,u,i,b,k,c,o,y,f,it,s,p,d,rt,h,g,l,ut,e,nt=0,ct={},ft=t.dataRange[0],et=t.dataRange[1],ot=t.dataRange[2],st=t.dataRange[3],lt=t.fillRange[0],at=t.fillRange[1],vt=t.fillRange[2],yt=t.fillRange[3],w=[v.Down,v.Up].indexOf(this.direction)>-1,a=[v.Up,v.Left].indexOf(this.direction)>-1,ht=this.base.ssObj.biz.getActiveSheet(),pt=w?st-et:ot-ft;while(nt<=pt){if(b=this.updateFillValues(w,ft,et,ot,st,lt,at,vt,yt,nt),k=b.patrnRange,c=b.fillRange,u=this.createPattern(k,{isRFill:a,isVFill:w}),o=this.getData(k),y=this.getRawData(o),it=y.length,!u)return;for(tt=u.length,l=this.getSelectedRange({rowIndex:c[0],colIndex:c[1]},{rowIndex:c[2],colIndex:c[3]}),ut=l.length,a&&(l=l.reverse(),u=u.reverse(),u=this.ensurePattern(u),o=o.reverse(),y=y.reverse()),s=0;s<ut;){ct={};e=l[s];i=u[s%tt];this.isNumber(i)&&(i=u[i]);switch(i.type){case this.colType.Number:r=this.round(i.regVal.a+i.regVal.b*i.i,5);a?i.i--:i.i++;break;case this.colType.String:r=i.val[i.i%i.val.length];i.i++;break;case this.colType.Formula:for(g=!1,r="=",p=0,rt=i.val.length;p<rt;)f=i.val[p],this.isObject(f)?(g=!0,h=this.round(f.a+f.b*i.i,0),r+=h<1?"#REF!":w?f.c+(f.b?h:"$"+h):(f.b?this.base.generateHeaderText(h):"$"+this.base.generateHeaderText(h))+f.c):r+=f,p++;g&&a?i.i--:i.i++;break;case this.colType.Custom:r=this.round(i.regVal.a+i.regVal.b*i.i,0);r<0&&(r=r%i.len+i.len);r>=i.len&&(r=r%i.len);r=i.val[r];a?i.i--:i.i++}d=s%it;let n=ej.spreadsheet.getCell(e.rowIndex,e.colIndex,ht);o[d]?(n=this.formObjFromValues(o[d],["style","format","wrap","isLocked","validation","hyperlink",]),n.value=r):n={};this.base.ssObj.biz.setCell(e.rowIndex,e.colIndex,ht,n);n.validation&&n.validation.isHighlighted&&this.base.ssObj.addInvalidHighlight(this.base.generateHeaderText(e.colIndex+1)+(e.rowIndex+1));s++}nt++}let wt={options:t,direction:this.direction,action:"autofill",origin:"biz",sheetIndex:this.base.getSheetIndex()};n.Apps.Collaboration.Components.Sheets.Base.Instance().bizSignalr(wt)}formObjFromValues(n,t){let i={};for(let r=0;r<t.length;r++)n[t[r]]&&(i[t[r]]=n[t[r]]);return i}updateFillValues(n,t,i,r,u,f,e,o,s,h){let c,l,a,v,y,p;return n?(c={rowIndex:t,colIndex:i+h},l={rowIndex:r,colIndex:i+h},a={rowIndex:f,colIndex:e+h},v={rowIndex:o,colIndex:e+h}):(c={rowIndex:t+h,colIndex:i},l={rowIndex:t+h,colIndex:u},a={rowIndex:f+h,colIndex:e},v={rowIndex:f+h,colIndex:s}),y=[c.rowIndex,c.colIndex,l.rowIndex,l.colIndex],p=[a.rowIndex,a.colIndex,v.rowIndex,v.colIndex],{patrnRange:y,fillRange:p}}createPattern(n,t){let r,e,o,l,s,f,h=0,u=[],c=this.createDataPattern(n),a=c.length,i;if(c){while(h<a){i=c[h];switch(i.type){case this.colType.Number:for(e=u.length,f=i.val.length,s=t.isRFill?-1:f,f===1&&i.val.push(i.val[0]+1),l=this.getPredictionValue(i.val),o={regVal:l,type:i.type,i:s},u.push(o),r=1;r<f;)u.push(e),r++;break;case this.colType.String:for(e=u.length,o={val:i.val,type:i.type,i:0},u.push(o),r=1,f=i.val.length;r<f;)u.push(e),r++;break;case this.colType.Formula:if(f=i.val.length,i=this.createFormulaPattern(i.val,t),s=t.isRFill?-1:f,i.isInPattern)for(e=u.length,o={val:i.val,type:this.colType.Formula,i:s},u.push(o),r=1;r<f;)u.push(e),r++;else for(r=0,s=t.isRFill?-1:1;r<f;)u.push({val:i.val[r],type:this.colType.Formula,i:s}),r++}h++}return u}}createDataPattern(n){let i,r,u=0,t={},f=[],e;e=this.getData(n);let o=this.getRawData(e),s=o.length;if(s){while(u<s)i=o[u],r=this.getType(i),u===0?t={val:[i],type:r}:r===t.type?t.val.push(i):(f.push(t),t={val:[i],type:r}),u++;return f.push(t),f}}createFormulaPattern(n,t){let r,o,f,s,e=[],i=0,h=n.length,u;while(i<h)e.push(this.parseFormula(n[i])),i++;if(s=this.isInPattern(e,t.isVFill),s){for(r=e[0],i=r.length;i--;)f=r[i],u=this.isCellReference(f),u&&u!=="absolute"&&(r[i]=this.getCellRefPrediction(f,t,null,u));return{isInPattern:s,val:r}}for(i=0;i<h;){for(r=e[i],o=r.length;o--;)f=r[o],u=this.isCellReference(f),u&&u!=="absolute"&&(e[i][o]=this.getCellRefPrediction(f,t,h,u));i++}return{isInPattern:s,val:e}}parseFormula(n){var t,i,f,u=0,r=[];for(n=this.markSpecialChar(n.replace("=","")),n=n.split(/\(|\)|=|\^|>|<|,|:|\+|-|\*|\/|%|&/g),f=n.length;u<f;){if(t=n[u],!t){u++;continue}t.length===1?r.push(this.isUniqueChar(t)?this.getUniqueCharVal(t):t):(i=t[0],t.indexOf("!")>0?(this.isUniqueChar(i)&&(r.push(this.getUniqueCharVal(i)),t=t.substr(1)),i=t.indexOf("!")+1,r.push(t.substr(0,i)),r.push(t.substr(i))):this.isUniqueChar(i)?(r.push(this.getUniqueCharVal(i)),r.push(t.substr(1))):r.push(t));u++}return r}getUniqueCharVal(n){switch(n){case this.UC.uniqueOBracket:return"(";case this.UC.uniqueCBracket:return")";case this.UC.uniqueCSeparator:return",";case this.UC.uniqueCOperator:return":";case this.UC.uniquePOperator:return"+";case this.UC.uniqueSOperator:return"-";case this.UC.uniqueMOperator:return"*";case this.UC.uniqueDOperator:return"/";case this.UC.uniqueModOperator:return"%";case this.UC.uniqueConcateOperator:return"&";case this.UC.uniqueEqualOperator:return"=";case this.UC.uniqueExpOperator:return"^";case this.UC.uniqueGTOperator:return">";case this.UC.uniqueLTOperator:return"<"}return""}isUniqueChar(n){var t=n.charCodeAt(n);return t>=129&&t<=142}markSpecialChar(n){return n=n.replace(/\(/g,"("+this.UC.uniqueOBracket).replace(/\)/g,")"+this.UC.uniqueCBracket),n=n.replace(/,/g,","+this.UC.uniqueCSeparator).replace(/:/g,":"+this.UC.uniqueCOperator),n=n.replace(/\+/g,"+"+this.UC.uniquePOperator).replace(/-/g,"-"+this.UC.uniqueSOperator),n=n.replace(/\*/g,"*"+this.UC.uniqueMOperator).replace(/\//g,"/"+this.UC.uniqueDOperator),n=n.replace(/&/g,"&"+this.UC.uniqueConcateOperator),n=n.replace(/=/g,"="+this.UC.uniqueEqualOperator),n=n.replace(/\^/g,"^"+this.UC.uniqueExpOperator),n=n.replace(/>/g,">"+this.UC.uniqueGTOperator).replace(/</g,"<"+this.UC.uniqueLTOperator),n.replace(/%/g,"%"+this.UC.uniqueModOperator)}isInPattern(n,t){var e,i,o,l,r,u,s,h,f="",a=0,c=1,v=n.length,y=new RegExp("[0-9$]","g"),p=new RegExp("[a-z$]","gi");if(v===1)return!1;while(c<v){if(e=n[a],o=n[c],i=e.length,l=o.length,i!==l)return!1;while(i--)if(r=e[i],u=o[i],this.isCellReference(r)===this.isCellReference(u)){if(t?(s=Number(r.replace(p,f)),h=Number(u.replace(p,f))):(s=this.generateColCount(r.replace(y,f)),h=this.generateColCount(u.replace(y,f))),s!==h-1)return!1}else if(r!==u)return!1;a++;c++}return!0}generateColCount(n){var i=0,t;for(n=n.split("").reverse().join(""),t=n.length-1;t>=0;t--)i+=(n[t].charCodeAt(n[t])-64)*Math.pow(26,t);return i}getData(n){let i=this.base.ssObj.biz.getActiveSheet(),r=[],u,t=this.base.swapRange(n);for(let n=t[0];n<=t[2];n++)for(let f=t[1];f<=t[3];f++)u=i.rows[n]?i.rows[n].cells[f]:undefined,r.push(u);return r}getRawData(n){let i=n.length,t=[];for(let r=0;r<i;r++)n[r]&&n[r].value&&n[r].value.length!==0?n[r].formula?t.push(n[r].formula):n[r].value&&t.push(n[r].value):t.push("");return t}isCellReference(n){return/^[a-z]{1,3}\d{1,7}$/gi.test(n)?"relative":/^\$[a-z]{1,3}\$\d{1,7}$/gi.test(n)?"absolute":/^((\$[a-z]{1,3})\d{1,7}|[a-z]{1,3}(\$\d{1,7}))$/gi.test(n)?"mixed":!1}getCellRefPrediction(n,t,i,r){n=n.toUpperCase();var f="",s=new RegExp("[a-z$]","gi"),h=new RegExp("[0-9$]","g"),e=t.isVFill?n.replace(h,f):n.replace(s,f);let u=t.isVFill?Number(n.replace(s,f)):this.generateColCount(n.replace(h,f)),o=[u],c=n[0]==="$";return i&&i!==1?o.push(u+i):o.push(u+1),u=this.getPredictionValue(o),r&&r==="mixed"&&(c===t.isVFill?e="$"+e:u.b=0),u.c=e,u}getType(n){let t,i=this.isCustomType(n);return i?t=i:this.isFormula(n)?t=this.colType.Formula:this.isNumber(n)&&(t=this.colType.Number),t||this.colType.String}isCustomType(n){n=n+"";n=n.toLowerCase();let t=this.customList.length;while(t--)if(this.toArrayLowerCase(this.customList[t].slice(0)).indexOf(n)>-1)return this.colType.Custom+t;return!1}toArrayLowerCase(n){for(let t=0;t<n.length;t++)n[t]=n[t].toString().toLowerCase();return n}isFormula(n){let t,i;return n&&!n.toString().indexOf("=")&&n.length>1?(t=n.split("(").length-1,i=n.split(")").length-1,t===i):!1}isNumber(n){return n-parseFloat(n)>=0}round(n,t){let i=n+"e"+t,r="e-"+t;return Number(Math.round(i)+r)}getPredictionValue(n){let t=0,i=0,u=0,f=0,r=0,e=n.length;while(t<e)i=i+t,u=u+Number(n[t]),f=f+t*Number(n[t]),r=r+t*t,t++;let o=this.round((u*r-i*f)/(e*r-i*i),5),s=this.round((e*f-i*u)/(e*r-i*i),5);return{a:o,b:s}}ensurePattern(n){let t,r=-1,i=n.length;while(i--)t=n[i],this.isObject(t)?(r=i,t.type===this.colType.String&&(t.val=t.val.reverse())):n[i]=r;return n}isObject(n){return typeof n!="object"?!1:Object.prototype.toString.call(n)==="[object Object]"}getSelectedRange(n,t){let i,f,r,e,o=[],u=this.base.swapRange([n.rowIndex,n.colIndex,t.rowIndex,t.colIndex]);for(i=u[0],f=u[2];i<=f;){for(r=u[1],e=u[3];r<=e;)o.push({rowIndex:i,colIndex:r}),r++;i++}return o}static Instance(){return this.instance===undefined&&(this.instance=new i),this.instance}}t.Autofill=i})(i=t.Sheets||(t.Sheets={}))})(i=t.Components||(t.Components={}))})(i=t.Collaboration||(t.Collaboration={}))})(t=n.Apps||(n.Apps={}))})(Unibase||(Unibase={}));