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.
    • 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

                        451
                        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