Hawk/src/js/tour.js

60 lines
1.7 KiB
JavaScript
Raw Normal View History

2015-09-06 13:02:50 +00:00
const MESSAGES = {
'icon-plus': 'Create Files and Folders',
'icon-refresh': 'Refresh File List',
'icon-select': 'Select files for batch actions',
'icon-more': 'Actions used on selected files such as Copy, Delete, Move, …',
'drawer': 'Extra options, tools and links are here',
'icon-search': 'Search your storage for a certain file',
'swipe-instruction': 'Swipe from left to right to go to parent folder'
2015-09-06 13:02:50 +00:00
}
const DIALOG_HIDE_DELAY = 2000;
export default function() {
let tourRan = localStorage.getItem('tourRan');
let wrapper = document.querySelector('#wrapper');
let tour = document.querySelector('.tour-dialog');
let timeout;
let shown = 0;
if (!tourRan) {
wrapper.classList.add('tour');
let items = [...document.querySelectorAll('.tour-item')].sort((a, b) => {
return (+a.dataset.index) - (+b.dataset.index);
});
let listeners = [];
for (let item of items) {
let firstClass = item.className.slice(0, item.className.indexOf(' '));
let ev = firstClass === 'drawer' ? 'touchstart' : 'click';
item.addEventListener(ev, function listener(e) {
2015-09-06 13:02:50 +00:00
e.preventDefault();
e.stopPropagation();
clearTimeout(timeout);
listeners.push({item, listener, ev});
2015-09-06 13:02:50 +00:00
shown++;
tour.innerHTML = MESSAGES[firstClass];
timeout = setTimeout(() => {
if (shown >= items.length) {
wrapper.classList.remove('tour');
localStorage.setItem('tourRan', 'true');
for (let {item, listener, ev} of listeners) {
item.removeEventListener(ev, listener);
2015-09-06 13:02:50 +00:00
}
}
}, DIALOG_HIDE_DELAY);
});
}
}
}