Best JavaScript code snippet using wpt
timesheet.js
Source:timesheet.js
1/**2 * TimeSheet.js [v1.0]3 * Li Bin4 */5(function ($) {6 /*7 * è¡¨æ ¼ä¸çåå
æ ¼ç±»8 * */9 var CSheetCell = function(opt){10 /*11 * opt : {12 * state : 0 or 1,13 * toggleCallback : function(curState){...}14 * settingCallback : function(){...}15 * }16 *17 * */18 var cellPrivate = $.extend({19 state : 0,20 toggleCallback : false,21 settingCallback : false22 },opt);23 /*åååæ¢åå
æ ¼ç¶æ*/24 this.toggle = function(){25 cellPrivate.state = cellPrivate.state>0 ? cellPrivate.state-1 : cellPrivate.state+1;26 if(cellPrivate.toggleCallback){27 cellPrivate.toggleCallback(cellPrivate.state);28 }29 }30 /*31 * 设置åå
æ ¼ç¶æ32 * state : 0 or 133 * */34 this.set = function(state){35 cellPrivate.state = state==0 ? 0 : 1;36 if(cellPrivate.settingCallback){37 cellPrivate.settingCallback();38 }39 }40 /*41 * è·ååå
æ ¼ç¶æ42 * */43 this.get = function(){44 return cellPrivate.state;45 }46 }47 /*48 * è¡¨æ ¼ç±»49 * */50 var CSheet = function(opt){51 /*52 * opt : {53 * dimensions : [8,9], [è¡æ°ï¼åæ°]54 * sheetData : [[0,1,1,0,0],[...],[...],...] sheetæ°æ®ï¼äºç»´æ°ç»ï¼ç´¢å¼(a,b),a-è¡ä¸æ ï¼b-åä¸æ ï¼æ¯ä¸ªcellåªæ0,1两æï¼ä¸dimensions对åº55 * toggleCallback : function(){..}56 * settingCallback : function(){..}57 * }58 *59 * */60 var sheetPrivate = $.extend({61 dimensions : undefined,62 sheetData : undefined,63 toggleCallback : false,64 settingCallback : false65 },opt);66 sheetPrivate.cells = [];67 /*68 * åå§åè¡¨æ ¼ä¸çææåå
æ ¼69 * */70 sheetPrivate.initCells = function(){71 var rowNum = sheetPrivate.dimensions[0];72 var colNum = sheetPrivate.dimensions[1];73 if(sheetPrivate.dimensions.length==2 && rowNum>0 && colNum>0){74 for(var row= 0,curRow = []; row<rowNum; ++row){75 curRow = [];76 for(var col=0; col<colNum; ++col){77 curRow.push(new CSheetCell({78 state : sheetPrivate.sheetData ? (sheetPrivate.sheetData[row]?parseInt(sheetPrivate.sheetData[row][col]):0) : 079 }));80 }81 sheetPrivate.cells.push(curRow);82 }83 }else{84 throw new Error("CSheet : wrong dimensions");85 }86 }87 /*88 * 对ç»å®ç表ååºåè¿è¡ toggle æ setæä½89 * */90 sheetPrivate.areaOperate = function(area,opt){91 /*92 * area : {93 * startCell : [2,1],94 * endCell : [7,6]95 * }96 * opt : {97 * type:"set" or "toggle",98 * state : 0 or 1 if type is set99 * }100 * */101 var rowCount = sheetPrivate.cells.length;102 var colCount = sheetPrivate.cells[0] ? sheetPrivate.cells[0].length : 0;103 var operationArea = $.extend({104 startCell : [0,0],105 endCell : [rowCount-1,colCount-1]106 },area);107 var isSheetEmpty = rowCount==0 || colCount==0;108 var isAreaValid = operationArea.startCell[0]>=0 && operationArea.endCell[0]<=rowCount-1 &&109 operationArea.startCell[1]>=0 && operationArea.endCell[1]<=colCount-1 && //operationAreaä¸è½è¶
è¶sheetçè¾¹ç110 operationArea.startCell[0]<=operationArea.endCell[0] && operationArea.startCell[1]<=operationArea.endCell[1]; //startCellå¿
é¡»å±
äºendCellçå·¦ä¸æ¹ï¼æä¸ä¹éå111 if(!isAreaValid){112 throw new Error("CSheet : operation area is invalid");113 }else if(!isSheetEmpty){114 for(var row=operationArea.startCell[0]; row<=operationArea.endCell[0]; ++row){115 for(var col=operationArea.startCell[1]; col<=operationArea.endCell[1]; ++col){116 if(opt.type=="toggle"){117 sheetPrivate.cells[row][col].toggle();118 }else if(opt.type=="set"){119 sheetPrivate.cells[row][col].set(opt.state);120 }121 }122 }123 }124 }125 sheetPrivate.initCells();126 /*127 * å¯¹è¡¨æ ¼çæå®åºåè¿è¡ç¶æåååæ¢128 * toggleArea : {129 * startCell : [2,1],130 * endCell : [7,6]131 * }132 *133 * */134 this.toggle = function(toggleArea){135 sheetPrivate.areaOperate(toggleArea,{type:"toggle"});136 if(sheetPrivate.toggleCallback){137 sheetPrivate.toggleCallback();138 }139 }140 /*141 * å¯¹è¡¨æ ¼çæå®åºåè¿è¡ç¶æ设置142 * state : 0 or 1143 * settingArea : {144 * startCell : [2,1],145 * endCell : [7,6]146 * }147 * */148 this.set = function(state,settingArea){149 sheetPrivate.areaOperate(settingArea,{type:"set",state:state});150 if(sheetPrivate.settingCallback){151 sheetPrivate.settingCallback();152 }153 }154 /*155 * è·åæå®åå
æ ¼çç¶æ156 * cellIndex ï¼ [2,3]157 * @return : 0 or 1158 * */159 this.getCellState = function(cellIndex){160 return sheetPrivate.cells[cellIndex[0]][cellIndex[1]].get();161 }162 /*163 * è·åæå®è¡ææåå
æ ¼çç¶æ164 * row ï¼ 2165 * @return : [1,0,...,1]166 * */167 this.getRowStates = function(row){168 var rowStates = [];169 for(var col=0; col<sheetPrivate.dimensions[1]; ++col){170 rowStates.push(sheetPrivate.cells[row][col].get());171 }172 return rowStates;173 }174 /*175 * è·åææåå
æ ¼çç¶æ176 * @return : [[1,0,...,1],[1,0,...,1],...,[1,0,...,1]]177 * */178 this.getSheetStates = function(){179 var sheetStates = [];180 for(var row= 0,rowStates = []; row<sheetPrivate.dimensions[0]; ++row){181 rowStates = [];182 for(var col=0; col<sheetPrivate.dimensions[1]; ++col){183 rowStates.push(sheetPrivate.cells[row][col].get());184 }185 sheetStates.push(rowStates);186 }187 return sheetStates;188 }189 }190 191 $.fn.timeSheet = function(opt){192 /*193 * 说æ ï¼194 *195 * TimeSheet åºè¯¥è¢«ç»å®å¨ TBODY å
ç´ ä¸ï¼å
¶åå
ç´ æå¦ä¸é»è®¤class:196 *197 * 表头 ---- class: .TimeSheet-head198 * å表头 ---- class: .TimeSheet-colHead199 * è¡è¡¨å¤´ ---- class: .TimeSheet-rowHead200 * åå
æ ¼ ---- class: .TimeSheet-cell201 *202 * ç¨æ·å¯å¨ä¼ å
¥çsheetClassä¸å°å
ç´ çé»è®¤æ ·å¼è¦ç203 * sheetClasså°è¢«èµäº TBODY å
ç´ 204 *205 *206 * opt :207 * {208 * data : {209 * dimensions : [7,8],210 * colHead : [{name:"name1",title:"",style:"width,background,color,font"},{name:"name2",title:"",style:"width,background,color,font"},...]211 * rowHead : [{name:"name1",title:"",style:"height,background,color,font"},{name:"name2",title:"",style:"height,background,color,font"},...]212 * sheetHead : {name:"headName",style:"width,height,background,color,font"}213 * sheetData : [[0,1,1,0,0],[...],[...],...] sheetæ°æ®ï¼äºç»´æ°ç»ï¼è¡ä¸»åºï¼ç´¢å¼(a,b),a-è¡ä¸æ ï¼b-åä¸æ ï¼æ¯ä¸ªcellåªæ0,1两æï¼ä¸dimensions对åº214 * },215 *216 * sheetClass : "",217 * start : function(ev){...}218 * end : function(ev, selectedArea){...}219 * remarks : false220 * }221 *222 */223 var thisSheet = $(this);224 if(!thisSheet.is("TBODY")){225 throw new Error("TimeSheet needs to be bound on a TBODY element");226 }227 var sheetOption = $.extend({228 data: {},229 sheetClass: "",230 start: false,231 end : false,232 remarks : null233 }, opt);234 if(!sheetOption.data.dimensions || sheetOption.data.dimensions.length!==2 || sheetOption.data.dimensions[0]<0 || sheetOption.data.dimensions[1]<0){235 throw new Error("TimeSheet : wrong dimensions");236 }237 var operationArea = {238 startCell : undefined,239 endCell : undefined240 };241 var sheetModel = new CSheet({242 dimensions : sheetOption.data.dimensions,243 sheetData : sheetOption.data.sheetData ? sheetOption.data.sheetData : undefined244 });245 /*246 * è¡¨æ ¼åå§å247 * */248 var initSheet = function(){249 thisSheet.html("");250 thisSheet.addClass("TimeSheet");251 if(sheetOption.sheetClass){252 thisSheet.addClass(sheetOption.sheetClass);253 }254 initColHeads();255 initRows();256 repaintSheet();257 };258 /*259 * åå§åæ¯ä¸åç顶é¨è¡¨å¤´260 * */261 var initColHeads = function(){262 var colHeadHtml = '<tr>';263 for(var i=0,curColHead=''; i<=sheetOption.data.dimensions[1]; ++i){264 if(i===0){265 curColHead = '<td class="TimeSheet-head" style="'+(sheetOption.data.sheetHead.style?sheetOption.data.sheetHead.style:'')+'">'+sheetOption.data.sheetHead.name+'</td>';266 }else{267 curColHead = '<td title="'+(sheetOption.data.colHead[i-1].title ? sheetOption.data.colHead[i-1].title:"")+'" data-col="'+(i-1)+'" class="TimeSheet-colHead '+(i===sheetOption.data.dimensions[1]?'rightMost':'')+'" style="'+(sheetOption.data.colHead[i-1].style ? sheetOption.data.colHead[i-1].style : '')+'">'+sheetOption.data.colHead[i-1].name+'</td>';268 }269 colHeadHtml += curColHead;270 }271 if(sheetOption.remarks){272 colHeadHtml += '<td class="TimeSheet-remarkHead">'+sheetOption.remarks.title+'</td>';273 }274 colHeadHtml += '</tr>';275 thisSheet.append(colHeadHtml);276 };277 /*278 * åå§åæ¯ä¸è¡279 * */280 var initRows = function(){281 for(var row=0,curRowHtml=''; row<sheetOption.data.dimensions[0]; ++row){282 curRowHtml='<tr class="TimeSheet-row">'283 for(var col= 0, curCell=''; col<=sheetOption.data.dimensions[1]; ++col){284 if(col===0){285 curCell = '<td title="'+(sheetOption.data.rowHead[row].title ? sheetOption.data.rowHead[row].title:"")+'"class="TimeSheet-rowHead '+(row===sheetOption.data.dimensions[0]-1?'bottomMost ':' ')+'" style="'+(sheetOption.data.rowHead[row].style ? sheetOption.data.rowHead[row].style : '')+'">'+sheetOption.data.rowHead[row].name+'</td>';286 }else{287 curCell = '<td class="TimeSheet-cell '+(row===sheetOption.data.dimensions[0]-1?'bottomMost ':' ')+(col===sheetOption.data.dimensions[1]?'rightMost':'')+'" data-row="'+row+'" data-col="'+(col-1)+'"></td>';288 }289 curRowHtml += curCell;290 }291 if(sheetOption.remarks){292 curRowHtml += '<td class="TimeSheet-remark '+(row===sheetOption.data.dimensions[0]-1?'bottomMost ':' ')+'">'+sheetOption.remarks.default+'</td>';293 }294 curRowHtml += '</tr>';295 thisSheet.append(curRowHtml);296 }297 };298 /*299 * æ¯è¾ä¸¤ä¸ªåå
æ ¼è°æ´é è¿å·¦ä¸è§300 * cell1:[2,3]301 * cell2:[4,5]302 * @return:{303 topLeft : cell1,304 bottomRight : cell2305 }306 * */307 var cellCompare = function(cell1,cell2){ //check which cell is more top-left308 var sum1 = cell1[0] + cell1[1];309 var sum2 = cell2[0] + cell2[1];310 if((cell1[0]-cell2[0])*(cell1[1]-cell2[1])<0){311 return {312 topLeft : cell1[0]<cell2[0] ? [cell1[0],cell2[1]] : [cell2[0],cell1[1]],313 bottomRight : cell1[0]<cell2[0] ? [cell2[0],cell1[1]] : [cell1[0],cell2[1]]314 };315 }316 return {317 topLeft : sum1<=sum2 ? cell1 : cell2,318 bottomRight : sum1>sum2 ? cell1 : cell2319 };320 };321 /*322 * å·æ°è¡¨æ ¼323 * */324 var repaintSheet = function(){325 var sheetStates = sheetModel.getSheetStates();326 thisSheet.find(".TimeSheet-row").each(function(row,rowDom){327 var curRow = $(rowDom);328 curRow.find(".TimeSheet-cell").each(function(col,cellDom){329 var curCell = $(cellDom);330 if(sheetStates[row][col]===1){331 curCell.addClass("TimeSheet-cell-selected");332 }else if(sheetStates[row][col]===0){333 curCell.removeClass("TimeSheet-cell-selected");334 }335 });336 });337 };338 /*339 * 移é¤ææåå
æ ¼ç TimeSheet-cell-selecting ç±»340 * */341 var removeSelecting = function(){342 thisSheet.find(".TimeSheet-cell-selecting").removeClass("TimeSheet-cell-selecting");343 };344 /*345 * æ¸
空å¤æ³¨æ 346 * */347 var cleanRemark = function(){348 thisSheet.find(".TimeSheet-remark").each(function(idx,ele){349 var curDom = $(ele);350 curDom.prop("title","");351 curDom.html(sheetOption.remarks.default);352 });353 };354 /*355 * é¼ æ å¼å§åéæ©æä½356 * startCel ï¼ [1,4]357 * */358 var startSelecting = function(ev,startCel){359 operationArea.startCell = startCel;360 if(sheetOption.start){361 sheetOption.start(ev);362 }363 };364 /*365 * é¼ æ å¨éæ©æä½è¿ç¨ä¸366 * topLeftCell ï¼ [1,4]ï¼ é¼ æ éæ©åºåçå·¦ä¸è§367 * bottomRightCell ï¼ [3,9] é¼ æ éæ©åºåçå³ä¸è§368 * */369 var duringSelecting = function(ev,topLeftCell,bottomRightCell){370 var curDom = $(ev.currentTarget);371 if(isSelecting && curDom.hasClass("TimeSheet-cell") || isColSelecting && curDom.hasClass("TimeSheet-colHead")){372 removeSelecting();373 for(var row=topLeftCell[0]; row<=bottomRightCell[0]; ++row){374 for(var col=topLeftCell[1]; col<=bottomRightCell[1]; ++col){375 $($(thisSheet.find(".TimeSheet-row")[row]).find(".TimeSheet-cell")[col]).addClass("TimeSheet-cell-selecting");376 }377 }378 }379 };380 /*381 * éæ©æä½å®æå382 * targetArea ï¼ {383 * topLeft ï¼ [1,2],384 * bottomRight: [3,8]385 * }386 * */387 var afterSelecting = function(ev,targetArea){388 var curDom = $(ev.currentTarget);389 var key = $(ev.which);390 var targetState = !sheetModel.getCellState(operationArea.startCell);391 //if(key[0]===1){ targetState = 1;} //é¼ æ å·¦é®,å°éå®åºåç½®1392 //else if(key[0]===3){ targetState = 0;} //é¼ æ å³é®,å°éå®åºåç½®0393 if(isSelecting && curDom.hasClass("TimeSheet-cell") || isColSelecting && curDom.hasClass("TimeSheet-colHead")){394 sheetModel.set(targetState,{395 startCell : targetArea.topLeft,396 endCell : targetArea.bottomRight397 });398 removeSelecting();399 repaintSheet();400 if(sheetOption.end){401 sheetOption.end(ev,targetArea);402 }403 }else{404 removeSelecting();405 }406 isSelecting = false;407 isColSelecting = false;408 operationArea = {409 startCell : undefined,410 endCell : undefined411 }412 };413 var isSelecting = false; /*é¼ æ å¨è¡¨æ ¼åºååéæ©*/414 var isColSelecting = false; /*é¼ æ å¨å表头åºååéæ©*/415 var eventBinding = function(){416 /*é²æ¢éå¤ç»å®*/417 thisSheet.undelegate(".umsSheetEvent");418 /*è¡¨æ ¼å¼å§éæ©*/419 thisSheet.delegate(".TimeSheet-cell","mousedown.umsSheetEvent",function(ev){420 var curCell = $(ev.currentTarget);421 var startCell = [curCell.data("row"),curCell.data("col")];422 isSelecting = true;423 startSelecting(ev,startCell);424 });425 /*è¡¨æ ¼éæ©å®æ*/426 thisSheet.delegate(".TimeSheet-cell","mouseup.umsSheetEvent",function(ev){427 if(!operationArea.startCell){428 return;429 }430 var curCell = $(ev.currentTarget);431 var endCell = [curCell.data("row"),curCell.data("col")];432 var correctedCells = cellCompare(operationArea.startCell,endCell);433 afterSelecting(ev,correctedCells);434 });435 /*è¡¨æ ¼æ£å¨éæ©*/436 thisSheet.delegate(".TimeSheet-cell","mouseover.umsSheetEvent",function(ev){437 if(!isSelecting){438 return;439 }440 var curCell = $(ev.currentTarget);441 var curCellIndex = [curCell.data("row"),curCell.data("col")];442 var correctedCells = cellCompare(operationArea.startCell,curCellIndex);443 var topLeftCell = correctedCells.topLeft;444 var bottomRightCell = correctedCells.bottomRight;445 duringSelecting(ev,topLeftCell,bottomRightCell);446 });447 /*å表头å¼å§éæ©*/448 thisSheet.delegate(".TimeSheet-colHead","mousedown.umsSheetEvent",function(ev){449 var curColHead = $(ev.currentTarget);450 var startCell = [0,curColHead.data("col")];451 isColSelecting = true;452 startSelecting(ev,startCell);453 });454 /*å表头éæ©å®æ*/455 thisSheet.delegate(".TimeSheet-colHead","mouseup.umsSheetEvent",function(ev){456 if(!operationArea.startCell){457 return;458 }459 var curColHead = $(ev.currentTarget);460 var endCell = [sheetOption.data.dimensions[0]-1,curColHead.data("col")];461 var correctedCells = cellCompare(operationArea.startCell,endCell);462 afterSelecting(ev,correctedCells);463 });464 /*å表头æ£å¨éæ©*/465 thisSheet.delegate(".TimeSheet-colHead","mouseover.umsSheetEvent",function(ev){466 if(!isColSelecting){467 return;468 }469 var curColHead = $(ev.currentTarget);470 var curCellIndex = [sheetOption.data.dimensions[0]-1,curColHead.data("col")];471 var correctedCells = cellCompare(operationArea.startCell,curCellIndex);472 var topLeftCell = correctedCells.topLeft;473 var bottomRightCell = correctedCells.bottomRight;474 duringSelecting(ev,topLeftCell,bottomRightCell);475 });476 /*è¡¨æ ¼ç¦æ¢é¼ æ å³é®èå*/477 thisSheet.delegate("td","contextmenu.umsSheetEvent",function(ev){478 return false;479 });480 };481 initSheet();482 eventBinding();483 var publicAPI = {484 /*485 * è·ååå
æ ¼ç¶æ486 * cellIndex ï¼[1,2]487 * @return : 0 or 1488 * */489 getCellState : function(cellIndex){490 return sheetModel.getCellState(cellIndex);491 },492 /*493 * è·åæè¡ææåå
æ ¼ç¶æ494 * row ï¼2495 * @return : [1,0,0,...,0,1]496 * */497 getRowStates : function(row){498 return sheetModel.getRowStates(row);499 },500 /*501 * è·åè¡¨æ ¼ææåå
æ ¼ç¶æ502 * @return : [[1,0,0,...,0,1],[1,0,0,...,0,1],...,[1,0,0,...,0,1]]503 * */504 getSheetStates : function(){505 return sheetModel.getSheetStates();506 },507 /*508 * 设置æè¡ç说ææå509 * row : 2,510 * html : 说æ511 * */512 setRemark : function(row,html){513 if($.trim(html)!==''){514 $(thisSheet.find(".TimeSheet-row")[row]).find(".TimeSheet-remark").prop("title",html).html(html);515 }516 },517 /*518 * éç½®è¡¨æ ¼519 * */520 clean : function(){521 sheetModel.set(0,{});522 repaintSheet();523 cleanRemark();524 },525 /*526 * è·å default remark527 * */528 getDefaultRemark : function(){529 return sheetOption.remarks.default;530 },531 /*532 * ä½¿è¡¨æ ¼ä¸å¯æä½533 * */534 disable : function(){535 thisSheet.undelegate(".umsSheetEvent");536 },537 /*538 * ä½¿è¡¨æ ¼å¯æä½539 * */540 enable : function(){541 eventBinding();542 },543 /*544 * å¤æè¡¨æ ¼æ¯å¦ææåå
æ ¼ç¶æé½æ¯1545 * @return ï¼ true or false546 * */547 isFull : function(){548 for(var row=0; row<sheetOption.data.dimensions[0]; ++row){549 for(var col=0; col<sheetOption.data.dimensions[1]; ++col){550 if(sheetModel.getCellState([row,col])===0){551 return false;552 }553 }554 }555 return true;556 }557 };558 return publicAPI;559 }...
ExcelReport.js
Source:ExcelReport.js
1"use strict";2Object.defineProperty(exports, "__esModule", { value: true });3const Plan_1 = require("../Model/Plan");4const Common_1 = require("../Model/Common");5const Resource_1 = require("../Resource");6const XLSX = require("xlsx");7function WorkBook() {8 let k = XLSX.utils.book_new();9 k.Props = {};10 k.Props.Author = "kin lei";11 k.Props.Title = "travel report";12 return k;13}14exports.WorkBook = WorkBook;15function attractionSheet(list) {16 let sheet = {};17 let c = 0;18 let r = 0;19 let ratio = 5;20 let lastCountry = "";21 let lastCity = "";22 let lastArea = "";23 sheet['!cols'] = [];24 //-------------------------------------------------------------------------------sheet header25 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.country, t: 's' };26 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.city, t: 's' };27 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.area, t: 's' };28 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.name, t: 's' };29 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.attraction + Resource_1.default.detail, t: 's' };30 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.openTime, t: 's' };31 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.bestTime, t: 's' };32 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.avoidTime, t: 's' };33 sheet[XLSX.utils.encode_cell({ c: c++, r: r++ })] = { v: Resource_1.default.remark, t: 's' };34 sheet['!cols'].push({ width: Resource_1.default.country.length + ratio });35 sheet['!cols'].push({ width: Resource_1.default.city.length + ratio });36 sheet['!cols'].push({ width: Resource_1.default.area.length + ratio });37 sheet['!cols'].push({ width: Resource_1.default.name.length + ratio });38 sheet['!cols'].push({ width: Resource_1.default.attraction.length + ratio });39 sheet['!cols'].push({ width: Resource_1.default.openTime.length + ratio });40 sheet['!cols'].push({ width: Resource_1.default.bestTime.length + ratio });41 sheet['!cols'].push({ width: Resource_1.default.avoidTime.length + ratio });42 sheet['!cols'].push({ width: Resource_1.default.remark.length + ratio });43 //------------------------------------------------------------------------------ sheet body44 for (var i of list) {45 c = 0;46 let area = i.area.join(" ");47 let ot = i.openTime.map(r => r[0] + "-" + r[1]).join("\n");48 let bt = i.bestTime.map(r => r[0] + "-" + r[1]).join("\n");49 let at = i.avoidTime.map(r => r[0] + "-" + r[1]).join("\n");50 i.country == lastCountry ? c++ : sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.country };51 i.city == lastCity ? c++ : sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.city };52 area == lastArea ? c++ : sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: area };53 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.name };54 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.attractionDetail };55 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: ot };56 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: bt };57 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: at };58 sheet[XLSX.utils.encode_cell({ c: c++, r: r++ })] = { t: 's', v: i.remark };59 lastCity = i.city;60 lastArea = area;61 lastCountry = i.country;62 //--------------------------- update col width63 sheet['!cols'][0].width = sheet['!cols'][0].width < i.country.length + ratio ? i.country.length + ratio : sheet['!cols'][0].width;64 sheet['!cols'][1].width = sheet['!cols'][1].width < i.city.length + ratio ? i.city.length + ratio : sheet['!cols'][1].width;65 sheet['!cols'][2].width = sheet['!cols'][2].width < area.length + ratio ? area.length + ratio : sheet['!cols'][2].width;66 sheet['!cols'][3].width = sheet['!cols'][3].width < i.name.length + ratio ? i.name.length + ratio : sheet['!cols'][3].width;67 sheet['!cols'][4].width = sheet['!cols'][4].width < i.attractionDetail.length + ratio ? i.attractionDetail.length + ratio : sheet['!cols'][4].width;68 sheet['!cols'][5].width = sheet['!cols'][5].width < ot.length + ratio ? ot.length + ratio : sheet['!cols'][5].width;69 sheet['!cols'][6].width = sheet['!cols'][6].width < bt.length + ratio ? bt.length + ratio : sheet['!cols'][6].width;70 sheet['!cols'][7].width = sheet['!cols'][7].width < at.length + ratio ? at.length + ratio : sheet['!cols'][7].width;71 sheet['!cols'][8].width = sheet['!cols'][8].width < i.remark.length + ratio ? i.remark.length + ratio : sheet['!cols'][8].width;72 }73 //------------------------------------------------------------------------------------74 sheet['!ref'] = "A1:" + XLSX.utils.encode_cell({ c: c, r: r });75 return sheet;76}77exports.attractionSheet = attractionSheet;78function restaurantSheet(list) {79 let sheet = {};80 let c = 0;81 let r = 0;82 let lastCountry = "";83 let lastCity = "";84 let lastArea = "";85 let lastBrand = "";86 let ratio = 5;87 sheet['!cols'] = [];88 //-------------------------------------------------------------------------------sheet header89 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.country, t: 's' };90 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.city, t: 's' };91 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.area, t: 's' };92 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.brand, t: 's' };93 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.name, t: 's' };94 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.priceRange, t: 's' };95 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.restaurant + Resource_1.default.detail, t: 's' };96 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.openTime, t: 's' };97 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.bestTime, t: 's' };98 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.avoidTime, t: 's' };99 sheet[XLSX.utils.encode_cell({ c: c++, r: r++ })] = { v: Resource_1.default.remark, t: 's' };100 sheet['!cols'].push({ width: Resource_1.default.country.length + ratio });101 sheet['!cols'].push({ width: Resource_1.default.city.length + ratio });102 sheet['!cols'].push({ width: Resource_1.default.area.length + ratio });103 sheet['!cols'].push({ width: Resource_1.default.brand.length + ratio });104 sheet['!cols'].push({ width: Resource_1.default.name.length + ratio });105 sheet['!cols'].push({ width: Resource_1.default.priceRange.length + ratio });106 sheet['!cols'].push({ width: Resource_1.default.restaurant.length + ratio });107 sheet['!cols'].push({ width: Resource_1.default.openTime.length + ratio });108 sheet['!cols'].push({ width: Resource_1.default.bestTime.length + ratio });109 sheet['!cols'].push({ width: Resource_1.default.avoidTime.length + ratio });110 sheet['!cols'].push({ width: Resource_1.default.remark.length + ratio });111 //------------------------------------------------------------------------------ sheet body112 for (var i of list) {113 c = 0;114 let area = i.area.join(" ");115 let ot = i.openTime.map(r => r[0] + "-" + r[1]).join("\n");116 let bt = i.bestTime.map(r => r[0] + "-" + r[1]).join("\n");117 let at = i.avoidTime.map(r => r[0] + "-" + r[1]).join("\n");118 i.country == lastCountry ? c++ : sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.country };119 i.city == lastCity ? c++ : sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.city };120 area == lastArea ? c++ : sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: area };121 i.brand == lastBrand ? c++ : sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.brand };122 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.name };123 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.priceRange.join("~") };124 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.restaurantDetail };125 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: ot };126 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: bt };127 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: at };128 sheet[XLSX.utils.encode_cell({ c: c++, r: r++ })] = { t: 's', v: i.remark };129 lastCity = i.city;130 lastArea = area;131 lastCountry = i.country;132 lastBrand = i.brand;133 //--------------------------- update col width134 sheet['!cols'][0].width = sheet['!cols'][0].width < i.country.length + ratio ? i.country.length + ratio : sheet['!cols'][0].width;135 sheet['!cols'][1].width = sheet['!cols'][1].width < i.city.length + ratio ? i.city.length + ratio : sheet['!cols'][1].width;136 sheet['!cols'][2].width = sheet['!cols'][2].width < area.length + ratio ? area.length + ratio : sheet['!cols'][2].width;137 sheet['!cols'][3].width = sheet['!cols'][3].width < i.brand.length + ratio ? i.brand.length + ratio : sheet['!cols'][3].width;138 sheet['!cols'][4].width = sheet['!cols'][4].width < i.name.length + ratio ? i.name.length + ratio : sheet['!cols'][4].width;139 sheet['!cols'][5].width = sheet['!cols'][5].width < i.priceRange.join("~").length + ratio ? i.priceRange.join("~").length + ratio : sheet['!cols'][5].width;140 sheet['!cols'][6].width = sheet['!cols'][6].width < i.restaurantDetail.length + ratio ? i.restaurantDetail.length + ratio : sheet['!cols'][6].width;141 sheet['!cols'][7].width = sheet['!cols'][7].width < ot.length + ratio ? ot.length + ratio : sheet['!cols'][7].width;142 sheet['!cols'][8].width = sheet['!cols'][8].width < bt.length + ratio ? bt.length + ratio : sheet['!cols'][8].width;143 sheet['!cols'][9].width = sheet['!cols'][9].width < at.length + ratio ? at.length + ratio : sheet['!cols'][9].width;144 sheet['!cols'][10].width = sheet['!cols'][10].width < i.remark.length + ratio ? i.remark.length + ratio : sheet['!cols'][10].width;145 }146 sheet['!ref'] = "A1:" + XLSX.utils.encode_cell({ c: c, r: r });147 return sheet;148}149exports.restaurantSheet = restaurantSheet;150function souvenirSheet(list) {151 let sheet = {};152 let c = 0;153 let r = 0;154 let lastCountry = "";155 let lastCity = "";156 let lastArea = "";157 let lastBrand = "";158 let ratio = 5;159 sheet['!cols'] = [];160 //-------------------------------------------------------------------------------sheet header161 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.country, t: 's' };162 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.city, t: 's' };163 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.area, t: 's' };164 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.brand, t: 's' };165 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.name, t: 's' };166 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.recommendFood, t: 's' };167 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.price, t: 's' };168 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.dateCanBeStored, t: 's' };169 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.souvenir + Resource_1.default.detail, t: 's' };170 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.openTime, t: 's' };171 sheet[XLSX.utils.encode_cell({ c: c++, r: r++ })] = { v: Resource_1.default.remark, t: 's' };172 sheet['!cols'].push({ width: Resource_1.default.country.length + ratio });173 sheet['!cols'].push({ width: Resource_1.default.city.length + ratio });174 sheet['!cols'].push({ width: Resource_1.default.area.length + ratio });175 sheet['!cols'].push({ width: Resource_1.default.brand.length + ratio });176 sheet['!cols'].push({ width: Resource_1.default.name.length + ratio });177 sheet['!cols'].push({ width: Resource_1.default.recommendFood.length + ratio });178 sheet['!cols'].push({ width: Resource_1.default.price.length + ratio });179 sheet['!cols'].push({ width: Resource_1.default.dateCanBeStored.length + ratio });180 sheet['!cols'].push({ width: Resource_1.default.souvenir.length + ratio });181 sheet['!cols'].push({ width: Resource_1.default.openTime.length + ratio });182 sheet['!cols'].push({ width: Resource_1.default.remark.length + ratio });183 //------------------------------------------------------------------------------ sheet body184 for (var i of list) {185 c = 0;186 let area = i.area.join(" ");187 let ot = i.openTime.map(r => r[0] + "-" + r[1]).join("\n");188 i.country == lastCountry ? c++ : sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.country };189 i.city == lastCity ? c++ : sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.city };190 area == lastArea ? c++ : sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: area };191 i.brand == lastBrand ? c++ : sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.brand };192 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.name };193 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.recommendFood };194 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 'n', v: i.price };195 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 'n', v: i.dateCanBeStored };196 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.souvenirDetail };197 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: ot };198 sheet[XLSX.utils.encode_cell({ c: c++, r: r++ })] = { t: 's', v: i.remark };199 lastCity = i.city;200 lastArea = area;201 lastCountry = i.country;202 lastBrand = i.brand;203 //--------------------------- update col width204 sheet['!cols'][0].width = sheet['!cols'][0].width < i.country.length + ratio ? i.country.length + ratio : sheet['!cols'][0].width;205 sheet['!cols'][1].width = sheet['!cols'][1].width < i.city.length + ratio ? i.city.length + ratio : sheet['!cols'][1].width;206 sheet['!cols'][2].width = sheet['!cols'][2].width < area.length + ratio ? area.length + ratio : sheet['!cols'][2].width;207 sheet['!cols'][3].width = sheet['!cols'][3].width < i.brand.length + ratio ? i.brand.length + ratio : sheet['!cols'][3].width;208 sheet['!cols'][4].width = sheet['!cols'][4].width < i.name.length + ratio ? i.name.length + ratio : sheet['!cols'][4].width;209 sheet['!cols'][5].width = sheet['!cols'][5].width < i.recommendFood.length + ratio ? i.recommendFood.length + ratio : sheet['!cols'][5].width;210 sheet['!cols'][6].width = sheet['!cols'][6].width < i.price.toString().length + ratio ? i.price.toString().length + ratio : sheet['!cols'][6].width;211 sheet['!cols'][7].width = sheet['!cols'][7].width < i.dateCanBeStored.toString().length + ratio ? i.dateCanBeStored.toString().length + ratio : sheet['!cols'][7].width;212 sheet['!cols'][8].width = sheet['!cols'][8].width < i.souvenirDetail.length + ratio ? i.souvenirDetail.length + ratio : sheet['!cols'][8].width;213 sheet['!cols'][9].width = sheet['!cols'][9].width < ot.length + ratio ? ot.length + ratio : sheet['!cols'][9].width;214 sheet['!cols'][10].width = sheet['!cols'][10].width < i.remark.length + ratio ? i.remark.length + ratio : sheet['!cols'][10].width;215 }216 sheet['!ref'] = "A1:" + XLSX.utils.encode_cell({ c: c, r: r });217 return sheet;218}219exports.souvenirSheet = souvenirSheet;220function trafficSheet(list) {221 let sheet = {};222 let c = 0;223 let r = 0;224 let lastCountry = "";225 let lastCity = "";226 let lastArea = "";227 let lastBrand = "";228 let ratio = 5;229 sheet['!cols'] = [];230 //-------------------------------------------------------------------------------sheet header231 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.country, t: 's' };232 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.city, t: 's' };233 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.area, t: 's' };234 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.traffic + Resource_1.default.name, t: 's' };235 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.price, t: 's' };236 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.totalTime, t: 's' };237 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { v: Resource_1.default.step, t: 's' };238 sheet[XLSX.utils.encode_cell({ c: c++, r: r++ })] = { v: Resource_1.default.traffic + Resource_1.default.detail, t: 's' };239 sheet['!cols'].push({ width: Resource_1.default.country.length + ratio });240 sheet['!cols'].push({ width: Resource_1.default.city.length + ratio });241 sheet['!cols'].push({ width: Resource_1.default.area.length + ratio });242 sheet['!cols'].push({ width: Resource_1.default.traffic.length + Resource_1.default.name.length + ratio });243 sheet['!cols'].push({ width: Resource_1.default.price.length + ratio });244 sheet['!cols'].push({ width: Resource_1.default.totalTime.length + ratio });245 sheet['!cols'].push({ width: Resource_1.default.step.length + ratio });246 sheet['!cols'].push({ width: Resource_1.default.traffic.length + Resource_1.default.detail.length + ratio });247 //------------------------------------------------------------------------------ sheet body248 for (var i of list) {249 c = 0;250 let area = i.area.join(" ");251 i.country == lastCountry ? c++ : sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.country };252 i.city == lastCity ? c++ : sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.city };253 area == lastArea ? c++ : sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: area };254 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.name };255 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 'n', v: i.price };256 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 'n', v: i.totalTime };257 sheet[XLSX.utils.encode_cell({ c: c++, r: r })] = { t: 's', v: i.step };258 sheet[XLSX.utils.encode_cell({ c: c++, r: r++ })] = { t: 's', v: i.trafficDetail };259 lastCity = i.city;260 lastArea = area;261 lastCountry = i.country;262 //--------------------------- update col width263 sheet['!cols'][0].width = sheet['!cols'][0].width < i.country.length + ratio ? i.country.length + ratio : sheet['!cols'][0].width;264 sheet['!cols'][1].width = sheet['!cols'][1].width < i.city.length + ratio ? i.city.length + ratio : sheet['!cols'][1].width;265 sheet['!cols'][2].width = sheet['!cols'][2].width < area.length + ratio ? area.length + ratio : sheet['!cols'][2].width;266 sheet['!cols'][3].width = sheet['!cols'][3].width < i.name.length + ratio ? i.name.length + ratio : sheet['!cols'][3].width;267 sheet['!cols'][4].width = sheet['!cols'][4].width < i.price.toString().length + ratio ? i.price.toString().length + ratio : sheet['!cols'][4].width;268 sheet['!cols'][5].width = sheet['!cols'][5].width < i.totalTime.toString().length + ratio ? i.totalTime.toString().length + ratio : sheet['!cols'][5].width;269 sheet['!cols'][6].width = sheet['!cols'][6].width < i.step.length + ratio ? i.step.length + ratio : sheet['!cols'][6].width;270 sheet['!cols'][7].width = sheet['!cols'][7].width < i.trafficDetail.length + ratio ? i.trafficDetail.length + ratio : sheet['!cols'][7].width;271 }272 sheet['!ref'] = "A1:" + XLSX.utils.encode_cell({ c: c, r: r });273 return sheet;274}275exports.trafficSheet = trafficSheet;276function attractionListSort(arr, setting) {277 return arr.sort(function (a, b) {278 if (a.country > b.country)279 return 1;280 else if (a.country < b.country)281 return -1;282 else if (a.city > b.city)283 return 1;284 else if (a.city < b.city)285 return -1;286 else {287 let r = setting.attractionSetting.order ? -1 : 1;288 switch (setting.attractionSetting.priority) {289 case Plan_1.PlanReportSetting.openTime:290 return (Common_1.TimeCheck.hhmmStringToValue(a.openTime[0][0]) - Common_1.TimeCheck.hhmmStringToValue(b.openTime[0][0])) * r;291 }292 }293 });294}295exports.attractionListSort = attractionListSort;296function restaurantListSort(arr, setting) {297 return arr.sort(function (a, b) {298 if (a.country > b.country)299 return 1;300 else if (a.country < b.country)301 return -1;302 else if (a.city > b.city)303 return 1;304 else if (a.city < b.city)305 return -1;306 else {307 let r = setting.restaurantSetting.order ? -1 : 1;308 switch (setting.attractionSetting.priority) {309 case Plan_1.PlanReportSetting.openTime:310 return (Common_1.TimeCheck.hhmmStringToValue(a.openTime[0][0]) - Common_1.TimeCheck.hhmmStringToValue(b.openTime[0][0])) * r;311 case Plan_1.PlanReportSetting.price:312 return (a.priceRange[0] - b.priceRange[0]) * r;313 }314 }315 });316}317exports.restaurantListSort = restaurantListSort;318function souvenirListSort(arr, setting) {319 return arr.sort(function (a, b) {320 if (a.country > b.country)321 return 1;322 else if (a.country < b.country)323 return -1;324 else if (a.city > b.city)325 return 1;326 else if (a.city < b.city)327 return -1;328 else {329 let r = setting.restaurantSetting.order ? -1 : 1;330 switch (setting.attractionSetting.priority) {331 case Plan_1.PlanReportSetting.openTime:332 return (Common_1.TimeCheck.hhmmStringToValue(a.openTime[0][0]) - Common_1.TimeCheck.hhmmStringToValue(b.openTime[0][0])) * r;333 case Plan_1.PlanReportSetting.price:334 return (a.price - b.price) * r;335 case Plan_1.PlanReportSetting.day:336 return (a.dateCanBeStored - b.dateCanBeStored) * r;337 }338 }339 });340}341exports.souvenirListSort = souvenirListSort;342function trafficListSort(arr, setting) {343 return arr.sort(function (a, b) {344 if (a.country > b.country)345 return 1;346 else if (a.country < b.country)347 return -1;348 else if (a.city > b.city)349 return 1;350 else if (a.city < b.city)351 return -1;352 else {353 let r = setting.restaurantSetting.order ? -1 : 1;354 switch (setting.attractionSetting.priority) {355 case Plan_1.PlanReportSetting.total:356 return (a.totalTime - b.totalTime) * r;357 }358 }359 });360}...
portfolio.ts
Source:portfolio.ts
1/// <reference path ="./gNamespaces.ts" />2type SheetMap = {[type: string]: GSheets.Sheet;};3type SheetNameMap = {[type: string]: string;};4enum SheetType {5 Main = "Main", 6 History = "History", 7 Utility = "Utility", 8 Sector = "Sector", 9 Stock = "Stock", 10 SP500 = "SP500"11}12const sheetExtensionMap: SheetNameMap = { };13sheetExtensionMap[SheetType.Main] = "";14sheetExtensionMap[SheetType.History] = " History";15sheetExtensionMap[SheetType.Utility] = " Utility";16sheetExtensionMap[SheetType.Sector] = " Sector Breakdown";17sheetExtensionMap[SheetType.Stock] = " Stock Breakdown";18sheetExtensionMap[SheetType.SP500] = " vs. S&P 500";19class Portfolio {20 public readonly name: string;21 public readonly sheetNameMap: SheetNameMap;22 public readonly sheetNames: string[];23 public constructor(name: string) {24 this.name = name;25 this.sheetNameMap = { };26 this.sheetNames = [ ];27 for (let type in sheetExtensionMap) {28 const sheetExtension: string = sheetExtensionMap[type];29 const sheetName: string = name + sheetExtension;30 this.sheetNameMap[type] = sheetName;31 this.sheetNames.push(sheetName);32 }33 }34 public getSheetMap(): SheetMap {35 let sheets: SheetMap = { };36 for (let type in sheetExtensionMap) {37 sheets[type] = ss.getSheetByName(this.sheetNameMap[type]);38 }39 return sheets;40 }41 public getSheetArray(): GSheets.Sheet[] {42 let sheetArr: GSheets.Sheet[] = [ ];43 for (let sheetName of this.sheetNames) {44 const sheet: GSheets.Sheet = ss.getSheetByName(sheetName);45 if (sheet) sheetArr.push(sheet);46 }47 return sheetArr;48 }49 50 public allExist(): boolean {51 const sheets: SheetMap = this.getSheetMap();52 for (let type in sheetExtensionMap) {53 if (!sheets[type]) return false;54 }55 return true;56 }57 public importantExist(): boolean {58 const sheets: SheetMap = this.getSheetMap();59 if (sheets[SheetType.Main] && sheets[SheetType.History] && sheets[SheetType.Utility]) return true;60 return false;61 }62 public anyExist(): boolean {63 const sheets: SheetMap = this.getSheetMap();64 for (let type in sheetExtensionMap) {65 if (sheets[type]) return true;66 }67 return false;68 }...
Using AI Code Generation
1var wpt = require('wpt');2var wpt = new WebPageTest('www.webpagetest.org');3var options = {4};5 if (err) return console.log(err);6 wpt.getTestResults(data.data.testId, function(err, data) {7 if (err) return console.log(err);8 console.log(data.data);9 });10});11var wpt = require('wpt');12var wpt = new WebPageTest('www.webpagetest.org');13var options = {14};15 if (err) return console.log(err);16 wpt.getTestResults(data.data.testId, function(err, data) {17 if (err) return console.log(err);18 console.log(data.data);19 });20});21var wpt = require('wpt');22var wpt = new WebPageTest('www.webpagetest.org');23var options = {24};25 if (err) return console.log(err);26 wpt.getTestResults(data.data.testId, function(err, data) {27 if (err) return console.log(err);28 console.log(data.data);29 });30});31var wpt = require('wpt');32var wpt = new WebPageTest('www.webpagetest.org');33var options = {
Using AI Code Generation
1var wpt = require('wpt');2var sheet = wpt.sheet('your api key');3 console.log(data);4});5var wpt = require('wpt');6var sheet = wpt.sheet('your api key');7 console.log(data);8});
Using AI Code Generation
1var wpt = require('wpt-api');2var config = require('./config.js');3var wpt = new wpt(config.apiKey);4 if (err) {5 console.log(err);6 } else {7 console.log(data);8 }9});10### wpt.screenshot(options, callback)11 * `location` - String - Location to test from (default: `Dulles:Chrome`)12 * `connectivity` - String - Connectivity profile to test under (default: `Cable`)13 * `width` - Number - Width of the browser viewport in pixels (default: `1024`)14 * `height` - Number - Height of the browser viewport in pixels (default: `768`)15 * `full` - Number - If set to 1, this will capture a full-page screenshot (default: `0`)16var wpt = require('wpt-api');17var config = require('./config.js');18var wpt = new wpt(config.apiKey);19 if (err) {20 console.log(err);21 } else {22 console.log(data);23 }24});25### wpt.video(options, callback)26 * `location` - String - Location to test from (default: `Dulles:Chrome`)27 * `connectivity` - String - Connectivity profile to test under (default: `Cable`)28 * `width` - Number - Width of the browser viewport in pixels (default: `1024`)29 * `height` - Number - Height of the browser viewport in pixels (default: `768`)
Using AI Code Generation
1function testSheet(){2 console.log(data);3 });4}5function testListLocations(){6 wpt.listLocations(function(err,data){7 console.log(data);8 });9}10function testGetLocations(){11 wpt.getLocations("Dulles:Chrome",function(err,data){12 console.log(data);13 });14}15function testGetTesters(){16 wpt.getTesters("Dulles:Chrome",function(err,data){17 console.log(data);18 });19}20function testGetLocations(){21 wpt.getLocations("Dulles:Chrome",function(err,data){22 console.log(data);23 });24}25function testGetTesters(){26 wpt.getTesters("Dulles:Chrome",function(err,data){27 console.log(data);28 });29}30function testGetTesters(){31 wpt.getTesters("Dulles:Chrome",function(err,data){32 console.log(data);33 });34}35function testGetTesters(){36 wpt.getTesters("Dulles:Chrome",function(err,data){37 console.log(data);38 });39}
Using AI Code Generation
1var sheetName = 'Sheet1';2var sheetRange = 'A1:K10';3var sheetObj = wpt.sheet(sheetName, sheetRange);4var sheetData = sheetObj.getData();5console.log(sheetData);6sheetObj.setData(sheetData);7sheetObj.setRange(sheetRange);8sheetObj.setName(sheetName);9var sheetName = sheetObj.getName();10var sheetRange = sheetObj.getRange();11var sheetData = sheetObj.getData();12var sheetRowData = sheetObj.getRow(1);13var sheetColData = sheetObj.getCol(1);14var sheetCellData = sheetObj.getCell(1, 1);15sheetObj.setRow(1, sheetRowData);16sheetObj.setCol(1, sheetColData);17sheetObj.setCell(1, 1, sheetCellData);18sheetObj.setRow(1, sheetRowData);19sheetObj.setCol(1, sheetColData);20sheetObj.setCell(1, 1, sheetCellData);21sheetObj.setRow(1, sheetRowData);22sheetObj.setCol(1, sheetColData);23sheetObj.setCell(1, 1, sheetCellData);24var sheetRowData = sheetObj.getRow(1);25var sheetColData = sheetObj.getCol(1);26var sheetCellData = sheetObj.getCell(1, 1);27sheetObj.setRow(1, sheetRowData);28sheetObj.setCol(1, sheetColData);29sheetObj.setCell(1, 1, sheetCellData);
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!