summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--index.html54
-rw-r--r--js/.index.js.swpbin45056 -> 40960 bytes
-rw-r--r--js/index.js143
3 files changed, 142 insertions, 55 deletions
diff --git a/index.html b/index.html
index f53a5f3..a831a79 100644
--- a/index.html
+++ b/index.html
@@ -27,15 +27,41 @@
<title>WvS VPlan</title>
</head>
<body>
- <div class="app">
- <div data-role="tabs" id="vplantabs">
+ <div data-role="page" id="mainpage">
+ <div data-role="panel" id="settingspanel" data-display="push">
+ <h3>Einstellungen</h3>
+ <label for="notifydate">Benachrichtigen zur Uhrzeit:</label>
+ <input type="time" id="notifydate" data-mini="true" placeholder="18:00">
+
+ <label for="notifydayflip">Am Tag vorher benachrichtigen:</label>
+ <select id="notifydayflip" data-role="slider" data-mini="true" >
+ <option value="1">Nein</option>
+ <option value="0">Ja</option>
+ </select>
+
+ <label for="addclass">Benachrichtigen auch für Klasse(n):</label>
+ <textarea id="addclass" data-mini="true"></textarea>
+
+ <label for="dntflip">Zu Statistiken beitragen:</label>
+ <select id="dntflip" data-role="slider" data-mini="true">
+ <option value="true">Nein</option>
+ <option value="false">Ja</option>
+ </select>
+ </div> <!-- settingspanel -->
+
+ <div data-role="header">
+ <h1>WvS VPlan</h1>
+ <a href="#settingspanel" class="ui-btn ui-icon-gear ui-btn-icon-notext ui-corner-all" onclick="javascript:track('ui/settings');"></a>
+ </div>
+
+ <div data-role="tabs" id="vplantabs" class="ui-content tablist-content">
<div data-role="navbar" id="vplannavbar">
<ul>
<li onclick="javascript:track('ui/tab/login');"><a href="#login">Login</a></li>
</ul>
</div>
- <div id="login" class="ui-content">
+ <div id="login">
<div data-role="popup" id="disclaimerpopup" data-theme="a" data-dismissible>
<p>Copyright (C) 2014<br>
<br>
@@ -69,7 +95,7 @@
</div>
</div> <!-- loginpopup -->
- <div style="text-align: center" id="noplans" style="display:none">Es sind noch keine Pläne verfügbar.</div>
+ <div style="text-align: center" id="noplans" style="display:none"><p>Es sind noch keine Pläne verfügbar.</p></div>
<div style="text-align: center"><a id="lnklogin" href="#loginpopup" data-rel="popup" data-role="button" data-position-to="window" data-inline="true" data-transition="pop" onclick="javascript:track('ui/tab/login/loginpopup');">Bitte logge dich ein!</a></div>
<div style="text-align: center; display: none"><a id="lnkdisclaimer" href="#disclaimerpopup" data-rel="popup" data-role="button" data-position-to="window" data-inline="true" data-transition="pop" onclick="javascript:track('ui/tab/login/disclaimerpopup');">Über</a></div>
</div>
@@ -83,26 +109,6 @@
<script tpye="text/javascript" src="js/moment-with-langs.min.js"></script>
<script type="text/javascript" src="js/piwik.js"></script>
- <script type="text/javascript">
- /* Sprache setzen */
- moment.lang('de');
-
- /* Nutzungsstatistiken */
- var _paq = _paq || [];
-
- var dnt = window.localStorage.getItem('dnt');
-
- if(dnt == 'undefined' || dnt == null || dnt == ''){
- dnt = false;
- }
-
- _paq.push(['setDoNotTrack', dnt]);
- _paq.push(['setTrackerUrl', 'http://klimaag.***REMOVED***/piwik/piwik.php']); // TODO Https wäre schön.
- _paq.push(['setSiteId', 5]);
-
- console.log('Piwik initialisiert');
- </script>
-
<script type="text/javascript" src="js/index.js"></script>
</body>
</html>
diff --git a/js/.index.js.swp b/js/.index.js.swp
index 29d33a5..1792131 100644
--- a/js/.index.js.swp
+++ b/js/.index.js.swp
Binary files differ
diff --git a/js/index.js b/js/index.js
index 014d057..13ab09a 100644
--- a/js/index.js
+++ b/js/index.js
@@ -16,10 +16,13 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-function setDNT(dnt){
- _paq.push(['setDoNotTrack', dnt])
- window.localStorage.setItem('dnt', dnt);
+function setDNT(dntrack){
+ dntrack = dntrack.toString();
+
+ _paq.push(['setDoNotTrack', dntrack])
+ localStorage.setItem('dntrack', dntrack);
$('#disclaimerpopup').popup('close');
+ $('#dntflip').val(dntrack);
}
function track(what){
@@ -32,6 +35,13 @@ function trackPlan(vdate){
track('plan/' + vdate.format('YYYY/MM/DD'));
}
+$('#settingspanel').on('panelclose', function(){
+ localStorage.setItem('dntrack', $('#dntflip').val());
+ localStorage.setItem('classes', $('#addclass').val().toUpperCase());
+ localStorage.setItem('notifyday', $('#notifydayflip').val());
+ localStorage.setItem('notifydate', $('#notifydate').val());
+});
+
document.addEventListener('pause', function(){
track('event/pause');
});
@@ -40,15 +50,57 @@ document.addEventListener('resume', function(){
track('event/resume');
});
+var _paq = _paq || [];
+$('#mainpage').on('pagebeforeshow', function(){
+ /* Sprache setzen */
+ moment.lang('de');
+
+ /* Nutzungsstatistiken */
+ _paq.push(['setTrackerUrl', 'http://klimaag.***REMOVED***/piwik/piwik.php']); // TODO Https wäre schön.
+ _paq.push(['setSiteId', 5]);
+
+ console.log('Piwik initialisiert');
+
+ /* gespeicherte Daten laden */
+ var dntrack = localStorage.getItem('dntrack');
+ var additionalClasses = localStorage.getItem('classes');
+ var notifyDay = localStorage.getItem('notifyday');
+ var notifyDate = localStorage.getItem('notifydate');
+
+ if(dntrack == null || dntrack.length === 0){
+ dntrack = 'false';
+ }
+ $('#dntflip').val(dntrack).slider('refresh');
+
+ if(additionalClasses == null || additionalClasses.length === 0){
+ additionalClasses = '';
+ }
+ $('#addclass').val(additionalClasses).textinput('refresh');
+
+ if(notifyDay == null || notifyDay.length === 0){
+ notifyDay = 0;
+ }
+ $('#notifydayflip').val(notifyDay).slider('refresh');
+
+ if(notifyDate == null || notifyDate.length === 0){
+ notifyDate = '18:00';
+ }
+ $('#notifydate').val(notifyDate).textinput('refresh');
+
+ /* Piwik initialisieren */
+ _paq.push(['setDoNotTrack', dntrack]);
+});
+
// Login-Popup beim Start
document.addEventListener('deviceready', function(){
+ /* los geht's */
_paq.push(['setCustomVariable', 1, 'Modell', device.model, 'visit']);
_paq.push(['setCustomVariable', 2, 'Version', device.version, 'visit']);
track('event/load');
- var dnt = window.localStorage.getItem('dnt');
+ var dntrack = localStorage.getItem('dntrack');
- if(dnt == 'undefined' || dnt == null || dnt == ''){
+ if(dntrack == null || dntrack.length === 0){
setTimeout(function(){
$('#lnkdisclaimer').click();
}, 2000);
@@ -72,15 +124,15 @@ $('#disclaimerpopup').on('popupafterclose', function(){
/* füllt die Loginform mit gespeicherten Werten */
function fillform(){
- var username = window.localStorage.getItem('username');
+ var username = localStorage.getItem('username');
- if(username !== 'undefined' && username != null && username != ''){
+ if(username != null && username.length !== 0){
$('#username').val(username);
}
- var password = window.localStorage.getItem('password');
+ var password = localStorage.getItem('password');
- if(password !== 'undefined' && password != null && password != ''){
+ if(password != null && password.length !== 0){
$('#password').val(password);
}
}
@@ -88,7 +140,7 @@ function fillform(){
/* benachrichtigt den Benutzer an vdate mit msg */
var notifications = 0;
function addNotification(vdate, msg){
- vdate.subtract('days', 1); // Ein Tag vorher, 18 Uhr benachrichtigen
+ vdate.subtract('days', $('#notifydayflip').val()); // Bei Bedarf einen Tag vorher
var secondsUntilDate = moment.diff(vdate, 'seconds');
@@ -124,6 +176,25 @@ function addSocialButton(vdate, msg, $div){
}
}
+function checkeKlasse(nutzerklasse, klasse){
+ var subklassen = nutzerklasse.match(/(\d{1,2})([ABCD])/);
+ var wichtig = true;
+
+ if(klasse.indexOf(nutzerklasse) == -1){
+ if(subklassen !== null){
+ for(j = 1; j < subklassen.length; j++){ // Wenn alle Buchstaben der Klasse in der Vertretung vorkommen
+ if(klasse.indexOf(subklassen[j]) == -1){
+ wichtig = false;
+ }
+ }
+ }else{
+ wichtig = false;
+ }
+ }
+
+ return wichtig;
+}
+
/* konvertiert die extrahierten Strings in ein lesbares Format und filtert nach relevanten Vertretungen */
function parseVertretungen(str, username){
var vertretungen_re = new RegExp('(\\w+)\\s+(\\d(?:\\s+-\\s+\\d)?)\\s+((?:x\\s+)?)(\\+|\\w+|---)\\s+(\\w+|---)\\s+(\\w+|---)\\s+(.*?)\\s+(\\w+)(?:\\s+)?(.*?)');
@@ -131,7 +202,6 @@ function parseVertretungen(str, username){
var vertretungen = [];
var nutzerklasse = username.match(/(\w+)_.*/)[1].toUpperCase();
- var subklassen = nutzerklasse.match(/(\d{1,2})([ABCD])/);
str.split('\n').forEach(function(vertretungsstr){
res = vertretungsstr.match(vertretungen_re)
@@ -147,18 +217,22 @@ function parseVertretungen(str, username){
var lehrer = res[8];
var info = res[9];
- if(klasse.indexOf(nutzerklasse) == -1){
- var wichtig = true;
+ var wichtig = false;
+
+ if(checkeKlasse(nutzerklasse, klasse) == true){
+ wichtig = true;
+ }else{
+ var additionalClasses = $('#addclass').val().split('\n'); // alle benutzerdefinierten Klassen durchgehen
- for(j = 1; j < subklassen.length; j++){
- if(klasse.indexOf(subklassen[j]) == -1){
- wichtig = false;
+ additionalClasses.forEach(function(addCls){
+ if(checkeKlasse(addCls, klasse) == true){
+ wichtig = true;
}
- }
+ });
+ }
- if(wichtig == false){
- return;
- }
+ if(wichtig == false){
+ return;
}
if(entfall == true){
@@ -259,11 +333,18 @@ function renderPage($div, pdf, pageNumber, callback){
last_block = block;
}
- var username = getuserdata()[0];
+ var username = getuserdata();
+
+ if(username == null){
+ return;
+ }else{
+ username = username[0];
+ }
+
var vertretungen = parseVertretungen(page_text, username);
if(vertretungen.length > 0){
- var vdate = moment($div.data('date')).startOf('minute').set('hour', 18);
+ var vdate = moment($div.data('date')).startOf('minute').set('hour', $('#notifydate').val());
addNotification(vdate, vertretungen.join('\n'));
addSocialButton(vdate, vertretungen.join(', '), $div);
@@ -364,7 +445,7 @@ function addplanattr(fileEntry, wasdownloaded){
$('#vplannavbar').navbar();
- $('#vplantabs').append('<div id="' + name + '" class="ui-content tablist-content"></div>');
+ $('#vplantabs').append('<div id="' + name + '" class="tablist-content"></div>');
$('#vplantabs').tabs('refresh');
$('#' + name).data('date', vdate.toString());
@@ -481,7 +562,7 @@ function loggedin(resulthtml){
return 0;
}
- window.localStorage.setItem('overviewlink', link);
+ localStorage.setItem('overviewlink', link);
console.log('Eingeloggt');
get_overview(link, fail);
@@ -513,21 +594,21 @@ function getuserdata(){
var username = encodeURIComponent($('#username').val());
if(username == ''){
- username = window.localStorage.getItem('username');
+ username = localStorage.getItem('username');
}else{
- window.localStorage.setItem('username', username);
+ localStorage.setItem('username', username);
}
var password = encodeURIComponent($('#password').val());
if(password == ''){
- password = window.localStorage.getItem('password');
+ password = localStorage.getItem('password');
}else{
- window.localStorage.setItem('password', password);
+ localStorage.setItem('password', password);
}
console.log('Benutzerdaten geladen');
- if(username !== 'undefined' && username != null && username != '' && password !== 'undefined' && password != null && password != ''){
+ if(username != null && username.length !== 0 && password != null && password.length !== 0){
$('#username').val(username);
$('#password').val(password);
@@ -556,11 +637,11 @@ function login(){
/* bei einem Fehlschlag wird in login() versucht, die Nutzerdaten zu laden */
/* und wenn das schiefläuft, muss der Nutzer seine Daten selbst eingeben */
function trylogin(){
- var link = window.localStorage.getItem('overviewlink');
+ var link = localStorage.getItem('overviewlink');
$('#loginpopup').popup('close');
- if(typeof link !== 'undefined' && link != null){
+ if(link != null && link.length !== 0){
console.log('Teste Login');
console.log(link);