﻿/// <reference path="http://www-app.gdepb.gov.cn/ext-2.2/vswd-ext_2.1.js" />
Ext.namespace('EQPublish');

/**
* 江河水月报表格
*/
EQPublish.WaterMonthStore = function(config) {
	Ext.applyIf(config, {
		fields: [
			{ name: 'WaterSysName', type: 'string', mapping: "WaterSysName" },
			{ name: 'RiverPartID', type: 'string', mapping: "RiverPartID" },
			{ name: 'RiverPartName', type: 'string', mapping: "RiverPartName" },
			{ name: 'LevelID_Org', type: 'string', mapping: "LevelID_Org" },
			{ name: 'LevelName', type: 'string', mapping: "LevelName" },
			{ name: 'LevelName_Org', type: 'string', mapping: "LevelName_Org" },
			{ name: 'LevelID', type: 'string', mapping: "LevelID" },
			{ name: 'Eligible', type: 'string', mapping: "Eligible" },
			{ name: 'OverItem', type: 'string', mapping: "OverItem" },
			{ name: 'Longitude', type: 'float', mapping: "Longitude" },
			{ name: 'Latitude', type: 'float', mapping: "Latitude" }
		]
	});
	EQPublish.WaterMonthStore.superclass.constructor.call(this, config);
}
Ext.extend(EQPublish.WaterMonthStore, Ext.ux.AjaxStore);

EQPublish.WaterMonthPanel = Ext.extend(Ext.grid.GridPanel, {
	ascxHandlerUrl: '',
	mapChartHandlerUrl: '',
	mapIconHandlerUrl: '',
	initComponent: function() {
		Ext.apply(this, {
			id: 'WaterMonthPanel',
			chartWindow: null,
			tbar: [
				{
					id: 'WaterMonth_Year',
					xtype: 'combo',
					fieldLabel: '　选择年',
					typeAhead: true,
					triggerAction: 'all',
					editable: false,
					mode: 'local',
					displayField: 'year',
					valueField: 'name',
					lazyInit: false,
					width: 70,
					value: new Date().getYear(),
					store: new Ext.data.SimpleStore({
						fields: ['name', 'year'],
						data: [['2000', '2000年'], ['2001', '2001年'], ['2002', '2002年'], ['2003', '2003年'], ['2004', '2004年'], ['2005', '2005年'], ['2006', '2006年'], ['2007', '2007年'], ['2008', '2008年'], ['2009', '2009年'], ['2010', '2010年']]
					}),
					scope: this
				},
				{

					id: 'WaterMonth_Month',
					xtype: 'combo',
					fieldLabel: '　选择月',
					typeAhead: true,
					triggerAction: 'all',
					editable: false,
					mode: 'local',
					displayField: 'month',
					valueField: 'name',
					lazyInit: false,
					width: 60,
					value: new Date().getMonth(),
					store: new Ext.data.SimpleStore({
						fields: ['name', 'month'],
						data: [['01', '1月'], ['02', '2月'], ['03', '3月'], ['04', '4月'], ['05', '5月'], ['06', '6月'], ['07', '7月'], ['08', '8月'], ['09', '9月'], ['10', '10月'], ['11', '11月'], ['12', '12月']]

					}),
					scope: this
				},
				'-',
				{ id: 'btn-3', text: '前一月', icon: 'images/toolbar-left.png', cls: 'x-btn-text-icon', handler: this.onLastMonth, scope: this },
				{ id: 'btn-4', text: '后一月', icon: 'images/toolbar-right.png', cls: 'x-btn-text-icon', handler: this.onNextMonth, scope: this}/*
				'-',
				'->',
				{ id: 'btn-1', text: '建设情况', cls: 'x-btn-text-icon', icon: 'images/chart_pie.gif', handler: this.onBtnClick, scope: this, tooltip: '<br/><b>按照<b>建设情况</b>在地图上显示图标</b><br/><br/><center><img src="images/Mapicon/chartLegend.png"/></center><br/>' },
				{ id: 'btn-2', text: '设计能力', cls: 'x-btn-text-icon', icon: 'images/chart_pie.gif', handler: this.onBtnClick, scope: this, tooltip: '<br/><b>按照设计能力在地图上显示</b><br/><br/><center><img src="images/Mapicon/chartLegend.png"/></center><br/>' }
			*/],
			store: new EQPublish.WaterMonthStore({
				storeId: 'WaterMonthStore',
				url: 'handlers/WaterMonthHandler.ashx'
			}),
			columns: [
				{ header: "河段", width: 60, sortable: true, dataIndex: 'WaterSysName', renderer: this.SectionRenderer },
				{ header: "目标", width: 35, sortable: true, dataIndex: 'LevelName_Org', renderer: this.levalRenderer },
				{ header: "现状", width: 130, sortable: true, dataIndex: 'LevelID', renderer: this.levalNameRenderer },
				{ header: "达标", width: 35, sortable: true, dataIndex: 'Eligible', renderer: this.EligibleRenderer },
				{ header: "主要超标项目", width: 120, sortable: true, dataIndex: 'OverItem', id: 'OverItem' },
				{ header: '图表', width: 40, locked: true, resizable: true, dataIndex: 'RiverPartID', renderer: this.buttonRender, css: 'cursor:pointer;' }
			],
			autoExpandColumn: 'OverItem',
			//			stripeRows: true,
			width: 400
			//          autoScroll:true
		});
		EQPublish.WaterMonthPanel.superclass.initComponent.apply(this, arguments);
		this.addEvents({ 'timechange': true });
	},
	onBtnClick: function(btn, evtObj) {
		try {
			Ext.ux.VEMap.cleanPie();
			Ext.ux.VEMap.cleanIcon();
			switch (btn.id) {
				case 'btn-1':
					Ext.ux.VEMap.loadGeoRss(this.mapChartHandlerUrl + '?p=1&b=btn-1&id=' + Ext.id());
					break;
				case 'btn-2':
					Ext.ux.VEMap.loadGeoRss(this.mapChartHandlerUrl + '?p=1&b=btn-2&id=' + Ext.id());
					break;
			}
		}
		catch (ex) { }
	},
	buttonRender: function(val) {
		if (!val) {
			return;
		}
		return '<image src="images/more.png" />';
	},
	onNextMonth: function() {
		var lastYear = Ext.getCmp('WaterMonth_Year').value;
		var lastmonth = Ext.getCmp('WaterMonth_Month').value;
		var currentDate = new Date(String.format('{1}/01/{0}', lastYear, this.AddZero(lastmonth))).add(Date.MONTH, 1);
		Ext.getCmp('WaterMonth_Month').setValue(currentDate.format('m'));
		Ext.getCmp('WaterMonth_Year').setValue(currentDate.format('Y'));
		var month = Ext.getCmp('WaterMonth_Month').value;
		var year = Ext.getCmp('WaterMonth_Year').value;
		this.store.load({ queryCondi: { year: year, month: month} });
		this.fireEvent('timechange', this, { year: year, month: month });
		//this.MapChart(currentDate.format('Y'), currentDate.format('m'));
	},
	onLastMonth: function() {
		var lastYear = Ext.getCmp('WaterMonth_Year').value;
		var lastmonth = Ext.getCmp('WaterMonth_Month').value;
		var currentDate = new Date(String.format('{1}/01/{0}', lastYear, this.AddZero(lastmonth))).add(Date.MONTH, -1);
		Ext.getCmp('WaterMonth_Month').setValue(currentDate.format('m'));
		Ext.getCmp('WaterMonth_Year').setValue(currentDate.format('Y'));
		var month = Ext.getCmp('WaterMonth_Month').value;
		var year = Ext.getCmp('WaterMonth_Year').value;
		this.store.load({ queryCondi: { year: year, month: month} });
		this.fireEvent('timechange', this, { year: year, month: month });
		//this.MapChart(currentDate.format('Y'), currentDate.format('m'));
	},
	initEvents: function() {
		EQPublish.WaterMonthPanel.superclass.initEvents.call(this);
		this.on('cellclick', this.btnClick, this);
		this.getStore().on('beforeload', this._beforeLoad, this);
		this.getStore().on('load', this._afterLoad, this);
		this.getStore().on('loadexception', this._loadException, this);
		Ext.getCmp('WaterMonth_Year').on('select', this.OnSelect, this);
		Ext.getCmp('WaterMonth_Month').on('select', this.OnSelect, this);
	},
	_afterLoad: function(loader, node, response) {
		this.body.unmask();
	},
	_beforeLoad: function(loader, node, callback) {
		this.body.mask('加载数据...', 'x-mask-loading');
	},
	_loadException: function(loader, node, response) {
		this.body.unmask();
		Ext.MessageBox.show({
			title: '提示：',
			msg: '加载数据出错',
			icon: Ext.MessageBox.ERROR,
			buttons: Ext.MessageBox.OK
		});
	},
	btnClick: function(thisGird, rowIndex, colIndex, evObject) {
		if (colIndex == 5) {
			if (this.chartWindow == null) {
				var month = Ext.getCmp('WaterMonth_Month').value;
				var year = Ext.getCmp('WaterMonth_Year').value;
				var endTime = new Date(year + '/' + month + '/01').add('mo', 1).add('d', -1);
				var startTime = new Date(year + '/' + month + '/01').add('mo', -6);
				this.chartWindow = new EQPublish.ChartWindow({
					startTime: startTime,
					endTime: endTime,
					ascxHandlerUrl: ascxHandler,
					chartHandlerUrl: '~/Controls/RiverQualityMonthChart.ascx'
				});
			}
			var ID = thisGird.store.getAt(rowIndex).get('RiverPartID');
			this.chartWindow.setID(ID);
			var title = String.format('{0}河段水质月报时间变化图', thisGird.store.getAt(rowIndex).get('WaterSysName'));
			this.chartWindow.setTitle(title);
			this.chartWindow.show();
		}
	},
	/**
	* 重写afterRender方法，可以在这里加载数据。
	*/
	afterRender: function() {
		EQPublish.WaterMonthPanel.superclass.afterRender.apply(this, arguments);
		this.initDate();
	},
	initDate: function() {
		Ext.Ajax.request({
			url: 'Handlers/WaterMonthHandler.ashx',
			params: { op: 'SelectLastDate' },
			success: this.DateSuccessed,
			failure: this.Datefailured,
			scope: this
		});
	},
	DateSuccessed: function(response, options) {
		var result = Ext.decode(response.responseText);
		var date = [];
		if (result.Success) {
			date = result.Data.split('-');
		}
		else {
			Ext.MessageBox.alert('出错', result.ErrorMessage); ;
			return false;
		}
		Ext.getCmp('WaterMonth_Year').setValue(date[0]);
		Ext.getCmp('WaterMonth_Month').setValue(this.AddZero(date[1]));
		var month = Ext.getCmp('WaterMonth_Month').value;
		var year = Ext.getCmp('WaterMonth_Year').value;
		this.store.load({ queryCondi: { year: year, month: month} });
		this.fireEvent('timechange', this, { year: year, month: month });
	},
	Datefailured: function() {
		alert('初始化失败');
	},
	OnSelect: function(cmp, selectData, selectDataindex) {
		//      刷新grid
		var month = Ext.getCmp('WaterMonth_Month').value;
		var year = Ext.getCmp('WaterMonth_Year').value;
		this.store.load({ queryCondi: { year: year, month: month} });
		this.fireEvent('timechange', this, { year: year, month: month });
		//this.MapIcon(year, week);
	},
	AddZero: function(num) {
		var result = Number(num);
		if (num < 10) {
			return String.format('0{0}', Number(num));
		}
		return String.format('{0}', Number(num));
	},
	AreaRenderer: function(val, metadata, record) {
		return record.data.strAreaName;
	},
	SectionRenderer: function(val, metadata, record) {
		return record.data.WaterSysName;
	},
	FIndexSynPoll: function(val, metadata, record) {
		//        if (c.data.strWaterClassName == '极差') {
		//            b.css = "color:red;"
		//        }
		return record.data.fIndexSynPoll;
	},
	levalRenderer: function(val, metadata, record) {
		return String.format('{0}类', val);

	},
	EligibleRenderer: function(val, metadata, record) {
		if (val) {
			if (val == '达标') {
				return '<img src="images/dbyes.png">';
			}
			if (val == '未达标') {
				return '<img src="images/dbnot.png">';
			}
		}
	},
	levalNameRenderer: function(val, metadata, record) {
		var color = '';
		var wid=0;
		if (val) {
			if (val == '1') {
				color = waterClassColor[0];
				wid = 20;
			}
			if (val == '2') {
				color = waterClassColor[1];
				wid = 40;
			}
			if (val == '3') {
				color = waterClassColor[2];
				wid = 60;
			}
			if (val == '4') {
				color = waterClassColor[3];
				wid = 80;
			}
			if (val == '5') {
				color = waterClassColor[4];
				wid = 100;
			}
			if (val == '6') {
				color = waterClassColor[5];
				wid = 130;
			}
		}
		//		metadata.attr = 'style="background-color:' + color + '";';
		//		var tempStyle;
		tempStyle = 'width: ' + wid + 'px;';
		var lbLeft = (wid - 29);
		metadata.attr = 'style="padding: 0px;"';
		return String.format(
			'<div style="position: relative; width: 100%; height: 20px;">' +
		        '<div style="position: absolute;height: 20px;text-align:right;z-index: auto;{1};background-repeat:no-repeat;background-position:left center;background-image:url(images/LegendDrink.png);">' +
			    '<div style="position: absolute;top:2px;left:{2}px;text-align: right;z-index: auto; width:25px; height: 20px; line-height: 20px;">{0}</div></div>' +
			'</div>',
			record.data.LevelName,
			tempStyle,
			lbLeft
		);

		return record.data.LevelName;
	},
	GetWeek: function() {
		var dt = new Date();
		var y = dt.getYear();
		var start = "1/1/" + y;
		start = new Date(start);
		var days = Math.round((dt.valueOf() - start.valueOf()) / (24 * 60 * 60 * 1000));
		days = days + start.getDay();
		return Math.floor(days / 7 - 1);
	}
});
Ext.reg('WaterMonthPanel', EQPublish.WaterMonthPanel);
