Hallo zusammen,
das Icon-Handling in smartVISU wurde komplett überarbeitet. Dies ermöglicht ein standardisiertes Styling von Icons und dynamischen Icons mittels 6 Klassen (icon0 bis icon5) und erhöht die Performance großer Seiten auf älteren Geräten deutlich. Neu hinzugekommen sind die Klassen icon2 bis icon5 mit den an die Designs angepassten Farben rot, gelb, grün und blau. Zusätzlich gibt es bei allen Widgets weiterhin die Möglichkeit, Farben über ihre Namen oder hexadezimale Codes anzuwählen.
An den eigenen Seiten sind keine Änderungen erforderlich, wenn man das Styling nicht ändern will.
Hintergrund ( tl;dr )
Bisher wurden alle Icons über <img>-Tags geladen. Da auf diese Weise eingebundene svg Icons für jQuery nicht für das Styling mit Klassen zugänglich sind, wurden bestimmte Icons (u.a. alle Icons der Widgets) mittels der Funktion fx.init() neu geladen und in den html-Code eingebettet. Dadurch war das Styling großer Visu-Seiten recht langsam, insbesondere auf älteren Geräten. Das neue Handling verwendet die Twig-Funktion source(), um die svg Icons direkt beim Rendern der Seite in den html-Code einzubetten, wobei nicht benötigte Attribute herausgefiltert werden. Dadurch muss jedes Icon nur einmal geladen werden, was Zeit spart. Noch größer ist der Performance-Gewinn, wenn man den smartVISU Cache aktiviert. Da die Icons bereits im html integriert sind, werden sie vom Cache mit gespeichert, was vorher nicht der Fall war.
Eigene Widgets
Wer eigene Widgets schreiben möchte, die svg-Icons selbst laden, hat das Makro {{ lib.svgimg (id, Dateiname, Klassen, Stylingoptionen }} zur Verfügung. Diese Methode ist aus den o.g. Gründen zu bevorzugen auch wenn <img>-Tags weiter verwendet werden können. Für das dynamische Laden von Icons (z.B. bei Kalendereinträgen) gibt es die Funktion fx.load(Dateiname, Klassen, Stylingoptionen, Visu-Element, Einfügemethode). Dokumentation hierzu findet sich in der ./lib/base/base.js.
Tester gesucht!
Die Änderung ist jetzt im develop branch verfügbar. Alles ist mit meinen eigenen Seiten und den Doku-Seiten getestet. Dennoch wäre ich für weitere Tester dankbar!
Gruß
Wolfram
das Icon-Handling in smartVISU wurde komplett überarbeitet. Dies ermöglicht ein standardisiertes Styling von Icons und dynamischen Icons mittels 6 Klassen (icon0 bis icon5) und erhöht die Performance großer Seiten auf älteren Geräten deutlich. Neu hinzugekommen sind die Klassen icon2 bis icon5 mit den an die Designs angepassten Farben rot, gelb, grün und blau. Zusätzlich gibt es bei allen Widgets weiterhin die Möglichkeit, Farben über ihre Namen oder hexadezimale Codes anzuwählen.
An den eigenen Seiten sind keine Änderungen erforderlich, wenn man das Styling nicht ändern will.
Hintergrund ( tl;dr )
Bisher wurden alle Icons über <img>-Tags geladen. Da auf diese Weise eingebundene svg Icons für jQuery nicht für das Styling mit Klassen zugänglich sind, wurden bestimmte Icons (u.a. alle Icons der Widgets) mittels der Funktion fx.init() neu geladen und in den html-Code eingebettet. Dadurch war das Styling großer Visu-Seiten recht langsam, insbesondere auf älteren Geräten. Das neue Handling verwendet die Twig-Funktion source(), um die svg Icons direkt beim Rendern der Seite in den html-Code einzubetten, wobei nicht benötigte Attribute herausgefiltert werden. Dadurch muss jedes Icon nur einmal geladen werden, was Zeit spart. Noch größer ist der Performance-Gewinn, wenn man den smartVISU Cache aktiviert. Da die Icons bereits im html integriert sind, werden sie vom Cache mit gespeichert, was vorher nicht der Fall war.
Eigene Widgets
Wer eigene Widgets schreiben möchte, die svg-Icons selbst laden, hat das Makro {{ lib.svgimg (id, Dateiname, Klassen, Stylingoptionen }} zur Verfügung. Diese Methode ist aus den o.g. Gründen zu bevorzugen auch wenn <img>-Tags weiter verwendet werden können. Für das dynamische Laden von Icons (z.B. bei Kalendereinträgen) gibt es die Funktion fx.load(Dateiname, Klassen, Stylingoptionen, Visu-Element, Einfügemethode). Dokumentation hierzu findet sich in der ./lib/base/base.js.
Tester gesucht!
Die Änderung ist jetzt im develop branch verfügbar. Alles ist mit meinen eigenen Seiten und den Doku-Seiten getestet. Dennoch wäre ich für weitere Tester dankbar!
Gruß
Wolfram
Kommentar