0
0
mirror of https://github.com/kevinpapst/kimai2.git synced 2024-12-22 12:18:29 +00:00
kevinpapst_kimai2/templates/widget/widget-yearchart.html.twig

101 lines
3.7 KiB
Twig

{% set backgroundColor = config('theme.chart.background_color') %}
{% set borderColor = config('theme.chart.border_color') %}
{% set gridColor = config('theme.chart.grid_color') %}
{% set colors = options.color|default('')|split(';') %}
{% set type = options.type|default('line') %}
{% if type not in ['line', 'bar'] %}
{% set type = 'line' %}
{% endif %}
{% if not title is empty %}
<p class="text-center">
<strong>
{{ title|trans }}
</strong>
</p>
{% endif %}
<div class="chart">
<canvas id="timeChart" style="height: {{ config('theme.chart.height') }}px;"></canvas>
</div>
<script type="text/javascript">
document.addEventListener('kimai.initialized', function() {
new Chart(
document.getElementById('timeChart').getContext('2d'), {
type: '{{ type }}',
data: {
labels: {{ month_names()|json_encode|raw }},
datasets: [
{% for yearName, year in data %}
{% set yearBackgroundColor = backgroundColor %}
{% set yearBorderColor = borderColor %}
{% if colors[loop.index-1] is defined %}
{% set yearColors = colors[loop.index-1]|split('|') %}
{% if yearColors.0 is defined and not yearColors.0 is empty %}
{% set yearBackgroundColor = yearColors.0 %}
{% set yearBorderColor = yearColors.0 %}
{% if yearColors.1 is defined and not yearColors.1 is empty %}
{% set yearBorderColor = yearColors.1 %}
{% endif %}
{% endif %}
{% endif %}
{
label : '{{ yearName }}',
backgroundColor : '{{ yearBackgroundColor }}',
borderColor : '{{ yearBorderColor }}',
pointRadius : 2,
borderWidth : 1,
pointHitRadius : 10,
lineTension : 0.3,
data : [
{% for month in year.months %}
{{ month.totalDuration|chart_duration }}
{% if not loop.last %},{% endif %}
{% endfor %}
],
realData : [
{% for month in year.months %}
'{{ month.totalDuration|duration }}'
{% if not loop.last %},{% endif %}
{% endfor %}
]
}
{% if not loop.last %},{% endif %}
{% endfor %}
]
},
options: {
maintainAspectRatio: true,
responsive: true,
scales: {
x: {
gridLines: {
display: false
}
},
y: {
gridLines: {
display: true,
color: '{{ gridColor }}',
lineWidth: 1
}
}
},
plugins: {
tooltip: {
callbacks: {
label: function(tooltipItem) {
return tooltipItem.dataset.realData[tooltipItem.dataIndex];
}
}
}
},
}
}
);
});
</script>