Nice dashboard
by zerrax
HTML
<script src="//cdn.rawgit.com/kimmobrunfeldt/progressbar.js/0.7.4/dist/progressbar.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.1/Chart.min.js"></script>
<div id="container">
<div id="sideMenu">
<h1>Sales Report</h1>
<ul class="menu">
<li>Main</li>
<li>Dashboard</li>
<li>Reports <span class="notification">8</span></li>
<li>Groups</li>
</ul>
<ul class="menu">
<li>Account</li>
<li>Activity</li>
<li>Messages <span class="notification">4</span></li>
<li>Downloads</li>
</ul>
<ul class="menu">
<li>Categories</li>
<li>Credit Sales <span class="colorIcon red"></span></li>
<li>Channel Sales <span class="colorIcon orange"></span></li>
<li>Direct Sales <span class="colorIcon green"></span></li>
</ul>
<div class="addCategory"><span class="plus">+</span> Add Category</div>
</div>
<div id="content">
<div id="titleBar">
<h2>Dashboard</h2>
<div id="profilePic">
<img src="http://s3-us-west-2.amazonaws.com/s.cdpn.io/153917/profile/profile-512_1.jpg" />
</div>
<span class="controls activeControl">Weekly</span>
<span class="controls">Monthly</span>
</div>
<div class="mainChart">
<canvas style="width:100%" id="salesData"></canvas>
<h2>Total Sales</h2>
<div class="clearFix"></div>
<div id="totalSales">
<div class="col">
<div id="creditSales" class="progressBar"></div>
<h3>$36,059</h3>
<span class="progressTitle">Credit Sales</span>
</div>
<div class="col">
<div id="channelSales" class="progressBar"></div>
<h3>$24,834</h3>
<span class="progressTitle">Channel Sales</span>
</div>
<div class="col">
<div id="directSales" class="progressBar"></div>
<h3>$15,650</h3>
<span class="progressTitle">Direct Sales</span>
</div>
</div>
...
CSS
@import url(http://fonts.googleapis.com/css?family=Lato:100,300,400,700);
html, body {
height: 100%;
font-family: 'Lato', sans-serif;
}
body {
background: linear-gradient(135deg, rgba(65,131,155,1) 0%,rgba(51,98,123,1) 100%);
}
* {
box-sizing: border-box;
}
#container {
display: table;
width: 80%;
background: #202b33;
margin: 60px auto;
border-radius: 4px;
overflow: hidden;
}
/* Side Bar */
#sideMenu {
width: 240px;
height: 100%;
padding: 30px;
border-right: 1px solid #111;
display: table-cell;
vertical-align: top;
color: #fff;
}
.menu {
list-style: none;
margin: 24px 0;
padding: 0;
}
.menu li {
display: block;
height: 30px;
width: 100%;
line-height: 30px;
font-size: 14px;
font-weight: 200;
color: rgba(255, 255, 255, .6);
position: relative;
}
.menu li:hover {
color: #239ae3;
}
.menu li:first-child {
height: 35px;
line-height: 35px;
font-size: 16px;
font-weight: 400;
color: #fff;
}
.addCategory {
font-size: 13px;
font-weight: 200;
color: rgba(255, 255, 255, .2);
}
.addCategory:hover {
color: #fff;
}
/* Content */
#content {
width: calc(100% - 240px);
height: 100%;
padding: 25px;
display: table-cell;
}
#titleBar {
height: 36px;
margin-bottom: 30px;
}
#profilePic {
width: 36px;
height: 36px;
border-radius: 50%;
background: #999;
float: right;
margin-top: -8px;
margin-left: 14px;
overflow: hidden;
}
#profilePic img {
width: 100%;
}
.controls {
display: block;
width: 70px;
height: 20px;
color: rgba(255, 255, 255, 0.4);
font-size: 10px;
font-weight: 300;
text-transform: uppercase;
text-align: center;
line-height: 20px;
float: right;
border-radius: 20px;
}
.activeControl {
background: rgba(255, 255, 255, 0.9);
color: #202b33;
font-weight: 600;
}
#salesData {
margin-bottom: 60px;
}
#totalSales {
height: 120px;
position: relative;
margin-top: 24px;
margin-bottom: 50px;
display: grid;
grid-template-columns: auto auto...
JavaScript
// https://dribbble.com/shots/1821178-Sales-Report?list=buckets&offset=0
// Line Chart
var ctx = document.getElementById("salesData").getContext("2d");
var gradient = ctx.createLinearGradient(0,0,700,0);
gradient.addColorStop(0, 'rgba(255, 204, 128, 1)');
gradient.addColorStop(0.5, 'rgba(255, 152, 0, 1)');
gradient.addColorStop(1, 'rgba(239, 108, 0, 1)');
var salesData = {
labels: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
datasets: [
{
label: "Front",
fillColor: "rgba(0, 0, 0, 0.15)",
strokeColor: gradient,
pointColor: gradient,
pointStrokeColor: "#202b33",
pointHighlightStroke: "rgba(225,225,225,0.9)",
data: [44, 40, 48, 55, 64, 55, 72]
},
/*{
label: "Middle",
fillColor: "rgba(255, 172, 100, 0.1)",
strokeColor: "rgba(255, 172, 100, 1)",
pointColor: "rgba(255, 172, 100, 1)",
pointStrokeColor: "#202b33",
pointHighlightStroke: "rgba(225,225,225,0.9)",
data: [1900, 1700, 2100, 3600, 2200, 2500, 2000]
},*/
{
label: "Back",
fillColor: "rgba(19, 71, 34, 0.3)",
strokeColor: "rgba(88, 188, 116, 1)",
pointColor: "rgba(88, 188, 116, 1)",
pointStrokeColor: "#202b33",
pointHighlightStroke: "rgba(225,225,225,0.9)",
data: [24, 20, 28, 35, 44, 45, 52]
}
]
};
window.myLineChart = new Chart(ctx).Line(salesData, {
pointDotRadius : 0,
pointDotStrokeWidth : 3,
datasetStrokeWidth : 10,
scaleShowVerticalLines: false,
scaleGridLineWidth : 2,
scaleShowGridLines : true,
scaleGridLineColor : "rgba(225, 255, 255, 0.02)",
scaleOverride: true,
scaleSteps: 9,
scaleStepWidth: 10,
scaleStartValue: 0,
responsive: true
});
//Credit Sales
var creditSales = new ProgressBar.Circle('#creditSales', {
color: '#e81760',
strokeWidth: 3,
trailWidth: 3,
duration: 1500,
text: {
value: '0%'
},
step: function(state, bar) {
bar.setText((bar.value() *...