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.
490 lines
26 KiB
490 lines
26 KiB
import { luckysheet_getcelldata } from '../function/func';
|
|
// import functionlist from '../function/functionlist';
|
|
// import Store.luckysheet_function from '../function/Store.luckysheet_function';
|
|
import formula from '../global/formula';
|
|
import { isRealNum, isRealNull } from '../global/validate';
|
|
import { modelHTML } from './constant';
|
|
import { luckysheet_count_show } from './select';
|
|
import { replaceHtml, getObjType } from '../utils/util';
|
|
import Store from '../store';
|
|
import locale from '../locale/locale';
|
|
|
|
//插入函数
|
|
const insertFormula = {
|
|
init: function(){
|
|
let _this = this;
|
|
let _locale = locale();
|
|
let locale_formulaMore = _locale.formulaMore;
|
|
let locale_button = _locale.button;
|
|
|
|
$(document).off("keyup.fxSFLI").on("keyup.fxSFLI", "#searchFormulaListInput", function(){
|
|
$("#formulaTypeList").empty();
|
|
let txt = $(this).val().toUpperCase();
|
|
let functionlist = Store.functionlist;
|
|
|
|
if(txt == ""){
|
|
//若没有查找内容则根据类别筛选
|
|
_this.formulaListByType($("#formulaTypeSelect option:selected").val());
|
|
}
|
|
else{
|
|
for(let i = 0; i < functionlist.length; i++){
|
|
if(/^[a-zA-Z]+$/.test(txt)){
|
|
if(functionlist[i].n.indexOf(txt) != "-1"){
|
|
$('<div class="listBox" name="'+ functionlist[i].n +'"><span>'+ functionlist[i].n +'</span><span>'+ functionlist[i].a +'</span></div>').appendTo($("#formulaTypeList"));
|
|
}
|
|
}
|
|
else if(functionlist[i].a.indexOf(txt) != "-1"){
|
|
$('<div class="listBox" name="'+ functionlist[i].n +'"><span>'+ functionlist[i].n +'</span><span>'+ functionlist[i].a +'</span></div>').appendTo($("#formulaTypeList"));
|
|
}
|
|
}
|
|
}
|
|
|
|
$("#formulaTypeList .listBox:first-child").addClass("on"); //默认公式列表第一个为选中状态
|
|
});
|
|
|
|
$(document).off("change.fxFormulaTS").on("change.fxFormulaTS", "#formulaTypeSelect", function(){
|
|
let type = $("#formulaTypeSelect option:selected").val();
|
|
_this.formulaListByType(type);
|
|
});
|
|
|
|
$(document).off("click.fxListbox").on("click.fxListbox", "#formulaTypeList .listBox", function(){
|
|
$(this).addClass("on").siblings().removeClass("on");
|
|
});
|
|
|
|
//选择公式后弹出参数栏弹框
|
|
$(document).off("click.fxFormulaCf").on("click.fxFormulaCf", "#luckysheet-search-formula-confirm", function(){
|
|
let formula = $("#luckysheet-search-formula .listBox.on").attr("name");
|
|
let formulaTxt = '<span dir="auto" class="luckysheet-formula-text-color">=</span><span dir="auto" class="luckysheet-formula-text-color">'+ formula.toUpperCase() +'</span><span dir="auto" class="luckysheet-formula-text-color">(</span><span dir="auto" class="luckysheet-formula-text-color">)</span>';
|
|
|
|
$("#luckysheet-rich-text-editor").html(formulaTxt);
|
|
$("#luckysheet-functionbox-cell").html($("#luckysheet-rich-text-editor").html());
|
|
|
|
_this.formulaParmDialog(formula);
|
|
});
|
|
|
|
//公式参数框
|
|
$(document).off("focus.fxParamInput").on("focus.fxParamInput", "#luckysheet-search-formula-parm .parmBox input", function(){
|
|
let parmIndex = $(this).parents(".parmBox").index();
|
|
formula.data_parm_index = parmIndex;
|
|
|
|
let formulatxt = $(this).parents("#luckysheet-search-formula-parm").find(".luckysheet-modal-dialog-title-text").text();
|
|
let parmLen = Store.luckysheet_function[formulatxt].p.length;
|
|
|
|
let parmDetail, parmRepeat;
|
|
if(parmIndex >= parmLen){
|
|
parmDetail = Store.luckysheet_function[formulatxt].p[parmLen - 1].detail;
|
|
parmRepeat = Store.luckysheet_function[formulatxt].p[parmLen - 1].repeat;
|
|
}
|
|
else{
|
|
parmDetail = Store.luckysheet_function[formulatxt].p[parmIndex].detail;
|
|
parmRepeat = Store.luckysheet_function[formulatxt].p[parmIndex].repeat;
|
|
}
|
|
|
|
//参数选区显示,参数值显示
|
|
_this.parmTxtShow($(this).val());
|
|
|
|
//计算结果
|
|
_this.functionStrCompute();
|
|
|
|
//参数名称和释义切换
|
|
$("#luckysheet-search-formula-parm .parmDetailsBox").empty();
|
|
|
|
let parmName = $(this).parents(".parmBox").find(".name").text();
|
|
$('<span>'+ parmName +':</span><span>'+ parmDetail +'</span>').appendTo($("#luckysheet-search-formula-parm .parmDetailsBox"));
|
|
|
|
//公式参数可自增(参数自增最多5个)
|
|
if(parmRepeat == "y"){
|
|
let parmCount = $("#luckysheet-search-formula-parm .parmBox").length;
|
|
|
|
if(parmCount < 5 && parmIndex == (parmCount - 1)){
|
|
$('<div class="parmBox"><div class="name">'+ locale_formulaMore.valueTitle +''+ (parmCount + 1) +'</div><div class="txt"><input class="formulaInputFocus" /><i class="fa fa-table" aria-hidden="true" title="'+locale_formulaMore.tipSelectDataRange+'"></i></div><div class="val">=</div></div>').appendTo($("#luckysheet-search-formula-parm .parmListBox"));
|
|
}
|
|
}
|
|
});
|
|
|
|
$(document).off("blur.fxParamInput").on("blur.fxParamInput", "#luckysheet-search-formula-parm .parmBox input", function(){
|
|
let txt = $(this).val();
|
|
|
|
if(formula.getfunctionParam(txt).fn == null && !formula.iscelldata(txt)){
|
|
if(!isRealNum(txt) && txt != "" && txt.length <= 2 && txt.indexOf('"') != 0 && txt.lastIndexOf('"') != 0){
|
|
txt = '"' + txt + '"';
|
|
$(this).val(txt);
|
|
|
|
_this.parmTxtShow(txt);
|
|
_this.functionStrCompute();
|
|
}
|
|
}
|
|
});
|
|
|
|
$(document).off("keyup.fxParamInput").on("keyup.fxParamInput", "#luckysheet-search-formula-parm .parmBox input", function(){
|
|
//参数选区显示,参数值显示
|
|
_this.parmTxtShow($(this).val());
|
|
|
|
//计算结果
|
|
_this.functionStrCompute();
|
|
});
|
|
|
|
//点击图标选取数据范围
|
|
$(document).off("click.fxParamI").on("click.fxParamI", "#luckysheet-search-formula-parm .parmBox i", function(){
|
|
formula.data_parm_index = $(this).parents(".parmBox").index();
|
|
|
|
//选取范围弹出框
|
|
$("#luckysheet-search-formula-parm").hide();
|
|
$("#luckysheet-modal-dialog-mask").hide();
|
|
|
|
$("#luckysheet-search-formula-parm-select").remove();
|
|
|
|
if($(this).parents(".parmBox").find(".txt input").val() == ""){
|
|
$("body").append(replaceHtml(modelHTML, {
|
|
"id": "luckysheet-search-formula-parm-select",
|
|
"addclass": "luckysheet-search-formula-parm-select",
|
|
"title": locale_formulaMore.tipSelectDataRange,
|
|
"content": "<input id='luckysheet-search-formula-parm-select-input' class='luckysheet-datavisual-range-container' style='font-size: 14px;padding:5px;max-width:none;' spellcheck='false' aria-label='"+ locale_formulaMore.tipDataRangeTile +"' readonly='true' placeholder='"+ locale_formulaMore.tipDataRangeTile +"'>",
|
|
"botton": '<button id="luckysheet-search-formula-parm-select-confirm" class="btn btn-primary">'+locale_button.confirm+'</button>',
|
|
"style": "z-index:100003"
|
|
}));
|
|
}
|
|
else{
|
|
$("body").append(replaceHtml(modelHTML, {
|
|
"id": "luckysheet-search-formula-parm-select",
|
|
"addclass": "luckysheet-search-formula-parm-select",
|
|
"title": locale_formulaMore.tipSelectDataRange,
|
|
"content": "<input id='luckysheet-search-formula-parm-select-input' class='luckysheet-datavisual-range-container' style='font-size: 14px;padding:5px;max-width:none;' spellcheck='false' aria-label='"+ locale_formulaMore.tipDataRangeTile +"' readonly='true' value='"+ $(this).parents(".parmBox").find(".txt input").val() +"'>",
|
|
"botton": '<button id="luckysheet-search-formula-parm-select-confirm" class="btn btn-primary">'+locale_button.confirm+'</button>',
|
|
"style": "z-index:100003"
|
|
}));
|
|
}
|
|
|
|
let $t = $("#luckysheet-search-formula-parm-select").find(".luckysheet-modal-dialog-content").css("min-width", 300).end(),
|
|
myh = $t.outerHeight(),
|
|
myw = $t.outerWidth();
|
|
let winw = $(window).width(), winh = $(window).height();
|
|
let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
|
|
$("#luckysheet-search-formula-parm-select").css({ "left": (winw + scrollLeft - myw) / 2, "top": (winh + scrollTop - myh) / 3 }).show();
|
|
|
|
//参数选区虚线框
|
|
_this.parmTxtShow($(this).parents(".parmBox").find(".txt input").val());
|
|
});
|
|
|
|
//点击确定
|
|
$(document).off("click.fxParamCf").on("click.fxParamCf", "#luckysheet-search-formula-parm-confirm", function(){
|
|
$("#luckysheet-wa-functionbox-confirm").click();
|
|
});
|
|
|
|
//选取范围后传回参数栏弹框
|
|
$(document).off("click.fxParamSelectCf").on("click.fxParamSelectCf", "#luckysheet-search-formula-parm-select-confirm", function(){
|
|
let parmIndex = $("#luckysheet-search-formula-parm-select-input").attr("data_parm_index");
|
|
|
|
$("#luckysheet-search-formula-parm-select").hide();
|
|
$("#luckysheet-search-formula-parm").show();
|
|
$("#luckysheet-search-formula-parm .parmBox").eq(parmIndex).find(".txt input").focus();
|
|
});
|
|
},
|
|
formulaListDialog: function(){
|
|
let _this = this;
|
|
|
|
let _locale = locale();
|
|
let locale_formulaMore = _locale.formulaMore;
|
|
let locale_button = _locale.button
|
|
|
|
$("#luckysheet-modal-dialog-mask").show();
|
|
$("#luckysheet-search-formula").remove();
|
|
|
|
$("body").append(replaceHtml(modelHTML, {
|
|
"id": "luckysheet-search-formula",
|
|
"addclass": "luckysheet-search-formula",
|
|
"title": "",
|
|
"content": "<div class='inpbox'><label for='searchFormulaListInput'>"+ locale_formulaMore.findFunctionTitle +":</label><input class='formulaInputFocus' id='searchFormulaListInput' placeholder='"+ locale_formulaMore.tipInputFunctionName +"' spellcheck='false'/></div><div class='selbox'><label>"+locale_formulaMore.selectCategory+":</label><select id='formulaTypeSelect'><option value='0'>"+locale_formulaMore.Math+"</option><option value='1'>"+locale_formulaMore.Statistical+"</option><option value='2'>"+locale_formulaMore.Lookup+"</option><option value='3'>"+locale_formulaMore.luckysheet+"</option><option value='4'>"+locale_formulaMore.dataMining+"</option><option value='5'>"+locale_formulaMore.Database+"</option><option value='6'>"+locale_formulaMore.Date+"</option><option value='7'>"+locale_formulaMore.Filter+"</option><option value='8'>"+locale_formulaMore.Financial+"</option><option value='9'>"+locale_formulaMore.Engineering+"</option><option value='10'>"+locale_formulaMore.Logical+"</option><option value='11'>"+locale_formulaMore.Operator+"</option><option value='12'>"+locale_formulaMore.Text+"</option><option value='13'>"+locale_formulaMore.Parser+"</option><option value='14'>"+locale_formulaMore.Array+"</option><option value='-1'>"+locale_formulaMore.other+"</option></select></div><div class='listbox'><label>"+locale_formulaMore.selectFunctionTitle+":</label><div id='formulaTypeList'></div></div>",
|
|
"botton": '<button id="luckysheet-search-formula-confirm" class="btn btn-primary">'+locale_button.confirm+'</button><button class="btn btn-default luckysheet-model-close-btn">'+locale_button.cancel+'</button>',
|
|
"style": "z-index:100003"
|
|
}));
|
|
let $t = $("#luckysheet-search-formula").find(".luckysheet-modal-dialog-content").css("min-width", 300).end(),
|
|
myh = $t.outerHeight(),
|
|
myw = $t.outerWidth();
|
|
let winw = $(window).width(), winh = $(window).height();
|
|
let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
|
|
$("#luckysheet-search-formula").css({ "left": (winw + scrollLeft - myw) / 2, "top": (winh + scrollTop - myh) / 3, "user-select": "none" }).show();
|
|
|
|
_this.formulaListByType("0"); //默认公式列表为类型0
|
|
$("#searchFormulaListInput").focus();
|
|
},
|
|
formulaListByType: function(type){
|
|
$("#formulaTypeList").empty();
|
|
let functionlist = Store.functionlist;
|
|
|
|
for(let i = 0; i < functionlist.length; i++){
|
|
if((type == "-1" && functionlist[i].t > 14) || functionlist[i].t == type){
|
|
$('<div class="listBox" name="'+ functionlist[i].n +'"><span>'+ functionlist[i].n +'</span><span>'+ functionlist[i].a +'</span></div>').appendTo($("#formulaTypeList"));
|
|
}
|
|
}
|
|
|
|
$("#formulaTypeList .listBox:first-child").addClass("on"); //默认公式列表第一个为选中状态
|
|
},
|
|
formulaParmDialog: function(formulaTxt, parm){ //参数弹出框
|
|
let parm_title = '',
|
|
parm_content = '',
|
|
parm_list_content = '';
|
|
|
|
let _locale = locale();
|
|
let locale_formulaMore = _locale.formulaMore;
|
|
let locale_button = _locale.button;
|
|
let functionlist = Store.functionlist;
|
|
|
|
for(let i = 0; i < functionlist.length; i++){
|
|
if(functionlist[i].n == formulaTxt.toUpperCase()){
|
|
parm_title = functionlist[i].n;
|
|
|
|
for(let j = 0; j < functionlist[i].p.length; j++){
|
|
if(parm == null){
|
|
//无参数
|
|
parm_list_content += '<div class="parmBox">'+
|
|
'<div class="name">'+ functionlist[i].p[j].name +'</div>'+
|
|
'<div class="txt">'+
|
|
'<input class="formulaInputFocus" spellcheck="false"/>' +
|
|
'<i class="fa fa-table" aria-hidden="true" title="'+locale_formulaMore.tipSelectDataRange+'"></i>'+
|
|
'</div>'+
|
|
'<div class="val">=</div>'+
|
|
'</div>';
|
|
}
|
|
else{
|
|
//有参数
|
|
if(parm[j] == null){
|
|
parm[j] = "";
|
|
}
|
|
|
|
parm_list_content += '<div class="parmBox">'+
|
|
'<div class="name">'+ functionlist[i].p[j].name +'</div>'+
|
|
'<div class="txt">'+
|
|
'<input class="formulaInputFocus" value="'+ parm[j] +'" spellcheck="false"/>'+
|
|
'<i class="fa fa-table" aria-hidden="true" title="'+locale_formulaMore.tipSelectDataRange+'"></i>'+
|
|
'</div>'+
|
|
'<div class="val">=</div>'+
|
|
'</div>';
|
|
}
|
|
}
|
|
|
|
parm_content = '<div>'+
|
|
'<div class="parmListBox">'+ parm_list_content +'</div>'+
|
|
'<div class="formulaDetails">'+ functionlist[i].d +'</div>'+
|
|
'<div class="parmDetailsBox"></div>'+
|
|
'<div class="result">'+locale_formulaMore.calculationResult+' = <span></span></div>'+
|
|
'</div>';
|
|
}
|
|
}
|
|
|
|
$("#luckysheet-search-formula").hide();
|
|
$("#luckysheet-modal-dialog-mask").hide();
|
|
|
|
$("#luckysheet-search-formula-parm").remove();
|
|
$("body").append(replaceHtml(modelHTML, {
|
|
"id": "luckysheet-search-formula-parm",
|
|
"addclass": "luckysheet-search-formula-parm",
|
|
"title": parm_title,
|
|
"content": parm_content,
|
|
"botton": '<button id="luckysheet-search-formula-parm-confirm" class="btn btn-primary">'+locale_button.confirm+'</button><button class="btn btn-default luckysheet-model-close-btn">'+locale_button.cancel+'</button>',
|
|
"style": "z-index:100003"
|
|
}));
|
|
let $t = $("#luckysheet-search-formula-parm").find(".luckysheet-modal-dialog-content").css("min-width", 300).end(),
|
|
myh = $t.outerHeight(),
|
|
myw = $t.outerWidth();
|
|
let winw = $(window).width(), winh = $(window).height();
|
|
let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
|
|
$("#luckysheet-search-formula-parm").css({ "left": (winw + scrollLeft - myw) / 2, "top": (winh + scrollTop - myh) / 3 }).show();
|
|
|
|
//参数栏第一个参数聚焦,显示选取虚线框
|
|
$("#luckysheet-search-formula-parm .parmBox:eq(0) input").focus();
|
|
|
|
//遍历参数,有参数显示值,无显示空
|
|
$("#luckysheet-search-formula-parm .parmBox").each(function(index,e){
|
|
let parmtxt = $(e).find(".txt input").val();
|
|
|
|
if(formula.getfunctionParam(parmtxt).fn == null){ //参数不是公式
|
|
if(formula.iscelldata(parmtxt)){ //参数是选区
|
|
let txtdata = luckysheet_getcelldata(parmtxt).data;
|
|
|
|
if(getObjType(txtdata) == "array"){ //参数为多个单元格选区
|
|
let txtArr = [];
|
|
|
|
for(let i = 0; i < txtdata.length; i++){
|
|
for(let j = 0; j < txtdata[i].length; j++){
|
|
let cell = txtdata[i][j];
|
|
|
|
if(cell == null || isRealNull(cell.v)){
|
|
txtArr.push(null);
|
|
}
|
|
else{
|
|
txtArr.push(cell.v);
|
|
}
|
|
}
|
|
}
|
|
|
|
$("#luckysheet-search-formula-parm .parmBox").eq(index).find(".val").text(" = {"+ txtArr.join(",") +"}");
|
|
}
|
|
else{ //参数为单个单元格选区
|
|
$("#luckysheet-search-formula-parm .parmBox").eq(index).find(".val").text(" = {"+ txtdata.v +"}");
|
|
}
|
|
}
|
|
else{ //参数不是选区
|
|
$("#luckysheet-search-formula-parm .parmBox").eq(index).find(".val").text(" = {"+ parmtxt +"}");
|
|
}
|
|
}
|
|
else{ //参数是公式
|
|
$("#luckysheet-search-formula-parm .parmBox").eq(index).find(".val").text(" = {"+ eval($.trim(formula.functionParserExe("=" + parmtxt))) +"}");
|
|
}
|
|
})
|
|
|
|
$("#luckysheet-formula-functionrange .luckysheet-formula-functionrange-highlight").remove();
|
|
formula.data_parm_index = 0;
|
|
formula.rangestart = true;
|
|
},
|
|
parmTxtShow: function(parmtxt){
|
|
if(formula.getfunctionParam(parmtxt).fn == null){ //参数不是公式
|
|
if(formula.iscelldata(parmtxt)){ //参数是选区
|
|
let cellrange = formula.getcellrange(parmtxt);
|
|
let r1 = cellrange.row[0],
|
|
r2 = cellrange.row[1],
|
|
c1 = cellrange.column[0],
|
|
c2 = cellrange.column[1];
|
|
let row = Store.visibledatarow[r2],
|
|
row_pre = r1 - 1 == -1 ? 0 : Store.visibledatarow[r1 - 1];
|
|
let col = Store.visibledatacolumn[c2],
|
|
col_pre = c1 - 1 == -1 ? 0 : Store.visibledatacolumn[c1 - 1];
|
|
|
|
$("#luckysheet-formula-functionrange-select").css({
|
|
"left": col_pre,
|
|
"width": col - col_pre - 1,
|
|
"top": row_pre,
|
|
"height": row - row_pre - 1
|
|
}).show();
|
|
$("#luckysheet-formula-help-c").hide();
|
|
|
|
luckysheet_count_show(col_pre, row_pre, col - col_pre - 1, row - row_pre - 1, cellrange.row, cellrange.column);
|
|
|
|
let txtdata = luckysheet_getcelldata(parmtxt).data;
|
|
if(getObjType(txtdata) == "array"){ //参数为多个单元格选区
|
|
let txtArr = [];
|
|
|
|
for(let i = 0; i < txtdata.length; i++){
|
|
for(let j = 0; j < txtdata[i].length; j++){
|
|
let cell = txtdata[i][j];
|
|
|
|
if(cell == null || isRealNull(cell.v)){
|
|
txtArr.push(null);
|
|
}
|
|
else{
|
|
txtArr.push(cell.v);
|
|
}
|
|
}
|
|
}
|
|
|
|
$("#luckysheet-search-formula-parm .parmBox").eq(formula.data_parm_index).find(".val").text(" = {"+ txtArr.join(",") +"}");
|
|
}
|
|
else{ //参数为单个单元格选区
|
|
$("#luckysheet-search-formula-parm .parmBox").eq(formula.data_parm_index).find(".val").text(" = {"+ txtdata.v +"}");
|
|
}
|
|
}
|
|
else{ //参数不是选区
|
|
$("#luckysheet-search-formula-parm .parmBox").eq(formula.data_parm_index).find(".val").text(" = {"+ parmtxt +"}");
|
|
|
|
$("#luckysheet-formula-functionrange-select").hide();
|
|
}
|
|
}
|
|
else{
|
|
//参数是公式
|
|
let txt;
|
|
for(let k = 0; k < formula.getfunctionParam(parmtxt).param.length; k++){
|
|
if(formula.iscelldata(formula.getfunctionParam(parmtxt).param[k])){
|
|
txt = formula.getfunctionParam(parmtxt).param[k];
|
|
break;
|
|
}
|
|
}
|
|
|
|
let cellrange = formula.getcellrange(txt);
|
|
let r1 = cellrange.row[0],
|
|
r2 = cellrange.row[1],
|
|
c1 = cellrange.column[0],
|
|
c2 = cellrange.column[1];
|
|
let row = Store.visibledatarow[r2],
|
|
row_pre = r1 - 1 == -1 ? 0 : Store.visibledatarow[r1 - 1];
|
|
let col = Store.visibledatacolumn[c2],
|
|
col_pre = c1 - 1 == -1 ? 0 : Store.visibledatacolumn[c1 - 1];
|
|
|
|
$("#luckysheet-formula-functionrange-select").css({
|
|
"left": col_pre,
|
|
"width": col - col_pre - 1,
|
|
"top": row_pre,
|
|
"height": row - row_pre - 1
|
|
}).show();
|
|
$("#luckysheet-formula-help-c").hide();
|
|
|
|
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))) +"}");
|
|
}
|
|
},
|
|
functionStrCompute: function(){
|
|
let isVal = true; //参数不为空
|
|
let parmValArr = []; //参数值集合
|
|
let lvi = -1; //最后一个有值的参数索引
|
|
|
|
let formulatxt = $("#luckysheet-search-formula-parm").find(".luckysheet-modal-dialog-title-text").text();
|
|
let p = Store.luckysheet_function[formulatxt].p;
|
|
|
|
$("#luckysheet-search-formula-parm .parmBox").each(function(i, e){
|
|
let parmtxt = $(e).find(".txt input").val();
|
|
|
|
let parmRequire;
|
|
if(i < p.length){
|
|
parmRequire = p[i].require;
|
|
}
|
|
else{
|
|
parmRequire = p[p.length - 1].require;
|
|
}
|
|
|
|
if(parmtxt == "" && parmRequire == "m"){
|
|
isVal = false;
|
|
}
|
|
|
|
if(parmtxt != ""){
|
|
lvi = i;
|
|
}
|
|
});
|
|
|
|
//单元格显示
|
|
let functionHtmlTxt;
|
|
if(lvi == -1){
|
|
functionHtmlTxt = "=" + $("#luckysheet-search-formula-parm .luckysheet-modal-dialog-title-text").text() + "()";
|
|
}
|
|
else if(lvi == 0){
|
|
functionHtmlTxt = "=" + $("#luckysheet-search-formula-parm .luckysheet-modal-dialog-title-text").text() + "(" + $("#luckysheet-search-formula-parm .parmBox").eq(0).find(".txt input").val() + ")";
|
|
}
|
|
else{
|
|
for(let j = 0; j <= lvi; j++){
|
|
parmValArr.push($("#luckysheet-search-formula-parm .parmBox").eq(j).find(".txt input").val());
|
|
}
|
|
|
|
functionHtmlTxt = "=" + $("#luckysheet-search-formula-parm .luckysheet-modal-dialog-title-text").text() + "(" + parmValArr.join(",") + ")";
|
|
}
|
|
|
|
let function_str = formula.functionHTMLGenerate(functionHtmlTxt);
|
|
$("#luckysheet-rich-text-editor").html(function_str);
|
|
$("#luckysheet-functionbox-cell").html($("#luckysheet-rich-text-editor").html());
|
|
|
|
if(isVal){ //公式计算
|
|
let fp = $.trim(formula.functionParserExe($("#luckysheet-rich-text-editor").text()));
|
|
|
|
let result = null;
|
|
|
|
try {
|
|
result = eval(fp);
|
|
}
|
|
catch (e) {
|
|
result = formula.error.n;
|
|
}
|
|
|
|
$("#luckysheet-search-formula-parm .result span").text(result);
|
|
}
|
|
}
|
|
}
|
|
|
|
export default insertFormula;
|