20120625 ======== Beim Aufwachen fiel mir auf, dass meine gestrige Neuimplementierung der window action handlers mit `Lino.ActionWindow` noch einen dicken Bug hatte:: var contract_type6788 = new Lino.TwinCombo(...}); var date6789 = new Lino.DateField(...); var job_type6790 = new Lino.TwinCombo(...); var main_panel6791 = new Ext.form.FormPanel(...); Lino.jobs.JobsOverview.default_action = new Lino.WindowAction( Lino.jobs.JobsOverview.default_actionPanel, {}, { "params_panel": main_panel6791 }, [ contract_type6788, date6789, job_type6790 ] ); Da werden die Komponenten also schon im globalen Namespace instanziert. Das ist zu früh. So ist es besser:: Lino.jobs.JobsOverview.default_action = new Lino.WindowAction({ },function(){ var p = {}; p.is_main_window = true; var contract_type6788 = new Lino.TwinCombo({ "fieldLabel": "contract type", "name": "contract_type", "pageSize": 20, "onTrigger2Click": function(e){ Lino.show_fk_detail(this,Lino.jobs.ContractTypes.detail_action)}, "emptyText": "Choisir Type de contrat de travail...", "selectOnFocus": true, "hiddenName": "contract_typeHidden", "anchor": "100%", "store": new Lino.ComplexRemoteComboStore({ "proxy": new Ext.data.HttpProxy({ "url": "/choices/jobs/JobsOverview/contract_type", "method": "GET" }) }) }); var date6789 = new Lino.DateField({ "selectOnFocus": true, "fieldLabel": "date", "anchor": "100%", "name": "date" }); var job_type6790 = new Lino.TwinCombo({ "fieldLabel": "job type", "name": "job_type", "pageSize": 20, "onTrigger2Click": function(e){ Lino.show_fk_detail(this,Lino.jobs.JobTypes.detail_action)}, "emptyText": "Choisir Type d'emploi...", "selectOnFocus": true, "hiddenName": "job_typeHidden", "anchor": "100%", "store": new Lino.ComplexRemoteComboStore({ "proxy": new Ext.data.HttpProxy({ "url": "/choices/jobs/JobsOverview/job_type", "method": "GET" }) }) }); var main_panel6791 = new Ext.form.FormPanel({hidden:true, layout:'fit', autoHeight: true, frame: true, items:new Ext.Panel({ "autoHeight": true, "layout": "hbox", "items": [ { "flex": 41, "autoHeight": true, "layout": "form", "xtype": "panel", "items": contract_type6788, "labelAlign": "top" }, { "flex": 16, "autoHeight": true, "layout": "form", "xtype": "panel", "items": date6789, "labelAlign": "top" }, { "flex": 41, "autoHeight": true, "layout": "form", "xtype": "panel", "items": job_type6790, "labelAlign": "top" } ], "frame": false, "layoutConfig": { "align": "stretchmax" }, "hideCheckBoxLabels": true, "labelWidth": 126, "border": false, "labelAlign": "top" })}); p.params_panel = main_panel6791; p.params_panel.fields = [ contract_type6788, date6789, job_type6790 ]; return new Lino.jobs.JobsOverview.default_actionPanel(p); }); (und natürlich Änderungen in der `Lino.ActionWindow`, siehe :xfile:`linolib.js`). N.B. Als Python-verwöhnter Programmierer hatte ich das keyword ``new`` im obigen Code (hinterm ``return``) vergessen. Resultat war eine JavaScript-Fehlermeldung in der Console, die erst viel später losknallte. Das hat mich ca. eine Stunde Fehlersuche gekostet. Diverse Bugfixes ---------------- - Kompetenzen: Wert keine Dropdownauswahl möglich außer bei Führerschein. Da kam in der Tat ein 500:: TypeError object of type 'generator' has no len() TRACEBACK: File "/var/snapshots/django/django/core/handlers/base.py", line 111, in get_response response = callback(request, *callback_args, **callback_kwargs) File "/usr/local/django/test_dsbe/using/lino/lino/ui/extjs3/ext_ui.py", line 2169, in choices_view count = len(qs) - Übersetzungen FR. - Eingabe VSEs: - Fehlermeldung "Période %(p1)s hors période d'accompagnement %(p2)s." nennt jetzt die beanstandeten Daten. Und wenn beide Daten (Beginn und Ende) eines Vertrags leer sind, macht er diese Fehlermeldung nicht. - Termin Duplizieren ging nicht. Da kommt "L'action Dupliquer a échoué pour Rendez-vous "Rendez-vous #1208": type object 'Guest' has no attribute 'allow_cascaded_delete'. An error report has been sent to the system administrator. - Weiter mit Tx25 - Klick auf Termin im Kalender-Panel funktionierte noch nicht.