Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/vjeantet/hugo-theme-docport.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'layouts/partials/_skwad-header.html')
-rw-r--r--layouts/partials/_skwad-header.html181
1 files changed, 181 insertions, 0 deletions
diff --git a/layouts/partials/_skwad-header.html b/layouts/partials/_skwad-header.html
new file mode 100644
index 0000000..b0d2877
--- /dev/null
+++ b/layouts/partials/_skwad-header.html
@@ -0,0 +1,181 @@
+{{if .Params.skwad}}
+ {{ $formID := .File.UniqueID }}
+ <link rel="stylesheet" href='{{ (resources.Get "sass/checklist.scss" | resources.ExecuteAsTemplate "css/checklist.main.scss" . | toCSS).Permalink }}'>
+
+ {{if .Params.skwad.url }}
+ <script src="{{.Params.skwad.url }}x/skwad.js"></script>
+ <script type="text/javascript">
+ skwad_api_url = "/";
+ skawd_form_id = "";
+
+ $(document).ready(function () {
+ skwad.InitWithConfig({
+ formID: "{{$formID}}", // default is the first form
+ {{if eq "api" .Params.skwad.mode }}
+ {{with .Params.skwad.url}}url: "{{.}}",{{end}}
+ {{with .Params.skwad.spaceName}}spaceName: "{{.}}", {{end}} // default null, use form attribute action when not set
+ {{end}}
+ // networkIndicatorID: "skwad_spinner", // loader HTLML DOM ID
+ // documentKey: "forms/test", // when set, skwad.UseDocument('forms/flksdjml')
+ // documentKeyInParam: "_k", // when set, skwad.UseDocumentWithURLParam('_k')
+ // onSaveError: skwad.redirectTo("error.html"), // Trigger this func on Error
+ // onSaveSuccess: skwad.redirectTo("confirm.html"), // Trigger this func on Success
+ onUseDocumentError: function (err) {
+ console.log("Document not found ! error is : " + err.message);
+ },
+ //beforeFormSubmit:function(e,s){alert("before",e,s);e.preventDefault();return false},
+ //formChangeHooks: [YourFunc],
+ });
+
+ function YourFunc(progress, form) {
+ // Remove all from ul
+ // console.debug(progress)
+ $("#TableOfContents > ul li").remove();
+ let inputs;
+ for (const section in progress) {
+ inputs = progress[section].inputs;
+ const pct = Math.round(
+ (progress[section].status.valued /
+ progress[section].status.count) *
+ 100
+ );
+ const li = $("<li/>").attr("progres", pct).appendTo($("#TableOfContents > ul"));
+ // if (!isNaN(pct)) {
+ // const chk = $(
+ // '<input type="checkbox" disabled="" readonly="">'
+ // ).appendTo(li);
+ // if (pct === 100) {
+ // chk.prop("checked", true);
+ // li.addClass('cl-done');
+ // } else if (pct > 0) {
+ // chk.prop("indeterminate", true);
+ // li.addClass('cl-doing');
+ // } else {
+ // chk.prop("checked", false);
+ // li.addClass('cl-ready');
+ // }
+ // }
+
+
+
+ if (!isNaN(pct)) {
+ const chk = $(
+ '<i class="fas">'
+ ).appendTo(li);
+ if (pct === 100) {
+ chk.addClass('fa-check-circle');
+ } else if (pct > 0) {
+ chk.addClass('fa-dot-circle');
+ } else {
+ chk.prop("checked", false);
+ chk.addClass('fa-circle-notch');
+ }
+ }
+
+ // <i class="fas fa-check-circle"></i>
+ // <i class="fas fa-dot-circle"></i>
+ // <i class="fas fa-exclamation-circle"></i>
+ // <i class="fas fa-circle-notch"></i>
+
+
+ $("<a/>")
+ .attr("id", "toc-" + progress[section].id)
+ .attr("href", "#" + progress[section].ref)
+ .text(progress[section].title)
+ .appendTo(li);
+ }
+ }
+ skwad.HookOnFormChange(YourFunc);
+
+ (function scrollSpy() {
+ var OFFSET = 10;
+ var timer;
+ var headingsCache;
+
+ var findHeadings = function findHeadings() {
+ // return headingsCache || document.querySelectorAll('.TableOfContents li > a');
+ return document.querySelectorAll('.TableOfContents li > a');
+ };
+
+ var onScroll = function onScroll() {
+ if (timer) {
+ // throttle
+ return;
+ }
+
+ timer = setTimeout(function() {
+ timer = null;
+ var activeNavFound = false;
+ var headings = findHeadings(); // toc nav anchors
+
+ /**
+ * On every call, try to find header right after <-- next header
+ * the one whose content is on the current screen <-- highlight this
+ */
+
+ for (var i = 0; i < headings.length; i++) {
+ // headings[i] is current element
+ // if an element is already active, then current element is not active
+ // if no element is already active, then current element is active
+ var currNavActive = !activeNavFound;
+ /**
+ * Enter the following check up only when an active nav header is not yet found
+ * Then, check the bounding rectangle of the next header
+ * The headers that are scrolled passed will have negative bounding rect top
+ * So the first one with positive bounding rect top will be the nearest next header
+ */
+
+ if (currNavActive && i < headings.length - 1) {
+ var heading = headings[i + 1];
+ var next = decodeURIComponent(heading.href.split('#')[1]);
+ var nextHeader = document.getElementById(next);
+
+ if (nextHeader) {
+ var top = nextHeader.getBoundingClientRect().top;
+ currNavActive = top > OFFSET;
+ } else {
+ console.error('Can not find header element', {
+ id: next,
+ heading: heading,
+ });
+ }
+ }
+ /**
+ * Stop searching once a first such header is found,
+ * this makes sure the highlighted header is the most current one
+ */
+
+ if (currNavActive) {
+ activeNavFound = true;
+ headings[i].parentElement.classList.add('active');
+ } else {
+ headings[i].parentElement.classList.remove('active');
+ }
+ }
+ }, 100);
+ };
+
+ document.addEventListener('scroll', onScroll);
+ document.addEventListener('resize', onScroll);
+ // document.addEventListener('DOMContentLoaded', function() {
+ // // Cache the headings once the page has fully loaded.
+ // headingsCache = findHeadings();
+ // onScroll();
+ // });
+ })();
+ });
+ </script>
+ {{end}}
+ <form
+ method="POST" {{if eq "form" .Params.skwad.mode}}action="{{.Params.skwad.url}}"{{end}}
+ id="{{$formID}}" ref="{{with $.Params.Ref}}{{.}}{{else}}{{printf "%s-%s" $.CurrentSection.Title $formID}}{{end}}">
+
+
+ {{if eq true .Params.skwad.clientside}}
+ <div class="form-group checklist-header">
+ <label class="sr-only" for="inputFile">File Upload</label>
+ <input type="file" class="form-control-file text-primary font-weight-bold" id="inputFile" accept="application/json"
+ onchange="skwad.UseDocumentWithFile(this)" data-title="{{T "checklist-load-answers"}}">
+ </div>
+ {{end}}
+{{end}} \ No newline at end of file