Skip to content

Commit e918eb3

Browse files
Jashan32marcnause
authored andcommitted
fix thermometer logs playback
1 parent 299f70e commit e918eb3

3 files changed

Lines changed: 23 additions & 3 deletions

File tree

lib/providers/thermometer_state_provider.dart

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class ThermometerStateProvider extends ChangeNotifier {
4040
double _temperatureMax = 0;
4141
double _temperatureSum = 0;
4242
int _dataCount = 0;
43+
int? _playbackStartTimestamp;
4344

4445
bool _isSensorAvailable = false;
4546
bool _isInitialized = false;
@@ -321,7 +322,8 @@ class ThermometerStateProvider extends ChangeNotifier {
321322
}
322323

323324
void startPlayback(List<List<dynamic>> data) {
324-
if (data.length <= 1) return;
325+
if (data.length <= 2) return;
326+
_playbackStartTimestamp = int.tryParse(data[2][0].toString())?.toInt();
325327

326328
_isPlayingBack = true;
327329
_isPlaybackPaused = false;
@@ -343,7 +345,12 @@ class ThermometerStateProvider extends ChangeNotifier {
343345
final currentRow = _playbackData![_playbackIndex];
344346
if (currentRow.length > 2) {
345347
_currentTemperature = double.tryParse(currentRow[2].toString()) ?? 0.0;
346-
_currentTime = (_playbackIndex - 1).toDouble();
348+
final timestamp = int.tryParse(currentRow[0].toString())?.toInt();
349+
if (timestamp != null && _playbackStartTimestamp != null) {
350+
_currentTime = (timestamp - _playbackStartTimestamp!) / 1000.0;
351+
} else {
352+
_currentTime = (_playbackIndex - 1).toDouble();
353+
}
347354
_updateData();
348355
_playbackIndex++;
349356
notifyListeners();
@@ -390,6 +397,7 @@ class ThermometerStateProvider extends ChangeNotifier {
390397
_playbackTimer?.cancel();
391398
_playbackData = null;
392399
_playbackIndex = 0;
400+
_playbackStartTimestamp = null;
393401

394402
_resetTemperatureData();
395403
notifyListeners();

lib/view/logged_data_screen.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import '../l10n/app_localizations.dart';
2121
import '../providers/locator.dart';
2222
import 'accelerometer_screen.dart';
2323
import 'compass_screen.dart';
24+
import 'package:pslab/view/thermometer_screen.dart';
2425

2526
class LoggedDataScreen extends StatefulWidget {
2627
final List<String> instrumentNames;
@@ -388,6 +389,14 @@ class _LoggedDataScreenState extends State<LoggedDataScreen> {
388389
),
389390
);
390391
break;
392+
case 'thermometer':
393+
Navigator.push(
394+
context,
395+
MaterialPageRoute(
396+
builder: (context) => ThermometerScreen(playbackData: data),
397+
),
398+
);
399+
break;
391400
case 'barometer':
392401
Navigator.push(
393402
context,
@@ -754,6 +763,9 @@ class _LoggedDataScreenState extends State<LoggedDataScreen> {
754763
.toLowerCase() ||
755764
instrumentName ==
756765
appLocalizations.compassTitle
766+
.toLowerCase() ||
767+
instrumentName ==
768+
appLocalizations.thermometerTitle
757769
.toLowerCase())
758770
PopupMenuItem<String>(
759771
value: appLocalizations.play,

lib/view/thermometer_screen.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ class _ThermometerScreenState extends State<ThermometerScreen> {
153153
builder: (context) => LoggedDataScreen(
154154
instrumentNames: [appLocalizations.thermometerTitle.toLowerCase()],
155155
appBarName: appLocalizations.thermometerTitle,
156-
instrumentIcons: [instrumentIcons[12]],
156+
instrumentIcons: [instrumentIcons[11]],
157157
),
158158
),
159159
);

0 commit comments

Comments
 (0)