Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. [Frage] [Offen] Ical Color pro Termin

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Frage] [Offen] Ical Color pro Termin

    This topic has been deleted. Only users with topic management privileges can see it.
    • apollon77
      apollon77 last edited by

      @Feuersturm Hatte netterweise getestet (und arbeitet gerade ander doku) ... der kann das bestimmt schneller beantworten 🙂

      1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @daes10 last edited by

        @daes10 sagte in Ical Color pro Termin:

        Nur wie wird dies vom Adapter ausgewertet, welcher Termin welche Farbe hat.

        meines Wissens gar nicht!

        daes10 1 Reply Last reply Reply Quote 0
        • daes10
          daes10 @Homoran last edited by

          @homoran Doch eben, seit neuestem schon. Siehe Issue #263 auf Github Link

          Das war auch eine lang ersehnte Erneuerung von mir.

          Homoran 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @daes10 last edited by Homoran

            @daes10 sagte in Ical Color pro Termin:

            seit neuestem schon

            dann muss ich mir das mal ansehen.
            aber im stable ist das noch nicht, oder?

            ist das überhaupt schon verfügbar?
            Ein issue ist nicht unbedingt schon ein commit.

            muss ich mir morgen am PC ansehen

            daes10 apollon77 2 Replies Last reply Reply Quote 0
            • daes10
              daes10 @Homoran last edited by daes10

              @homoran Habe es zumindest gedacht. Habe heute auf Version 1.12.1 (im stable) geupdatet und es stand was von Color pro Termin drin. Testen konnte ich noch nichts. Jedoch würde ich mich zum Testen anbieten.

              Jedoch muss es drin sein denn ich habe im Adapter folgende "neue" Option erhalten:

              "Ereignisfarbe als Box verwenden, falls verfügbar" in den HTML Einstellungen beim Adapter.
              dab1c9dc-1d0f-4231-83c7-96a51cbcaa1c-grafik.png

              Ausserdem sind bei mir nun die Kästchen vor dem Termin auch drin.

              3aa982b8-1ea8-4593-941d-db69d4422b2b-grafik.png

              Daher muss es fast im Stable drin sein 😉

              Feuersturm 1 Reply Last reply Reply Quote 0
              • apollon77
                apollon77 @Homoran last edited by

                @homoran sagte in [Frage] [Offen] Ical Color pro Termin:

                aber im stable ist das noch nicht, oder?

                Ne ical glaube noch nicht stable

                1 Reply Last reply Reply Quote 0
                • Feuersturm
                  Feuersturm @daes10 last edited by Feuersturm

                  @daes10 Nach meinem Verständnis kommt mit der neuen Option nur vor dem eigentlichen Termin ein Kasten welche die Farbe des Kalenders wiedergibt. Hierbei wird die Kalenderfarbe übernommen, welche hier gesetzt ist:
                  2813e36b-d4bc-4f4c-a549-e6039301343f-grafik.png
                  8a40ae37-0119-45df-ba63-3bdd48cbd295-grafik.png

                  Das eine Color Information aus einem einzelnen Termin (geht das überhaupt?) vom ical Adapter ausgewertet wird und der Text vom Termin farbig angemalt wird, ist hiermit nicht realisiert.

                  1 Reply Last reply Reply Quote 1
                  • bahnuhr
                    bahnuhr Forum Testing Most Active last edited by

                    @daes10
                    Mit einem kleinen Script kann man so etwas realisieren.
                    Schau es dir an:

                    // Script stammt von uhula und sputnik
                    // Das Script greift auf die ical.0.html zu und ändert den Text.
                    // Gespeichert wird das geänderte Script in "javascript.0.Sonstige.ical.html"
                    // Geändert und erweitert in 12/2017 von bahnuhr
                    
                    
                    var idCal = "ical.0";
                    var idCalTrigger   = idCal + ".data.trigger";
                    var idCalTable     = idCal + ".data.table";
                    var idCalHTML      = idCal + ".data.html";
                    var idCalHTMLtable = 'javascript.0.Sonstige.Ical.html';
                    var logging = false;
                    
                    var anz_ganztags = false;   // wenn true wird bei Ganztags-Terminen als time auch "ganzer Tag" angezeigt; wenn false erfolgt gar keine Anzeige
                    var anz_time = true;        // wenn true werden die Uhrzeiten angezeigt; wenn false erfolgt gar keine Anzeige
                    var balken = false;         // wenn true wird Balken links angezeigt; wenn false dann erfolgt keine Anzeige
                    var abstand_zwischen_Tagen = false; // wenn true wird ein Abstand zwischen den Terminen gesetzt, wenn diese nicht am gleichen Tag stattfinden
                    
                    function iCalToHTMLTable() {
                        var html     = "<table style='font-size:0.9em;'><tbody>";
                        var calTable = getState(idCalTable).val;
                        var inst     = getObject("system.adapter."+idCal);
                        var instopt  = inst.native;
                        var calendar = {};
                    
                        for (var i = 0; i < calTable.length; i++) { 
                            if (logging) log (calTable[i]);
                            var entry = calTable[i];
                            var _date = new Date(entry._date);
                            var _time = "";
                    
                    
                            // "_time und date" Variable festlegen
                            if (logging) log (entry);
                            if (entry.date.indexOf("&#8594") >= 0) {    // Pfeil ist enthalten
                                if (entry.date.indexOf(":") >= 0) {         // Uhrzeit ist enthalten
                                    _time = "bis " + (entry.date).substring(entry.date.length-5,entry.date.length);
                                    entry.date = Datum_holen("tm");
                                } else {
                                    _time= "ganzer Tag";
                                    entry.date = Datum_holen("tm");
                                }
                            } else {                                    // Pfeil ist nicht enthalten
                                if (entry.date.indexOf(":") >= 0) {         // Uhrzeit ist enthalten
                                    _time = (entry.date).substring(entry.date.length-11,entry.date.length);
                                } else {
                                    _time= "ganzer Tag";
                                }
                                entry.date = getFormattedDate(_date);
                            }
                    
                    
                            if ( entry._calName != calendar.name ) {
                                calendar = {};
                                for (var c = 0; c < instopt.calendars.length; c++ ) {
                                    if (entry._calName == instopt.calendars[c].name ) {
                                        calendar = instopt.calendars[c];
                                        break;
                                    }
                                }
                            }
                    
                            var _color = "color:"+calendar.color;
                            if (entry._class.includes("ical_today")) _color = "color:red;";
                            else if (entry._class.includes("ical_tomorrow")) _color = "color:orange";
                            else if (entry._class.includes("ical_dayafter")) _color = "color:yellow";
                    
                            var _bgcolor = "";
                            if(calendar.name == "Müll") {
                                if(entry.event == "Bio Tonne") {
                                    _bgcolor = "#a0e878";
                                    _color="color:#a0e878";
                                }
                                else if(entry.event == "Restmüll Tonne") {
                                    _bgcolor = "#ce6f6f"; 
                                    _color="color:#ce6f6f";
                                }
                                else if(entry.event == "Blaue Tonne") {
                                    _bgcolor = "#508fdc";
                                    _color="color:#508fdc";
                                }
                                else if(entry.event == "Gelbe Tonne") {
                                    _bgcolor = "#eee06d";
                                    _color="color:#eee06d";
                                }
                            }
                            else _bgcolor = calendar.color;
                            
                            if (balken === false) _bgcolor = "";
                            
                            if (_bgcolor !== "") html+="<tr style='background:transparent; background-image: linear-gradient("+_bgcolor+","+_bgcolor+"); background-size: 6px 90%; background-repeat: no-repeat;'>";
                            else html+="<tr>";
                    
                    if (i>0 && (abstand_zwischen_Tagen == true)){
                                if (calTable[i].date != calTable[i-1].date){
                                    html+="<tr><td></td></tr>";
                                    html+="<tr><td></td></tr>";
                                    html+="<tr><td></td></tr>";
                                    html+="<tr><td></td></tr>";    
                                }
                            }
                    
                                var abstand = "15px;";
                                if (balken === false) abstand = "3px;";
                                html+="<td style='font-size:1.1em; padding-left:"+abstand+_color+"'>"+entry.date+"</td>";
                    
                            if ((_time === "ganzer Tag" && anz_ganztags === false) || anz_time === false) {
                                html+="<td style='font-size:1.1em; padding-left:5px;"+_color+"'>"+entry.event+"</td>";                      // nur event anzeigen
                            } else {
                                html+="<td style='font-size:1.1em; padding-left:5px;"+_color+"'>"+_time + "  " + entry.event+"</td>";       // time + event wird angezeigt
                            }
                            html+="</tr>";
                        }
                    
                        html+="</body></table>";    
                        setState(idCalHTMLtable, html);    
                    }
                    
                    function getFormattedDate(date) {
                        var month = (1 + date.getMonth()).toString();
                        month = month.length > 1 ? month : '0' + month;
                        var day = date.getDate().toString();
                        day = day.length > 1 ? day : '0' + day;
                        return day + '.' + month + '.';
                    }
                    
                    on({id: idCalTable, change: "ne"}, function (obj) {
                        iCalToHTMLTable();
                    });
                    
                    iCalToHTMLTable();
                    
                    
                    // als CSS einfügen ------------------------------------------------------------------
                    /*
                    .icalWarn { font-weight:normal; }
                    .icalWarn2  { color:red; }
                    .icalPreWarn { font-weight:normal; }
                    .icalPreWarn2  { color:orange; }
                    .icalPrePreWarn { font-weight:normal; }
                    .icalPrePreWarn2  { color:yellow; }
                    .icalNormal { font-weight:normal; }
                    
                    .icalNormal.iCal-Müll {
                        font-weight:normal;
                        color:#f87149;
                    }
                    .icalNormal.iCal-Märkte {
                        font-weight:normal;
                        color:#bc7dd8;
                    }
                    */
                    
                    
                    daes10 1 Reply Last reply Reply Quote 0
                    • daes10
                      daes10 @bahnuhr last edited by

                      @bahnuhr Vielen Dank! Werde mir das Skript, sobald ich Zeit finde anschauen und Testen.

                      Habe vor die ICal selbst zu kreiiren in Nodered, um so den absolut coolen Timetree Kalender über seine API mit dem ioBroker und somit mit dem ICal Adapter zu verknüpfen. (Da dieser Kalender ja leider keine externen Anbindungen oder Ical Dateien ausgibt, muss ich alles selber schreiben. 😉 )

                      In diesem Kalender können verschiedene Kalender übereinander angezeigt werden + jedem Termin eine Labelfarbe zugewiesen werden. Daher die Frage: "Farbe pro Termin".

                      Falls ich genug javascript Wissen mit diesem Projekt gesammelt habe und das Projekt in NodeRed funktioniert, werde ich vielleicht mal mich versuchen, meinen ersten Adapter zu schreiben und um die Timetree Applikation in den ioBroker aufzunehmen.

                      Müsste dann einfach mal schauen, wie ich dies mit den Farben hinbekomme und man das dann evtl. in den Ical Adapter miteinbaut.

                      Aber alles zu seiner Zeit 😊

                      Hoffe eines Tages auch stolzer Developer vom ioBroker zu werden! #iobrokerforever 😬 😂

                      1 Reply Last reply Reply Quote 1
                      • liv-in-sky
                        liv-in-sky @daes10 last edited by

                        @daes10

                        ich sehe keinen color eintrag für einzelterime - calColor ist die kalenderfarbe

                        Image 1.png

                        daes10 1 Reply Last reply Reply Quote 0
                        • daes10
                          daes10 @liv-in-sky last edited by

                          @liv-in-sky Ja ich weiss. Muss es wohl mit Labels oder Kategorien lösen.

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          761
                          Online

                          31.9k
                          Users

                          80.1k
                          Topics

                          1.3m
                          Posts

                          6
                          14
                          605
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo