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. Praktische Anwendungen (Showcase)
  4. Material Design Widgets: Skript Status

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.6k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.9k

Material Design Widgets: Skript Status

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
material design widgetsvisiconlistviewview adapteradapterstatusanzeige
56 Beiträge 13 Kommentatoren 12.9k Aufrufe 29 Watching
  • Ä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.
  • Uwe ClementU Offline
    Uwe ClementU Offline
    Uwe Clement
    schrieb am zuletzt editiert von
    #37

    Bin noch ganz am Anfang.

    Wie verküpfte ich meinen im IOBroker erstellten JSON-String, welcher als Datenpunkt abgelegt ist mit dem MaterialDesign-List-Widget?

    Aktuell ist das JSON noch statisch im Widget hinterlegt:
    e149722f-0387-4b20-b7ab-e732e2091840-image.png

    DANKE!

    ScroungerS 1 Antwort Letzte Antwort
    0
    • Uwe ClementU Uwe Clement

      Bin noch ganz am Anfang.

      Wie verküpfte ich meinen im IOBroker erstellten JSON-String, welcher als Datenpunkt abgelegt ist mit dem MaterialDesign-List-Widget?

      Aktuell ist das JSON noch statisch im Widget hinterlegt:
      e149722f-0387-4b20-b7ab-e732e2091840-image.png

      DANKE!

      ScroungerS Offline
      ScroungerS Offline
      Scrounger
      Developer
      schrieb am zuletzt editiert von
      #38

      @Uwe-Clement
      per binding:
      585e5d17-f476-4176-9789-7da30552c2a0-grafik.png

      Bitte versuche zukünftig deine Fragen zu Einstellungen der Widgets im entsprechenden Thema zu platzieren, anbei die Übersicht zu den einzelnen Widgets:
      https://forum.iobroker.net/search?term=Material Design Widgets%3A&in=titles&matchWords=all&by[]=Scrounger&categories[]=7&sortBy=topic.lastposttime&sortDirection=desc&showAs=topics

      In diesem Thema geht es um praktische Anwendungen - SkriptStatus!

      <a href="https://github.com/Scrounger/ioBroker.linkeddevices">LinkedDevices Adapter</a>

      <a href="https://github.com/Scrounger/ioBroker.vis-materialdesign">Material Design Widgets</a>

      1 Antwort Letzte Antwort
      0
      • Sky66766S Offline
        Sky66766S Offline
        Sky66766
        schrieb am zuletzt editiert von
        #39

        auch hier ein klasse script

        Tipp auch hier

        /* Versionshistorie: */

        // https://forum.iobroker.net/topic/30662/material-design-widgets-skript-status
        //@Machinima Maerz 2020 Ver. ?

        dann ist es spizte :+1:

        ioBroker- NUC8i5, Proxmox 6.1-8
        Node.js v10.20.1, NPM v6.14.4, JS controller 3.0.20

        1 Antwort Letzte Antwort
        0
        • ScroungerS Scrounger

          Skript zur Anzeige des Status aller Skripte mit dem Material Design IconList Widget

          Mit diesem Skript wird ein json string erzeugt mit dem Status aller Skripte. Diese Daten (Datenpunkt) kann dann im Material Design IconList Widget verwendet werden, um den Status der Skripte im VIS anzuzeigen.

          letzte Aktualierung: 04.03.2020

          Skript_Status.gif

          Voraussetzung:

          • Material Design Widgets v0.2.62

          Funktionen:

          • Anzeige des Status aller Skripte (Aktiviert, Deakitivert, Fehler)
          • Anzeige von Werten der Skripte(Sprache, letzte Änderung, Ordner)
          • Neustarten / Starten / Stoppen von Skripten
          • Sortier und Filter Funktion
          • Einstellungen, siehe im Skript Sektion Einstellungen, Funktion der Einstellungen ist dort als Kommentar beschrieben.

          Ist auch im Online Beispiel enthalten

          View zum importieren:

          {
            "settings": {
              "style": {
                "background_class": ""
              },
              "theme": "redmond",
              "sizex": "",
              "sizey": "",
              "gridSize": "",
              "snapType": null
            },
            "widgets": {
              "e00001": {
                "tpl": "tplVis-materialdesign-Icon-List",
                "data": {
                  "g_fixed": false,
                  "g_visibility": false,
                  "g_css_font_text": false,
                  "g_css_background": false,
                  "g_css_shadow_padding": false,
                  "g_css_border": false,
                  "g_gestures": false,
                  "g_signals": false,
                  "g_last_change": false,
                  "visibility-cond": "==",
                  "visibility-val": 1,
                  "visibility-groups-action": "hide",
                  "wrapItems": true,
                  "listItemDataMethod": "jsonStringObject",
                  "countListItems": "1",
                  "vibrateOnMobilDevices": "50",
                  "listLayout": "card",
                  "itemLayout": "horizontal",
                  "listType0": "text",
                  "showValueLabel0": "true",
                  "listType1": "text",
                  "showValueLabel1": "true",
                  "signals-cond-0": "==",
                  "signals-val-0": true,
                  "signals-icon-0": "/vis/signals/lowbattery.png",
                  "signals-icon-size-0": 0,
                  "signals-blink-0": false,
                  "signals-horz-0": 0,
                  "signals-vert-0": 0,
                  "signals-hide-edit-0": false,
                  "signals-cond-1": "==",
                  "signals-val-1": true,
                  "signals-icon-1": "/vis/signals/lowbattery.png",
                  "signals-icon-size-1": 0,
                  "signals-blink-1": false,
                  "signals-horz-1": 0,
                  "signals-vert-1": 0,
                  "signals-hide-edit-1": false,
                  "signals-cond-2": "==",
                  "signals-val-2": true,
                  "signals-icon-2": "/vis/signals/lowbattery.png",
                  "signals-icon-size-2": 0,
                  "signals-blink-2": false,
                  "signals-horz-2": 0,
                  "signals-vert-2": 0,
                  "signals-hide-edit-2": false,
                  "lc-type": "last-change",
                  "lc-is-interval": true,
                  "lc-is-moment": false,
                  "lc-format": "",
                  "lc-position-vert": "top",
                  "lc-position-horz": "right",
                  "lc-offset-vert": 0,
                  "lc-offset-horz": 0,
                  "lc-font-size": "12px",
                  "lc-font-family": "",
                  "lc-font-style": "",
                  "lc-bkg-color": "",
                  "lc-color": "",
                  "lc-border-width": "0",
                  "lc-border-style": "",
                  "lc-border-color": "",
                  "lc-border-radius": 10,
                  "lc-zindex": 0,
                  "json_string_oid": "0_userdata.0.vis.SkriptStatus.jsonList",
                  "maxItemsperRow": "6",
                  "iconItemMinWidth": "280",
                  "iconHeight": "35",
                  "buttonHeight": "70",
                  "labelFontSize": "22",
                  "subLabelFontSize": "14",
                  "subLabelFontColor": "#000000",
                  "labelFontFamily": "RobotoCondensed-Regular",
                  "subLabelFontFamily": "RobotoCondensed-Light",
                  "horizontalIconContainerWidth": "70"
                },
                "style": {
                  "left": "0px",
                  "top": "50px",
                  "width": "100%",
                  "height": "calc(100% - 50px)",
                  "overflow-x": "",
                  "overflow-y": "auto",
                  "z-index": "1"
                },
                "widgetSet": "materialdesign"
              },
              "e00002": {
                "tpl": "tplHtml",
                "data": {
                  "g_fixed": false,
                  "g_visibility": false,
                  "g_css_font_text": false,
                  "g_css_background": true,
                  "g_css_shadow_padding": false,
                  "g_css_border": false,
                  "g_gestures": false,
                  "g_signals": false,
                  "g_last_change": false,
                  "visibility-cond": "==",
                  "visibility-val": 1,
                  "visibility-groups-action": "hide",
                  "refreshInterval": "0",
                  "signals-cond-0": "==",
                  "signals-val-0": true,
                  "signals-icon-0": "/vis/signals/lowbattery.png",
                  "signals-icon-size-0": 0,
                  "signals-blink-0": false,
                  "signals-horz-0": 0,
                  "signals-vert-0": 0,
                  "signals-hide-edit-0": false,
                  "signals-cond-1": "==",
                  "signals-val-1": true,
                  "signals-icon-1": "/vis/signals/lowbattery.png",
                  "signals-icon-size-1": 0,
                  "signals-blink-1": false,
                  "signals-horz-1": 0,
                  "signals-vert-1": 0,
                  "signals-hide-edit-1": false,
                  "signals-cond-2": "==",
                  "signals-val-2": true,
                  "signals-icon-2": "/vis/signals/lowbattery.png",
                  "signals-icon-size-2": 0,
                  "signals-blink-2": false,
                  "signals-horz-2": 0,
                  "signals-vert-2": 0,
                  "signals-hide-edit-2": false,
                  "lc-type": "last-change",
                  "lc-is-interval": true,
                  "lc-is-moment": false,
                  "lc-format": "",
                  "lc-position-vert": "top",
                  "lc-position-horz": "right",
                  "lc-offset-vert": 0,
                  "lc-offset-horz": 0,
                  "lc-font-size": "12px",
                  "lc-font-family": "",
                  "lc-font-style": "",
                  "lc-bkg-color": "",
                  "lc-color": "",
                  "lc-border-width": "0",
                  "lc-border-style": "",
                  "lc-border-color": "",
                  "lc-border-radius": 10,
                  "lc-zindex": 0
                },
                "style": {
                  "left": "0",
                  "top": "0",
                  "width": "100%",
                  "height": "50px",
                  "background-color": "#44739e"
                },
                "widgetSet": "basic"
              },
              "e00003": {
                "tpl": "tplVis-materialdesign-Select",
                "data": {
                  "oid": "0_userdata.0.vis.SkriptStatus.sortMode",
                  "g_fixed": false,
                  "g_visibility": false,
                  "g_css_font_text": false,
                  "g_css_background": false,
                  "g_css_shadow_padding": false,
                  "g_css_border": false,
                  "g_gestures": false,
                  "g_signals": false,
                  "g_last_change": false,
                  "visibility-cond": "==",
                  "visibility-val": 1,
                  "visibility-groups-action": "hide",
                  "inputType": "text",
                  "inputLayout": "regular",
                  "showInputMessageAlways": "true",
                  "showInputCounter": false,
                  "clearIconShow": false,
                  "listDataMethod": "jsonStringObject",
                  "countSelectItems": "1",
                  "listPosition": "bottom",
                  "showSelectedIcon": "prepend-inner",
                  "showValue": false,
                  "signals-cond-0": "==",
                  "signals-val-0": true,
                  "signals-icon-0": "/vis/signals/lowbattery.png",
                  "signals-icon-size-0": 0,
                  "signals-blink-0": false,
                  "signals-horz-0": 0,
                  "signals-vert-0": 0,
                  "signals-hide-edit-0": false,
                  "signals-cond-1": "==",
                  "signals-val-1": true,
                  "signals-icon-1": "/vis/signals/lowbattery.png",
                  "signals-icon-size-1": 0,
                  "signals-blink-1": false,
                  "signals-horz-1": 0,
                  "signals-vert-1": 0,
                  "signals-hide-edit-1": false,
                  "signals-cond-2": "==",
                  "signals-val-2": true,
                  "signals-icon-2": "/vis/signals/lowbattery.png",
                  "signals-icon-size-2": 0,
                  "signals-blink-2": false,
                  "signals-horz-2": 0,
                  "signals-vert-2": 0,
                  "signals-hide-edit-2": false,
                  "lc-type": "last-change",
                  "lc-is-interval": true,
                  "lc-is-moment": false,
                  "lc-format": "",
                  "lc-position-vert": "top",
                  "lc-position-horz": "right",
                  "lc-offset-vert": 0,
                  "lc-offset-horz": 0,
                  "lc-font-size": "12px",
                  "lc-font-family": "",
                  "lc-font-style": "",
                  "lc-bkg-color": "",
                  "lc-color": "",
                  "lc-border-width": "0",
                  "lc-border-style": "",
                  "lc-border-color": "",
                  "lc-border-radius": 10,
                  "lc-zindex": 0,
                  "inputLabelText": "Sortieren nach",
                  "inputLabelColor": "#ffffff",
                  "inputLabelFontFamily": "RobotoCondensed-LightItalic",
                  "collapseIconColor": "#ffffff",
                  "collapseIconSize": "",
                  "jsonStringObject": "[\n\t{\n\t\t\"text\": \"Skriptname\",\n\t\t\"value\": \"name\",\n\t\t\"icon\": \"sort-alphabetical\"\n\t},\n\t{\n\t\t\"text\": \"letzte Änderung\",\n\t\t\"value\": \"lastChange\",\n\t\t\"icon\": \"clock-outline\"\n\t},\n\t{\n\t\t\"text\": \"Status\",\n\t\t\"value\": \"status\",\n\t\t\"icon\": \"information-variant\"\n\t},\n\t{\n\t\t\"text\": \"Ordner\",\n\t\t\"value\": \"folder\",\n\t\t\"icon\": \"folder\"\n\t}\t\n]",
                  "listPositionOffset": true,
                  "inputLayoutBackgroundColor": "transparent",
                  "inputLabelColorSelected": "#ffffff",
                  "inputTranslateX": "-15",
                  "clearIcon": "",
                  "inputLayoutBorderColorHover": "#ffffff",
                  "inputLayoutBorderColorSelected": "#ffffff",
                  "inputLayoutBorderColor": "#a1a1a1",
                  "listItemFontColor": "",
                  "inputTextColor": "#ffffff",
                  "inputTextFontFamily": "RobotoCondensed-LightItalic",
                  "prepandIcon": "",
                  "prepandIconColor": "",
                  "prepandIconSize": "",
                  "prepandInnerIcon": "",
                  "prepandInnerIconColor": "#ffffff",
                  "prepandInnerIconSize": "18",
                  "collapseIcon": "",
                  "inputTranslateY": "-12",
                  "listIconSelectedColor": "#44739e",
                  "listIconColor": "",
                  "appendOuterIcon": "",
                  "appendOuterIconSize": "2",
                  "listItemFont": "RobotoCondensed-Regular",
                  "listItemRippleEffectColor": "",
                  "inputLayoutBackgroundColorSelected": "",
                  "inputLayoutBackgroundColorHover": ""
                },
                "style": {
                  "left": "10px",
                  "top": "0px",
                  "z-index": "1",
                  "width": "calc(50% - 20px)",
                  "height": "40px"
                },
                "widgetSet": "materialdesign"
              },
              "e00004": {
                "tpl": "tplVis-materialdesign-Select",
                "data": {
                  "oid": "0_userdata.0.vis.SkriptStatus.filterMode",
                  "g_fixed": false,
                  "g_visibility": false,
                  "g_css_font_text": false,
                  "g_css_background": false,
                  "g_css_shadow_padding": false,
                  "g_css_border": false,
                  "g_gestures": false,
                  "g_signals": false,
                  "g_last_change": false,
                  "visibility-cond": "==",
                  "visibility-val": 1,
                  "visibility-groups-action": "hide",
                  "inputType": "text",
                  "inputLayout": "regular",
                  "showInputMessageAlways": "true",
                  "showInputCounter": false,
                  "clearIconShow": true,
                  "listDataMethod": "jsonStringObject",
                  "countSelectItems": "1",
                  "listPosition": "bottom",
                  "showSelectedIcon": "prepend-inner",
                  "showValue": false,
                  "signals-cond-0": "==",
                  "signals-val-0": true,
                  "signals-icon-0": "/vis/signals/lowbattery.png",
                  "signals-icon-size-0": 0,
                  "signals-blink-0": false,
                  "signals-horz-0": 0,
                  "signals-vert-0": 0,
                  "signals-hide-edit-0": false,
                  "signals-cond-1": "==",
                  "signals-val-1": true,
                  "signals-icon-1": "/vis/signals/lowbattery.png",
                  "signals-icon-size-1": 0,
                  "signals-blink-1": false,
                  "signals-horz-1": 0,
                  "signals-vert-1": 0,
                  "signals-hide-edit-1": false,
                  "signals-cond-2": "==",
                  "signals-val-2": true,
                  "signals-icon-2": "/vis/signals/lowbattery.png",
                  "signals-icon-size-2": 0,
                  "signals-blink-2": false,
                  "signals-horz-2": 0,
                  "signals-vert-2": 0,
                  "signals-hide-edit-2": false,
                  "lc-type": "last-change",
                  "lc-is-interval": true,
                  "lc-is-moment": false,
                  "lc-format": "",
                  "lc-position-vert": "top",
                  "lc-position-horz": "right",
                  "lc-offset-vert": 0,
                  "lc-offset-horz": 0,
                  "lc-font-size": "12px",
                  "lc-font-family": "",
                  "lc-font-style": "",
                  "lc-bkg-color": "",
                  "lc-color": "",
                  "lc-border-width": "0",
                  "lc-border-style": "",
                  "lc-border-color": "",
                  "lc-border-radius": 10,
                  "lc-zindex": 0,
                  "inputLabelText": "Filtern nach",
                  "inputLabelColor": "#ffffff",
                  "inputLabelFontFamily": "RobotoCondensed-LightItalic",
                  "collapseIconColor": "#ffffff",
                  "collapseIconSize": "",
                  "jsonStringObject": "[\n\t{\n\t\t\"text\": \"Fehler\",\n\t\t\"value\": \"error\",\n\t\t\"icon\": \"alert-box-outline\"\n\t},\n\t{\n\t\t\"text\": \"deaktiviert\",\n\t\t\"value\": \"deactivated\",\n\t\t\"icon\": \"checkbox-blank-outline\"\n\t},\t\n\t{\n\t\t\"text\": \"aktiviert\",\n\t\t\"value\": \"activated\",\n\t\t\"icon\": \"checkbox-intermediate\"\n\t}\n]",
                  "listPositionOffset": true,
                  "inputLayoutBackgroundColor": "transparent",
                  "inputLabelColorSelected": "#ffffff",
                  "inputTranslateX": "-15",
                  "clearIcon": "",
                  "inputLayoutBorderColorHover": "#ffffff",
                  "inputLayoutBorderColorSelected": "#ffffff",
                  "inputLayoutBorderColor": "#a1a1a1",
                  "listItemFontColor": "",
                  "inputTextColor": "#ffffff",
                  "inputTextFontFamily": "RobotoCondensed-LightItalic",
                  "prepandIcon": "",
                  "prepandIconColor": "",
                  "prepandIconSize": "",
                  "prepandInnerIcon": "",
                  "prepandInnerIconColor": "#ffffff",
                  "prepandInnerIconSize": "18",
                  "collapseIcon": "",
                  "inputTranslateY": "-12",
                  "listIconSelectedColor": "#44739e",
                  "listIconColor": "",
                  "appendOuterIcon": "",
                  "appendOuterIconSize": "2",
                  "listItemFont": "RobotoCondensed-Regular",
                  "listItemRippleEffectColor": "",
                  "inputLayoutBackgroundColorSelected": "",
                  "inputLayoutBackgroundColorHover": "",
                  "clearIconColor": "#ffffff"
                },
                "style": {
                  "left": "calc(50% + 10px)",
                  "top": "0px",
                  "z-index": "1",
                  "width": "calc(50% - 20px)",
                  "height": "40px"
                },
                "widgetSet": "materialdesign"
              }
            },
            "name": "SkriptStatus",
            "filterList": []
          }
          

          Hier hab ich beschrieben, wie man das layout am besten einstellt:
          https://forum.iobroker.net/topic/30661/material-design-widgets-adapter-status/5

          Skript:

          const moment = require("moment");
          
          // Skript Einstellungen *************************************************************************************************************************************************
          
          let dpList = '0_userdata.0.vis.SkriptStatus.jsonList';                      // Datenpunkt für IconList Widget (Typ: Zeichenkette (String))
          let dpskriptRestart = '0_userdata.0.vis.SkriptStatus.restart';              // Datenpunkt für Skript restart (Typ: Zeichenkette (String))
          
          let dpSortMode = '0_userdata.0.vis.SkriptStatus.sortMode';                  // Datenpunkt für Sortieren (Typ: Zeichenkette (String))
          let dpFilterMode = '0_userdata.0.vis.SkriptStatus.filterMode';              // Datenpunkt für Filter (Typ: Zeichenkette (String))
          
          const checkInterval = 30;                                                   // Interval wie oft Status der Skripte aktualisiert werden soll (in Sekunden)
          
          let sprache = 'de';                                                         // Sprache für formatierung letzte Änderung
          let formatierungLastChange = "ddd DD.MM - HH:mm";                           // Formatierung letzte Änderung -> siehe momentjs library
          
          let neustarten = true;                                                      // true: Skript wird neugestartet, false: Skript wird gestoppt oder gestartet
          
          let farbeSkriptAktiv = 'green';                                             // Status Bar Farbe wenn Skript aktiv ist
          let farbeSkriptDeaktiviert = 'darkgrey';                                    // Status Bar Farbe wenn Skript deaktiviert ist
          let farbeSkriptProblem = 'FireBrick';                                       // Status Bar Farbe wenn Skript Problem hat
          
          let sortResetAfter = 120;                                                   // Sortierung nach X Sekunden auf sortReset zurücksetzen (0=deaktiviert)
          let sortReset = 'name'                                                      // Sortierung auf die zurückgesetzt werden soll
          
          let filterResetAfter = 120;                                                 // Filter nach X Sekunden zurücksetzen (0=deaktiviert)
          
          // **********************************************************************************************************************************************************************
          
          // Fomate für moment Lib
          moment.locale(sprache);
          
          // auf Änderungen aktiver Skripts hören
          let enableSelector = `[id=javascript.*.scriptEnabled.*]`;
          let skriptEnableList = $(enableSelector);
          if (skriptEnableList.length === 0) {
              // Fehlermeldung ausgeben, wenn selector kein result liefert
              console.error(`no result for selector '${enableSelector}'`)
          } else {
              // listener nur für Änderung bei alive
              skriptEnableList.on(skriptStatus);
          }
          
          // auf Änderungen Skripts mit Problemen hören
          let problemSelector = `[id=javascript.*.scriptProblem.*]`;
          let skriptProblemList = $(problemSelector);
          if (skriptProblemList.length === 0) {
              // Fehlermeldung ausgeben, wenn selector kein result liefert
              console.error(`no result for selector '${problemSelector}'`)
          } else {
              // listener nur für Änderung bei alive
              skriptProblemList.on(skriptStatus);
          }
          
          
          // auf Änderungen der Sortieung hören
          on({ id: dpSortMode, change: 'any' }, skriptStatus);
          on({ id: dpSortMode, change: 'any' }, resetSort);
          
          // auf Änderungen der Filter hören
          on({ id: dpFilterMode, change: 'any' }, skriptStatus);
          on({ id: dpFilterMode, change: 'any' }, resetFilter);
          
          
          // Funktion adapterStatus alle x Sekunden ausführen
          schedule('*/' + checkInterval + ' * * * * *', skriptStatus);
          
          function skriptStatus() {
              try {
                  skriptList = [];
          
                  for (var i = 0; i <= skriptEnableList.length - 1; i++) {
                      let id = skriptEnableList[i];
                      let obj = getObject(id);
          
                      let scriptObj = undefined;
                      let scriptName = '';
                      let engineType = '';
                      let lastChangeText = '';
                      let lastChange = 0;
                      let image = 'image-off-outline';
                      let imageColor = '';
                      let statusBarColor = farbeSkriptDeaktiviert;
                      let status = 1;
          
          
                      if (obj && obj !== null && obj.native && obj.native.script) {
                          scriptObj = getObject(obj.native.script);
          
                          if (scriptObj && scriptObj.common) {
                              if (scriptObj.common.name) {
                                  scriptName = scriptObj.common.name;
                              }
          
                              if (scriptObj.common.engineType) {
                                  engineType = scriptObj.common.engineType.replace('/js', '').replace('/ts', '');
          
                                  if (engineType.toLowerCase() === 'Javascript'.toLowerCase()) {
                                      image = 'language-javascript';
                                      imageColor = '#ffca28';
                                  } else if (engineType.toLowerCase() === 'TypeScript'.toLowerCase()) {
                                      image = 'language-typescript';
                                      imageColor = '#007acc';
                                  } else if (engineType.toLowerCase() === 'Blockly'.toLowerCase()) {
                                      image = 'puzzle';
                                      imageColor = '#5a80a6';
                                  }
                              }
          
                              if (scriptObj.ts) {
                                  lastChange = scriptObj.ts;
                                  lastChangeText = moment(scriptObj.ts).format(formatierungLastChange);
                              }
          
                              if (scriptObj.common.enabled) {
                                  statusBarColor = farbeSkriptAktiv;
                                  status = 0;
                              }
          
                              if (myHelper().getStateValueIfExist(id) === 'true') {
                                  statusBarColor = farbeSkriptAktiv;
                                  status = 0;
                              }
          
                              if (myHelper().getStateValueIfExist(id.replace('.scriptEnabled.', '.scriptProblem.'), false) === 'true') {
                                  statusBarColor = farbeSkriptProblem;
                                  status = 2;
                              }
          
                              let folder = '-';
                              let folderList = id.replace('javascript.0.scriptEnabled.').split(".");
                              if (folderList.length > 1) {
                                  folder = id.replace('javascript.0.scriptEnabled.', '').replace('.' + folderList[folderList.length - 1], '');
                              }
          
                              let text = scriptName;
                              if (status === 2) {
                                  text = `<span class="mdi mdi-alert-box-outline" style="color: #ec0909;"></span> ${scriptName}`
                              }
          
                              let subText = `<div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                  <div style="flex: 1;">Sprache</div>
                                                  <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;">${engineType}</div>
                                              </div>
                                              <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                  <div style="flex: 1;">letzte Änderung</div>
                                                  <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;">${lastChangeText}</div>
                                              </div>
                                              <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px;">
                                                  <div style="flex: 1;">Ordner</div>
                                                  <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-overflow: ellipsis; white-space: normal; text-align: right;">${folder}</div>
                                              </div>`
          
                              skriptList.push({
                                  text: text,
                                  subText: subText,
                                  statusBarColor: statusBarColor,
                                  image: image,
                                  imageColor: imageColor,
                                  listType: "buttonState",
                                  objectId: dpskriptRestart,
                                  buttonStateValue: (obj && obj !== null && obj.native && obj.native.script) ? obj.native.script : '',
                                  showValueLabel: false,
                                  name: scriptName,
                                  lastChange: lastChange,
                                  status: status,
                                  folder: folder
                              });
                          }
                      }
                  }
          
                  let sortMode = myHelper().getStateValueIfExist(dpSortMode, 'name');
          
                  if (sortMode === 'name') {
                      skriptList.sort(function (a, b) {
                          return a[sortMode].toLowerCase() == b[sortMode].toLowerCase() ? 0 : +(a[sortMode].toLowerCase() > b[sortMode].toLowerCase()) || -1;
                      });
                  } else if (sortMode === 'lastChange' || sortMode === 'status' || sortMode === 'folder') {
                      skriptList.sort(function (a, b) {
                          return a[sortMode] == b[sortMode] ? 0 : +(a[sortMode] < b[sortMode]) || -1;
                      });
                  } else {
                      // default: nach name sortieren
                      sortMode = 'name'
                      skriptList.sort(function (a, b) {
                          return a[sortMode].toLowerCase() == b[sortMode].toLowerCase() ? 0 : +(a[sortMode].toLowerCase() > b[sortMode].toLowerCase()) || -1;
                      });
                  }
          
          
                  let filterMode = myHelper().getStateValueIfExist(dpFilterMode, null);
          
                  if (filterMode && filterMode !== null && filterMode !== '') {
                      if (filterMode === 'error') {
                          skriptList = skriptList.filter(function (item) {
                              return item.status === 2;
                          });
                      } else if (filterMode === 'deactivated') {
                          skriptList = skriptList.filter(function (item) {
                              return item.status === 1;
                          });
                      } else if (filterMode === 'activated') {
                          skriptList = skriptList.filter(function (item) {
                              return item.status === 0;
                          });
                      }
                  }
          
          
                  let result = JSON.stringify(skriptList);
                  if (existsState(dpList) && getState(dpList).val !== result) {
                      setState(dpList, result, true);
                  } else {
                      setState(dpList, result, true);
                  }
          
              } catch (err) {
                  console.error(`[skriptStatus] error: ${err.message}, stack: ${err.stack}`);
              }
          }
          
          
          // // Funktion um Skript starten / Stoppen
          on({ id: dpskriptRestart }, function (obj) {
              var scriptObj = getObject(obj.state.val.toString());
          
              if (neustarten) {
                  scriptObj.common.enabled = true;
                  setObject(obj.state.val.toString(), scriptObj);
              }
              else {
                  if (scriptObj && scriptObj.common) {
          
                      if (scriptObj.common.enabled) {
                          scriptObj.common.enabled = false;
                      } else {
                          scriptObj.common.enabled = true;
                      }
          
                      setObject(obj.state.val.toString(), scriptObj);
                  }
              }
          });
          
          function resetSort() {
              let sortMode = myHelper().getStateValueIfExist(dpSortMode, null);
          
              if (sortResetAfter > 0) {
                  setTimeout(function () {
                      if (sortMode !== null && sortMode === myHelper().getStateValueIfExist(dpSortMode, null)) {
                          setState(dpSortMode, sortReset);
                      }
                  }, sortResetAfter * 1000);
              }
          }
          
          function resetFilter() {
              let filterMode = myHelper().getStateValueIfExist(dpFilterMode, null);
          
              if (filterResetAfter > 0) {
                  setTimeout(function () {
                      if (filterMode !== null && filterMode === myHelper().getStateValueIfExist(dpFilterMode, null)) {
                          setState(dpFilterMode, '');
                      }
                  }, filterResetAfter * 1000);
              }
          }
          
          // Beim Staren des Skriptes Adapter Status abrufen
          skriptStatus();
          
          function myHelper() {
              return {
                  getStateValueIfExist: function (id, nullValue = undefined, prepand = '', append = '') {
                      if (existsState(id)) {
                          return prepand + getState(id).val + append;
                      } else {
                          return nullValue;
                      }
                  },
                  getCommonPropertyIfExist: function (object, prop, nullValue = undefined, prepand = '', append = '') {
                      if (myHelper().checkCommonPropertyExist(object, prop)) {
                          return prepand + object.common[prop] + append;
                      } else {
                          return nullValue;
                      }
                  },
                  checkCommonPropertyExist: function (object, prop) {
                      if (object && object.common && object.common[prop]) {
                          return true;
                      } else {
                          return false;
                      }
                  }
              }
          }
          

          Benötigte libraries & Einstellungen im Javascript Adapter:
          6222b915-4e9e-4025-98ec-0baedcaed5b1-grafik.png

          D3ltoroxpD Offline
          D3ltoroxpD Offline
          D3ltoroxp
          schrieb am zuletzt editiert von
          #40

          @Scrounger said in Material Design Widgets: Skript Status:

          Benötigte libraries & Einstellungen im Javascript Adapter:

          Was ist das für ein Pfad, selbst erstellt, egal wohin und wie er heißt ?

          D:\iobroker\devBroker\scripts
          

          iobroker muss halt Schreibrechte haben ?

          Dann das Script, erstellt er die Datenpunkte selber unter userdata ? Wenn ja klappt das bei mir nicht.
          Unten steht nur folgendes ..

          14:30:36.053	info	javascript.0 (6342) Start javascript script.js.VIS.Script_Status_für_VIS
          14:30:36.177	warn	javascript.0 (6342) at skriptStatus (script.js.VIS.Script_Status_für_VIS:214:13)
          14:30:36.177	warn	javascript.0 (6342) at script.js.VIS.Script_Status_für_VIS:270:1
          14:30:36.178	info	javascript.0 (6342) script.js.VIS.Script_Status_für_VIS: registered 81 subscriptions and 1 schedule
          14:30:36.241	warn	javascript.0 (6342) at Object.skriptStatus (script.js.VIS.Script_Status_für_VIS:214:13)
          14:30:47.114	info	javascript.0 (6342) Stop script script.js.VIS.Script_Status_für_VIS
          
          ScroungerS 1 Antwort Letzte Antwort
          0
          • D3ltoroxpD D3ltoroxp

            @Scrounger said in Material Design Widgets: Skript Status:

            Benötigte libraries & Einstellungen im Javascript Adapter:

            Was ist das für ein Pfad, selbst erstellt, egal wohin und wie er heißt ?

            D:\iobroker\devBroker\scripts
            

            iobroker muss halt Schreibrechte haben ?

            Dann das Script, erstellt er die Datenpunkte selber unter userdata ? Wenn ja klappt das bei mir nicht.
            Unten steht nur folgendes ..

            14:30:36.053	info	javascript.0 (6342) Start javascript script.js.VIS.Script_Status_für_VIS
            14:30:36.177	warn	javascript.0 (6342) at skriptStatus (script.js.VIS.Script_Status_für_VIS:214:13)
            14:30:36.177	warn	javascript.0 (6342) at script.js.VIS.Script_Status_für_VIS:270:1
            14:30:36.178	info	javascript.0 (6342) script.js.VIS.Script_Status_für_VIS: registered 81 subscriptions and 1 schedule
            14:30:36.241	warn	javascript.0 (6342) at Object.skriptStatus (script.js.VIS.Script_Status_für_VIS:214:13)
            14:30:47.114	info	javascript.0 (6342) Stop script script.js.VIS.Script_Status_für_VIS
            
            ScroungerS Offline
            ScroungerS Offline
            Scrounger
            Developer
            schrieb am zuletzt editiert von Scrounger
            #41

            @D3ltoroxp sagte in Material Design Widgets: Skript Status:

            Was ist das für ein Pfad, selbst erstellt, egal wohin und wie er heißt ?

            D:\iobroker\devBroker\scripts
            

            Hat nichts mit dem Skript zu tun, einfach ignorieren, ist halt auf dem Screenshot mit drauf.

            Dann das Script, erstellt er die Datenpunkte selber unter userdata ? Wenn ja klappt das bei mir nicht.

            Nein, Datenpunkte müssen selbst angelegt werden.

            <a href="https://github.com/Scrounger/ioBroker.linkeddevices">LinkedDevices Adapter</a>

            <a href="https://github.com/Scrounger/ioBroker.vis-materialdesign">Material Design Widgets</a>

            1 Antwort Letzte Antwort
            1
            • D3ltoroxpD Offline
              D3ltoroxpD Offline
              D3ltoroxp
              schrieb am zuletzt editiert von
              #42

              Dann passt es vielen Dank. Die json List ist auch schon voll.

              1 Antwort Letzte Antwort
              0
              • D3ltoroxpD Offline
                D3ltoroxpD Offline
                D3ltoroxp
                schrieb am zuletzt editiert von D3ltoroxp
                #43

                Diese Scrollleiste ist nur auf dem PC Browser zu sehen ? Auf dem Tablet gibt es die Leiste nicht, ist das normal, oder stimmt da was nicht bei mir ? Scrollen geht, aber es fehlt der Scrollbalken wenn ich das am Tablet anschaue.

                Habe deine View importiert und in view in 8 view Widget ausgewählt. Die 8 view ist auf meine Displaygröße angepasst. (1280x800)

                a0abb5ee-c65b-4b90-8a59-d5d05729e074-image.png

                Und bekommt man das evtl. raus ? (Den Text)

                8f630570-bbcc-4370-9cc9-6caba95169e7-image.png

                Uwe ClementU 1 Antwort Letzte Antwort
                0
                • D3ltoroxpD D3ltoroxp

                  Diese Scrollleiste ist nur auf dem PC Browser zu sehen ? Auf dem Tablet gibt es die Leiste nicht, ist das normal, oder stimmt da was nicht bei mir ? Scrollen geht, aber es fehlt der Scrollbalken wenn ich das am Tablet anschaue.

                  Habe deine View importiert und in view in 8 view Widget ausgewählt. Die 8 view ist auf meine Displaygröße angepasst. (1280x800)

                  a0abb5ee-c65b-4b90-8a59-d5d05729e074-image.png

                  Und bekommt man das evtl. raus ? (Den Text)

                  8f630570-bbcc-4370-9cc9-6caba95169e7-image.png

                  Uwe ClementU Offline
                  Uwe ClementU Offline
                  Uwe Clement
                  schrieb am zuletzt editiert von
                  #44

                  @D3ltoroxp ist mir gestern auch bei bmeiner Iconlist aufgefallen. Nutze meine Visualisierung bisher nur am PC und wollte es mal auf dem Tablet ausprobieren. Da sah ich keine Scrollbar.

                  D3ltoroxpD 1 Antwort Letzte Antwort
                  0
                  • Uwe ClementU Uwe Clement

                    @D3ltoroxp ist mir gestern auch bei bmeiner Iconlist aufgefallen. Nutze meine Visualisierung bisher nur am PC und wollte es mal auf dem Tablet ausprobieren. Da sah ich keine Scrollbar.

                    D3ltoroxpD Offline
                    D3ltoroxpD Offline
                    D3ltoroxp
                    schrieb am zuletzt editiert von
                    #45

                    @Uwe-Clement vllt weil man am PC nicht per Touch scrollen kann, am Tablet aber schon. Man braucht den Balken am Tablet ja nicht, aber es wäre ein Indikator dafür, das es noch weiter nach unten geht.

                    Uwe ClementU 1 Antwort Letzte Antwort
                    0
                    • D3ltoroxpD D3ltoroxp

                      @Uwe-Clement vllt weil man am PC nicht per Touch scrollen kann, am Tablet aber schon. Man braucht den Balken am Tablet ja nicht, aber es wäre ein Indikator dafür, das es noch weiter nach unten geht.

                      Uwe ClementU Offline
                      Uwe ClementU Offline
                      Uwe Clement
                      schrieb am zuletzt editiert von
                      #46

                      @D3ltoroxp

                      stimmt schon. Problem war beim nach unten scrollen immer, dass die ganze Seite als "Reload" erkannt wird. d.h. das nach unten ziehen wurde als ganze Seite aktualisieren erkannt von meiner "Wallpaper" App....

                      D3ltoroxpD 1 Antwort Letzte Antwort
                      0
                      • Uwe ClementU Uwe Clement

                        @D3ltoroxp

                        stimmt schon. Problem war beim nach unten scrollen immer, dass die ganze Seite als "Reload" erkannt wird. d.h. das nach unten ziehen wurde als ganze Seite aktualisieren erkannt von meiner "Wallpaper" App....

                        D3ltoroxpD Offline
                        D3ltoroxpD Offline
                        D3ltoroxp
                        schrieb am zuletzt editiert von
                        #47

                        @Uwe-Clement Das Problem hatte ich beim Fully auch, daher hatte ich das erst mal wieder deaktiviert.

                        1 Antwort Letzte Antwort
                        0
                        • D Offline
                          D Offline
                          derrapf
                          schrieb am zuletzt editiert von derrapf
                          #48

                          Hallo alle
                          Habe das Script von Seite 1 importiert, aber bei mir wirft es zig Fehler:
                          2021-04-16 00_49_13-Kalender - Ralf.Zaisser@dscsag.com - Outlook.jpg 2021-04-16 00_48_45-javascript - ioBroker.jpg 2021-04-16 00_48_21-javascript - ioBroker.jpg 2021-04-16 00_47_39-javascript - ioBroker.jpg
                          usw.
                          Was stimmt denn hier nicht?
                          Gruss Ralf

                          sigi234S NegaleinN 2 Antworten Letzte Antwort
                          0
                          • D derrapf

                            Hallo alle
                            Habe das Script von Seite 1 importiert, aber bei mir wirft es zig Fehler:
                            2021-04-16 00_49_13-Kalender - Ralf.Zaisser@dscsag.com - Outlook.jpg 2021-04-16 00_48_45-javascript - ioBroker.jpg 2021-04-16 00_48_21-javascript - ioBroker.jpg 2021-04-16 00_47_39-javascript - ioBroker.jpg
                            usw.
                            Was stimmt denn hier nicht?
                            Gruss Ralf

                            sigi234S Online
                            sigi234S Online
                            sigi234
                            Forum Testing Most Active
                            schrieb am zuletzt editiert von
                            #49

                            @derrapf

                            DP's Richtig angelegt und im JS Adapter alles eingetragen wie auf den Screenshot?

                            Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                            Immer Daten sichern!

                            D 1 Antwort Letzte Antwort
                            0
                            • D derrapf

                              Hallo alle
                              Habe das Script von Seite 1 importiert, aber bei mir wirft es zig Fehler:
                              2021-04-16 00_49_13-Kalender - Ralf.Zaisser@dscsag.com - Outlook.jpg 2021-04-16 00_48_45-javascript - ioBroker.jpg 2021-04-16 00_48_21-javascript - ioBroker.jpg 2021-04-16 00_47_39-javascript - ioBroker.jpg
                              usw.
                              Was stimmt denn hier nicht?
                              Gruss Ralf

                              NegaleinN Offline
                              NegaleinN Offline
                              Negalein
                              Global Moderator
                              schrieb am zuletzt editiert von
                              #50

                              @derrapf sagte in Material Design Widgets: Skript Status:

                              aber bei mir wirft es zig Fehler:

                              du meinst jetzt nur die roten Wellenlinien? Das sind nicht unbedingt Fehler.
                              Hast du das Script schon mal gestartet? Läuft es, oder kommen dann echte Fehler?

                              ° Node.js: 20.17.0 NPM: 10.8.2
                              ° Proxmox, Ubuntu 22.04.3 LTS
                              ° Fixer ---> iob fix

                              1 Antwort Letzte Antwort
                              0
                              • sigi234S sigi234

                                @derrapf

                                DP's Richtig angelegt und im JS Adapter alles eingetragen wie auf den Screenshot?

                                D Offline
                                D Offline
                                derrapf
                                schrieb am zuletzt editiert von
                                #51

                                @sigi234
                                Ich hab's so gemacht (hoffentlich richtig). Stand nirgends wie es geht; ich hab dann einfach den Text "moment" usw. eingetragen:
                                a0be6e24-deee-4535-808b-7348d7e7a281-image.png

                                DP's Richtig angelegt
                                

                                Öh.. welche meinst Du?

                                Das sind nicht unbedingt Fehler.
                                Hast du das Script schon mal gestartet? 
                                

                                Nee. Normalerweise bin ich es gewöhnt, dass ich das gar nicht erst probieren muss wenn die Entwicklungsumgebung Fehler wirft. Vor allem dann wenn es angeblich eine Methode nicht gibt.
                                Aber ich kann's mal probieren.
                                Moment...
                                Yep. Wie erwartet:
                                9f9c0e18-feb3-4fb3-a302-0c80ecdb5eed-image.png

                                Gruss Ralf

                                sigi234S 1 Antwort Letzte Antwort
                                0
                                • D derrapf

                                  @sigi234
                                  Ich hab's so gemacht (hoffentlich richtig). Stand nirgends wie es geht; ich hab dann einfach den Text "moment" usw. eingetragen:
                                  a0be6e24-deee-4535-808b-7348d7e7a281-image.png

                                  DP's Richtig angelegt
                                  

                                  Öh.. welche meinst Du?

                                  Das sind nicht unbedingt Fehler.
                                  Hast du das Script schon mal gestartet? 
                                  

                                  Nee. Normalerweise bin ich es gewöhnt, dass ich das gar nicht erst probieren muss wenn die Entwicklungsumgebung Fehler wirft. Vor allem dann wenn es angeblich eine Methode nicht gibt.
                                  Aber ich kann's mal probieren.
                                  Moment...
                                  Yep. Wie erwartet:
                                  9f9c0e18-feb3-4fb3-a302-0c80ecdb5eed-image.png

                                  Gruss Ralf

                                  sigi234S Online
                                  sigi234S Online
                                  sigi234
                                  Forum Testing Most Active
                                  schrieb am zuletzt editiert von sigi234
                                  #52

                                  @derrapf
                                  Du brauchst 4 DP
                                  Wie im Skript steht. Zeile 5,6,8,9

                                  Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                                  Immer Daten sichern!

                                  D 1 Antwort Letzte Antwort
                                  0
                                  • sigi234S sigi234

                                    @derrapf
                                    Du brauchst 4 DP
                                    Wie im Skript steht. Zeile 5,6,8,9

                                    D Offline
                                    D Offline
                                    derrapf
                                    schrieb am zuletzt editiert von
                                    #53

                                    @sigi234 Hab ich angelegt
                                    30f73271-df25-481a-b2f5-c4dcf0b90d92-image.png
                                    Aber das ändert nichts.
                                    Gruss Ralf

                                    NegaleinN GlasfaserG 2 Antworten Letzte Antwort
                                    0
                                    • D derrapf

                                      @sigi234 Hab ich angelegt
                                      30f73271-df25-481a-b2f5-c4dcf0b90d92-image.png
                                      Aber das ändert nichts.
                                      Gruss Ralf

                                      NegaleinN Offline
                                      NegaleinN Offline
                                      Negalein
                                      Global Moderator
                                      schrieb am zuletzt editiert von
                                      #54

                                      @derrapf sagte in Material Design Widgets: Skript Status:

                                      Aber das ändert nichts.

                                      stell mal dein Script hier rein.

                                      ° Node.js: 20.17.0 NPM: 10.8.2
                                      ° Proxmox, Ubuntu 22.04.3 LTS
                                      ° Fixer ---> iob fix

                                      1 Antwort Letzte Antwort
                                      0
                                      • D derrapf

                                        @sigi234 Hab ich angelegt
                                        30f73271-df25-481a-b2f5-c4dcf0b90d92-image.png
                                        Aber das ändert nichts.
                                        Gruss Ralf

                                        GlasfaserG Offline
                                        GlasfaserG Offline
                                        Glasfaser
                                        schrieb am zuletzt editiert von Glasfaser
                                        #55

                                        @derrapf

                                        Das Script wurde nicht richtig runtergeladen , es hat dann Fehler , dadurch die Error Meldung .

                                        ... compile   ....
                                        

                                        Lade es nochmal runter !!

                                        Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                                        1 Antwort Letzte Antwort
                                        0
                                        • ScroungerS Scrounger

                                          Skript zur Anzeige des Status aller Skripte mit dem Material Design IconList Widget

                                          Mit diesem Skript wird ein json string erzeugt mit dem Status aller Skripte. Diese Daten (Datenpunkt) kann dann im Material Design IconList Widget verwendet werden, um den Status der Skripte im VIS anzuzeigen.

                                          letzte Aktualierung: 04.03.2020

                                          Skript_Status.gif

                                          Voraussetzung:

                                          • Material Design Widgets v0.2.62

                                          Funktionen:

                                          • Anzeige des Status aller Skripte (Aktiviert, Deakitivert, Fehler)
                                          • Anzeige von Werten der Skripte(Sprache, letzte Änderung, Ordner)
                                          • Neustarten / Starten / Stoppen von Skripten
                                          • Sortier und Filter Funktion
                                          • Einstellungen, siehe im Skript Sektion Einstellungen, Funktion der Einstellungen ist dort als Kommentar beschrieben.

                                          Ist auch im Online Beispiel enthalten

                                          View zum importieren:

                                          {
                                            "settings": {
                                              "style": {
                                                "background_class": ""
                                              },
                                              "theme": "redmond",
                                              "sizex": "",
                                              "sizey": "",
                                              "gridSize": "",
                                              "snapType": null
                                            },
                                            "widgets": {
                                              "e00001": {
                                                "tpl": "tplVis-materialdesign-Icon-List",
                                                "data": {
                                                  "g_fixed": false,
                                                  "g_visibility": false,
                                                  "g_css_font_text": false,
                                                  "g_css_background": false,
                                                  "g_css_shadow_padding": false,
                                                  "g_css_border": false,
                                                  "g_gestures": false,
                                                  "g_signals": false,
                                                  "g_last_change": false,
                                                  "visibility-cond": "==",
                                                  "visibility-val": 1,
                                                  "visibility-groups-action": "hide",
                                                  "wrapItems": true,
                                                  "listItemDataMethod": "jsonStringObject",
                                                  "countListItems": "1",
                                                  "vibrateOnMobilDevices": "50",
                                                  "listLayout": "card",
                                                  "itemLayout": "horizontal",
                                                  "listType0": "text",
                                                  "showValueLabel0": "true",
                                                  "listType1": "text",
                                                  "showValueLabel1": "true",
                                                  "signals-cond-0": "==",
                                                  "signals-val-0": true,
                                                  "signals-icon-0": "/vis/signals/lowbattery.png",
                                                  "signals-icon-size-0": 0,
                                                  "signals-blink-0": false,
                                                  "signals-horz-0": 0,
                                                  "signals-vert-0": 0,
                                                  "signals-hide-edit-0": false,
                                                  "signals-cond-1": "==",
                                                  "signals-val-1": true,
                                                  "signals-icon-1": "/vis/signals/lowbattery.png",
                                                  "signals-icon-size-1": 0,
                                                  "signals-blink-1": false,
                                                  "signals-horz-1": 0,
                                                  "signals-vert-1": 0,
                                                  "signals-hide-edit-1": false,
                                                  "signals-cond-2": "==",
                                                  "signals-val-2": true,
                                                  "signals-icon-2": "/vis/signals/lowbattery.png",
                                                  "signals-icon-size-2": 0,
                                                  "signals-blink-2": false,
                                                  "signals-horz-2": 0,
                                                  "signals-vert-2": 0,
                                                  "signals-hide-edit-2": false,
                                                  "lc-type": "last-change",
                                                  "lc-is-interval": true,
                                                  "lc-is-moment": false,
                                                  "lc-format": "",
                                                  "lc-position-vert": "top",
                                                  "lc-position-horz": "right",
                                                  "lc-offset-vert": 0,
                                                  "lc-offset-horz": 0,
                                                  "lc-font-size": "12px",
                                                  "lc-font-family": "",
                                                  "lc-font-style": "",
                                                  "lc-bkg-color": "",
                                                  "lc-color": "",
                                                  "lc-border-width": "0",
                                                  "lc-border-style": "",
                                                  "lc-border-color": "",
                                                  "lc-border-radius": 10,
                                                  "lc-zindex": 0,
                                                  "json_string_oid": "0_userdata.0.vis.SkriptStatus.jsonList",
                                                  "maxItemsperRow": "6",
                                                  "iconItemMinWidth": "280",
                                                  "iconHeight": "35",
                                                  "buttonHeight": "70",
                                                  "labelFontSize": "22",
                                                  "subLabelFontSize": "14",
                                                  "subLabelFontColor": "#000000",
                                                  "labelFontFamily": "RobotoCondensed-Regular",
                                                  "subLabelFontFamily": "RobotoCondensed-Light",
                                                  "horizontalIconContainerWidth": "70"
                                                },
                                                "style": {
                                                  "left": "0px",
                                                  "top": "50px",
                                                  "width": "100%",
                                                  "height": "calc(100% - 50px)",
                                                  "overflow-x": "",
                                                  "overflow-y": "auto",
                                                  "z-index": "1"
                                                },
                                                "widgetSet": "materialdesign"
                                              },
                                              "e00002": {
                                                "tpl": "tplHtml",
                                                "data": {
                                                  "g_fixed": false,
                                                  "g_visibility": false,
                                                  "g_css_font_text": false,
                                                  "g_css_background": true,
                                                  "g_css_shadow_padding": false,
                                                  "g_css_border": false,
                                                  "g_gestures": false,
                                                  "g_signals": false,
                                                  "g_last_change": false,
                                                  "visibility-cond": "==",
                                                  "visibility-val": 1,
                                                  "visibility-groups-action": "hide",
                                                  "refreshInterval": "0",
                                                  "signals-cond-0": "==",
                                                  "signals-val-0": true,
                                                  "signals-icon-0": "/vis/signals/lowbattery.png",
                                                  "signals-icon-size-0": 0,
                                                  "signals-blink-0": false,
                                                  "signals-horz-0": 0,
                                                  "signals-vert-0": 0,
                                                  "signals-hide-edit-0": false,
                                                  "signals-cond-1": "==",
                                                  "signals-val-1": true,
                                                  "signals-icon-1": "/vis/signals/lowbattery.png",
                                                  "signals-icon-size-1": 0,
                                                  "signals-blink-1": false,
                                                  "signals-horz-1": 0,
                                                  "signals-vert-1": 0,
                                                  "signals-hide-edit-1": false,
                                                  "signals-cond-2": "==",
                                                  "signals-val-2": true,
                                                  "signals-icon-2": "/vis/signals/lowbattery.png",
                                                  "signals-icon-size-2": 0,
                                                  "signals-blink-2": false,
                                                  "signals-horz-2": 0,
                                                  "signals-vert-2": 0,
                                                  "signals-hide-edit-2": false,
                                                  "lc-type": "last-change",
                                                  "lc-is-interval": true,
                                                  "lc-is-moment": false,
                                                  "lc-format": "",
                                                  "lc-position-vert": "top",
                                                  "lc-position-horz": "right",
                                                  "lc-offset-vert": 0,
                                                  "lc-offset-horz": 0,
                                                  "lc-font-size": "12px",
                                                  "lc-font-family": "",
                                                  "lc-font-style": "",
                                                  "lc-bkg-color": "",
                                                  "lc-color": "",
                                                  "lc-border-width": "0",
                                                  "lc-border-style": "",
                                                  "lc-border-color": "",
                                                  "lc-border-radius": 10,
                                                  "lc-zindex": 0
                                                },
                                                "style": {
                                                  "left": "0",
                                                  "top": "0",
                                                  "width": "100%",
                                                  "height": "50px",
                                                  "background-color": "#44739e"
                                                },
                                                "widgetSet": "basic"
                                              },
                                              "e00003": {
                                                "tpl": "tplVis-materialdesign-Select",
                                                "data": {
                                                  "oid": "0_userdata.0.vis.SkriptStatus.sortMode",
                                                  "g_fixed": false,
                                                  "g_visibility": false,
                                                  "g_css_font_text": false,
                                                  "g_css_background": false,
                                                  "g_css_shadow_padding": false,
                                                  "g_css_border": false,
                                                  "g_gestures": false,
                                                  "g_signals": false,
                                                  "g_last_change": false,
                                                  "visibility-cond": "==",
                                                  "visibility-val": 1,
                                                  "visibility-groups-action": "hide",
                                                  "inputType": "text",
                                                  "inputLayout": "regular",
                                                  "showInputMessageAlways": "true",
                                                  "showInputCounter": false,
                                                  "clearIconShow": false,
                                                  "listDataMethod": "jsonStringObject",
                                                  "countSelectItems": "1",
                                                  "listPosition": "bottom",
                                                  "showSelectedIcon": "prepend-inner",
                                                  "showValue": false,
                                                  "signals-cond-0": "==",
                                                  "signals-val-0": true,
                                                  "signals-icon-0": "/vis/signals/lowbattery.png",
                                                  "signals-icon-size-0": 0,
                                                  "signals-blink-0": false,
                                                  "signals-horz-0": 0,
                                                  "signals-vert-0": 0,
                                                  "signals-hide-edit-0": false,
                                                  "signals-cond-1": "==",
                                                  "signals-val-1": true,
                                                  "signals-icon-1": "/vis/signals/lowbattery.png",
                                                  "signals-icon-size-1": 0,
                                                  "signals-blink-1": false,
                                                  "signals-horz-1": 0,
                                                  "signals-vert-1": 0,
                                                  "signals-hide-edit-1": false,
                                                  "signals-cond-2": "==",
                                                  "signals-val-2": true,
                                                  "signals-icon-2": "/vis/signals/lowbattery.png",
                                                  "signals-icon-size-2": 0,
                                                  "signals-blink-2": false,
                                                  "signals-horz-2": 0,
                                                  "signals-vert-2": 0,
                                                  "signals-hide-edit-2": false,
                                                  "lc-type": "last-change",
                                                  "lc-is-interval": true,
                                                  "lc-is-moment": false,
                                                  "lc-format": "",
                                                  "lc-position-vert": "top",
                                                  "lc-position-horz": "right",
                                                  "lc-offset-vert": 0,
                                                  "lc-offset-horz": 0,
                                                  "lc-font-size": "12px",
                                                  "lc-font-family": "",
                                                  "lc-font-style": "",
                                                  "lc-bkg-color": "",
                                                  "lc-color": "",
                                                  "lc-border-width": "0",
                                                  "lc-border-style": "",
                                                  "lc-border-color": "",
                                                  "lc-border-radius": 10,
                                                  "lc-zindex": 0,
                                                  "inputLabelText": "Sortieren nach",
                                                  "inputLabelColor": "#ffffff",
                                                  "inputLabelFontFamily": "RobotoCondensed-LightItalic",
                                                  "collapseIconColor": "#ffffff",
                                                  "collapseIconSize": "",
                                                  "jsonStringObject": "[\n\t{\n\t\t\"text\": \"Skriptname\",\n\t\t\"value\": \"name\",\n\t\t\"icon\": \"sort-alphabetical\"\n\t},\n\t{\n\t\t\"text\": \"letzte Änderung\",\n\t\t\"value\": \"lastChange\",\n\t\t\"icon\": \"clock-outline\"\n\t},\n\t{\n\t\t\"text\": \"Status\",\n\t\t\"value\": \"status\",\n\t\t\"icon\": \"information-variant\"\n\t},\n\t{\n\t\t\"text\": \"Ordner\",\n\t\t\"value\": \"folder\",\n\t\t\"icon\": \"folder\"\n\t}\t\n]",
                                                  "listPositionOffset": true,
                                                  "inputLayoutBackgroundColor": "transparent",
                                                  "inputLabelColorSelected": "#ffffff",
                                                  "inputTranslateX": "-15",
                                                  "clearIcon": "",
                                                  "inputLayoutBorderColorHover": "#ffffff",
                                                  "inputLayoutBorderColorSelected": "#ffffff",
                                                  "inputLayoutBorderColor": "#a1a1a1",
                                                  "listItemFontColor": "",
                                                  "inputTextColor": "#ffffff",
                                                  "inputTextFontFamily": "RobotoCondensed-LightItalic",
                                                  "prepandIcon": "",
                                                  "prepandIconColor": "",
                                                  "prepandIconSize": "",
                                                  "prepandInnerIcon": "",
                                                  "prepandInnerIconColor": "#ffffff",
                                                  "prepandInnerIconSize": "18",
                                                  "collapseIcon": "",
                                                  "inputTranslateY": "-12",
                                                  "listIconSelectedColor": "#44739e",
                                                  "listIconColor": "",
                                                  "appendOuterIcon": "",
                                                  "appendOuterIconSize": "2",
                                                  "listItemFont": "RobotoCondensed-Regular",
                                                  "listItemRippleEffectColor": "",
                                                  "inputLayoutBackgroundColorSelected": "",
                                                  "inputLayoutBackgroundColorHover": ""
                                                },
                                                "style": {
                                                  "left": "10px",
                                                  "top": "0px",
                                                  "z-index": "1",
                                                  "width": "calc(50% - 20px)",
                                                  "height": "40px"
                                                },
                                                "widgetSet": "materialdesign"
                                              },
                                              "e00004": {
                                                "tpl": "tplVis-materialdesign-Select",
                                                "data": {
                                                  "oid": "0_userdata.0.vis.SkriptStatus.filterMode",
                                                  "g_fixed": false,
                                                  "g_visibility": false,
                                                  "g_css_font_text": false,
                                                  "g_css_background": false,
                                                  "g_css_shadow_padding": false,
                                                  "g_css_border": false,
                                                  "g_gestures": false,
                                                  "g_signals": false,
                                                  "g_last_change": false,
                                                  "visibility-cond": "==",
                                                  "visibility-val": 1,
                                                  "visibility-groups-action": "hide",
                                                  "inputType": "text",
                                                  "inputLayout": "regular",
                                                  "showInputMessageAlways": "true",
                                                  "showInputCounter": false,
                                                  "clearIconShow": true,
                                                  "listDataMethod": "jsonStringObject",
                                                  "countSelectItems": "1",
                                                  "listPosition": "bottom",
                                                  "showSelectedIcon": "prepend-inner",
                                                  "showValue": false,
                                                  "signals-cond-0": "==",
                                                  "signals-val-0": true,
                                                  "signals-icon-0": "/vis/signals/lowbattery.png",
                                                  "signals-icon-size-0": 0,
                                                  "signals-blink-0": false,
                                                  "signals-horz-0": 0,
                                                  "signals-vert-0": 0,
                                                  "signals-hide-edit-0": false,
                                                  "signals-cond-1": "==",
                                                  "signals-val-1": true,
                                                  "signals-icon-1": "/vis/signals/lowbattery.png",
                                                  "signals-icon-size-1": 0,
                                                  "signals-blink-1": false,
                                                  "signals-horz-1": 0,
                                                  "signals-vert-1": 0,
                                                  "signals-hide-edit-1": false,
                                                  "signals-cond-2": "==",
                                                  "signals-val-2": true,
                                                  "signals-icon-2": "/vis/signals/lowbattery.png",
                                                  "signals-icon-size-2": 0,
                                                  "signals-blink-2": false,
                                                  "signals-horz-2": 0,
                                                  "signals-vert-2": 0,
                                                  "signals-hide-edit-2": false,
                                                  "lc-type": "last-change",
                                                  "lc-is-interval": true,
                                                  "lc-is-moment": false,
                                                  "lc-format": "",
                                                  "lc-position-vert": "top",
                                                  "lc-position-horz": "right",
                                                  "lc-offset-vert": 0,
                                                  "lc-offset-horz": 0,
                                                  "lc-font-size": "12px",
                                                  "lc-font-family": "",
                                                  "lc-font-style": "",
                                                  "lc-bkg-color": "",
                                                  "lc-color": "",
                                                  "lc-border-width": "0",
                                                  "lc-border-style": "",
                                                  "lc-border-color": "",
                                                  "lc-border-radius": 10,
                                                  "lc-zindex": 0,
                                                  "inputLabelText": "Filtern nach",
                                                  "inputLabelColor": "#ffffff",
                                                  "inputLabelFontFamily": "RobotoCondensed-LightItalic",
                                                  "collapseIconColor": "#ffffff",
                                                  "collapseIconSize": "",
                                                  "jsonStringObject": "[\n\t{\n\t\t\"text\": \"Fehler\",\n\t\t\"value\": \"error\",\n\t\t\"icon\": \"alert-box-outline\"\n\t},\n\t{\n\t\t\"text\": \"deaktiviert\",\n\t\t\"value\": \"deactivated\",\n\t\t\"icon\": \"checkbox-blank-outline\"\n\t},\t\n\t{\n\t\t\"text\": \"aktiviert\",\n\t\t\"value\": \"activated\",\n\t\t\"icon\": \"checkbox-intermediate\"\n\t}\n]",
                                                  "listPositionOffset": true,
                                                  "inputLayoutBackgroundColor": "transparent",
                                                  "inputLabelColorSelected": "#ffffff",
                                                  "inputTranslateX": "-15",
                                                  "clearIcon": "",
                                                  "inputLayoutBorderColorHover": "#ffffff",
                                                  "inputLayoutBorderColorSelected": "#ffffff",
                                                  "inputLayoutBorderColor": "#a1a1a1",
                                                  "listItemFontColor": "",
                                                  "inputTextColor": "#ffffff",
                                                  "inputTextFontFamily": "RobotoCondensed-LightItalic",
                                                  "prepandIcon": "",
                                                  "prepandIconColor": "",
                                                  "prepandIconSize": "",
                                                  "prepandInnerIcon": "",
                                                  "prepandInnerIconColor": "#ffffff",
                                                  "prepandInnerIconSize": "18",
                                                  "collapseIcon": "",
                                                  "inputTranslateY": "-12",
                                                  "listIconSelectedColor": "#44739e",
                                                  "listIconColor": "",
                                                  "appendOuterIcon": "",
                                                  "appendOuterIconSize": "2",
                                                  "listItemFont": "RobotoCondensed-Regular",
                                                  "listItemRippleEffectColor": "",
                                                  "inputLayoutBackgroundColorSelected": "",
                                                  "inputLayoutBackgroundColorHover": "",
                                                  "clearIconColor": "#ffffff"
                                                },
                                                "style": {
                                                  "left": "calc(50% + 10px)",
                                                  "top": "0px",
                                                  "z-index": "1",
                                                  "width": "calc(50% - 20px)",
                                                  "height": "40px"
                                                },
                                                "widgetSet": "materialdesign"
                                              }
                                            },
                                            "name": "SkriptStatus",
                                            "filterList": []
                                          }
                                          

                                          Hier hab ich beschrieben, wie man das layout am besten einstellt:
                                          https://forum.iobroker.net/topic/30661/material-design-widgets-adapter-status/5

                                          Skript:

                                          const moment = require("moment");
                                          
                                          // Skript Einstellungen *************************************************************************************************************************************************
                                          
                                          let dpList = '0_userdata.0.vis.SkriptStatus.jsonList';                      // Datenpunkt für IconList Widget (Typ: Zeichenkette (String))
                                          let dpskriptRestart = '0_userdata.0.vis.SkriptStatus.restart';              // Datenpunkt für Skript restart (Typ: Zeichenkette (String))
                                          
                                          let dpSortMode = '0_userdata.0.vis.SkriptStatus.sortMode';                  // Datenpunkt für Sortieren (Typ: Zeichenkette (String))
                                          let dpFilterMode = '0_userdata.0.vis.SkriptStatus.filterMode';              // Datenpunkt für Filter (Typ: Zeichenkette (String))
                                          
                                          const checkInterval = 30;                                                   // Interval wie oft Status der Skripte aktualisiert werden soll (in Sekunden)
                                          
                                          let sprache = 'de';                                                         // Sprache für formatierung letzte Änderung
                                          let formatierungLastChange = "ddd DD.MM - HH:mm";                           // Formatierung letzte Änderung -> siehe momentjs library
                                          
                                          let neustarten = true;                                                      // true: Skript wird neugestartet, false: Skript wird gestoppt oder gestartet
                                          
                                          let farbeSkriptAktiv = 'green';                                             // Status Bar Farbe wenn Skript aktiv ist
                                          let farbeSkriptDeaktiviert = 'darkgrey';                                    // Status Bar Farbe wenn Skript deaktiviert ist
                                          let farbeSkriptProblem = 'FireBrick';                                       // Status Bar Farbe wenn Skript Problem hat
                                          
                                          let sortResetAfter = 120;                                                   // Sortierung nach X Sekunden auf sortReset zurücksetzen (0=deaktiviert)
                                          let sortReset = 'name'                                                      // Sortierung auf die zurückgesetzt werden soll
                                          
                                          let filterResetAfter = 120;                                                 // Filter nach X Sekunden zurücksetzen (0=deaktiviert)
                                          
                                          // **********************************************************************************************************************************************************************
                                          
                                          // Fomate für moment Lib
                                          moment.locale(sprache);
                                          
                                          // auf Änderungen aktiver Skripts hören
                                          let enableSelector = `[id=javascript.*.scriptEnabled.*]`;
                                          let skriptEnableList = $(enableSelector);
                                          if (skriptEnableList.length === 0) {
                                              // Fehlermeldung ausgeben, wenn selector kein result liefert
                                              console.error(`no result for selector '${enableSelector}'`)
                                          } else {
                                              // listener nur für Änderung bei alive
                                              skriptEnableList.on(skriptStatus);
                                          }
                                          
                                          // auf Änderungen Skripts mit Problemen hören
                                          let problemSelector = `[id=javascript.*.scriptProblem.*]`;
                                          let skriptProblemList = $(problemSelector);
                                          if (skriptProblemList.length === 0) {
                                              // Fehlermeldung ausgeben, wenn selector kein result liefert
                                              console.error(`no result for selector '${problemSelector}'`)
                                          } else {
                                              // listener nur für Änderung bei alive
                                              skriptProblemList.on(skriptStatus);
                                          }
                                          
                                          
                                          // auf Änderungen der Sortieung hören
                                          on({ id: dpSortMode, change: 'any' }, skriptStatus);
                                          on({ id: dpSortMode, change: 'any' }, resetSort);
                                          
                                          // auf Änderungen der Filter hören
                                          on({ id: dpFilterMode, change: 'any' }, skriptStatus);
                                          on({ id: dpFilterMode, change: 'any' }, resetFilter);
                                          
                                          
                                          // Funktion adapterStatus alle x Sekunden ausführen
                                          schedule('*/' + checkInterval + ' * * * * *', skriptStatus);
                                          
                                          function skriptStatus() {
                                              try {
                                                  skriptList = [];
                                          
                                                  for (var i = 0; i <= skriptEnableList.length - 1; i++) {
                                                      let id = skriptEnableList[i];
                                                      let obj = getObject(id);
                                          
                                                      let scriptObj = undefined;
                                                      let scriptName = '';
                                                      let engineType = '';
                                                      let lastChangeText = '';
                                                      let lastChange = 0;
                                                      let image = 'image-off-outline';
                                                      let imageColor = '';
                                                      let statusBarColor = farbeSkriptDeaktiviert;
                                                      let status = 1;
                                          
                                          
                                                      if (obj && obj !== null && obj.native && obj.native.script) {
                                                          scriptObj = getObject(obj.native.script);
                                          
                                                          if (scriptObj && scriptObj.common) {
                                                              if (scriptObj.common.name) {
                                                                  scriptName = scriptObj.common.name;
                                                              }
                                          
                                                              if (scriptObj.common.engineType) {
                                                                  engineType = scriptObj.common.engineType.replace('/js', '').replace('/ts', '');
                                          
                                                                  if (engineType.toLowerCase() === 'Javascript'.toLowerCase()) {
                                                                      image = 'language-javascript';
                                                                      imageColor = '#ffca28';
                                                                  } else if (engineType.toLowerCase() === 'TypeScript'.toLowerCase()) {
                                                                      image = 'language-typescript';
                                                                      imageColor = '#007acc';
                                                                  } else if (engineType.toLowerCase() === 'Blockly'.toLowerCase()) {
                                                                      image = 'puzzle';
                                                                      imageColor = '#5a80a6';
                                                                  }
                                                              }
                                          
                                                              if (scriptObj.ts) {
                                                                  lastChange = scriptObj.ts;
                                                                  lastChangeText = moment(scriptObj.ts).format(formatierungLastChange);
                                                              }
                                          
                                                              if (scriptObj.common.enabled) {
                                                                  statusBarColor = farbeSkriptAktiv;
                                                                  status = 0;
                                                              }
                                          
                                                              if (myHelper().getStateValueIfExist(id) === 'true') {
                                                                  statusBarColor = farbeSkriptAktiv;
                                                                  status = 0;
                                                              }
                                          
                                                              if (myHelper().getStateValueIfExist(id.replace('.scriptEnabled.', '.scriptProblem.'), false) === 'true') {
                                                                  statusBarColor = farbeSkriptProblem;
                                                                  status = 2;
                                                              }
                                          
                                                              let folder = '-';
                                                              let folderList = id.replace('javascript.0.scriptEnabled.').split(".");
                                                              if (folderList.length > 1) {
                                                                  folder = id.replace('javascript.0.scriptEnabled.', '').replace('.' + folderList[folderList.length - 1], '');
                                                              }
                                          
                                                              let text = scriptName;
                                                              if (status === 2) {
                                                                  text = `<span class="mdi mdi-alert-box-outline" style="color: #ec0909;"></span> ${scriptName}`
                                                              }
                                          
                                                              let subText = `<div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                                  <div style="flex: 1;">Sprache</div>
                                                                                  <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;">${engineType}</div>
                                                                              </div>
                                                                              <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                                  <div style="flex: 1;">letzte Änderung</div>
                                                                                  <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;">${lastChangeText}</div>
                                                                              </div>
                                                                              <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px;">
                                                                                  <div style="flex: 1;">Ordner</div>
                                                                                  <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-overflow: ellipsis; white-space: normal; text-align: right;">${folder}</div>
                                                                              </div>`
                                          
                                                              skriptList.push({
                                                                  text: text,
                                                                  subText: subText,
                                                                  statusBarColor: statusBarColor,
                                                                  image: image,
                                                                  imageColor: imageColor,
                                                                  listType: "buttonState",
                                                                  objectId: dpskriptRestart,
                                                                  buttonStateValue: (obj && obj !== null && obj.native && obj.native.script) ? obj.native.script : '',
                                                                  showValueLabel: false,
                                                                  name: scriptName,
                                                                  lastChange: lastChange,
                                                                  status: status,
                                                                  folder: folder
                                                              });
                                                          }
                                                      }
                                                  }
                                          
                                                  let sortMode = myHelper().getStateValueIfExist(dpSortMode, 'name');
                                          
                                                  if (sortMode === 'name') {
                                                      skriptList.sort(function (a, b) {
                                                          return a[sortMode].toLowerCase() == b[sortMode].toLowerCase() ? 0 : +(a[sortMode].toLowerCase() > b[sortMode].toLowerCase()) || -1;
                                                      });
                                                  } else if (sortMode === 'lastChange' || sortMode === 'status' || sortMode === 'folder') {
                                                      skriptList.sort(function (a, b) {
                                                          return a[sortMode] == b[sortMode] ? 0 : +(a[sortMode] < b[sortMode]) || -1;
                                                      });
                                                  } else {
                                                      // default: nach name sortieren
                                                      sortMode = 'name'
                                                      skriptList.sort(function (a, b) {
                                                          return a[sortMode].toLowerCase() == b[sortMode].toLowerCase() ? 0 : +(a[sortMode].toLowerCase() > b[sortMode].toLowerCase()) || -1;
                                                      });
                                                  }
                                          
                                          
                                                  let filterMode = myHelper().getStateValueIfExist(dpFilterMode, null);
                                          
                                                  if (filterMode && filterMode !== null && filterMode !== '') {
                                                      if (filterMode === 'error') {
                                                          skriptList = skriptList.filter(function (item) {
                                                              return item.status === 2;
                                                          });
                                                      } else if (filterMode === 'deactivated') {
                                                          skriptList = skriptList.filter(function (item) {
                                                              return item.status === 1;
                                                          });
                                                      } else if (filterMode === 'activated') {
                                                          skriptList = skriptList.filter(function (item) {
                                                              return item.status === 0;
                                                          });
                                                      }
                                                  }
                                          
                                          
                                                  let result = JSON.stringify(skriptList);
                                                  if (existsState(dpList) && getState(dpList).val !== result) {
                                                      setState(dpList, result, true);
                                                  } else {
                                                      setState(dpList, result, true);
                                                  }
                                          
                                              } catch (err) {
                                                  console.error(`[skriptStatus] error: ${err.message}, stack: ${err.stack}`);
                                              }
                                          }
                                          
                                          
                                          // // Funktion um Skript starten / Stoppen
                                          on({ id: dpskriptRestart }, function (obj) {
                                              var scriptObj = getObject(obj.state.val.toString());
                                          
                                              if (neustarten) {
                                                  scriptObj.common.enabled = true;
                                                  setObject(obj.state.val.toString(), scriptObj);
                                              }
                                              else {
                                                  if (scriptObj && scriptObj.common) {
                                          
                                                      if (scriptObj.common.enabled) {
                                                          scriptObj.common.enabled = false;
                                                      } else {
                                                          scriptObj.common.enabled = true;
                                                      }
                                          
                                                      setObject(obj.state.val.toString(), scriptObj);
                                                  }
                                              }
                                          });
                                          
                                          function resetSort() {
                                              let sortMode = myHelper().getStateValueIfExist(dpSortMode, null);
                                          
                                              if (sortResetAfter > 0) {
                                                  setTimeout(function () {
                                                      if (sortMode !== null && sortMode === myHelper().getStateValueIfExist(dpSortMode, null)) {
                                                          setState(dpSortMode, sortReset);
                                                      }
                                                  }, sortResetAfter * 1000);
                                              }
                                          }
                                          
                                          function resetFilter() {
                                              let filterMode = myHelper().getStateValueIfExist(dpFilterMode, null);
                                          
                                              if (filterResetAfter > 0) {
                                                  setTimeout(function () {
                                                      if (filterMode !== null && filterMode === myHelper().getStateValueIfExist(dpFilterMode, null)) {
                                                          setState(dpFilterMode, '');
                                                      }
                                                  }, filterResetAfter * 1000);
                                              }
                                          }
                                          
                                          // Beim Staren des Skriptes Adapter Status abrufen
                                          skriptStatus();
                                          
                                          function myHelper() {
                                              return {
                                                  getStateValueIfExist: function (id, nullValue = undefined, prepand = '', append = '') {
                                                      if (existsState(id)) {
                                                          return prepand + getState(id).val + append;
                                                      } else {
                                                          return nullValue;
                                                      }
                                                  },
                                                  getCommonPropertyIfExist: function (object, prop, nullValue = undefined, prepand = '', append = '') {
                                                      if (myHelper().checkCommonPropertyExist(object, prop)) {
                                                          return prepand + object.common[prop] + append;
                                                      } else {
                                                          return nullValue;
                                                      }
                                                  },
                                                  checkCommonPropertyExist: function (object, prop) {
                                                      if (object && object.common && object.common[prop]) {
                                                          return true;
                                                      } else {
                                                          return false;
                                                      }
                                                  }
                                              }
                                          }
                                          

                                          Benötigte libraries & Einstellungen im Javascript Adapter:
                                          6222b915-4e9e-4025-98ec-0baedcaed5b1-grafik.png

                                          GarganoG Offline
                                          GarganoG Offline
                                          Gargano
                                          schrieb am zuletzt editiert von
                                          #56

                                          @scrounger Hab Dein Script gerade runtergeladen und ausprobiert. Es gab eine ganze Menge Logs, der Grund ist, das ich einige Scripts disabled habe und diese werden dann als Log ausgeworfen (Object nicht gefunden).
                                          Grund ist in der Zeile 86 zu suchen : bei disabled Scripts ist obj.native.script nicht vorhanden.
                                          Dies ist die Änderung und damit geht es dann :

                                          if (obj && obj !== null && obj.native && obj.native.script && (await existsObjectAsynct(obj.native.script)===true)) {
                                          

                                          dazu noch die function auf async setzen

                                          async function skriptStatus() {
                                          
                                          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

                                          643

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          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