Notiz zeigt sich sofort gesetzt, Widgets nach Wunsch des Nutzers
Aus dem Zettel wird die Notiz: Der Text steht immer formatiert da, roh ist nur
die Zeile mit der Schreibmarke. Dazu eine kleine Werkzeugleiste (Aufgabe,
Aufzaehlung, Nummer, Ueberschrift, fett, Linie), Enter fuehrt Listen fort,
Backspace am Zeilenanfang nimmt erst den Vorsatz. Fuer groessere Umbauten
bleibt der Quelltext-Knopf.
Kein contenteditable: Der Quelltext bleibt die Wahrheit und wird nie aus dem
HTML zurueckgerechnet, das der Browser beim Tippen erzeugt.
Reihenfolge und An/Aus der Widgets liegen jetzt je Nutzer auf dem Server, in
einer Einstellung ("benutzer,notiz,-system,wetter,bild"). Der Schalter fuer das
Wetter auf dem Schreibtisch faellt damit weg — es ist ein Widget wie jedes
andere.
Die Einstellungen sind in Abschnitte sortiert (Darstellung, HoneyBar, Widgets,
Wetter, Programme, Konto), Beschriftung links, Schalter rechts.
This commit is contained in:
1 parent
c0abfbb491
commit
3807ddca24
12 files changed
+806
-220
No files matched your search
@@ -192,7 +192,7 @@ Ein Widget ist eine **Beschreibung**, kein Kasten in der `index.html`:
|
||||
widgetAnmelden({
|
||||
id: "wetter", titel: "wetter",
|
||||
wo: ["terminal", "desktop"], // wo es erscheinen darf
|
||||
sichtbar: () => state.settings.weatherDesk === "on",
|
||||
sichtbar: () => true, // eigene Bedingung, optional
|
||||
laden: async () => …, // false = es gibt nichts zu zeigen
|
||||
leer: "verbergen", // oder ein Satz, der dann dasteht
|
||||
inhalt: () => "<html>",
|
||||
@@ -214,15 +214,85 @@ wegbleiben — so macht es das Wetter ohne eingestellten Ort.
|
||||
Eine neue Anzeige ist damit eine Datei in `web/js/widgets/` und ein Import in
|
||||
`os.js`. Weder das Raster noch die Seite werden dafür angefasst.
|
||||
|
||||
### Reihenfolge und An/Aus liegen beim Nutzer
|
||||
|
||||
Unter *Einstellungen → Widgets* steht jedes Widget mit einem Schalter und zwei
|
||||
Pfeilen. Beides zusammen steht in **einer** Einstellung, und die liegt wie alle
|
||||
anderen beim Konto auf dem Server — also auf jedem Gerät gleich:
|
||||
|
||||
```
|
||||
widgets = "benutzer,notiz,-system,wetter,bild"
|
||||
```
|
||||
|
||||
Das Minus heißt aus. Ein Feld statt zwei, weil beides zusammengehört: Wer ein
|
||||
Widget ausschaltet, soll seinen Platz behalten, wenn er es wieder einschaltet.
|
||||
Die Liste ist ein Wunsch, kein Gesetz — unbekannte Namen fallen weg, neue
|
||||
Widgets hängen sich hinten an und sind an. Ein Widget, das erst später
|
||||
eingeschaltet wird, holt seine Daten dann nach.
|
||||
|
||||
Pfeile statt Ziehen: Ziehen wäre hübscher, löst am Handy per Berührung aber
|
||||
nicht aus (dieselbe Entscheidung wie bei der Reihenfolge der Apps).
|
||||
|
||||
## Notiz und Bild
|
||||
|
||||
Zwei Widgets, die nichts abfragen, sondern etwas *sind*. Beides liegt **je
|
||||
Nutzer auf dem Server** — die Notiz als Text in `honeyos.json`, das Bild als
|
||||
Datei in `bilder/` daneben (oder als fremde Adresse, nie beides).
|
||||
|
||||
### Die Notiz zeigt sich sofort gesetzt
|
||||
|
||||
Der Text ist **immer** formatiert zu sehen; roh ist nur die eine Zeile, in der
|
||||
die Schreibmarke steht. Man tippt also in einer Aufzählung und sieht ringsum
|
||||
schon Überschriften, Häkchen und Punkte — statt `- [ ] Milch` zu schreiben und
|
||||
sich vorzustellen, wie das gleich aussieht.
|
||||
|
||||
Die Werkzeugleiste (Aufgabe · Aufzählung · Nummer · Überschrift · fett · Linie)
|
||||
wirkt auf genau diese Zeile. Enter führt eine Liste fort und nummeriert weiter;
|
||||
Enter auf einer leeren Aufzählungszeile beendet sie. Backspace am Zeilenanfang
|
||||
nimmt erst den Aufzählungspunkt, dann erst die Zeile. Häkchen lassen sich
|
||||
anklicken, ohne in den Text zu springen — das ist der häufigste Griff an einer
|
||||
Liste. Für größere Umbauten gibt es den Knopf **quelltext**: dann doch das ganze
|
||||
Feld, roh.
|
||||
|
||||
**Warum nicht `contenteditable`?** Weil man aus dem, was der Browser beim Tippen
|
||||
und Einfügen an HTML erzeugt, den Quelltext *zurückraten* müsste — und ein
|
||||
Fehler dabei kostet Text. Hier bleibt der Quelltext die Wahrheit und wird nie
|
||||
zurückgerechnet: Die Anzeige entsteht aus ihm, geändert wird immer nur eine
|
||||
Zeile. Der Preis ist, dass man nicht über mehrere Zeilen hinweg markieren kann;
|
||||
dafür ist der Quelltext-Knopf da.
|
||||
|
||||
Das kleine Markdown ist von Hand geschrieben und absichtlich klein:
|
||||
Überschriften (`#`, `##`, `###`), Häkchen (`- [ ]`, `- [x]`), Aufzählungen,
|
||||
nummerierte Listen, `---`, `**fett**`, `*kursiv*`, `` `code` ``. Keine
|
||||
Bibliothek — HoneyOS hat keinen Bauschritt, und für sechs Regeln lohnt kein
|
||||
Nachladen. Escapt wird **vor** dem Formatieren: Eine Notiz, die `<script>`
|
||||
ausführt, wäre eine Falle für den Tag, an dem man etwas hineinkopiert.
|
||||
|
||||
**Die Notiz ist keine zweite Notiz-App.** InkNote gibt es schon: kein Titel,
|
||||
keine Liste von Notizen, keine Ordner, keine Suche. Genau ein Text für das, was
|
||||
nicht länger als einen Tag lebt. Gespeichert wird verzögert (und beim Verlassen
|
||||
der Seite sofort); zwei offene Geräte überschreiben einander, der letzte Stand
|
||||
gewinnt.
|
||||
|
||||
### Das Bild
|
||||
|
||||
Genau eines je Nutzer, hochgeladen oder verlinkt; ein neues ersetzt das alte
|
||||
samt Datei. Erlaubt sind PNG, JPEG, WebP und GIF — der Typ wird aus den
|
||||
**Bytes** bestimmt, nicht aus dem, was der Browser behauptet. SVG ist bewusst
|
||||
nicht dabei: Es kann Skripte enthalten. Ausgeliefert wird mit einem
|
||||
Versionsanteil in der Adresse, sonst bliebe beim Austausch das alte Bild im
|
||||
Zwischenspeicher hängen.
|
||||
|
||||
## Wetter
|
||||
|
||||
Ein Pixelsymbol mit der Temperatur — wahlweise auf dem Schreibtisch, in der
|
||||
HoneyBar, in beidem oder nirgends. Zwei getrennte Schalter unter
|
||||
*Einstellungen → Wetter*, weil das zwei verschiedene Orte sind: Wer es beim
|
||||
Arbeiten in einer App sehen will, will es nicht zwangsläufig auch auf einer
|
||||
Seite, die er selten aufruft.
|
||||
HoneyBar, in beidem oder nirgends. Zwei Orte, zwei Schalter an zwei Stellen:
|
||||
Auf dem Schreibtisch ist das Wetter ein Widget wie jedes andere und steht in
|
||||
der Widget-Liste; für die Leiste gibt es einen eigenen Schalter unter
|
||||
*Einstellungen → HoneyBar*. Wer es beim Arbeiten in einer App sehen will, will
|
||||
es nicht zwangsläufig auch auf einer Seite, die er selten aufruft.
|
||||
|
||||
Die Stadt wird dort einmal gesucht und **mit ihren Koordinaten** gespeichert;
|
||||
Die Stadt wird unter *Einstellungen → Wetter* einmal gesucht und **mit ihren Koordinaten** gespeichert;
|
||||
sonst müsste jede Abfrage den Ort erneut suchen — zwei Anfragen nach draußen
|
||||
statt einer. Ohne Stadt bleibt das Wetter aus.
|
||||
|
||||
|
||||
Reference in new issue
Block a user