20121009

Miscellaneous

Weiter mit Aktionsdialogfenstern

So. Jetzt kommt die letzte große Operation für die Aktionsdialogfenster. Zur Zeit hat der [Ablehnen]-Button auf einem Neuantrag folgende URL:

javascript:Lino.pcsw.ClientStates.wf2.run({
  "record_id": 116,
  "param_values": {
    "also_obsolete": false, "new_since": "09.09.2012",
    "coached_byHidden": null, "also_refused": false, "coached_by": null },
  "base_params": {  } })

Und in der lino*.js steht:

  Lino.pcsw.Clients.wf2_ActionFormPanel = Ext.extend(Lino.ActionFormPanel,{
    autoScroll: false,
    autoHeight: true,
    border: false,
    layout: "form",
    labelWidth: 198,
    hideCheckBoxLabels: true,
    frame: true,
    bodyBorder: false,
    labelAlign: "top",
    autoHeight: true,
    initComponent : function() {
      var containing_panel = this;
      var dummy4908 = new Ext.form.Checkbox({ "boxLabel": "Dummy RefuseNewClient", "hideLabel": true, "checked": false, "name": "dummy", "selectOnFocus": true, "anchor": "-20" });
      ...
      var reason4909 = new Ext.form.TextField({ "fieldLabel": "Grund", "name": "reason", "maxLength": 200, "selectOnFocus": true, "anchor": "-20", "allowBlank": false });
      this.items = [ { "autoHeight": true, "layout": "form", "xtype": "panel", "items": dummy4908, "anchor": "-20", "labelAlign": "top" }, { "autoHeight": true, "layout": "form", "xtype": "panel", "items": reason4909, "anchor": "-20", "labelAlign": "top" } ];
      this.fields = [ dummy4908, reason4909 ];
      Lino.pcsw.Clients.wf2_ActionFormPanel.superclass.initComponent.call(this);
    }
  });


Lino.pcsw.ClientStates.wf2 = new Lino.WindowAction({
    "draggable": true, "width": Lino.chars2width(50),
    "autoHeight": true, "maximizable": true,
    "modal": true, "maximized": false
  }, function(){
    var p = { "is_main_window": true, "hide_top_toolbar": true };
    return new Lino.pcsw.Clients.wf2_ActionFormPanel({});
  });

Die Klassendefinition bleibt gleich, aber der Aufruf muss noch eine Info mehr enthalten, nämlich die Basis-URL, zu der die Aktion bei Klick aufs OK dann geschickt werden soll.

Interne Änderungen:

  • WindowAction.run() hat jetzt einen weiteren Parameter requesting_panel
  • Actions kriegen ihr params_panel jetzt pro Instanz gemacht. Hier fällt störend auf, dass Actors nie instanziert werden. Dadurch ist die Vererbung von Parametrizable nicht sehr elegant.

18.20 Uhr : Wieder ein Stück näher am Ziel. Jetzt muss ich noch im Store rumschneiden und die Werte übergeben. Aber vorher ein Checkin.

Neue Klasse ParameterStore, …

19.40 Uhr : Ta-da, es klappt! Erstmals nach 26 Stunden Arbeitszeit während zwei Wochen.

Jetzt bleiben nur noch ein paar Details zu tun:

  • Dialogfenster schließt sich nicht nach OK und success.
  • reason ist blank=True, aber das prüft er nicht nach.
  • ClientStates workflow : er schlägt [Ablehnen] auch vor, wenn er schon im Zustand Abgelehnt ist. Idem für [Neuzugang].
  • workflow_buttons ist ebenfalls in disabled_fields
  • Das Dummy-Feld muss ich durch etwas Unauffälligeres ersetzen…

Aber jetzt erstmal Checkin und Feierabend.