Browse Source

Merge pull request #292 from mengshukeji/feature

Feature
master
mengshukeji 5 years ago
committed by GitHub
parent
commit
d2b25e8971
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      src/controllers/insertFormula.js
  2. 2
      src/controllers/menuButton.js
  3. 6
      src/controllers/pivotTable.js
  4. 10
      src/controllers/server.js
  5. 6
      src/controllers/sheetmanage.js
  6. 2
      src/core.js
  7. 2
      src/function/func.js
  8. 12
      src/function/functionImplementation.js
  9. 2
      src/global/draw.js
  10. 6
      src/global/extend.js
  11. 10
      src/global/formula.js
  12. 2
      src/global/func_methods.js
  13. 2
      src/global/json.js
  14. 2
      src/global/method.js
  15. 4
      src/global/refresh.js

6
src/controllers/insertFormula.js

@ -329,7 +329,7 @@ const insertFormula = {
} }
} }
else{ //参数是公式 else{ //参数是公式
$("#luckysheet-search-formula-parm .parmBox").eq(index).find(".val").text(" = {"+ eval($.trim(formula.functionParserExe("=" + parmtxt))) +"}"); $("#luckysheet-search-formula-parm .parmBox").eq(index).find(".val").text(" = {"+ (new Function("return " + $.trim(formula.functionParserExe("=" + parmtxt)))()) +"}");
} }
}) })
@ -419,7 +419,7 @@ const insertFormula = {
luckysheet_count_show(col_pre, row_pre, col - col_pre - 1, row - row_pre - 1, cellrange.row, cellrange.column); luckysheet_count_show(col_pre, row_pre, col - col_pre - 1, row - row_pre - 1, cellrange.row, cellrange.column);
$("#luckysheet-search-formula-parm .parmBox").eq(formula.data_parm_index).find(".val").text(" = {"+ eval($.trim(formula.functionParserExe("=" + parmtxt))) +"}"); $("#luckysheet-search-formula-parm .parmBox").eq(formula.data_parm_index).find(".val").text(" = {"+ (new Function("return " + $.trim(formula.functionParserExe("=" + parmtxt)))()) +"}");
} }
}, },
functionStrCompute: function(){ functionStrCompute: function(){
@ -476,7 +476,7 @@ const insertFormula = {
let result = null; let result = null;
try { try {
result = eval(fp); result = new Function("return " + fp)();
} }
catch (e) { catch (e) {
result = formula.error.n; result = formula.error.n;

2
src/controllers/menuButton.js

@ -2430,7 +2430,7 @@ const menuButton = {
} }
$.post(loadSheetUrl, {"gridKey" : server.gridKey, "index": sheetindex.join(",")}, function (d) { $.post(loadSheetUrl, {"gridKey" : server.gridKey, "index": sheetindex.join(",")}, function (d) {
let dataset = eval("(" + d + ")"); let dataset = new Function("return " + d)();
setTimeout(function(){ setTimeout(function(){
$("#luckysheetloadingdata").fadeOut().remove(); $("#luckysheetloadingdata").fadeOut().remove();

6
src/controllers/pivotTable.js

@ -56,7 +56,7 @@ const pivotTable = {
let realIndex = getSheetIndex(sheetIndex); let realIndex = getSheetIndex(sheetIndex);
if (getObjType(Store.luckysheetfile[realIndex].pivotTable) != "object"){ if (getObjType(Store.luckysheetfile[realIndex].pivotTable) != "object"){
Store.luckysheetfile[realIndex].pivotTable = eval('('+ Store.luckysheetfile[realIndex].pivotTable +')'); Store.luckysheetfile[realIndex].pivotTable = new Function("return " + Store.luckysheetfile[realIndex].pivotTable )();
} }
if (Store.luckysheetfile[realIndex].pivotTable != null) { if (Store.luckysheetfile[realIndex].pivotTable != null) {
@ -860,7 +860,7 @@ const pivotTable = {
pivotTable = $.extend(true, {}, Store.luckysheetfile[index]["pivotTable"]); pivotTable = $.extend(true, {}, Store.luckysheetfile[index]["pivotTable"]);
} }
else{ else{
pivotTable = eval('('+ pivotTable +')'); pivotTable = new Function("return " + pivotTable )();
} }
return pivotTable return pivotTable
@ -2855,7 +2855,7 @@ const pivotTable = {
} }
} }
else if (json.sumtype == "PRODUCT") { else if (json.sumtype == "PRODUCT") {
json.result = eval(json.digitaldata.join("*")); json.result = new Function("return " + json.digitaldata.join("*"))();
} }
else if (json.sumtype == "STDEV") { else if (json.sumtype == "STDEV") {
let mean = json.sum / json.count; let mean = json.sum / json.count;

10
src/controllers/server.js

@ -168,7 +168,7 @@ const server = {
//客户端接收服务端数据时触发 //客户端接收服务端数据时触发
_this.websocket.onmessage = function(result){ _this.websocket.onmessage = function(result){
Store.result = result Store.result = result
let data = eval('(' + result.data + ')'); let data = new Function("return " + result.data )();
console.info(data); console.info(data);
let type = data.type; let type = data.type;
let {message,id} = data; let {message,id} = data;
@ -433,7 +433,7 @@ const server = {
let op = item.op, pos = item.pos; let op = item.op, pos = item.pos;
if(getObjType(value) != "object"){ if(getObjType(value) != "object"){
value = eval('('+ value +')'); value = new Function("return "+ value)();
} }
let r = value.r, c = value.c; let r = value.r, c = value.c;
@ -546,7 +546,7 @@ const server = {
arr.push(JSON.stringify(addData[i])); arr.push(JSON.stringify(addData[i]));
} }
eval('data.splice(' + st_i + ', 0, ' + arr.join(",") + ')'); new Function("return " + 'data.splice(' + st_i + ', 0, ' + arr.join(",") + ')')();
} }
else{ else{
file["column"] += len; file["column"] += len;
@ -906,7 +906,7 @@ const server = {
console.log("request"); console.log("request");
if(_this.updateUrl != ""){ if(_this.updateUrl != ""){
$.post(_this.updateUrl, { compress: iscommpress, gridKey: _this.gridKey, data: params }, function (data) { $.post(_this.updateUrl, { compress: iscommpress, gridKey: _this.gridKey, data: params }, function (data) {
let re = eval('('+ data +')') let re = new Function("return " + data)();
if(re.status){ if(re.status){
$("#luckysheet_info_detail_update").html("最近存档时间:"+ dayjs().format("M-D H:m:s")); $("#luckysheet_info_detail_update").html("最近存档时间:"+ dayjs().format("M-D H:m:s"));
$("#luckysheet_info_detail_save").html("同步成功"); $("#luckysheet_info_detail_save").html("同步成功");
@ -966,7 +966,7 @@ const server = {
if(_this.updateImageUrl != ""){ if(_this.updateImageUrl != ""){
// $.post(_this.updateImageUrl, { compress: true, gridKey: _this.gridKey, data:data1 }, function (data) { // $.post(_this.updateImageUrl, { compress: true, gridKey: _this.gridKey, data:data1 }, function (data) {
$.post(_this.updateImageUrl, { compress: false, gridKey: _this.gridKey, data:data1 }, function (data) { $.post(_this.updateImageUrl, { compress: false, gridKey: _this.gridKey, data:data1 }, function (data) {
let re = eval('('+ data +')') let re = new Function("return " + data)();
if(re.status){ if(re.status){
imageRequestLast = dayjs(); imageRequestLast = dayjs();
} }

6
src/controllers/sheetmanage.js

@ -847,7 +847,7 @@ const sheetmanage = {
return; return;
} }
$.post(loadSheetUrl, {"gridKey" : server.gridKey, "index": sheetindex.join(",")}, function (d) { $.post(loadSheetUrl, {"gridKey" : server.gridKey, "index": sheetindex.join(",")}, function (d) {
let dataset = eval("(" + d + ")"); let dataset = new Function("return " + d)();
for(let item in dataset){ for(let item in dataset){
if(item == file["index"]){ if(item == file["index"]){
@ -1167,7 +1167,7 @@ const sheetmanage = {
let sheetindex = _this.checkLoadSheetIndex(file); let sheetindex = _this.checkLoadSheetIndex(file);
$.post(loadSheetUrl, {"gridKey" : server.gridKey, "index": sheetindex.join(",")}, function (d) { $.post(loadSheetUrl, {"gridKey" : server.gridKey, "index": sheetindex.join(",")}, function (d) {
let dataset = eval("(" + d + ")"); let dataset = new Function("return " + d)();
file.celldata = dataset[index.toString()]; file.celldata = dataset[index.toString()];
let data = _this.buildGridData(file); let data = _this.buildGridData(file);
@ -1722,7 +1722,7 @@ const sheetmanage = {
let op = item.op, pos = item.pos; let op = item.op, pos = item.pos;
if(getObjType(value) != "object"){ if(getObjType(value) != "object"){
value = eval('('+ value +')'); value = new Function("return " + value)();
} }
let r = value.r, c = value.c; let r = value.r, c = value.c;

2
src/core.js

@ -156,7 +156,7 @@ luckysheet.create = function (setting) {
} }
else { else {
$.post(loadurl, {"gridKey" : server.gridKey}, function (d) { $.post(loadurl, {"gridKey" : server.gridKey}, function (d) {
let data = eval("(" + d + ")"); let data = new Function("return " + d)();
Store.luckysheetfile = data; Store.luckysheetfile = data;
sheetmanage.initialjfFile(menu, title); sheetmanage.initialjfFile(menu, title);

2
src/function/func.js

@ -1577,7 +1577,7 @@ function luckysheet_calcADPMM(fp, sp, tp){
value = numeral(fp).subtract(tp).value(); value = numeral(fp).subtract(tp).value();
} }
else if(sp=="%"){ else if(sp=="%"){
value = eval(parseFloat(fp) + sp+ "(" + parseFloat(tp) + ")"); value = new Function("return " + parseFloat(fp) + sp + "(" + parseFloat(tp) + ")" )();
} }
else if(sp=="/"){ else if(sp=="/"){
value = numeral(fp).divide(tp).value(); value = numeral(fp).divide(tp).value();

12
src/function/functionImplementation.js

@ -3310,12 +3310,12 @@ const functionImplementation = {
} }
else{ else{
if (typeof value !== 'string') { if (typeof value !== 'string') {
if (eval(value + criter)) { if (new Function("return " + value + criter)()) {
matches++; matches++;
} }
} }
else { else {
if (eval('"' + value + '"' + criter)) { if (new Function("return " + '"' + value + '"' + criter)()) {
matches++; matches++;
} }
} }
@ -3335,12 +3335,12 @@ const functionImplementation = {
} }
else{ else{
if (typeof value !== 'string') { if (typeof value !== 'string') {
if (eval(value + criter)) { if (new Function("return " + value + criter)()) {
matches++; matches++;
} }
} }
else { else {
if (eval('"' + value + '"' + criter)) { if (new Function("return " + '"' + value + '"' + criter)()) {
matches++; matches++;
} }
} }
@ -25902,7 +25902,7 @@ const functionImplementation = {
if(/\{.*?\}/.test(data)){ if(/\{.*?\}/.test(data)){
data = data.replace(/\{/g, "[").replace(/\}/g, "]"); data = data.replace(/\{/g, "[").replace(/\}/g, "]");
} }
data = eval('('+ data +')'); data = new Function("return " + data)();
} }
var stackconfig = arguments[1]; var stackconfig = arguments[1];
@ -26138,7 +26138,7 @@ const functionImplementation = {
if(/\{.*?\}/.test(data)){ if(/\{.*?\}/.test(data)){
data = data.replace(/\{/g, "[").replace(/\}/g, "]"); data = data.replace(/\{/g, "[").replace(/\}/g, "]");
} }
data = eval('('+ data +')'); data = new Function("return " + data)();
} }
var stackconfig = arguments[1]; var stackconfig = arguments[1];

2
src/global/draw.js

@ -1085,7 +1085,7 @@ let sparklinesRender = function(r, c, offsetX, offsetY, canvasid, ctx){
let sparklines = Store.flowdata[r][c].spl; let sparklines = Store.flowdata[r][c].spl;
if(sparklines != null){ if(sparklines != null){
if(typeof sparklines == "string"){ if(typeof sparklines == "string"){
sparklines = eval('('+ sparklines +')'); sparklines = new Function("return " + sparklines)();
} }
if(getObjType(sparklines) == "object"){ if(getObjType(sparklines) == "object"){

6
src/global/extend.js

@ -713,14 +713,14 @@ function luckysheetextendtable(type, index, value, direction, sheetIndex) {
if(direction == "lefttop"){ if(direction == "lefttop"){
if(index == 0){ if(index == 0){
eval('d.unshift(' + arr.join(",") + ')'); new Function("return " + 'd.unshift(' + arr.join(",") + ')')();
} }
else{ else{
eval('d.splice(' + index + ', 0, ' + arr.join(",") + ')'); new Function("return " + 'd.splice(' + index + ', 0, ' + arr.join(",") + ')')();
} }
} }
else{ else{
eval('d.splice(' + (index + 1) + ', 0, ' + arr.join(",") + ')'); new Function("return " + 'd.splice(' + (index + 1) + ', 0, ' + arr.join(",") + ')')();
} }
} }
else { else {

10
src/global/formula.js

@ -174,7 +174,7 @@ const luckysheetformula = {
data = data.replace(/\{/g, "[").replace(/\}/g, "]"); data = data.replace(/\{/g, "[").replace(/\}/g, "]");
} }
data = eval('('+ data +')'); data = new Function("return " + data)();
} }
//把二维数组转换为一维数组,sparklines要求数据格式为一维数组 //把二维数组转换为一维数组,sparklines要求数据格式为一维数组
@ -2594,7 +2594,7 @@ const luckysheetformula = {
if(isVal){ if(isVal){
//公式计算 //公式计算
let fp = $.trim(_this.functionParserExe($("#luckysheet-rich-text-editor").text())); let fp = $.trim(_this.functionParserExe($("#luckysheet-rich-text-editor").text()));
let result = eval(fp); let result = new Function("return " + fp)();
$("#luckysheet-search-formula-parm .result span").text(result); $("#luckysheet-search-formula-parm .result span").text(result);
} }
} }
@ -4816,7 +4816,7 @@ const luckysheetformula = {
} }
try { try {
Store.calculateSheetIndex = index; Store.calculateSheetIndex = index;
let str = eval(function_str); let str = new Function("return " + function_str)();
if(str instanceof Object && str.startCell!=null){ if(str instanceof Object && str.startCell!=null){
str = str.startCell; str = str.startCell;
@ -5313,7 +5313,7 @@ const luckysheetformula = {
let calc_funcStr = getcellFormula(item.r, item.c, item.index); let calc_funcStr = getcellFormula(item.r, item.c, item.index);
if(cell != null && cell.f != null && cell.f == calc_funcStr){ if(cell != null && cell.f != null && cell.f == calc_funcStr){
if(!(item instanceof Object)){ if(!(item instanceof Object)){
item = eval('('+ item +')'); item = new Function("return " + item)();
} }
item.color = "w"; item.color = "w";
@ -5665,7 +5665,7 @@ const luckysheetformula = {
} }
} }
result = eval(fp); result = new Function("return " + fp)();
//加入sparklines的参数项目 //加入sparklines的参数项目
if(fp.indexOf("SPLINES") > -1){ if(fp.indexOf("SPLINES") > -1){

2
src/global/func_methods.js

@ -621,7 +621,7 @@ const func_methods = {
hasMatchingCriteria = true; hasMatchingCriteria = true;
for (let p = 1; p < criteria.length; ++p) { for (let p = 1; p < criteria.length; ++p) {
currentCriteriaResult = currentCriteriaResult || eval(database[k][l] + criteria[p]); // jshint ignore:line currentCriteriaResult = currentCriteriaResult || (new Function("return " + database[k][l] + criteria[p])()); // jshint ignore:line
} }
} }

2
src/global/json.js

@ -7,7 +7,7 @@ const json = {
} }
else if(getObjType(obj) == "string"){ else if(getObjType(obj) == "string"){
try { try {
let json = eval('('+ obj +')'); let json = new Function("return " + obj)();
return json; return json;
} }
catch(e) { catch(e) {

2
src/global/method.js

@ -354,7 +354,7 @@ const method = {
let file = Store.luckysheetfile[getSheetIndex(index)]; let file = Store.luckysheetfile[getSheetIndex(index)];
$.post(url, param, function (d) { $.post(url, param, function (d) {
let dataset = eval("(" + d + ")"); let dataset = new Function("return " + d)();
file.celldata = dataset[index.toString()]; file.celldata = dataset[index.toString()];
let data = sheetmanage.buildGridData(file); let data = sheetmanage.buildGridData(file);

4
src/global/refresh.js

@ -164,7 +164,7 @@ function jfrefreshgrid(data, range, allParam, isRunExecFunction = true, isRefres
window.luckysheetCurrentFunction = Store.flowdata[r1][c1].f; window.luckysheetCurrentFunction = Store.flowdata[r1][c1].f;
let fp = $.trim(formula.functionParserExe(Store.flowdata[r1][c1].f)); let fp = $.trim(formula.functionParserExe(Store.flowdata[r1][c1].f));
let sparklines = eval(fp); let sparklines = new Function("return " +fp)();
Store.flowdata[r1][c1].spl = sparklines; Store.flowdata[r1][c1].spl = sparklines;
} }
@ -976,7 +976,7 @@ function jfrefreshgrid_rhcw(rowheight, colwidth, isRefreshCanvas=true){
window.luckysheetCurrentFunction = Store.flowdata[r][c].f; window.luckysheetCurrentFunction = Store.flowdata[r][c].f;
let fp = $.trim(formula.functionParserExe(Store.flowdata[r][c].f)); let fp = $.trim(formula.functionParserExe(Store.flowdata[r][c].f));
let sparklines = eval(fp); let sparklines = new Function("return " + fp)();
Store.flowdata[r][c].spl = sparklines; Store.flowdata[r][c].spl = sparklines;
server.saveParam("v", Store.currentSheetIndex, Store.flowdata[r][c], { "r": r, "c": c }); server.saveParam("v", Store.currentSheetIndex, Store.flowdata[r][c], { "r": r, "c": c });

Loading…
Cancel
Save