Commandbar mit Historie und Syntax Highlighting im Lesemodus

Begonnen von FHEMAN, 12 März 2017, 23:41:44

Vorheriges Thema - Nächstes Thema

FHEMAN

Weil mich das Handling der Commandbar immer genervt hat (Code -> Enter -> neue Seite -> Code weg) habe ich ein jQuery History Plugin so angepasst, dass man wie in einer echten Shell mit Pfeil hoch/runter durch die letzten Kommandos blättern kann.
Im Laufe der Zeit wurden weitere kleine Features hinzugefügt, die aus meiner Sicht das Handling verbessern. Daher handelt es sich hier nicht mehr nur um die reine Input Historie.

Welche Änderungen kommen durch das Script:
- Focus auf die CMD beim Laden der Seite, damit man gleich lostippen kann
- Bei Ctrl-Enter bzw. Strg-Enter wird der gesamte Text als Perl Ausdruck in {} gesetzt
- Bei Ctrl-Space im CMD wird das aktuelle Device an die Cursorposition geschrieben
- Pfeil hoch/runter blättert durch die letzten Befehle (gespeichert im Browser Cache)
- im Lesemodus wird auch das Codemirror (Wiki) Syntaxhighlighting verwendet (ohne in den Editiermodus / DEF überzugehen)

Du darfst diesen Dateianhang nicht ansehen.

Individuelle Codemirror Parameter können bei Bedarf über folgendes web Attribut (analog Codemirror) vorgenommen werden (danke an Jörg):
attr TYPE=FHEMWEB jquery-input-historyParam { "lineNumbers":true, "theme":"blackboard" }

Die Individuelle Input-Historie kann deaktiviert werden via
attr WEB jquery-input-historyParam {"enableInputHistory":false }

Installation Variante 1: die beigefügte js Datei einfach ins www Verzeichnis kopieren und in der FHEMWEB Instanz verlinken, z.B.:
fhem\www\input\jquery-input-history.js attr WEB JavaScripts input/jquery-input-history.js
Installation Variante 2: ohne SSH und ggf. Berechtigungsvergabe die JS-Datei über die Oberfläche ins pgm2 Verzeichnis anlegen:

1. jquery-input-history.js öffnen und den Code in Zwischenablage kopieren
2. Edit files im Menü wählen und 99_myUtils.pm öffnen (oder eine andere Datei auswählen)
3. Im Editor allen Inhalt löschen und den Code aus der Zwischenablage einfügen
(ggf. als Backup den Inhalt vor dem Löschen in eine separate Textdatei kopieren, falls man den nächsten Schritt verdaddelt)
4. Den Namen hinter [Save as] ändern nach jquery-input-history.js (anstelle "99_myUtils.pm")
5. Erst jetzt, also nach Änderung des Dateinamens, [Save as] jquery-input-history.js drücken. Anschließend erscheint die Meldung "Saved jquery-input-history.js"
6. Die erstellte JS-Datei unter pgm2/jquery-input-history.js nun dem WEB Attribut JavaScripts hinzufügen

Da die History längerfristig im LocalStorage Browsercache abgelegt wird, gibt es ein kleines Favoritensymbol rechts neben der Commandline zum Löschen aller Einträge.

// 18.02.18 Nachtrag
Erweiterung: Bei Verwendung von Ctrl-Enter bzw. Strg-Enter wird der gesamte Text als Perl Ausdruck in {} gesetzt.

// 11.05.18 Nachtrag
Neuer Link zum Lösch-Icon, da sich in Fhem die Bilderpfade geändert haben.

// 10.11.21 Nachtrag
Erweiterung: Bei Verwendung von Ctrl-Space im CMD wird das aktuell besurfte Device (URL-Parameter "detail") an die aktuelle Cursorposition geschrieben (oder ggf. wieder entfernt).

// 10.11.21 Nachtrag
Symbol angepasst und Fehlermeldung gefixt, wenn kein Device ausgewählt war.

// 12.11.21 Nachtrag
Standard Event Trigger entfernt.

// 21.05.23 Nachtrag
Codemirror Syntax Higlighting hinzugefügt.

// 22.05.23 Nachtrag
web Attribut Param hinzugefügt und Vollbildmodus deaktiviert.
Außerdem für unterschiedliche DEFs angepasst.

// 23.05.23 Nachtrag
height als jquery-input-historyParam gefixt
Input-Historie kann deaktiviert werden via jquery-input-historyParam

Viel Spaß
Ronny
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

betateilchen

Das meiste davon kann FHEM schon von Haus aus, wenn man die Attribute der FHEMWEB Instanz entsprechend setzt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FHEMAN

Was
Zitat von: betateilchen am 13 März 2017, 13:01:04
Das meiste davon kann FHEM schon von Haus aus, wenn man die Attribute der FHEMWEB Instanz entsprechend setzt.

Mag für mainInputLength gelten. Für eine Historie beziehst Du Dich aber hoffentlich nicht auf redirectCmds oder Autofill von Formularen. Das ist nämlich keine Alternative. Aber vielleicht hast Du ja ein paar Schmankerl auf Tasche.. dann halte aber bitte nicht vor dem Berg damit.
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

pula

Extrem lässige Idee - das hat mir schon lange gefehlt :-)
Danke fürs implementieren!

Cheers,

Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

kumue

gefällt mir & sehr nützlich
danke !

sash.sc

Da lässt sich aber nicht mehr die Länge des Eingabefeldes ändern.

Beim mir erscheint hinter der Eingabeleiste "Historie löschen"

Gruß und Danke
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

FHEMAN

Zitat von: sash.sc am 13 März 2017, 21:45:42
Da lässt sich aber nicht mehr die Länge des Eingabefeldes ändern.
Da es mit mainInputLength tatsächlich eine Funktion in FHEM gibt, habe ich das wieder herausgenommen (das Script File oben ist aktualisiert)
Zitat
Beim mir erscheint hinter der Eingabeleiste "Historie löschen"
Genau, das ist gewollt so. Für Ideen bin ich aber offen.

Gruß
Ronny
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

dirkcx

wie kann ich denn bei
attr JavaScripts
mehrere javascript-Dateien eintragen?
mit Komma oder Semikolon getrennt klappt das nicht, fhem konkateniert das zu einem String
Server: Gigabyte GB-BACE3160 | Ubuntu 20.04 LTS Server | aktuelles FHEM | CULUSB (busware) FS20/FHT/... | MySensors: seriell / esp8266 | ZigBee (Zigbee CC2531 / zigbee2mqtt) | homebridge / homebridge-config-ui

swsmily

Einfach mit Leerzeichen:
Beispiel:
codemirror/fhem_codemirror.js niceclocks/fhem_niceclocks.js

hartenthaler

Ich habe das verwendete Icon checkbox_checked.png bei mir nicht, sondern nur ein entsprechendes .svg. Damit geht es aber nicht, wenn ich den Pfad im Script entsprechend ändere. Oder gibt es da einen Weg? Alternativ kann ich natürlich so ein png-Icon in der Größe 9x9 direkt selber malen.
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

vbs


Det20


P.A.Trick

Zitat von: vbs am 24 März 2017, 20:41:23
Hammer Plugin! Danke!

Schließe mich an, super! Sollte mMn. als Standard in jede FHEM Instanz rein.
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

doman75

Hallo,

ich habe seit kurzem bei jeder Seite die Fehlermeldung:
jquery-input-history.js line 1:
NS_ERROR_STORAGE_IOERR:

was könnte das sein?

grüße
Doman

FHEMAN

Ich kopiere oft fertige Perl Einzeiler in die CMD und es nervt mich dann immer das Geklimpere mit den beiden geschweiften Klammern. Ich habe daher das Script für Faule wie ich es bin noch erweitert. Einfach die zweite, größere JS Datei oben wählen.

@doman75: Ich kann mir nur vorstellen, dass du bzw. dein Windows User keine Berechtigung hat, im Browser Storage etwas abzulegen (evtl. neue Gruppenrichtlinie auf Arbeit?

Gruß
Ronny
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB