20110414

Doppelklicks

Nach einigen Tagen mit Fieber im Bett geht es jetzt weiter mit folgendem Punkt:

  1. In einer Grid, die auch ein Detail hat, wird durch Doppelklick auf einer CheckColumn gleichzeitig auch das Detail-Fenster geöffnet. Das muss behoben werden, bevor ich mit den “allgemeinen Uploads” anfangen kann.

Die processEvent der Ext.grid.GridView feuert in folgender Reihenfolge: - grid.fireEvent('dblclick') - grid.fireEvent('celldblclick') (die dann onCellDblClick meiner Lino.GridPanel ruft) - column.processEvent (die im Fall einer Lino.CheckColumn den Wert umschaltet) - grid.fireEvent('rowdblclick')

Wie kriege ich die beiden miteinander kombiniert? Oder zuerst mal: was will ich eigentlich genau? Soll ein Doppelklick auf der Zelle einer CheckColumn (in einer Grid mit Detail) (1) den Wert umschalten und nicht das Detail-Fenster öffnen? oder (2) den Wert nicht umschalten und stattdessen das Detail öffnen? oder (3) will ich das pro Report konfigurierbar machen?

Spontan würde ich für Lösung (1) tendieren, aber Lösung (2) ist ganz leicht zu implementieren, und deshalb habe ich das jetzt mal so gemacht. Also in der Grid eines Reports, der ein Detail hat, können CheckColumns nicht per Doppelklick umgeschaltet werden. Doppelklick heißt in solchen Grids immer “Detail öffnen”. Mir gefällt das so.

Dumping CourseProviders and Companies

Der folgende Punkt ist jetzt auch fertig:

  1. dpy.Serializer schreibt momentan in den dump eines CourseProvider alle Felder der Company nochmal rein. Er muss aber statt dieser Felder nur company_ptr setzen.

War im Grunde ganz einfach, ich musste nur _meta.local_fields statt _meta.fields nehmen. Ich habe auch eigens einen Testcase lino.projects.dsbe.tests.dsbe_tests.test01() geschrieben, der allerdings nicht wirklich testet sondern mir beim Überlegen behilflich war.

Ärgerlich auch wieder mal, dass ich den besagten Testcase nicht in autodoc rein kriege, wegen der DJANGO_SETTINGS_MODULE. Aber bon, das ist weniger dringend. Sorry, wenn in diesem Blog viele Links noch immer nicht funktionieren.

Abends mach ich die Probe aufs Exempel:

  • Dump mit der alten Version
  • Check-in, Upgrade und Dump mit der neuen Version
  • Dateivergleich, ob auch wirklich nur die CourseProvider sich verändert haben. Alles klar.

(Nachtrag: hier habe ich dann gar nicht daran gedacht zu testen, diesen neuen Dump dann auch einzulesen. Sh. 0415)

Date formatting

  1. Wenn man als Datum 13/12/2010 eingibt, macht er daraus 12.01.2011. Weil er das als ein amerikanisches Format ansieht.

Der Fehler war nicht wie anfangs vermutet auf der Serverseite, sondern der Client schickte schon 12.01.2011. Das lag lediglich am Konfigurationsparameter altFormats des Ext.form.DateField. Um kompakteren Code zu generieren, habe ich jetzt außerdem eine Klasse Lino.DateField in der :xfile`linolib.js`.

Den Parameter Report.date_format habe ich vorläufig mal rausgeholt. Und statt lino.DATE_FORMAT_STRFTIME, lino.DATE_FORMAT_EXTJS und lino.PARSE_DATE() heißt es jetzt settings.LINO.date_format_strftime usw. Denn das Datumsformat konnte man bisher überhaupt nicht konfigurieren, jetzt kann man das bis auf weiteres immerhin global pro Site.

Check-in und Upgrade in Eupen.