Files
FloatBackOfffice/application/views/report/view_price_comparison_trend.php
dev-chiefworks f76abffdcd first commit
2022-05-31 16:21:53 -04:00

264 lines
11 KiB
PHP

<!-- Dashboard content -->
<div class="row">
<div class="col-12">
<div class="panel panel-white">
<div class="panel-body">
<div class="row">
<?php if (!empty($errors)): ?>
<div class="text-danger"><?php echo $errors[0] ?></div>
<?php endif; ?>
<div class="col-12">
<form method="GET" action="/report/chart">
<div class="row">
<div class="col-xs-4 col-md-3 col-lg-2">
<label for="">Period 1:</label>
<input type="text"
class="form-control date-picker"
name="start_date_1"
autocomplete="off"
readonly
placeholder="Start date"
value="<?= $filterData['start_date_1'] ?? '' ?>" >
<input type="text"
class="form-control date-picker m-t-xs"
placeholder="End date"
autocomplete="off"
readonly
name="end_date_1"
value="<?= $filterData['end_date_1'] ?? '' ?>" >
</div>
<div class="col-xs-4 col-md-3 col-lg-2">
<label for="">Period 2:</label>
<input type="text"
class="form-control date-picker"
name="start_date_2"
autocomplete="off"
readonly
placeholder="Start date"
value="<?= $filterData['start_date_2'] ?? '' ?>" >
<input type="text"
class="form-control date-picker m-t-xs"
name="end_date_2"
autocomplete="off"
readonly
placeholder="End date"
value="<?= $filterData['end_date_2'] ?? '' ?>" >
</div>
<div class="col-xs-4 col-md-3 col-lg-2">
<label for="">Transport provider:</label>
<?php foreach($transport_providers_dropdown as $transport_provider) : ?>
<div class="checkbox">
<label>
<input type="checkbox"
name="transport_providers[]"
<?php echo in_array($transport_provider['id'], $filterData['transport_providers'] ?? []) ? 'checked' : ''; ?>
value="<?php echo $transport_provider['id']?> "><?php echo $transport_provider['name'] ?>
</label>
</div>
<?php endforeach; ?>
</div>
<div class="col-xs-3 col-sm-2">
<div class="form-group">
<label for=""></label>
<div style="margin-top: 7px">
<button type="submit" class="btn-search btn btn-primary btn-sm">Search</button>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="row">
<div class="col-12" style="margin-top: 40px">
<div id="loading" class="text-center" style="display:none;">
<p><img src="/assets/images/icon/loading.gif" /> Waiting for loading...</p>
</div>
</div>
</div>
<div class="row" id="chart-section">
<div class="col-12">
<div>
<canvas id="myChart1" style="width:100%; height:700px"></canvas>
</div>
</div>
<div class="col-12" style="margin-top: 55px">
<div class="m-t-xs">
<canvas id="myChart2" style="width:100%; height:700px"></canvas>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="/assets/js/plugins/pickers/datepicker.js"></script>
<script src="/assets/js/app.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.btn-search').click(function(){
$('#chart-section').hide();
$('#loading').show();
});
addDatePicker('.date-picker');
/*********** Chart 1 ************/
var chartData1 = JSON.parse('<?php echo $chartData1 ?>');
if (!isEmpty(chartData1)) {
var ctx = document.getElementById("myChart1");
var scatterChart = new Chart(ctx, {
type: 'scatter',
data: {
datasets: chartData1.datasets
},
options: {
responsive: true,
legend: {
position: 'top'
},
title: {
display: true,
text: 'Price comparison trend'
},
scales: {
xAxes: [{
id: 'x-Period1',
position: 'bottom',
distribution: 'linear',
type: 'linear',
scaleLabel: {
display: true,
labelString: 'Period 1'
},
ticks: {
callback: function(value, index, values) {
return convertIndexToDate(chartData1.index_date_map_1, value);
},
min: 0,
max: getMax(chartData1.index_date_map_1),
autoSkip: true,
minRotation: 45,
}
}, {
id: 'x-Period2',
position: 'bottom',
distribution: 'linear',
type: 'linear',
scaleLabel: {
display: true,
labelString: 'Period 2'
},
ticks: {
callback: function(value, index, values) {
return convertIndexToDate(chartData1.index_date_map_2, value);
},
min: 0,
max: getMax(chartData1.index_date_map_2),
autoSkip: true,
minRotation: 45,
}
}],
yAxes: [{
position: 'left',
scaleLabel: {
display: true,
labelString: 'Cost'
},
}]
},
tooltips: {
callbacks: {
label: function(tooltipItem, data) {
return tooltipItem.yLabel;
}
}
}
}
});
}
/*********** Chart 2 ************/
var chartData2 = JSON.parse('<?php echo $chartData2 ?>');
if (!isEmpty(chartData2)) {
var ctx = document.getElementById("myChart2");
var scatterChart = new Chart(ctx, {
type: 'scatter',
data: {
datasets: chartData2.datasets
},
options: {
responsive: true,
legend: {
position: 'top'
},
scales: {
xAxes: [{
position: 'bottom',
distribution: 'linear',
type: 'linear',
ticks: {
callback: function(value, index, values) {
// convert index to date
return convertIndexToDate(chartData2.general_index_date_map, value);
},
min: 0,
max: getMax(chartData2.general_index_date_map),
autoSkip: true,
minRotation: 45,
}
}],
yAxes: [{
position: 'left',
scaleLabel: {
display: true,
labelString: 'Cost'
},
}]
},
tooltips: {
callbacks: {
label: function(tooltipItem, data) {
return tooltipItem.yLabel;
}
}
}
}
});
}
});
function isEmpty(obj) {
for(var key in obj) {
if(obj.hasOwnProperty(key))
return false;
}
return true;
}
function getMax(obj) {
var arr = Object.keys( obj ).map(function ( key ) { return obj[key]; });
var max = Math.max.apply( null, arr );
return max;
}
function convertIndexToDate(obj, index) {
var date = Object.keys(obj).find(key => obj[key] === index);
if (date == undefined || !date) {
return '';
}
date = moment(date, 'YYYY-MM-DD').format('D MMM, YY');
return date;
}
</script>