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在线翻译读音例
发布评论