Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [ VORLAGE ] Nächste X Termine anzeigen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    994

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

[ VORLAGE ] Nächste X Termine anzeigen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
1 Beiträge 1 Kommentatoren 996 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • T Offline
    T Offline
    tempestas
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    im Rahmen meiner Neugestaltung meiner Visualisierung habe ich meinen ical Calender etwas bearbeitet . Ziel war es, eine einstellbare Anzahl der nächsten Termine anzuzeigen anstatt immer alle Termine innerhalb des im Adapter eingstellten Zeitraums anzuzeigen. Auf die Anzeige selbst lege ich einen unsichtbaren Button, der mir beim Klick dann den umfänglichen Kalender anzeigt.

    Als mögliche Erweiterung könnte man sich z.B. überlegen noch eine Warnung einzubauen, falls z.B. die Anzahl Termine HEUTE > angezeigte Termine ist. Das ist aktuell nicht eingebaut, da die Prüfung auch je nach iCal Einstellungen anders sein müsste und bei iCal ohne "Ersetze Datum mit Worten" dies ggf. deutlich aufwendiger wäre (zumindest fällt mir keine einfache Version ein).

    Das Skript erstellt zwei States, einmal für den Counter (für Vis, wieviele Termine möchte ich anzeigen) und einmal für den entsprechend gekürzten Text. Letzterer ist dann anlog der normalen iCal Instanz über das Basic Str Unescaped Widget in VIS einzubinden und verhält sich analog der eingestellten iCal Einstellungen (Farben, Ersetze Datum mit Worten).

    P.S.: wenn man die Anzahl angezeigter Termine auf 0 reduziert, werden wieder alle angezeigt.

    Hier nun das Skript, viel Spaß damit. Freue mich über Rückmeldungen.

    ! ````
    ! // ###########################################################################################################
    //
    // SKRIPT LIEST DIE NÄCHSTEN X TERMINE (VARIABEL EINSTELLBAR) AUS ICAL AUS
    //
    // ############################################################################################################
    ! // Skript Einstellungen
    ! var debug = true;
    ! // States und ids anlegen
    ! createState('Termine.Text', "");
    createState('Termine.Anzahl', 4);
    ! var instance = 'javascript.0.';
    var idTermine = instance + 'Termine.Text';
    var idTermineAnzahl = instance + 'Termine.Anzahl';
    var idKalender = "ical.0.data.html";
    ! // FUNCTION
    ! function fTermine(){

    // *********************        
    // Termine auswerten aus html.
    // *********************
    

    ! var termineCount = getState(idTermineAnzahl).val;
    var inhalt = getState("ical.0.data.html"/HTML iCal table/);
    var inhaltString = inhalt.val.toString();
    var inhaltStringReplace = inhaltString;
    var inhaltStringText;
    var i_search;
    ! // Zählen, wie oft ersetzt wurde. Falls weniger ersetzt, als Termine gesucht werden, wird auf diesen Wert reduziert zwecks Abfangen von Fehlern

        var count = inhaltStringReplace.split("").length -1;      // im iCal Adapter ist  ""   zwischen den Terminen einzigartig, daher als Trenner
        var minCount = Math.min(count, termineCount);
    
        //**************************************************************************************
        // Suchfunktion für Termin-Cutoff
        // Sucht nach dem n-ten definierten Muster und gibt die Fundstelle zurück. 
        // Hinter dieser Fundstelle wird dann der Text gekürzt
        //*****************************************************************************************
    

    !
    function nthIndex(str, pat, n){
    var L= str.length, i= -1;
    while(n-- && i++<l){ i="str.indexOf(pat," i);/if/(i/</0)/break;/}/i_search="i;" */text/kürzen/auf/die/gewählte/anzahl/termine//nthindex(inhaltstringreplace,"</span="">", minCount); // nutzen der Suchfunktion zum Suchen der n-ten Zeichenkette
    inhaltStringText = inhaltStringReplace.slice(0,i_search); // dort wird der Text abgeschnitten
    for (k =0; k < termineCount; k++) {
    }

        // *********************************************************************
        //      Reduzierte Termine in state Schreiben
        // *********************************************************************
    
        setState(idTermine, inhaltStringText);
        if(debug) log(inhaltStringText);   
    

    }

    ! // Bei Start
    ! fTermine();
    ! // Trigger bei Änderung Anzahl Termine
    ! on(idTermineAnzahl, function() {
    fTermine();
    });
    ! // Trigger bei Änderung Kalender
    ! on(idKalender, function() {
    fTermine();
    });</l){>

    <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

    1 Antwort Letzte Antwort
    0
    Antworten
    • In einem neuen Thema antworten
    Anmelden zum Antworten
    • Älteste zuerst
    • Neuste zuerst
    • Meiste Stimmen


    Support us

    ioBroker
    Community Adapters
    Donate

    633

    Online

    32.6k

    Benutzer

    82.3k

    Themen

    1.3m

    Beiträge
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
    ioBroker Community 2014-2025
    logo
    • Anmelden

    • Du hast noch kein Konto? Registrieren

    • Anmelden oder registrieren, um zu suchen
    • Erster Beitrag
      Letzter Beitrag
    0
    • Home
    • Aktuell
    • Tags
    • Ungelesen 0
    • Kategorien
    • Unreplied
    • Beliebt
    • GitHub
    • Docu
    • Hilfe