/**
应用程序监控数据日志管理
*/

com.easou.portal.portlet.ApplicationDataLogController = {
	
	init : function(id,name){
		
		var portelt = new Ext.ux.Portlet({
			id: id + '_' + Ext.id(),
			title : name,
			tools : com.faceye.portal.PortletTools
		});
		
		   var content=com.easou.portal.portlet.ApplicationDataLogController.grid(null);	
	       portelt.add(content[0]);
	       portelt.add(content[1]);
		   return portelt;
	},
	/**
	 * 根据node id查初始监控日志
	 */
	grid:function(nodeid){
		if(Ext.getCmp('monitorDataLog-send-rule-grid-applicaction')){
			//alert(1);
			//Ext.getCmp('monitorDataLog-send-rule-grid-applicaction').destroy();
		}
		var nodeIdText = new Ext.form.TextField({
			id:'monitorDataLog-nodeId',
			hidden : true,
			hideLabel : true
			});
		if(nodeid!==null){
			nodeIdText.setValue(nodeid);
		}
		var applicactionServerStore=new Ext.data.Store({
  	    		autoLoad:true,
  	    		proxy : new Ext.data.HttpProxy({
					url : BP + 'monitorDataLogAction.do?method=searchApplicactionServer'
					           
				}),
			    reader : new Ext.data.JsonReader({
					root : 'root',
					totalProperty : 'total',
					id : 'id',
					fields : ['id', 'name','nodeCategory']
				})
  	    	});
  	    	applicactionServerStore.on('beforload',function(s){s.removeAll();});
//		applicactionServerStore.load();
		applicactionServerStore.on('load',function(s,records,options){
			if(nodeid!==null){
			  // applicactionServerText.setValue(nodeid);
		    }
		});
		
		var applicactionServerText = new Ext.form.ComboBox({
			id:'applicactionServer',
			fieldLabel:'应用系统',
			hideLabel:true,
			emptyText:'选择应用系统',
			displayField:'name',
  	    	valueField:'id',
  	    	triggerAction: 'all',
  	    	selectOnFocus:true,
  	    	width:120,
  	    	store:applicactionServerStore
		});
		
		var startDateText =  new Ext.form.DateField({
			    id:'application-log-start-date',
                fieldLabel: '起始日期',
                emptyText:'起始日期',
                hideLabel:true,
                name: 'startDate',
                altFormats: 'Y-m-d H:i',
                format: 'Y-m-d H:i',
                width:130
            });
//            startDateText.on('render',function(e){
//            	
//            });
     
         startDateText.menuListeners.select=function(menu,date){
        	this.setValue(date);
        };
		var endDateText =  new Ext.form.DateField({
                fieldLabel: '结束日期',
                emptyText:'结束日期',
                hideLabel:true,
                name: 'endDate',
                value:new Date(),
                altFormats: 'Y-m-d H:i',
                format: 'Y-m-d H:i',
                id:'application-log-end-date',
                width:130
            });
	  endDateText.menuListeners.select=function(menu,date){
        	this.setValue(date);
        };
        var valueArea=new Ext.form.TextField({
        	id:'application-log-query-value-area',
        	hideLabel:true,
        	width:90,
        	emptyText:'起始值(如3000)',
        	name:'query-value-area'
        });
        var orderNumQueryText=new Ext.form.TextField({
        	id:'application-log-query-order-num',
        	hideLabel:true,
        	width:60,
        	emptyText:'监控编号',
        	name:'query-order-num'
        });
        var urlQuery=new Ext.form.TextField({
        	id:'application-log-query-url',
        	hideLabel:true,
        	width:100,
        	emptyText:'应用地址',
        	name:'query-url'
        });
	
	          var CountryCode = [
			    ['0','数据正常'],
			    ['1','数据超出预警值'],
			    ['2','数据超出报警值'],
			    ['3','确认数据超出预警值'],
			    ['4','报警确认'],
			    ['5','预警解除'],
			    ['6','报警解除']
			    ];
		var statusBox=new Ext.form.ComboBox({
		        id : 'node-server-log-query-status',
                hideLabel:true,
                emptyText : '状态查询...',
                forceSelection: false,
                width: 100,
                store: new Ext.data.SimpleStore({
                    fields: ['value', 'text'],
                    data :CountryCode
                    }),
                valueField:'value',
                displayField:'text',
                typeAhead: true,
                mode: 'local',
                triggerAction: 'all',
                selectOnFocus:true,//用户不能自己输入,只能选择列表中有的记录
                allowBlank:true
                });
                
			var controlPanel=new Ext.Panel({layout : 'column',
			                id:Ext.id(),
							border : true,
							items : [{
								columnWidth:.10,
								layout:'form',
								border:true,
								items:[orderNumQueryText]
							},{
								columnWidth:.15,
								layout:'form',
								border:true,
								items:[urlQuery]
							},{
										columnWidth : .15,
										layout : 'form',
										border : true,
										items : [applicactionServerText]
									},{
										columnWidth:.15,
										layout:'form',
										border:true,
										items:[valueArea]
									},{
										columnWidth:.15,
										layout:'form',
										border:true,
										items:[startDateText]
									},{
										columnWidth:.15,
										layout:'form',
										border:true,
										items:[endDateText]
									},{
										columnWidth:.15,
										layout:'form',
										border:true,
										items:[statusBox]
									},{
										columnWidth:.30,
										layout:'form',
										border:true,
										items:[new Ext.Button({
											text:'查询',
											id:'application-log-query-button',
											handler:function(btn){
												com.easou.portal.portlet.ApplicationDataLogController.query();
											}
										})],
										html:'<a href="#" onclick="com.easou.portal.portlet.ApplicationDataLogController.dayQuery(\'-1\');return false;">前一小时</a>|<a href="#" onclick="com.easou.portal.portlet.ApplicationDataLogController.dayQuery(\'1\');return false;">后一小时</a>'
									}
//									,{
//										columnWidth:.05,
//										layout:'border',
//										border:true,
//										html:'<a href="#" onclick="com.easou.portal.portlet.ApplicationDataLogController.dayQuery(\'-1\');return false;">前一天</a>|<a href="#" onclick="com.easou.portal.portlet.ApplicationDataLogController.dayQuery(\'1\');return false;">后一天</a>'
//									}
									]});
		    controlPanel.on('afterlayout',function(p,layout){
		    	var now=new Date();
//            	alert(now.getDate());
//            	alert(now.getDate()-1);
//                alert(Ext.util.Format.date(Ext.getCmp('application-log-end-date').getValue()-1,'Y-m-d H:i:s'));
//            	now.setDate(now.getDate()-1);
                now.setHours(now.getHours()-1);
            	Ext.getCmp('application-log-start-date').setValue(now);
				
            	//com.easou.portal.portlet.ApplicationDataLogController.query();
		    });
			var monitorForm=new Ext.FormPanel({
				labelWidth : 75, 
				frame : true,
				bodyStyle : 'padding:5px 5px 0',
				margins : '5 5 5 5',
				monitorValid : true,
				items:[controlPanel]
				});
		var tempNodeId='';
		if(nodeid===null){
			tempNodeId=applicactionServerText.getValue();
		}else{
			tempNodeId=nodeid;
		}
		//alert(tempNodeId);		
	     var store = new Ext.data.Store({
			proxy : new Ext.data.HttpProxy({
				url : BP
						+ 'monitorDataLogAction.do?method=searchApplicactionDataLog',
				timeout:60000
			}),
			reader : new Ext.data.JsonReader({
				root : 'root',
				totalProperty : 'total',
				id : 'id',
				fields : ['id','unit', 'nodeid','updatedate','gatherdate','gathervalue','computevalue','name','applicationname','ordernum','descs','status']
			})
		});
		store.on('beforeload',function(s){
			s.removeAll();
//			Ext.apply(this.baseParams,{nodeId:tempNodeId});
			});
		var cm = new Ext.grid.ColumnModel([
//				new Ext.grid.CheckboxSelectionModel(),
				 {
					id : 'id',
					dataIndex : 'id',
					hidden : true
				}, {
					id : 'nodeId',
					dataIndex : 'nodeid',
					hidden : true
				},{
					header:'编号',
					dataIndex:'ordernum',
					width:50
				}, {
					header : '应用名称',
					dataIndex : 'applicationname',
					width:100
				}, {
					header : "监控项",
					dataIndex : 'name',
					width:80
				},{
					header:'数据说明',
					dataIndex:'descs'
				}, {
					header : '采集值',
					width:100,
					dataIndex : 'gathervalue',
					renderer:function(v,p,r){
						var value=r.data['gathervalue'];
						if(value>30000){
							if(value.indexOf('50000')!==-1){
								var code=value.substring(5);
								return '响应码<font color="red">'+code+'</font><a href="http://www.google.com.hk/search?q=http+response+404" target="_blank">?</a>';
							}else if(value.indexOf('30000')!==-1){
								return 'Http请求异常';
							}else{
							  return '超过<font color="red">30</font> d';
							}
						}else{
							return value+' <font color="gray">ms</font>';
						}
					}
				}, {
					header : '采集时间',
					width:150,
					dataIndex : 'updatedate'
				},{
					header:'数据状态',
					renderer:function(v,p,r){
						var status=r.get('status');
						var html='未知';
						if(status==='0'){
							html='<font color="green">数据正常</font>';
						}else if(status==='1'){
							html='<font color="gray">数据超出预警值</font>';
						}else if(status==='2'){
							html='<font color="red">数据超出报警值</font>';
						}else if(status==='3'){
							html='<font color="blue">确认数据超出预警值</font>';
						}else if(status==='4'){
							html='<font color="red"><b>报警确认</b></font>';
						}else if(status==='5'){
							html='<font color="green"><b>预警解除</b></font>';
						}else if(status==='6'){
							html='<font color="green"><b>报警解除</b></font>';
						}
						return html;
					}
				}
				]);
				
		var grid = new Ext.grid.GridPanel({
		    id:'monitorDataLog-send-rule-grid-applicaction',
			header : false,
			region : 'center',
			border : false,
			autoHeight : true,
			// autoScroll:true,
			// height:400,
			loadMask : true,
			stripeRows : true,
			trackMouseOver : true,
			layoutConfig : {
				autoWidth : true,
				layout : 'fit'
			},
			// autoExpandMax:1000,
			// width:900,
			store : store,
			cm : cm,
			bodyStyle : 'width:100%;height:100%;',
			trackMouseOver : false,
			// selectRow:Ext.emptyFn，控制选中的记录是否高亮度显示
			// sm: new Ext.grid.RowSelectionModel({selectRow:Ext.emptyFn}),
//			sm : new Ext.grid.CheckboxSelectionModel(),
			loadMask : true,
			viewConfig : {
				forceFit : true,
				deferEmptyText:false,
				emptyText:'<div style="text-align:center;font-weight:bold;color:red;font-size:14px;padding:20px;">当前没有数据!</div>'
			},
			bbar : new Ext.PagingToolbar({
            pageSize: 15,
            store: store,
            displayInfo: true,
            displayMsg: 'Displaying topics {0} - {1} of {2}',
            emptyMsg: "No topics to display"
        })
		});
		store.load({
			params : {
         		nodeId:tempNodeId,
//				monitorId:monitorTypeText.getValue(),	
				start : 0,
				limit : 15
			},
		   callback:function(s,records,options){
				  if(s!==null &&s.length>0){
                     var r=s[0];
					 orderNumQueryText.setValue(r.get('ordernum'));
				  }
				}
		});
		var res=[monitorForm,grid];
		return res;
	},
	gridWin:function(nodeId){
			var win=new Ext.Window({
  	   		id:Ext.id(),
//  	   		layout : 'border',
		    // 模式窗口
			modal : true,
			width : 950,
			//height : 510,
			autoHeight:true,
			plain : true,
			minimizable:true,
			maximizable:true,
			// autoScroll:true,
			title : '应用监控日志',
			x:200,
			y:25
  	   	});
  	   	
  	   	 var content=com.easou.portal.portlet.ApplicationDataLogController.grid(nodeId);	
  	   	 win.add(content[0]);
  	   	 win.add(content[1]);

  	   	 win.show();
	},
	query:function(){
		var start=Ext.getCmp('application-log-start-date').getValue();
		var valueArea=Ext.getCmp('application-log-query-value-area').getValue();
		var end=Ext.getCmp('application-log-end-date').getValue();
							if(start)
							{
								start =Ext.util.Format.date(start,'Y-m-d H:i');
							}
							if(end){
								end=Ext.util.Format.date(end,'Y-m-d H:i');
							}
		var applicationId=Ext.getCmp('applicactionServer').getValue();
		var orderNum=Ext.getCmp('application-log-query-order-num').getValue();
		var url=Ext.getCmp('application-log-query-url').getValue();
		var status=Ext.getCmp('node-server-log-query-status').getValue();
		Ext.getCmp('monitorDataLog-send-rule-grid-applicaction').getStore().on('beforeload',function(){
			this.baseParams={};
         	Ext.apply(this.baseParams,{startDate:start,nodeId:applicationId,monitorId:'',endDate:end,valueArea:valueArea,orderNum:orderNum,url:url,status:status});
         });
		 Ext.getCmp('monitorDataLog-send-rule-grid-applicaction').getStore().load({params:{start:0,limit:15}});
	},
	/**
	 * day:-1:前一天
	 * day:1:后一天
	 */
	dayQuery:function(day){
		var date=Ext.getCmp('application-log-start-date').getValue();
		if(date){
			if(day==1){
				date.setHours(date.getHours()+1);
			}else if(day==-1){
				date.setHours(date.getHours()-1);
			}else{
				
			}
			Ext.getCmp('application-log-start-date').setValue(date);
		}
		var end=Ext.getCmp('application-log-end-date').getValue();
		if(end){
			if(day==1){
				end.setHours(end.getHours()+1);
			}else{
				end.setHours(end.getHours()-1);
			}
			Ext.getCmp('application-log-end-date').setValue(end);
		}
		com.easou.portal.portlet.ApplicationDataLogController.query();
	}
};
