convert into Hugo module theme
This commit is contained in:
parent
b07a2a6cf5
commit
04abc92ae5
98 changed files with 2137 additions and 15971 deletions
14
assets/js/render-meta-map.js
Normal file
14
assets/js/render-meta-map.js
Normal file
|
@ -0,0 +1,14 @@
|
|||
import * as params from '@params';
|
||||
import L from 'leaflet';
|
||||
|
||||
var map = L.map('map').setView([55, -3], 13);
|
||||
|
||||
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
||||
maxZoom: 19,
|
||||
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>'
|
||||
}).addTo(map);
|
||||
|
||||
var lonLats = [];
|
||||
params.locations.forEach((location) => {
|
||||
lonLats.push(L.marker([location.lat, location.lon]).addTo(map));
|
||||
});
|
162
assets/js/roles-chart.gojs
Normal file
162
assets/js/roles-chart.gojs
Normal file
|
@ -0,0 +1,162 @@
|
|||
const display = {
|
||||
"past-unpaid": false,
|
||||
"past-paid": true,
|
||||
"current-unpaid": true,
|
||||
"current-paid": true,
|
||||
}
|
||||
|
||||
Object.keys(display).forEach(key => {
|
||||
if (!display[key]) document.getElementById(key).classList.add("legend__button--disabled")
|
||||
});
|
||||
|
||||
google.charts.load('current', {'packages':['timeline']});
|
||||
google.charts.setOnLoadCallback(drawChart);
|
||||
|
||||
Array.from(document.getElementsByClassName("legend__button")).forEach(
|
||||
el => el.addEventListener('click', toggleView, false)
|
||||
);
|
||||
|
||||
/**
|
||||
* Changes the filters to apply to the timeline chart.
|
||||
*/
|
||||
function toggleView() {
|
||||
if (this.classList.contains("legend__button--disabled")) {
|
||||
this.classList.remove("legend__button--disabled");
|
||||
} else {
|
||||
this.classList.add("legend__button--disabled");
|
||||
}
|
||||
|
||||
display[this.id] = !display[this.id];
|
||||
|
||||
drawChart();
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the roles displayed within the timeline chart.
|
||||
*/
|
||||
function drawChart() {
|
||||
var container = document.getElementById('timeline');
|
||||
var chart = new google.visualization.Timeline(container);
|
||||
var rolesTable = new google.visualization.DataTable();
|
||||
|
||||
{{- $past_unpaid := "#FFFFF0" -}}
|
||||
{{- $past_paid := "#FCFCA6" -}}
|
||||
{{- $current_unpaid := "#BBBBB0" -}}
|
||||
{{- $current_paid := "#BCBC7E" -}}
|
||||
|
||||
rolesTable.addColumn({ type: 'string', id: 'Type' });
|
||||
rolesTable.addColumn({ type: 'string', id: 'Job Title' });
|
||||
rolesTable.addColumn({ type: 'string', id: 'style', role: 'style' });
|
||||
rolesTable.addColumn({ type: 'date', id: 'Start' });
|
||||
rolesTable.addColumn({ type: 'date', id: 'End' });
|
||||
|
||||
rolesTable.addRows([
|
||||
{{ $cvPages := ( where $.Site.Pages "Type" "cv" ) -}}
|
||||
{{- range .Pages -}}
|
||||
{{- $site_show_redacted := eq $.Site.Params.redact "show" -}}
|
||||
{{- $.Scratch.Set "parents" ( slice ) -}}
|
||||
|
||||
{{- /* Concatenates all role parent(s) and organisations(s) */ -}}
|
||||
{{- with .Params.organisations -}}
|
||||
{{- range . -}}
|
||||
{{- range ( where $cvPages "Title" . ) -}}
|
||||
{{- $add_redacted := and ( and ( .Params.redact ) ( not $site_show_redacted ) ) ( eq $.Site.Params.redact "black" ) -}}
|
||||
{{- if $add_redacted -}}
|
||||
{{- $.Scratch.Set "parents" ( $.Scratch.Get "parents" | append "███████████████" ) -}}
|
||||
{{- else -}}
|
||||
{{- $.Scratch.Set "parents" ( $.Scratch.Get "parents" | append ( ( partial "cv/organisation/get_top_level_ancestor.html.tmpl" . ) | plainify ) ) -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{ erroridf "missing-organisation" "Could not find organisation %q (%q)" . $.File.Path }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $.Scratch.Set "parents_string" ( delimit ( ( $.Scratch.Get "parents" ) | uniq | sort ) " & " ) -}}
|
||||
{{- $.Scratch.Set "organisations_string" ( delimit . " & " ) -}}
|
||||
{{- end -}}
|
||||
|
||||
|
||||
{{- /* Prints a `dataRow` for each role, redacting organisations if necessary */ -}}
|
||||
{{- $has_no_parents := le ( len ( $.Scratch.Get "parents" ) ) 0 -}}
|
||||
{{- $show_role := not ( and ( or .Params.redact $has_no_parents ) ( not $site_show_redacted ) ) -}}
|
||||
{{- $show_role_organisations := not ( eq ( $.Scratch.Get "parents_string" ) ( $.Scratch.Get "organisations_string" ) ) -}}
|
||||
|
||||
{{- if $show_role -}}
|
||||
[
|
||||
{{- /* Top-level parent organisation(s) */ -}}
|
||||
"
|
||||
{{- with .Params.organisations -}}
|
||||
{{- $.Scratch.Get "parents_string" -}}
|
||||
{{- end -}}
|
||||
",
|
||||
|
||||
{{- /* Role and (optional) organisation string */ -}}
|
||||
"
|
||||
{{- if ( and ( .Params.redact ) ( not $site_show_redacted ) ) -}}
|
||||
{{- if ( eq $.Site.Params.redact "black" ) -}}
|
||||
███████████████
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- .Title | plainify -}}
|
||||
{{- if $show_role_organisations -}}
|
||||
, {{ $.Scratch.Get "organisations_string" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
",
|
||||
|
||||
{{- /* Role type (paid/unpaid) */ -}}
|
||||
"{{ if .Params.end_date -}}
|
||||
{{- if .Params.paid -}}
|
||||
{{- $past_paid -}}
|
||||
{{- else -}}
|
||||
{{- $past_unpaid -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- if .Params.paid -}}
|
||||
{{- $current_paid -}}
|
||||
{{- else -}}
|
||||
{{- $current_unpaid -}}
|
||||
{{- end -}}
|
||||
{{- end }}",
|
||||
|
||||
{{- /* Role start date */ -}}
|
||||
new Date("{{ .Date.Format "2006-01-02" }}"),
|
||||
|
||||
{{- /* Role end date */ -}}
|
||||
new Date("
|
||||
{{- if .Params.end_date -}}
|
||||
{{- .Params.end_date -}}
|
||||
{{- else -}}
|
||||
{{- now.Format "2006-01-02" -}}
|
||||
{{- end -}}
|
||||
")
|
||||
],
|
||||
{{- end -}}
|
||||
|
||||
{{- $.Scratch.Delete "parents" -}}
|
||||
{{ end -}}
|
||||
]);
|
||||
|
||||
var rolesFilteredView = new google.visualization.DataView(rolesTable);
|
||||
|
||||
var toShow = [];
|
||||
if (display["past-unpaid"]) toShow.push("{{ $past_unpaid }}");
|
||||
if (display['past-paid']) toShow.push("{{ $past_paid }}");
|
||||
if (display['current-unpaid']) toShow.push("{{ $current_unpaid }}");
|
||||
if (display['current-paid']) toShow.push("{{ $current_paid }}");
|
||||
|
||||
rolesFilteredView.setRows(rolesFilteredView.getFilteredRows([{ column: 2, test: (value, rowId, columnId, datatable) => {
|
||||
return toShow.includes(value);
|
||||
}}]));
|
||||
|
||||
var options = {
|
||||
title: 'Roles Timeline',
|
||||
height: '100%',
|
||||
chartArea: {
|
||||
width: '94%'
|
||||
},
|
||||
width: '100%',
|
||||
}
|
||||
|
||||
chart.draw(rolesFilteredView, options);
|
||||
container.setAttribute("style",`height:${document.querySelector("#timeline > div > div > div > div").offsetHeight}px`);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue