/* Terje Rudi, oktober 2018 + januar 2019 + august 2019 (bruk av simpleCalendar) EKSEMPEL paa noedvendig variabel som maa staa foran resten av javascript-koden her: var rwCalEventFetch = { 'writeFullPage' : false, <-(dersom en ønsker å bare sjekke innkommende data formattert, gjør til true) 'simpleCalendar' : 'library', <-(kan også være 'students') 'pattern' : /^EndNote/i (evt. /EndNote/ ) <-(RegEx-mønster for tittel på aktiviteten) } */ (function(){ var settingsMissed = '
En feil oppstod:
Innstillinger savnes for scriptet som skal hente inn riktige kalenderhendelser.
Se eksempel i kildekoden for javascriptet simpleCalendar-uttrekk-etter-tittel.
'; if (typeof rwCalEventFetch != 'undefined'){ if (typeof rwCalEventFetch['pattern'] != 'undefined'){ var pattern = rwCalEventFetch['pattern']; }else{ document.write(settingsMissed + '
[-2]
'); return false; } let divIdentifier = 'kalenderEvents'; document.write('
'); let monthNames = ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember']; // Sette opp hvilke campus som skal vises let campuses = { 'Stord' : {}, 'Sogndal' : {}, 'Haugesund' : {}, 'Førde' : {}, 'Bergen' : {} } let cals = ['https://www.hvl.no/service/calendar/simplecalendar/nn-NO/' + rwCalEventFetch['simpleCalendar']]; console.log(cals); // for-loop er egentlig unødvendig i denne versjonen, men kan muligens bli aktuell seinere for (var cal = 0; cal < cals.length; cal++){ try{ console.info('Henter kalender fra: ' + cals[cal]); fetch(cals[cal]) .then(function(response) { return response.json(); }) .then(function(theJson) { for( var c in theJson['items']){ if (theJson['items'][c]['title'].search(pattern) >= 0){ // dersom kalenderlementets tittel passer med 'pattern' var elm = theJson['items'][c]; var s = new Date(elm['startDateTime']); var sMin = s.getMinutes(); var e = new Date(elm['endDateTime']); var eMin = e.getMinutes(); var pad = '00'; var link = ''; var htm = [s.getDate() + '. ' + monthNames[s.getMonth()] + ' ' + s.getFullYear() + ', kl. ' + s.getHours() + ':' + (pad + sMin).slice(-pad.length) + ' - ' + e.getHours() + ':' + (pad + eMin).slice(-pad.length)]; htm.push('' + elm['title'] + ''); console.log(htm.join('') + ' length:' + elm['filters'].length); for (let f = 0;f < elm['filters'].length;f++){ campuses[elm['filters'][f]['name']][s.getTime()] = {'link' : link,'htm' : htm}; } //campuses[elm['filters'][0]['name']][s.getTime()] = {'link' : link,'htm' : htm}; //'
  • ' + link + htm.join('
    ') + '
  • '; } } // Utskrift til side (variabel rwCalEventFetch er satt utenfor dette scriptet) if (typeof rwCalEventFetch['writeFullPage'] == 'undefined' || rwCalEventFetch['writeFullPage'] === true){ // Skriver ut en samlet oversikt til divIdentifier - ikke normal bruk var index = []; var htm = ''; for( var c in campuses){ // Hent og sorter keys keys = Object.keys(campuses[c]), len = keys.length; if (len > 0){ // Dersom det finnes kurs htm += '

    ' + c + '

    '; htm += ''; }else{ htm += ''; //'

    ' + c + '

    ' + c + ' har inga tilbod nett no.

    '; } index.push('
  • ' + c + '
  • '); } // Skriver ut toppfortegnelse document.getElementById(divIdentifier).innerHTML = '' + htm; }else{ // Pusher ut ferdig HTML ut til ETTER overskriftsnoder som har TEKSTINNHOLD lik key i campus, altsaa dedikerte noder for hver bolk if (typeof headLineNodes == 'undefined'){ var headLineNodes = document.querySelectorAll('h1, h2, h3, h4'); for (var i = 0; i < headLineNodes.length; i++){ var headLine = headLineNodes[i].innerText; if (typeof campuses[headLine] == 'object'){ // Det finnes en overskrift med tekst som er lik en key i campuses-objektet if (document.getElementById(divIdentifier + headLine) == null){ headLineNodes[i].outerHTML += '
    '; } } } } } for (var t in campuses){ var instances = Object.keys(campuses[t]); instances.sort(); var htm = []; for(var i = 0;i < instances.length;i++){ htm.push('
  • '); htm.push(campuses[t][instances[i]]['link']); htm.push(campuses[t][instances[i]]['htm'].join('
    ')); htm.push(''); htm.push('
  • '); } document.getElementById(divIdentifier + t).innerHTML = ''; } }); }catch(e){ document.querySelector('.lead').innerHTML = '

    Dette fekk visst ikkje nettlesaren din heilt til...

    Kan det væra at du bruker Explorer framleis? Prøv å opna sida i ein annan nettlesar!

    Eller berre søk etter kalenderhendingar i søkefeltet øvst!

    '; } } }else{ document.write(settingsMissed + '
    [-1]
    '); } })();