working chart with chartjs

This commit is contained in:
2016-03-27 23:13:51 +02:00
parent 94cec1e47c
commit 3fcd234ad8
16 changed files with 9019 additions and 94 deletions
@@ -0,0 +1,60 @@
// Scales for responsive SVG containers
$ct-scales_orig: ((1), (15/16), (8/9), (5/6), (4/5), (3/4), (2/3), (5/8), (1/1.618), (3/5), (9/16), (8/15), (1/2), (2/5), (3/8), (1/3), (1/4)) !default;
$ct-scales-names_orig: (ct-square, ct-minor-second, ct-major-second, ct-minor-third, ct-major-third, ct-perfect-fourth, ct-perfect-fifth, ct-minor-sixth, ct-golden-section, ct-major-sixth, ct-minor-seventh, ct-major-seventh, ct-octave, ct-major-tenth, ct-major-eleventh, ct-major-twelfth, ct-double-octave) !default;
$ct-scales: ((9/16), (2/3));
$ct-scales-names: (ct-wide, ct-narrow);
// Container ratio
$ct-container-ratio: (1/1.618) !default;
// Text styles for labels
$ct-text-color: rgba(white, 0.8) !default;
$ct-text-size: 0.75rem !default;
$ct-text-align: flex-start !default;
$ct-text-justify: flex-start !default;
$ct-text-line-height: 1;
$ct-axis-label-color: rgba(white, 0.8) !default;
// Grid styles
$ct-grid-color: rgba(white, 0.3) !default;
$ct-grid-dasharray: 2px !default;
$ct-grid-width: 1px !default;
// Line chart properties
$ct-line-width: 2px !default;
$ct-line-dasharray: false !default;
$ct-point-size: 4px !default;
// Line chart point, can be either round or square
$ct-point-shape: round !default;
// Area fill transparency between 0 and 1
$ct-area-opacity: 0.1 !default;
// Bar chart bar width
$ct-bar-width: 10px !default;
// Donut width (If donut width is to big it can cause issues where the shape gets distorted)
$ct-donut-width: 60px !default;
// If set to true it will include the default classes and generate CSS output. If you're planning to use the mixins you
// should set this property to false
$ct-include-classes: true !default;
// If this is set to true the CSS will contain colored series. You can extend or change the color with the
// properties below
$ct-include-colored-series: $ct-include-classes !default;
// If set to true this will include all responsive container variations using the scales defined at the top of the script
$ct-include-alternative-responsive-containers: $ct-include-classes !default;
// Series names and colors. This can be extended or customized as desired. Just add more series and colors.
$ct-series-names: (a, b, c, d, e) !default;
$ct-series-colors: (
#f05b4f,
#6188e2,
#59922b,
#eacf7d,
#a748ca
) !default;
+237
View File
@@ -0,0 +1,237 @@
@import "chartist-settings";
@mixin ct-responsive-svg-container($width: 100%, $ratio: $ct-container-ratio) {
display: block;
position: relative;
width: $width;
&:before {
display: block;
float: left;
content: "";
width: 0;
height: 0;
padding-bottom: $ratio * 100%;
}
&:after {
content: "";
display: table;
clear: both;
}
> svg {
display: block;
position: absolute;
top: 0;
left: 0;
}
}
@mixin ct-align-justify($ct-text-align: $ct-text-align, $ct-text-justify: $ct-text-justify) {
align-items: $ct-text-align;
justify-content: $ct-text-justify;
// Fallback to text-align for non-flex browsers
@if ($ct-text-justify == 'flex-start') {
text-align: left;
} @else if ($ct-text-justify == 'flex-end') {
text-align: right;
} @else {
text-align: center;
}
}
@mixin ct-chart-label($ct-text-color: $ct-text-color, $ct-text-size: $ct-text-size, $ct-text-line-height: $ct-text-line-height) {
fill: $ct-text-color;
color: $ct-text-color;
font-size: $ct-text-size;
line-height: $ct-text-line-height;
}
@mixin ct-chart-grid($ct-grid-color: $ct-grid-color, $ct-grid-width: $ct-grid-width, $ct-grid-dasharray: $ct-grid-dasharray) {
stroke: $ct-grid-color;
stroke-width: $ct-grid-width;
@if ($ct-grid-dasharray) {
stroke-dasharray: $ct-grid-dasharray;
}
}
@mixin ct-chart-point($ct-point-size: $ct-point-size, $ct-point-shape: $ct-point-shape) {
stroke-width: $ct-point-size;
stroke-linecap: $ct-point-shape;
}
@mixin ct-chart-line($ct-line-width: $ct-line-width, $ct-line-dasharray: $ct-line-dasharray) {
fill: none;
stroke-width: $ct-line-width;
@if ($ct-line-dasharray) {
stroke-dasharray: $ct-line-dasharray;
}
}
@mixin ct-chart-area($ct-area-opacity: $ct-area-opacity) {
stroke: none;
fill-opacity: $ct-area-opacity;
}
@mixin ct-chart-bar($ct-bar-width: $ct-bar-width) {
fill: none;
stroke-width: $ct-bar-width;
}
//@mixin ct-chart-donut($ct-donut-width: $ct-donut-width) {
// fill: none;
// stroke-width: $ct-donut-width;
//}
@mixin ct-chart-series-color($color) {
.ct-point, .ct-line, .ct-bar /*, .ct-slice-donut*/
{
stroke: $color;
}
.ct-slice-pie, .ct-area {
fill: $color;
}
}
@mixin ct-chart(
$ct-container-ratio: $ct-container-ratio,
$ct-text-color: $ct-text-color,
$ct-text-size: $ct-text-size,
$ct-grid-color: $ct-grid-color,
$ct-grid-width: $ct-grid-width,
$ct-grid-dasharray: $ct-grid-dasharray,
$ct-point-size: $ct-point-size,
$ct-point-shape: $ct-point-shape,
$ct-line-width: $ct-line-width,
$ct-bar-width: $ct-bar-width,
//$ct-donut-width: $ct-donut-width,
$ct-series-names: $ct-series-names,
$ct-series-colors: $ct-series-colors) {
.ct-axis-title {
fill: $ct-axis-label-color;
}
// --- Label ---
.ct-label {
@include ct-chart-label($ct-text-color, $ct-text-size);
&.ct-horizontal.ct-start {
@include ct-align-justify(flex-end, flex-start);
text-anchor: start; // Fallback for browsers that don't support foreignObjects
}
&.ct-horizontal.ct-end {
@include ct-align-justify(flex-start, flex-start);
text-anchor: start;
// EDIT: added for angled horiz labels
transform: translate(-4px, 0%) rotate(45deg);
}
&.ct-vertical.ct-start {
@include ct-align-justify(flex-end, flex-end);
text-anchor: end;
transform: translate(0, 20%);
}
&.ct-vertical.ct-end {
@include ct-align-justify(flex-end, flex-start);
text-anchor: start;
}
}
.ct-chart-line .ct-label,
.ct-chart-bar .ct-label {
display: flex;
}
// --- Bar labels ---
.ct-chart-bar {
.ct-label.ct-horizontal.ct-start {
@include ct-align-justify(flex-end, center);
text-anchor: start;
}
.ct-label.ct-horizontal.ct-end {
@include ct-align-justify(flex-start, center);
text-anchor: start;
}
&.ct-horizontal-bars .ct-label {
&.ct-horizontal.ct-start {
@include ct-align-justify(flex-end, flex-start);
text-anchor: start;
}
&.ct-horizontal.ct-end {
@include ct-align-justify(flex-start, flex-start);
text-anchor: start;
}
&.ct-vertical.ct-start {
//@include ct-chart-label($ct-text-color, $ct-text-size, center, $ct-vertical-text-justify);
@include ct-align-justify(center, flex-end);
text-anchor: end;
}
&.ct-vertical.ct-end {
@include ct-align-justify(center, flex-start);
text-anchor: end;
}
}
}
.ct-grid {
@include ct-chart-grid($ct-grid-color, $ct-grid-width, $ct-grid-dasharray);
}
.ct-point {
@include ct-chart-point($ct-point-size, $ct-point-shape);
}
.ct-line {
@include ct-chart-line($ct-line-width);
}
.ct-area {
@include ct-chart-area();
}
.ct-bar {
@include ct-chart-bar($ct-bar-width);
}
//.ct-slice-donut {
// @include ct-chart-donut($ct-donut-width);
//}
@if $ct-include-colored-series {
@for $i from 0 to length($ct-series-names) {
.ct-series-#{nth($ct-series-names, $i + 1)} {
$color: nth($ct-series-colors, $i + 1);
@include ct-chart-series-color($color);
}
}
}
}
@if $ct-include-classes {
@include ct-chart();
@if $ct-include-alternative-responsive-containers {
@for $i from 0 to length($ct-scales-names) {
.#{nth($ct-scales-names, $i + 1)} {
@include ct-responsive-svg-container($ratio: nth($ct-scales, $i + 1));
}
}
}
}