//注册jqplot的鼠标移动到数据节点的事件 $.jqplot.config.enablePlugins = true; $.jqplot.eventListenerHooks.push(['jqplotMouseMove', myMove]); var hasData = false; var lAry = new Array(); var sAry = new Array();
var dLength = 0; for (var i = 0; i < pbdata.length; i++) { if (pbdata[i] != null) { dLength++; } }
var tInx = 0; if (chartId == "chart_cpu") { //CPU占用率视图 var realAry = new Array(); var smoothAry = new Array(); for (var i = 0; i < pbdata.length; i++) { if (pbdata[i] != null) { vst_cmf.ymax=100; //占用率最高为100
//从数据源(DataTable)中获取值 var smooth = pbdata[i].Rows[0]["SmoothUsage"]; //平均值 var real = pbdata[i].Rows[0]["RealUsage"]; //实时值 //记录在tipMap,这个很重要,用来实现数据动态提示 vst_cmf.tipmap.val[i] = real; vst_cmf.tipmap.hint[tInx] = "<ul><li>Real: " + real + "%</li></ul>"; vst_cmf.tipmap.xindex[tInx] = i+1; vst_cmf.tipmap.sindex[tInx] = 0;
var sysAry = new Array(); var extAry = new Array(); var usrAry = new Array(); var staAry = new Array(); var sumAry = new Array(); for (var i = 0; i < pbdata.length; i++) { if (pbdata[i] != null) { var sysTotal = pbdata[i].Rows[0]["SysTotal"]; //系统总大小 var sysFree = pbdata[i].Rows[0]["SysFree"]; //系统空闲 var sysMaxUseable = pbdata[i].Rows[0]["SysMaxUseable"]; //系统最大可用 var extTotal = pbdata[i].Rows[0]["ExtTotal"]; //扩展总大小 var extFree = pbdata[i].Rows[0]["ExtFree"]; //扩展空闲 var extMaxUseable = pbdata[i].Rows[0]["ExtMaxUseable"]; //扩展最大可用 var usrTotal = pbdata[i].Rows[0]["UsrTotal"]; //用户区总大小 var usrFree = pbdata[i].Rows[0]["UsrFree"]; //用户区空闲 var usrMaxUseable = pbdata[i].Rows[0]["UsrMaxUseable"]; //用户区最大可用 var staptTotal = pbdata[i].Rows[0]["StaptTotal"]; //Stap区总大小 var staptFree = pbdata[i].Rows[0]["StaptFree"]; //Stap区空闲 var staptMaxUseable = pbdata[i].Rows[0]["StaptMaxUseable"]; //系统最大可用 var sumTotal = pbdata[i].Rows[0]["SumTotal"]; //系统总大小 var sumFree = pbdata[i].Rows[0]["SumFree"]; //系统空闲 var sumMaxUseable = pbdata[i].Rows[0]["SumMaxUseable"]; //系统最大可用
} else if (chartId == "chart_flash") { //Flash使用情况视图 var tffsAry = new Array(); var tffs1Ary = new Array(); var tffs2Ary = new Array(); var htffsAry = new Array(); for (var i = 0; i < pbdata.length; i++) { if (pbdata[i] != null) { var tffsTotal = pbdata[i].Rows[0]["TffsTotal"]; var tffsFree = pbdata[i].Rows[0]["TffsFree"]; var tffs1Total = pbdata[i].Rows[0]["Tffs1Total"]; var tffs1Free = pbdata[i].Rows[0]["Tffs1Free"]; var tffs2Total = pbdata[i].Rows[0]["Tffs2Total"]; var tffs2Free = pbdata[i].Rows[0]["Tffs2Free"]; var hTffsTotal = pbdata[i].Rows[0]["HTffsTotal"]; var hTffsFree = pbdata[i].Rows[0]["HTffsFree"];
//曲线颜色,指定范围的最后一天数据比第一天大,为红,否则为绿 var cAry = new Array(); var ci=0; if(lAry.length>0){ for(var i=0;i<lAry.length;i++){ var le=lAry[i] if(le!=null){ var first = 0; var last = 0; for(var j=0;j<le.length;j++){ if(le[j]!=null){ first = le[j]; break; } } for(var j=le.length-1;j>=0;j--){ if(le[j]!=null){ last = le[j]; break; } } var color = ""; if(last > first){ color="#ff0000" }else{ color="#66cc66"; }
HttpWebRequest httpreg = (HttpWebRequest)req;
httpreg.Method = "GET";
httpreg.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; CIBA)";
WebResponse resp = httpreg.GetResponse();
StreamReader reader = new StreamReader(resp.GetResponseStream(), encoding);
string result = reader.ReadToEnd();
....
为什么直接用WebRequest不行呢?
还有我刚测试了一下把 httpreg.UserAgent = "Mozilla/4.0 ..."; 这一行去掉他就读不到数据了,为什么?
为什么直接用WebRequest不行呢?解释一下咯
分全给你了,谢谢
* 生成 [项目组交付件大小曲线] 之直方图
* @param
* flag 标识获取数据的方式 1为文件夹,2为文件
* @param
* isrb 标识项目组,1为开发组,2为RB组
* @author:remember.deng
* @create date:2011-05-07
*///全局变量集
var vst_zhg={
fdlen:0,
fIdAry:new Array(),
sType:"vi",
blDate:"",
flag:2
};function toZFImg(flag,isrb){
vst_zhg.flag=flag;
var ds = AjaxHandler.GetFolderFileSpanByDate(vst_zhg.flag).value;
if(vst_zhg.flag==0||ds==null||ds.length==0){
$("#no_data").show();
$("#chart").hide();
return;
}
$("#no_data").hide();
$("#chart").show();
$("#chart").text(""); var mainStr = "<div class='flzhg' id='my_fl_fm'>";
$("#showFilter").show();
if(isrb==0){
ele("selCompType").options.add(new Option("基线","bl"));
}
vst_zhg.fdlen = ds.length;
var spLen;
//每个文件构建一个大矩形
for(var i=0;i<ds.length;i++){
var item=ds[i]; var fStr = "<div class='fDataView'><div class='fname'>" + item["FName"] + "</div><ul>";
vst_zhg.fIdAry[i]=item["FId"];
var curSpan = item["FSpan"];
spLen = curSpan.length;
var tval=0;
//每个数据项构建一个小矩形
for(var j=0;j<curSpan.length;j++){
var dataStr = curSpan[j] == null ? "" : curSpan[j];
fStr += "<li id='span_item_" + i + "_" + j + "' app='ti_"+j+"'>" + dataStr + "</li>";
}
fStr += "<li style='float:none; height:24px; width:1px;'></li>"
fStr += "</ul></div>";
mainStr += fStr;
} mainStr += "</div>";
$("#chart").html(mainStr); //将组装好的图形植入页面 //合计
var ttStr = "<div class='fDataView'><div class='fname'>合计</div><ul>";
for(var i=0;i<spLen;i++){
var dsi = $("li[app*=ti_"+i+"]");
var tval=0;
for(var j=0;j<dsi.length;j++){
if(!isNull(dsi[j].innerText)){
tval += parseInt(dsi[j].innerText);
}
}
ttStr += "<li id='span_total_" + i + "' class='"+(tval==0?"no":"tt")+"'>" + (tval==0?"":tval+"") + "</li>"
}
ttStr += "<li style='float:none; height:24px; width:1px;'></li>"
ttStr += "</ul></div>"
$("#my_fl_fm").append(ttStr);
//横坐标之日期范围
var myTicks = AjaxHandler.GetCurDateSpanStr().value;
var myWidth = myTicks.length*60+20; tickStr = "<div class='fltick'><ul>";
for(var i=0;i<myTicks.length;i++){
tickStr += "<li>" + myTicks[i] + "</li>"
}
tickStr += "</ul></div>";
$("#my_fl_fm").append(tickStr).css("width",myWidth);
sortByType("sp"); //默认对比方式为首尾
}
* 根据对比方式排列数据样式
* @param
* type 对比方式
*/
function sortByType(type){
//遍历比对的文件
for(var i=0;i<vst_zhg.fdlen;i++){
var spanItems = $("li[id*=span_item_"+i+"_]");
var first=0,last=0,fIndex=0,lIndex=0;
//遍历对比的周期
if(type == "sp"){ //首尾方式
for(var j=0;j<spanItems.length;j++){
if($.trim(spanItems[j].innerText)==""){
spanItems[j].className = "no";
}else{ //找到第一个不为空的数据
first = parseInt(spanItems[j].innerText);
spanItems[j].className = "eq"; //第一个样式无条件为 eq
fIndex = j;
for(var k=spanItems.length-1;k>=0;k--){
if($.trim(spanItems[k].innerText)==""){
spanItems[k].className = "no";
}else{ //找到最后一个不为空的数据
last = parseInt(spanItems[k].innerText);
lIndex=k;
break;
}
}
break; //不管找没找到最后一个,上面的代码已尝试了可能的寻找,在这里中止循环
}
}
//找到了最后一个,而且保证和第一个不是同一个
if(last != 0 && fIndex != lIndex){
var lastitem = spanItems[lIndex];
var clsName,tip;
if(last > first){
clsName = "gq";
tip = "文件变大:" + (last-first) + "B ("+ setNumDouble((last-first)/1024) +"K)";
}else if(last == first){
clsName = "eq";
tip = "时间更新,大小不变";
}else if(last < first){
clsName = "lq";
tip = "文件变小:" + (first-last) + "B ("+setNumDouble((first-last)/1024) +"K)";
}
lastitem.className = clsName;
lastitem.title = tip;
var clsName2,tip2;
//设置first 和 last 中间的数据样式
for(var x=fIndex+1;x<lIndex;x++){
var mditem = spanItems[x];
if($.trim(mditem.innerText)==""){
clsName2="no";
tip2 = "记录缺失";
}else{
clsName2="tt";
tip2 = "中间数据不参与比较";
}
mditem.className = clsName2;
mditem.title = tip2;
}
}
}else if(type == "vi"){ //相邻方式
var tip = "时间更新,大小不变"; //提示
var clsName = "eq"; //样式
var itemData = spanItems[j].innerText;
if(isNull(itemData)){ //空数据忽略
clsName = "no";
tip = "记录缺失";
}else{
if(j==0){
clsName = "eq"; //第一条数据,没有比对的对象,所以默认为等值样式
}else{
//对比新数据与旧数据的关系
for(var k=j-1;k>0;k--){
var compData = spanItems[k].innerText;
if(!isNull(compData)){
itemData = parseInt(itemData);
compData = parseInt(compData);
if(compData > itemData){ //减少
clsName = 'lq';
var sdnum = (compData -itemData);
tip = "文件变小:" + sdnum + "B (" + setNumDouble(sdnum/1024) + "K)";
}else if(compData < itemData){ //增加
clsName = 'gq';
var sdnum = (itemData -compData);
tip = "文件变大:" + sdnum + "B (" + setNumDouble(sdnum/1024) + "K)";
}else if(compData == itemData){ //相等
clsName = 'eq';
tip = "时间更新,大小不变"
}
break;
}
}
}
}
spanItems[j].className = clsName;
spanItems[j].title = tip;
}
}else if(type == "bl"){ //基线方式
var blValue = AjaxHandler.GetFolderFileSizeByDate(vst_zhg.blDate,vst_zhg.fIdAry[i],vst_zhg.flag==2).value;
for(var j=0;j<spanItems.length;j++){
if($.trim(spanItems[j].innerText)==""){
spanItems[j].className = "no";
}else{
var curritem = spanItems[j];
var currData = curritem.innerText;
var clsName,tip;
if(blValue==0){
clsName = "gq";
tip = "此文件没有基线,属于新增文件"
}else if(currData > blValue){
clsName = "gq";
tip = "基线:" + blValue + "B (" + setNumDouble(blValue/1024) + "K)\n当前已超出:" + (currData-blValue) + "B ("+ setNumDouble((currData-blValue)/1024) +"K)";
}else if(currData == blValue){
clsName = "eq";
tip = "与基线:" + blValue + "B (" + setNumDouble(blValue/1024) + "K) 相等";
}else if(currData < blValue){
clsName = "lq";
tip = "基线:" + blValue + "B (" + setNumDouble(blValue/1024) + "K)\n当前还差:" + (blValue-currData) + "B ("+setNumDouble((blValue-currData)/1024) +"K)";
}
curritem.className = clsName;
curritem.title = tip;
}
}
}
}
var totals = $("li[id*=span_total_]");
var fst=0,lst=0;
for(var i=0;i<totals.length;i++){
var titem = totals[i];
var tval = totals[i].innerText;
var tip = "";
var clsName = "eq";
if(isNull(tval)){
clsName = "no";
tip = "记录缺失";
}else{
if(type == "sp"){
fst = parseInt(tval);
var fInx=i,lInx;
for(var j=totals.length-1;j>0;j--){
if(!isNull(totals[j].innerText)){
lInx = j;
lst = parseInt(totals[j].innerText);
break;
}
}
if(lst!=0){
if(lst==fst){
clsName = "eq";
tip = "时间更新,大小不变"
}else if(lst > fst){
clsName = "gq";
tip = "合计变大:" + (lst-fst) + "B (" + setNumDouble((lst-fst)/1024) + "K)";
}else if(lst < fst){
clsName = "lq";
tip = "合计变小:" + (fst-lst) + "B (" + setNumDouble((fst-lst)/1024) + "K)";
}
totals[fInx].className = "eq";
totals[lInx].className = clsName;
totals[lInx].title = tip;
var clsName2,tip2;
//设置first 和 last 中间的数据样式
for(var x=fIndex+1;x<lIndex;x++){
var mditem = totals[x];
if($.trim(mditem.innerText)==""){
clsName2="no";
tip2 = "记录缺失";
}else{
clsName2="tt";
tip2 = "中间数据不参与比较";
}
mditem.className = clsName2;
mditem.title = tip2;
}
break;
}
}else if(type == "vi"){
for(var j=i-1;j>0;j--){
var compData = totals[j].innerText
if(!isNull(compData)){
itemData = parseInt(tval);
compData = parseInt(compData);
if(compData > itemData){ //减少
clsName = 'lq';
var sdnum = (compData -itemData);
tip = "合计变小:" + sdnum + "B (" + setNumDouble(sdnum/1024) + "K)";
}else if(compData < itemData){ //增加
clsName = 'gq';
var sdnum = (itemData -compData);
tip = "合计变大:" + sdnum + "B (" + setNumDouble(sdnum/1024) + "K)";
}else if(compData == itemData){ //相等
clsName = 'eq';
tip = "时间更新,大小不变"
}
break;
}
}
}else if(type == "bl"){
clsName = "tt";
tip = "合计数据不参与基线比较"
}
}
titem.className = clsName;
titem.title = tip;
}
}
* 选择对比方式
*/
function chCompType(val){
$("#blShow").remove();
if(val=="bl"){
var iterline = Data_Graph_ZhifGraph.GetLastIterLine().value;
var smt = $("#selCompType");
var pos = smt.offset();
vst_zhg.blDate = FormatDate(iterline["BeginDate"]);
$("#showFilter").append("<div id='blShow'>当前基线:" + iterline["IterativeName"] + ",开始时间:" + vst_zhg.blDate + "</div>");
$("#blShow").css({
"left":pos.left+smt.width()+10,
"top":pos.top
});
}
sortByType(val);
}
/*
* 数据筛选
*/
function filterData(val){
var lqd = $(".fDataView").has("li[class*=lq]");
var gqd = $(".fDataView").has("li[class*=gq]");
var all = $(".fDataView"); if(val == "all"){
all.show();
}else if(val == "onlyBig"){
all.hide();
gqd.show();
}else if(val == "onlySmall"){
all.hide();
lqd.show();
}
}
* 生成CPU、内存、Flash资源使用视图
* @param
* pbdata 产品单板数据集
* @param
* chartId 显示视图的div Id
* @param
* beginDate 查询数据的开始日期
* @param
* endDate 查询数据的结束日期
* @author:remember.deng
* @create date:2011-04-25
*/
function toCMFImg(pbdata, chartId, beginDate, endDate) {
if (pbdata == null) {
$("#" + chartId).html("<img src='../../Images/new_empty.png' /><br /><span class='chart_empty'>没有可显示的数据</span>");
return;
}
var vst_cmf = {
tipmap:{
val:new Array(),
hint:new Array(),
xindex:new Array(),
sindex:new Array()
},
ymax: 0,
title:""
};
//注册jqplot的鼠标移动到数据节点的事件
$.jqplot.config.enablePlugins = true;
$.jqplot.eventListenerHooks.push(['jqplotMouseMove', myMove]); var hasData = false;
var lAry = new Array();
var sAry = new Array();
var dLength = 0;
for (var i = 0; i < pbdata.length; i++) {
if (pbdata[i] != null) {
dLength++;
}
}
var tInx = 0;
if (chartId == "chart_cpu") { //CPU占用率视图
var realAry = new Array();
var smoothAry = new Array();
for (var i = 0; i < pbdata.length; i++) {
if (pbdata[i] != null) {
vst_cmf.ymax=100; //占用率最高为100
//从数据源(DataTable)中获取值
var smooth = pbdata[i].Rows[0]["SmoothUsage"]; //平均值
var real = pbdata[i].Rows[0]["RealUsage"]; //实时值
//记录在tipMap,这个很重要,用来实现数据动态提示
vst_cmf.tipmap.val[i] = real;
vst_cmf.tipmap.hint[tInx] = "<ul><li>Real: " + real + "%</li></ul>";
vst_cmf.tipmap.xindex[tInx] = i+1;
vst_cmf.tipmap.sindex[tInx] = 0;
sInx++;
vst_cmf.tipmap.val[tInx + dLength] = smooth;
vst_cmf.tipmap.hint[tInx + dLength] = "<ul><li>Smooth: " + smooth + "%</li></ul>";
vst_cmf.tipmap.xindex[tInx + dLength] = i+1;
vst_cmf.tipmap.sindex[tInx + dLength] = 1;
tInx++;
realAry[i] = real;
smoothAry[i] = smooth;
hasData = true;
}
sAry[0] = {label:"real"};
sAry[1] = {label:"smooth"};
lAry[0]=realAry;
lAry[1]=smoothAry;
}
} else if (chartId == "chart_mem") { //内存使用情况视图
var extAry = new Array();
var usrAry = new Array();
var staAry = new Array();
var sumAry = new Array();
for (var i = 0; i < pbdata.length; i++) {
if (pbdata[i] != null) {
var sysTotal = pbdata[i].Rows[0]["SysTotal"]; //系统总大小
var sysFree = pbdata[i].Rows[0]["SysFree"]; //系统空闲
var sysMaxUseable = pbdata[i].Rows[0]["SysMaxUseable"]; //系统最大可用
var extTotal = pbdata[i].Rows[0]["ExtTotal"]; //扩展总大小
var extFree = pbdata[i].Rows[0]["ExtFree"]; //扩展空闲
var extMaxUseable = pbdata[i].Rows[0]["ExtMaxUseable"]; //扩展最大可用
var usrTotal = pbdata[i].Rows[0]["UsrTotal"]; //用户区总大小
var usrFree = pbdata[i].Rows[0]["UsrFree"]; //用户区空闲
var usrMaxUseable = pbdata[i].Rows[0]["UsrMaxUseable"]; //用户区最大可用
var staptTotal = pbdata[i].Rows[0]["StaptTotal"]; //Stap区总大小
var staptFree = pbdata[i].Rows[0]["StaptFree"]; //Stap区空闲
var staptMaxUseable = pbdata[i].Rows[0]["StaptMaxUseable"]; //系统最大可用
var sumTotal = pbdata[i].Rows[0]["SumTotal"]; //系统总大小
var sumFree = pbdata[i].Rows[0]["SumFree"]; //系统空闲
var sumMaxUseable = pbdata[i].Rows[0]["SumMaxUseable"]; //系统最大可用
var tstr = "<ul><li><table cellpadding='2' cellspacing='0' border='0'>" +
"<tr><th colspan='2' style='border-bottom:1px #FFCC00 dashed' class='bred' align='left'>$0</th></tr>" +
"<tr><th align='right'>Used</th><td>$1</td></tr>" +
"<tr><th align='right'>Total</th><td>$2</td></tr>" +
"<tr><th align='right'>Free</th><td>$3</td></tr>" +
"<tr><th align='right'>MaxUsab</th><td>$4</td></tr>" +
"</table></li></ul>";
var sInx = 0;
sysAry[i]=sysTotal-sysFree;
setTipMap(tInx,i+1,sInx,sysAry[i],
tstr.replace("$0","Sys").replace("$1",sysAry[i]).replace("$2",sysTotal).replace("$3",sysFree).replace("$4",sysMaxUseable==-1?"--":sysMaxUseable));
sAry[sInx] = {label:"Sys"};
lAry[sInx] = sysAry;
tInx++;
sInx++;
}
if(extTotal!=-1){
extAry[i]=extTotal-extFree;
setTipMap(tInx,i+1,sInx,extAry[i],
tstr.replace("$0","Ext").replace("$1",extAry[i]).replace("$2",extTotal).replace("$3",extFree).replace("$4",extMaxUseable==-1?"--":extMaxUseable));
sAry[sInx] = {label:"Ext"};
lAry[sInx] = extAry;
sInx++;
tInx++;
}
if(usrTotal!=-1){
usrAry[i]=usrTotal-usrFree;
setTipMap(tInx,i+1,sInx,usrAry[i],
tstr.replace("$0","Usr").replace("$1",usrAry[i]).replace("$2",usrTotal).replace("$3",usrFree).replace("$4", usrMaxUseable==-1?"--":usrMaxUseable));
sAry[sInx] = {label:"Usr"};
lAry[sInx] = usrAry;
sInx++;
tInx++;
}
if(staptTotal!=-1){
staAry[i]=staptTotal-staptFree;
setTipMap(tInx,i+1,sInx,staAry[i],
tstr.replace("$0","Sta").replace("$1",staAry[i]).replace("$2",staptTotal).replace("$3",staptFree).replace("$4", staptMaxUseable==-1?"--":staptMaxUseable)); sAry[sInx] = {label:"Sta"};
lAry[sInx] = staAry;
sInx++;
tInx++;
}
if(sumTotal!=-1){
sumAry[i]=sumTotal-sumFree;
setTipMap(tInx,i+1,sInx,sumAry[i],
tstr.replace("$0","Total").replace("$1",sumAry[i]).replace("$2",sumTotal).replace("$3",sumFree).replace("$4", sumMaxUseable==-1?"--":sumMaxUseable));
sAry[sInx] = {label:"Total"};
lAry[sInx] = sumAry;
sInx++;
tInx++;
}
if(vst_cmf.ymax<sumTotal)
vst_cmf.ymax = sumTotal;
hasData = true;
}
}
var tffsAry = new Array();
var tffs1Ary = new Array();
var tffs2Ary = new Array();
var htffsAry = new Array();
for (var i = 0; i < pbdata.length; i++) {
if (pbdata[i] != null) {
var tffsTotal = pbdata[i].Rows[0]["TffsTotal"];
var tffsFree = pbdata[i].Rows[0]["TffsFree"];
var tffs1Total = pbdata[i].Rows[0]["Tffs1Total"];
var tffs1Free = pbdata[i].Rows[0]["Tffs1Free"];
var tffs2Total = pbdata[i].Rows[0]["Tffs2Total"];
var tffs2Free = pbdata[i].Rows[0]["Tffs2Free"];
var hTffsTotal = pbdata[i].Rows[0]["HTffsTotal"];
var hTffsFree = pbdata[i].Rows[0]["HTffsFree"];
var tstr="<ul><li><table cellpadding='2' cellspacing='0' border='0'>"+
"<tr><th colspan='2' style='border-bottom:1px #FFCC00 dashed' class='bred' align='left'>$0</th></tr>"+
"<tr><th align='right'>Used</th><td align='left'>$1</td></tr>"+
"<tr><th align='right'>Total</th><td align='left'>$2</td></tr>"+
"<tr><th align='right'>Free</th><td align='left'>$3</td></tr>"+
"</table></li></ul>";
var sInx = 0;
if(tffsTotal!=-1){
tffsAry[i]=tffsTotal-tffsFree;
setTipMap(tInx,i+1,sInx,tffsAry[i],
tstr.replace("$0","Tffs").replace("$1",tffsAry[i]).replace("$2",tffsTotal).replace("$3",tffsFree));
sAry[sInx] = {label:"Tffs"};
lAry[sInx] = tffsAry;
sInx++;
tInx++;
}
if(tffs1Total!=-1){
tffs1Ary[i]=tffs1Total-tffs1Free;
setTipMap(tInx,i+1,sInx,tffs1Ary[i],
tstr.replace("$0","Tffs1").replace("$1",tffs1Ary[i]).replace("$2",tffs1Total).replace("$3",tffs1Free));
sAry[sInx] = {label:"Tffs1"};
lAry[sInx] = tffs1Ary;
sInx++;
tInx++;
}
if(tffs2Total!=-1){
tffs2Ary[i]=tffs1Total-tffs2Free;
setTipMap(tInx,i+1,sInx,tffs2Ary[i],
tstr.replace("$0","Tffs2").replace("$1",tffs2Ary[i]).replace("$2",tffs2Total).replace("$3",tffs2Free));
sAry[sInx] = {label:"Tffs2"};
lAry[sInx] = tffs2Ary;
sInx++;
tInx++;
}
if(hTffsTotal!=-1){
htffsAry[i]=hTffsTotal-hTffsFree;
setTipMap(tInx,i+1,sInx,htffsAry[i],
tstr.replace("$0","HTffs").replace("$1",htffsAry[i]).replace("$2",hTffsTotal).replace("$3",hTffsFree));
sAry[sInx] = {label:"HTfss"};
lAry[sInx] = htffsAry;
sInx++;
tInx++;
}
if(vst_cmf.ymax<tffs2Total)
vst_cmf.ymax = tffs2Total;
hasData = true;
}
}
}
if (!hasData) {
$("#" + chartId).html("<img src='../../Images/new_empty.png' /><br /><span class='chart_empty'>没有可显示的数据</span>");
return;
}
//曲线颜色,指定范围的最后一天数据比第一天大,为红,否则为绿
var cAry = new Array();
var ci=0;
if(lAry.length>0){
for(var i=0;i<lAry.length;i++){
var le=lAry[i]
if(le!=null){
var first = 0;
var last = 0;
for(var j=0;j<le.length;j++){
if(le[j]!=null){
first = le[j];
break;
}
}
for(var j=le.length-1;j>=0;j--){
if(le[j]!=null){
last = le[j];
break;
}
}
var color = "";
if(last > first){
color="#ff0000"
}else{
color="#66cc66";
}
cAry[ci]=color;
ci++;
}
}
}
$("#" + chartId).text(""); //清空图表内容,此处不能用 .html("")
$("#" + chartId).show();
var myTicks = AjaxHandler.GetDateSpanStr(beginDate, endDate).value; //构建图表
plot1 = $.jqplot(chartId, lAry, {
legend:{
show:true,
renderer:$.jqplot.EnhancedLegendRenderer,
placement:'outsideGrid'
},
seriesColors: cAry,
seriesDefaults: {
breakOnNull: true
},
series:sAry,
axes: {
xaxis: {
ticks: myTicks,
renderer: $.jqplot.CategoryAxisRenderer,
rendererOptions: {
tickRenderer: $.jqplot.CanvasAxisTickRenderer
},
tickOptions: {
angle: -60,
fontStretch: 1
}
},
yaxis: {
min: 0,
max: vst_cmf.ymax,
numberTicks: 11
}
}
});
$('body').append('<div id="myToolTip"></div>');
* 设置动态提示Map
*/
function setTipMap(cindex,xindex,sindex,val,hint){
vst_cmf.tipmap.xindex[cindex] = xindex;
vst_cmf.tipmap.sindex[cindex] = sindex;
vst_cmf.tipmap.val[cindex] = val;
vst_cmf.tipmap.hint[cindex] = hint;
}
/*
* 当光标移到数据焦点时,呈现动态提示
*/
function myMove(ev, gridpos, datapos, neighbor, plot) {
if (neighbor == null) {
$('#myToolTip').fadeOut().empty();
isShowing = false;
}
if (neighbor != null) {
if ($('#myToolTip').is(':hidden')) {
var cdv = neighbor.data + "";
var cindex = cdv.substring(0, cdv.indexOf(','));
var cvalue = cdv.substring(cdv.indexOf(',')+1);
var myText = "";
var sindex = neighbor.seriesIndex;
for(var i=0;i<vst_cmf.tipmap.val.length;i++){
if(vst_cmf.tipmap.val[i] == cvalue &&
vst_cmf.tipmap.xindex[i] == cindex &&
vst_cmf.tipmap.sindex[i] == sindex){
myText = vst_cmf.tipmap.hint[i];
break;
}
}
$('#myToolTip').html(myText);
var gw = $("#"+chartId).width();
var gh = $("#"+chartId).height();
var tw = $('#myToolTip').width();
var th = $('#myToolTip').height();
var tl=gridpos.x-2;
var tt=gridpos.y-2;
if(gridpos.x+tw>gw){
tl = gw-tw-4;
}
if(gridpos.y+th>gh){
tt = gh-th;
}
$('#myToolTip').css({ left: tl, top: tt }).fadeIn();
}
}
}
}
using System.Collections.Generic;
using System.Text;using System.Runtime.InteropServices;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading;using System.Diagnostics;namespace KillForms
{
class Program
{
/* 注册Windows API 事件 */
[DllImport("User32.dll", EntryPoint = "FindWindow")] //查找窗口
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("User32.dll", EntryPoint = "FindWindowEx")]
private static extern IntPtr FindWindowEx(IntPtr parentWnd, IntPtr childWnd, string lpClassName, string lpWindowName);
[DllImport("User32.dll", EntryPoint = "SendMessage")] //给窗口发送消息
private static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); static void Main(string[] args)
{
Console.WriteLine("\t\t\t\t窗口杀手V1.0\n\n功能描述:自动关闭系统弹出的对话框和各种窗口\n配置说明:通过修改FormConfig.txt,可自定义要kill的窗口及监测时间间隔\n" +
"配置详细:1.CloseFormList: 需要kill的窗口名称,将其写在{}之内,数量不限,\n\t 用逗号(,)隔开。" +
" 2.Interval: 监测时间间隔,以秒为单位\n");
bool isBreak;
do
{
isBreak = CloseForm();
} while (isBreak);
}
//关闭窗口
protected static bool CloseForm()
{
FileStream fs = null;
StreamReader sr = null;
try
{
//消息常量
const int VM_CLOSE = 0x010; //关闭窗口
//从配置文件读取要关闭的窗口
fs = new FileStream("FormConfig.txt", FileMode.Open);
sr = new StreamReader(fs, Encoding.Default);
string conStr = sr.ReadToEnd().Replace("\r\n", "").Replace("\t", "");
Regex rgx = new Regex(@"CloseFormList:\{(?<formStr>.+)\}Interval=(?<itv>\d+)");
Match mth = rgx.Match(conStr);
if (mth.Success)
{
string[] formAry = mth.Groups["formStr"].Value.Split(',');
foreach (string form in formAry)
{
if (!string.IsNullOrEmpty(form))
{
IntPtr parentWnd = FindWindow(null, form);
if (!parentWnd.Equals(IntPtr.Zero))
{
SendMessage(parentWnd, VM_CLOSE, 0, 0);
Console.WriteLine("目标窗口[" + form + "]于" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "出现,已成功将其关闭!");
}
}
}
Console.WriteLine("KillForms last run time:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
Thread.Sleep(int.Parse(mth.Groups["itv"].Value) * 1000);
return true;
}
else
{
Console.WriteLine("配置文件读取失败,请输入正确的窗口名和时间间隔");
return false;
}
}
catch (Exception ex)
{
Console.WriteLine("程序运行过程中发生错误,原因是:" + ex.Message);
Console.Read();
return false;
}
finally
{
//关闭文件流并退出应用程序
if (sr != null) sr.Close();
if (fs != null) fs.Close();
}
}
}
}