download csv with datepicker

by Maxim Mazurok

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>


<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>

<script type="text/javascript" src="https://github.com/douglascrockford/JSON-js/raw/master/json2.js"></script>



    <ol class="breadcrumb">data from date : <input type="text" name="datefilter" value="" /></ol>
    <p>Click this button to download all data from node 1</p>
  <div>
    <button id="button1" class="button"><span>Download</span></button>
  </div>

JavaScript

let GlobalFilteredData;

$(function () {

	$('input[name="datefilter"]').daterangepicker({
		showDropdowns: true,
		autoUpdateInput: false,
		locale: {
			cancelLabel: 'Clear'
		}
	});

	$('input[name="datefilter"]').on('apply.daterangepicker', function (ev, picker) {
		$(this).val(picker.startDate.format('YYYY-MM-DD') + ' - ' + picker.endDate.format('YYYY-MM-DD'));
		var startDate = picker.startDate.format('YYYY-MM-DD');
		var endDate = picker.endDate.format('YYYY-MM-DD');
		if (startDate != '' && endDate != '') {
			console.log(startDate, endDate);
			var endpoint = 'https://gmlews.com/api/data/?node_id=1';

			$.ajax({
				method: "GET",
				url: endpoint,
				data: {
					startDate: startDate,
					endDate: endDate
				},
				success: function (data) {
					var data = data;
					let filteredData = _.filter(data, function (data) {
						return (data.timestamp > startDate &&
							data.timestamp < endDate)
					});
					GlobalFilteredData = filteredData;
					console.log(filteredData);
				} //function(data)end
			}) //ajax end
		} //if function end

		$('input[name="datefilter"]').on('cancel.daterangepicker', function (ev, picker) {
			$(this).val('');
		});

	}); //apply button end

	// JSON to CSV Converter
	function ConvertToCSV(objArray) {
		var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
		var str = '';

		for (var i = 0; i < array.length; i++) {
			var line = '';
			for (var index in array[i]) {
				if (line != '') line += ','

				line += array[i][index];
			}

			str += line + '\r\n';
		}

		return str;
	}
	//download button
	$("#button1").on('click', function (e) {
		var jsonObject = JSON.stringify(GlobalFilteredData);
		let csv = ConvertToCSV(jsonObject);
    console.log(csv);
	})

}); //js function end