📄 quarry.js
字号:
queryString = queryString.replace(/&/g,"|||");
Ajax.RequestUrl = UrlTransfer + quarryUrl + "&QueryString=" + queryString + "&date=" + (new Date()).getTime() + "&Method=" + quarryMethod ;
}
else
{
Ajax.RequestUrl = UrlTransfer + quarryUrl + queryString + "?date=" + (new Date()).getTime() + "&Method=" + quarryMethod ;
}
// Ajax.RequestUrl = QuarryUrl + "?" + queryString;
Ajax.Method = "get";
Ajax.IsAsyn = true;
Ajax.StateChangeEvent = XmlHttpQuarryStateChange;
// AddLog("--发送采集请求,等待服务器返回");
Ajax.SendRequest();
}
function XmlHttpQuarryStateChange()
{
if (QuarryState == 0)
{
return;
}
// AddLog("--服务器回应代码:[" + Ajax.XmlHttp.readyState + "]");
if (Ajax.XmlHttp.readyState == 4)
{
if (Ajax.XmlHttp.status == 200)
{
// AddLog("--分析返回数据,获取数据字段");
var htmlText = Ajax.XmlHttp.responseText;
QuarrySummary(htmlText);
Ajax = null;
CurrentPercent += (PagePercent / DataList.rows.length);
SetProcessBar();
}
else
{
var row = DataList.rows[rowIndex];
row.style.backgroundColor = "#FF2200";
AddLog("--操作失败。错误代码为:[" + Ajax.XmlHttp.status + "]," + Ajax.XmlHttp.statusText);
}
CurrentRowIndex++;
if (CurrentRowIndex < DataList.rows.length)
{
// AddLog("--------------进行下一条记录采集---------------");
window.setTimeout("Quarry(" + CurrentRowIndex + ")",10);
}
else
{
AddLog("保存第" + PageIndex + "页采集数据");
SendQuarryResult();
}
}
}
function QuarrySummary(htmlText)
{
var dataRow = new DataRow();
for (var i = 0; i < quarryColumnList.length; i++)
{
var quarryColumn = new QuarryColumn();
quarryColumn.Id = quarryColumnList[i].Id;
quarryColumn.Value = GetColumnValue(quarryColumnList[i],htmlText);
dataRow.Values[i] = quarryColumn;
}
DataRowList.push(dataRow);
}
function GetColumnValue(quarryColumn,htmlText)
{
// if (htmlText.length > 11000)
// {
// var test = htmlText.substr(11079);
// for (var i = 0; i < quarryColumn.LeftChars.length; i++)
// {
// if (test.charAt(i) != quarryColumn.LeftChars.charAt(i))
// {
// alert(i);
// }
// }
// }
var result = " ";
var indexBegin = htmlText.indexOf(quarryColumn.LeftChars);
if (indexBegin != - 1)
{
indexBegin += quarryColumn.LeftChars.length;
var indexEnd = htmlText.indexOf(quarryColumn.RightChars, indexBegin);
if (indexEnd != -1)
{
result = htmlText.substr(indexBegin,indexEnd - indexBegin);
if (result.trim() == "")
{
result = " ";
}
}
}
return result;
}
function GetQuarryResult()
{
var result = new Array();
result[result.length] = "<data>";
if (DataRowList != null)
{
var lastRowIndex = DataRowList.length - 1;
var lastColumnIndex = quarryColumnList.length - 1;
var rowCount = DataRowList.length;
BatchSaving = (rowCount > BatchCount)
if (BatchSaving)
{
rowCount = BatchCount;
}
for (var i = 0; i < rowCount; i++)
{
result[result.length] = "<row>";
for (var j = 0; j < quarryColumnList.length; j++)
{
result[result.length] = "<col>";
result[result.length] = "<id>";
result[result.length] = DataRowList[i].Values[j].Id;
result[result.length] = "</id>";
result[result.length] = "<value><![CDATA[";
result[result.length] = DataRowList[i].Values[j].Value;
result[result.length] = "]]></value>"
result[result.length] = "</col>";
}
result[result.length] = "</row>";
}
if (BatchSaving)
{
BatchIndex++;
DataRowList.splice(0,BatchCount);
}
if (BatchIndex > 0)
{
if (!BatchSaving)
{
BatchIndex++;
}
AddLog("数据量大,正进行分批保存。每批" + BatchCount + "条记录,当前第" + BatchIndex + "批");
}
}
result[result.length] = "</data>";
if (!BatchSaving)
{
DataRowList.Clear();
}
return result.join("");
}
//function GetQuarryResult()
//{
// var result = "<data>";
// if (DataRowList != null)
// {
// var lastRowIndex = DataRowList.length - 1;
// var lastColumnIndex = quarryColumnList.length - 1;
// for (var i = 0; i < DataRowList.length; i++)
// {
// result += "<row>";
// for (var j = 0; j < quarryColumnList.length; j++)
// {
// result += "<col>";
// result += "<id>";
// result += DataRowList[i].Values[j].Id;
// result += "</id>";
// result += "<value><![CDATA[";
// result += DataRowList[i].Values[j].Value;
// result += "]]></value>"
// result += "</col>";
//
// }
// result += "</row>";
// }
// }
// result += "</data>";
// DataRowList.Clear();
// return result;
//}
function SendQuarryResult()
{
if (QuarryState == 0)
{
return;
}
var data = GetQuarryResult();
Ajax = new AjaxClass();
Ajax.RequestUrl = "SaveData.aspx?date=" + new Date().getTime();
Ajax.Content = "QuarryItemId=" + document.getElementById("QuarryItemId").value + "&data=" + escape(data);
Ajax.Method = "post";
Ajax.IsAsyn = true;
Ajax.ContentType = "application/x-www-form-urlencoded";
Ajax.StateChangeEvent = XmlHttpSaveDataStateChange;
AddLog("发送保存请求,等待服务器回应");
Ajax.SendRequest();
CurrentPercent += PerPercent * 0.125;
SetProcessBar();
}
function XmlHttpSaveDataStateChange()
{
if (QuarryState == 0)
{
return;
}
// AddLog("服务器回应代码:[" + Ajax.XmlHttp.readyState + "]");
if (Ajax.XmlHttp.readyState == 4)
{
if (Ajax.XmlHttp.status == 200)
{
var message = Ajax.XmlHttp.responseText;
if (message.indexOf("操作失败") < 0)
{
AddLog("操作完成。" + message);
Ajax = null;
CurrentPercent += PerPercent * 0.125;
SetProcessBar();
}
else
{
ErrorProcess();
}
}
else
{
ErrorProcess();
}
if (!ErrorPass)
{
return;
}
if (BatchSaving)
{
AddLog("成功保存第" + BatchIndex + "批数据");
window.setTimeout("SendQuarryResult()",10);
}
else
{
BatchIndex = 0;
if (AllowPaging)
{
CurrentRowIndex = 0;
PageIndex++;
if (PageIndex <= PageCount)
{
AddLog("进行第" + PageIndex + "页采集准备");
window.setTimeout("QuarryDataList()",10);
}
else
{
AddLog("完成采集");
alert("完成采集");
}
}
else
{
AddLog("完成采集");
alert("完成采集");
}
}
}
}
function ErrorProcess()
{
AddLog("操作失败。错误代码为:[" + Ajax.XmlHttp.status + "]," + Ajax.XmlHttp.responseText);
if (!ErrorPass)
{
StopQuarry();
alert("发生意外,请查看日志");
}
}
function QuarryInnerPageStart()
{
if (InnerPageParameterList != null)
{
if (InnerPageParameterList.length > 0)
{
AddLog("开始获取第[ " + RowIndex + " ]条记录职位列表");
var queryString = InnerPageParameterList.shift();
QuarryInnerPageDataList(queryString);
}
else
{
var t = 1;
}
}
}
function QuarryInnerPageDataList(queryString)
{
if (QuarryState == 0)
{
return;
}
AddLog("初始化采集内页[" + queryString + "]信息");
//ClearQuarryDataList();
Ajax = new AjaxClass();
// var queryString = PageParameterName + "=" + PageIndex; //+ "&date=" + new Date().getTime();
// if (PageParameterOther != "")
// {
// quarryString += "&" + PageParameterOther;
// }
// if (TargetParameters != null)
// {
// queryString += "&" + TargetParameters;
// }
// queryString = queryString.replace(/&/g,"|||");
if (QuarryUrlMode == "0")
{
Ajax.RequestUrl = UrlTransfer + QuarryUrl + "&QueryString=" + queryString + "&date=" + (new Date()).getTime() + "&Method=" + QuarryMethod;
}
else
{
Ajax.RequestUrl = UrlTransfer + QuarryUrl + queryString + "&date=" + (new Date()).getTime() + "&Method=" + QuarryMethod;
}
Ajax.Method = "get";
Ajax.IsAsyn = true;
Ajax.ContentType = "application/x-www-form-urlencoded";
Ajax.StateChangeEvent = XmlHttpQuarryInnerPageDataListStateChange;
AddLog("发送采集内页请求,等待服务器回应");
Ajax.SendRequest();
// CurrentPercent += PerPercent * 0.25;
// SetProcessBar();
}
function XmlHttpQuarryInnerPageDataListStateChange()
{
if (QuarryState == 0)
{
return;
}
AddLog("服务器回应代码:[" + Ajax.XmlHttp.readyState + "]");
if (Ajax.XmlHttp.readyState == 4)
{
// CurrentPercent += PerPercent * 0.25;
// SetProcessBar();
if (Ajax.XmlHttp.status == 200)
{
AddLog("分析服务器返回数据");
var dataBlock = Ajax.XmlHttp.responseText;
//var dataBeginIndex = dataBlock.indexOf(DataBlockBegin) + DataBlockBegin.length + 1;
//var dataEndIndex = DataPanelTemp.indexOf(DataBlockEnd, dataBeginIndex);
// var dataBeginIndex = 0;
// var dataEndIndex = dataBlock.length;
// if ((dataBeginIndex == -1) || (dataEndIndex == -1))
// {
// alert("未能获取到数据块");
// return;
// }
// DataPanelTemp = DataPanelTemp.substring(dataBeginIndex, dataEndIndex);
// CurrentPercent += PerPercent * 0.125;
// SetProcessBar();
Ajax = null;
AddLog("创建采集列表");
var datalist = GetParameters(dataBlock,InnerPageParameterBegin,InnerPageParameterEnd);
if (datalist.length > 0)
{
AddQuarryRows(datalist);
}
CurrentPercent += PerPercent * 0.125;
SetProcessBar();
AddLog("完成第[ " + RowIndex + " ]条记录职位列表获取[" + datalist.length + "]");
RowIndex++;
if (RowIndex == 78)
{
var t = 0;
}
}
if (InnerPageParameterList.length > 0)
{
window.setTimeout("QuarryInnerPageStart()", 10);
}
else
{
CurrentPercent += PerPercent * 0.125;
SetProcessBar();
window.setTimeout("QuarryStart()", 10);
}
}
}
function GetParameters(dataBlock,parameterBegin,parameterEnd)
{
var datalist = new Array();
var indexBegin = 0;
var indexEnd = 0;
var count = 0;
var flg = true;
while (indexBegin < dataBlock.length)
{
indexBegin = dataBlock.indexOf(parameterBegin, indexBegin);
indexEnd = indexBegin + parameterBegin.length;
indexEnd = dataBlock.indexOf(parameterEnd,indexEnd);
if ((indexBegin != -1) && (indexEnd != -1))
{
datalist[count] = dataBlock.substring(indexBegin + parameterBegin.length,indexEnd);
indexBegin = indexEnd + parameterEnd.length;
count++;
}
else
{
break;
}
}
return datalist;
}
function AddQuarryRows(datalist)
{
var tdTagName = "td";
var trTagName = "tr";
var inputTagName = "input";
var rowId = "row";
var chkId = "chk";
var index = DataList.rows.length;
for (var i = 0; i < datalist.length; i++)
{
var row = CreateElement(trTagName,rowId + index,null,null,null,null);
var td0 = CreateElement(tdTagName,null,null,null,null,null);
td0.innerText = index;
row.appendChild(td0);
var td1 = CreateElement(tdTagName,null,null,null,null,null);
td1.innerText = datalist[i];
row.appendChild(td1);
var td2 = CreateElement(tdTagName,null,null,null,null,null);
var chkbox = CreateElement(inputTagName,chkId + i,i,null,null,"checkbox");
td2.appendChild(chkbox);
row.appendChild(td2);
DataList.appendChild(row);
index++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -