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 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.