Files
COPILOT/copilot_keyboard/lib/domain/entities/sequence.dart
klas 40143734fc Initial commit: COPILOT D6 Flutter keyboard controller
Flutter web app replacing legacy WPF CCTV surveillance keyboard controller.
Includes wall overview, section view with monitor grid, camera input,
PTZ control, alarm/lock/sequence BLoCs, and legacy-matching UI styling.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 14:57:38 +01:00

73 lines
2.0 KiB
Dart

/// Sequence definition loaded from the coordinator.
class SequenceDefinition {
final int id;
final String name;
final int categoryId;
final List<int> cameras;
final int intervalSeconds;
const SequenceDefinition({
required this.id,
required this.name,
required this.categoryId,
required this.cameras,
required this.intervalSeconds,
});
factory SequenceDefinition.fromJson(Map<String, dynamic> json) {
return SequenceDefinition(
id: json['id'] as int? ?? json['Id'] as int? ?? 0,
name: json['name'] as String? ?? json['Name'] as String? ?? '',
categoryId:
json['categoryId'] as int? ?? json['CategoryId'] as int? ?? 0,
cameras: (json['cameras'] as List<dynamic>? ??
json['Cameras'] as List<dynamic>? ??
[])
.cast<int>(),
intervalSeconds: json['intervalSeconds'] as int? ??
json['IntervalSeconds'] as int? ??
5,
);
}
}
/// Sequence category for grouping sequences.
class SequenceCategory {
final int id;
final String name;
const SequenceCategory({required this.id, required this.name});
factory SequenceCategory.fromJson(Map<String, dynamic> json) {
return SequenceCategory(
id: json['id'] as int? ?? json['Id'] as int? ?? 0,
name: json['name'] as String? ?? json['Name'] as String? ?? '',
);
}
}
/// A sequence currently running on a viewer.
class RunningSequence {
final int viewerId;
final int sequenceId;
final DateTime startedAt;
const RunningSequence({
required this.viewerId,
required this.sequenceId,
required this.startedAt,
});
factory RunningSequence.fromJson(Map<String, dynamic> json) {
return RunningSequence(
viewerId: json['viewerId'] as int? ?? json['ViewerId'] as int? ?? 0,
sequenceId:
json['sequenceId'] as int? ?? json['SequenceId'] as int? ?? 0,
startedAt: DateTime.tryParse(json['startedAt'] as String? ??
json['StartedAt'] as String? ??
'') ??
DateTime.now(),
);
}
}