engelsystem/resources/assets/themes/barchart.scss

123 lines
2.4 KiB
SCSS
Raw Normal View History

.barchart {
2022-12-22 18:28:51 +01:00
--barchart-padding-left: 50px;
--barchart-bar-margin: 2%;
--barchart-group-margin: 2%;
--barchart-label-font-size: 14px;
height: 300px;
margin-bottom: map-get($spacers, 3);
margin-top: map-get($spacers, 4);
position: relative;
// enable printing backgrounds
print-color-adjust: exact;
&-20 {
// >= 20 bars
--barchart-group-margin: 0.75%;
}
&-40 {
// >= 40 bars
--barchart-bar-margin: 1px;
--barchart-bar-margin: 0.5px;
--barchart-group-margin: 0.5%;
}
&-50 {
// >= 50 bars
--barchart-bar-margin: 0.5px;
--barchart-group-margin: 0.2%;
.barchart-group:nth-child(2n) .barchart-xlabel {
// hide every second label
display: none;
}
2022-12-22 18:28:51 +01:00
}
&-graph-container {
align-items: flex-end;
display: flex;
left: var(--barchart-padding-left);
bottom: 75px;
position: absolute;
right: 0;
top: 0;
}
&-group {
align-items: flex-end;
border-right: 1px solid $gray-400;
display: flex;
flex-grow: 1;
height: 100%;
padding-left: var(--barchart-group-margin);
padding-right: var(--barchart-group-margin);
position: relative;
2022-12-22 18:28:51 +01:00
&:first-of-type {
border-left: 1px solid $gray-400;
}
2022-12-22 18:28:51 +01:00
&:last-of-type {
border-right: 1px solid $gray-400;
}
2022-12-22 18:28:51 +01:00
}
&-bar {
flex-grow: 1;
margin-left: var(--barchart-bar-margin);
margin-right: var(--barchart-bar-margin);
}
&-ygraph {
background-color: $gray-400;
height: 1px;
left: 0;
margin: 0;
opacity: 1;
position: absolute;
right: 0;
}
&-xlabel {
bottom: 0;
font-size: var(--barchart-label-font-size);
left: 50%;
line-height: 1;
position: absolute;
transform-origin: top right;
transform: translateY(100%) translateX(-100%) rotate(-45deg);
}
&-ylabel {
font-size: var(--barchart-label-font-size);
left: calc(-1 * var(--barchart-padding-left));
position: absolute;
text-align: right;
transform: translateY(50%);
width: 45px;
}
}
.barchart-legend {
2022-12-22 18:28:51 +01:00
margin-bottom: map-get($spacers, 5);
padding-left: 50px;
// enable printing backgrounds
print-color-adjust: exact;
&-item {
align-items: center;
border-left-style: solid;
border-left-width: 50px;
font-size: 14px;
display: flex;
height: 20px;
margin-bottom: 8px;
padding-left: 8px;
&:last-of-type {
margin-bottom: 0;
}
2022-12-22 18:28:51 +01:00
}
}