init: rough companion app stub
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
import 'position.dart';
|
||||
|
||||
class Room {
|
||||
const Room({required this.id, required this.name, required this.polygon});
|
||||
|
||||
final String id;
|
||||
final String name;
|
||||
|
||||
/// Polygon vertices in normalised 0..1 coordinates.
|
||||
final List<Position> polygon;
|
||||
|
||||
Room copyWith({String? name, List<Position>? polygon}) =>
|
||||
Room(id: id, name: name ?? this.name, polygon: polygon ?? this.polygon);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
'id': id,
|
||||
'name': name,
|
||||
'polygon': polygon.map((p) => p.toJson()).toList(),
|
||||
};
|
||||
|
||||
factory Room.fromJson(Map<String, dynamic> json) => Room(
|
||||
id: json['id'] as String,
|
||||
name: json['name'] as String,
|
||||
polygon: (json['polygon'] as List)
|
||||
.map((p) => Position.fromJson(p as Map<String, dynamic>))
|
||||
.toList(),
|
||||
);
|
||||
}
|
||||
|
||||
class FloorPlan {
|
||||
const FloorPlan({
|
||||
required this.id,
|
||||
required this.floorId,
|
||||
required this.metersPerUnit,
|
||||
required this.rooms,
|
||||
});
|
||||
|
||||
final String id;
|
||||
final String floorId;
|
||||
|
||||
/// Scale: how many real-world meters one normalised unit represents.
|
||||
final double metersPerUnit;
|
||||
|
||||
final List<Room> rooms;
|
||||
|
||||
FloorPlan copyWith({double? metersPerUnit, List<Room>? rooms}) => FloorPlan(
|
||||
id: id,
|
||||
floorId: floorId,
|
||||
metersPerUnit: metersPerUnit ?? this.metersPerUnit,
|
||||
rooms: rooms ?? this.rooms,
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
'id': id,
|
||||
'floor_id': floorId,
|
||||
'meters_per_unit': metersPerUnit,
|
||||
'rooms': rooms.map((r) => r.toJson()).toList(),
|
||||
};
|
||||
|
||||
factory FloorPlan.fromJson(Map<String, dynamic> json) => FloorPlan(
|
||||
id: json['id'] as String,
|
||||
floorId: json['floor_id'] as String,
|
||||
metersPerUnit: (json['meters_per_unit'] as num).toDouble(),
|
||||
rooms: (json['rooms'] as List)
|
||||
.map((r) => Room.fromJson(r as Map<String, dynamic>))
|
||||
.toList(),
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user