Ich habe mal wieder einen Browserfenster breiten abhängigen Effekt, der mich schon länger stört und den ich jetztmal untersucht habe.
Ich verwende
Internals:
BYTES_READ 1132600
BYTES_WRITTEN 6483473
CONNECTS 515
CSRFTOKEN csrf_246228733591984
DEF 8083 global
FD 5
FUUID 5f00bbb9-f33f-3a57-af36-0cea886c3d2cadc3
NAME WEB
NR 3
NTFY_ORDER 50-WEB
PORT 8083
STATE Initialized
TYPE FHEMWEB
READINGS:
2020-07-17 22:50:46 state Initialized
Attributes:
JavaScripts codemirror/fhem_codemirror.js
codemirrorParam { "lineNumbers":true }
longpoll websocket
plotfork 1
stylesheetPrefix f18
Beim großen Plus (oder woanders immer gleich) geht das schwarze Fenster des Editors auf.
Das codemirror Editor Fenster wird tendenziell immer Rechts platziert.
Bis 1220 Pixel Breite des Browserfensters passt das Editorfenster genau bis zum Rand.
Bis 1280 Pixel ist der Close Button noch fast komplett sichtbar.
Bei 1440 Pixel ist der Close Button verschwunden.
Das Problem ist noch: Diese Postion wird "gespeichert" d.h. mach ich das Fenster jetzt wieder kleiner, seh ich gar nix mehr.
Drück ich F5 beginnt das Spiel von vorn.
D.h. Fenster relativ schmal machen, dann Editor öffnen, dann kann man beliebig arbeiten bis zum nächsten Cache leeren.
Beim normalen Editor tritt der Effekt nicht, das Fenster wird immer mittig und mit geringer Größe positioniert.
Kann man das irgendwie verbessern?
Kann ich da noch weitere Infos liefern?
Gruß Otto
Ich gehe davon aus, dass Du hier keine Antwort kriegst, da Codemirror in FHEM mehr oder weniger verwaist ist.
Ich hatte gehofft es liegt nicht unbedingt an Codemirror und Jemand hat eine Idee. :D Gibt es Alternativen?
@Otto123
Du könntest diesem Vorschlag anschliessen: https://forum.fhem.de/index.php/topic,74992.0.html
Das kann er natuerlich tun, das da adressierte Problem hat aber mit diesem nichts zu tun.
@Rudi Habe ich schon genau so verstanden :)
Möglicherweise lässt sich das Problem mit einer Ergänzung von f18.js lösen.
Die Dialogdefinition (ab Zeile 868) müsste um das Attribut position ergänzt werden.
$("#"+n).dialog({
dialogClass:"no-close", modal:true, width:"auto", closeOnEscape:true,
maxWidth:$(window).width()*0.9, maxHeight:$(window).height()*0.9,
position: { my: "right", at: "center" },
buttons: [
{text:"Execute",click:function(){ FW_execRawDef( ta.val()) }},
{text:"Close", click:function(){ $(this).remove(); }},
],
close:function(){ $("#"+n).remove(); }
});
also um
position: { my: "right", at: "center" },
Dann wird das Fenster wie in der Anlage dargestellt.
Die Funktionalität des Dialogfensters ohne Codemirror wird nicht beeinträchtigt, siehe 2. Anlage
Danke fuer den Hinweis, habe die Zeile eingebaut.
Bemerkungen:
- ohne CodeMirror gibt es auch eine Aenderung (das Dialog wird nicht mehr zentriert dargestellt, sondern auf der linken Seite), das finde ich aber verschmerzbar.
- mit CodeMirror gibt es weiterhin Probleme, wenn man nach Laden der Seite die Fenstergroesse aendert. Abhilfe: Seite nach Groessen-Aenderung erneut laden.
- CodeMirror ignoriert die "bestellte" Fenstergroesse (20 x 60 Zeichen), und macht irgendwas der Art 14 x 0.8*Fensterbreite.