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