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

  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. jarvis v3.0.0 - just another remarkable vis

NEWS

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

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

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

jarvis v3.0.0 - just another remarkable vis

Geplant Angeheftet Gesperrt Verschoben Tester
jarvismaterialmaterial uimaterialdesignvisvisualisierungvisualization
4.5k Beiträge 254 Kommentatoren 2.7m Aufrufe 209 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.
  • M MCU

    @dominik-f Zeig mal ein Beispiel für __label

    Dominik F.D Offline
    Dominik F.D Offline
    Dominik F.
    schrieb am zuletzt editiert von
    #2150

    @mcu

    :nth-child(1) sieht genauso aus wie auf dem Bild, bei anderen Zahlen sieht es so aus, als ob gar nichts passiert

    M 1 Antwort Letzte Antwort
    0
    • Dominik F.D Dominik F.

      @mcu

      :nth-child(1) sieht genauso aus wie auf dem Bild, bei anderen Zahlen sieht es so aus, als ob gar nichts passiert

      M Online
      M Online
      MCU
      schrieb am zuletzt editiert von
      #2151

      @dominik-f Probier mal:

      .jarvis-widget-3b737dde-06aa-4e77-b65e-de40f1150caa .jarvis-StateListItem-Action-primaryStateKey:nth-child(x) {
      	padding-right: 40px;
      }
      
      

      NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
      Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

      Dominik F.D 1 Antwort Letzte Antwort
      0
      • M MCU

        @dominik-f Probier mal:

        .jarvis-widget-3b737dde-06aa-4e77-b65e-de40f1150caa .jarvis-StateListItem-Action-primaryStateKey:nth-child(x) {
        	padding-right: 40px;
        }
        
        
        Dominik F.D Offline
        Dominik F.D Offline
        Dominik F.
        schrieb am zuletzt editiert von Dominik F.
        #2152

        @mcu

        Damit verschiebe ich alles nach links, Uhrzeiten, die Button und das Rollladenlevel

        Hab es zusätzlich mit:

        .jarvis-widget-3b737dde-06aa-4e77-b65e-de40f1150caa .q-item__label:nth-child(1) {
        	padding-right: 40px;
        }
        
        

        Da verschiebt er die Uhrzeiten, aber leider auch die Prozentangaben und es sieht wieder aus wie auf dem Bild

        M 1 Antwort Letzte Antwort
        0
        • Dominik F.D Dominik F.

          @mcu

          Damit verschiebe ich alles nach links, Uhrzeiten, die Button und das Rollladenlevel

          Hab es zusätzlich mit:

          .jarvis-widget-3b737dde-06aa-4e77-b65e-de40f1150caa .q-item__label:nth-child(1) {
          	padding-right: 40px;
          }
          
          

          Da verschiebt er die Uhrzeiten, aber leider auch die Prozentangaben und es sieht wieder aus wie auf dem Bild

          M Online
          M Online
          MCU
          schrieb am zuletzt editiert von
          #2153

          @dominik-f Und das?

          .jarvis-widget-3b737dde-06aa-4e77-b65e-de40f1150caa .jarvis-StateListItem-Action:nth-child(x) {
          	padding-right: 40px;
          }
          

          NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
          Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

          Dominik F.D 1 Antwort Letzte Antwort
          0
          • M MCU

            @dominik-f Und das?

            .jarvis-widget-3b737dde-06aa-4e77-b65e-de40f1150caa .jarvis-StateListItem-Action:nth-child(x) {
            	padding-right: 40px;
            }
            
            Dominik F.D Offline
            Dominik F.D Offline
            Dominik F.
            schrieb am zuletzt editiert von
            #2154

            @mcu sagte in jarvis v3.0.0 - just another remarkable vis:

                                                                                                                                        .jarvis-widget-3b737dde-06aa-4e77-b65e-de40f1150caa .jarvis-StateListItem-Action:nth-child(x) {                                                                                                                                                                            	padding-right: 40px;                                                                                                                                                                            }                                            
            

            Das hat funktioniert, danke.

            Allerdings verstehe ich nun die Zahlen die man für x setzen muss nicht mehr^^

            .jarvis-widget-3b737dde-06aa-4e77-b65e-de40f1150caa .jarvis-StateListItem-Action:nth-child(3) {
            	padding-right: 40px;
            }
            

            Warum muss da eine 3 hin?

            M 1 Antwort Letzte Antwort
            0
            • Dominik F.D Dominik F.

              @mcu sagte in jarvis v3.0.0 - just another remarkable vis:

                                                                                                                                          .jarvis-widget-3b737dde-06aa-4e77-b65e-de40f1150caa .jarvis-StateListItem-Action:nth-child(x) {                                                                                                                                                                            	padding-right: 40px;                                                                                                                                                                            }                                            
              

              Das hat funktioniert, danke.

              Allerdings verstehe ich nun die Zahlen die man für x setzen muss nicht mehr^^

              .jarvis-widget-3b737dde-06aa-4e77-b65e-de40f1150caa .jarvis-StateListItem-Action:nth-child(3) {
              	padding-right: 40px;
              }
              

              Warum muss da eine 3 hin?

              M Online
              M Online
              MCU
              schrieb am zuletzt editiert von
              #2155

              @dominik-f
              0591421d-846c-47d8-87db-050a38048afc-image.png

              NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
              Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

              Dominik F.D 2 Antworten Letzte Antwort
              0
              • M MCU

                @dominik-f
                0591421d-846c-47d8-87db-050a38048afc-image.png

                Dominik F.D Offline
                Dominik F.D Offline
                Dominik F.
                schrieb am zuletzt editiert von
                #2156

                @mcu

                Genau so hab ich es auch gedacht. Nur mit der 3 verschiebt sich gleichzeitig auch die 4,6 und 7.

                M 1 Antwort Letzte Antwort
                0
                • Dominik F.D Dominik F.

                  @mcu

                  Genau so hab ich es auch gedacht. Nur mit der 3 verschiebt sich gleichzeitig auch die 4,6 und 7.

                  M Online
                  M Online
                  MCU
                  schrieb am zuletzt editiert von
                  #2157

                  @dominik-f Besser wäre?

                  .jarvis-widget-3b737dde-06aa-4e77-b65e-de40f1150caa .jarvis-StateListItem:nth-child(3)  .jarvis-StateListItem-Action {
                  	padding-right: 40px;
                  }
                  
                  

                  NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
                  Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                  1 Antwort Letzte Antwort
                  0
                  • M MCU

                    @dominik-f
                    0591421d-846c-47d8-87db-050a38048afc-image.png

                    Dominik F.D Offline
                    Dominik F.D Offline
                    Dominik F.
                    schrieb am zuletzt editiert von
                    #2158

                    @mcu

                    Ich zeig dir mal warum ich so verwirrt bin:

                    Ich habe folgendes im Style drin:

                    .jarvis-widget-3b737dde-06aa-4e77-b65e-de40f1150caa .q-item__section--avatar:nth-child(1) {
                    	padding-left: 40px;
                    	transform: scale(0.8,0.8);
                    }
                    
                    .jarvis-widget-3b737dde-06aa-4e77-b65e-de40f1150caa .jarvis-StateListItem-Body:nth-child(2) {
                    	font-size: 12px;
                    }
                    
                    .jarvis-widget-3b737dde-06aa-4e77-b65e-de40f1150caa .jarvis-StateListItem-Action:nth-child(3) {
                    	padding-right: 20px;
                    	font-size: 12px;
                    }
                    

                    Die erste Anweisung verschiebt die Icons mit dem A und die Schrift Auto auf/zu nach rechts und macht die Symbole kleiner.

                    Die zweite Anweisung macht die Schrift auto auf/zu bei kleiner, auch wieder bei allen.

                    Die dritte verschiebt die Uhrzeiten.

                    Die Zahl hinter nth-child geht ja von 1 hoch auf 3, aber alles bezieht sich immer auf die 3,4,6 und 7 bei deinem Bild.

                    1 Antwort Letzte Antwort
                    0
                    • H Offline
                      H Offline
                      Herbie
                      schrieb am zuletzt editiert von Herbie
                      #2159

                      Hallo zusammen,

                      ich bin neu hier und auch neu in iobroker sowie Jarvis. Ich hoffe das ist der richtige Thread, auch wenn es eine Anfängerfrage ist. Zu meinem System

                      Host: Raspi 4
                      iobroker: 5.2.3
                      jarvis: 3.0.11

                      iobroker läuft in einem Docker Container. Meine Frage dreht sich um die Nutzung von Datenpunkten in jarvis. Über MQTT empfange ich einen JSON string mit verschiedenen Werten. Den parse ich in iobroker und schreibe mir die Einzelwerte in states. Einer der States (es funktioniert aber kein State) sieht so aus:

                      {
                        "common": {
                          "name": "b0",
                          "desc": "Manuell erzeugt",
                          "role": "state",
                          "type": "boolean",
                          "read": true,
                          "write": true,
                          "def": false
                        },
                        "type": "state",
                        "from": "system.adapter.admin.0",
                        "user": "system.user.admin",
                        "ts": 1645457158100,
                        "_id": "0_userdata.0.battery_system.packs.0.error.b0",
                        "acl": {
                          "object": 1636,
                          "state": 1636,
                          "owner": "system.user.admin",
                          "ownerGroup": "system.group.administrator"
                        }
                      }
                      

                      Mein Objektbaum in iobroker sieht so aus:
                      54700b23-93e3-4080-9a5e-e727b9224cc7-grafik.png

                      Der Datenpunktpfad ist also "0_userdata.0.battery_system.packs.0.error.b0". Jetzt möchte ich diesen Datenpunkt in jarvis einbinden/nutzen. Dazu gehe ich auf "Gerät hinzufügen" und trage das so ein:
                      f1e798ba-e1cb-4468-933c-167eab1f3b99-grafik.png
                      Im Layout habe ich dann eine HomeKitTile (habs aber auch mit StateList versucht) wie folgt angelegt:
                      823bcbda-544c-4235-8b6f-08d1b4c9b75c-grafik.png
                      Und das ist dann das Ergebnis. Daneben sieht man noch einen anderen Datenpunkt den ich direkt aus dem Raspi2 Adapter ausgelesen habe. Dort kommt die selbe Fehlermeldung:
                      5b90a782-f89c-44a7-b677-231a2f6c6a7f-grafik.png

                      Jetzt zu meiner Frage: Was mache ich falsch? Das ist ja so grundlegend das ich nicht verstehe wie das nicht funktionieren kann. Vielleicht könnt ihr ja einem Neuling auf die Sprünge helfen.

                      Sekundärfragen: Ich habe wirklich einige Zeit gegoogelt, aber nur einer sehr oberflächliche Doku gefunden. Ich vermute das es noch keine detailiertere gibt, aber vielleicht wisst ihr da mehr. Ich habe nämlich im HomeKitTile (und den anderen) die Einträge nicht verstanden. Was sind "body state", "body element" und "secondary state"? Trigger Element verstehe ich aktuell so: dort kann ich einen Trigger auslösen der etwas mit dem "Action state" macht. Ist das richtig? Aber was mache ich wenn ich nur einen Wert anzeigen lassen will?

                      Besten Dank!

                      H M 2 Antworten Letzte Antwort
                      0
                      • A Offline
                        A Offline
                        Aufruf
                        schrieb am zuletzt editiert von
                        #2160

                        Über die Einstellungen ist es ja bereits möglich, ein spezielles Layout für das Smartphone zu erstellen. Leider wird das bei mir dann auch vom iPad verwendet. Hier würde ich gerne haben, dass das iPad das Desktop Layout verwendet und das Smartphone Layout dann nur auf dem Handy erscheint. Kann man das ändern oder über CSS erzwingen?

                        M 1 Antwort Letzte Antwort
                        0
                        • H Herbie

                          Hallo zusammen,

                          ich bin neu hier und auch neu in iobroker sowie Jarvis. Ich hoffe das ist der richtige Thread, auch wenn es eine Anfängerfrage ist. Zu meinem System

                          Host: Raspi 4
                          iobroker: 5.2.3
                          jarvis: 3.0.11

                          iobroker läuft in einem Docker Container. Meine Frage dreht sich um die Nutzung von Datenpunkten in jarvis. Über MQTT empfange ich einen JSON string mit verschiedenen Werten. Den parse ich in iobroker und schreibe mir die Einzelwerte in states. Einer der States (es funktioniert aber kein State) sieht so aus:

                          {
                            "common": {
                              "name": "b0",
                              "desc": "Manuell erzeugt",
                              "role": "state",
                              "type": "boolean",
                              "read": true,
                              "write": true,
                              "def": false
                            },
                            "type": "state",
                            "from": "system.adapter.admin.0",
                            "user": "system.user.admin",
                            "ts": 1645457158100,
                            "_id": "0_userdata.0.battery_system.packs.0.error.b0",
                            "acl": {
                              "object": 1636,
                              "state": 1636,
                              "owner": "system.user.admin",
                              "ownerGroup": "system.group.administrator"
                            }
                          }
                          

                          Mein Objektbaum in iobroker sieht so aus:
                          54700b23-93e3-4080-9a5e-e727b9224cc7-grafik.png

                          Der Datenpunktpfad ist also "0_userdata.0.battery_system.packs.0.error.b0". Jetzt möchte ich diesen Datenpunkt in jarvis einbinden/nutzen. Dazu gehe ich auf "Gerät hinzufügen" und trage das so ein:
                          f1e798ba-e1cb-4468-933c-167eab1f3b99-grafik.png
                          Im Layout habe ich dann eine HomeKitTile (habs aber auch mit StateList versucht) wie folgt angelegt:
                          823bcbda-544c-4235-8b6f-08d1b4c9b75c-grafik.png
                          Und das ist dann das Ergebnis. Daneben sieht man noch einen anderen Datenpunkt den ich direkt aus dem Raspi2 Adapter ausgelesen habe. Dort kommt die selbe Fehlermeldung:
                          5b90a782-f89c-44a7-b677-231a2f6c6a7f-grafik.png

                          Jetzt zu meiner Frage: Was mache ich falsch? Das ist ja so grundlegend das ich nicht verstehe wie das nicht funktionieren kann. Vielleicht könnt ihr ja einem Neuling auf die Sprünge helfen.

                          Sekundärfragen: Ich habe wirklich einige Zeit gegoogelt, aber nur einer sehr oberflächliche Doku gefunden. Ich vermute das es noch keine detailiertere gibt, aber vielleicht wisst ihr da mehr. Ich habe nämlich im HomeKitTile (und den anderen) die Einträge nicht verstanden. Was sind "body state", "body element" und "secondary state"? Trigger Element verstehe ich aktuell so: dort kann ich einen Trigger auslösen der etwas mit dem "Action state" macht. Ist das richtig? Aber was mache ich wenn ich nur einen Wert anzeigen lassen will?

                          Besten Dank!

                          H Offline
                          H Offline
                          Herbie
                          schrieb am zuletzt editiert von
                          #2161

                          @herbie
                          Ich glaube ich habe meinen Fehler entdeckt. Ich hätte in den Geräten selbst noch den Datenpunkt zur Anzeige und für den Trigger eintragen müssen. Ich probier noch ein wenig rum, glaube aber meine Frage hat sich erledigt.

                          1 Antwort Letzte Antwort
                          0
                          • A Aufruf

                            Über die Einstellungen ist es ja bereits möglich, ein spezielles Layout für das Smartphone zu erstellen. Leider wird das bei mir dann auch vom iPad verwendet. Hier würde ich gerne haben, dass das iPad das Desktop Layout verwendet und das Smartphone Layout dann nur auf dem Handy erscheint. Kann man das ändern oder über CSS erzwingen?

                            M Online
                            M Online
                            MCU
                            schrieb am zuletzt editiert von
                            #2162

                            @aufruf Beeinflussbar über die Einstellungen:
                            d2096025-6285-4b44-8a76-fb93e7a3e5ed-image.png

                            NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
                            Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                            A 1 Antwort Letzte Antwort
                            1
                            • H Herbie

                              Hallo zusammen,

                              ich bin neu hier und auch neu in iobroker sowie Jarvis. Ich hoffe das ist der richtige Thread, auch wenn es eine Anfängerfrage ist. Zu meinem System

                              Host: Raspi 4
                              iobroker: 5.2.3
                              jarvis: 3.0.11

                              iobroker läuft in einem Docker Container. Meine Frage dreht sich um die Nutzung von Datenpunkten in jarvis. Über MQTT empfange ich einen JSON string mit verschiedenen Werten. Den parse ich in iobroker und schreibe mir die Einzelwerte in states. Einer der States (es funktioniert aber kein State) sieht so aus:

                              {
                                "common": {
                                  "name": "b0",
                                  "desc": "Manuell erzeugt",
                                  "role": "state",
                                  "type": "boolean",
                                  "read": true,
                                  "write": true,
                                  "def": false
                                },
                                "type": "state",
                                "from": "system.adapter.admin.0",
                                "user": "system.user.admin",
                                "ts": 1645457158100,
                                "_id": "0_userdata.0.battery_system.packs.0.error.b0",
                                "acl": {
                                  "object": 1636,
                                  "state": 1636,
                                  "owner": "system.user.admin",
                                  "ownerGroup": "system.group.administrator"
                                }
                              }
                              

                              Mein Objektbaum in iobroker sieht so aus:
                              54700b23-93e3-4080-9a5e-e727b9224cc7-grafik.png

                              Der Datenpunktpfad ist also "0_userdata.0.battery_system.packs.0.error.b0". Jetzt möchte ich diesen Datenpunkt in jarvis einbinden/nutzen. Dazu gehe ich auf "Gerät hinzufügen" und trage das so ein:
                              f1e798ba-e1cb-4468-933c-167eab1f3b99-grafik.png
                              Im Layout habe ich dann eine HomeKitTile (habs aber auch mit StateList versucht) wie folgt angelegt:
                              823bcbda-544c-4235-8b6f-08d1b4c9b75c-grafik.png
                              Und das ist dann das Ergebnis. Daneben sieht man noch einen anderen Datenpunkt den ich direkt aus dem Raspi2 Adapter ausgelesen habe. Dort kommt die selbe Fehlermeldung:
                              5b90a782-f89c-44a7-b677-231a2f6c6a7f-grafik.png

                              Jetzt zu meiner Frage: Was mache ich falsch? Das ist ja so grundlegend das ich nicht verstehe wie das nicht funktionieren kann. Vielleicht könnt ihr ja einem Neuling auf die Sprünge helfen.

                              Sekundärfragen: Ich habe wirklich einige Zeit gegoogelt, aber nur einer sehr oberflächliche Doku gefunden. Ich vermute das es noch keine detailiertere gibt, aber vielleicht wisst ihr da mehr. Ich habe nämlich im HomeKitTile (und den anderen) die Einträge nicht verstanden. Was sind "body state", "body element" und "secondary state"? Trigger Element verstehe ich aktuell so: dort kann ich einen Trigger auslösen der etwas mit dem "Action state" macht. Ist das richtig? Aber was mache ich wenn ich nur einen Wert anzeigen lassen will?

                              Besten Dank!

                              M Online
                              M Online
                              MCU
                              schrieb am zuletzt editiert von
                              #2163

                              @herbie Vielleicht mal durchschauen?
                              https://mcuiobroker.gitbook.io/jarvis-infos/jarvis/v3-fuer-einsteiger

                              NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
                              Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                              1 Antwort Letzte Antwort
                              0
                              • M MCU

                                @aufruf Beeinflussbar über die Einstellungen:
                                d2096025-6285-4b44-8a76-fb93e7a3e5ed-image.png

                                A Offline
                                A Offline
                                Aufruf
                                schrieb am zuletzt editiert von
                                #2164

                                @mcu

                                Super, Danke und gut zu wissen. Hast du noch ein Tip wie ich die Zahlen für das beschriebene Szenario ändern muss oder muss ich einfach mal wild probieren? :)

                                M 1 Antwort Letzte Antwort
                                0
                                • A Aufruf

                                  @mcu

                                  Super, Danke und gut zu wissen. Hast du noch ein Tip wie ich die Zahlen für das beschriebene Szenario ändern muss oder muss ich einfach mal wild probieren? :)

                                  M Online
                                  M Online
                                  MCU
                                  schrieb am zuletzt editiert von
                                  #2165

                                  @aufruf https://mcuiobroker.gitbook.io/jarvis-infos/jarvis/system-effektprog./bildschirmgroesse-handy-jarvis

                                  NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
                                  Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                                  1 Antwort Letzte Antwort
                                  0
                                  • R RkcCorian

                                    @mcu Moin Mcu! Wie versprochen noch die Info bzgl. dem responsiven Grundriss mit VIS. Hoffe das hilft auch Anderen! :-)

                                    Idee:

                                    • Ein "Master"-Widget mit dem Grundriss (Erstellt mit SweetHome3D), welches laufend an die Bildschirmgröße angepasst wird (Position inkl. eingefügtem Abstand zum Rand, sowie die Größe mit Prüfung ob abhängig von Höhe oder Breite Skaliert werden soll, Mittige Position)
                                    • Einige "Link"-Widgets darüber (z-index), Verhältnis der Position und Größe bezogen auf das "Master"-Widget wird beim Start einmalig ermittelt. Weitere Skalierung immer anhand dieser Daten
                                    • Einige "Symbol"-Widgets darüber (z-index), Verhältnis der Position und Größe bezogen auf das "Master"-Widget wird beim Start einmalig ermittelt. Weitere Skalierung immer anhand dieser Daten
                                    • Skalierung mit unterschiedlichen Parametern für Handy vs. PC/Tablet durch Erkennung des Gerätes beim Starten

                                    Ergebnis sieht dann bspw. so aus...
                                    0031.jpg

                                    ===================================
                                    In VIS...

                                    • "Master"-Widget mit Grundriss
                                      6f444374-47c6-4ade-a7d5-f4ac70120038-image.png

                                    • "Link"-Widget
                                      3a120d48-79fe-4cc2-aea9-59f478226db0-image.png

                                    • "Symbol"-Widget
                                      debf5e5f-3e03-4d44-99fa-40e1da18753c-image.png

                                    • Skript um die Responsivität zu erreichen

                                    // Initialisiere Konstanten
                                    /* ======================================================== */
                                    var debug = false;
                                    
                                    var spaceSurroundingMin = 20;
                                    var spaceSurroundingScreensizeDependent = 20;
                                    var spaceSurroundingScreensizeDependentFactor = 600;
                                    
                                    var widgetNameGrundriss = "#w00002";
                                    var widgetNameLinkWohnung = "#w00012";
                                    var widgetNameLinkWohnzimmer = "#w00001";
                                    var widgetNameLinkKueche = "#w00003";
                                    var widgetNameLinkEsszimmer = "#w00011";
                                    var widgetNameLinkFlur1 = "#w00010";
                                    var widgetNameLinkFlur2 = "#w00009";
                                    var widgetNameLinkSchlafzimmer = "#w00004";
                                    var widgetNameLinkKinderzimmer = "#w00005";
                                    var widgetNameLinkBadezimmer = "#w00006";
                                    var widgetNameLinkGaesteWc = "#w00007";
                                    var widgetNameLinkAbstellraum = "#w00008";
                                    
                                    var widgetNameSymbolWohnung = "#w00017";
                                    var widgetNameSymbolWohnzimmer = "#w00013";
                                    var widgetNameSymbolKueche = "#w00014";
                                    var widgetNameSymbolEsszimmer = "#w00015";
                                    var widgetNameSymbolFlur = "#w00016";
                                    var widgetNameSymbolSchlafzimmer = "#w00018";
                                    var widgetNameSymbolKinderzimmer = "#w00019";
                                    var widgetNameSymbolBadezimmer = "#w00020";
                                    var widgetNameSymbolGaesteWc = "#w00021";
                                    var widgetNameSymbolAbstellraum = "#w00022";
                                    
                                    
                                    // Warten bis Element geladen wurde
                                    /* ======================================================== */
                                    function waitForElement(parent, elementPath, wid, widgetName, callBack, counter = 0, debug = false)
                                    {
                                        if (counter < 10000)
                                        {
                                            setTimeout(function ()
                                            {
                                                if (parent.find(elementPath).length > 0)
                                                {
                                                    if (debug) console.log(`[${widgetName} ${wid}] it took ${counter}ms to wait for the element '${elementPath}'`);
                                                    callBack();
                                                } else
                                                {
                                                    if (debug) console.log(`[${widgetName} ${wid}] wait for element '${elementPath}'`);
                                                    counter++;
                                                    waitForElement(parent, elementPath, wid, widgetName, callBack, counter, debug);
                                                }
                                            }, 1);
                                        } else
                                        {
                                            console.warn(`[${widgetName} ${wid}] stop waiting after ${counter} retries`);
                                            callBack();
                                        }
                                    }
                                    
                                    
                                    // Erkennen auf welchem Gerät die VIS läuft
                                    /* ======================================================== */
                                    function getDevice(debug = false)
                                    {
                                        if(window.navigator.userAgent.match(/Mobile/i)
                                        || window.navigator.userAgent.match(/iPhone/i)
                                        || window.navigator.userAgent.match(/iPod/i)
                                        || window.navigator.userAgent.match(/IEMobile/i)
                                        || window.navigator.userAgent.match(/Windows Phone/i)
                                        || window.navigator.userAgent.match(/Android/i)
                                        || window.navigator.userAgent.match(/BlackBerry/i)
                                        || window.navigator.userAgent.match(/webOS/i))
                                        {
                                            statusMobile = true;
                                        } 
                                        else
                                        {
                                            statusMobile = false;
                                        }
                                        if(window.navigator.userAgent.match(/Tablet/i)
                                        || window.navigator.userAgent.match(/iPad/i)
                                        || window.navigator.userAgent.match(/Nexus 7/i)
                                        || window.navigator.userAgent.match(/Nexus 10/i)
                                        || window.navigator.userAgent.match(/SM-T500/i)
                                        || window.navigator.userAgent.match(/KFAPWI/i))
                                        {
                                            statusTablet = true;
                                        } 
                                        else
                                        {
                                            statusTablet = false;
                                        }
                                      
                                        if ((statusMobile === true) && (statusTablet === true))
                                        {
                                            device = "tablet";
                                        }
                                        else if ((statusMobile === true) && (statusTablet === false))
                                        {
                                            device = "mobilePhone";    
                                        }
                                        else
                                        {
                                            device = "pc";    
                                        }
                                    
                                        if (debug === true)
                                        {
                                            console.log("Navigator User Agent: " + navigator.userAgent);
                                            console.log("Erkanntes Gerät: " + device);
                                        }
                                    }
                                    
                                    
                                    // Initialisiere Werte für die Skalierung der Wohnungselemente
                                    /* ======================================================== */
                                    function initResizeApartment(debug = false)
                                    {
                                        // Größe Grundriss
                                        grundrissStyle = window.getComputedStyle(document.querySelector('#w00002'));
                                        grundrissLeft = (grundrissStyle.left).replace("px", "");
                                        grundrissTop = (grundrissStyle.top).replace("px", "");
                                        grundrissWidth = $(widgetNameGrundriss).width();
                                        grundrissHeigth = $(widgetNameGrundriss).height(); 
                                        grundrissFactor = grundrissWidth / grundrissHeigth;
                                    
                                        if (debug === true)
                                        {
                                            console.log("GrundrissLeft: " + grundrissLeft);
                                            console.log("GrundrissTop: " + grundrissTop);
                                        }
                                        
                                        // Größe Wohnung
                                        linkWohnungStyle = window.getComputedStyle(document.querySelector('#w00012'));
                                        linkWohnungLeft = (linkWohnungStyle.left).replace("px", "") - grundrissLeft;
                                        linkWohnungTop = (linkWohnungStyle.top).replace("px", "") - grundrissTop;
                                        linkWohnungFactorLeft = grundrissWidth / linkWohnungLeft;
                                        linkWohnungFactorTop = grundrissHeigth / linkWohnungTop;
                                        linkWohnungFactorWidth = grundrissWidth / ($(widgetNameLinkWohnung).width());
                                        linkWohnungFactorHeigth = grundrissHeigth/ ($(widgetNameLinkWohnung).height());
                                        
                                        symbolWohnungStyle = window.getComputedStyle(document.querySelector('#w00017'));
                                        symbolWohnungLeft = (symbolWohnungStyle.left).replace("px", "") - grundrissLeft;
                                        symbolWohnungTop = (symbolWohnungStyle.top).replace("px", "") - grundrissTop;
                                        symbolWohnungFactorLeft = grundrissWidth / symbolWohnungLeft;
                                        symbolWohnungFactorTop = grundrissHeigth / symbolWohnungTop;
                                        symbolWohnungFactorWidth = grundrissWidth / ($(widgetNameSymbolWohnung).width());
                                        symbolWohnungFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolWohnung).height());
                                    
                                        // Größe Wohnzimmer
                                        linkWohnzimmerStyle = window.getComputedStyle(document.querySelector('#w00001'));
                                        linkWohnzimmerLeft = (linkWohnzimmerStyle.left).replace("px", "") - grundrissLeft;
                                        linkWohnzimmerTop = (linkWohnzimmerStyle.top).replace("px", "") - grundrissTop;
                                        linkWohnzimmerFactorLeft = grundrissWidth / linkWohnzimmerLeft;
                                        linkWohnzimmerFactorTop = grundrissHeigth / linkWohnzimmerTop;
                                        linkWohnzimmerFactorWidth = grundrissWidth / ($(widgetNameLinkWohnzimmer).width());
                                        linkWohnzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkWohnzimmer).height());
                                        
                                        symbolWohnzimmerStyle = window.getComputedStyle(document.querySelector('#w00013'));
                                        symbolWohnzimmerLeft = (symbolWohnzimmerStyle.left).replace("px", "") - grundrissLeft;
                                        symbolWohnzimmerTop = (symbolWohnzimmerStyle.top).replace("px", "") - grundrissTop;
                                        symbolWohnzimmerFactorLeft = grundrissWidth / symbolWohnzimmerLeft;
                                        symbolWohnzimmerFactorTop = grundrissHeigth / symbolWohnzimmerTop;
                                        symbolWohnzimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolWohnzimmer).width());
                                        symbolWohnzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolWohnzimmer).height()); 
                                    
                                        // Größe Küche
                                        linkKuecheStyle = window.getComputedStyle(document.querySelector('#w00003'));
                                        linkKuecheLeft = (linkKuecheStyle.left).replace("px", "") - grundrissLeft;
                                        linkKuecheTop = (linkKuecheStyle.top).replace("px", "") - grundrissTop;
                                        linkKuecheFactorLeft = grundrissWidth / linkKuecheLeft;
                                        linkKuecheFactorTop = grundrissHeigth / linkKuecheTop;
                                        linkKuecheFactorWidth = grundrissWidth / ($(widgetNameLinkKueche).width());
                                        linkKuecheFactorHeigth = grundrissHeigth/ ($(widgetNameLinkKueche).height());
                                        
                                        symbolKuecheStyle = window.getComputedStyle(document.querySelector('#w00014'));
                                        symbolKuecheLeft = (symbolKuecheStyle.left).replace("px", "") - grundrissLeft;
                                        symbolKuecheTop = (symbolKuecheStyle.top).replace("px", "") - grundrissTop;
                                        symbolKuecheFactorLeft = grundrissWidth / symbolKuecheLeft;
                                        symbolKuecheFactorTop = grundrissHeigth / symbolKuecheTop;
                                        symbolKuecheFactorWidth = grundrissWidth / ($(widgetNameSymbolKueche).width());
                                        symbolKuecheFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolKueche).height());
                                        
                                        // Größe Esszimmer
                                        linkEsszimmerStyle = window.getComputedStyle(document.querySelector('#w00011'));
                                        linkEsszimmerLeft = (linkEsszimmerStyle.left).replace("px", "") - grundrissLeft;
                                        linkEsszimmerTop = (linkEsszimmerStyle.top).replace("px", "") - grundrissTop;
                                        linkEsszimmerFactorLeft = grundrissWidth / linkEsszimmerLeft;
                                        linkEsszimmerFactorTop = grundrissHeigth / linkEsszimmerTop;
                                        linkEsszimmerFactorWidth = grundrissWidth / ($(widgetNameLinkEsszimmer).width());
                                        linkEsszimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkEsszimmer).height());
                                        
                                        symbolEsszimmerStyle = window.getComputedStyle(document.querySelector('#w00015'));
                                        symbolEsszimmerLeft = (symbolEsszimmerStyle.left).replace("px", "") - grundrissLeft;
                                        symbolEsszimmerTop = (symbolEsszimmerStyle.top).replace("px", "") - grundrissTop;
                                        symbolEsszimmerFactorLeft = grundrissWidth / symbolEsszimmerLeft;
                                        symbolEsszimmerFactorTop = grundrissHeigth / symbolEsszimmerTop;
                                        symbolEsszimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolEsszimmer).width());
                                        symbolEsszimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolEsszimmer).height());
                                    
                                        // Größe Flur
                                        linkFlur1Style = window.getComputedStyle(document.querySelector('#w00010'));
                                        linkFlur1Left = (linkFlur1Style.left).replace("px", "") - grundrissLeft;
                                        linkFlur1Top = (linkFlur1Style.top).replace("px", "") - grundrissTop;
                                        linkFlur1FactorLeft = grundrissWidth / linkFlur1Left;
                                        linkFlur1FactorTop = grundrissHeigth / linkFlur1Top;
                                        linkFlur1FactorWidth = grundrissWidth / ($(widgetNameLinkFlur1).width());
                                        linkFlur1FactorHeigth = grundrissHeigth/ ($(widgetNameLinkFlur1).height()); 
                                    
                                        linkFlur2Style = window.getComputedStyle(document.querySelector('#w00009'));
                                        linkFlur2Left = (linkFlur2Style.left).replace("px", "") - grundrissLeft;
                                        linkFlur2Top = (linkFlur2Style.top).replace("px", "") - grundrissTop;
                                        linkFlur2FactorLeft = grundrissWidth / linkFlur2Left;
                                        linkFlur2FactorTop = grundrissHeigth / linkFlur2Top;
                                        linkFlur2FactorWidth = grundrissWidth / ($(widgetNameLinkFlur2).width());
                                        linkFlur2FactorHeigth = grundrissHeigth/ ($(widgetNameLinkFlur2).height());
                                        
                                        symbolFlurStyle = window.getComputedStyle(document.querySelector('#w00016'));
                                        symbolFlurLeft = (symbolFlurStyle.left).replace("px", "") - grundrissLeft;
                                        symbolFlurTop = (symbolFlurStyle.top).replace("px", "") - grundrissTop;
                                        symbolFlurFactorLeft = grundrissWidth / symbolFlurLeft;
                                        symbolFlurFactorTop = grundrissHeigth / symbolFlurTop;
                                        symbolFlurFactorWidth = grundrissWidth / ($(widgetNameSymbolFlur).width());
                                        symbolFlurFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolFlur).height());
                                    
                                        // Größe Schlafzimmer
                                        linkSchlafzimmerStyle = window.getComputedStyle(document.querySelector('#w00004'));
                                        linkSchlafzimmerLeft = (linkSchlafzimmerStyle.left).replace("px", "") - grundrissLeft;
                                        linkSchlafzimmerTop = (linkSchlafzimmerStyle.top).replace("px", "") - grundrissTop;
                                        linkSchlafzimmerFactorLeft = grundrissWidth / linkSchlafzimmerLeft;
                                        linkSchlafzimmerFactorTop = grundrissHeigth / linkSchlafzimmerTop;
                                        linkSchlafzimmerFactorWidth = grundrissWidth / ($(widgetNameLinkSchlafzimmer).width());
                                        linkSchlafzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkSchlafzimmer).height());
                                        
                                        symbolSchlafzimmerStyle = window.getComputedStyle(document.querySelector('#w00018'));
                                        symbolSchlafzimmerLeft = (symbolSchlafzimmerStyle.left).replace("px", "") - grundrissLeft;
                                        symbolSchlafzimmerTop = (symbolSchlafzimmerStyle.top).replace("px", "") - grundrissTop;
                                        symbolSchlafzimmerFactorLeft = grundrissWidth / symbolSchlafzimmerLeft;
                                        symbolSchlafzimmerFactorTop = grundrissHeigth / symbolSchlafzimmerTop;
                                        symbolSchlafzimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolSchlafzimmer).width());
                                        symbolSchlafzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolSchlafzimmer).height());
                                    
                                        // Größe Kinderzimmer
                                        linkKinderzimmerStyle = window.getComputedStyle(document.querySelector('#w00005'));
                                        linkKinderzimmerLeft = (linkKinderzimmerStyle.left).replace("px", "") - grundrissLeft;
                                        linkKinderzimmerTop = (linkKinderzimmerStyle.top).replace("px", "") - grundrissTop;
                                        linkKinderzimmerFactorLeft = grundrissWidth / linkKinderzimmerLeft;
                                        linkKinderzimmerFactorTop = grundrissHeigth / linkKinderzimmerTop;
                                        linkKinderzimmerFactorWidth = grundrissWidth / ($(widgetNameLinkKinderzimmer).width());
                                        linkKinderzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkKinderzimmer).height());
                                        
                                        symbolKinderzimmerStyle = window.getComputedStyle(document.querySelector('#w00019'));
                                        symbolKinderzimmerLeft = (symbolKinderzimmerStyle.left).replace("px", "") - grundrissLeft;
                                        symbolKinderzimmerTop = (symbolKinderzimmerStyle.top).replace("px", "") - grundrissTop;
                                        symbolKinderzimmerFactorLeft = grundrissWidth / symbolKinderzimmerLeft;
                                        symbolKinderzimmerFactorTop = grundrissHeigth / symbolKinderzimmerTop;
                                        symbolKinderzimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolKinderzimmer).width());
                                        symbolKinderzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolKinderzimmer).height());
                                    
                                        // Größe Badezimmer
                                        linkBadezimmerStyle = window.getComputedStyle(document.querySelector('#w00006'));
                                        linkBadezimmerLeft = (linkBadezimmerStyle.left).replace("px", "") - grundrissLeft;
                                        linkBadezimmerTop = (linkBadezimmerStyle.top).replace("px", "") - grundrissTop;
                                        linkBadezimmerFactorLeft = grundrissWidth / linkBadezimmerLeft;
                                        linkBadezimmerFactorTop = grundrissHeigth / linkBadezimmerTop;
                                        linkBadezimmerFactorWidth = grundrissWidth / ($(widgetNameLinkBadezimmer).width());
                                        linkBadezimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkBadezimmer).height());
                                        
                                        symbolBadezimmerStyle = window.getComputedStyle(document.querySelector('#w00020'));
                                        symbolBadezimmerLeft = (symbolBadezimmerStyle.left).replace("px", "") - grundrissLeft;
                                        symbolBadezimmerTop = (symbolBadezimmerStyle.top).replace("px", "") - grundrissTop;
                                        symbolBadezimmerFactorLeft = grundrissWidth / symbolBadezimmerLeft;
                                        symbolBadezimmerFactorTop = grundrissHeigth / symbolBadezimmerTop;
                                        symbolBadezimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolBadezimmer).width());
                                        symbolBadezimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolBadezimmer).height());
                                    
                                        // Größe Gäste-WC
                                        linkGaesteWcStyle = window.getComputedStyle(document.querySelector('#w00007'));
                                        linkGaesteWcLeft = (linkGaesteWcStyle.left).replace("px", "") - grundrissLeft;
                                        linkGaesteWcTop = (linkGaesteWcStyle.top).replace("px", "") - grundrissTop;
                                        linkGaesteWcFactorLeft = grundrissWidth / linkGaesteWcLeft;
                                        linkGaesteWcFactorTop = grundrissHeigth / linkGaesteWcTop;
                                        linkGaesteWcFactorWidth = grundrissWidth / ($(widgetNameLinkGaesteWc).width());
                                        linkGaesteWcFactorHeigth = grundrissHeigth/ ($(widgetNameLinkGaesteWc).height());
                                        
                                        symbolGaesteWcStyle = window.getComputedStyle(document.querySelector('#w00021'));
                                        symbolGaesteWcLeft = (symbolGaesteWcStyle.left).replace("px", "") - grundrissLeft;
                                        symbolGaesteWcTop = (symbolGaesteWcStyle.top).replace("px", "") - grundrissTop;
                                        symbolGaesteWcFactorLeft = grundrissWidth / symbolGaesteWcLeft;
                                        symbolGaesteWcFactorTop = grundrissHeigth / symbolGaesteWcTop;
                                        symbolGaesteWcFactorWidth = grundrissWidth / ($(widgetNameSymbolGaesteWc).width());
                                        symbolGaesteWcFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolGaesteWc).height());
                                    
                                        // Größe Abstellraum
                                        linkAbstellraumStyle = window.getComputedStyle(document.querySelector('#w00008'));
                                        linkAbstellraumLeft = (linkAbstellraumStyle.left).replace("px", "") - grundrissLeft;
                                        linkAbstellraumTop = (linkAbstellraumStyle.top).replace("px", "") - grundrissTop;
                                        linkAbstellraumFactorLeft = grundrissWidth / linkAbstellraumLeft;
                                        linkAbstellraumFactorTop = grundrissHeigth / linkAbstellraumTop;
                                        linkAbstellraumFactorWidth = grundrissWidth / ($(widgetNameLinkAbstellraum).width());
                                        linkAbstellraumFactorHeigth = grundrissHeigth/ ($(widgetNameLinkAbstellraum).height());
                                        
                                        symbolAbstellraumStyle = window.getComputedStyle(document.querySelector('#w00022'));
                                        symbolAbstellraumLeft = (symbolAbstellraumStyle.left).replace("px", "") - grundrissLeft;
                                        symbolAbstellraumTop = (symbolAbstellraumStyle.top).replace("px", "") - grundrissTop;
                                        symbolAbstellraumFactorLeft = grundrissWidth / symbolAbstellraumLeft;
                                        symbolAbstellraumFactorTop = grundrissHeigth / symbolAbstellraumTop;
                                        symbolAbstellraumFactorWidth = grundrissWidth / ($(widgetNameSymbolAbstellraum).width());
                                        symbolAbstellraumFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolAbstellraum).height());
                                    
                                    }
                                    
                                    
                                    // Skalierung des umliegenden Abstands
                                    /* ======================================================== */
                                    function setResizeSpace(windowWidth, windowHeigth, debug = false)
                                    {
                                        if (windowWidth < windowHeigth)
                                        {
                                            // Fensterbreite maßgeblich
                                            windowMinSize = windowWidth; 
                                        } else
                                        {
                                            // Fensterhöhe maßgeblich
                                            windowMinSize = windowHeigth;
                                        }
                                        
                                        if (device === "mobilePhone")
                                        {
                                            spaceSurrounding = spaceSurroundingMin;
                                        }
                                        else
                                        {
                                            spaceSurrounding = spaceSurroundingMin + spaceSurroundingScreensizeDependent * (windowMinSize / spaceSurroundingScreensizeDependentFactor);  
                                        }
                                        
                                    }
                                    
                                    
                                    // Skalierung der Wohnungselemente
                                    /* ======================================================== */
                                    function setResizeElement(element, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, elementFactorLeft, elementFactorTop, elementFactorWidth, elementFactorHeigth, debug = false)
                                    {
                                        $(element).css({"left": (grundrissLeft) + (grundrissWidth/elementFactorLeft), "top": (grundrissTop) + (grundrissHeigth/elementFactorTop), "width": (grundrissWidth/elementFactorWidth), "height": (grundrissHeigth/elementFactorHeigth)});
                                    
                                    }
                                    
                                    
                                    // Skalierung der Symbolgrößen
                                    /* ======================================================== */
                                    function setResizeSymbol(debug = false)
                                    {
                                        if (device === "mobilePhone")
                                        {
                                            symbolHeigth = 43;
                                        }
                                        else
                                        {
                                            symbolHeigth = 65;  
                                        }
                                        $(".symbolGrundrissRaume .vis-inventwo-img").css({"height": symbolHeigth+"px"});
                                    
                                    }
                                    
                                    
                                    // Skalierung der Wohnung
                                    /* ======================================================== */
                                    function setResizeApartment(debug = false)
                                    {
                                        
                                        // Fenstergröße
                                        windowWidth = $(window).width();
                                        windowHeigth = $(window).height();    
                                        windowFactor = windowWidth / windowHeigth; 
                                        
                                        // Abstand dynamisch an Fenstergröße anpassen
                                        setResizeSpace(windowWidth, windowHeigth, debug);
                                        
                                        // Fenstergröße und -faktor mit Abstand
                                        if ((windowWidth > (spaceSurrounding * 2))
                                           && (windowHeigth > (spaceSurrounding * 2)))
                                        {
                                            windowSpaceWidth = windowWidth - (spaceSurrounding * 2);
                                            windowSpaceHeigth = windowHeigth - (spaceSurrounding * 2); 
                                            windowSpaceFactor = windowSpaceWidth / windowSpaceHeigth;        
                                        }
                                        else
                                        {
                                            windowSpaceWidth = 0;
                                            windowSpaceHeigth = 0; 
                                            windowSpaceFactor = 0;  
                                        }
                                        
                                        // Grundrissgröße
                                        if (windowSpaceFactor < grundrissFactor)
                                        {
                                            // Fensterbreite maßgeblich
                                            
                                            // Grundriss mittig zentrieren
                                            grundrissWidth = (windowSpaceWidth);
                                            grundrissHeigth = (windowSpaceWidth) / grundrissFactor;
                                            grundrissLeft = spaceSurrounding;
                                            grundrissTop = spaceSurrounding + ((windowSpaceHeigth - grundrissHeigth) / 2);
                                            
                                            if (debug === true)
                                            {
                                                console.log("Fensterbreite maßgeblich");
                                            }
                                        } else
                                        {
                                            // Fensterhöhe maßgeblich
                                            
                                            // Grundriss mittig zentrieren
                                            grundrissHeigth = (windowSpaceHeigth);
                                            grundrissWidth = (windowSpaceHeigth) * grundrissFactor;
                                            grundrissLeft = spaceSurrounding + (windowSpaceWidth - grundrissWidth) / 2;
                                            grundrissTop = spaceSurrounding; 
                                            
                                            if (debug === true)
                                            {
                                                console.log("Fensterhöhe maßgeblich");
                                            }
                                        }
                                        
                                        // Größe und Position Grundriss anpassen
                                        $(widgetNameGrundriss).css({"left": grundrissLeft, "top": grundrissTop, "width": grundrissWidth,"height": grundrissHeigth});
                                    
                                        // Grundrissgröße nach Anpassung und Referenz für alle folgenden Elemente
                                        grundrissWidth = $(widgetNameGrundriss).width();
                                        grundrissHeigth = $(widgetNameGrundriss).height();
                                        
                                        // Position und -größe skalieren Wohnung
                                        setResizeElement(widgetNameLinkWohnung, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkWohnungFactorLeft, linkWohnungFactorTop, linkWohnungFactorWidth, linkWohnungFactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolWohnung, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolWohnungFactorLeft, symbolWohnungFactorTop, symbolWohnungFactorWidth, symbolWohnungFactorHeigth, debug);
                                        
                                        // Position und -größe skalieren Wohnzimmer
                                        setResizeElement(widgetNameLinkWohnzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkWohnzimmerFactorLeft, linkWohnzimmerFactorTop, linkWohnzimmerFactorWidth, linkWohnzimmerFactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolWohnzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolWohnzimmerFactorLeft, symbolWohnzimmerFactorTop, symbolWohnzimmerFactorWidth, symbolWohnzimmerFactorHeigth, debug);
                                        
                                        // Position und -größe skalieren Küche
                                        setResizeElement(widgetNameLinkKueche, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkKuecheFactorLeft, linkKuecheFactorTop, linkKuecheFactorWidth, linkKuecheFactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolKueche, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolKuecheFactorLeft, symbolKuecheFactorTop, symbolKuecheFactorWidth, symbolKuecheFactorHeigth, debug);
                                        
                                        // Position und -größe skalieren Esszimmer
                                        setResizeElement(widgetNameLinkEsszimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkEsszimmerFactorLeft, linkEsszimmerFactorTop, linkEsszimmerFactorWidth, linkEsszimmerFactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolEsszimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolEsszimmerFactorLeft, symbolEsszimmerFactorTop, symbolEsszimmerFactorWidth, symbolEsszimmerFactorHeigth, debug);
                                        
                                        // Position und -größe skalieren Flur
                                        setResizeElement(widgetNameLinkFlur1, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkFlur1FactorLeft, linkFlur1FactorTop, linkFlur1FactorWidth, linkFlur1FactorHeigth, debug);
                                    
                                        setResizeElement(widgetNameLinkFlur2, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkFlur2FactorLeft, linkFlur2FactorTop, linkFlur2FactorWidth, linkFlur2FactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolFlur, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolFlurFactorLeft, symbolFlurFactorTop, symbolFlurFactorWidth, symbolFlurFactorHeigth, debug);
                                    
                                        // Position und -größe skalieren Schlafzimmer
                                        setResizeElement(widgetNameLinkSchlafzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkSchlafzimmerFactorLeft, linkSchlafzimmerFactorTop, linkSchlafzimmerFactorWidth, linkSchlafzimmerFactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolSchlafzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolSchlafzimmerFactorLeft, symbolSchlafzimmerFactorTop, symbolSchlafzimmerFactorWidth, symbolSchlafzimmerFactorHeigth, debug);
                                    
                                        // Position und -größe skalieren Kinderzimmer
                                        setResizeElement(widgetNameLinkKinderzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkKinderzimmerFactorLeft, linkKinderzimmerFactorTop, linkKinderzimmerFactorWidth, linkKinderzimmerFactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolKinderzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolKinderzimmerFactorLeft, symbolKinderzimmerFactorTop, symbolKinderzimmerFactorWidth, symbolKinderzimmerFactorHeigth, debug);
                                    
                                        // Position und -größe skalieren Badezimmer
                                        setResizeElement(widgetNameLinkBadezimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkBadezimmerFactorLeft, linkBadezimmerFactorTop, linkBadezimmerFactorWidth, linkBadezimmerFactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolBadezimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolBadezimmerFactorLeft, symbolBadezimmerFactorTop, symbolBadezimmerFactorWidth, symbolBadezimmerFactorHeigth, debug);
                                    
                                        // Position und -größe skalieren Gäste-WC
                                        setResizeElement(widgetNameLinkGaesteWc, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkGaesteWcFactorLeft, linkGaesteWcFactorTop, linkGaesteWcFactorWidth, linkGaesteWcFactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolGaesteWc, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolGaesteWcFactorLeft, symbolGaesteWcFactorTop, symbolGaesteWcFactorWidth, symbolGaesteWcFactorHeigth, debug);
                                        
                                        // Position und -größe skalieren Abstellraum
                                        setResizeElement(widgetNameLinkAbstellraum, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkAbstellraumFactorLeft, linkAbstellraumFactorTop, linkAbstellraumFactorWidth, linkAbstellraumFactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolAbstellraum, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolAbstellraumFactorLeft, symbolAbstellraumFactorTop, symbolAbstellraumFactorWidth, symbolAbstellraumFactorHeigth, debug);
                                    
                                        if (debug === true)
                                        {
                                            console.log("Umgebender Abstand: " + spaceSurrounding);
                                            
                                            console.log("Fensterbreite: " + windowWidth);
                                            console.log("Fensterhöhe: " + windowHeigth);
                                            console.log("windowFactor: " + windowFactor);
                                                    
                                            console.log("Grundrissbreite: " + grundrissWidth);
                                            console.log("Grundrisshöhe: " + grundrissHeigth);
                                            console.log("grundrissFactor: " + grundrissFactor); 
                                        }
                                    
                                    }
                                    
                                    
                                    // Skriptstart
                                    /* ======================================================== */
                                    waitForElement($('body'),'.grundriss', 'dummy', 'dummy', function () {
                                        // Widget ist vollständig geladen, wir können irgendwas damit machen
                                        
                                        // Erkennen auf welchem Gerät die VIS läuft
                                        getDevice(debug);
                                        
                                        // Initialisiere Skalierung
                                        initResizeApartment(debug);
                                        
                                        // Initiale Skalierung
                                        setResizeApartment(debug);
                                        
                                        // Symbolgröße skalieren
                                        setResizeSymbol(debug);
                                        
                                        // Event registrieren bei Fenstergrößenänderung
                                        $(window).resize(function () 
                                        {
                                            // Skalierung anpassen
                                            setResizeApartment(debug);
                                    
                                        });
                                    }, 0, debug);
                                    
                                    S Offline
                                    S Offline
                                    SlipKoRn_DH88
                                    schrieb am zuletzt editiert von
                                    #2166

                                    @rkccorian

                                    @rkccorian said in jarvis v3.0.0 - just another remarkable vis:

                                    @mcu Moin Mcu! Wie versprochen noch die Info bzgl. dem responsiven Grundriss mit VIS. Hoffe das hilft auch Anderen! :-)

                                    Idee:

                                    • Ein "Master"-Widget mit dem Grundriss (Erstellt mit SweetHome3D), welches laufend an die Bildschirmgröße angepasst wird (Position inkl. eingefügtem Abstand zum Rand, sowie die Größe mit Prüfung ob abhängig von Höhe oder Breite Skaliert werden soll, Mittige Position)
                                    • Einige "Link"-Widgets darüber (z-index), Verhältnis der Position und Größe bezogen auf das "Master"-Widget wird beim Start einmalig ermittelt. Weitere Skalierung immer anhand dieser Daten
                                    • Einige "Symbol"-Widgets darüber (z-index), Verhältnis der Position und Größe bezogen auf das "Master"-Widget wird beim Start einmalig ermittelt. Weitere Skalierung immer anhand dieser Daten
                                    • Skalierung mit unterschiedlichen Parametern für Handy vs. PC/Tablet durch Erkennung des Gerätes beim Starten

                                    Ergebnis sieht dann bspw. so aus...
                                    0031.jpg

                                    ===================================
                                    In VIS...

                                    • "Master"-Widget mit Grundriss
                                      6f444374-47c6-4ade-a7d5-f4ac70120038-image.png

                                    • "Link"-Widget
                                      3a120d48-79fe-4cc2-aea9-59f478226db0-image.png

                                    • "Symbol"-Widget
                                      debf5e5f-3e03-4d44-99fa-40e1da18753c-image.png

                                    • Skript um die Responsivität zu erreichen

                                    // Initialisiere Konstanten
                                    /* ======================================================== */
                                    var debug = false;
                                    
                                    var spaceSurroundingMin = 20;
                                    var spaceSurroundingScreensizeDependent = 20;
                                    var spaceSurroundingScreensizeDependentFactor = 600;
                                    
                                    var widgetNameGrundriss = "#w00002";
                                    var widgetNameLinkWohnung = "#w00012";
                                    var widgetNameLinkWohnzimmer = "#w00001";
                                    var widgetNameLinkKueche = "#w00003";
                                    var widgetNameLinkEsszimmer = "#w00011";
                                    var widgetNameLinkFlur1 = "#w00010";
                                    var widgetNameLinkFlur2 = "#w00009";
                                    var widgetNameLinkSchlafzimmer = "#w00004";
                                    var widgetNameLinkKinderzimmer = "#w00005";
                                    var widgetNameLinkBadezimmer = "#w00006";
                                    var widgetNameLinkGaesteWc = "#w00007";
                                    var widgetNameLinkAbstellraum = "#w00008";
                                    
                                    var widgetNameSymbolWohnung = "#w00017";
                                    var widgetNameSymbolWohnzimmer = "#w00013";
                                    var widgetNameSymbolKueche = "#w00014";
                                    var widgetNameSymbolEsszimmer = "#w00015";
                                    var widgetNameSymbolFlur = "#w00016";
                                    var widgetNameSymbolSchlafzimmer = "#w00018";
                                    var widgetNameSymbolKinderzimmer = "#w00019";
                                    var widgetNameSymbolBadezimmer = "#w00020";
                                    var widgetNameSymbolGaesteWc = "#w00021";
                                    var widgetNameSymbolAbstellraum = "#w00022";
                                    
                                    
                                    // Warten bis Element geladen wurde
                                    /* ======================================================== */
                                    function waitForElement(parent, elementPath, wid, widgetName, callBack, counter = 0, debug = false)
                                    {
                                        if (counter < 10000)
                                        {
                                            setTimeout(function ()
                                            {
                                                if (parent.find(elementPath).length > 0)
                                                {
                                                    if (debug) console.log(`[${widgetName} ${wid}] it took ${counter}ms to wait for the element '${elementPath}'`);
                                                    callBack();
                                                } else
                                                {
                                                    if (debug) console.log(`[${widgetName} ${wid}] wait for element '${elementPath}'`);
                                                    counter++;
                                                    waitForElement(parent, elementPath, wid, widgetName, callBack, counter, debug);
                                                }
                                            }, 1);
                                        } else
                                        {
                                            console.warn(`[${widgetName} ${wid}] stop waiting after ${counter} retries`);
                                            callBack();
                                        }
                                    }
                                    
                                    
                                    // Erkennen auf welchem Gerät die VIS läuft
                                    /* ======================================================== */
                                    function getDevice(debug = false)
                                    {
                                        if(window.navigator.userAgent.match(/Mobile/i)
                                        || window.navigator.userAgent.match(/iPhone/i)
                                        || window.navigator.userAgent.match(/iPod/i)
                                        || window.navigator.userAgent.match(/IEMobile/i)
                                        || window.navigator.userAgent.match(/Windows Phone/i)
                                        || window.navigator.userAgent.match(/Android/i)
                                        || window.navigator.userAgent.match(/BlackBerry/i)
                                        || window.navigator.userAgent.match(/webOS/i))
                                        {
                                            statusMobile = true;
                                        } 
                                        else
                                        {
                                            statusMobile = false;
                                        }
                                        if(window.navigator.userAgent.match(/Tablet/i)
                                        || window.navigator.userAgent.match(/iPad/i)
                                        || window.navigator.userAgent.match(/Nexus 7/i)
                                        || window.navigator.userAgent.match(/Nexus 10/i)
                                        || window.navigator.userAgent.match(/SM-T500/i)
                                        || window.navigator.userAgent.match(/KFAPWI/i))
                                        {
                                            statusTablet = true;
                                        } 
                                        else
                                        {
                                            statusTablet = false;
                                        }
                                      
                                        if ((statusMobile === true) && (statusTablet === true))
                                        {
                                            device = "tablet";
                                        }
                                        else if ((statusMobile === true) && (statusTablet === false))
                                        {
                                            device = "mobilePhone";    
                                        }
                                        else
                                        {
                                            device = "pc";    
                                        }
                                    
                                        if (debug === true)
                                        {
                                            console.log("Navigator User Agent: " + navigator.userAgent);
                                            console.log("Erkanntes Gerät: " + device);
                                        }
                                    }
                                    
                                    
                                    // Initialisiere Werte für die Skalierung der Wohnungselemente
                                    /* ======================================================== */
                                    function initResizeApartment(debug = false)
                                    {
                                        // Größe Grundriss
                                        grundrissStyle = window.getComputedStyle(document.querySelector('#w00002'));
                                        grundrissLeft = (grundrissStyle.left).replace("px", "");
                                        grundrissTop = (grundrissStyle.top).replace("px", "");
                                        grundrissWidth = $(widgetNameGrundriss).width();
                                        grundrissHeigth = $(widgetNameGrundriss).height(); 
                                        grundrissFactor = grundrissWidth / grundrissHeigth;
                                    
                                        if (debug === true)
                                        {
                                            console.log("GrundrissLeft: " + grundrissLeft);
                                            console.log("GrundrissTop: " + grundrissTop);
                                        }
                                        
                                        // Größe Wohnung
                                        linkWohnungStyle = window.getComputedStyle(document.querySelector('#w00012'));
                                        linkWohnungLeft = (linkWohnungStyle.left).replace("px", "") - grundrissLeft;
                                        linkWohnungTop = (linkWohnungStyle.top).replace("px", "") - grundrissTop;
                                        linkWohnungFactorLeft = grundrissWidth / linkWohnungLeft;
                                        linkWohnungFactorTop = grundrissHeigth / linkWohnungTop;
                                        linkWohnungFactorWidth = grundrissWidth / ($(widgetNameLinkWohnung).width());
                                        linkWohnungFactorHeigth = grundrissHeigth/ ($(widgetNameLinkWohnung).height());
                                        
                                        symbolWohnungStyle = window.getComputedStyle(document.querySelector('#w00017'));
                                        symbolWohnungLeft = (symbolWohnungStyle.left).replace("px", "") - grundrissLeft;
                                        symbolWohnungTop = (symbolWohnungStyle.top).replace("px", "") - grundrissTop;
                                        symbolWohnungFactorLeft = grundrissWidth / symbolWohnungLeft;
                                        symbolWohnungFactorTop = grundrissHeigth / symbolWohnungTop;
                                        symbolWohnungFactorWidth = grundrissWidth / ($(widgetNameSymbolWohnung).width());
                                        symbolWohnungFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolWohnung).height());
                                    
                                        // Größe Wohnzimmer
                                        linkWohnzimmerStyle = window.getComputedStyle(document.querySelector('#w00001'));
                                        linkWohnzimmerLeft = (linkWohnzimmerStyle.left).replace("px", "") - grundrissLeft;
                                        linkWohnzimmerTop = (linkWohnzimmerStyle.top).replace("px", "") - grundrissTop;
                                        linkWohnzimmerFactorLeft = grundrissWidth / linkWohnzimmerLeft;
                                        linkWohnzimmerFactorTop = grundrissHeigth / linkWohnzimmerTop;
                                        linkWohnzimmerFactorWidth = grundrissWidth / ($(widgetNameLinkWohnzimmer).width());
                                        linkWohnzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkWohnzimmer).height());
                                        
                                        symbolWohnzimmerStyle = window.getComputedStyle(document.querySelector('#w00013'));
                                        symbolWohnzimmerLeft = (symbolWohnzimmerStyle.left).replace("px", "") - grundrissLeft;
                                        symbolWohnzimmerTop = (symbolWohnzimmerStyle.top).replace("px", "") - grundrissTop;
                                        symbolWohnzimmerFactorLeft = grundrissWidth / symbolWohnzimmerLeft;
                                        symbolWohnzimmerFactorTop = grundrissHeigth / symbolWohnzimmerTop;
                                        symbolWohnzimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolWohnzimmer).width());
                                        symbolWohnzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolWohnzimmer).height()); 
                                    
                                        // Größe Küche
                                        linkKuecheStyle = window.getComputedStyle(document.querySelector('#w00003'));
                                        linkKuecheLeft = (linkKuecheStyle.left).replace("px", "") - grundrissLeft;
                                        linkKuecheTop = (linkKuecheStyle.top).replace("px", "") - grundrissTop;
                                        linkKuecheFactorLeft = grundrissWidth / linkKuecheLeft;
                                        linkKuecheFactorTop = grundrissHeigth / linkKuecheTop;
                                        linkKuecheFactorWidth = grundrissWidth / ($(widgetNameLinkKueche).width());
                                        linkKuecheFactorHeigth = grundrissHeigth/ ($(widgetNameLinkKueche).height());
                                        
                                        symbolKuecheStyle = window.getComputedStyle(document.querySelector('#w00014'));
                                        symbolKuecheLeft = (symbolKuecheStyle.left).replace("px", "") - grundrissLeft;
                                        symbolKuecheTop = (symbolKuecheStyle.top).replace("px", "") - grundrissTop;
                                        symbolKuecheFactorLeft = grundrissWidth / symbolKuecheLeft;
                                        symbolKuecheFactorTop = grundrissHeigth / symbolKuecheTop;
                                        symbolKuecheFactorWidth = grundrissWidth / ($(widgetNameSymbolKueche).width());
                                        symbolKuecheFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolKueche).height());
                                        
                                        // Größe Esszimmer
                                        linkEsszimmerStyle = window.getComputedStyle(document.querySelector('#w00011'));
                                        linkEsszimmerLeft = (linkEsszimmerStyle.left).replace("px", "") - grundrissLeft;
                                        linkEsszimmerTop = (linkEsszimmerStyle.top).replace("px", "") - grundrissTop;
                                        linkEsszimmerFactorLeft = grundrissWidth / linkEsszimmerLeft;
                                        linkEsszimmerFactorTop = grundrissHeigth / linkEsszimmerTop;
                                        linkEsszimmerFactorWidth = grundrissWidth / ($(widgetNameLinkEsszimmer).width());
                                        linkEsszimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkEsszimmer).height());
                                        
                                        symbolEsszimmerStyle = window.getComputedStyle(document.querySelector('#w00015'));
                                        symbolEsszimmerLeft = (symbolEsszimmerStyle.left).replace("px", "") - grundrissLeft;
                                        symbolEsszimmerTop = (symbolEsszimmerStyle.top).replace("px", "") - grundrissTop;
                                        symbolEsszimmerFactorLeft = grundrissWidth / symbolEsszimmerLeft;
                                        symbolEsszimmerFactorTop = grundrissHeigth / symbolEsszimmerTop;
                                        symbolEsszimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolEsszimmer).width());
                                        symbolEsszimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolEsszimmer).height());
                                    
                                        // Größe Flur
                                        linkFlur1Style = window.getComputedStyle(document.querySelector('#w00010'));
                                        linkFlur1Left = (linkFlur1Style.left).replace("px", "") - grundrissLeft;
                                        linkFlur1Top = (linkFlur1Style.top).replace("px", "") - grundrissTop;
                                        linkFlur1FactorLeft = grundrissWidth / linkFlur1Left;
                                        linkFlur1FactorTop = grundrissHeigth / linkFlur1Top;
                                        linkFlur1FactorWidth = grundrissWidth / ($(widgetNameLinkFlur1).width());
                                        linkFlur1FactorHeigth = grundrissHeigth/ ($(widgetNameLinkFlur1).height()); 
                                    
                                        linkFlur2Style = window.getComputedStyle(document.querySelector('#w00009'));
                                        linkFlur2Left = (linkFlur2Style.left).replace("px", "") - grundrissLeft;
                                        linkFlur2Top = (linkFlur2Style.top).replace("px", "") - grundrissTop;
                                        linkFlur2FactorLeft = grundrissWidth / linkFlur2Left;
                                        linkFlur2FactorTop = grundrissHeigth / linkFlur2Top;
                                        linkFlur2FactorWidth = grundrissWidth / ($(widgetNameLinkFlur2).width());
                                        linkFlur2FactorHeigth = grundrissHeigth/ ($(widgetNameLinkFlur2).height());
                                        
                                        symbolFlurStyle = window.getComputedStyle(document.querySelector('#w00016'));
                                        symbolFlurLeft = (symbolFlurStyle.left).replace("px", "") - grundrissLeft;
                                        symbolFlurTop = (symbolFlurStyle.top).replace("px", "") - grundrissTop;
                                        symbolFlurFactorLeft = grundrissWidth / symbolFlurLeft;
                                        symbolFlurFactorTop = grundrissHeigth / symbolFlurTop;
                                        symbolFlurFactorWidth = grundrissWidth / ($(widgetNameSymbolFlur).width());
                                        symbolFlurFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolFlur).height());
                                    
                                        // Größe Schlafzimmer
                                        linkSchlafzimmerStyle = window.getComputedStyle(document.querySelector('#w00004'));
                                        linkSchlafzimmerLeft = (linkSchlafzimmerStyle.left).replace("px", "") - grundrissLeft;
                                        linkSchlafzimmerTop = (linkSchlafzimmerStyle.top).replace("px", "") - grundrissTop;
                                        linkSchlafzimmerFactorLeft = grundrissWidth / linkSchlafzimmerLeft;
                                        linkSchlafzimmerFactorTop = grundrissHeigth / linkSchlafzimmerTop;
                                        linkSchlafzimmerFactorWidth = grundrissWidth / ($(widgetNameLinkSchlafzimmer).width());
                                        linkSchlafzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkSchlafzimmer).height());
                                        
                                        symbolSchlafzimmerStyle = window.getComputedStyle(document.querySelector('#w00018'));
                                        symbolSchlafzimmerLeft = (symbolSchlafzimmerStyle.left).replace("px", "") - grundrissLeft;
                                        symbolSchlafzimmerTop = (symbolSchlafzimmerStyle.top).replace("px", "") - grundrissTop;
                                        symbolSchlafzimmerFactorLeft = grundrissWidth / symbolSchlafzimmerLeft;
                                        symbolSchlafzimmerFactorTop = grundrissHeigth / symbolSchlafzimmerTop;
                                        symbolSchlafzimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolSchlafzimmer).width());
                                        symbolSchlafzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolSchlafzimmer).height());
                                    
                                        // Größe Kinderzimmer
                                        linkKinderzimmerStyle = window.getComputedStyle(document.querySelector('#w00005'));
                                        linkKinderzimmerLeft = (linkKinderzimmerStyle.left).replace("px", "") - grundrissLeft;
                                        linkKinderzimmerTop = (linkKinderzimmerStyle.top).replace("px", "") - grundrissTop;
                                        linkKinderzimmerFactorLeft = grundrissWidth / linkKinderzimmerLeft;
                                        linkKinderzimmerFactorTop = grundrissHeigth / linkKinderzimmerTop;
                                        linkKinderzimmerFactorWidth = grundrissWidth / ($(widgetNameLinkKinderzimmer).width());
                                        linkKinderzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkKinderzimmer).height());
                                        
                                        symbolKinderzimmerStyle = window.getComputedStyle(document.querySelector('#w00019'));
                                        symbolKinderzimmerLeft = (symbolKinderzimmerStyle.left).replace("px", "") - grundrissLeft;
                                        symbolKinderzimmerTop = (symbolKinderzimmerStyle.top).replace("px", "") - grundrissTop;
                                        symbolKinderzimmerFactorLeft = grundrissWidth / symbolKinderzimmerLeft;
                                        symbolKinderzimmerFactorTop = grundrissHeigth / symbolKinderzimmerTop;
                                        symbolKinderzimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolKinderzimmer).width());
                                        symbolKinderzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolKinderzimmer).height());
                                    
                                        // Größe Badezimmer
                                        linkBadezimmerStyle = window.getComputedStyle(document.querySelector('#w00006'));
                                        linkBadezimmerLeft = (linkBadezimmerStyle.left).replace("px", "") - grundrissLeft;
                                        linkBadezimmerTop = (linkBadezimmerStyle.top).replace("px", "") - grundrissTop;
                                        linkBadezimmerFactorLeft = grundrissWidth / linkBadezimmerLeft;
                                        linkBadezimmerFactorTop = grundrissHeigth / linkBadezimmerTop;
                                        linkBadezimmerFactorWidth = grundrissWidth / ($(widgetNameLinkBadezimmer).width());
                                        linkBadezimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkBadezimmer).height());
                                        
                                        symbolBadezimmerStyle = window.getComputedStyle(document.querySelector('#w00020'));
                                        symbolBadezimmerLeft = (symbolBadezimmerStyle.left).replace("px", "") - grundrissLeft;
                                        symbolBadezimmerTop = (symbolBadezimmerStyle.top).replace("px", "") - grundrissTop;
                                        symbolBadezimmerFactorLeft = grundrissWidth / symbolBadezimmerLeft;
                                        symbolBadezimmerFactorTop = grundrissHeigth / symbolBadezimmerTop;
                                        symbolBadezimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolBadezimmer).width());
                                        symbolBadezimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolBadezimmer).height());
                                    
                                        // Größe Gäste-WC
                                        linkGaesteWcStyle = window.getComputedStyle(document.querySelector('#w00007'));
                                        linkGaesteWcLeft = (linkGaesteWcStyle.left).replace("px", "") - grundrissLeft;
                                        linkGaesteWcTop = (linkGaesteWcStyle.top).replace("px", "") - grundrissTop;
                                        linkGaesteWcFactorLeft = grundrissWidth / linkGaesteWcLeft;
                                        linkGaesteWcFactorTop = grundrissHeigth / linkGaesteWcTop;
                                        linkGaesteWcFactorWidth = grundrissWidth / ($(widgetNameLinkGaesteWc).width());
                                        linkGaesteWcFactorHeigth = grundrissHeigth/ ($(widgetNameLinkGaesteWc).height());
                                        
                                        symbolGaesteWcStyle = window.getComputedStyle(document.querySelector('#w00021'));
                                        symbolGaesteWcLeft = (symbolGaesteWcStyle.left).replace("px", "") - grundrissLeft;
                                        symbolGaesteWcTop = (symbolGaesteWcStyle.top).replace("px", "") - grundrissTop;
                                        symbolGaesteWcFactorLeft = grundrissWidth / symbolGaesteWcLeft;
                                        symbolGaesteWcFactorTop = grundrissHeigth / symbolGaesteWcTop;
                                        symbolGaesteWcFactorWidth = grundrissWidth / ($(widgetNameSymbolGaesteWc).width());
                                        symbolGaesteWcFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolGaesteWc).height());
                                    
                                        // Größe Abstellraum
                                        linkAbstellraumStyle = window.getComputedStyle(document.querySelector('#w00008'));
                                        linkAbstellraumLeft = (linkAbstellraumStyle.left).replace("px", "") - grundrissLeft;
                                        linkAbstellraumTop = (linkAbstellraumStyle.top).replace("px", "") - grundrissTop;
                                        linkAbstellraumFactorLeft = grundrissWidth / linkAbstellraumLeft;
                                        linkAbstellraumFactorTop = grundrissHeigth / linkAbstellraumTop;
                                        linkAbstellraumFactorWidth = grundrissWidth / ($(widgetNameLinkAbstellraum).width());
                                        linkAbstellraumFactorHeigth = grundrissHeigth/ ($(widgetNameLinkAbstellraum).height());
                                        
                                        symbolAbstellraumStyle = window.getComputedStyle(document.querySelector('#w00022'));
                                        symbolAbstellraumLeft = (symbolAbstellraumStyle.left).replace("px", "") - grundrissLeft;
                                        symbolAbstellraumTop = (symbolAbstellraumStyle.top).replace("px", "") - grundrissTop;
                                        symbolAbstellraumFactorLeft = grundrissWidth / symbolAbstellraumLeft;
                                        symbolAbstellraumFactorTop = grundrissHeigth / symbolAbstellraumTop;
                                        symbolAbstellraumFactorWidth = grundrissWidth / ($(widgetNameSymbolAbstellraum).width());
                                        symbolAbstellraumFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolAbstellraum).height());
                                    
                                    }
                                    
                                    
                                    // Skalierung des umliegenden Abstands
                                    /* ======================================================== */
                                    function setResizeSpace(windowWidth, windowHeigth, debug = false)
                                    {
                                        if (windowWidth < windowHeigth)
                                        {
                                            // Fensterbreite maßgeblich
                                            windowMinSize = windowWidth; 
                                        } else
                                        {
                                            // Fensterhöhe maßgeblich
                                            windowMinSize = windowHeigth;
                                        }
                                        
                                        if (device === "mobilePhone")
                                        {
                                            spaceSurrounding = spaceSurroundingMin;
                                        }
                                        else
                                        {
                                            spaceSurrounding = spaceSurroundingMin + spaceSurroundingScreensizeDependent * (windowMinSize / spaceSurroundingScreensizeDependentFactor);  
                                        }
                                        
                                    }
                                    
                                    
                                    // Skalierung der Wohnungselemente
                                    /* ======================================================== */
                                    function setResizeElement(element, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, elementFactorLeft, elementFactorTop, elementFactorWidth, elementFactorHeigth, debug = false)
                                    {
                                        $(element).css({"left": (grundrissLeft) + (grundrissWidth/elementFactorLeft), "top": (grundrissTop) + (grundrissHeigth/elementFactorTop), "width": (grundrissWidth/elementFactorWidth), "height": (grundrissHeigth/elementFactorHeigth)});
                                    
                                    }
                                    
                                    
                                    // Skalierung der Symbolgrößen
                                    /* ======================================================== */
                                    function setResizeSymbol(debug = false)
                                    {
                                        if (device === "mobilePhone")
                                        {
                                            symbolHeigth = 43;
                                        }
                                        else
                                        {
                                            symbolHeigth = 65;  
                                        }
                                        $(".symbolGrundrissRaume .vis-inventwo-img").css({"height": symbolHeigth+"px"});
                                    
                                    }
                                    
                                    
                                    // Skalierung der Wohnung
                                    /* ======================================================== */
                                    function setResizeApartment(debug = false)
                                    {
                                        
                                        // Fenstergröße
                                        windowWidth = $(window).width();
                                        windowHeigth = $(window).height();    
                                        windowFactor = windowWidth / windowHeigth; 
                                        
                                        // Abstand dynamisch an Fenstergröße anpassen
                                        setResizeSpace(windowWidth, windowHeigth, debug);
                                        
                                        // Fenstergröße und -faktor mit Abstand
                                        if ((windowWidth > (spaceSurrounding * 2))
                                           && (windowHeigth > (spaceSurrounding * 2)))
                                        {
                                            windowSpaceWidth = windowWidth - (spaceSurrounding * 2);
                                            windowSpaceHeigth = windowHeigth - (spaceSurrounding * 2); 
                                            windowSpaceFactor = windowSpaceWidth / windowSpaceHeigth;        
                                        }
                                        else
                                        {
                                            windowSpaceWidth = 0;
                                            windowSpaceHeigth = 0; 
                                            windowSpaceFactor = 0;  
                                        }
                                        
                                        // Grundrissgröße
                                        if (windowSpaceFactor < grundrissFactor)
                                        {
                                            // Fensterbreite maßgeblich
                                            
                                            // Grundriss mittig zentrieren
                                            grundrissWidth = (windowSpaceWidth);
                                            grundrissHeigth = (windowSpaceWidth) / grundrissFactor;
                                            grundrissLeft = spaceSurrounding;
                                            grundrissTop = spaceSurrounding + ((windowSpaceHeigth - grundrissHeigth) / 2);
                                            
                                            if (debug === true)
                                            {
                                                console.log("Fensterbreite maßgeblich");
                                            }
                                        } else
                                        {
                                            // Fensterhöhe maßgeblich
                                            
                                            // Grundriss mittig zentrieren
                                            grundrissHeigth = (windowSpaceHeigth);
                                            grundrissWidth = (windowSpaceHeigth) * grundrissFactor;
                                            grundrissLeft = spaceSurrounding + (windowSpaceWidth - grundrissWidth) / 2;
                                            grundrissTop = spaceSurrounding; 
                                            
                                            if (debug === true)
                                            {
                                                console.log("Fensterhöhe maßgeblich");
                                            }
                                        }
                                        
                                        // Größe und Position Grundriss anpassen
                                        $(widgetNameGrundriss).css({"left": grundrissLeft, "top": grundrissTop, "width": grundrissWidth,"height": grundrissHeigth});
                                    
                                        // Grundrissgröße nach Anpassung und Referenz für alle folgenden Elemente
                                        grundrissWidth = $(widgetNameGrundriss).width();
                                        grundrissHeigth = $(widgetNameGrundriss).height();
                                        
                                        // Position und -größe skalieren Wohnung
                                        setResizeElement(widgetNameLinkWohnung, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkWohnungFactorLeft, linkWohnungFactorTop, linkWohnungFactorWidth, linkWohnungFactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolWohnung, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolWohnungFactorLeft, symbolWohnungFactorTop, symbolWohnungFactorWidth, symbolWohnungFactorHeigth, debug);
                                        
                                        // Position und -größe skalieren Wohnzimmer
                                        setResizeElement(widgetNameLinkWohnzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkWohnzimmerFactorLeft, linkWohnzimmerFactorTop, linkWohnzimmerFactorWidth, linkWohnzimmerFactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolWohnzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolWohnzimmerFactorLeft, symbolWohnzimmerFactorTop, symbolWohnzimmerFactorWidth, symbolWohnzimmerFactorHeigth, debug);
                                        
                                        // Position und -größe skalieren Küche
                                        setResizeElement(widgetNameLinkKueche, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkKuecheFactorLeft, linkKuecheFactorTop, linkKuecheFactorWidth, linkKuecheFactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolKueche, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolKuecheFactorLeft, symbolKuecheFactorTop, symbolKuecheFactorWidth, symbolKuecheFactorHeigth, debug);
                                        
                                        // Position und -größe skalieren Esszimmer
                                        setResizeElement(widgetNameLinkEsszimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkEsszimmerFactorLeft, linkEsszimmerFactorTop, linkEsszimmerFactorWidth, linkEsszimmerFactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolEsszimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolEsszimmerFactorLeft, symbolEsszimmerFactorTop, symbolEsszimmerFactorWidth, symbolEsszimmerFactorHeigth, debug);
                                        
                                        // Position und -größe skalieren Flur
                                        setResizeElement(widgetNameLinkFlur1, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkFlur1FactorLeft, linkFlur1FactorTop, linkFlur1FactorWidth, linkFlur1FactorHeigth, debug);
                                    
                                        setResizeElement(widgetNameLinkFlur2, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkFlur2FactorLeft, linkFlur2FactorTop, linkFlur2FactorWidth, linkFlur2FactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolFlur, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolFlurFactorLeft, symbolFlurFactorTop, symbolFlurFactorWidth, symbolFlurFactorHeigth, debug);
                                    
                                        // Position und -größe skalieren Schlafzimmer
                                        setResizeElement(widgetNameLinkSchlafzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkSchlafzimmerFactorLeft, linkSchlafzimmerFactorTop, linkSchlafzimmerFactorWidth, linkSchlafzimmerFactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolSchlafzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolSchlafzimmerFactorLeft, symbolSchlafzimmerFactorTop, symbolSchlafzimmerFactorWidth, symbolSchlafzimmerFactorHeigth, debug);
                                    
                                        // Position und -größe skalieren Kinderzimmer
                                        setResizeElement(widgetNameLinkKinderzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkKinderzimmerFactorLeft, linkKinderzimmerFactorTop, linkKinderzimmerFactorWidth, linkKinderzimmerFactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolKinderzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolKinderzimmerFactorLeft, symbolKinderzimmerFactorTop, symbolKinderzimmerFactorWidth, symbolKinderzimmerFactorHeigth, debug);
                                    
                                        // Position und -größe skalieren Badezimmer
                                        setResizeElement(widgetNameLinkBadezimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkBadezimmerFactorLeft, linkBadezimmerFactorTop, linkBadezimmerFactorWidth, linkBadezimmerFactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolBadezimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolBadezimmerFactorLeft, symbolBadezimmerFactorTop, symbolBadezimmerFactorWidth, symbolBadezimmerFactorHeigth, debug);
                                    
                                        // Position und -größe skalieren Gäste-WC
                                        setResizeElement(widgetNameLinkGaesteWc, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkGaesteWcFactorLeft, linkGaesteWcFactorTop, linkGaesteWcFactorWidth, linkGaesteWcFactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolGaesteWc, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolGaesteWcFactorLeft, symbolGaesteWcFactorTop, symbolGaesteWcFactorWidth, symbolGaesteWcFactorHeigth, debug);
                                        
                                        // Position und -größe skalieren Abstellraum
                                        setResizeElement(widgetNameLinkAbstellraum, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkAbstellraumFactorLeft, linkAbstellraumFactorTop, linkAbstellraumFactorWidth, linkAbstellraumFactorHeigth, debug);
                                        
                                        setResizeElement(widgetNameSymbolAbstellraum, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolAbstellraumFactorLeft, symbolAbstellraumFactorTop, symbolAbstellraumFactorWidth, symbolAbstellraumFactorHeigth, debug);
                                    
                                        if (debug === true)
                                        {
                                            console.log("Umgebender Abstand: " + spaceSurrounding);
                                            
                                            console.log("Fensterbreite: " + windowWidth);
                                            console.log("Fensterhöhe: " + windowHeigth);
                                            console.log("windowFactor: " + windowFactor);
                                                    
                                            console.log("Grundrissbreite: " + grundrissWidth);
                                            console.log("Grundrisshöhe: " + grundrissHeigth);
                                            console.log("grundrissFactor: " + grundrissFactor); 
                                        }
                                    
                                    }
                                    
                                    
                                    // Skriptstart
                                    /* ======================================================== */
                                    waitForElement($('body'),'.grundriss', 'dummy', 'dummy', function () {
                                        // Widget ist vollständig geladen, wir können irgendwas damit machen
                                        
                                        // Erkennen auf welchem Gerät die VIS läuft
                                        getDevice(debug);
                                        
                                        // Initialisiere Skalierung
                                        initResizeApartment(debug);
                                        
                                        // Initiale Skalierung
                                        setResizeApartment(debug);
                                        
                                        // Symbolgröße skalieren
                                        setResizeSymbol(debug);
                                        
                                        // Event registrieren bei Fenstergrößenänderung
                                        $(window).resize(function () 
                                        {
                                            // Skalierung anpassen
                                            setResizeApartment(debug);
                                    
                                        });
                                    }, 0, debug);
                                    

                                    Sehr geile Sache! Ich habe versucht das Script testweise auf ein einziges Widget erst einmal zu beschränken. Leider fehlt mir doch das Wissen / die Erfahrung. Gibt es denn eine Anleitung oder Doku zum Anpassen des Scripts?

                                    U 2 Antworten Letzte Antwort
                                    0
                                    • S SlipKoRn_DH88

                                      @rkccorian

                                      @rkccorian said in jarvis v3.0.0 - just another remarkable vis:

                                      @mcu Moin Mcu! Wie versprochen noch die Info bzgl. dem responsiven Grundriss mit VIS. Hoffe das hilft auch Anderen! :-)

                                      Idee:

                                      • Ein "Master"-Widget mit dem Grundriss (Erstellt mit SweetHome3D), welches laufend an die Bildschirmgröße angepasst wird (Position inkl. eingefügtem Abstand zum Rand, sowie die Größe mit Prüfung ob abhängig von Höhe oder Breite Skaliert werden soll, Mittige Position)
                                      • Einige "Link"-Widgets darüber (z-index), Verhältnis der Position und Größe bezogen auf das "Master"-Widget wird beim Start einmalig ermittelt. Weitere Skalierung immer anhand dieser Daten
                                      • Einige "Symbol"-Widgets darüber (z-index), Verhältnis der Position und Größe bezogen auf das "Master"-Widget wird beim Start einmalig ermittelt. Weitere Skalierung immer anhand dieser Daten
                                      • Skalierung mit unterschiedlichen Parametern für Handy vs. PC/Tablet durch Erkennung des Gerätes beim Starten

                                      Ergebnis sieht dann bspw. so aus...
                                      0031.jpg

                                      ===================================
                                      In VIS...

                                      • "Master"-Widget mit Grundriss
                                        6f444374-47c6-4ade-a7d5-f4ac70120038-image.png

                                      • "Link"-Widget
                                        3a120d48-79fe-4cc2-aea9-59f478226db0-image.png

                                      • "Symbol"-Widget
                                        debf5e5f-3e03-4d44-99fa-40e1da18753c-image.png

                                      • Skript um die Responsivität zu erreichen

                                      // Initialisiere Konstanten
                                      /* ======================================================== */
                                      var debug = false;
                                      
                                      var spaceSurroundingMin = 20;
                                      var spaceSurroundingScreensizeDependent = 20;
                                      var spaceSurroundingScreensizeDependentFactor = 600;
                                      
                                      var widgetNameGrundriss = "#w00002";
                                      var widgetNameLinkWohnung = "#w00012";
                                      var widgetNameLinkWohnzimmer = "#w00001";
                                      var widgetNameLinkKueche = "#w00003";
                                      var widgetNameLinkEsszimmer = "#w00011";
                                      var widgetNameLinkFlur1 = "#w00010";
                                      var widgetNameLinkFlur2 = "#w00009";
                                      var widgetNameLinkSchlafzimmer = "#w00004";
                                      var widgetNameLinkKinderzimmer = "#w00005";
                                      var widgetNameLinkBadezimmer = "#w00006";
                                      var widgetNameLinkGaesteWc = "#w00007";
                                      var widgetNameLinkAbstellraum = "#w00008";
                                      
                                      var widgetNameSymbolWohnung = "#w00017";
                                      var widgetNameSymbolWohnzimmer = "#w00013";
                                      var widgetNameSymbolKueche = "#w00014";
                                      var widgetNameSymbolEsszimmer = "#w00015";
                                      var widgetNameSymbolFlur = "#w00016";
                                      var widgetNameSymbolSchlafzimmer = "#w00018";
                                      var widgetNameSymbolKinderzimmer = "#w00019";
                                      var widgetNameSymbolBadezimmer = "#w00020";
                                      var widgetNameSymbolGaesteWc = "#w00021";
                                      var widgetNameSymbolAbstellraum = "#w00022";
                                      
                                      
                                      // Warten bis Element geladen wurde
                                      /* ======================================================== */
                                      function waitForElement(parent, elementPath, wid, widgetName, callBack, counter = 0, debug = false)
                                      {
                                          if (counter < 10000)
                                          {
                                              setTimeout(function ()
                                              {
                                                  if (parent.find(elementPath).length > 0)
                                                  {
                                                      if (debug) console.log(`[${widgetName} ${wid}] it took ${counter}ms to wait for the element '${elementPath}'`);
                                                      callBack();
                                                  } else
                                                  {
                                                      if (debug) console.log(`[${widgetName} ${wid}] wait for element '${elementPath}'`);
                                                      counter++;
                                                      waitForElement(parent, elementPath, wid, widgetName, callBack, counter, debug);
                                                  }
                                              }, 1);
                                          } else
                                          {
                                              console.warn(`[${widgetName} ${wid}] stop waiting after ${counter} retries`);
                                              callBack();
                                          }
                                      }
                                      
                                      
                                      // Erkennen auf welchem Gerät die VIS läuft
                                      /* ======================================================== */
                                      function getDevice(debug = false)
                                      {
                                          if(window.navigator.userAgent.match(/Mobile/i)
                                          || window.navigator.userAgent.match(/iPhone/i)
                                          || window.navigator.userAgent.match(/iPod/i)
                                          || window.navigator.userAgent.match(/IEMobile/i)
                                          || window.navigator.userAgent.match(/Windows Phone/i)
                                          || window.navigator.userAgent.match(/Android/i)
                                          || window.navigator.userAgent.match(/BlackBerry/i)
                                          || window.navigator.userAgent.match(/webOS/i))
                                          {
                                              statusMobile = true;
                                          } 
                                          else
                                          {
                                              statusMobile = false;
                                          }
                                          if(window.navigator.userAgent.match(/Tablet/i)
                                          || window.navigator.userAgent.match(/iPad/i)
                                          || window.navigator.userAgent.match(/Nexus 7/i)
                                          || window.navigator.userAgent.match(/Nexus 10/i)
                                          || window.navigator.userAgent.match(/SM-T500/i)
                                          || window.navigator.userAgent.match(/KFAPWI/i))
                                          {
                                              statusTablet = true;
                                          } 
                                          else
                                          {
                                              statusTablet = false;
                                          }
                                        
                                          if ((statusMobile === true) && (statusTablet === true))
                                          {
                                              device = "tablet";
                                          }
                                          else if ((statusMobile === true) && (statusTablet === false))
                                          {
                                              device = "mobilePhone";    
                                          }
                                          else
                                          {
                                              device = "pc";    
                                          }
                                      
                                          if (debug === true)
                                          {
                                              console.log("Navigator User Agent: " + navigator.userAgent);
                                              console.log("Erkanntes Gerät: " + device);
                                          }
                                      }
                                      
                                      
                                      // Initialisiere Werte für die Skalierung der Wohnungselemente
                                      /* ======================================================== */
                                      function initResizeApartment(debug = false)
                                      {
                                          // Größe Grundriss
                                          grundrissStyle = window.getComputedStyle(document.querySelector('#w00002'));
                                          grundrissLeft = (grundrissStyle.left).replace("px", "");
                                          grundrissTop = (grundrissStyle.top).replace("px", "");
                                          grundrissWidth = $(widgetNameGrundriss).width();
                                          grundrissHeigth = $(widgetNameGrundriss).height(); 
                                          grundrissFactor = grundrissWidth / grundrissHeigth;
                                      
                                          if (debug === true)
                                          {
                                              console.log("GrundrissLeft: " + grundrissLeft);
                                              console.log("GrundrissTop: " + grundrissTop);
                                          }
                                          
                                          // Größe Wohnung
                                          linkWohnungStyle = window.getComputedStyle(document.querySelector('#w00012'));
                                          linkWohnungLeft = (linkWohnungStyle.left).replace("px", "") - grundrissLeft;
                                          linkWohnungTop = (linkWohnungStyle.top).replace("px", "") - grundrissTop;
                                          linkWohnungFactorLeft = grundrissWidth / linkWohnungLeft;
                                          linkWohnungFactorTop = grundrissHeigth / linkWohnungTop;
                                          linkWohnungFactorWidth = grundrissWidth / ($(widgetNameLinkWohnung).width());
                                          linkWohnungFactorHeigth = grundrissHeigth/ ($(widgetNameLinkWohnung).height());
                                          
                                          symbolWohnungStyle = window.getComputedStyle(document.querySelector('#w00017'));
                                          symbolWohnungLeft = (symbolWohnungStyle.left).replace("px", "") - grundrissLeft;
                                          symbolWohnungTop = (symbolWohnungStyle.top).replace("px", "") - grundrissTop;
                                          symbolWohnungFactorLeft = grundrissWidth / symbolWohnungLeft;
                                          symbolWohnungFactorTop = grundrissHeigth / symbolWohnungTop;
                                          symbolWohnungFactorWidth = grundrissWidth / ($(widgetNameSymbolWohnung).width());
                                          symbolWohnungFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolWohnung).height());
                                      
                                          // Größe Wohnzimmer
                                          linkWohnzimmerStyle = window.getComputedStyle(document.querySelector('#w00001'));
                                          linkWohnzimmerLeft = (linkWohnzimmerStyle.left).replace("px", "") - grundrissLeft;
                                          linkWohnzimmerTop = (linkWohnzimmerStyle.top).replace("px", "") - grundrissTop;
                                          linkWohnzimmerFactorLeft = grundrissWidth / linkWohnzimmerLeft;
                                          linkWohnzimmerFactorTop = grundrissHeigth / linkWohnzimmerTop;
                                          linkWohnzimmerFactorWidth = grundrissWidth / ($(widgetNameLinkWohnzimmer).width());
                                          linkWohnzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkWohnzimmer).height());
                                          
                                          symbolWohnzimmerStyle = window.getComputedStyle(document.querySelector('#w00013'));
                                          symbolWohnzimmerLeft = (symbolWohnzimmerStyle.left).replace("px", "") - grundrissLeft;
                                          symbolWohnzimmerTop = (symbolWohnzimmerStyle.top).replace("px", "") - grundrissTop;
                                          symbolWohnzimmerFactorLeft = grundrissWidth / symbolWohnzimmerLeft;
                                          symbolWohnzimmerFactorTop = grundrissHeigth / symbolWohnzimmerTop;
                                          symbolWohnzimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolWohnzimmer).width());
                                          symbolWohnzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolWohnzimmer).height()); 
                                      
                                          // Größe Küche
                                          linkKuecheStyle = window.getComputedStyle(document.querySelector('#w00003'));
                                          linkKuecheLeft = (linkKuecheStyle.left).replace("px", "") - grundrissLeft;
                                          linkKuecheTop = (linkKuecheStyle.top).replace("px", "") - grundrissTop;
                                          linkKuecheFactorLeft = grundrissWidth / linkKuecheLeft;
                                          linkKuecheFactorTop = grundrissHeigth / linkKuecheTop;
                                          linkKuecheFactorWidth = grundrissWidth / ($(widgetNameLinkKueche).width());
                                          linkKuecheFactorHeigth = grundrissHeigth/ ($(widgetNameLinkKueche).height());
                                          
                                          symbolKuecheStyle = window.getComputedStyle(document.querySelector('#w00014'));
                                          symbolKuecheLeft = (symbolKuecheStyle.left).replace("px", "") - grundrissLeft;
                                          symbolKuecheTop = (symbolKuecheStyle.top).replace("px", "") - grundrissTop;
                                          symbolKuecheFactorLeft = grundrissWidth / symbolKuecheLeft;
                                          symbolKuecheFactorTop = grundrissHeigth / symbolKuecheTop;
                                          symbolKuecheFactorWidth = grundrissWidth / ($(widgetNameSymbolKueche).width());
                                          symbolKuecheFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolKueche).height());
                                          
                                          // Größe Esszimmer
                                          linkEsszimmerStyle = window.getComputedStyle(document.querySelector('#w00011'));
                                          linkEsszimmerLeft = (linkEsszimmerStyle.left).replace("px", "") - grundrissLeft;
                                          linkEsszimmerTop = (linkEsszimmerStyle.top).replace("px", "") - grundrissTop;
                                          linkEsszimmerFactorLeft = grundrissWidth / linkEsszimmerLeft;
                                          linkEsszimmerFactorTop = grundrissHeigth / linkEsszimmerTop;
                                          linkEsszimmerFactorWidth = grundrissWidth / ($(widgetNameLinkEsszimmer).width());
                                          linkEsszimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkEsszimmer).height());
                                          
                                          symbolEsszimmerStyle = window.getComputedStyle(document.querySelector('#w00015'));
                                          symbolEsszimmerLeft = (symbolEsszimmerStyle.left).replace("px", "") - grundrissLeft;
                                          symbolEsszimmerTop = (symbolEsszimmerStyle.top).replace("px", "") - grundrissTop;
                                          symbolEsszimmerFactorLeft = grundrissWidth / symbolEsszimmerLeft;
                                          symbolEsszimmerFactorTop = grundrissHeigth / symbolEsszimmerTop;
                                          symbolEsszimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolEsszimmer).width());
                                          symbolEsszimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolEsszimmer).height());
                                      
                                          // Größe Flur
                                          linkFlur1Style = window.getComputedStyle(document.querySelector('#w00010'));
                                          linkFlur1Left = (linkFlur1Style.left).replace("px", "") - grundrissLeft;
                                          linkFlur1Top = (linkFlur1Style.top).replace("px", "") - grundrissTop;
                                          linkFlur1FactorLeft = grundrissWidth / linkFlur1Left;
                                          linkFlur1FactorTop = grundrissHeigth / linkFlur1Top;
                                          linkFlur1FactorWidth = grundrissWidth / ($(widgetNameLinkFlur1).width());
                                          linkFlur1FactorHeigth = grundrissHeigth/ ($(widgetNameLinkFlur1).height()); 
                                      
                                          linkFlur2Style = window.getComputedStyle(document.querySelector('#w00009'));
                                          linkFlur2Left = (linkFlur2Style.left).replace("px", "") - grundrissLeft;
                                          linkFlur2Top = (linkFlur2Style.top).replace("px", "") - grundrissTop;
                                          linkFlur2FactorLeft = grundrissWidth / linkFlur2Left;
                                          linkFlur2FactorTop = grundrissHeigth / linkFlur2Top;
                                          linkFlur2FactorWidth = grundrissWidth / ($(widgetNameLinkFlur2).width());
                                          linkFlur2FactorHeigth = grundrissHeigth/ ($(widgetNameLinkFlur2).height());
                                          
                                          symbolFlurStyle = window.getComputedStyle(document.querySelector('#w00016'));
                                          symbolFlurLeft = (symbolFlurStyle.left).replace("px", "") - grundrissLeft;
                                          symbolFlurTop = (symbolFlurStyle.top).replace("px", "") - grundrissTop;
                                          symbolFlurFactorLeft = grundrissWidth / symbolFlurLeft;
                                          symbolFlurFactorTop = grundrissHeigth / symbolFlurTop;
                                          symbolFlurFactorWidth = grundrissWidth / ($(widgetNameSymbolFlur).width());
                                          symbolFlurFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolFlur).height());
                                      
                                          // Größe Schlafzimmer
                                          linkSchlafzimmerStyle = window.getComputedStyle(document.querySelector('#w00004'));
                                          linkSchlafzimmerLeft = (linkSchlafzimmerStyle.left).replace("px", "") - grundrissLeft;
                                          linkSchlafzimmerTop = (linkSchlafzimmerStyle.top).replace("px", "") - grundrissTop;
                                          linkSchlafzimmerFactorLeft = grundrissWidth / linkSchlafzimmerLeft;
                                          linkSchlafzimmerFactorTop = grundrissHeigth / linkSchlafzimmerTop;
                                          linkSchlafzimmerFactorWidth = grundrissWidth / ($(widgetNameLinkSchlafzimmer).width());
                                          linkSchlafzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkSchlafzimmer).height());
                                          
                                          symbolSchlafzimmerStyle = window.getComputedStyle(document.querySelector('#w00018'));
                                          symbolSchlafzimmerLeft = (symbolSchlafzimmerStyle.left).replace("px", "") - grundrissLeft;
                                          symbolSchlafzimmerTop = (symbolSchlafzimmerStyle.top).replace("px", "") - grundrissTop;
                                          symbolSchlafzimmerFactorLeft = grundrissWidth / symbolSchlafzimmerLeft;
                                          symbolSchlafzimmerFactorTop = grundrissHeigth / symbolSchlafzimmerTop;
                                          symbolSchlafzimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolSchlafzimmer).width());
                                          symbolSchlafzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolSchlafzimmer).height());
                                      
                                          // Größe Kinderzimmer
                                          linkKinderzimmerStyle = window.getComputedStyle(document.querySelector('#w00005'));
                                          linkKinderzimmerLeft = (linkKinderzimmerStyle.left).replace("px", "") - grundrissLeft;
                                          linkKinderzimmerTop = (linkKinderzimmerStyle.top).replace("px", "") - grundrissTop;
                                          linkKinderzimmerFactorLeft = grundrissWidth / linkKinderzimmerLeft;
                                          linkKinderzimmerFactorTop = grundrissHeigth / linkKinderzimmerTop;
                                          linkKinderzimmerFactorWidth = grundrissWidth / ($(widgetNameLinkKinderzimmer).width());
                                          linkKinderzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkKinderzimmer).height());
                                          
                                          symbolKinderzimmerStyle = window.getComputedStyle(document.querySelector('#w00019'));
                                          symbolKinderzimmerLeft = (symbolKinderzimmerStyle.left).replace("px", "") - grundrissLeft;
                                          symbolKinderzimmerTop = (symbolKinderzimmerStyle.top).replace("px", "") - grundrissTop;
                                          symbolKinderzimmerFactorLeft = grundrissWidth / symbolKinderzimmerLeft;
                                          symbolKinderzimmerFactorTop = grundrissHeigth / symbolKinderzimmerTop;
                                          symbolKinderzimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolKinderzimmer).width());
                                          symbolKinderzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolKinderzimmer).height());
                                      
                                          // Größe Badezimmer
                                          linkBadezimmerStyle = window.getComputedStyle(document.querySelector('#w00006'));
                                          linkBadezimmerLeft = (linkBadezimmerStyle.left).replace("px", "") - grundrissLeft;
                                          linkBadezimmerTop = (linkBadezimmerStyle.top).replace("px", "") - grundrissTop;
                                          linkBadezimmerFactorLeft = grundrissWidth / linkBadezimmerLeft;
                                          linkBadezimmerFactorTop = grundrissHeigth / linkBadezimmerTop;
                                          linkBadezimmerFactorWidth = grundrissWidth / ($(widgetNameLinkBadezimmer).width());
                                          linkBadezimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkBadezimmer).height());
                                          
                                          symbolBadezimmerStyle = window.getComputedStyle(document.querySelector('#w00020'));
                                          symbolBadezimmerLeft = (symbolBadezimmerStyle.left).replace("px", "") - grundrissLeft;
                                          symbolBadezimmerTop = (symbolBadezimmerStyle.top).replace("px", "") - grundrissTop;
                                          symbolBadezimmerFactorLeft = grundrissWidth / symbolBadezimmerLeft;
                                          symbolBadezimmerFactorTop = grundrissHeigth / symbolBadezimmerTop;
                                          symbolBadezimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolBadezimmer).width());
                                          symbolBadezimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolBadezimmer).height());
                                      
                                          // Größe Gäste-WC
                                          linkGaesteWcStyle = window.getComputedStyle(document.querySelector('#w00007'));
                                          linkGaesteWcLeft = (linkGaesteWcStyle.left).replace("px", "") - grundrissLeft;
                                          linkGaesteWcTop = (linkGaesteWcStyle.top).replace("px", "") - grundrissTop;
                                          linkGaesteWcFactorLeft = grundrissWidth / linkGaesteWcLeft;
                                          linkGaesteWcFactorTop = grundrissHeigth / linkGaesteWcTop;
                                          linkGaesteWcFactorWidth = grundrissWidth / ($(widgetNameLinkGaesteWc).width());
                                          linkGaesteWcFactorHeigth = grundrissHeigth/ ($(widgetNameLinkGaesteWc).height());
                                          
                                          symbolGaesteWcStyle = window.getComputedStyle(document.querySelector('#w00021'));
                                          symbolGaesteWcLeft = (symbolGaesteWcStyle.left).replace("px", "") - grundrissLeft;
                                          symbolGaesteWcTop = (symbolGaesteWcStyle.top).replace("px", "") - grundrissTop;
                                          symbolGaesteWcFactorLeft = grundrissWidth / symbolGaesteWcLeft;
                                          symbolGaesteWcFactorTop = grundrissHeigth / symbolGaesteWcTop;
                                          symbolGaesteWcFactorWidth = grundrissWidth / ($(widgetNameSymbolGaesteWc).width());
                                          symbolGaesteWcFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolGaesteWc).height());
                                      
                                          // Größe Abstellraum
                                          linkAbstellraumStyle = window.getComputedStyle(document.querySelector('#w00008'));
                                          linkAbstellraumLeft = (linkAbstellraumStyle.left).replace("px", "") - grundrissLeft;
                                          linkAbstellraumTop = (linkAbstellraumStyle.top).replace("px", "") - grundrissTop;
                                          linkAbstellraumFactorLeft = grundrissWidth / linkAbstellraumLeft;
                                          linkAbstellraumFactorTop = grundrissHeigth / linkAbstellraumTop;
                                          linkAbstellraumFactorWidth = grundrissWidth / ($(widgetNameLinkAbstellraum).width());
                                          linkAbstellraumFactorHeigth = grundrissHeigth/ ($(widgetNameLinkAbstellraum).height());
                                          
                                          symbolAbstellraumStyle = window.getComputedStyle(document.querySelector('#w00022'));
                                          symbolAbstellraumLeft = (symbolAbstellraumStyle.left).replace("px", "") - grundrissLeft;
                                          symbolAbstellraumTop = (symbolAbstellraumStyle.top).replace("px", "") - grundrissTop;
                                          symbolAbstellraumFactorLeft = grundrissWidth / symbolAbstellraumLeft;
                                          symbolAbstellraumFactorTop = grundrissHeigth / symbolAbstellraumTop;
                                          symbolAbstellraumFactorWidth = grundrissWidth / ($(widgetNameSymbolAbstellraum).width());
                                          symbolAbstellraumFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolAbstellraum).height());
                                      
                                      }
                                      
                                      
                                      // Skalierung des umliegenden Abstands
                                      /* ======================================================== */
                                      function setResizeSpace(windowWidth, windowHeigth, debug = false)
                                      {
                                          if (windowWidth < windowHeigth)
                                          {
                                              // Fensterbreite maßgeblich
                                              windowMinSize = windowWidth; 
                                          } else
                                          {
                                              // Fensterhöhe maßgeblich
                                              windowMinSize = windowHeigth;
                                          }
                                          
                                          if (device === "mobilePhone")
                                          {
                                              spaceSurrounding = spaceSurroundingMin;
                                          }
                                          else
                                          {
                                              spaceSurrounding = spaceSurroundingMin + spaceSurroundingScreensizeDependent * (windowMinSize / spaceSurroundingScreensizeDependentFactor);  
                                          }
                                          
                                      }
                                      
                                      
                                      // Skalierung der Wohnungselemente
                                      /* ======================================================== */
                                      function setResizeElement(element, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, elementFactorLeft, elementFactorTop, elementFactorWidth, elementFactorHeigth, debug = false)
                                      {
                                          $(element).css({"left": (grundrissLeft) + (grundrissWidth/elementFactorLeft), "top": (grundrissTop) + (grundrissHeigth/elementFactorTop), "width": (grundrissWidth/elementFactorWidth), "height": (grundrissHeigth/elementFactorHeigth)});
                                      
                                      }
                                      
                                      
                                      // Skalierung der Symbolgrößen
                                      /* ======================================================== */
                                      function setResizeSymbol(debug = false)
                                      {
                                          if (device === "mobilePhone")
                                          {
                                              symbolHeigth = 43;
                                          }
                                          else
                                          {
                                              symbolHeigth = 65;  
                                          }
                                          $(".symbolGrundrissRaume .vis-inventwo-img").css({"height": symbolHeigth+"px"});
                                      
                                      }
                                      
                                      
                                      // Skalierung der Wohnung
                                      /* ======================================================== */
                                      function setResizeApartment(debug = false)
                                      {
                                          
                                          // Fenstergröße
                                          windowWidth = $(window).width();
                                          windowHeigth = $(window).height();    
                                          windowFactor = windowWidth / windowHeigth; 
                                          
                                          // Abstand dynamisch an Fenstergröße anpassen
                                          setResizeSpace(windowWidth, windowHeigth, debug);
                                          
                                          // Fenstergröße und -faktor mit Abstand
                                          if ((windowWidth > (spaceSurrounding * 2))
                                             && (windowHeigth > (spaceSurrounding * 2)))
                                          {
                                              windowSpaceWidth = windowWidth - (spaceSurrounding * 2);
                                              windowSpaceHeigth = windowHeigth - (spaceSurrounding * 2); 
                                              windowSpaceFactor = windowSpaceWidth / windowSpaceHeigth;        
                                          }
                                          else
                                          {
                                              windowSpaceWidth = 0;
                                              windowSpaceHeigth = 0; 
                                              windowSpaceFactor = 0;  
                                          }
                                          
                                          // Grundrissgröße
                                          if (windowSpaceFactor < grundrissFactor)
                                          {
                                              // Fensterbreite maßgeblich
                                              
                                              // Grundriss mittig zentrieren
                                              grundrissWidth = (windowSpaceWidth);
                                              grundrissHeigth = (windowSpaceWidth) / grundrissFactor;
                                              grundrissLeft = spaceSurrounding;
                                              grundrissTop = spaceSurrounding + ((windowSpaceHeigth - grundrissHeigth) / 2);
                                              
                                              if (debug === true)
                                              {
                                                  console.log("Fensterbreite maßgeblich");
                                              }
                                          } else
                                          {
                                              // Fensterhöhe maßgeblich
                                              
                                              // Grundriss mittig zentrieren
                                              grundrissHeigth = (windowSpaceHeigth);
                                              grundrissWidth = (windowSpaceHeigth) * grundrissFactor;
                                              grundrissLeft = spaceSurrounding + (windowSpaceWidth - grundrissWidth) / 2;
                                              grundrissTop = spaceSurrounding; 
                                              
                                              if (debug === true)
                                              {
                                                  console.log("Fensterhöhe maßgeblich");
                                              }
                                          }
                                          
                                          // Größe und Position Grundriss anpassen
                                          $(widgetNameGrundriss).css({"left": grundrissLeft, "top": grundrissTop, "width": grundrissWidth,"height": grundrissHeigth});
                                      
                                          // Grundrissgröße nach Anpassung und Referenz für alle folgenden Elemente
                                          grundrissWidth = $(widgetNameGrundriss).width();
                                          grundrissHeigth = $(widgetNameGrundriss).height();
                                          
                                          // Position und -größe skalieren Wohnung
                                          setResizeElement(widgetNameLinkWohnung, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkWohnungFactorLeft, linkWohnungFactorTop, linkWohnungFactorWidth, linkWohnungFactorHeigth, debug);
                                          
                                          setResizeElement(widgetNameSymbolWohnung, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolWohnungFactorLeft, symbolWohnungFactorTop, symbolWohnungFactorWidth, symbolWohnungFactorHeigth, debug);
                                          
                                          // Position und -größe skalieren Wohnzimmer
                                          setResizeElement(widgetNameLinkWohnzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkWohnzimmerFactorLeft, linkWohnzimmerFactorTop, linkWohnzimmerFactorWidth, linkWohnzimmerFactorHeigth, debug);
                                          
                                          setResizeElement(widgetNameSymbolWohnzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolWohnzimmerFactorLeft, symbolWohnzimmerFactorTop, symbolWohnzimmerFactorWidth, symbolWohnzimmerFactorHeigth, debug);
                                          
                                          // Position und -größe skalieren Küche
                                          setResizeElement(widgetNameLinkKueche, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkKuecheFactorLeft, linkKuecheFactorTop, linkKuecheFactorWidth, linkKuecheFactorHeigth, debug);
                                          
                                          setResizeElement(widgetNameSymbolKueche, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolKuecheFactorLeft, symbolKuecheFactorTop, symbolKuecheFactorWidth, symbolKuecheFactorHeigth, debug);
                                          
                                          // Position und -größe skalieren Esszimmer
                                          setResizeElement(widgetNameLinkEsszimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkEsszimmerFactorLeft, linkEsszimmerFactorTop, linkEsszimmerFactorWidth, linkEsszimmerFactorHeigth, debug);
                                          
                                          setResizeElement(widgetNameSymbolEsszimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolEsszimmerFactorLeft, symbolEsszimmerFactorTop, symbolEsszimmerFactorWidth, symbolEsszimmerFactorHeigth, debug);
                                          
                                          // Position und -größe skalieren Flur
                                          setResizeElement(widgetNameLinkFlur1, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkFlur1FactorLeft, linkFlur1FactorTop, linkFlur1FactorWidth, linkFlur1FactorHeigth, debug);
                                      
                                          setResizeElement(widgetNameLinkFlur2, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkFlur2FactorLeft, linkFlur2FactorTop, linkFlur2FactorWidth, linkFlur2FactorHeigth, debug);
                                          
                                          setResizeElement(widgetNameSymbolFlur, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolFlurFactorLeft, symbolFlurFactorTop, symbolFlurFactorWidth, symbolFlurFactorHeigth, debug);
                                      
                                          // Position und -größe skalieren Schlafzimmer
                                          setResizeElement(widgetNameLinkSchlafzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkSchlafzimmerFactorLeft, linkSchlafzimmerFactorTop, linkSchlafzimmerFactorWidth, linkSchlafzimmerFactorHeigth, debug);
                                          
                                          setResizeElement(widgetNameSymbolSchlafzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolSchlafzimmerFactorLeft, symbolSchlafzimmerFactorTop, symbolSchlafzimmerFactorWidth, symbolSchlafzimmerFactorHeigth, debug);
                                      
                                          // Position und -größe skalieren Kinderzimmer
                                          setResizeElement(widgetNameLinkKinderzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkKinderzimmerFactorLeft, linkKinderzimmerFactorTop, linkKinderzimmerFactorWidth, linkKinderzimmerFactorHeigth, debug);
                                          
                                          setResizeElement(widgetNameSymbolKinderzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolKinderzimmerFactorLeft, symbolKinderzimmerFactorTop, symbolKinderzimmerFactorWidth, symbolKinderzimmerFactorHeigth, debug);
                                      
                                          // Position und -größe skalieren Badezimmer
                                          setResizeElement(widgetNameLinkBadezimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkBadezimmerFactorLeft, linkBadezimmerFactorTop, linkBadezimmerFactorWidth, linkBadezimmerFactorHeigth, debug);
                                          
                                          setResizeElement(widgetNameSymbolBadezimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolBadezimmerFactorLeft, symbolBadezimmerFactorTop, symbolBadezimmerFactorWidth, symbolBadezimmerFactorHeigth, debug);
                                      
                                          // Position und -größe skalieren Gäste-WC
                                          setResizeElement(widgetNameLinkGaesteWc, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkGaesteWcFactorLeft, linkGaesteWcFactorTop, linkGaesteWcFactorWidth, linkGaesteWcFactorHeigth, debug);
                                          
                                          setResizeElement(widgetNameSymbolGaesteWc, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolGaesteWcFactorLeft, symbolGaesteWcFactorTop, symbolGaesteWcFactorWidth, symbolGaesteWcFactorHeigth, debug);
                                          
                                          // Position und -größe skalieren Abstellraum
                                          setResizeElement(widgetNameLinkAbstellraum, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkAbstellraumFactorLeft, linkAbstellraumFactorTop, linkAbstellraumFactorWidth, linkAbstellraumFactorHeigth, debug);
                                          
                                          setResizeElement(widgetNameSymbolAbstellraum, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolAbstellraumFactorLeft, symbolAbstellraumFactorTop, symbolAbstellraumFactorWidth, symbolAbstellraumFactorHeigth, debug);
                                      
                                          if (debug === true)
                                          {
                                              console.log("Umgebender Abstand: " + spaceSurrounding);
                                              
                                              console.log("Fensterbreite: " + windowWidth);
                                              console.log("Fensterhöhe: " + windowHeigth);
                                              console.log("windowFactor: " + windowFactor);
                                                      
                                              console.log("Grundrissbreite: " + grundrissWidth);
                                              console.log("Grundrisshöhe: " + grundrissHeigth);
                                              console.log("grundrissFactor: " + grundrissFactor); 
                                          }
                                      
                                      }
                                      
                                      
                                      // Skriptstart
                                      /* ======================================================== */
                                      waitForElement($('body'),'.grundriss', 'dummy', 'dummy', function () {
                                          // Widget ist vollständig geladen, wir können irgendwas damit machen
                                          
                                          // Erkennen auf welchem Gerät die VIS läuft
                                          getDevice(debug);
                                          
                                          // Initialisiere Skalierung
                                          initResizeApartment(debug);
                                          
                                          // Initiale Skalierung
                                          setResizeApartment(debug);
                                          
                                          // Symbolgröße skalieren
                                          setResizeSymbol(debug);
                                          
                                          // Event registrieren bei Fenstergrößenänderung
                                          $(window).resize(function () 
                                          {
                                              // Skalierung anpassen
                                              setResizeApartment(debug);
                                      
                                          });
                                      }, 0, debug);
                                      

                                      Sehr geile Sache! Ich habe versucht das Script testweise auf ein einziges Widget erst einmal zu beschränken. Leider fehlt mir doch das Wissen / die Erfahrung. Gibt es denn eine Anleitung oder Doku zum Anpassen des Scripts?

                                      U Offline
                                      U Offline
                                      uwe72
                                      schrieb am zuletzt editiert von
                                      #2167

                                      @MCU

                                      Frage, wenn ich den unteren Slider ausschalte (was ich gemacht habe), wie komme ich dann wieder in die Konfig rein?

                                      7db89739-2e26-4bb6-a5ba-8b91160a1248-image.png

                                      U 1 Antwort Letzte Antwort
                                      0
                                      • S SlipKoRn_DH88

                                        @rkccorian

                                        @rkccorian said in jarvis v3.0.0 - just another remarkable vis:

                                        @mcu Moin Mcu! Wie versprochen noch die Info bzgl. dem responsiven Grundriss mit VIS. Hoffe das hilft auch Anderen! :-)

                                        Idee:

                                        • Ein "Master"-Widget mit dem Grundriss (Erstellt mit SweetHome3D), welches laufend an die Bildschirmgröße angepasst wird (Position inkl. eingefügtem Abstand zum Rand, sowie die Größe mit Prüfung ob abhängig von Höhe oder Breite Skaliert werden soll, Mittige Position)
                                        • Einige "Link"-Widgets darüber (z-index), Verhältnis der Position und Größe bezogen auf das "Master"-Widget wird beim Start einmalig ermittelt. Weitere Skalierung immer anhand dieser Daten
                                        • Einige "Symbol"-Widgets darüber (z-index), Verhältnis der Position und Größe bezogen auf das "Master"-Widget wird beim Start einmalig ermittelt. Weitere Skalierung immer anhand dieser Daten
                                        • Skalierung mit unterschiedlichen Parametern für Handy vs. PC/Tablet durch Erkennung des Gerätes beim Starten

                                        Ergebnis sieht dann bspw. so aus...
                                        0031.jpg

                                        ===================================
                                        In VIS...

                                        • "Master"-Widget mit Grundriss
                                          6f444374-47c6-4ade-a7d5-f4ac70120038-image.png

                                        • "Link"-Widget
                                          3a120d48-79fe-4cc2-aea9-59f478226db0-image.png

                                        • "Symbol"-Widget
                                          debf5e5f-3e03-4d44-99fa-40e1da18753c-image.png

                                        • Skript um die Responsivität zu erreichen

                                        // Initialisiere Konstanten
                                        /* ======================================================== */
                                        var debug = false;
                                        
                                        var spaceSurroundingMin = 20;
                                        var spaceSurroundingScreensizeDependent = 20;
                                        var spaceSurroundingScreensizeDependentFactor = 600;
                                        
                                        var widgetNameGrundriss = "#w00002";
                                        var widgetNameLinkWohnung = "#w00012";
                                        var widgetNameLinkWohnzimmer = "#w00001";
                                        var widgetNameLinkKueche = "#w00003";
                                        var widgetNameLinkEsszimmer = "#w00011";
                                        var widgetNameLinkFlur1 = "#w00010";
                                        var widgetNameLinkFlur2 = "#w00009";
                                        var widgetNameLinkSchlafzimmer = "#w00004";
                                        var widgetNameLinkKinderzimmer = "#w00005";
                                        var widgetNameLinkBadezimmer = "#w00006";
                                        var widgetNameLinkGaesteWc = "#w00007";
                                        var widgetNameLinkAbstellraum = "#w00008";
                                        
                                        var widgetNameSymbolWohnung = "#w00017";
                                        var widgetNameSymbolWohnzimmer = "#w00013";
                                        var widgetNameSymbolKueche = "#w00014";
                                        var widgetNameSymbolEsszimmer = "#w00015";
                                        var widgetNameSymbolFlur = "#w00016";
                                        var widgetNameSymbolSchlafzimmer = "#w00018";
                                        var widgetNameSymbolKinderzimmer = "#w00019";
                                        var widgetNameSymbolBadezimmer = "#w00020";
                                        var widgetNameSymbolGaesteWc = "#w00021";
                                        var widgetNameSymbolAbstellraum = "#w00022";
                                        
                                        
                                        // Warten bis Element geladen wurde
                                        /* ======================================================== */
                                        function waitForElement(parent, elementPath, wid, widgetName, callBack, counter = 0, debug = false)
                                        {
                                            if (counter < 10000)
                                            {
                                                setTimeout(function ()
                                                {
                                                    if (parent.find(elementPath).length > 0)
                                                    {
                                                        if (debug) console.log(`[${widgetName} ${wid}] it took ${counter}ms to wait for the element '${elementPath}'`);
                                                        callBack();
                                                    } else
                                                    {
                                                        if (debug) console.log(`[${widgetName} ${wid}] wait for element '${elementPath}'`);
                                                        counter++;
                                                        waitForElement(parent, elementPath, wid, widgetName, callBack, counter, debug);
                                                    }
                                                }, 1);
                                            } else
                                            {
                                                console.warn(`[${widgetName} ${wid}] stop waiting after ${counter} retries`);
                                                callBack();
                                            }
                                        }
                                        
                                        
                                        // Erkennen auf welchem Gerät die VIS läuft
                                        /* ======================================================== */
                                        function getDevice(debug = false)
                                        {
                                            if(window.navigator.userAgent.match(/Mobile/i)
                                            || window.navigator.userAgent.match(/iPhone/i)
                                            || window.navigator.userAgent.match(/iPod/i)
                                            || window.navigator.userAgent.match(/IEMobile/i)
                                            || window.navigator.userAgent.match(/Windows Phone/i)
                                            || window.navigator.userAgent.match(/Android/i)
                                            || window.navigator.userAgent.match(/BlackBerry/i)
                                            || window.navigator.userAgent.match(/webOS/i))
                                            {
                                                statusMobile = true;
                                            } 
                                            else
                                            {
                                                statusMobile = false;
                                            }
                                            if(window.navigator.userAgent.match(/Tablet/i)
                                            || window.navigator.userAgent.match(/iPad/i)
                                            || window.navigator.userAgent.match(/Nexus 7/i)
                                            || window.navigator.userAgent.match(/Nexus 10/i)
                                            || window.navigator.userAgent.match(/SM-T500/i)
                                            || window.navigator.userAgent.match(/KFAPWI/i))
                                            {
                                                statusTablet = true;
                                            } 
                                            else
                                            {
                                                statusTablet = false;
                                            }
                                          
                                            if ((statusMobile === true) && (statusTablet === true))
                                            {
                                                device = "tablet";
                                            }
                                            else if ((statusMobile === true) && (statusTablet === false))
                                            {
                                                device = "mobilePhone";    
                                            }
                                            else
                                            {
                                                device = "pc";    
                                            }
                                        
                                            if (debug === true)
                                            {
                                                console.log("Navigator User Agent: " + navigator.userAgent);
                                                console.log("Erkanntes Gerät: " + device);
                                            }
                                        }
                                        
                                        
                                        // Initialisiere Werte für die Skalierung der Wohnungselemente
                                        /* ======================================================== */
                                        function initResizeApartment(debug = false)
                                        {
                                            // Größe Grundriss
                                            grundrissStyle = window.getComputedStyle(document.querySelector('#w00002'));
                                            grundrissLeft = (grundrissStyle.left).replace("px", "");
                                            grundrissTop = (grundrissStyle.top).replace("px", "");
                                            grundrissWidth = $(widgetNameGrundriss).width();
                                            grundrissHeigth = $(widgetNameGrundriss).height(); 
                                            grundrissFactor = grundrissWidth / grundrissHeigth;
                                        
                                            if (debug === true)
                                            {
                                                console.log("GrundrissLeft: " + grundrissLeft);
                                                console.log("GrundrissTop: " + grundrissTop);
                                            }
                                            
                                            // Größe Wohnung
                                            linkWohnungStyle = window.getComputedStyle(document.querySelector('#w00012'));
                                            linkWohnungLeft = (linkWohnungStyle.left).replace("px", "") - grundrissLeft;
                                            linkWohnungTop = (linkWohnungStyle.top).replace("px", "") - grundrissTop;
                                            linkWohnungFactorLeft = grundrissWidth / linkWohnungLeft;
                                            linkWohnungFactorTop = grundrissHeigth / linkWohnungTop;
                                            linkWohnungFactorWidth = grundrissWidth / ($(widgetNameLinkWohnung).width());
                                            linkWohnungFactorHeigth = grundrissHeigth/ ($(widgetNameLinkWohnung).height());
                                            
                                            symbolWohnungStyle = window.getComputedStyle(document.querySelector('#w00017'));
                                            symbolWohnungLeft = (symbolWohnungStyle.left).replace("px", "") - grundrissLeft;
                                            symbolWohnungTop = (symbolWohnungStyle.top).replace("px", "") - grundrissTop;
                                            symbolWohnungFactorLeft = grundrissWidth / symbolWohnungLeft;
                                            symbolWohnungFactorTop = grundrissHeigth / symbolWohnungTop;
                                            symbolWohnungFactorWidth = grundrissWidth / ($(widgetNameSymbolWohnung).width());
                                            symbolWohnungFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolWohnung).height());
                                        
                                            // Größe Wohnzimmer
                                            linkWohnzimmerStyle = window.getComputedStyle(document.querySelector('#w00001'));
                                            linkWohnzimmerLeft = (linkWohnzimmerStyle.left).replace("px", "") - grundrissLeft;
                                            linkWohnzimmerTop = (linkWohnzimmerStyle.top).replace("px", "") - grundrissTop;
                                            linkWohnzimmerFactorLeft = grundrissWidth / linkWohnzimmerLeft;
                                            linkWohnzimmerFactorTop = grundrissHeigth / linkWohnzimmerTop;
                                            linkWohnzimmerFactorWidth = grundrissWidth / ($(widgetNameLinkWohnzimmer).width());
                                            linkWohnzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkWohnzimmer).height());
                                            
                                            symbolWohnzimmerStyle = window.getComputedStyle(document.querySelector('#w00013'));
                                            symbolWohnzimmerLeft = (symbolWohnzimmerStyle.left).replace("px", "") - grundrissLeft;
                                            symbolWohnzimmerTop = (symbolWohnzimmerStyle.top).replace("px", "") - grundrissTop;
                                            symbolWohnzimmerFactorLeft = grundrissWidth / symbolWohnzimmerLeft;
                                            symbolWohnzimmerFactorTop = grundrissHeigth / symbolWohnzimmerTop;
                                            symbolWohnzimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolWohnzimmer).width());
                                            symbolWohnzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolWohnzimmer).height()); 
                                        
                                            // Größe Küche
                                            linkKuecheStyle = window.getComputedStyle(document.querySelector('#w00003'));
                                            linkKuecheLeft = (linkKuecheStyle.left).replace("px", "") - grundrissLeft;
                                            linkKuecheTop = (linkKuecheStyle.top).replace("px", "") - grundrissTop;
                                            linkKuecheFactorLeft = grundrissWidth / linkKuecheLeft;
                                            linkKuecheFactorTop = grundrissHeigth / linkKuecheTop;
                                            linkKuecheFactorWidth = grundrissWidth / ($(widgetNameLinkKueche).width());
                                            linkKuecheFactorHeigth = grundrissHeigth/ ($(widgetNameLinkKueche).height());
                                            
                                            symbolKuecheStyle = window.getComputedStyle(document.querySelector('#w00014'));
                                            symbolKuecheLeft = (symbolKuecheStyle.left).replace("px", "") - grundrissLeft;
                                            symbolKuecheTop = (symbolKuecheStyle.top).replace("px", "") - grundrissTop;
                                            symbolKuecheFactorLeft = grundrissWidth / symbolKuecheLeft;
                                            symbolKuecheFactorTop = grundrissHeigth / symbolKuecheTop;
                                            symbolKuecheFactorWidth = grundrissWidth / ($(widgetNameSymbolKueche).width());
                                            symbolKuecheFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolKueche).height());
                                            
                                            // Größe Esszimmer
                                            linkEsszimmerStyle = window.getComputedStyle(document.querySelector('#w00011'));
                                            linkEsszimmerLeft = (linkEsszimmerStyle.left).replace("px", "") - grundrissLeft;
                                            linkEsszimmerTop = (linkEsszimmerStyle.top).replace("px", "") - grundrissTop;
                                            linkEsszimmerFactorLeft = grundrissWidth / linkEsszimmerLeft;
                                            linkEsszimmerFactorTop = grundrissHeigth / linkEsszimmerTop;
                                            linkEsszimmerFactorWidth = grundrissWidth / ($(widgetNameLinkEsszimmer).width());
                                            linkEsszimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkEsszimmer).height());
                                            
                                            symbolEsszimmerStyle = window.getComputedStyle(document.querySelector('#w00015'));
                                            symbolEsszimmerLeft = (symbolEsszimmerStyle.left).replace("px", "") - grundrissLeft;
                                            symbolEsszimmerTop = (symbolEsszimmerStyle.top).replace("px", "") - grundrissTop;
                                            symbolEsszimmerFactorLeft = grundrissWidth / symbolEsszimmerLeft;
                                            symbolEsszimmerFactorTop = grundrissHeigth / symbolEsszimmerTop;
                                            symbolEsszimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolEsszimmer).width());
                                            symbolEsszimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolEsszimmer).height());
                                        
                                            // Größe Flur
                                            linkFlur1Style = window.getComputedStyle(document.querySelector('#w00010'));
                                            linkFlur1Left = (linkFlur1Style.left).replace("px", "") - grundrissLeft;
                                            linkFlur1Top = (linkFlur1Style.top).replace("px", "") - grundrissTop;
                                            linkFlur1FactorLeft = grundrissWidth / linkFlur1Left;
                                            linkFlur1FactorTop = grundrissHeigth / linkFlur1Top;
                                            linkFlur1FactorWidth = grundrissWidth / ($(widgetNameLinkFlur1).width());
                                            linkFlur1FactorHeigth = grundrissHeigth/ ($(widgetNameLinkFlur1).height()); 
                                        
                                            linkFlur2Style = window.getComputedStyle(document.querySelector('#w00009'));
                                            linkFlur2Left = (linkFlur2Style.left).replace("px", "") - grundrissLeft;
                                            linkFlur2Top = (linkFlur2Style.top).replace("px", "") - grundrissTop;
                                            linkFlur2FactorLeft = grundrissWidth / linkFlur2Left;
                                            linkFlur2FactorTop = grundrissHeigth / linkFlur2Top;
                                            linkFlur2FactorWidth = grundrissWidth / ($(widgetNameLinkFlur2).width());
                                            linkFlur2FactorHeigth = grundrissHeigth/ ($(widgetNameLinkFlur2).height());
                                            
                                            symbolFlurStyle = window.getComputedStyle(document.querySelector('#w00016'));
                                            symbolFlurLeft = (symbolFlurStyle.left).replace("px", "") - grundrissLeft;
                                            symbolFlurTop = (symbolFlurStyle.top).replace("px", "") - grundrissTop;
                                            symbolFlurFactorLeft = grundrissWidth / symbolFlurLeft;
                                            symbolFlurFactorTop = grundrissHeigth / symbolFlurTop;
                                            symbolFlurFactorWidth = grundrissWidth / ($(widgetNameSymbolFlur).width());
                                            symbolFlurFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolFlur).height());
                                        
                                            // Größe Schlafzimmer
                                            linkSchlafzimmerStyle = window.getComputedStyle(document.querySelector('#w00004'));
                                            linkSchlafzimmerLeft = (linkSchlafzimmerStyle.left).replace("px", "") - grundrissLeft;
                                            linkSchlafzimmerTop = (linkSchlafzimmerStyle.top).replace("px", "") - grundrissTop;
                                            linkSchlafzimmerFactorLeft = grundrissWidth / linkSchlafzimmerLeft;
                                            linkSchlafzimmerFactorTop = grundrissHeigth / linkSchlafzimmerTop;
                                            linkSchlafzimmerFactorWidth = grundrissWidth / ($(widgetNameLinkSchlafzimmer).width());
                                            linkSchlafzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkSchlafzimmer).height());
                                            
                                            symbolSchlafzimmerStyle = window.getComputedStyle(document.querySelector('#w00018'));
                                            symbolSchlafzimmerLeft = (symbolSchlafzimmerStyle.left).replace("px", "") - grundrissLeft;
                                            symbolSchlafzimmerTop = (symbolSchlafzimmerStyle.top).replace("px", "") - grundrissTop;
                                            symbolSchlafzimmerFactorLeft = grundrissWidth / symbolSchlafzimmerLeft;
                                            symbolSchlafzimmerFactorTop = grundrissHeigth / symbolSchlafzimmerTop;
                                            symbolSchlafzimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolSchlafzimmer).width());
                                            symbolSchlafzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolSchlafzimmer).height());
                                        
                                            // Größe Kinderzimmer
                                            linkKinderzimmerStyle = window.getComputedStyle(document.querySelector('#w00005'));
                                            linkKinderzimmerLeft = (linkKinderzimmerStyle.left).replace("px", "") - grundrissLeft;
                                            linkKinderzimmerTop = (linkKinderzimmerStyle.top).replace("px", "") - grundrissTop;
                                            linkKinderzimmerFactorLeft = grundrissWidth / linkKinderzimmerLeft;
                                            linkKinderzimmerFactorTop = grundrissHeigth / linkKinderzimmerTop;
                                            linkKinderzimmerFactorWidth = grundrissWidth / ($(widgetNameLinkKinderzimmer).width());
                                            linkKinderzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkKinderzimmer).height());
                                            
                                            symbolKinderzimmerStyle = window.getComputedStyle(document.querySelector('#w00019'));
                                            symbolKinderzimmerLeft = (symbolKinderzimmerStyle.left).replace("px", "") - grundrissLeft;
                                            symbolKinderzimmerTop = (symbolKinderzimmerStyle.top).replace("px", "") - grundrissTop;
                                            symbolKinderzimmerFactorLeft = grundrissWidth / symbolKinderzimmerLeft;
                                            symbolKinderzimmerFactorTop = grundrissHeigth / symbolKinderzimmerTop;
                                            symbolKinderzimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolKinderzimmer).width());
                                            symbolKinderzimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolKinderzimmer).height());
                                        
                                            // Größe Badezimmer
                                            linkBadezimmerStyle = window.getComputedStyle(document.querySelector('#w00006'));
                                            linkBadezimmerLeft = (linkBadezimmerStyle.left).replace("px", "") - grundrissLeft;
                                            linkBadezimmerTop = (linkBadezimmerStyle.top).replace("px", "") - grundrissTop;
                                            linkBadezimmerFactorLeft = grundrissWidth / linkBadezimmerLeft;
                                            linkBadezimmerFactorTop = grundrissHeigth / linkBadezimmerTop;
                                            linkBadezimmerFactorWidth = grundrissWidth / ($(widgetNameLinkBadezimmer).width());
                                            linkBadezimmerFactorHeigth = grundrissHeigth/ ($(widgetNameLinkBadezimmer).height());
                                            
                                            symbolBadezimmerStyle = window.getComputedStyle(document.querySelector('#w00020'));
                                            symbolBadezimmerLeft = (symbolBadezimmerStyle.left).replace("px", "") - grundrissLeft;
                                            symbolBadezimmerTop = (symbolBadezimmerStyle.top).replace("px", "") - grundrissTop;
                                            symbolBadezimmerFactorLeft = grundrissWidth / symbolBadezimmerLeft;
                                            symbolBadezimmerFactorTop = grundrissHeigth / symbolBadezimmerTop;
                                            symbolBadezimmerFactorWidth = grundrissWidth / ($(widgetNameSymbolBadezimmer).width());
                                            symbolBadezimmerFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolBadezimmer).height());
                                        
                                            // Größe Gäste-WC
                                            linkGaesteWcStyle = window.getComputedStyle(document.querySelector('#w00007'));
                                            linkGaesteWcLeft = (linkGaesteWcStyle.left).replace("px", "") - grundrissLeft;
                                            linkGaesteWcTop = (linkGaesteWcStyle.top).replace("px", "") - grundrissTop;
                                            linkGaesteWcFactorLeft = grundrissWidth / linkGaesteWcLeft;
                                            linkGaesteWcFactorTop = grundrissHeigth / linkGaesteWcTop;
                                            linkGaesteWcFactorWidth = grundrissWidth / ($(widgetNameLinkGaesteWc).width());
                                            linkGaesteWcFactorHeigth = grundrissHeigth/ ($(widgetNameLinkGaesteWc).height());
                                            
                                            symbolGaesteWcStyle = window.getComputedStyle(document.querySelector('#w00021'));
                                            symbolGaesteWcLeft = (symbolGaesteWcStyle.left).replace("px", "") - grundrissLeft;
                                            symbolGaesteWcTop = (symbolGaesteWcStyle.top).replace("px", "") - grundrissTop;
                                            symbolGaesteWcFactorLeft = grundrissWidth / symbolGaesteWcLeft;
                                            symbolGaesteWcFactorTop = grundrissHeigth / symbolGaesteWcTop;
                                            symbolGaesteWcFactorWidth = grundrissWidth / ($(widgetNameSymbolGaesteWc).width());
                                            symbolGaesteWcFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolGaesteWc).height());
                                        
                                            // Größe Abstellraum
                                            linkAbstellraumStyle = window.getComputedStyle(document.querySelector('#w00008'));
                                            linkAbstellraumLeft = (linkAbstellraumStyle.left).replace("px", "") - grundrissLeft;
                                            linkAbstellraumTop = (linkAbstellraumStyle.top).replace("px", "") - grundrissTop;
                                            linkAbstellraumFactorLeft = grundrissWidth / linkAbstellraumLeft;
                                            linkAbstellraumFactorTop = grundrissHeigth / linkAbstellraumTop;
                                            linkAbstellraumFactorWidth = grundrissWidth / ($(widgetNameLinkAbstellraum).width());
                                            linkAbstellraumFactorHeigth = grundrissHeigth/ ($(widgetNameLinkAbstellraum).height());
                                            
                                            symbolAbstellraumStyle = window.getComputedStyle(document.querySelector('#w00022'));
                                            symbolAbstellraumLeft = (symbolAbstellraumStyle.left).replace("px", "") - grundrissLeft;
                                            symbolAbstellraumTop = (symbolAbstellraumStyle.top).replace("px", "") - grundrissTop;
                                            symbolAbstellraumFactorLeft = grundrissWidth / symbolAbstellraumLeft;
                                            symbolAbstellraumFactorTop = grundrissHeigth / symbolAbstellraumTop;
                                            symbolAbstellraumFactorWidth = grundrissWidth / ($(widgetNameSymbolAbstellraum).width());
                                            symbolAbstellraumFactorHeigth = grundrissHeigth/ ($(widgetNameSymbolAbstellraum).height());
                                        
                                        }
                                        
                                        
                                        // Skalierung des umliegenden Abstands
                                        /* ======================================================== */
                                        function setResizeSpace(windowWidth, windowHeigth, debug = false)
                                        {
                                            if (windowWidth < windowHeigth)
                                            {
                                                // Fensterbreite maßgeblich
                                                windowMinSize = windowWidth; 
                                            } else
                                            {
                                                // Fensterhöhe maßgeblich
                                                windowMinSize = windowHeigth;
                                            }
                                            
                                            if (device === "mobilePhone")
                                            {
                                                spaceSurrounding = spaceSurroundingMin;
                                            }
                                            else
                                            {
                                                spaceSurrounding = spaceSurroundingMin + spaceSurroundingScreensizeDependent * (windowMinSize / spaceSurroundingScreensizeDependentFactor);  
                                            }
                                            
                                        }
                                        
                                        
                                        // Skalierung der Wohnungselemente
                                        /* ======================================================== */
                                        function setResizeElement(element, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, elementFactorLeft, elementFactorTop, elementFactorWidth, elementFactorHeigth, debug = false)
                                        {
                                            $(element).css({"left": (grundrissLeft) + (grundrissWidth/elementFactorLeft), "top": (grundrissTop) + (grundrissHeigth/elementFactorTop), "width": (grundrissWidth/elementFactorWidth), "height": (grundrissHeigth/elementFactorHeigth)});
                                        
                                        }
                                        
                                        
                                        // Skalierung der Symbolgrößen
                                        /* ======================================================== */
                                        function setResizeSymbol(debug = false)
                                        {
                                            if (device === "mobilePhone")
                                            {
                                                symbolHeigth = 43;
                                            }
                                            else
                                            {
                                                symbolHeigth = 65;  
                                            }
                                            $(".symbolGrundrissRaume .vis-inventwo-img").css({"height": symbolHeigth+"px"});
                                        
                                        }
                                        
                                        
                                        // Skalierung der Wohnung
                                        /* ======================================================== */
                                        function setResizeApartment(debug = false)
                                        {
                                            
                                            // Fenstergröße
                                            windowWidth = $(window).width();
                                            windowHeigth = $(window).height();    
                                            windowFactor = windowWidth / windowHeigth; 
                                            
                                            // Abstand dynamisch an Fenstergröße anpassen
                                            setResizeSpace(windowWidth, windowHeigth, debug);
                                            
                                            // Fenstergröße und -faktor mit Abstand
                                            if ((windowWidth > (spaceSurrounding * 2))
                                               && (windowHeigth > (spaceSurrounding * 2)))
                                            {
                                                windowSpaceWidth = windowWidth - (spaceSurrounding * 2);
                                                windowSpaceHeigth = windowHeigth - (spaceSurrounding * 2); 
                                                windowSpaceFactor = windowSpaceWidth / windowSpaceHeigth;        
                                            }
                                            else
                                            {
                                                windowSpaceWidth = 0;
                                                windowSpaceHeigth = 0; 
                                                windowSpaceFactor = 0;  
                                            }
                                            
                                            // Grundrissgröße
                                            if (windowSpaceFactor < grundrissFactor)
                                            {
                                                // Fensterbreite maßgeblich
                                                
                                                // Grundriss mittig zentrieren
                                                grundrissWidth = (windowSpaceWidth);
                                                grundrissHeigth = (windowSpaceWidth) / grundrissFactor;
                                                grundrissLeft = spaceSurrounding;
                                                grundrissTop = spaceSurrounding + ((windowSpaceHeigth - grundrissHeigth) / 2);
                                                
                                                if (debug === true)
                                                {
                                                    console.log("Fensterbreite maßgeblich");
                                                }
                                            } else
                                            {
                                                // Fensterhöhe maßgeblich
                                                
                                                // Grundriss mittig zentrieren
                                                grundrissHeigth = (windowSpaceHeigth);
                                                grundrissWidth = (windowSpaceHeigth) * grundrissFactor;
                                                grundrissLeft = spaceSurrounding + (windowSpaceWidth - grundrissWidth) / 2;
                                                grundrissTop = spaceSurrounding; 
                                                
                                                if (debug === true)
                                                {
                                                    console.log("Fensterhöhe maßgeblich");
                                                }
                                            }
                                            
                                            // Größe und Position Grundriss anpassen
                                            $(widgetNameGrundriss).css({"left": grundrissLeft, "top": grundrissTop, "width": grundrissWidth,"height": grundrissHeigth});
                                        
                                            // Grundrissgröße nach Anpassung und Referenz für alle folgenden Elemente
                                            grundrissWidth = $(widgetNameGrundriss).width();
                                            grundrissHeigth = $(widgetNameGrundriss).height();
                                            
                                            // Position und -größe skalieren Wohnung
                                            setResizeElement(widgetNameLinkWohnung, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkWohnungFactorLeft, linkWohnungFactorTop, linkWohnungFactorWidth, linkWohnungFactorHeigth, debug);
                                            
                                            setResizeElement(widgetNameSymbolWohnung, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolWohnungFactorLeft, symbolWohnungFactorTop, symbolWohnungFactorWidth, symbolWohnungFactorHeigth, debug);
                                            
                                            // Position und -größe skalieren Wohnzimmer
                                            setResizeElement(widgetNameLinkWohnzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkWohnzimmerFactorLeft, linkWohnzimmerFactorTop, linkWohnzimmerFactorWidth, linkWohnzimmerFactorHeigth, debug);
                                            
                                            setResizeElement(widgetNameSymbolWohnzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolWohnzimmerFactorLeft, symbolWohnzimmerFactorTop, symbolWohnzimmerFactorWidth, symbolWohnzimmerFactorHeigth, debug);
                                            
                                            // Position und -größe skalieren Küche
                                            setResizeElement(widgetNameLinkKueche, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkKuecheFactorLeft, linkKuecheFactorTop, linkKuecheFactorWidth, linkKuecheFactorHeigth, debug);
                                            
                                            setResizeElement(widgetNameSymbolKueche, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolKuecheFactorLeft, symbolKuecheFactorTop, symbolKuecheFactorWidth, symbolKuecheFactorHeigth, debug);
                                            
                                            // Position und -größe skalieren Esszimmer
                                            setResizeElement(widgetNameLinkEsszimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkEsszimmerFactorLeft, linkEsszimmerFactorTop, linkEsszimmerFactorWidth, linkEsszimmerFactorHeigth, debug);
                                            
                                            setResizeElement(widgetNameSymbolEsszimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolEsszimmerFactorLeft, symbolEsszimmerFactorTop, symbolEsszimmerFactorWidth, symbolEsszimmerFactorHeigth, debug);
                                            
                                            // Position und -größe skalieren Flur
                                            setResizeElement(widgetNameLinkFlur1, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkFlur1FactorLeft, linkFlur1FactorTop, linkFlur1FactorWidth, linkFlur1FactorHeigth, debug);
                                        
                                            setResizeElement(widgetNameLinkFlur2, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkFlur2FactorLeft, linkFlur2FactorTop, linkFlur2FactorWidth, linkFlur2FactorHeigth, debug);
                                            
                                            setResizeElement(widgetNameSymbolFlur, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolFlurFactorLeft, symbolFlurFactorTop, symbolFlurFactorWidth, symbolFlurFactorHeigth, debug);
                                        
                                            // Position und -größe skalieren Schlafzimmer
                                            setResizeElement(widgetNameLinkSchlafzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkSchlafzimmerFactorLeft, linkSchlafzimmerFactorTop, linkSchlafzimmerFactorWidth, linkSchlafzimmerFactorHeigth, debug);
                                            
                                            setResizeElement(widgetNameSymbolSchlafzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolSchlafzimmerFactorLeft, symbolSchlafzimmerFactorTop, symbolSchlafzimmerFactorWidth, symbolSchlafzimmerFactorHeigth, debug);
                                        
                                            // Position und -größe skalieren Kinderzimmer
                                            setResizeElement(widgetNameLinkKinderzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkKinderzimmerFactorLeft, linkKinderzimmerFactorTop, linkKinderzimmerFactorWidth, linkKinderzimmerFactorHeigth, debug);
                                            
                                            setResizeElement(widgetNameSymbolKinderzimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolKinderzimmerFactorLeft, symbolKinderzimmerFactorTop, symbolKinderzimmerFactorWidth, symbolKinderzimmerFactorHeigth, debug);
                                        
                                            // Position und -größe skalieren Badezimmer
                                            setResizeElement(widgetNameLinkBadezimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkBadezimmerFactorLeft, linkBadezimmerFactorTop, linkBadezimmerFactorWidth, linkBadezimmerFactorHeigth, debug);
                                            
                                            setResizeElement(widgetNameSymbolBadezimmer, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolBadezimmerFactorLeft, symbolBadezimmerFactorTop, symbolBadezimmerFactorWidth, symbolBadezimmerFactorHeigth, debug);
                                        
                                            // Position und -größe skalieren Gäste-WC
                                            setResizeElement(widgetNameLinkGaesteWc, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkGaesteWcFactorLeft, linkGaesteWcFactorTop, linkGaesteWcFactorWidth, linkGaesteWcFactorHeigth, debug);
                                            
                                            setResizeElement(widgetNameSymbolGaesteWc, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolGaesteWcFactorLeft, symbolGaesteWcFactorTop, symbolGaesteWcFactorWidth, symbolGaesteWcFactorHeigth, debug);
                                            
                                            // Position und -größe skalieren Abstellraum
                                            setResizeElement(widgetNameLinkAbstellraum, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, linkAbstellraumFactorLeft, linkAbstellraumFactorTop, linkAbstellraumFactorWidth, linkAbstellraumFactorHeigth, debug);
                                            
                                            setResizeElement(widgetNameSymbolAbstellraum, grundrissLeft, grundrissTop, grundrissWidth, grundrissHeigth, symbolAbstellraumFactorLeft, symbolAbstellraumFactorTop, symbolAbstellraumFactorWidth, symbolAbstellraumFactorHeigth, debug);
                                        
                                            if (debug === true)
                                            {
                                                console.log("Umgebender Abstand: " + spaceSurrounding);
                                                
                                                console.log("Fensterbreite: " + windowWidth);
                                                console.log("Fensterhöhe: " + windowHeigth);
                                                console.log("windowFactor: " + windowFactor);
                                                        
                                                console.log("Grundrissbreite: " + grundrissWidth);
                                                console.log("Grundrisshöhe: " + grundrissHeigth);
                                                console.log("grundrissFactor: " + grundrissFactor); 
                                            }
                                        
                                        }
                                        
                                        
                                        // Skriptstart
                                        /* ======================================================== */
                                        waitForElement($('body'),'.grundriss', 'dummy', 'dummy', function () {
                                            // Widget ist vollständig geladen, wir können irgendwas damit machen
                                            
                                            // Erkennen auf welchem Gerät die VIS läuft
                                            getDevice(debug);
                                            
                                            // Initialisiere Skalierung
                                            initResizeApartment(debug);
                                            
                                            // Initiale Skalierung
                                            setResizeApartment(debug);
                                            
                                            // Symbolgröße skalieren
                                            setResizeSymbol(debug);
                                            
                                            // Event registrieren bei Fenstergrößenänderung
                                            $(window).resize(function () 
                                            {
                                                // Skalierung anpassen
                                                setResizeApartment(debug);
                                        
                                            });
                                        }, 0, debug);
                                        

                                        Sehr geile Sache! Ich habe versucht das Script testweise auf ein einziges Widget erst einmal zu beschränken. Leider fehlt mir doch das Wissen / die Erfahrung. Gibt es denn eine Anleitung oder Doku zum Anpassen des Scripts?

                                        U Offline
                                        U Offline
                                        uwe72
                                        schrieb am zuletzt editiert von
                                        #2168

                                        @slipkorn_dh88 sieht klasse aus!!

                                        BIn auch grad dran es zu visualisieren, das mein aktueller Stand:

                                        4cedd954-1dac-4c25-95f6-8dc8dd83ec2d-image.png

                                        S 1 Antwort Letzte Antwort
                                        0
                                        • U uwe72

                                          @MCU

                                          Frage, wenn ich den unteren Slider ausschalte (was ich gemacht habe), wie komme ich dann wieder in die Konfig rein?

                                          7db89739-2e26-4bb6-a5ba-8b91160a1248-image.png

                                          U Offline
                                          U Offline
                                          uwe72
                                          schrieb am zuletzt editiert von
                                          #2169

                                          @uwe72 ok, ich antworte mir mal selber. Man kann es ja zumindest direkt im Datenpunkt unter Jarvis wieder einschalten.

                                          U 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

                                          472

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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