Subversion Repositories SmartDukaan

Rev

Rev 26155 | Rev 26167 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
26053 amit.gupta 1
$(document).on('click', 'a.list-group-item', function() {
26054 amit.gupta 2
	startDate=undefined;
3
	endDate=undefined;
26063 amit.gupta 4
	reportTitle = $(this).find('h4').html();
5
	reportUrl = this.href;
26054 amit.gupta 6
	$reportModal = $('#report-modal');
26063 amit.gupta 7
	$reportModal.find('h4.modal-title').html(reportTitle);
26053 amit.gupta 8
	if($(this).data("paramslist") == undefined) {
26054 amit.gupta 9
		return true;
26053 amit.gupta 10
	} else {
11
		var paramsList = $(this).data("paramslist");
12
		paramsMap = {};
13
		renderInputDialog(paramsList);
14
		$reportModal.modal('show');
15
		return false;
16
	}
17
});
26063 amit.gupta 18
$(document).on('click', 'button.download-report', function(){
26054 amit.gupta 19
	var reportParams = {};
26153 amit.gupta 20
	var validated = true;
26134 amit.gupta 21
	$inputContainer.find("input.param,select.param").each(function(idx, inputElement) {
26054 amit.gupta 22
		var inputName = $(inputElement).attr("name");
26089 amit.gupta 23
		if(typeof inputName === "undefined" || !(inputName in paramsMap)) {
24
			console.log(inputName);
25
			return;
26
		}
27
		param = paramsMap[inputName];
26054 amit.gupta 28
		if($(inputElement).val()=="") {
26089 amit.gupta 29
			bootbox.alert(`${param.displayName} is required`);
26153 amit.gupta 30
			validated = false;
26148 amit.gupta 31
			return false;
26054 amit.gupta 32
		}
33
		if(param.type=='DATE') {
34
			reportParams[`MANUAL_${inputName}`] = startDate;
35
		} else if(param.type=='DATE_RANGE') {
36
			reportParams[`MANUAL_${inputName}_FROMDATE`] = startDate;
37
			reportParams[`MANUAL_${inputName}_TODATE`] = endDate;
38
		} else {
26137 amit.gupta 39
			if(['code', 'warehouseId'].indexOf(param.name) >= 0) {
26157 amit.gupta 40
				if(typeof $(inputElement).val() == "array") {
41
					reportParams[`MANUAL_${inputName}`] = $(inputElement).val().join(",");
42
				} else {
43
					reportParams[`MANUAL_${inputName}`] = $(inputElement).val();
44
				}
26116 amit.gupta 45
 
26089 amit.gupta 46
			} else {
47
				reportParams[`MANUAL_${inputName}`] = $(inputElement).val();
48
			}
26054 amit.gupta 49
		}
50
	});
26153 amit.gupta 51
	if(validated) {
52
		var jsonParams = JSON.stringify(reportParams);
53
		doAjaxPostDownload(reportUrl, jsonParams, `${reportTitle}.csv`);
54
	}
26063 amit.gupta 55
 
26054 amit.gupta 56
});
26053 amit.gupta 57
function renderInputDialog(paramsList) {
26054 amit.gupta 58
	$reportModal = $('div#report-modal');
59
	$inputContainer = $reportModal.find('div.modal-body');
60
	//Clear container first
61
	$inputContainer.html('');
26053 amit.gupta 62
	paramsList.forEach(function(value) {
63
		paramsMap[value.name] = value;
64
		renderInput($inputContainer, value);
65
	});
66
}
67
 
26054 amit.gupta 68
function renderInput($inputContainer, param) {
69
	console.log(param.type);
26053 amit.gupta 70
	switch (param.type) {
71
		case "DATE": {
26054 amit.gupta 72
			$inputContainer.append(`<div class="form-group">
26053 amit.gupta 73
									<label>${param.displayText}</label> 
26146 amit.gupta 74
				   	  				<input name="${param.name}" type="text" value="" class="param form-control input-sm">
26053 amit.gupta 75
								</div>`);
26063 amit.gupta 76
			$inputContainer.find(`input[name="${param.name}"]`).daterangepicker(getSingleDatePicker(),reporticoDRCallback);
77
			reporticoDRCallback(moment(), moment());
26054 amit.gupta 78
			return;
26053 amit.gupta 79
		}
80
		case "DATE_RANGE" : {
26054 amit.gupta 81
			$inputContainer.append(`<div class="form-group">
26053 amit.gupta 82
					<label>${param.displayText}</label> 
26134 amit.gupta 83
					<input name="${param.name}" type="text" value="" class="param form-control input-sm">
26053 amit.gupta 84
			</div>`);
26063 amit.gupta 85
			$inputContainer.find(`input[name="${param.name}"]`).daterangepicker(getRangedDatePicker(true),reporticoDRCallback);
86
			reporticoDRCallback(moment(), moment());
26054 amit.gupta 87
			return;
26053 amit.gupta 88
		}
89
		case "STRING": {
26142 amit.gupta 90
			if(param.name=="authId") {
26154 amit.gupta 91
				$inputContainer.append(`
92
						<input type="hidden" name="${param.name}" type="text" value="${authId}" class="param form-control input-sm">`);
26155 amit.gupta 93
			} else {
94
				$inputContainer.append(`<div class="form-group">
95
						<label>${param.displayText}</label> 
96
						<input name="${param.name}" type="text" value="" class="param form-control input-sm">
97
					</div>`);
26142 amit.gupta 98
			}
26054 amit.gupta 99
			return;
26053 amit.gupta 100
		}
101
		case "LIST" : {
26089 amit.gupta 102
			if(param.name == "code"){
103
				var arr = [];
26157 amit.gupta 104
				if(retailers.length==1) {
105
					$inputContainer.append(`<input type="hidden" name="${param.name}" type="text" value="${authId}" class="param form-control input-sm">`)
106
				} else {
107
					for(var i in retailers) {
108
						arr.push(`<option value="${retailers[i].code}">${retailers[i].displayName}-${retailers[i].code}</option>`);
109
					}
110
					var options = arr.join("");
111
					$inputContainer.append(`<div class="col-lg-2 form-group">
112
							<label>${param.displayText}</label> 
113
							<select class="param form-control input-sm" id="code" multiple="multiple" name="${param.name}">
26089 amit.gupta 114
							<option value="" disabled selected>Select Franchisee</option>
115
							${options}
26157 amit.gupta 116
							</select>
117
					</div>`);
118
 
119
					$('#code').multiselect({
120
						includeSelectAllOption: true,
121
						multiple:true,
122
						maxHeight: 200,
123
						buttonWidth: '180px',
124
						numberDisplayed: 1,
125
						nonSelectedText: 'Franchisee',
126
						nSelectedText: ' - Franchisees Selected',
127
						allSelectedText: 'All Franchisees',
128
						enableFiltering: true,
129
						enableCaseInsensitiveFiltering : true
130
					});
131
				}
26116 amit.gupta 132
			} else if(param.name == "warehouseId"){
26134 amit.gupta 133
				var arr = [];
134
				for(var i in warehouses) {
135
					arr.push(`<option value="${i}">${warehouses[i]}</option>`);
136
				}
137
				var options = arr.join("");
138
				$inputContainer.append(`<div class="col-lg-2 form-group">
139
						<label>${param.displayText}</label> 
140
						<select class="param form-control input-sm" id="code" multiple="multiple" name="${param.name}">
141
						<option value="" disabled selected>Select Warehouses</option>
142
						${options}
143
						</select>
144
				</div>`);
145
 
146
				$('#code').multiselect({
147
					includeSelectAllOption: true,
148
					multiple:true,
149
					maxHeight: 200,
150
					buttonWidth: '180px',
151
					numberDisplayed: 1,
152
					nonSelectedText: 'Warehouses',
153
					nSelectedText: ' - Warehouse Selected',
154
					allSelectedText: 'All Warehouses',
155
					enableFiltering: true,
156
					enableCaseInsensitiveFiltering : true
157
				});
158
			} else {
26089 amit.gupta 159
				$inputContainer.append(`<div class="form-group">
160
						<label>${param.displayText}(Comma Separated)</label> 
26134 amit.gupta 161
						<input name="${param.name}" type="text" value="" class="param form-control input-sm">
26089 amit.gupta 162
				</div>`);
163
			}
26054 amit.gupta 164
			return;
26053 amit.gupta 165
		}
166
	}
167
}