danburite是什么意思burite在线翻译读音-菲菲化妆学校


2023年4月1日发(作者:多米尼克 斯特劳斯 卡恩)

web报表页⾯及json数据公式解析计算器

前⼀段时间,为了满⾜公司的web报表系统的需求,利⽤javascript开发了⼀个⾃定义公式解析计算器。开发⼈员可以根据⼀定规则,⾃定

义web页⾯元素或者json字段之间的公式关系,实现算术运算和⼀些逻辑运算。

另外,还对页⾯的输⼊,数据的有效位数等进⾏了处理,每个数据字段的有效位数,开发⼈员都可以⾃定义。

下边给出具体实现代码:

/**

*模拟java的包,或者C#中的命名空间的概念

**/

vartohot=tohot?tohot:{};

s=s?s:{};

ation=ation?ation:{};

/**

*报表公式计算器实现

*/

vartohotCalculator=sionCalculator=sionCalculator?

sionCalculator:{

description:\"通⽤web报表公式解析计算器,根据⾃定义的报表计算公式,⾃动进⾏公式解析和报表数据计算,操作web报表页⾯数据和json数据。\",

author:\"huangyuanmu\",

version:\"1.0(2009-07-29)\",

report:{},

//根据公式,获取计算以后的值

getValue:function(report,formular_str,dataType)

{

//解析公式

function_parseFormular(){

if(mathing_begin)

{

mathing_str+=formular_(i,1);

returntrue;

}劳劳亭 李白

else

{

if(IsVar)

{

formular_str_ana+=\")\";

CurVar_Length+=\")\".length;

//判断当前的变量的值是否为空

tmpEl=eval(formular_str_(CurVar_start,CurVar_Length));

if(isNaN(tmpEl))

{

formular_str_ana=formular_str_(0,CurVar_start);

formular_str_ana+=\"0\";

}

}

formular_str_ana+=formular_(i,1);

IsVar=false;

returntrue;

}

returnfalse;

}

varformular_str_ana;

varreturnValue;

varIsVar;//表⽰该处的字符表⽰变量

varCurVar_start,CurVar_Length;//表⽰当前的变量型字符串

varmathing_begin=false;//字符串的匹配操作是否开始

varmathing_str=\"\";//接受并解析匹配字符串

returnValue=0;

IsVar=false;

varel_chang=\"report.\";

formular_str_ana=\"\";

if(dataType==null){

dataType=\"2\";

}

for(i=0;i

{

switch(formular_(i,1))

{

case\"$\":

{

if(mathing_begin)

{

mathing_str+=formular_(i,1);

break;

}

else

{

//变量的开始

CurVar_start=formular_str_;

formular_str_ana+=\"parseFloat(\"+el_chang;

CurVar_Length=(\"parseFloat(\"+el_chang).length;

IsVar=true;

break;

}

}

case\"@\":

{

//匹配字符串的解释

if(mathing_begin)

{

//匹配字符串结束

math异性对你说千里共婵娟 ing_begin=false;

mathing_str_arr=mathing_(\";\");

formular_str_ana+=\"/^\"+mathing_str_arr[0]+\"$/(\";

if(mathing_str_arr[1].substr(0,1)==\"$\")

{

formular_str_ana+=\"report\"+\".\"+mathing_str_arr[1].substr(1,mathing_str_arr[1].length-1)+\")\";

}

else

{

//⾮变量

formular_str_ana+=\"\'\"+mathing_str_arr[1].substr(0,mathing_str_arr[1].length)+\"\')\";

}

}

else

{

//匹配字符串开始

mathing_begin=true;

mathing_str=\"\";

}

break;

}

case\"+\":

{

{

if(_parseFormular()){

break;

}

}

case\"-\":

{

if(_parseFormular()){

break;

}

}

case\"*\":

{

if(_parseFormular()){

break;

}

}

case\"/\":

{

if(_parseFormular()){

break;

}

}

case\"%\":

{

if(_parseFormular()){

break;

}

}

case\")\":

{

if(_parseFormular()){

break;

}

}

case\"?\":

{

if(_parseFormular()){

break;

}

}

case\":\":

{

if(_parseFormular()){

break;

}

}

case\"<\":

{

if(_parseFormular()){

break;

}

}

case\"=\":

{

if(_parseFormular()){

break;

}

}

case\">\":

{

if(_parseFormular()){

break;

}

}

case\"!\":

case\"!\":

{

if(_parseFormular()){

break;

}

}

case\"|\":

{

if(_parseFormular()){

break;

}

}

case\"&\":

{

if(_parseFormular()){

break;

}

}

default:

{

if(mathing_begin)

{

mathing_str+=formular_(i,1);

break;

}

else

{

if(IsVar)

{

CurVar_Length++;

}

formular_str_ana+=formular_(i,1);

}

}

}

}

if(IsVar)

{

formular_str_ana+=\")\";

CurVar_Length+=\")\".length;

//判断当前的变量的值是否为空

tmpEl=eval(formular_str_(CurVar_start,CurVar_Length));

if(isNaN(tmpEl))

{

formular_str_ana=formular_str_(0,CurVar_start);

formular_str_ana+=\"0\";

}

IsVar=false;

}

if(mathing_begin)

{

//匹配字符串结束

mathing_begin=false;

mathing_str_arr=mathing_(\",\");

formular_str_ana+=\"/\"+mathing_str_arr[0]+\"/(\";

if(mathing_str_arr[1].substr(0,1)==\"$\")

{

formular_str_ana+=\"report\"+\".\"+mathing_str_arr[1].substr(1,mathing_str_arr[1].length-1)+\")\";

}

else

{

//⾮变量

formular_str_ana+=\"\'\"+mathing_str_arr[1].substr(0,mathing_str_arr[1].length)+\"\')\";

}

}

returnValue=eval(formular_str_ana);

return杜牧的诗作二十四桥明月夜 Value=eval(formular_str_a红酥手黄藤酒全文阅读 na);

//如果公式计算的值⼩于0.005,则认为为零

if(((returnValue-0.00))<0.005)

{

returnValue=Data(\"0\",dataType);

}else{

returnValue=Data(returnValue+\"\",dataType);

}

returnreturnValue;

},

//格式化整数

formatInteger:funct业精于勤荒于嬉下一句 ion(IntegerStr){

//获取字符串的长度和⾸字符和次字符,然后进⾏判断

varstrLen=;

varfirstStr=(0,1);

varsecondStr=(1,1);

vartmpStr=IntegerStr;

//苟组词 针对正数的处理

if(firstStr!=\"-\"){

if((firstStr==\"0\")&&(strLen>1)){

tmpStr=(1,strLen-1);

tmpStr=Integer(tmpStr);

}

}

else{

//负数的处理

if((secondStr==\"0\")&&(strLen>2)){

tmpStr=\"-\"+(2,strLen-2);

tmpStr=Integer(tmpStr);

}

}

returntmpStr;

},

//格式化浮点数

formatFloat:function(FloatStr){

//将字符串组合成整数部分和⼩数部分

varFloatStrArr=(\".\");

varInteger_part=FloatStrArr[0];

varFloat_part=FloatStrArr[1];

varFloatPartLen=Float_;

//处理整数部分

if((Integer_part==\"-\")||(Integer_part==\"\")){

Integer_part+=\"0\";

}

Integer_part=Integer(Integer_part);

//处理⼩数部分

if(FloatPartLen==0){

Float_part+=\"00\";

}

else{

if(FloatPartLen==1){

Float_part+=\"0\";

}

}

//合并

return(Integer_part+\".\"+Float_part);

},

//数据验证,并设置json对象元素的值

formatData:function(DataStr,DataType){

varreturnValue=\"0.00\";

varIntegerCode,FloatCode;//数字的整数验证码和⼩数验证码

IntegerCode=/^[-]?[0-9]+$/i;//整数

FloatCode=/^[-]?[0-9]*[.][0-9]+$/i;

FloatCode=/^[-]?[0-9]*[.][0-9]+$/i;

//整数

if(DataStr!=\"\"){

if(DataType==\"1\")

{

if((IntegerCode)==null)

{

if(((FloatCode)==null))

{

returnValue=\"0\";

}

else{

varreVal=parseFloat(Float(DataStr));

returnValue=\"\"+d(0);

}

}

else{

returnValue=Integer(DataStr);

}

}

elseif((DataType==\"2\")||(DataType==\"3\")||(DataType==\"4\"))

{

if((IntegerCode)==null)

{

if(((FloatCode)==null))

{

if(DataType==\"2\")

returnValue=\"0.00\";

if(DataType==\"3\")

returnValue=\"0.0000\";

if(DataType==\"4\")

returnValue=\"0.000000\";

}

else{

varreVal=parseFloat(Float(DataStr));

returnValue=d(parseInt(DataType)+(parseInt(DataType)-2));

}

}

else{

if(DataType==\"2\")

returnValue=Integer(DataStr+\".00\");

if(DataType==\"3\")

returnValue=Integer(DataStr+\".0000\");

if(DataType==\"4\")

returnValue=Integer(DataStr+\".000000\");

}

}else{

returnValue=\"0.00\";

}

}else{

if(DataType==\"1\"){

returnValue=\"0\";

}elseif(DataType==\"2\"){

returnValue=\"0.00\";

}elseif(DataType==\"3\"){

returnValue=\"0.0000\";

}elseif(DataType==\"4\"){

returnValue=\"0.000000\";

}else{

returnValue=\"0.00\";

}

}

returnreturnValue;

},

doCalculateFormular:function(formular){

varformualr_is_arr=/[,]/i;

//解析公式

if((formualr_is_arr)==null)

{

//单个公式

each_formular_arr=(\"^\");

//解析⽬标json值的有效位数

vartargetArray=each_formular_arr[1].sp琵琶行并序翻译 lit(\"#\");

//设置报表json对象的值

varvalue=ue(,targetArray[0],targetArray[1]);

eval(\".\"+each_formular_arr[0]+\"=value\");

//设置页⾯元素的值

varel=eval(each_formular_arr[0]);

=value;

}

else

{

//公式数组

all_formular_arr=(\",\");

for(k=0;k

{

//单个公式

each_formular_arr=all_formular_arr[k].split(\"^\");

//解析⽬标json值的有效位数

vartargetArray=each_formular_arr[1].split(\"#\");

//设置报表json对象的值

varvalue=ue(,targetArray[0],targetArray[1]);

eval(\".\"+each_formular_arr[0]+\"=value\");

//设置页⾯元素的值

varel=eval(each_formular_arr[0]);

=value;

}

}

},

//计算整个json报表对象,在保存报表的时候调⽤

doCalculateJson:function(reportFormular){

_calculatorJson(reportFormular);

//计算报表json对象的公式触发

function_calculatorJson(reportFormular){

varEachArrStr=\"\";

varFoumularArr;//公式数组

varformualr_is_arr=/[,]/i;

vare1;

//解析公式

for(keyinreportFormular){

formular=reportFormular[key];

if((formualr_is_arr)==null)

{

//单个公式

each_formular_arr=(\"^\");

//解析⽬标json值的有效位数

vartargetArray=each_formular_arr[1].split(\"#\");

varvalue=ue(,targetArray[0],targetArray[1]);

eval(\".\"+each_formular_arr[0]+\"=value\");

}

else

{

//公式数组

//公式数组

all_formular_arr=(\",\");

for(k=0;k

{

//单个公式

each_formular_arr=all_formular_arr[k].split(\"^\");

//解析⽬标json值的有效位数

vartargetArray=each_formular_arr[1].split(\"#\");

varvalue=ue(,targetArray[0],targetArray[1]);

eval(\".\"+each_formular_arr[0]+\"=value\");

}

}

}

}

},

//根据公式计算当前页⾯的表单元素的值,在页⾯onblur事件的时候调⽤

doCalculateCurr:function(cur_el_name,el_value,formular,DataType){

_calculatorCurr(cur_el_name,el_value,formular,DataType);

//计算当前页⾯的公式触发

function_calculatorCurr(cur_el_name,el_value,formular,DataType)

{

varEachArrStr=\"\";

varFoumularArr;//公式数组

varformualr_is_arr=/[,]/i;

vare1;

if(_dataAuth(cur_el_name,el_value,DataType))

{

//解析公式

if((formualr_is_arr)==null)

{

//单个公式

each_formular_arr=(\"^\");

//解析⽬标单元格的有效位数

vartargetArray=each_formular_arr[1].split(\"#\");

//设置报表json对象的值

varform_el_value=Data(el_value,DataType);

eval(\".\"+cur_el_name+\"=form_el_value\");

varvalue=ue(,targetArray[0],targetArray[1]);中秋节ppt模板免费

eval(\".\"+each_formular_arr[0]+\"=value\");

//设置页⾯元素的值

varel=eval(each_formular_arr[0]);

=value;

}

else

{

//公式数组

all_formular_arr=(\",\");

for(k=0;k

{

//单个公式

each_formular_arr=all_formular_arr[k].split(\"^\");

//解析⽬标单元格的有效位数

vartargetArray=each_formular_arr[1].split(\"#\");

//设置报表json对象的值

varform_el_value=Data(el_value,DataType);

eval(\".\"+cur_el_name+\"=form_el_value\");

varvalue=ue(,targetArray[0],targetArray[1]);

varvalue=ue(,targetArray[0],targetArray[1]);

eval(\".\"+each_formular_arr[0]+\"=value\");

//设置页⾯元素的值

varel=eval(each_formular_arr[0]);

=value;

}

}

}

}

//数据验证,并设置页⾯元素的值

function_dataAuth(DataStr_el_name,DataStr,DataType){

varDataStr_el=eval(DataStr_el_name);

DataStr_=Data(DataStr,DataType);

returntrue;

}

}

}

(3KB)

下载次数:73

更多推荐

formular是什么意思mular在线翻译读音例