﻿/// <reference path="http://www-app.gdepb.gov.cn/ext-2.2/vswd-ext_2.1.js" />
Ext.namespace('EQPublish');

/**
* 饮用水源表格
*/
EQPublish.WaterDrinkStore = function(config) {
    Ext.applyIf(config, {
        fields: [
		    { name: 'nSectionID', type: 'int', mapping: "NSectionID" },
		    { name: 'strAreaID', type: 'string', mapping: "StrAreaID" },
		    { name: 'strAreaName', type: 'string', mapping: "StrAreaName" },
		    { name: 'nSectionID', type: 'int', mapping: "NSectionID" },
		    { name: 'strSectionName', type: 'string', mapping: "StrSectionName" },
		    { name: 'fIndexSynPoll', type: 'float', mapping: "FIndexSynPoll" },
		    { name: 'strWaterClassName', type: 'string', mapping: "StrWaterClassName" },
		    { name: 'fWaterAdoptPerMonth', type: 'float', mapping: "FWaterAdoptPerMonth" },
		    { name: 'strWaterAdoptClassName', type: 'string', mapping: "StrWaterAdoptClassName" },
		    { name: 'strItemOverStep', type: 'string', mapping: "StrItemOverStep" },
		    { name: 'Longitude', type: 'float', mapping: "Longitude" },
		    { name: 'Latitude', type: 'float', mapping: "Latitude" }
        ]
    });
    EQPublish.WaterDrinkStore.superclass.constructor.call(this, config);
}
Ext.extend(EQPublish.WaterDrinkStore, Ext.ux.AjaxStore);

EQPublish.WaterDrinkPanel = Ext.extend(Ext.grid.GridPanel, {
	ascxHandlerUrl: '',
	mapChartHandlerUrl: '',
	mapIconHandlerUrl: '',
	initComponent: function() {
		Ext.apply(this, {
			id: 'WaterDrinkPanel',
			chartWindow: null,
			tbar: [
                {
                	id: 'WaterDrinkMonth_Year',
                	xtype: 'combo',
                	fieldLabel: '　选择年',
                	typeAhead: true,
                	triggerAction: 'all',
                	editable: false,
                	mode: 'local',
                	displayField: 'year',
                	valueField: 'name',
                	lazyInit: false,
                	width: 70,
                	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年']]
                	})
                },
			    {
			    	id: 'WaterDrinkMonth_Month',
			    	xtype: 'combo',
			    	fieldLabel: '　选择月',
			    	typeAhead: true,
			    	triggerAction: 'all',
			    	editable: false,
			    	mode: 'local',
			    	displayField: 'month',
			    	valueField: 'name',
			    	lazyInit: false,
			    	width: 50,
			    	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月']]
			    	})
			    },
			    '-',
			    { 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 }
			   ],
			store: new EQPublish.WaterDrinkStore({
				storeId: 'WaterDrinkStore',
				url: 'handlers/WaterDrinkHandler.ashx'
			}),
			columns: [
				{ id: 'nSectionID', header: "地区ID",align:'center', width: 30, sortable: true, dataIndex: 'nSectionID', hidden: true },
				{ header: "地区", width: 40,align:'center',  sortable: true, dataIndex: 'strAreaID', renderer: this.AreaRenderer },
				{ header: "水厂名称", width: 75, align:'center', sortable: true, dataIndex: 'nSectionID', renderer: this.SectionRender },
//				{ header: '状况', width: 32, sortable: true, dataIndex:'strWaterClassName', renderer: this.waterClassNameRenderer },
				{ header: "水质状况/水质指数",align:'center',  width: 120, sortable: true, dataIndex: 'fIndexSynPoll', renderer: this.barRenderer, id: 'fIndexSynPoll' },
				{ header: "主要污染项目",align:'center',  width: 80, sortable: true, dataIndex: 'strItemOverStep', renderer: this.OverItemRender},
				{ header: '图表', width: 50,align:'center',  locked: true, resizable: true, dataIndex: 'nSectionID', renderer: this.buttonRender, css: 'cursor:pointer;' },
				{ header: "取水总量", width: 60, align:'center', sortable: true, dataIndex: 'fWaterAdoptPerMonth' },
				{ header: "水量类别", width: 65, align:'center', sortable: true, dataIndex: 'strWaterAdoptClassName' }
			],
//			stripeRows: true,
			height: 478,
			width: 480
		});
		EQPublish.WaterDrinkPanel.superclass.initComponent.apply(this, arguments);
		this.addEvents({ 'timechange': true });
	},
	onNextMonth: function() {
		var lastYear = Ext.getCmp('WaterDrinkMonth_Year').value;
		var lastmonth = Ext.getCmp('WaterDrinkMonth_Month').value;
		var currentDate = new Date(String.format('{1}/01/{0}', lastYear, this.AddZero(lastmonth))).add(Date.MONTH, 1);
		Ext.getCmp('WaterDrinkMonth_Month').setValue(currentDate.format('m'));
		Ext.getCmp('WaterDrinkMonth_Year').setValue(currentDate.format('Y'));
		this.store.load({ queryCondi: { yearMonth: currentDate.format('Y-m-d')} });
		var year = Ext.getCmp('WaterDrinkMonth_Year').value;
		var month = Ext.getCmp('WaterDrinkMonth_Month').value;
		this.fireEvent('timechange', this, { month: month, year: year });
	},
	onLastMonth: function() {
		var lastYear = Ext.getCmp('WaterDrinkMonth_Year').value;
		var lastmonth = Ext.getCmp('WaterDrinkMonth_Month').value;
		var currentDate = new Date(String.format('{1}/01/{0}', lastYear, this.AddZero(lastmonth))).add(Date.MONTH, -1);
		Ext.getCmp('WaterDrinkMonth_Month').setValue(currentDate.format('m'));
		Ext.getCmp('WaterDrinkMonth_Year').setValue(currentDate.format('Y'));
		this.store.load({ queryCondi: { yearMonth: currentDate.format('Y-m-d')} });
		var year = Ext.getCmp('WaterDrinkMonth_Year').value;
		var month = Ext.getCmp('WaterDrinkMonth_Month').value;
		this.fireEvent('timechange', this, { month: month, year: year });
	},
	initEvents: function() {
		EQPublish.WaterDrinkPanel.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('WaterDrinkMonth_Year').on('select', this.OnSelect, this);
		Ext.getCmp('WaterDrinkMonth_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
		});
	},
	/*
	* 拿到数据库中最新数据的日期，初始化日期控件
	*/
	initYearMonth: function() {
		Ext.Ajax.request({
			url: 'Handlers/WaterDrinkHandler.ashx',
			params: { op: 'SelectLastYearMonth' },
			success: this.YearMonthSuccessed,
			failure: this.YearMonthfailured,
			scope: this
		});
	},
	btnClick: function(thisGird, rowIndex, colIndex, evObject) {
		if (colIndex == 5) {
			if (this.chartWindow == null) {
				var month = Ext.getCmp('WaterDrinkMonth_Month').value;
				var year = Ext.getCmp('WaterDrinkMonth_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/WaterDrinkMonthChart.ascx'
				});
			}
			var ID = thisGird.store.getAt(rowIndex).get('nSectionID');
			this.chartWindow.setID(ID);
			var title = String.format('{0}水质状况时间变化图', thisGird.store.getAt(rowIndex).get('strSectionName'));
			this.chartWindow.setTitle(title);
			this.chartWindow.show();
		}
	},
	YearMonthSuccessed: function(response, options) {
		var result = Ext.decode(response.responseText);
		var yearMonth = [];
		if (result.Success) {
			yearMonth = result.Data.split('-');
		}
		else {
			Ext.MessageBox.alert('出错', result.ErrorMessage); ;
			return false;
		}
		Ext.getCmp('WaterDrinkMonth_Year').setValue(yearMonth[0]);
		Ext.getCmp('WaterDrinkMonth_Month').setValue(this.AddZero(yearMonth[1]));
		var month = Ext.getCmp('WaterDrinkMonth_Month').value;
		var year = Ext.getCmp('WaterDrinkMonth_Year').value;
		this.store.load({ queryCondi: { yearMonth: String.format('{1}-{0}-1', month, year)} });
		this.fireEvent('timechange', this, { month: month, year: year });
	},
	YearMonthfailured: function() {
		alert('初始化失败');
	},
	/**
	* 重写afterRender方法，可以在这里加载数据。
	*/
	afterRender: function() {
		EQPublish.WaterDrinkPanel.superclass.afterRender.apply(this, arguments);
		this.initYearMonth();
	},
	OnSelect: function(cmp, selectData, selectDataindex) {
		//      刷新grid
		var year = Ext.getCmp('WaterDrinkMonth_Year').value;
		var month = Ext.getCmp('WaterDrinkMonth_Month').value;
		yearMonth = String.format('{0}-{1}-1', year, month);
		this.store.load({ queryCondi: { yearMonth: yearMonth} });
		this.fireEvent('timechange', this, { month: month, year: year });
	},
	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) {
		metadata.attr = 'style="text-align:left;vertical-align:middle;"';
		return record.get('strAreaName');
	},
	SectionRender: function(val, metadata, record) {
		metadata.attr = 'style="text-align:left;vertical-align:middle;"';
		return record.get('strSectionName');
	},
	OverItemRender: function(val, metadata, record) {
		metadata.attr = 'style="text-align:left;vertical-align:middle;"';
		return record.get('strItemOverStep');
	},
	buttonRender: function(val) {
		if (!val) {
			return;
		}
		return '<image src="images/more.png" height="14"/>';
	},
	waterClassNameRenderer: function(val, metadata, record) {
		var color = '';var pos = 0;
		switch (record.get('strWaterClassName')) {
			case '优': color = waterClassColor[0];pos=0; break;
			case '良': color = waterClassColor[1];pos=-20; break;
			case '尚好': color = waterClassColor[2];pos=-40; break;
			case '较差': color = waterClassColor[3];pos=-60; break;
			case '差': color = waterClassColor[4];pos=-80; break;
			case '极差': color = waterClassColor[5];pos=-100; break;
		}
		metadata.attr = 'style="text-align:left;vertical-align:middle;"';
		//metadata.attr = 'style="background-color: ' + color + ';"';
		return record.get('strWaterClassName');
//		return '';
	},
	barRenderer: function(val, metadata, record) {
		var tempStyle;
		var wid = val > 120 ? 120 : val;

//		tempStyle = 'width: ' + val / 120 * 100 + '%;';
		tempStyle = 'width: ' + wid + 'px;';
		metadata.attr = 'style="text-align:left;vertical-align:middle;padding: 0px;"';
		return String.format(
			'<div style="position: relative; width: 100%; height: 20px;"><div style="position: absolute; height: 20px; z-index: auto;{1};background-position:left center;background-repeat:no-repeat;background-image:url(images/LegendDrink.png)"></div>' +
				'<div style="text-align: right;position: absolute; z-index: auto; width: 120px;height:20px;line-height:20px;">{2} / <label style="font-size:14px">{0}</label></div></div>',
			val,
			tempStyle,
			record.get('strWaterClassName')
		);
	},
	MapChart: function(year, month) {
		Ext.getCmp('vemap').loadGeoRss('/EQPublish/Handlers/MapChartHandler.ashx?y=' + year + '&m=' + month + '&id=' + Ext.id());
		//Ext.getCmp('vemap').loadGeoRss.defer(400, Ext.getCmp('vemap'), ['<%= ResolveUrl("~/Handlers/MapChartHandler.ashx") %>?y=' + year + '&m=' + month + '&id=' + Ext.id()]);
	}
});
Ext.reg('waterdrinkpanel', EQPublish.WaterDrinkPanel);