Seit der neuen Formularvalidierung (#106) werden nach Mutationen manchmal alle Felder in einer Overview weiss. Das Speichern hat erfolgreich geklappt und nach einem Refresh ist alles wieder sichtbar - trotzdem ist das natürlich nicht schön.
ngControlGroup ist nicht dafür gedacht, für Arrays verwendet zu werden. Vermutlich mag ngControl es nicht, wenn aufgrund der Arraystruktur plötzlich das darunterliegende Model verschwindet. Dafür gibt es eigentlich ControlArray - dies kann aber nicht in den HTML-Templates verwendet werden, da ein ngControlArray-Attribut (noch?) nicht implementiert ist. Daher müsste man wohl die betroffenen Overviews als Reactive Forms refactoren. (Ist in Dart kaum dokumentiert, darum hab ich die TypeScript Doku verlinkt.)
Im selben Rahmen wäre es wohl auch sinnvoll, Overviews, die nur Daten anzeigen, und Overviews, deren Zeilen direkt bearbeitbar sind in zwei unterschiedliche Base-Klassen aufzuteilen, damit der alte Code für die ReadOnlyOverviews behalten kann und der Code für EditableOverviews nicht die bestehende EntityOverview-Klasse mit Code verseucht, der von den ReadOnlyOverviews nicht benötigt wird.
Ebenso: Aufteilen von root Overviews (R), auf die direkt gerouted wird, und child Overviews (C), die in anderen Views eingebunden werden in separate Ordner.
ReadOnly Overviews:
R customer_overview_component.dart
R employee_overview_component.dart
R invoice_overview_component.dart
R offer_overview_component.dart
R project_open_invoices_component.dart
R project_overview_component.dart
R service_overview_component.dart
Editable Overviews: (grundlegend alle, die im Template ein <tr ... ngControlGroup ...> haben)
[x] C activity_overview_component.dart
[x] R holiday_overview_component.dart
[x] C invoice_costgroup_overview_component.dart
[x] C invoice_discount_overview_component.dart
[x] C invoice_item_overview_component.dart
[x] C offer_discount_overview_component.dart
[x] C offer_position_overview_component.dart
[x] C period_overview_component.dart
[x] R project_category_overview_component.dart
[x] C project_comment_overview_component.dart
[x] R rate_group_overview_component.dart
[x] C rate_overview_component.dart
[x] R rate_unit_type_overview_component.dart
[x] C timeslice_overview_component.dart
Schräge Vögel:
[ ] R setting_assign_project_overview_component.dart
Hat so viel custom code, ist mehr oder wengier sein eigenes Ding
Reporter: Zivi
Seit der neuen Formularvalidierung (#106) werden nach Mutationen manchmal alle Felder in einer Overview weiss. Das Speichern hat erfolgreich geklappt und nach einem Refresh ist alles wieder sichtbar - trotzdem ist das natürlich nicht schön.
Das Problem scheint an
ngControlGroup
zu liegen, das mit dem Index vonngFor
in eine Arraystruktur gezwängt wird (ngControl="start{{i}}
), wie z.B. hier: https://github.com/stiftungswo/Dime/blob/a4cd75a7fc9fd5898b2714f96035393c77e4eaad/src/Dime/FrontendBundle/Resources/public/lib/src/component/overview/period_overview_component.html#L19-L26ngControlGroup
ist nicht dafür gedacht, für Arrays verwendet zu werden. Vermutlich magngControl
es nicht, wenn aufgrund der Arraystruktur plötzlich das darunterliegende Model verschwindet. Dafür gibt es eigentlich ControlArray - dies kann aber nicht in den HTML-Templates verwendet werden, da einngControlArray
-Attribut (noch?) nicht implementiert ist. Daher müsste man wohl die betroffenen Overviews als Reactive Forms refactoren. (Ist in Dart kaum dokumentiert, darum hab ich die TypeScript Doku verlinkt.)Im selben Rahmen wäre es wohl auch sinnvoll, Overviews, die nur Daten anzeigen, und Overviews, deren Zeilen direkt bearbeitbar sind in zwei unterschiedliche Base-Klassen aufzuteilen, damit der alte Code für die ReadOnlyOverviews behalten kann und der Code für EditableOverviews nicht die bestehende
EntityOverview
-Klasse mit Code verseucht, der von den ReadOnlyOverviews nicht benötigt wird. Ebenso: Aufteilen von root Overviews (R
), auf die direkt gerouted wird, und child Overviews (C
), die in anderen Views eingebunden werden in separate Ordner.ReadOnly Overviews:
R
customer_overview_component.dartR
employee_overview_component.dartR
invoice_overview_component.dartR
offer_overview_component.dartR
project_open_invoices_component.dartR
project_overview_component.dartR
service_overview_component.dartEditable Overviews: (grundlegend alle, die im Template ein
<tr ... ngControlGroup ...>
haben)C
activity_overview_component.dartR
holiday_overview_component.dartC
invoice_costgroup_overview_component.dartC
invoice_discount_overview_component.dartC
invoice_item_overview_component.dartC
offer_discount_overview_component.dartC
offer_position_overview_component.dartC
period_overview_component.dartR
project_category_overview_component.dartC
project_comment_overview_component.dartR
rate_group_overview_component.dartC
rate_overview_component.dartR
rate_unit_type_overview_component.dartC
timeslice_overview_component.dartSchräge Vögel:
R
setting_assign_project_overview_component.dart