= [20100306 ←] [20100309 09.03.2010] [20100310 →] =

Was soll passieren, wenn man das Detail-Fenster öffnet, obschon in der Grid gar keine Zeile ausgewählt ist? Da kam ein JS-RTE “record is undefined”, erzeugt in BasicForm.loadRecord(). Die rufe ich jetzt nur noch wenn record defined ist. Und ansonsten rufe ich sogar BasicForm.reset() obschon, das momentan nur auftritt, wenn das Fenster gerade erst angezeigt wird.

Aber nun zu dem, was die große Operation ausgelöst hatte: Kolonnenbreiten speichern.

Zuerst war da noch ein Bug: Name des Fensters wurde nicht übergeben. WindowWrapper benutzt jetzt eine Klassenvariable window_config_type und eine Methode js_window_config, um die JS-Funktion get_window_config() zu generieren. Neue Klasse GridWrapperMixin. Das funktioniert schön.

Dann kommt die Frage, wie eine Aktion auf eventuelle Parameter eines Dialogs zugreifen können soll. SaveWindowConfig.run_in_dlg() benutzt momentan Dialog.get(), aber das würde nicht funktionieren, wenn die Aktion nicht unter ExtJS läuft. Beschluss: Neues Attribut dialog.params, der ein dict oder wenigstens ein dictionary-like object sein muss.

16 Uhr, schon wieder Feierabend bevor ich zufrieden bin! Aber die Grid-Fenster speichern nun ihre Kolonnenbreiten.

[http://code.google.com/p/lino/source/detail?r=266d3bd2e4a1cc24708cc8ded2b13ccc447ad113 check-in]

Todo:

  • Im Eigenschaften-Fenster funktioniert es noch nicht, der findet scheinbar nur eine Kolonne.
  • Jetzt wo das Framework zum Speichern erweitert ist, wollen wir natürlich auch den Status der Togglebuttons speichern. Dann kann man z.B. festlegen, dass bei Stammdaten / Personen nicht nur das Grid-Fenster, sondern auch z.B. der Ei-Editor und das Detail-Fenster geöffnet wird.
  • Und die Sortierfolgen und Kolonnenreihenfolgen, und …

Nachtrag nach Feierabend:

Der Server schickt jetzt die Kolonnenbreiten in der Reaktion an den Client theoretisch korrekt ab:

{
  customEditors: { ... }
  autoHeight: true,
  xtype: "propertygrid",
  source: { ... },
  listeners: { ...},
  columns: [ { width: 110 }, { width: 232 } ]
}

Aber das funktioniert nicht. Kann sein, dass PropertyGrid die Konfigurationsoption columns ignoriert. Wäre verständlich, weil der ja ein eigenes ColumnModel hat. Ich lass diesen Punkt mal offen bis jemand sich darüber beklagt: Issue 109 (im Ei-Editor kann man die Kolonnenbreiten nicht speichern).

Ebenso lass ich die anderen Erweiterungen mal warten, bis sich jemand beklagt: Issue 110.

Issue 108 erachte ich jetzt als abgeschlossen. Und Issue 107 erübrigt sich.