javascript创建xmlDom对象02

[size=xx-small][b]xmlDom对象[/b][/size]


/**
* delHighCapTempTabReq 发送删除临时表的请求
* @param {string} sTempTabNo 临时表号
*
*/
function delHighCapTempTabReq(sTempTabNo)
{
//入参检查
if (!sTempTabNo)
{
return;
}
var oRequestNode= creatHighCapDelTblCMD(sTempTabNo);

//modify by z56317 20120523 更改为HTTPS协议后,由于返回给UI的结果用时较长,导致页面关闭后命令无法返回,连接无法释放,采用同步的机制进行处理,
//超时时间也修改为2秒,以免用户点击关闭页面后,服务器返回时间过长后页面关闭不掉,对用户感受不好。
//toXMLPack(oRequestNode, g_sendType.Asy, null);
toXMLPack(oRequestNode, g_sendType.Syn, null, g_time.TwoSec);
}

/*******************************************************************************
函数名: creatHighCapDelTblCMD
功能: 构造删除临时表的XML片段
Return: XML片段(DOM)-成功 null-失败
*******************************************************************************/
function creatHighCapDelTblCMD(tmpTblId)
{
if(!tmpTblId)
{
return null;
}

var oXmlDom = initXmlDom(g_cmdCode.CHR_CMD_HIGHCAP_DEL_TMP_TBL);
var doc = oXmlDom[0];
var requestNode = oXmlDom[1];

var sessionId = parseCookie();
var SESSIONIDNode = creatSingleChildParaNode(doc,"SESSIONID",sessionId);
requestNode.appendChild(SESSIONIDNode);

var arrTmpTblId = tmpTblId.split(",");
var tmpTblIdNode = creatMulitChildParaNode(doc,"TEMP_TBL",arrTmpTblId);
requestNode.appendChild(tmpTblIdNode);

return requestNode;
}
//----------------------------------------------------------------------------------------------------

//--------------------------------xml解析 孙国峰----------------------------------------
/*******************************************************************************
函数名: XMLToDict
功能: 结果集合XML解析成节点字典 节点以area为单位!
*******************************************************************************/
function XMLToDict(oRoot)
{
if(null == oRoot)
{
//alert("正在解析的XML为空!");
return null;
}
//alert("in XMLToDict-->"+oRoot.xml)
//获取DOM对象的根节点名称
var sNodeName = oRoot.nodeName; //取得dom对象根节点

//检查传入的data数据包是否正确
if ("response" != sNodeName)
{
//alert("in parseTBL()! request error");
return null;
}

var areaNodeList = oRoot.getElementsByTagName("area"); //取得dom节点集合area
if(null == areaNodeList)
{
return null;
}
else
{
var nodeDict = {}; //声明节点字典变量
//for(var i in pageNodeList)
for(var i = 0 ;i<areaNodeList.length; i++) //循环area节点集合
{
var sKey = areaNodeList[i].getAttribute("name") //取得每一个节点的name属性
//alert(sKey);
nodeDict[sKey] = areaNodeList[i]; //将每一个area节点赋给节点字典nodeDict
}

var recode = oRoot.getAttribute("recode"); //取得根节点的recode属性
//if("-1" == recode)
if("0" != recode)
{
/*
if(null == nodeDict["DETAIL"])
{
//alert("no DETAIL node!!");
}
else
{
var errDetal = nodeDict["DETAIL"].childNodes[0].attributes[0].nodeValue;
alert("Server:" + errDetal);
}
*/

return null;

}

return nodeDict;
}

}

/*******************************************************************************
函 数 名 : XMLToDictForRequestNode
功能描述 : 序列化request请求xml
输入参数 : oRoot - xmldom对象
返 回 值 : arrNodeDict - para节点字典,元素为xmldom节点对象,可以通过name索引,
例如:arrNodeDict["test"]访问name属性为test的xml节点。
null - 解析失败或参数错误。
调用函数 : 无
被调函数 : 模板管理模块requestTemplateInfoCallBack
*******************************************************************************/
function XMLToDictForRequestNode(oRoot)
{
if(null == oRoot)
{
return null;
}

//获取DOM对象的根节点名称
var sNodeName = oRoot.nodeName;

//检查传入的data数据包是否正确
if ("request" != sNodeName)
{
return null;
}

var arrAreaNodeList = oRoot.getElementsByTagName("para");
if(null == arrAreaNodeList)
{
return null;
}
else
{
var arrNodeDict = new Object();
for(var i = 0 ;i < arrAreaNodeList.length; i++)
{
var sKey = arrAreaNodeList[i].getAttribute("name")
arrNodeDict[sKey] = arrAreaNodeList[i];
}

return arrNodeDict;
}
}

/*******************************************************************************
函数名: parseTBL
功能: 结果集合解析函数
Return: null--失败
成功解析返回数组如下:[record,DETAILString] or [record,tblDict]
tblDict = {
PAGE = {
BEGIN_RECORD ="0" END_RECORD ="2"
ALL_NUM ="10000" DISPATCH_NUM="0"
}
HEAD = [
{ID ="o_0" NAME ="MSC"}
{ID ="c_0" NAME ="接通率"}
{ID ="c_1" NAME ="试呼次数"}
]
DATA = [
{o_0= " MSC1" c_0="111" c_1="111" c_2="111"}
{o_0= " MSC2" c_0="111" c_1="111" c_2="111"}
]
}
*******************************************************************************/
function parseTBL(tblData)
{
var nodeDict = XMLToDict(tblData);
if(null == nodeDict)
{
return null;
}

if(null == nodeDict["PAGE"])
{
//alert("no PAGE node!!");
return null;
}
if(null == nodeDict["HEAD"])
{
//alert("no HEAD node!!");
return null;
}
if(null == nodeDict["DATA"])
{
//alert("no DATA node!!");
return null;
}

var tblDict = {};
//构造PAGE节点的字典
var pageDict = {};
var pageAttributes = nodeDict["PAGE"].childNodes[0].attributes
for(var i=0; i<pageAttributes.length; i++)
{
var sKey = pageAttributes[i].nodeName;
var sValue = pageAttributes[i].nodeValue;
pageDict[sKey] = sValue;

//alert(sKey + "--" +sValue);
}
tblDict["PAGE"] = pageDict;

//构造HEAD(表头)节点的对象数组
var headList = [];
var headChildNodes = nodeDict["HEAD"].childNodes
for(var i=0; i<headChildNodes.length; i++)
{
var descDict = {};
var descNodeAttributes = headChildNodes[i].attributes
for (var j=0; j<descNodeAttributes.length; j++ )
{
var sKey = descNodeAttributes[j].nodeName;
var sValue = descNodeAttributes[j].nodeValue;

descDict[sKey] = sValue;
}
headList.push(descDict);
descDict = null;

}
tblDict["HEAD"] = headList;

//构造DATA(表数据)节点的对象数组
var dataList = [];
var dataChildNodes = nodeDict["DATA"].childNodes
for(var i=0; i<dataChildNodes.length; i++)
{
var descDict = {};
var descNodeAttributes = dataChildNodes[i].attributes
for (var j=0; j<descNodeAttributes.length; j++ )
{
var sKey = descNodeAttributes[j].nodeName;
var sValue = descNodeAttributes[j].nodeValue;

descDict[sKey] = sValue;
}
dataList.push(descDict);
descDict = null;
}
tblDict["DATA"] = dataList;

return tblDict;

}
/*******************************************************************************
函数名: parseCFGList
功能: 结果集合解析函数
Return: null--失败
成功解析返回数组如下:
list = [
{id :"o_0", value :"MSC1"}
{id :"o_1", value :"MSC2"}
{id :"o_2", value :"MSC3"}
]
*******************************************************************************/
function parseCFGList(tblData)
{
var nodeDict = XMLToDict(tblData);
if(null == nodeDict)
{
return null;
}
if(null == nodeDict["HEAD"])
{
//alert("no HEAD node!!");
return null;
}
if(null == nodeDict["DATA"])
{
//alert("no DATA node!!");
return null;
}

var IDID="";
var NAMEID=""
var headChildNodes = nodeDict["HEAD"].childNodes
for(var i=0; i<headChildNodes.length; i++)
{
var sName = headChildNodes[i].getAttribute("NAME");
switch(sName)
{
case "ID":
IDID = headChildNodes[i].getAttribute("ID");
break;
case "NAME":
NAMEID = headChildNodes[i].getAttribute("ID");
break;
default:
break;
}
}

if(("" == IDID)||("" == NAMEID))
{
//alert("HEAD node information is not enough!");
return null;
}

//构造节点的对象数组
var cfgList = [];
var dataChildNodes = nodeDict["DATA"].childNodes
for(var i=0; i<dataChildNodes.length; i++)
{
var descDict = {};
descDict["id"] = dataChildNodes[i].getAttribute(IDID);
descDict["value"] = dataChildNodes[i].getAttribute(NAMEID);

cfgList.push(descDict);
descDict = null;
}

return cfgList;

}
/*
function parseCFGList(tblData)
{
var nodeDict = XMLToDict(tblData);
if(null == nodeDict)
{
return null;
}
if(null == nodeDict["HEAD"])
{
alert("no HEAD node!!");
return null;
}

//构造节点的对象数组
var headList = [];
var headChildNodes = nodeDict["HEAD"].childNodes
for(var i=0; i<headChildNodes.length; i++)
{
var descDict = {};
descDict["id"] = headChildNodes[i].getAttribute("ID");
descDict["value"] = headChildNodes[i].getAttribute("NAME");

headList.push(descDict);
descDict = null;
}

return headList;

}
*/
/*******************************************************************************
函数名: parseSaveResult
功能: 结果集合解析函数
Return: null--失败 sURL--成功
成功解析返回数组如下:
*******************************************************************************/
function parseSaveResult(tblData)
{
var nodeDict = XMLToDict(tblData);
if(null == nodeDict)
{
return null;
}
if(null == nodeDict["FILE"])
{
//alert("no FILE node!!");
return null;
}

var sURL = nodeDict["FILE"].childNodes[0].getAttribute("URL");

return sURL;

}

/**
* 函 数 名 : createGetSGSNListCMD
* 功能描述 : 组装查询SGSN列表的XML
* 参 数 : 无
* 返 回 值 : oXml 请求SGSN列表的XML对象
*/
function createGetSGSNListCMD()
{
//创建XML对象
var oXmlDom = initXmlDom(g_cmdCode.RSM_CMD_GET_MEAS_DATA);
var oDoc = oXmlDom[0];
var oXml = oXmlDom[1];
var oPara = null;
var oValue = null;

//添加业务码
//modified by z00110907 2010-03-02 for CDMA Version.
if ((g_oVersionEnum.CS == g_sVersion) || (g_oVersionEnum.CDMA == g_sVersion))
{
oPara = creatSingleChildParaNode(oDoc, "REPORT_NAME", g_report.CHR_GET_MSC_LIST);
}
else if (g_oVersionEnum.PS == g_sVersion)
{
oPara = creatSingleChildParaNode(oDoc, "REPORT_NAME", g_report.CHR_GET_SGSN_LIST);
}

if (null == oPara)
{
return null;
}
oXml.appendChild(oPara);

//添加查询范围
oPara = creatParaNode(oDoc, "RECORD_THRESHOLD");
oValue = oDoc.createElement("value");
oProperty = creatPropertyNode(oDoc, "questNum", "1");
oValue.appendChild(oProperty);
oProperty = creatPropertyNode(oDoc, "beginRecord", "1");
oValue.appendChild(oProperty);
oProperty = creatPropertyNode(oDoc, "endRecord", "100");
oValue.appendChild(oProperty);
oProperty = creatPropertyNode(oDoc, "isSample", "0");
oValue.appendChild(oProperty);
oProperty = creatPropertyNode(oDoc, "dispatchRecord", "1");
oValue.appendChild(oProperty);
oPara.appendChild(oValue);
oXml.appendChild(oPara);

return oXml
}

/**
* 函 数 名 : createGetGGSNListCMD
* 功能描述 : 组装查询GGSN列表的XML
* 参 数 : 无
* 返 回 值 : oXml 请求GGSN列表的XML对象
*/
function createGetGGSNListCMD()
{
//创建XML对象
var oXmlDom = initXmlDom(g_cmdCode.RSM_CMD_GET_MEAS_DATA);
var oDoc = oXmlDom[0];
var oXml = oXmlDom[1];
var oPara = null;
var oValue = null;

//添加业务码
//modified by z00110907 2010-03-02 for CDMA Version.
if ((g_oVersionEnum.CS == g_sVersion) || (g_oVersionEnum.CDMA == g_sVersion))
{
oPara = creatSingleChildParaNode(oDoc, "REPORT_NAME", g_report.CHR_GET_MGW_LIST);
}
else if (g_oVersionEnum.PS == g_sVersion)
{
oPara = creatSingleChildParaNode(oDoc, "REPORT_NAME", g_report.CHR_GET_GGSN_LIST);
}

if (null == oPara)
{
return null;
}
oXml.appendChild(oPara);

//添加查询范围
oPara = creatParaNode(oDoc, "RECORD_THRESHOLD");
oValue = oDoc.createElement("value");
oProperty = creatPropertyNode(oDoc, "questNum", "1");
oValue.appendChild(oProperty);
oProperty = creatPropertyNode(oDoc, "beginRecord", "1");
oValue.appendChild(oProperty);
oProperty = creatPropertyNode(oDoc, "endRecord", "100");
oValue.appendChild(oProperty);
oProperty = creatPropertyNode(oDoc, "isSample", "0");
oValue.appendChild(oProperty);
oProperty = creatPropertyNode(oDoc, "dispatchRecord", "1");
oValue.appendChild(oProperty);
oPara.appendChild(oValue);
oXml.appendChild(oPara);

return oXml
}

//********************需要提取出去***********************
//超时信息打印标志,true表示已经打印过提示信息。
var g_bTimeOutPrintFlag = false;
/*******************************************************************************
函 数 名 : checkConnect
功能描述 : 超时检查函数
输入参数 : oResultXML - 结果XML
sRelaLocation - 当前页面到登录页面的相对路径
返 回 值 : true - 登录超时 false - 非登录超时
*******************************************************************************/
function checkConnect(oResultXML, sRelaLocation)
{
//数值类型的值不属于超时
if ((null == oResultXML) || ("number" == typeof(oResultXML)))
{
return false;
}

//当前页面是否在主框架页面中
var bInMainPage = false;

//主框架页面
if (null != parent && null != parent.g_oMainFrame)
{
bInMainPage = true;
}

var sRecode = 0;
try
{
var oResponse = oResultXML.getElementsByTagName("response")[0]; //取得xml数据中response标签
if (oResponse)
{
sRecode = oResponse.getAttribute("recode"); //取得rcode属性值
}
else
{
sRecode = oResultXML.getAttribute("recode"); //取得recode属性值
}
}
catch(e)
{
e = null;
}
finally
{ //610004
if (g_returncode.RSM_AUTO_LOGOUT == sRecode) //超过15分钟,Server自动注销
{
try //这里有可能抛异常
{
if (true == parent.g_bTimeOutPrintFlag) //超时信息打印,为true表示已打印
{
;
}
else
{
g_bTimeOutPrintFlag = true;

alert(g_oPublicAlertInfo.PUB_TimeOut); //弹出对话框--会话时段已超时,请重新登录
}
}
catch(e)
{
if(true == g_bTimeOutPrintFlag)
{
;
}
else
{
g_bTimeOutPrintFlag = true;

alert(g_oPublicAlertInfo.PUB_TimeOut);
e = null;
}

}
try
{
if (null != parent.g_oMainFrame) //全局框架对象
{
//modified by z00110907 2009-05-26 主框架直接跳转到登录页面
top.location.pathname = "/index.html"; //top为window属性,表示获取最顶层的祖先窗口
//top.location = sRelaLocation + "index.html";
}
}
catch(e)
{
e = null;
return true;
}

return true;
}
else
{
g_bTimeOutPrintFlag = false; //超时是否打印过提示信息
return false;
}
}
}

/**
* getAreaByName 通过name获取相应的area
* @param {object} oResXml 结果XML对象
* @param {string} sName area结点的name属性
*
* @return {object} 属性name为sName的area结点对象
*/
function getAreaByName(oResXml, sName)
{
//入参检查
if (!oResXml || !sName)
{
return null
}
var oRes = null;
var oAreas = oResXml.getElementsByTagName("area");
for (var i = 0; i < oAreas.length; i++)
{
if (oAreas[i].getAttribute("name") == sName)
{
oRes = oAreas[i];
break;
}
}
return oRes;
}

/**
* getParaByName 在XML对象中通过name获取相应的para节点对象
* @param {obj} oXML 被寻找的XML对象
* @param {string} sName para结点的name属性
*
* @return {object} 属性name为sName的para结点对象
*/
function getParaByName(oXML, sName)
{
//入参检查
if (!sName || !oXML)
{
return null
}
var oRes = null;
var oParas = oXML.getElementsByTagName("para");
for (var i = 0; i < oParas.length; i++)
{
if (oParas[i].getAttribute("name") == sName)
{
oRes = oParas[i];
break;
}
}
return oRes;
}

/**
* 函 数 名:createTmpTblNo
* 功能描述:创建临时表名称
* 参 数: 无
* 返 回 值:临时表名称字符串
*/
function createTmpTblNo()
{
var sessionid = parseCookie();
var millisecond = Date.parse(new Date());
var randomnum = Math.floor(Math.random( )*100);
return sessionid + "_" + millisecond + "_" + randomnum;
}

/**
* 函数名称: createProParaNode
* 函数功能: 分析报告中特有的xml节点
* 参数: oDoc xmlDom对象,sName节点名称,arrIdList各子节点的Id名称数组,arrValueList各子节点的值
* 返回: oParaNode节点结构形如
* <para name="name">
* <value>
* <property name="id">arrIdList[0]</property>
* <property name="value">arrValueList[0]</property>
* </value>
* <value>
* <property name="id">arrIdList[1]</property>
* <property name="value">arrValueList[1]</property>
* </value>
* </para>
*/
function createProParaNode(oDoc,sName,arrIdList,arrValueList)
{
var oParaNode = creatParaNode(oDoc, sName);

for (var i = 0 ;i < arrIdList.length; i++)
{
var oValueNode = creatValueNode(oDoc);
var oPropertyIdNode = creatPropertyNode(oDoc,"id",arrIdList[i]);
var oPropertyValueNode = creatPropertyNode(oDoc,"value",arrValueList[i]);

oValueNode.appendChild(oPropertyIdNode);
oValueNode.appendChild(oPropertyValueNode);

oParaNode.appendChild(oValueNode);
}
return oParaNode;
}

/**
* 名称: createLogNode
* 功能: 创建日志节点
* 参数: oDom document对象
* userName 用户名
* operationName 操作名
* detail 详细信息, 如果没有的话,传入null
* 返回: 构造的日志节点
*/
function createLogNode(oDom ,userName, operationName, detail)
{
if (null != detail) //判断日志详情
{
detail = detail.replace(/^\s+/,'').replace(/\s+$/,''); //取出空格
}

var oLogNode = oDom.createElement("para"); //创建para节点
var oLogAttribute = oDom.createAttribute("name"); //创建name属性
oLogAttribute.value = "log"; //设置属性值
var oValue = oDom.createElement("value"); //创建value节点
oLogNode.setAttributeNode(oLogAttribute); //为para节点添加属性子节点
oLogNode.appendChild(oValue); //为para节点添加value子节点

//操作日志的用户
var oUserNode = creatPropertyNode(oDom, "user", userName); //创建用户节点
//日志的操作名称
var operationNode = creatPropertyNode(oDom, "action", operationName); //创建操作节点

//日志的详细信息
var oDetailNode = oDom.createElement("property");
var oDeatilAttribute = oDom.createAttribute("name");
oDeatilAttribute.value = "detail";
oDetailNode.setAttributeNode(oDeatilAttribute);

//如果详细信息为空的话,赋空格
if (null == detail || "" == detail)
{
detail = " ";
}

var cdataContent = oDom.createCDATASection(detail);
oDetailNode.appendChild(cdataContent);

oValue.appendChild(oUserNode);
oValue.appendChild(operationNode);
oValue.appendChild(oDetailNode);

return oLogNode;
}

//存放服务器时间的全局变量
var g_iServerTime = null;

//获取时间后,业务层的后继处理函数
var postDealFunction = null;

//标志是否成功获取服务器时间,是否能够获取memory时间标志位g_bHasMemoryTime定义在mainfram.js中
var g_bIsQueryServerTimeSucc = false;

//服务器时间记忆功能,保存获取到的时间到当前框架中
var g_iCurMemoryStartTime = null;
var g_iCurMemoryEndTime = null;
var g_bCurHasMemoryTime = false;

//产生记忆时间的按钮,-1表示“时间段”,1--9表示“最近查询”
var g_bCurCreateMemoryTimeRadio = "-1";

//页面时间控件类型
var g_oTimeCtrlEnum =
{
"range" : "1",
"rangeAndLatest" : "2" //具有"最近查询"和"时间段"类型
}

//记忆对比分析页面时间段A的时间
var g_iCurComparisonAStartTime = null;
var g_iCurComparisonAEndTime = null;
var g_bCurHasComparisonATime = false;
/**
* 名称: getServerTime
* 功能: 查询服务器时间
* 参数: serverTimePostDeal,获取服务器时间后,业务层的后继处理函数
* 返回: 无
*/
function getServerTime(serverTimePostDeal)
{
postDealFunction = serverTimePostDeal;

//创建dom对象和XML对象
var oDoc = new XmlDom();
var oXml= creatRequestNode(oDoc, g_cmdCode.CHR_GET_SERVER_SYSTIME);
toXMLPack(oXml, g_sendType.Asy, queryServerTimeCallBack, g_time.Normal);
}

/**
* 名称: queryServerTimeCallBack
* 功能: 查询服务器时间通信回调函数,保存服务器时间为全局变量g_iServerTime,并调用后继处理函数
* 参数: oResultXML,通信返回的xml
* 返回: 无
*/
function queryServerTimeCallBack(oResXML)
{
if (!oResXML || typeof(oResXML) == "number")
{
//如果查询Server时间失败的话,采用UI的系统时间
g_iServerTime = new Date().getTime();
}
else
{
if (checkConnect(oResXML, "../../")) //超时会话
{
return;
}

try
{
var iSuccess = oResXML.getAttribute("recode");
if (g_returncode.RSM_SUCCESS != iSuccess) //任务执行是否成功
{
g_iServerTime = new Date().getTime(); //取得系统毫秒时间
}
else
{
var nodeDict = XMLToDict(oResXML); //返回节点字典
if (null == nodeDict || null == nodeDict["TIME"])
{
g_iServerTime = new Date().getTime();
}
else
{
g_iServerTime = parseFloat(nodeDict["TIME"].childNodes[0].getAttribute("TIMESTR"));
g_bIsQueryServerTimeSucc = true;
}
}
}
catch(e)
{
g_iServerTime = new Date().getTime();
}
}

if ("function" == typeof(postDealFunction))
{
postDealFunction([g_iServerTime]);
}
}

/**
* 名称: getMemoryTime
* 功能: 获取UI记忆时间,获取不到,则查询server Time
* 弹出页面里使用该函数会出错
* 参数: postDeal,获取时间后的处理函数
* 返回: 无
*/
function getMemoryTime(postDeal)
{
try
{
if (true == parent.g_bHasMemoryTime)
{
g_bCurCreateMemoryTimeRadio = parent.g_bCreateMemoryTimeRadio;
g_bCurHasMemoryTime = true;

if (("-1" == parent.g_bCreateMemoryTimeRadio && g_sTimeCtrlType == g_oTimeCtrlEnum.rangeAndLatest)
|| (g_sTimeCtrlType == g_oTimeCtrlEnum.range) )
{
g_iCurMemoryStartTime = parent.g_iMemoryStartTime;
g_iCurMemoryEndTime = parent.g_iMemoryEndTime;

if ("function" == typeof(postDeal))
{
postDeal([g_iCurMemoryStartTime, g_iCurMemoryEndTime]);
}
}
else
{
getServerTime(postDeal);
}
}
else
{
getServerTime(postDeal);
}
}
catch (e)
{
getServerTime(postDeal);
}
}

/**
* 名称: setMemoryTime
* 功能: 设置UI记忆时间,UI记忆时间存放在主框架的head frame中,
* 所以弹出页面里使用该函数会出错
* 参数: 无
* 返回: 无
*/
function setMemoryTime(arrMemoryTime)
{
try
{
parent.g_iMemoryStartTime = arrMemoryTime[0];
parent.g_iMemoryEndTime = arrMemoryTime[1];
parent.g_bCreateMemoryTimeRadio = g_bCurCreateMemoryTimeRadio;
parent.g_bHasMemoryTime = true;
parent.g_bHasComparisonATime = false;
}
catch(e)
{

}
}

/**
* 名称: getStartEndTimeInOneDay
* 功能: 获取一天之内的开始时间和结束时间,因为记忆中的时间可能跨天,而有些页面操作时间不能跨天
* 参数: arrTiem
* 返回: arrTiemInOneDay
*/
function getStartEndTimeInOneDay(arrTime)
{
var arrTiemInOneDay = [];

//开始时间所处的日期对象
var oDate = new Date(arrTime[0]);
var iEndTimeOfStartTimeDay = new Date(oDate.getFullYear(), oDate.getMonth(), oDate.getDate()).getTime() + 86400000;

if (arrTime[1] >= iEndTimeOfStartTimeDay)
{
return [arrTime[0], iEndTimeOfStartTimeDay - 1];
}
else
{
return arrTime;
}
}

/**
* 名称: getLatestTimeId
* 功能: 在arrLatestTimeItemId中获取与sLatestTimeItemId相等或最相近的ID
* 参数: sLatestTimeItemId
* arrLatestTimeItemId
* 返回: ID
*/
function getLatestTimeId(sLatestTimeItemId,arrLatestTimeItemId)
{
var arrItemId = arrLatestTimeItemId.slice(0);

arrItemId.sort();

var sItemId = "," + arrItemId.join(",") + ",";

if ( -1 != sItemId.indexOf("," + sLatestTimeItemId + ","))
{
return sLatestTimeItemId;
}
else
{
return arrItemId[arrItemId.length - 1];
}
}

/**
* 名称: setComparisonAMemoryTime
* 功能: 设置UI记忆对比分析中的时间段A的时间,UI记忆时间存放在主框架的head frame中,
* 所以弹出页面里使用该函数会出错
* 参数: 无
* 返回: 无
*/
function setComparisonAMemoryTime(arrMemoryTime)
{
try
{
parent.g_bHasComparisonATime = true;
parent.g_iComparisonAStartTime = arrMemoryTime[0];
parent.g_iComparisonAEndTime = arrMemoryTime[1];
}
catch(e)
{

}
}

/**
* 名称: getComparisonAMemoryTime
* 功能: 获取UI记忆对比分析中的时间段A的时间,UI记忆时间存放在主框架的head frame中,
* 所以弹出页面里使用该函数会出错
* 参数: 无
* 返回: 无
*/
function getComparisonAMemoryTime()
{
try
{
if (true == parent.g_bHasComparisonATime)
{
g_iCurComparisonAStartTime = parent.g_iComparisonAStartTime;
g_iCurComparisonAEndTime = parent.g_iComparisonAEndTime;

if (null != g_iCurComparisonAStartTime && null != g_iCurComparisonAEndTime)
{
return [g_iCurComparisonAStartTime, g_iCurComparisonAEndTime];
}
else
{
return [];
}
}
else
{
return [];
}

}
catch(e)
{
return [];
}
}

/**
* 函 数 名:addMCC2NumberField
* 功能描述:号码字段添加国家码
* 参 数: oFieldInfo - 字段信息对象
* sOperType - 业务类型
* 返 回 值:处理后的字段值
*/
function addMCC2NumberField (oField, sOperType)
{
if (null == g_sMCCNO || null == g_arrNumberField[sOperType])//g_sMCCNO为查询知识库得来。
{
return oField;
}

var oFieldInfo = {};
oFieldInfo["FIELD_ID"] = oField.FIELD_ID;
oFieldInfo["FIELD_NAME"] = oField.FIELD_NAME;
oFieldInfo["FIELD_TYPE"] = oField.FIELD_TYPE;
oFieldInfo["OPERATOR_ID"] = oField.OPERATOR_ID;
oFieldInfo["OPERATOR_LABEL"] = oField.OPERATOR_LABEL;
oFieldInfo["FIELD_VALUE"] = oField.FIELD_VALUE;

var sNumbers = g_arrNumberField[sOperType].join("#") + "#";
if (sNumbers.indexOf(oFieldInfo["FIELD_ID"] + "#") > -1)//需要处理的号码字段
{
var arrTemp = oFieldInfo["FIELD_VALUE"].split(";");//多值用分号分隔
for (var i = 0; i < arrTemp.length; i++)
{
if (0 == arrTemp[i].indexOf("*"))//模糊匹配
{
continue;
}
// 没有区间范围range操作符"~"
if (arrTemp[i].indexOf("~") == -1)
{
if (0 == arrTemp[i].indexOf(g_sMCCNO))//用户输入了国家码
{
arrTemp[i] = arrTemp[i].slice(g_sMCCNO.length) + ";" + arrTemp[i] + ";" + g_sMCCNO + arrTemp[i];
}
else//没有输入国家码
{
arrTemp[i] = arrTemp[i] + ";" + g_sMCCNO + arrTemp[i];
}
}
else
{
var arrV = arrTemp[i].split("~");
// 两边儿都没有国家码,下发2个条件
if (0 != arrV[0].indexOf(g_sMCCNO) && 0 != arrV[1].indexOf(g_sMCCNO))
{
arrV[0] = g_sMCCNO + arrV[0];
arrV[1] = g_sMCCNO + arrV[1];
arrTemp[i] = arrTemp[i] + ";" + arrV.join("~");
}
else if (0 == arrV[0].indexOf(g_sMCCNO) && 0 == arrV[1].indexOf(g_sMCCNO))
{
// 两边儿都有国家码,下发3个条件
arrTemp[i] = arrV[0].slice(g_sMCCNO.length) + "~" + arrV[1].slice(g_sMCCNO.length) + ";"
+ arrTemp[i] + ";" + g_sMCCNO + arrV[0] + "~" + g_sMCCNO + arrV[1];
}
else
{
// 只有一个有国家码,下发4个条件
var c1, c2, c3;
// 左区间值输入国家码
if (0 == arrV[0].indexOf(g_sMCCNO))
{
c1 = arrV[0].slice(g_sMCCNO.length) + "~" + arrV[1];
c2 = arrV[0] + "~" + g_sMCCNO + arrV[1];
}
else
{
c1 = arrV[0] + "~" + arrV[1].slice(g_sMCCNO.length);
c2 = g_sMCCNO + arrV[0] + "~" + arrV[1];
}
c3 = g_sMCCNO + arrV[0] + "~" + g_sMCCNO + arrV[1];
arrTemp[i] = c1 + ";" + arrTemp[i] + ";" + c2 + ";" + c3;
}
}
}

//去重
var sTemp = arrTemp.join(";");
arrTemp = sTemp.split(";");
arrTemp.sort();//先排序,再一次遍历比较并去重
for (var i = 0; i < arrTemp.length - 1; i++)
{
if (arrTemp[i] == arrTemp[i + 1])//重复值一定相邻
{
arrTemp.splice(i + 1, 1);
i--;//计数回退
}
}

oFieldInfo["FIELD_VALUE"] = arrTemp.join(";");
}

return oFieldInfo;
}

//转换网元类型
function getNETypeForBarFied(arrAllFlowType, sAllFlowType)
{
var sSGSNFlag = false;
var sGGSNFlag = false;
var sOperType = sAllFlowType;
var sFlowType = "," + arrAllFlowType.toString() + ",";
for (var i = 0; i < g_sNEGroupEnum[g_sNETypeEnum.SGSN].length; i++)
{
if (sFlowType.indexOf("," + g_sNEGroupEnum[g_sNETypeEnum.SGSN][i] + ",") > -1)
{
sSGSNFlag = true;
break;
}
}
for (var i = 0; i < g_sNEGroupEnum[g_sNETypeEnum.GGSN].length; i++)
{
if (sFlowType.indexOf("," + g_sNEGroupEnum[g_sNETypeEnum.GGSN][i] + ",") > -1)
{
sGGSNFlag = true;
break;
}
}

if (sSGSNFlag && sGGSNFlag)
{
sOperType = g_sNETypeEnum.SGSNAndGGSN;
}
else if (sSGSNFlag)
{
sOperType = g_sNETypeEnum.SGSN;
}
else if (sGGSNFlag)
{
sOperType = g_sNETypeEnum.GGSN;
}

return sOperType;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值