From 1ab7ddee57049b499b1310a6cc89c9c5636631cf Mon Sep 17 00:00:00 2001
From: weru <fromweru@gmail.com>
Date: Mon, 21 Dec 2020 17:50:12 +0000
Subject: [PATCH] add shortcode
---
layouts/shortcodes/chart.html | 125 +++++++++++++++++++++++++++++++++++++++++
layouts/shortcodes/grid.html | 5 +
layouts/shortcodes/partial.html | 2
3 files changed, 132 insertions(+), 0 deletions(-)
diff --git a/layouts/shortcodes/chart.html b/layouts/shortcodes/chart.html
new file mode 100644
index 0000000..9afc817
--- /dev/null
+++ b/layouts/shortcodes/chart.html
@@ -0,0 +1,125 @@
+{{ $datasetKey := .Get 0 }}
+{{ $charts := .Get 1 }}
+{{ $data := index $.Page.Params $datasetKey }}
+{{- $dataURL := $data.fileLink }}
+{{- $separator := "," }}
+{{- $dataFile := getCSV $separator $dataURL }}
+
+{{- $dataCompactData := dict -}}
+{{- $activeColumn := sub $data.baseChartOn 1 }}
+{{- with .Get 2 }}
+ {{- $activeColumn = sub (int .) 1 }}
+{{- end }}
+{{- range $dataFile -}}
+ {{- $value := trim (index . $activeColumn) " " -}}
+ {{- with index $dataCompactData $value -}}
+ {{- $dataCompactData = merge $dataCompactData (dict $value (add 1 .)) -}}
+ {{- else -}}
+ {{- $dataCompactData = merge $dataCompactData (dict $value 1) -}}
+ {{- end -}}
+{{- end -}}
+
+{{- $labels := slice }}
+{{- range $key, $value := $dataCompactData }}
+ {{- $labels = append $key $labels }}
+{{- end }}
+
+{{- if in $charts "table" }}
+<script src = '{{ absURL "vendor/w3.js" }}'></script>
+<div class="table_wrap">
+ <p>
+ <input oninput="w3.filterHTML('#chartTable', '.row', this.value)" class="form_search search_field" placeholder="Filter Table Values">
+ </p>
+ <table id="chartTable">
+ <thead>
+ {{- range $index, $title := $data.columnTitles }}
+ <th onclick="w3.sortHTML('#chartTable', '.row', 'td:nth-child({{ add $index 1 }})')">{{ $title }} {{ partial "sprite" (dict "icon" "sort") . }}</th>
+ {{- end }}
+ </thead>
+
+ {{- range $dataFile }}
+ {{- $entry := . }}
+ <tr class="row">
+ {{- range $index, $_ := $data.columnTitles }}
+ <td>{{ index $entry $index }}</td>
+ {{- end }}
+ </tr>
+ {{- end }}
+ </table>
+</div>
+{{- end }}
+
+{{- $labels = split (delimit $labels ",") "," }}
+{{- $dataTally := split (delimit $dataCompactData ",") "," }}
+
+
+<link rel="stylesheet" href='{{ absURL "chart/chart.min.css" }}'/>
+<script src='{{ absURL "vendor/chart.min.js" }}'></script>
+<script>
+ Chart.platform.disableCSSInjection = true;
+ function getCanvas(id){
+ return document.getElementById(id)
+ };
+ var dataTally = {{ $dataTally }}.map(value => parseInt(value));
+ var labels = {{ $labels }};
+ var data = {
+ datasets: [{
+ data: dataTally,
+ backgroundColor: {{ $data.colors }},
+ label: "Random Data"
+ }],
+
+ labels: labels
+ };
+ var options = {};
+</script>
+
+{{- if in $charts "pie" }}
+<div class="chart">
+ <canvas id="pie{{ $datasetKey }}" width="500" height="500"></canvas>
+</div>
+<script>
+ var ctx = getCanvas('pie{{ $datasetKey }}');
+ var myPieChart = new Chart(ctx, {
+ type: 'pie',
+ data: data,
+ options: options
+ });
+</script>
+{{- end }}
+
+{{- if in $charts "bar" }}
+<div class="chart">
+ <canvas id="bar{{ $datasetKey }}" width="500" height="500"></canvas>
+</div>
+<script>
+ var ctx3 = getCanvas('bar{{ $datasetKey }}');
+ var barChart = new Chart(ctx3, {
+ type: 'bar',
+ data: data,
+ options: {
+ "scales": {
+ "yAxes": [{
+ "ticks": {
+ "beginAtZero": true
+ }
+ }]
+ }
+ }
+ });
+</script>
+{{- end }}
+
+{{ if in $charts "doughnut" }}
+<div class="chart">
+ <canvas id="doughnut{{ $datasetKey }}" width="500" height="500"></canvas>
+</div>
+<script>
+ var ctx2 = getCanvas('doughnut{{ $datasetKey }}');
+ var doughnutChart = new Chart(ctx2, {
+ type: 'doughnut',
+ data: data,
+ options: options
+ });
+</script>
+{{- end }}
diff --git a/layouts/shortcodes/grid.html b/layouts/shortcodes/grid.html
new file mode 100644
index 0000000..3406544
--- /dev/null
+++ b/layouts/shortcodes/grid.html
@@ -0,0 +1,5 @@
+{{- $grids := .Get 0 }}
+{{- $modifiers := .Get 1 }}
+<div class="grid-{{ $grids }}{{ with $modifiers }} {{ . }}{{ end }}">
+ {{ .Inner }}
+</div>
\ No newline at end of file
diff --git a/layouts/shortcodes/partial.html b/layouts/shortcodes/partial.html
new file mode 100644
index 0000000..f131b75
--- /dev/null
+++ b/layouts/shortcodes/partial.html
@@ -0,0 +1,2 @@
+{{- $partial := .Get 0 }}
+{{- partial $partial . }}
\ No newline at end of file
--
Gitblit v1.10.0