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. 7
      src/controllers/luckysheetConfigsetting.js
  2. 3
      src/core.js
  3. 37
      src/function/functionImplementation.js
  4. 22
      src/locale/en.js

7
src/controllers/luckysheetConfigsetting.js

@ -22,12 +22,13 @@ const luckysheetConfigsetting = {
enableAddBackTop: true, enableAddBackTop: true,
enablePage: true, enablePage: true,
pageInfo: null, pageInfo: null,
editMode: false, editMode: false,
beforeCreateDom: null, beforeCreateDom: null,
workbookCreateBefore: null, workbookCreateBefore: null,
workbookCreateAfter: null, workbookCreateAfter: null,
remoteFunction: null,
fireMousedown: null, fireMousedown: null,
plugins:[], plugins:[],
forceCalculation:false,//强制刷新公式,公式较多会有性能问题,慎用 forceCalculation:false,//强制刷新公式,公式较多会有性能问题,慎用
@ -39,4 +40,4 @@ const luckysheetConfigsetting = {
defaultCellColor: '#fff', defaultCellColor: '#fff',
} }
export default luckysheetConfigsetting; export default luckysheetConfigsetting;

3
src/core.js

@ -122,6 +122,7 @@ luckysheet.create = function (setting) {
luckysheetConfigsetting.beforeCreateDom = extendsetting.beforeCreateDom; luckysheetConfigsetting.beforeCreateDom = extendsetting.beforeCreateDom;
luckysheetConfigsetting.workbookCreateBefore = extendsetting.workbookCreateBefore; luckysheetConfigsetting.workbookCreateBefore = extendsetting.workbookCreateBefore;
luckysheetConfigsetting.workbookCreateAfter = extendsetting.workbookCreateAfter; luckysheetConfigsetting.workbookCreateAfter = extendsetting.workbookCreateAfter;
luckysheetConfigsetting.remoteFunction = extendsetting.remoteFunction;
luckysheetConfigsetting.fireMousedown = extendsetting.fireMousedown; luckysheetConfigsetting.fireMousedown = extendsetting.fireMousedown;
luckysheetConfigsetting.forceCalculation = extendsetting.forceCalculation; luckysheetConfigsetting.forceCalculation = extendsetting.forceCalculation;
@ -147,7 +148,7 @@ luckysheet.create = function (setting) {
// Store the currently used plugins for monitoring asynchronous loading // Store the currently used plugins for monitoring asynchronous loading
Store.asyncLoad.push(...luckysheetConfigsetting.plugins); Store.asyncLoad.push(...luckysheetConfigsetting.plugins);
// Register plugins // Register plugins
initPlugins(extendsetting.plugins , extendsetting.data); initPlugins(extendsetting.plugins , extendsetting.data);

37
src/function/functionImplementation.js

@ -1,3 +1,4 @@
import luckysheetConfigsetting from '../controllers/luckysheetConfigsetting';
import { luckysheet_getcelldata, luckysheet_parseData, luckysheet_getValue } from './func'; import { luckysheet_getcelldata, luckysheet_parseData, luckysheet_getValue } from './func';
import { inverse } from './matrix_methods'; import { inverse } from './matrix_methods';
import { getSheetIndex, getluckysheetfile,getRangetxt } from '../methods/get'; import { getSheetIndex, getluckysheetfile,getRangetxt } from '../methods/get';
@ -3336,7 +3337,7 @@ const functionImplementation = {
} }
else{ else{
if (typeof value !== 'string') { if (typeof value !== 'string') {
if (new Function("return " + value + criter)()) { if (new Function("return " + value + criter)()) {
matches++; matches++;
} }
} }
@ -27587,6 +27588,40 @@ const functionImplementation = {
return [formula.error.v, err]; 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; export default functionImplementation;

22
src/locale/en.js

@ -8827,6 +8827,21 @@ export default {
"type": "rangeall" "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: { toolbar: {
undo: 'Undo', undo: 'Undo',
@ -9391,7 +9406,7 @@ export default {
byRow: 'By row', byRow: 'By row',
byCol: 'By column', byCol: 'By column',
generateNewMatrix: 'Generate new matrix', generateNewMatrix: 'Generate new matrix',
}, },
comment:{ comment:{
"insert":"Insert", "insert":"Insert",
@ -9449,7 +9464,7 @@ export default {
"semicolon":"semicolon", "semicolon":"semicolon",
"comma":"comma", "comma":"comma",
"space":"space", "space":"space",
}, },
findAndReplace:{ findAndReplace:{
find:"Find", find:"Find",
@ -9509,7 +9524,7 @@ export default {
locationTiplessTwoRow:"Please select at least two rows", locationTiplessTwoRow:"Please select at least two rows",
locationTiplessTwoColumn:"Please select at least two columns", locationTiplessTwoColumn:"Please select at least two columns",
locationTipNotFindCell:"Cell not found" locationTipNotFindCell:"Cell not found"
}, },
sheetconfig: { sheetconfig: {
delete: 'Delete', delete: 'Delete',
@ -10032,4 +10047,3 @@ export default {
support: 'The current browser does not support WebSocket', support: 'The current browser does not support WebSocket',
} }
}; };
Loading…
Cancel
Save