483 lines
12 KiB
HTML
483 lines
12 KiB
HTML
{% extends "layouts/base.html" %}
|
|
|
|
{% block title %} Dashboard {% endblock %}
|
|
|
|
<!-- Specific Page CSS goes HERE -->
|
|
{% block stylesheets %}{% endblock stylesheets %}
|
|
|
|
{% block content %}
|
|
|
|
<main class="content">
|
|
|
|
<div class="container-fluid p-0">
|
|
|
|
<div class="row mb-2 mb-xl-3">
|
|
<div class="col-auto d-none d-sm-block">
|
|
<h3><strong>Analytics</strong> Dashboard</h3>
|
|
</div>
|
|
|
|
<div class="col-auto ml-auto text-right mt-n1">
|
|
<nav aria-label="breadcrumb">
|
|
<ol class="breadcrumb bg-transparent p-0 mt-1 mb-0">
|
|
<li class="breadcrumb-item"><a href="{{ url_for('home_blueprint.show_ws') }}">Workspaces</a></a>
|
|
</li>
|
|
<li class="breadcrumb-item"><a href="#">Dashboards</a></li>
|
|
<li class="breadcrumb-item active" aria-current="page">Analytics</li>
|
|
</ol>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-xl-6 col-xxl-5 d-flex">
|
|
<div class="w-100">
|
|
<div class="row">
|
|
<div class="col-sm-6">
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<h5 class="card-title mb-4">Sales</h5>
|
|
<h1 class="mt-1 mb-3">2.382</h1>
|
|
<div class="mb-1">
|
|
<span class="text-danger"> <i class="mdi mdi-arrow-bottom-right"></i> -3.65%
|
|
</span>
|
|
<span class="text-muted">Since last week</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<h5 class="card-title mb-4">Visitors</h5>
|
|
<h1 class="mt-1 mb-3">14.212</h1>
|
|
<div class="mb-1">
|
|
<span class="text-success"> <i class="mdi mdi-arrow-bottom-right"></i> 5.25%
|
|
</span>
|
|
<span class="text-muted">Since last week</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<h5 class="card-title mb-4">Earnings</h5>
|
|
<h1 class="mt-1 mb-3">$21.300</h1>
|
|
<div class="mb-1">
|
|
<span class="text-success"> <i class="mdi mdi-arrow-bottom-right"></i> 6.65%
|
|
</span>
|
|
<span class="text-muted">Since last week</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<h5 class="card-title mb-4">Orders</h5>
|
|
<h1 class="mt-1 mb-3">64</h1>
|
|
<div class="mb-1">
|
|
<span class="text-danger"> <i class="mdi mdi-arrow-bottom-right"></i> -2.25%
|
|
</span>
|
|
<span class="text-muted">Since last week</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-xl-6 col-xxl-7">
|
|
<div class="card flex-fill w-100">
|
|
<div class="card-header">
|
|
|
|
<h5 class="card-title mb-0">Recent Movement</h5>
|
|
</div>
|
|
<div class="card-body py-3">
|
|
<div class="chart chart-sm">
|
|
<canvas id="chartjs-dashboard-line"></canvas>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-12 col-md-6 col-xxl-3 d-flex order-2 order-xxl-3">
|
|
<div class="card flex-fill w-100">
|
|
<div class="card-header">
|
|
|
|
<h5 class="card-title mb-0">Browser Usage</h5>
|
|
</div>
|
|
<div class="card-body d-flex">
|
|
<div class="align-self-center w-100">
|
|
<div class="py-3">
|
|
<div class="chart chart-xs">
|
|
<canvas id="chartjs-dashboard-pie"></canvas>
|
|
</div>
|
|
</div>
|
|
|
|
<table class="table mb-0">
|
|
<tbody>
|
|
<tr>
|
|
<td>Chrome</td>
|
|
<td class="text-right">4306</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Firefox</td>
|
|
<td class="text-right">3801</td>
|
|
</tr>
|
|
<tr>
|
|
<td>IE</td>
|
|
<td class="text-right">1689</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 col-md-12 col-xxl-6 d-flex order-3 order-xxl-2">
|
|
<div class="card flex-fill w-100">
|
|
<div class="card-header">
|
|
|
|
<h5 class="card-title mb-0">Real-Time</h5>
|
|
</div>
|
|
<div class="card-body px-4">
|
|
<div id="world_map" style="height:350px;"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 col-md-6 col-xxl-3 d-flex order-1 order-xxl-1">
|
|
<div class="card flex-fill">
|
|
<div class="card-header">
|
|
|
|
<h5 class="card-title mb-0">Calendar</h5>
|
|
</div>
|
|
<div class="card-body d-flex">
|
|
<div class="align-self-center w-100">
|
|
<div class="chart">
|
|
<div id="datetimepicker-dashboard"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-12 col-lg-8 col-xxl-9 d-flex">
|
|
<div class="card flex-fill">
|
|
<div class="card-header">
|
|
|
|
<h5 class="card-title mb-0">Latest Projects</h5>
|
|
</div>
|
|
<table class="table table-hover my-0">
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th class="d-none d-xl-table-cell">Start Date</th>
|
|
<th class="d-none d-xl-table-cell">End Date</th>
|
|
<th>Status</th>
|
|
<th class="d-none d-md-table-cell">Assignee</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>Project Apollo</td>
|
|
<td class="d-none d-xl-table-cell">01/01/2020</td>
|
|
<td class="d-none d-xl-table-cell">31/06/2020</td>
|
|
<td><span class="badge bg-success">Done</span></td>
|
|
<td class="d-none d-md-table-cell">Vanessa Tucker</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Project Fireball</td>
|
|
<td class="d-none d-xl-table-cell">01/01/2020</td>
|
|
<td class="d-none d-xl-table-cell">31/06/2020</td>
|
|
<td><span class="badge bg-danger">Cancelled</span></td>
|
|
<td class="d-none d-md-table-cell">William Harris</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Project Hades</td>
|
|
<td class="d-none d-xl-table-cell">01/01/2020</td>
|
|
<td class="d-none d-xl-table-cell">31/06/2020</td>
|
|
<td><span class="badge bg-success">Done</span></td>
|
|
<td class="d-none d-md-table-cell">Sharon Lessman</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Project Nitro</td>
|
|
<td class="d-none d-xl-table-cell">01/01/2020</td>
|
|
<td class="d-none d-xl-table-cell">31/06/2020</td>
|
|
<td><span class="badge bg-warning">In progress</span></td>
|
|
<td class="d-none d-md-table-cell">Vanessa Tucker</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Project Phoenix</td>
|
|
<td class="d-none d-xl-table-cell">01/01/2020</td>
|
|
<td class="d-none d-xl-table-cell">31/06/2020</td>
|
|
<td><span class="badge bg-success">Done</span></td>
|
|
<td class="d-none d-md-table-cell">William Harris</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Project X</td>
|
|
<td class="d-none d-xl-table-cell">01/01/2020</td>
|
|
<td class="d-none d-xl-table-cell">31/06/2020</td>
|
|
<td><span class="badge bg-success">Done</span></td>
|
|
<td class="d-none d-md-table-cell">Sharon Lessman</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Project Romeo</td>
|
|
<td class="d-none d-xl-table-cell">01/01/2020</td>
|
|
<td class="d-none d-xl-table-cell">31/06/2020</td>
|
|
<td><span class="badge bg-success">Done</span></td>
|
|
<td class="d-none d-md-table-cell">Christina Mason</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Project Wombat</td>
|
|
<td class="d-none d-xl-table-cell">01/01/2020</td>
|
|
<td class="d-none d-xl-table-cell">31/06/2020</td>
|
|
<td><span class="badge bg-warning">In progress</span></td>
|
|
<td class="d-none d-md-table-cell">William Harris</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 col-lg-4 col-xxl-3 d-flex">
|
|
<div class="card flex-fill w-100">
|
|
<div class="card-header">
|
|
|
|
<h5 class="card-title mb-0">Monthly Sales</h5>
|
|
</div>
|
|
<div class="card-body d-flex w-100">
|
|
<div class="align-self-center chart chart-lg">
|
|
<canvas id="chartjs-dashboard-bar"></canvas>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</main>
|
|
|
|
{% endblock content %}
|
|
|
|
<!-- Specific Page JS goes HERE -->
|
|
{% block javascripts %}
|
|
|
|
<script>
|
|
document.addEventListener("DOMContentLoaded", function () {
|
|
var ctx = document.getElementById("chartjs-dashboard-line").getContext("2d");
|
|
var gradient = ctx.createLinearGradient(0, 0, 0, 225);
|
|
gradient.addColorStop(0, "rgba(215, 227, 244, 1)");
|
|
gradient.addColorStop(1, "rgba(215, 227, 244, 0)");
|
|
// Line chart
|
|
new Chart(document.getElementById("chartjs-dashboard-line"), {
|
|
type: "line",
|
|
data: {
|
|
labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
|
|
datasets: [{
|
|
label: "Sales ($)",
|
|
fill: true,
|
|
backgroundColor: gradient,
|
|
borderColor: window.theme.primary,
|
|
data: [
|
|
2115,
|
|
1562,
|
|
1584,
|
|
1892,
|
|
1587,
|
|
1923,
|
|
2566,
|
|
2448,
|
|
2805,
|
|
3438,
|
|
2917,
|
|
3327
|
|
]
|
|
}]
|
|
},
|
|
options: {
|
|
maintainAspectRatio: false,
|
|
legend: {
|
|
display: false
|
|
},
|
|
tooltips: {
|
|
intersect: false
|
|
},
|
|
hover: {
|
|
intersect: true
|
|
},
|
|
plugins: {
|
|
filler: {
|
|
propagate: false
|
|
}
|
|
},
|
|
scales: {
|
|
xAxes: [{
|
|
reverse: true,
|
|
gridLines: {
|
|
color: "rgba(0,0,0,0.0)"
|
|
}
|
|
}],
|
|
yAxes: [{
|
|
ticks: {
|
|
stepSize: 1000
|
|
},
|
|
display: true,
|
|
borderDash: [3, 3],
|
|
gridLines: {
|
|
color: "rgba(0,0,0,0.0)"
|
|
}
|
|
}]
|
|
}
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
<script>
|
|
document.addEventListener("DOMContentLoaded", function () {
|
|
// Pie chart
|
|
new Chart(document.getElementById("chartjs-dashboard-pie"), {
|
|
type: "pie",
|
|
data: {
|
|
labels: ["Chrome", "Firefox", "IE"],
|
|
datasets: [{
|
|
data: [4306, 3801, 1689],
|
|
backgroundColor: [
|
|
window.theme.primary,
|
|
window.theme.warning,
|
|
window.theme.danger
|
|
],
|
|
borderWidth: 5
|
|
}]
|
|
},
|
|
options: {
|
|
responsive: !window.MSInputMethodContext,
|
|
maintainAspectRatio: false,
|
|
legend: {
|
|
display: false
|
|
},
|
|
cutoutPercentage: 75
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
<script>
|
|
document.addEventListener("DOMContentLoaded", function () {
|
|
// Bar chart
|
|
new Chart(document.getElementById("chartjs-dashboard-bar"), {
|
|
type: "bar",
|
|
data: {
|
|
labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
|
|
datasets: [{
|
|
label: "This year",
|
|
backgroundColor: window.theme.primary,
|
|
borderColor: window.theme.primary,
|
|
hoverBackgroundColor: window.theme.primary,
|
|
hoverBorderColor: window.theme.primary,
|
|
data: [54, 67, 41, 55, 62, 45, 55, 73, 60, 76, 48, 79],
|
|
barPercentage: .75,
|
|
categoryPercentage: .5
|
|
}]
|
|
},
|
|
options: {
|
|
maintainAspectRatio: false,
|
|
legend: {
|
|
display: false
|
|
},
|
|
scales: {
|
|
yAxes: [{
|
|
gridLines: {
|
|
display: false
|
|
},
|
|
stacked: false,
|
|
ticks: {
|
|
stepSize: 20
|
|
}
|
|
}],
|
|
xAxes: [{
|
|
stacked: false,
|
|
gridLines: {
|
|
color: "transparent"
|
|
}
|
|
}]
|
|
}
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
<script>
|
|
document.addEventListener("DOMContentLoaded", function () {
|
|
var markers = [{
|
|
coords: [31.230391, 121.473701],
|
|
name: "Shanghai"
|
|
},
|
|
{
|
|
coords: [28.704060, 77.102493],
|
|
name: "Delhi"
|
|
},
|
|
{
|
|
coords: [6.524379, 3.379206],
|
|
name: "Lagos"
|
|
},
|
|
{
|
|
coords: [35.689487, 139.691711],
|
|
name: "Tokyo"
|
|
},
|
|
{
|
|
coords: [23.129110, 113.264381],
|
|
name: "Guangzhou"
|
|
},
|
|
{
|
|
coords: [40.7127837, -74.0059413],
|
|
name: "New York"
|
|
},
|
|
{
|
|
coords: [34.052235, -118.243683],
|
|
name: "Los Angeles"
|
|
},
|
|
{
|
|
coords: [41.878113, -87.629799],
|
|
name: "Chicago"
|
|
},
|
|
{
|
|
coords: [51.507351, -0.127758],
|
|
name: "London"
|
|
},
|
|
{
|
|
coords: [40.416775, -3.703790],
|
|
name: "Madrid "
|
|
}
|
|
];
|
|
var map = new JsVectorMap({
|
|
map: "world",
|
|
selector: "#world_map",
|
|
zoomButtons: true,
|
|
markers: markers,
|
|
markerStyle: {
|
|
initial: {
|
|
r: 9,
|
|
strokeWidth: 7,
|
|
stokeOpacity: .4,
|
|
fill: window.theme.primary
|
|
},
|
|
hover: {
|
|
fill: window.theme.primary,
|
|
stroke: window.theme.primary
|
|
}
|
|
}
|
|
});
|
|
window.addEventListener("resize", () => {
|
|
map.updateSize();
|
|
});
|
|
});
|
|
</script>
|
|
<script>
|
|
document.addEventListener("DOMContentLoaded", function () {
|
|
document.getElementById("datetimepicker-dashboard").flatpickr({
|
|
inline: true,
|
|
prevArrow: "<span class=\"fas fa-chevron-left\" title=\"Previous month\"></span>",
|
|
nextArrow: "<span class=\"fas fa-chevron-right\" title=\"Next month\"></span>",
|
|
});
|
|
});
|
|
</script>
|
|
|
|
{% endblock javascripts %} |