Files

80 lines
2.8 KiB
Dart
Raw Permalink Normal View History

/// Egy mérési felvétel (lövés) a PC-szoftver által feltöltött
/// `terepi_seged_measure_records` táblából.
///
/// SZÁNDÉKOSAN nincs helyi tükör — ez a PC-szoftverből folyamatosan,
/// élőben érkező adat, mindig friss, sosem gyorsítótárazott (lásd
/// MeasureDataService.watchRecords).
class MeasuredRecord {
final int id;
final String projectId;
final double? sourceLineNumber;
final double? sourcePointNumber;
final DateTime measuredAt;
final double? eovX;
final double? eovY;
final int? gpsTimeInMicroseconds;
final int? minReceiverPointNumber;
final int? minReceiverPointFduNumber;
final int? maxReceiverPointNumber;
final int? maxReceiverPointFduNumber;
final String? imagePath;
final String? imageUrl;
final int? ffid;
final int? recordType;
final int? recordSerialNumberOfSourcePoint;
const MeasuredRecord({
required this.id,
required this.projectId,
this.sourceLineNumber,
this.sourcePointNumber,
required this.measuredAt,
this.eovX,
this.eovY,
this.gpsTimeInMicroseconds,
this.minReceiverPointNumber,
this.minReceiverPointFduNumber,
this.maxReceiverPointNumber,
this.maxReceiverPointFduNumber,
this.imagePath,
this.imageUrl,
this.ffid,
this.recordType,
this.recordSerialNumberOfSourcePoint,
});
factory MeasuredRecord.fromMap(Map<String, dynamic> m) => MeasuredRecord(
id: m['id'] as int,
projectId: m['project_id'] as String,
sourceLineNumber: (m['source_line_number'] as num?)?.toDouble(),
sourcePointNumber: (m['source_point_number'] as num?)?.toDouble(),
measuredAt: DateTime.parse(m['measured_at'] as String),
eovX: (m['eov_x'] as num?)?.toDouble(),
eovY: (m['eov_y'] as num?)?.toDouble(),
gpsTimeInMicroseconds: (m['gps_time_in_microseconds'] as num?)?.toInt(),
minReceiverPointNumber:
(m['min_receiver_point_number'] as num?)?.toInt(),
minReceiverPointFduNumber:
(m['min_receiver_point_fdu_number'] as num?)?.toInt(),
maxReceiverPointNumber:
(m['max_receiver_point_number'] as num?)?.toInt(),
maxReceiverPointFduNumber:
(m['max_receiver_point_fdu_number'] as num?)?.toInt(),
imagePath: m['image_path'] as String?,
imageUrl: m['image_url'] as String?,
ffid: (m['ffid'] as num?)?.toInt(),
recordType: (m['record_type'] as num?)?.toInt(),
recordSerialNumberOfSourcePoint:
(m['record_serial_number_of_source_point'] as num?)?.toInt(),
);
bool get hasImage =>
(imageUrl != null && imageUrl!.isNotEmpty) ||
(imagePath != null && imagePath!.isNotEmpty);
String? get geophoneRange =>
(minReceiverPointNumber != null && maxReceiverPointNumber != null)
? '$minReceiverPointNumber–$maxReceiverPointNumber'
: null;
}