📄 whfhost.js
字号:
break;
}
else{
aFtsContentsCon[s++]=oCF;
}
}
}
if(!bNeedLoad)
{
var aTI=gaTopicCheckInfo;
for(var m=gnTopicCheck;m<aFtsContentsCon.length;m++)
{
var aTIPart=getTopics(aFtsContentsCon[m],sKey);
if(aTIPart==null)
{
gnCheck=gaaFCD.length;
gnTopicCheck=m;
gaTopicCheckInfo=aTI;
gaFtsContentsCon=aFtsContentsCon;
return;
}
if(m==0)
aTI=aTIPart;
else
aTI=mergeTopics(aTI,aTIPart);
}
if(mergewithPreviousResult(aTI))
{
gbFirst=false;
findOneKey();
}
else
checkAgain();
}
}
function mergewithPreviousResult(aTI)
{
if(aTI!=null&&aTI.length!=0)
{
var nNumTopics=aTI.length;
if(gnCurrentOp==0||gbFirst){
if(gbNot){
displayMsg(gsHelpCannotSearch);
return false;
}else{
var aLS,aSS;
if(gaTI.length>=aTI.length)
{
aLS=gaTI;
aSS=aTI;
}
else
{
aLS=aTI;
aSS=gaTI;
}
var s=0;
for(var i=0;i<aSS.length;i++)
{
var bAlreadyThere=false;
for(var j=s;j<aLS.length;j++)
{
if(aSS[i].equalTo(aLS[j]))
{
bAlreadyThere=true;
s=j;
break;
}
}
if(!bAlreadyThere)
{
insertTopic(aLS,aSS[i]);
}
}
gaTI=aLS;
}
}else if(gnCurrentOp==1){
if(gbNot){
var s=0;
for(var i=0;i<aTI.length;i++)
{
for(var j=s;j<gaTI.length;j++)
{
if(aTI[i].equalTo(gaTI[j]))
{
removeItemFromArray(gaTI,j);
s=j;
break;
}
}
}
}else{
var s=0;
for(var i=0;i<gaTI.length;i++)
{
var bFound=false;
for(var j=s;j<aTI.length;j++)
{
if(gaTI[i].equalTo(aTI[j]))
{
bFound=true;
s=j;
}
}
if(!bFound)
{
removeItemFromArray(gaTI,i);
i--;
}
}
}
}
}else{
if((gnCurrentOp==1)&&(!gbNot)){
gaTI.length=0;
}else if((gnCurrentOp==0)&&(gbNot)){
displayMsg(gsHelpCannotSearch);
return false;
}
}
return true;
}
function insertTopic(aTI,oTI)
{
var nB=0;
var nE=aTI.length-1;
if(nE>=0)
{
var nM;
var bFound=false;
do{
nM=(nB+nE)>>1;
if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)>0)
nE=nM-1;
else if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)<0)
nB=nM+1;
else
{
bFound=true;
break;
}
}while(nB<=nE);
if(bFound)
insertItemIntoArray(aTI,nM,oTI);
else
{
if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)<0)
insertItemIntoArray(aTI,nM+1,oTI);
else
insertItemIntoArray(aTI,nM,oTI);
}
}
else
aTI[0]=oTI;
}
function mergeTopics(aTI1,aTI2)
{
var i1=0;
var i2=0;
var len1=aTI1.length;
var len2=aTI2.length;
var aTopicNew=new Array();
var i=0;
while(i1<len1||i2<len2)
{
if(i1<len1&&i2<len2)
{
if(compare(aTI1[i1].sTopicTitle,aTI2[i2].sTopicTitle)<0)
aTopicNew[i++]=aTI1[i1++];
else
aTopicNew[i++]=aTI2[i2++];
}
else if(i1<len1)
aTopicNew[i++]=aTI1[i1++];
else if(i2<len2)
aTopicNew[i++]=aTI2[i2++];
}
return aTopicNew;
}
function getTopics(oCF,sKey)
{
var aTIPart=new Array();
if(oCF&&oCF.aFtsKeys)
{
var keys=oCF.aFtsKeys;
var nB=0;
var nE=keys.length-1;
var nM=-1;
var bFound=false;
do{
nM=(nB+nE)>>1;
if(compare(keys[nM].sItemName,sKey)>0)
nE=nM-1;
else if(compare(keys[nM].sItemName,sKey)<0)
nB=nM+1;
else{
bFound=true;
break;
}
}while(nB<=nE);
if(bFound)
{
if(keys[nM].aTopics)
{
for(var i=0;i<keys[nM].aTopics.length;i++)
{
var oTC=getTopicChunk(gaaFTCD[oCF.nProjId],keys[nM].aTopics[i]);
if(oTC.aTopics)
{
aTIPart[aTIPart.length]=
new topicInfo(oTC.aTopics[keys[nM].aTopics[i]-oTC.nBegin].sTopicTitle,
gaData[oCF.nProjId].sPPath+oTC.aTopics[keys[nM].aTopics[i]-oTC.nBegin].sTopicURL);
}
else{
goCTF=oTC;
gnLoadFts=3;
beginLoading();
loadData2(gaData[oCF.nProjId].sPPath+gaData[oCF.nProjId].sDPath+oTC.sFileName);
return null;
}
}
}
}
}
return aTIPart;
}
function getTopicChunk(aFTCD,nTopicId)
{
if(aFTCD&&aFTCD.length)
{
var nB=0;
var nE=aFTCD.length-1;
var nM=-1;
var bFound=false;
do{
nM=(nB+nE)>>1;
if(aFTCD[nM].nBegin>nTopicId)
nE=nM-1;
else if(aFTCD[nM].nEnd<nTopicId)
nB=nM+1;
else{
bFound=true;
break;
}
}while(nB<=nE);
if(bFound)
return aFTCD[nM];
}
return null;
}
function endLoading()
{
var oDiv=getElement(gsLoadingDivID);
if(oDiv)
oDiv.style.visibility="hidden";
}
function beginLoading()
{
var oDiv=getElement(gsLoadingDivID);
if(!oDiv)
{
document.body.insertAdjacentHTML("afterBegin",writeLoadingDiv());
oDiv=getElement(gsLoadingDivID);
}
if(oDiv)
{
oDiv.style.top=document.body.scrollTop;
oDiv.style.visibility="visible";
}
}
function writeLoadingDiv(nIIdx)
{
return "<div id=\""+gsLoadingDivID+"\" style=\"position:absolute;top:0;left:0;z-index:600;visibility:hidden;padding-left:4px;background-color:ivory;border-width:1;border-style:solid;border-color:black;width:150px;\">"+gsLoadingMsg+"</div>";
}
function topicInfo(sTopicTitle,sTopicURL)
{
this.sTopicTitle=sTopicTitle;
this.sTopicURL=sTopicURL;
this.equalTo=function(oTI)
{
return ((this.sTopicTitle==oTI.sTopicTitle)&&
(this.sTopicURL==oTI.sTopicURL));
}
}
function getChunkedFts(nIndex,sKey)
{
var oCF=null;
if(nIndex<gaaFCD.length)
{
var len=gaaFCD[nIndex].length;
if(len>0)
{
var nB=0;
var nE=len-1;
var bFound=false;
do{
var nM=(nB+nE)>>1;
if(compare(sKey,gaaFCD[nIndex][nM].sEndKey)>0)
{
nB=nM+1;
}
else if(compare(sKey,gaaFCD[nIndex][nM].sStartKey)<0)
{
nE=nM-1;
}
else{
bFound=true;
break;
}
}while(nE>=nB);
if(bFound)
oCF=gaaFCD[nIndex][nM];
}
}
return oCF;
}
function ftsReady(aFCD,aFTCD)
{
endLoading();
gaaFTCD[gnCLF]=aFTCD;
gaaFCD[gnCLF++]=aFCD;
setTimeout("loadFD();",1);
}
function putFtsTData(aTopics)
{
endLoading();
var oCTF=goCTF;
if(oCTF)
{
oCTF.aTopics=aTopics;
setTimeout("ftsFindKeyword();",1);
}
}
function putFtsWData(aFtsContents)
{
endLoading();
var oCF=goCF;
if(oCF)
{
updateCache(oCF);
oCF.aFtsKeys=aFtsContents;
setTimeout("ftsFindKeyword();",1);
}
}
function IsStopWord(sCW,aFtsStopArray)
{
var nStopArrayLen=aFtsStopArray.length;
var nB=0;
var nE=nStopArrayLen-1;
var nM=0;
var bFound=false;
var sStopWord="";
while(nB<=nE){
nM=(nB+nE);
nM>>=1;
sStopWord=aFtsStopArray[nM];
if(compare(sCW,sStopWord)>0){
nB=(nB==nM)?nM+1:nM;
}else{
if(compare(sCW,sStopWord)<0){
nE=(nE==nM)?nM-1:nM;
}else{
bFound=true;
break;
}
}
}
return bFound;
}
function GetStem(szWord)
{
if(gaFtsStem==null||gaFtsStem.length==0)return szWord;
var aStems=gaFtsStem;
var nStemPos=0;
var csStem="";
for(var iStem=0;iStem<aStems.length;iStem++){
if(aStems[iStem].length>=szWord.length-1) continue;
nStemPos=szWord.lastIndexOf(aStems[iStem]);
if(nStemPos>0){
var cssub=szWord.substring(nStemPos);
if(cssub==aStems[iStem]){
csStem=szWord;
if(szWord.charAt(nStemPos-2)==szWord.charAt(nStemPos-1)){
csStem=csStem.substring(0,nStemPos-1);
}else{
csStem=csStem.substring(0,nStemPos);
}
return csStem;
}
}
}
return szWord;
}
function FtsWriteClassStyle()
{
var sStyle="<STYLE TYPE='text/css'>\n";
if (gsBgImage)
sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";
else
sStyle+="body {border-top:black 1px solid;}\n";
sStyle+="P {"+getFontStyle(goErrFont)+"margin-left:"+gsIndent+";margin-top:"+gsMargin+";}\n";
sStyle+="dl {"+getFontStyle(goFont)+"margin-left:"+gsIndent+";margin-top:"+gsMargin+";}\n";
sStyle+="A:link {"+getFontStyle(goFont)+"}\n";
sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";
sStyle+="A:active {background-color:"+gsABgColor+";}\n";
sStyle+="A:hover {"+getFontStyle(goHoverFont)+"}\n";
sStyle+="</STYLE>";
document.write(sStyle);
}
function window_Unload()
{
UnRegisterListener2(this,WH_MSG_PROJECTREADY);
UnRegisterListener2(this, WH_MSG_SEARCHFTSKEY);
}
function onSendMessage(oMsg)
{
var nMsgId=oMsg.nMessageId;
if(nMsgId==WH_MSG_SEARCHFTSKEY)
{
if(oMsg.oParam)
{
if(gsSK==null||gsSK=="")
{
gsSK=oMsg.oParam.toLowerCase();
findFTSKey();
}
else
gsSK2=oMsg.oParam.toLowerCase();
}
}
else if(nMsgId==WH_MSG_PROJECTREADY)
{
loadFts();
}
return true;
}
if (window.gbWhUtil&&window.gbWhLang&&window.gbWhProxy&&window.gbWhVer&&window.gbWhMsg)
{
goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");
goErrFont=new whFont("Verdana","8pt","#000000","normal","bold","none");
goHoverFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");
window.onload=window_OnLoad;
window.onbeforeunload=window_BUnload;
window.onunload=window_Unload;
RegisterListener2(this,WH_MSG_PROJECTREADY);
gbWhFHost=true;
}
else
document.location.reload();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -