1 {% extends "base.html" %}
6 <div class="col-lg-12">
8 <div class="card-header no-border-bottom">
9 <h2 class="card-title">Booking Statistics</h2>
11 <div class="card-content">
12 <div class="card-body">
13 <div class="row justify-content-md-center">
14 <div class="col-lg-4">
15 <div class="container">
16 <canvas id="util-gauge"></canvas>
19 <div class="col-4 border-left border-right">
20 <div class="container">
21 <canvas id="resources-time-series"></canvas>
24 <div class="col-lg-4">
25 <div class="container">
26 <canvas id="project-chart"></canvas>
30 <div class="row border-top">
32 <div class="container">
33 <canvas id="booking-time-series"></canvas>
37 <div class="container">
38 <canvas id="users-time-series"></canvas>
48 <script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.3/dist/Chart.min.js"></script>
51 function processTimeSeriesData(data_dict, colors) {
55 for (let key in data_dict) {
58 data: data_dict[key][1],
61 backgroundColor: colors[i],
62 borderColor: colors[i]
71 let booking_chart = document.getElementById('booking-time-series').getContext('2d');
72 let users_chart = document.getElementById('users-time-series').getContext('2d');
73 let util_chart = document.getElementById('util-gauge').getContext('2d');
74 let project_chart = document.getElementById('project-chart').getContext('2d');
75 let resources_chart = document.getElementById('resources-time-series').getContext('2d');
77 let data = {{data | safe}};
78 let booking = data['booking'];
79 let users = data['user'];
80 let projects = data['projects'];
81 let colors = data['colors'];
83 let primary_color = colors[0];
84 let secondary_color = colors[1];
85 let accent_color = colors[2];
87 let booking_config = {
96 backgroundColor: primary_color,
97 borderColor: primary_color
108 text: 'Active Bookings'
121 let resources_config = {
125 datasets: processTimeSeriesData(data['resources'], colors)
135 text: 'Booked Resources'
179 backgroundColor: primary_color,
180 borderColor: primary_color
204 let utilization_config = {
207 labels : ["In Use","Not In Use","Maitenance"],
209 label: 'Lab Utilization',
210 data : [data['utils'][0], data['utils'][1], data['utils'][2]],
219 circumference: Math.PI,
221 cutoutPercentage : 80,
224 backgroundColor: primary_color,
225 borderColor: secondary_color,
241 text: "Lab Resources Utilization"
246 let project_config = {
253 backgroundColor: primary_color,
254 borderColor: secondary_color
277 text: 'Top Represented Projects'
282 let bookingChart = new Chart(booking_chart, booking_config);
283 let usersChart = new Chart(users_chart, users_config);
284 let utilGauge = new Chart(util_chart, utilization_config);
285 let projectBars = new Chart(project_chart, project_config);
286 let resourceChart = new Chart(resources_chart, resources_config);
288 {% endblock content %}