Browse Source

Merge pull request #669 from yerzhant/add-remote-function

Add remote function
master
Dushusir 4 years ago
committed by GitHub
parent
commit
fbd9d752a2
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      src/controllers/luckysheetConfigsetting.js
  2. 1
      src/core.js
  3. 35
      src/function/functionImplementation.js
  4. 16
      src/locale/en.js

1
src/controllers/luckysheetConfigsetting.js

@ -28,6 +28,7 @@ const luckysheetConfigsetting = {
beforeCreateDom: null,
workbookCreateBefore: null,
workbookCreateAfter: null,
remoteFunction: null,
fireMousedown: null,
plugins:[],
forceCalculation:false,//强制刷新公式,公式较多会有性能问题,慎用

1
src/core.js

@ -122,6 +122,7 @@ luckysheet.create = function (setting) {
luckysheetConfigsetting.beforeCreateDom = extendsetting.beforeCreateDom;
luckysheetConfigsetting.workbookCreateBefore = extendsetting.workbookCreateBefore;
luckysheetConfigsetting.workbookCreateAfter = extendsetting.workbookCreateAfter;
luckysheetConfigsetting.remoteFunction = extendsetting.remoteFunction;
luckysheetConfigsetting.fireMousedown = extendsetting.fireMousedown;
luckysheetConfigsetting.forceCalculation = extendsetting.forceCalculation;

35
src/function/functionImplementation.js

@ -1,3 +1,4 @@
import luckysheetConfigsetting from '../controllers/luckysheetConfigsetting';
import { luckysheet_getcelldata, luckysheet_parseData, luckysheet_getValue } from './func';
import { inverse } from './matrix_methods';
import { getSheetIndex, getluckysheetfile,getRangetxt } from '../methods/get';
@ -27587,6 +27588,40 @@ const functionImplementation = {
return [formula.error.v, err];
}
},
"REMOTE": function() {
if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
return formula.error.na;
}
try {
const cellRow = window.luckysheetCurrentRow;
const cellColumn = window.luckysheetCurrentColumn;
const cellFunction = window.luckysheetCurrentFunction;
const remoteFunction = func_methods.getFirstValue(arguments[0]);
if(valueIsError(remoteFunction)){
return remoteFunction;
}
luckysheetConfigsetting.remoteFunction(remoteFunction, data => {
const flowData = editor.deepCopyFlowData(Store.flowdata);
formula.execFunctionGroup(cellRow, cellColumn, data);
flowData[cellRow][cellColumn] = {
"v": data,
"f": cellFunction
};
jfrefreshgrid(flowData, [{"row": [cellRow, cellRow], "column": [cellColumn, cellColumn]}]);
});
return "Loading...";
}
catch (e) {
console.log(e);
var err = e;
err = formula.errorInfo(err);
return [formula.error.v, err];
}
},
};
export default functionImplementation;

16
src/locale/en.js

@ -8827,6 +8827,21 @@ export default {
"type": "rangeall"
}]
},
{
"n": "REMOTE",
"t": "5",
"d": "Calls a function on a remote server",
"a": "Calls a function on a remote back end server/API.",
"m": [1, 1],
"p": [{
"name": "remote_expression",
"example": 'SUM(A1:A10000000)',
"detail": "Formula",
"require": "m",
"repeat": "n",
"type": "string"
}]
},
],
toolbar: {
undo: 'Undo',
@ -10032,4 +10047,3 @@ export default {
support: 'The current browser does not support WebSocket',
}
};
Loading…
Cancel
Save