Ext.ns('SroSiteInfo');

SroSiteInfo.RequestsHistory = Ext.extend(Ext.Panel, {
	title : 'История заявлений',
	border : false,
	layout : 'fit',
	loginned : null,
	disabled : true,
	requestCountLblId : 'request_history_lbl',
	isFired : false,
	
	initComponent : function() {
		var me = this;
		
		me.addEvents('firstshow');
		
		me.countLabel = new Ext.form.Label({
			style : 'padding-right : 5px;',
			id : me.requestCountLblId
		});
		
		me.requestStore = new Ext.data.Store({
			url : 'xml?get=requests',		
			reader : new Ext.data.XmlReader({
				record : 'request',
				idProperty : 'id'
			}, requestType()),
			listeners : {
				load : function(store) {
					if (me.loginned) {
						me.countLabel.setText('Количество: ' + me.requestStore.getCount());
					}
				}
			}
		});
		
		me.historyGrid = me.createGrid(me); 
		
		var config = {
			hidden : !me.initialConfig.loginned,
			items : me.historyGrid
		};
		
		Ext.apply(me, Ext.apply(me.initialConfig, config));
		SroSiteInfo.RequestsHistory.superclass.initComponent.apply(me, arguments);
		
		me.on('firstshow', function() {
			if (!me.isFired) {
				me.isFired = true;
			}
		}, me);
	},
	
	// private
	createGrid : function(panel) {
		var colModel = new Ext.grid.ColumnModel({
			defaultSortable : true,
			defaultWidth : 80,
			columns : [{
				header : 'Дата приёма документов',
				dataIndex : 'docsInputDate',
				renderer : function(value, metaData, record, rowIndex, colIndex, store) {
					metaData.css = 'ext-grid-panel-multiline';
					return dateRenderer(value);
				}
			}, {
				header : 'Спсособ подачи документов',
				width : 150,
				dataIndex : 'docsInputMethod',
				renderer : function(value, metaData, record, rowIndex, colIndex, store) {
					metaData.css = 'ext-grid-panel-multiline';
					return value;
				}
			}, {
				header : 'Тип заявления',
				width : 100,
				dataIndex : 'requestType',
				renderer : function(value, metaData, record, rowIndex, colIndex, store) {
					metaData.css = 'ext-grid-panel-multiline';
					return value;
				}
			}, {
				header : 'Перечень работ',
				width : 100,
				dataIndex : 'forOldWorks',
				renderer : function(val, row, rec) {
					return val ? '<b>старый</b>' : '<b>новый</b>';
				}
			}, {
				header : 'Принявший',
				dataIndex : 'accepterName',
				renderer : function(value, metaData, record, rowIndex, colIndex, store) {
					metaData.css = 'ext-grid-panel-multiline';
					return value;
				}
			}, {
				header : 'Эксперт',
				dataIndex : 'expert',
				renderer : function(value, metaData, record, rowIndex, colIndex, store) {
					metaData.css = 'ext-grid-panel-multiline';
					return value;
				}
			}, {
				header : 'Независимый эксперт',
				dataIndex : 'independentExpert',
				renderer : function(value, metaData, record, rowIndex, colIndex, store) {
					metaData.css = 'ext-grid-panel-multiline';
					return value;
				}
			}, {
				header : 'Дата составления задания эксперту',
				dataIndex : 'dateWritingTask',
				renderer : function(val) {
					return dateRenderer(val);
				}
			}, {
				header : 'Дата уплаты взноса в КФ',
				dataIndex : 'datePaymentKf',
				renderer : function(val) {
					return dateRenderer(val);
				}
			}, {
				header : 'Дата уплаты вступит. взноса',
				dataIndex : 'dateIntroPayment',
				renderer : function(val) {
					return dateRenderer(val);
				}
			}, {
				header : 'Дата выдачи задания эксперту',
				dataIndex : 'dateTaskExpert',
				renderer : function(val) {
					return dateRenderer(val);
				}
			}, {
				header : 'Дата отчета эксперта о проверке',
				dataIndex : 'dateReportExpert',
				renderer : function(val) {
					return dateRenderer(val);
				}
			}, {
				header : 'Дата решения Спец. органа',
				dataIndex : 'dateMeetingSo',
				renderer : function(val) {
					return dateRenderer(val);
				}
			}, {
				header : 'Дата передачи в Юр. отдел',
				dataIndex : 'dateTransferLawSection',
				renderer : function(val) {
					return dateRenderer(val);
				}
			}, {
				header : 'Кол-во заявленных сотрудников',
				dataIndex : 'declatedStaffCount',
				width : 60
			}, {
				header : 'Примечания',
				dataIndex : 'remarks',
				renderer : function(value, metaData, record, rowIndex, colIndex, store) {
					metaData.css = 'ext-grid-panel-multiline';
					return value;
				}
			}]
		});
		
		return new Ext.grid.GridPanel({
			ds : panel.requestStore,
			cm : colModel,
			border : false,
			loadMask : {
				msg : 'Загрузка...'
			},
			tbar : ['->', panel.countLabel]
		});
	},
	
	getStore : function() {
		return this.requestStore;
	},

	setMemberId : function(memberId){
		var me = this;	
		
		me.isFired = false;
		
		me.requestStore.baseParams = {
			memberId : memberId,
			actual : false
		};
		
		me.requestStore.load();
	}
});
