problem solved. thanks for youre help sir.
Controllers
public class ChartDataRequest
{
public string Tgl1 { get; set; }
public string Tgl2 { get; set; }
}
[HttpPost]
public List<object> GetDataChartTSDT([FromBody] ChartDataRequest requestData)
{
DateTime tgl1 = DateTime.Parse(requestData.Tgl1);
DateTime tgl2 = DateTime.Parse(requestData.Tgl2);
List<object> data = new List<object>();
// Fetch distinct KodeUnit values
List<string> distinctKodeUnits = _context.TblTimeSheetDts
.Where(ts => ts.Tgl >= tgl1 && ts.Tgl <= tgl2)
.Select(ts => ts.KodeUnit)
.Distinct()
.ToList();
// Add distinct KodeUnit values as labels
data.Add(distinctKodeUnits);
// Calculate TotalBayar for each KodeUnit
List<double> totalBayarValues = new List<double>();
foreach (string kodeUnit in distinctKodeUnits)
{
double totalBayar = _context.TblTimeSheetDts
.Where(ts => ts.Tgl >= tgl1 && ts.Tgl <= tgl2 && ts.KodeUnit == kodeUnit)
.Sum(ts => ts.Total);
totalBayarValues.Add(totalBayar);
}
// Add TotalBayar values
data.Add(totalBayarValues);
return data;
}
View
<input type="date" name="tgl1" value="2023-10-21" />
<br />
<input type="date" name="tgl2" value="2023-11-20" />
<br />
<button type="button" id="ShowChart" class="btn btn-success">Show Chart</button>
<div>
<canvas id="myChart" width="400" height="200"></canvas>
</div>
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var myChart; // Variabel untuk menyimpan instance Chart
$('#ShowChart').click(function () {
// Hancurkan chart jika sudah ada
if (myChart) {
myChart.destroy();
}
$.ajax({
url: '/TimeSheetDt/GetDataChartTSDT',
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: JSON.stringify({
tgl1: $('[name="tgl1"]').val(),
tgl2: $('[name="tgl2"]').val()
}),
success: OnSuccessResult,
error: OnErrorResult
});
function OnSuccessResult(data) {
var _data = data;
var _chartLabel = _data[0];
var _chartData = _data[1];
var barColor = ['green'];
// Tentukan ukuran font dan warna untuk label
var labelFontSize = 16; // Sesuaikan dengan ukuran yang diinginkan
var labelFontColor = 'black'; // Sesuaikan dengan warna yang diinginkan
// Tentukan ukuran font untuk data
var dataFontSize = 14; // Sesuaikan dengan ukuran yang diinginkan
// Buat chart baru setelah destroyed yang lama
myChart = new Chart('myChart', {
type: 'bar',
data: {
labels: _chartLabel,
datasets: [{
label: 'GRAFIK TAGIHAN DT',
backgroundColor: barColor,
data: _chartData
}]
},
options: {
plugins: {
title: {
display: true,
fontSize: labelFontSize,
fontColor: labelFontColor
}
},
scales: {
y: {
ticks: {
beginAtZero: true,
fontSize: dataFontSize
}
},
x: {
ticks: {
fontSize: dataFontSize
}
}
}
}
});
}
function OnErrorResult(xhr, status, error) {
// Tampilkan pesan kesalahan atau lakukan tindakan lain
console.log('Error: ' + error);
alert('Error: ' + error);
}
});
});
</script>