76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

Begonnen von DS_Starter, 11 Februar 2024, 14:11:00

Vorheriges Thema - Nächstes Thema

schwatter

Meine Lösung für meine Powerflow/ Energyflow ist jetzt folgende:

    use URI::Escape;
 
    foreach my $entry (@icons) {
        my ($icon_raw, $id, $fill, $should_process) = @$entry;
        next unless $should_process && $icon_raw;
        my $raw = $icon_raw;
        my $icon;

        if ($raw =~ s/:fhem$//) {
            $icon = FW_makeImage("$raw\@$fill");
            next unless defined $icon && $icon ne '';
            if ($icon =~ /<svg[^>]*>/) {
                my $svg_tag = $&;
                $svg_tag =~ s/\bwidth\s*=\s*"[^"]*"//i;
                $svg_tag =~ s/\bheight\s*=\s*"[^"]*"//i;
                my ($x,$y,$w,$h) = (0,0,100,100);
                if ($svg_tag =~ /viewBox\s*=\s*"([\d\.\-]+)\s+([\d\.\-]+)\s+([\d\.\-]+)\s+([\d\.\-]+)"/i) {
                    ($x,$y,$w,$h) = ($1,$2,$3,$4);
                } else {
                    $svg_tag =~ s/<svg\b/<svg viewBox="0 0 100 100"/i;
                }
                my $scale = 20 / ($w > $h ? $w : $h);
                my $offset_x = (20 - $w * $scale) / 2 - $x * $scale + 2;
                my $offset_y = (20 - $h * $scale) / 2 - $y * $scale + 2;
                $svg_tag =~ s/<svg\b/<svg class="icon"/ unless $svg_tag =~ /class=/;
                $svg_tag =~ s/<svg\b/<svg width="20" height="20"/i;
                $icon =~ s{<svg[^>]*>}{$svg_tag};
                $icon =~ s{(<svg[^>]*>)}{$1<g transform="translate($offset_x,$offset_y) scale($scale)">}i;
                $icon =~ s{</svg>}{</g></svg>}i;

                # --- alle <path> einfärben ---
                $icon =~ s/<path(?![^>]*fill)/<path fill="$fill"/g;
            }
        } else {
            $icon = uri_unescape($raw);
            $icon =~ s/fill="[^"]*"/fill="$fill"/g;
            $icon =~ s/<path(?![^>]*fill)/<path fill="$fill"/g;
            next unless defined $icon;
        }

        my $inner = "";
        if ($icon =~ m{<svg[^>]*>(.*)</svg>}s) {
            $inner = $1;
        } else {
            $inner = $icon;
        }

        $svg =~ s{<g id="$id"([^>]*)>}{<g id="informId_ringSVG:$id"$1>$inner};
    }

Damit kann ich FhemSVG skalieren und einfärben, sowie SVG Data-URL verwursten.
Vielleicht hilft das. Mal sehen ob es dabei bleibt, vielleicht gibt es auch eine
Lösung einfach per CSS.

Gruß schwatter

DS_Starter

Danke dir! Schaue ich mir an wie das bei mir reinpasst.

LG
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Rave Rebel

#4187
Hallo zusammen, nach dem Update auf die aktuelle Version sind fast alle Icons in der Flow Graphic winzig klein und nahezu nicht mehr sichtbar.
Wie kann ich das beheben?

Gruß Chris

DS_Starter

Hallo Chris, @ll,

deine Icon werden wegen dem gerade diskutierten neuen "Feature" der Chromium Browser Engine nicht mehr dargestellt.

Ich habe den Vorschlag von schwatter adaptiert und in das Modul eingebaut.
Ihr könnt es aus meinem contrib ziehen, restarten und freuen.  ;)

Mit meinem Edge klappt es nun wieder und hoffe auch bei euch.

LG,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

300P

Bei mir sieht es (weiter) okay aus...

RPI-Chrome / MAC-Safari:

Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast|DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP|ESP32-Digitizer-AI_on_the_Edge|ESP32CAM usw.

Rave Rebel

Hallo Heiko,
es funktioniert mit deiner contrib Version mit Edge und Chrome wieder wie gewohnt.
Vielen Dank für die schnelle Antwort und dein großes Engagement für das Modul!

Gruß
Chris

DS_Starter

@all,

ich habe die neue Version eingecheckt und ist morgen früh im Update.
Vielen Dank nochmal an schwatter für den Imput!

LG,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter