Task-Typnummern neu zugeordnet und benutzerdefinierte Typen via effectiveType unterstuetzt
- TourTask: base_type-Feld und effectiveType-Getter ergaenzt; benutzerdefinierte Typen (>= 1000) aus dem Workflow-Editor werden auf ihren Basis-Typ abgebildet, bei Altdaten ohne base_type wird der Basis-Typ aus den Eigenschaften abgeleitet - TaskListPage: alle Typ-Switches auf effectiveType und die neuen Typnummern umgestellt (u.a. Ankunft 1->3, Fotos 3->4, Bestaetigung 6->12, Listen 12-14->13-15) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
aa44311776
commit
ac4266079a
2 files changed
+88
-54
No files matched your search
@@ -1,6 +1,16 @@
|
||||
class TourTask {
|
||||
/// Untergrenze der im Workflow-Editor vergebenen Typnummern für
|
||||
/// benutzerdefinierte Typen.
|
||||
static const int customTypeStart = 1000;
|
||||
|
||||
late int sId;
|
||||
late int type;
|
||||
|
||||
/// Typnummer des Basis-Typs bei benutzerdefinierten Typen
|
||||
/// (>= [customTypeStart]) aus dem Workflow-Editor. `null` bei
|
||||
/// Standard-Typen und bei Altdaten ohne Angabe.
|
||||
int? baseType;
|
||||
|
||||
late String topic;
|
||||
bool? opt;
|
||||
bool? reenter;
|
||||
@@ -17,15 +27,36 @@ class TourTask {
|
||||
/// Auswahloptionen eines Status-Tasks (Typ 11).
|
||||
List<TourChoice>? choices;
|
||||
|
||||
/// Eingabefelder einer Text-/Zahlen-Liste (Typ 12/13).
|
||||
/// Eingabefelder einer Text-/Zahlen-Liste (Typ 13/14).
|
||||
List<TourField>? fields;
|
||||
|
||||
TourTask();
|
||||
|
||||
/// Der für Darstellung und Validierung maßgebliche Typ: Standard-Typen
|
||||
/// unverändert; benutzerdefinierte Typen (>= [customTypeStart]) werden auf
|
||||
/// ihren Basis-Typ abgebildet. Fehlt {@code base_type} (Altdaten), wird der
|
||||
/// Basis-Typ aus den typprägenden Eigenschaften abgeleitet.
|
||||
int get effectiveType {
|
||||
if (type < customTypeStart) {
|
||||
return type;
|
||||
}
|
||||
if (baseType != null) {
|
||||
return baseType!;
|
||||
}
|
||||
if (choices != null && choices!.isNotEmpty) return 11; // Statusauswahl
|
||||
if (entries != null && entries!.isNotEmpty) return 15; // Checkbox-Liste
|
||||
if (fields != null && fields!.isNotEmpty) return 13; // Text-Liste
|
||||
if (min != null || max != null) return 4; // Fotos
|
||||
if (maxLen != null) return 8; // Texteingabe (Bemerkung)
|
||||
if (track != null) return 3; // Ankunft melden
|
||||
return 12; // Bestätigung per Checkbox
|
||||
}
|
||||
|
||||
factory TourTask.fromJson(Map<String, dynamic> json) {
|
||||
final task = TourTask();
|
||||
task.sId = json['s_id'] as int;
|
||||
task.type = json['type'] as int;
|
||||
task.baseType = json['base_type'] as int?;
|
||||
task.topic = json['topic'] as String;
|
||||
task.opt = json['opt'] as bool? ?? false;
|
||||
task.reenter = json['reenter'] as bool? ?? false;
|
||||
@@ -59,6 +90,7 @@ class TourTask {
|
||||
return {
|
||||
's_id': sId,
|
||||
'type': type,
|
||||
if (baseType != null) 'base_type': baseType,
|
||||
'topic': topic,
|
||||
'opt': opt,
|
||||
'reenter': reenter,
|
||||
@@ -82,7 +114,7 @@ class TourEntry {
|
||||
late String text;
|
||||
late bool queryRemark;
|
||||
|
||||
/// Pflicht-Kennzeichen aus dem Workflow-Editor (Checkbox-Liste, Typ 14).
|
||||
/// Pflicht-Kennzeichen aus dem Workflow-Editor (Checkbox-Liste, Typ 15).
|
||||
/// `null`, wenn das JSON keine Angabe enthält (Altdaten).
|
||||
bool? required;
|
||||
|
||||
@@ -145,7 +177,7 @@ class TourChoice {
|
||||
bool get requiresRemark => (quest != null && quest!.trim().isNotEmpty);
|
||||
}
|
||||
|
||||
/// Ein Eingabefeld einer Text-/Zahlen-Liste (Typ 12/13).
|
||||
/// Ein Eingabefeld einer Text-/Zahlen-Liste (Typ 13/14).
|
||||
class TourField {
|
||||
String? title;
|
||||
String? placeholder;
|
||||
|
||||
Reference in new issue
Block a user