Initial commit
This commit is contained in:
commit
d7010daaa0
14
README.md
Normal file
14
README.md
Normal file
|
@ -0,0 +1,14 @@
|
|||
# Chimera Calendar Kiosk Setup
|
||||
|
||||
To get wifi working on NOOBS, try:
|
||||
|
||||
* https://kerneldriver.wordpress.com/2012/10/21/configuring-wpa2-using-wpa_supplicant-on-the-raspberry-pi/
|
||||
|
||||
Set up Chromium with the following plugins:
|
||||
|
||||
* Tampermonkey (for running userscripts)
|
||||
* With the kioskify-meetup-events userscript from: https://greasyfork.org/en/users/236588-zyphlar
|
||||
|
||||
Set Chromium to start on boot:
|
||||
|
||||
* Edit Startup Apps
|
185
kioskify-meetup-events.js
Normal file
185
kioskify-meetup-events.js
Normal file
|
@ -0,0 +1,185 @@
|
|||
// ==UserScript==
|
||||
// @name Kioskify Meetup.com Events
|
||||
// @version 3
|
||||
// @grant none
|
||||
// @run-at document-start
|
||||
// @match https://*.meetup.com/*events*
|
||||
// @license GNU General Public License v3.0 only
|
||||
// @supportURL https://gitlab.com/zyphlar/kioskify-meetup-events
|
||||
// @contributionURL https://gitlab.com/zyphlar/kioskify-meetup-events
|
||||
// @compatible firefox
|
||||
// @compatible chrome
|
||||
// @namespace https://greasyfork.org/users/236588
|
||||
// @description Want to show Meetup.com events on a screen 24/7? Use this script to make it look better. NOTE: if the script doesn't load, try going directly to the events url instead of browsing to it.
|
||||
// ==/UserScript==
|
||||
|
||||
// Copyright (C) 2019 zyphlar
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
"use strict";
|
||||
|
||||
function simplifyMeetup(){
|
||||
console.log("Simplifying your life...");
|
||||
|
||||
//hideElementsByClassName("groupHomeHeader"); // large group name and image at top
|
||||
hideElementsByClassName("stripe"); // all full-width "chrome" on page
|
||||
hideElementsByClassName("sticky-ontheside"); // upcoming/past/drafts widget
|
||||
hideElementsByClassName("relatedEvents"); // other events at far bottom
|
||||
|
||||
// add padding to top for scroll
|
||||
try {
|
||||
var padding = document.createElement("p");
|
||||
padding.style = "margin:400px";
|
||||
document.getElementsByClassName("eventList-list")[0].prepend(padding);
|
||||
} catch (e) { console.log(e); }
|
||||
|
||||
// add banner to header
|
||||
try {
|
||||
document.getElementsByClassName("navItem")[0].innerHTML += '<h3 style="display: inline-block;margin-left: 8em;font-size: 1.5em;vertical-align: top;">Upcoming Events</h3>';
|
||||
} catch (e) { console.log(e); }
|
||||
|
||||
// make header fixed
|
||||
try {
|
||||
document.getElementById("globalNav").style = "position: fixed; width: 100%;";
|
||||
} catch (e) { console.log(e); }
|
||||
|
||||
// add fixed footer
|
||||
try {
|
||||
var footer = document.createElement("div");
|
||||
footer.style = "position:fixed; bottom: 0; width: 100%; background: white; padding: 1em; border-top: 2px solid rgba(46,62,72,.12); text-align: center;";
|
||||
footer.innerHTML = "See details at <span style='color: #00a2c7;font-weight: 600;'>ChimeraArts.org</span> or <span style='color: #00a2c7;font-weight: 600;'>Meetup.com</span>!";
|
||||
document.getElementsByTagName("body")[0].append(footer);
|
||||
} catch (e) { console.log(e); }
|
||||
}
|
||||
|
||||
|
||||
function hideElementById(id) {
|
||||
var e = document.getElementById(id);
|
||||
if (e) {
|
||||
e.style = "display: none;";
|
||||
}
|
||||
}
|
||||
|
||||
function hideElementsByClassName(name) {
|
||||
var e = document.getElementsByClassName(name);
|
||||
for (var i=0;i<e.length;i++) {
|
||||
e[i].style = "display: none;";
|
||||
}
|
||||
}
|
||||
|
||||
function hideElementsBySelector(selector) {
|
||||
var f = document.querySelectorAll(selector);
|
||||
for (var i=0;i<f.length;i++) {
|
||||
f[i].style = "display: none;";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
function scrollMeetup(){
|
||||
var pixelsToScroll = document.documentElement.offsetHeight;
|
||||
var pixelsPerSec = 100;
|
||||
|
||||
// go to bottom slowly
|
||||
scrollToY(pixelsToScroll, pixelsPerSec, 'linearTween', function(){
|
||||
// return to top quickly
|
||||
scrollToY(0, 1000, 'linearTween', function(){
|
||||
scrollMeetup(); // set up dat sweet infinite loop
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
window.requestAnimFrame = (function(){
|
||||
return window.requestAnimationFrame ||
|
||||
window.webkitRequestAnimationFrame ||
|
||||
window.mozRequestAnimationFrame ||
|
||||
function( callback ){
|
||||
window.setTimeout(callback, 1000 / 60);
|
||||
};
|
||||
})();
|
||||
|
||||
function scrollToY(scrollTargetY, speed, easing, callback) {
|
||||
// scrollTargetY: the target scrollY property of the window
|
||||
// speed: time in pixels per second
|
||||
// easing: easing equation to use
|
||||
|
||||
var scrollY = window.scrollY || document.documentElement.scrollTop,
|
||||
scrollTargetY = scrollTargetY || 0,
|
||||
speed = speed || 2000,
|
||||
easing = easing || 'easeOutSine',
|
||||
currentTime = 0;
|
||||
|
||||
// min time .1, max time 60 minutes
|
||||
var time = Math.max(.1, Math.min(Math.abs(scrollY - scrollTargetY) / speed, 60000));
|
||||
|
||||
// easing equations from https://github.com/danro/easing-js/blob/master/easing.js
|
||||
var easingEquations = {
|
||||
linearTween: function (pos) {
|
||||
return pos;
|
||||
},
|
||||
easeOutSine: function (pos) {
|
||||
return Math.sin(pos * (Math.PI / 2));
|
||||
},
|
||||
easeInOutSine: function (pos) {
|
||||
return (-0.5 * (Math.cos(Math.PI * pos) - 1));
|
||||
},
|
||||
easeInOutQuint: function (pos) {
|
||||
if ((pos /= 0.5) < 1) {
|
||||
return 0.5 * Math.pow(pos, 5);
|
||||
}
|
||||
return 0.5 * (Math.pow((pos - 2), 5) + 2);
|
||||
}
|
||||
};
|
||||
|
||||
console.log('scroll begin');
|
||||
|
||||
// add animation loop
|
||||
function tick() {
|
||||
currentTime += 1 / 60;
|
||||
|
||||
var p = currentTime / time;
|
||||
var t = easingEquations[easing](p);
|
||||
|
||||
if (p < 1) {
|
||||
requestAnimFrame(tick);
|
||||
|
||||
window.scrollTo(0, scrollY + ((scrollTargetY - scrollY) * t));
|
||||
} else {
|
||||
console.log('scroll done');
|
||||
window.scrollTo(0, scrollTargetY);
|
||||
callback();
|
||||
}
|
||||
}
|
||||
|
||||
// call it once to get started
|
||||
tick();
|
||||
}
|
||||
|
||||
|
||||
|
||||
window.addEventListener("load", function(){
|
||||
simplifyMeetup(); // clear extra stuff
|
||||
document.scrollingElement.scrollTop = 0; // reset to top
|
||||
scrollMeetup(); // begin scroll
|
||||
});
|
||||
|
||||
//window.addEventListener("complete", simplifyMeetup);
|
||||
|
||||
setTimeout(function(){ location.reload(); }, 3600000); // reload page every hour
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user