Operational Data Models
Queue Snapshot
Filter Ticket Records
A small list of record-like maps can model a queue snapshot without any host service. The selector changes which ticket status the report highlights.
Program
Play the program to choose the ticket status and inspect the queue snapshot.
queue_snapshot_model.dart
Replay: real traced execution (multi-file project)
void main() {
var wantedStatus = 'open';
var tickets = [
{'status': 'open', 'severity': 'high'},
{'status': 'waiting', 'severity': 'normal'},
{'status': 'open', 'severity': 'normal'},
];
var visible = tickets.where((ticket) => ticket['status'] == wantedStatus).length;
var high = tickets.where((ticket) => ticket['severity'] == 'high').length;
var line = '$wantedStatus tickets=$visible high=$high';
print(line);
}
void main() {
var wantedStatus = 'waiting';
var tickets = [
{'status': 'open', 'severity': 'high'},
{'status': 'waiting', 'severity': 'normal'},
{'status': 'open', 'severity': 'normal'},
];
var visible = tickets.where((ticket) => ticket['status'] == wantedStatus).length;
var high = tickets.where((ticket) => ticket['severity'] == 'high').length;
var line = '$wantedStatus tickets=$visible high=$high';
print(line);
}
wantedStatus ← open
1void main() {2 var wantedStatus = 'open';3 var tickets = [values this stepopenwantedStatustickets ← 3 records
2var wantedStatus = 'open';3var tickets = [4 {'status': 'open', 'severity': 'high'},values this step3 recordsticketsvisible ← 2
7];8var visible = tickets.where((ticket) => ticket['status'] == wantedStatus).length;9var high = tickets.where((ticket) => ticket['severity'] == 'high').length;values this step2visibleopenwantedStatus3 recordsticketshigh ← 1
8var visible = tickets.where((ticket) => ticket['status'] == wantedStatus).length;9var high = tickets.where((ticket) => ticket['severity'] == 'high').length;10var line = '$wantedStatus tickets=$visible high=$high';values this step1high3 recordsticketsline ← open tickets=2 high=1
9var high = tickets.where((ticket) => ticket['severity'] == 'high').length;10var line = '$wantedStatus tickets=$visible high=$high';11print(line);values this stepopen tickets=2 high=1lineopenwantedStatus2visible1highprint(line);
10 var line = '$wantedStatus tickets=$visible high=$high';11 print(line);12}outputopen tickets=2 high=1values this stepopen tickets=2 high=1line
wantedStatus ← waiting
1void main() {2 var wantedStatus = 'waiting';3 var tickets = [values this stepwaitingwantedStatustickets ← 3 records
2var wantedStatus = 'waiting';3var tickets = [4 {'status': 'open', 'severity': 'high'},values this step3 recordsticketsvisible ← 1
7];8var visible = tickets.where((ticket) => ticket['status'] == wantedStatus).length;9var high = tickets.where((ticket) => ticket['severity'] == 'high').length;values this step1visiblewaitingwantedStatus3 recordsticketshigh ← 1
8var visible = tickets.where((ticket) => ticket['status'] == wantedStatus).length;9var high = tickets.where((ticket) => ticket['severity'] == 'high').length;10var line = '$wantedStatus tickets=$visible high=$high';values this step1high3 recordsticketsline ← waiting tickets=1 high=1
9var high = tickets.where((ticket) => ticket['severity'] == 'high').length;10var line = '$wantedStatus tickets=$visible high=$high';11print(line);values this stepwaiting tickets=1 high=1linewaitingwantedStatus1visible1highprint(line);
10 var line = '$wantedStatus tickets=$visible high=$high';11 print(line);12}outputwaiting tickets=1 high=1values this stepwaiting tickets=1 high=1line
record-like maps
The ticket maps carry only the fields needed by the snapshot.
where
`where` keeps rows whose status matches the selected value.
summary line
The output reports the selected bucket and one independent severity count.