summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/presentation-factory.js67
1 files changed, 67 insertions, 0 deletions
diff --git a/scripts/presentation-factory.js b/scripts/presentation-factory.js
new file mode 100644
index 0000000..0a36ad1
--- /dev/null
+++ b/scripts/presentation-factory.js
@@ -0,0 +1,67 @@
+
+const presentationFactory = (setup) => {
+
+ return {
+ setup : {},
+ presentation: {
+ html: '',
+ css: '',
+ swiper: {}
+ },
+
+ init: function (s) {
+ this.setup = s;
+ },
+
+ prepare: function() {
+ let html = [];
+ let css = [];
+
+ this.setup.forEach( (slide, i) => {
+ slideHtml = `
+ <div class="swiper-slide" data-id="${i}">
+ <img src="${slide.image}" />
+ `;
+ if (slide.poi && Array.isArray(slide.poi)) {
+ let slideClass = `f-${i}-${j}`;
+ slide.poi.forEach( (poi, j) => {
+
+ if (poi.link) {
+ slideHtml += `<div class="${slideClass}">
+ <a href="${poi.link}">${poi.text}</a>
+ </div>`;
+
+ } else {
+ slideHtml += `<div class="f-${i}-${j}">
+ ${poi.text}
+ </div>`;
+ }
+
+ if (poi.style) {
+ poi.style.forEach( rs => { // ruleset
+ css.push(`.${slideClass} ${rs}`);
+ });
+ }
+ })
+ }
+ slideHtml += '</div>';
+ html.push(slideHtml);
+ });
+ this.presentation.html = html.join('\n');
+ this.css = css.join('\n');
+
+ return this;
+ },
+
+ apply: function() {
+ document.querySelector(setup.selector).innerHTML = this.presentation.html;
+ let swiper = new Swiper(this.presentation.swiper);
+
+ console.info('presentation is ready!');
+ return this;
+ }
+
+
+
+ }
+} \ No newline at end of file