Umstellung auf UTC Timestamp
This commit is contained in:
1 parent
6154bf833e
commit
ac6c468870
10 files changed
+41
-107
No files matched your search
@@ -39,8 +39,8 @@ class _AcceptedJobsPageState extends State<AcceptedJobsPage>
|
|||||||
.stateEqualTo(Constants.stateAccepted)
|
.stateEqualTo(Constants.stateAccepted)
|
||||||
.findAll();
|
.findAll();
|
||||||
_jobs.sort((job1, job2) {
|
_jobs.sort((job1, job2) {
|
||||||
var date1 = DateTime.parse(job1.ordertime).millisecondsSinceEpoch;
|
var date1 = DateTime.fromMillisecondsSinceEpoch(job1.ordertime * 1000, isUtc: true).millisecondsSinceEpoch;
|
||||||
var date2 = DateTime.parse(job2.ordertime).millisecondsSinceEpoch;
|
var date2 = DateTime.fromMillisecondsSinceEpoch(job2.ordertime * 1000, isUtc: true).millisecondsSinceEpoch;
|
||||||
|
|
||||||
return date1 - date2;
|
return date1 - date2;
|
||||||
});
|
});
|
||||||
@@ -97,7 +97,7 @@ class _AcceptedJobsPageState extends State<AcceptedJobsPage>
|
|||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Text(
|
Text(
|
||||||
DateFormat('dd.MM.yyyy HH:mm')
|
DateFormat('dd.MM.yyyy HH:mm')
|
||||||
.format(DateTime.parse(job.ordertime).toLocal())
|
.format(DateTime.fromMillisecondsSinceEpoch(job.ordertime * 1000, isUtc: true).toLocal())
|
||||||
.toString(),
|
.toString(),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
backgroundColor: isJobTooFarInFuture(job)
|
backgroundColor: isJobTooFarInFuture(job)
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ class _AssignedJobsPageState extends State<AssignedJobsPage> with ProducerMixin,
|
|||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
DateFormat('dd.MM.yyyy HH:mm').format(DateTime.parse(job.ordertime).toLocal()).toString(),
|
DateFormat('dd.MM.yyyy HH:mm').format(DateTime.fromMillisecondsSinceEpoch(job.ordertime * 1000, isUtc: true).toLocal()).toString(),
|
||||||
textAlign: TextAlign.left,
|
textAlign: TextAlign.left,
|
||||||
style: TextStyle(backgroundColor: isJobTooFarInFuture(job) ? Colors.red : Colors.white),
|
style: TextStyle(backgroundColor: isJobTooFarInFuture(job) ? Colors.red : Colors.white),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ class _FinishedJobsPageState extends State<FinishedJobsPage>
|
|||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Text(
|
Text(
|
||||||
DateFormat('dd.MM.yyyy HH:mm')
|
DateFormat('dd.MM.yyyy HH:mm')
|
||||||
.format(DateTime.parse(job.ordertime).toLocal())
|
.format(DateTime.fromMillisecondsSinceEpoch(job.ordertime * 1000, isUtc: true).toLocal())
|
||||||
.toString(),
|
.toString(),
|
||||||
textAlign: TextAlign.left,
|
textAlign: TextAlign.left,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -536,6 +536,7 @@ class _TaskListPageState extends State<TaskListPage> with ProducerMixin {
|
|||||||
finTourMessage.track = Track();
|
finTourMessage.track = Track();
|
||||||
finTourMessage.track!.time = Util.nowUnixSecondsUtc();
|
finTourMessage.track!.time = Util.nowUnixSecondsUtc();
|
||||||
finTourMessage.track!.pos = FinTaskPos();
|
finTourMessage.track!.pos = FinTaskPos();
|
||||||
|
finTourMessage.track!.pos!.time = Util.toUnixSecondsUtc(position.timestamp);
|
||||||
finTourMessage.track!.pos!.lat = position.latitude;
|
finTourMessage.track!.pos!.lat = position.latitude;
|
||||||
finTourMessage.track!.pos!.long = position.longitude;
|
finTourMessage.track!.pos!.long = position.longitude;
|
||||||
}
|
}
|
||||||
@@ -574,7 +575,7 @@ class _TaskListPageState extends State<TaskListPage> with ProducerMixin {
|
|||||||
var message = PicData();
|
var message = PicData();
|
||||||
message.trId = picture.tourId;
|
message.trId = picture.tourId;
|
||||||
message.num = picture.number;
|
message.num = picture.number;
|
||||||
message.time = DateTime.now().millisecondsSinceEpoch;
|
message.time = Util.nowUnixSecondsUtc();
|
||||||
message.data = picture.data;
|
message.data = picture.data;
|
||||||
|
|
||||||
sendMessage(
|
sendMessage(
|
||||||
|
|||||||
+1
-1
@@ -18,7 +18,7 @@ class Job with ProducerMixin {
|
|||||||
@JsonKey(name: 'cr_filter')
|
@JsonKey(name: 'cr_filter')
|
||||||
late String? crFilter;
|
late String? crFilter;
|
||||||
@JsonKey(name: 'ordertime')
|
@JsonKey(name: 'ordertime')
|
||||||
late String ordertime;
|
late int ordertime;
|
||||||
@JsonKey(name: 'offs_warn')
|
@JsonKey(name: 'offs_warn')
|
||||||
late int offsWarn;
|
late int offsWarn;
|
||||||
@JsonKey(name: 'global')
|
@JsonKey(name: 'global')
|
||||||
|
|||||||
+13
-91
@@ -40,7 +40,7 @@ const JobSchema = CollectionSchema(
|
|||||||
r'ordertime': PropertySchema(
|
r'ordertime': PropertySchema(
|
||||||
id: 4,
|
id: 4,
|
||||||
name: r'ordertime',
|
name: r'ordertime',
|
||||||
type: IsarType.string,
|
type: IsarType.long,
|
||||||
),
|
),
|
||||||
r'rem': PropertySchema(
|
r'rem': PropertySchema(
|
||||||
id: 5,
|
id: 5,
|
||||||
@@ -100,7 +100,6 @@ int _jobEstimateSize(
|
|||||||
bytesCount += 3 + value.length * 3;
|
bytesCount += 3 + value.length * 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bytesCount += 3 + object.ordertime.length * 3;
|
|
||||||
bytesCount += 3 + object.rem.length * 3;
|
bytesCount += 3 + object.rem.length * 3;
|
||||||
bytesCount += 3 + object.tours.length * 3;
|
bytesCount += 3 + object.tours.length * 3;
|
||||||
{
|
{
|
||||||
@@ -124,7 +123,7 @@ void _jobSerialize(
|
|||||||
writer.writeLong(offsets[1], object.delayOrderTime);
|
writer.writeLong(offsets[1], object.delayOrderTime);
|
||||||
writer.writeBool(offsets[2], object.global);
|
writer.writeBool(offsets[2], object.global);
|
||||||
writer.writeLong(offsets[3], object.offsWarn);
|
writer.writeLong(offsets[3], object.offsWarn);
|
||||||
writer.writeString(offsets[4], object.ordertime);
|
writer.writeLong(offsets[4], object.ordertime);
|
||||||
writer.writeString(offsets[5], object.rem);
|
writer.writeString(offsets[5], object.rem);
|
||||||
writer.writeLong(offsets[6], object.state);
|
writer.writeLong(offsets[6], object.state);
|
||||||
writer.writeObjectList<JobTour>(
|
writer.writeObjectList<JobTour>(
|
||||||
@@ -149,7 +148,7 @@ Job _jobDeserialize(
|
|||||||
object.global = reader.readBool(offsets[2]);
|
object.global = reader.readBool(offsets[2]);
|
||||||
object.id = id;
|
object.id = id;
|
||||||
object.offsWarn = reader.readLong(offsets[3]);
|
object.offsWarn = reader.readLong(offsets[3]);
|
||||||
object.ordertime = reader.readString(offsets[4]);
|
object.ordertime = reader.readLong(offsets[4]);
|
||||||
object.rem = reader.readString(offsets[5]);
|
object.rem = reader.readString(offsets[5]);
|
||||||
object.state = reader.readLong(offsets[6]);
|
object.state = reader.readLong(offsets[6]);
|
||||||
object.tours = reader.readObjectList<JobTour>(
|
object.tours = reader.readObjectList<JobTour>(
|
||||||
@@ -180,7 +179,7 @@ P _jobDeserializeProp<P>(
|
|||||||
case 3:
|
case 3:
|
||||||
return (reader.readLong(offset)) as P;
|
return (reader.readLong(offset)) as P;
|
||||||
case 4:
|
case 4:
|
||||||
return (reader.readString(offset)) as P;
|
return (reader.readLong(offset)) as P;
|
||||||
case 5:
|
case 5:
|
||||||
return (reader.readString(offset)) as P;
|
return (reader.readString(offset)) as P;
|
||||||
case 6:
|
case 6:
|
||||||
@@ -600,55 +599,46 @@ extension JobQueryFilter on QueryBuilder<Job, Job, QFilterCondition> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Job, Job, QAfterFilterCondition> ordertimeEqualTo(
|
QueryBuilder<Job, Job, QAfterFilterCondition> ordertimeEqualTo(int value) {
|
||||||
String value, {
|
|
||||||
bool caseSensitive = true,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
return query.addFilterCondition(FilterCondition.equalTo(
|
||||||
property: r'ordertime',
|
property: r'ordertime',
|
||||||
value: value,
|
value: value,
|
||||||
caseSensitive: caseSensitive,
|
|
||||||
));
|
));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Job, Job, QAfterFilterCondition> ordertimeGreaterThan(
|
QueryBuilder<Job, Job, QAfterFilterCondition> ordertimeGreaterThan(
|
||||||
String value, {
|
int value, {
|
||||||
bool include = false,
|
bool include = false,
|
||||||
bool caseSensitive = true,
|
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||||
include: include,
|
include: include,
|
||||||
property: r'ordertime',
|
property: r'ordertime',
|
||||||
value: value,
|
value: value,
|
||||||
caseSensitive: caseSensitive,
|
|
||||||
));
|
));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Job, Job, QAfterFilterCondition> ordertimeLessThan(
|
QueryBuilder<Job, Job, QAfterFilterCondition> ordertimeLessThan(
|
||||||
String value, {
|
int value, {
|
||||||
bool include = false,
|
bool include = false,
|
||||||
bool caseSensitive = true,
|
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.lessThan(
|
return query.addFilterCondition(FilterCondition.lessThan(
|
||||||
include: include,
|
include: include,
|
||||||
property: r'ordertime',
|
property: r'ordertime',
|
||||||
value: value,
|
value: value,
|
||||||
caseSensitive: caseSensitive,
|
|
||||||
));
|
));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Job, Job, QAfterFilterCondition> ordertimeBetween(
|
QueryBuilder<Job, Job, QAfterFilterCondition> ordertimeBetween(
|
||||||
String lower,
|
int lower,
|
||||||
String upper, {
|
int upper, {
|
||||||
bool includeLower = true,
|
bool includeLower = true,
|
||||||
bool includeUpper = true,
|
bool includeUpper = true,
|
||||||
bool caseSensitive = true,
|
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(FilterCondition.between(
|
return query.addFilterCondition(FilterCondition.between(
|
||||||
@@ -657,73 +647,6 @@ extension JobQueryFilter on QueryBuilder<Job, Job, QFilterCondition> {
|
|||||||
includeLower: includeLower,
|
includeLower: includeLower,
|
||||||
upper: upper,
|
upper: upper,
|
||||||
includeUpper: includeUpper,
|
includeUpper: includeUpper,
|
||||||
caseSensitive: caseSensitive,
|
|
||||||
));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<Job, Job, QAfterFilterCondition> ordertimeStartsWith(
|
|
||||||
String value, {
|
|
||||||
bool caseSensitive = true,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addFilterCondition(FilterCondition.startsWith(
|
|
||||||
property: r'ordertime',
|
|
||||||
value: value,
|
|
||||||
caseSensitive: caseSensitive,
|
|
||||||
));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<Job, Job, QAfterFilterCondition> ordertimeEndsWith(
|
|
||||||
String value, {
|
|
||||||
bool caseSensitive = true,
|
|
||||||
}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addFilterCondition(FilterCondition.endsWith(
|
|
||||||
property: r'ordertime',
|
|
||||||
value: value,
|
|
||||||
caseSensitive: caseSensitive,
|
|
||||||
));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<Job, Job, QAfterFilterCondition> ordertimeContains(String value,
|
|
||||||
{bool caseSensitive = true}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addFilterCondition(FilterCondition.contains(
|
|
||||||
property: r'ordertime',
|
|
||||||
value: value,
|
|
||||||
caseSensitive: caseSensitive,
|
|
||||||
));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<Job, Job, QAfterFilterCondition> ordertimeMatches(String pattern,
|
|
||||||
{bool caseSensitive = true}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addFilterCondition(FilterCondition.matches(
|
|
||||||
property: r'ordertime',
|
|
||||||
wildcard: pattern,
|
|
||||||
caseSensitive: caseSensitive,
|
|
||||||
));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<Job, Job, QAfterFilterCondition> ordertimeIsEmpty() {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addFilterCondition(FilterCondition.equalTo(
|
|
||||||
property: r'ordertime',
|
|
||||||
value: '',
|
|
||||||
));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<Job, Job, QAfterFilterCondition> ordertimeIsNotEmpty() {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
|
||||||
property: r'ordertime',
|
|
||||||
value: '',
|
|
||||||
));
|
));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -1441,10 +1364,9 @@ extension JobQueryWhereDistinct on QueryBuilder<Job, Job, QDistinct> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Job, Job, QDistinct> distinctByOrdertime(
|
QueryBuilder<Job, Job, QDistinct> distinctByOrdertime() {
|
||||||
{bool caseSensitive = true}) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addDistinctBy(r'ordertime', caseSensitive: caseSensitive);
|
return query.addDistinctBy(r'ordertime');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1504,7 +1426,7 @@ extension JobQueryProperty on QueryBuilder<Job, Job, QQueryProperty> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Job, String, QQueryOperations> ordertimeProperty() {
|
QueryBuilder<Job, int, QQueryOperations> ordertimeProperty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addPropertyName(r'ordertime');
|
return query.addPropertyName(r'ordertime');
|
||||||
});
|
});
|
||||||
@@ -1550,7 +1472,7 @@ Job _$JobFromJson(Map<String, dynamic> json) => Job()
|
|||||||
..ver = json['ver'] as String
|
..ver = json['ver'] as String
|
||||||
..state = (json['state'] as num).toInt()
|
..state = (json['state'] as num).toInt()
|
||||||
..crFilter = json['cr_filter'] as String?
|
..crFilter = json['cr_filter'] as String?
|
||||||
..ordertime = json['ordertime'] as String
|
..ordertime = (json['ordertime'] as num).toInt()
|
||||||
..offsWarn = (json['offs_warn'] as num).toInt()
|
..offsWarn = (json['offs_warn'] as num).toInt()
|
||||||
..global = json['global'] as bool
|
..global = json['global'] as bool
|
||||||
..vhtId = (json['vht_id'] as num).toInt()
|
..vhtId = (json['vht_id'] as num).toInt()
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ Future<List<Widget>> _fetchJobWidgets(StateSetter dialogState, Function() onFini
|
|||||||
SizedBox(
|
SizedBox(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
child: Text(
|
child: Text(
|
||||||
DateFormat('dd.MM.yyyy HH:mm').format(DateTime.parse(job.ordertime).toLocal()).toString(),
|
DateFormat('dd.MM.yyyy HH:mm').format(DateTime.fromMillisecondsSinceEpoch(job.ordertime * 1000, isUtc: true).toLocal()).toString(),
|
||||||
textAlign: TextAlign.left,
|
textAlign: TextAlign.left,
|
||||||
style: TextStyle(backgroundColor: isJobTooFarInFuture(job) ? Colors.red : Colors.transparent),
|
style: TextStyle(backgroundColor: isJobTooFarInFuture(job) ? Colors.red : Colors.transparent),
|
||||||
),
|
),
|
||||||
@@ -263,7 +263,7 @@ Future<List<Widget>> _fetchJobWidgets(StateSetter dialogState, Function() onFini
|
|||||||
SizedBox(
|
SizedBox(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
child: Text(
|
child: Text(
|
||||||
DateFormat('dd.MM.yyyy HH:mm').format(DateTime.parse(job.ordertime).toLocal()).toString(),
|
DateFormat('dd.MM.yyyy HH:mm').format(DateTime.fromMillisecondsSinceEpoch(job.ordertime, isUtc: true).toLocal()).toString(),
|
||||||
textAlign: TextAlign.left,
|
textAlign: TextAlign.left,
|
||||||
style: TextStyle(backgroundColor: isJobTooFarInFuture(job) ? Colors.red : Colors.transparent),
|
style: TextStyle(backgroundColor: isJobTooFarInFuture(job) ? Colors.red : Colors.transparent),
|
||||||
),
|
),
|
||||||
@@ -377,6 +377,7 @@ _sendAnswer(SharedMapReference mapReference, Job job, int item) async {
|
|||||||
message.track = Track();
|
message.track = Track();
|
||||||
message.track.time = Util.nowUnixSecondsUtc();
|
message.track.time = Util.nowUnixSecondsUtc();
|
||||||
message.track.pos = FinTaskPos();
|
message.track.pos = FinTaskPos();
|
||||||
|
message.track.pos!.time = currentPosition != null ? Util.toUnixSecondsUtc(currentPosition.timestamp) : 0;
|
||||||
message.track.pos!.lat = currentPosition != null ? currentPosition.latitude : 0.0;
|
message.track.pos!.lat = currentPosition != null ? currentPosition.latitude : 0.0;
|
||||||
message.track.pos!.long = currentPosition != null ? currentPosition.longitude : 0.0;
|
message.track.pos!.long = currentPosition != null ? currentPosition.longitude : 0.0;
|
||||||
message.track.pos!.acc = currentPosition != null ? currentPosition.accuracy.toInt() : 0;
|
message.track.pos!.acc = currentPosition != null ? currentPosition.accuracy.toInt() : 0;
|
||||||
|
|||||||
@@ -196,6 +196,10 @@ class MqttCore with ProducerMixin, ConsumerMixin {
|
|||||||
var buffer = Uint8Buffer();
|
var buffer = Uint8Buffer();
|
||||||
buffer.addAll(GZipEncoder().encode(const Utf8Encoder().convert(encapsulatedMessageText)) as Iterable<int>);
|
buffer.addAll(GZipEncoder().encode(const Utf8Encoder().convert(encapsulatedMessageText)) as Iterable<int>);
|
||||||
|
|
||||||
|
// Ensure no trailing slash in topic portion
|
||||||
|
if (topic.endsWith('/')) {
|
||||||
|
topic = topic.substring(0, topic.length - 1);
|
||||||
|
}
|
||||||
var messageTopic = "$_toServerTopic$_clientId/$topic";
|
var messageTopic = "$_toServerTopic$_clientId/$topic";
|
||||||
|
|
||||||
_mqttClient!.publishMessage(messageTopic, MqttQos.atMostOnce, buffer);
|
_mqttClient!.publishMessage(messageTopic, MqttQos.atMostOnce, buffer);
|
||||||
@@ -205,7 +209,7 @@ class MqttCore with ProducerMixin, ConsumerMixin {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
Util.logInfo("send failed!");
|
Util.logInfo("send failed: $ex");
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@@ -221,7 +225,13 @@ class MqttCore with ProducerMixin, ConsumerMixin {
|
|||||||
|
|
||||||
var topicArray = message.variableHeader?.topicName;
|
var topicArray = message.variableHeader?.topicName;
|
||||||
var topicArraySplited = topicArray!.split("/");
|
var topicArraySplited = topicArray!.split("/");
|
||||||
var topic = topicArraySplited[7];
|
|
||||||
|
var topic = topicArraySplited.length > 7
|
||||||
|
? topicArraySplited.sublist(7).join('/')
|
||||||
|
: (topicArraySplited.length == 8 ? topicArraySplited[7] : "");
|
||||||
|
if (topic.endsWith('/')) {
|
||||||
|
topic = topic.substring(0, topic.length - 1);
|
||||||
|
}
|
||||||
|
|
||||||
Util.logInfo('message received\ntopic: $topic\n');
|
Util.logInfo('message received\ntopic: $topic\n');
|
||||||
Util.logInfo("size in bytes: ${message.payload.message!.length.toString()}");
|
Util.logInfo("size in bytes: ${message.payload.message!.length.toString()}");
|
||||||
@@ -592,7 +602,7 @@ class MqttCore with ProducerMixin, ConsumerMixin {
|
|||||||
var jobs = await MyApp.isarInstance.jobs.filter().stateGreaterThan(-1).findAll();
|
var jobs = await MyApp.isarInstance.jobs.filter().stateGreaterThan(-1).findAll();
|
||||||
|
|
||||||
var answer = SyncJobsMessage();
|
var answer = SyncJobsMessage();
|
||||||
answer.utcUnixTime = DateTime.now().toUtc().millisecondsSinceEpoch ~/ 1000;
|
answer.utcUnixTime = Util.nowUnixSecondsUtc();
|
||||||
|
|
||||||
answer.pos = SyncMessagePos();
|
answer.pos = SyncMessagePos();
|
||||||
answer.pos!.time = currentPosition != null ? Util.toUnixSecondsUtc(currentPosition.timestamp.toUtc()) : 0;
|
answer.pos!.time = currentPosition != null ? Util.toUnixSecondsUtc(currentPosition.timestamp.toUtc()) : 0;
|
||||||
@@ -682,7 +692,7 @@ class MqttCore with ProducerMixin, ConsumerMixin {
|
|||||||
message.id = job.id;
|
message.id = job.id;
|
||||||
message.state = job.state;
|
message.state = job.state;
|
||||||
message.ver = job.ver;
|
message.ver = job.ver;
|
||||||
message.utc = DateTime.now().millisecondsSinceEpoch;
|
message.utc = Util.nowUnixSecondsUtc();
|
||||||
|
|
||||||
_publishMessage('job_received', message.toJson(), false);
|
_publishMessage('job_received', message.toJson(), false);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -456,7 +456,7 @@ class DecimalTextInputFormatter extends TextInputFormatter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool isJobTooFarInFuture(Job job) {
|
bool isJobTooFarInFuture(Job job) {
|
||||||
var ordertime = DateTime.parse(job.ordertime).toUtc().millisecondsSinceEpoch;
|
var ordertime = job.ordertime * 1000; // convert seconds to milliseconds
|
||||||
var dateTimeThreshold = DateTime.now().add(Duration(minutes: job.offsWarn)).toUtc().millisecondsSinceEpoch;
|
var dateTimeThreshold = DateTime.now().add(Duration(minutes: job.offsWarn)).toUtc().millisecondsSinceEpoch;
|
||||||
|
|
||||||
return ordertime > dateTimeThreshold;
|
return ordertime > dateTimeThreshold;
|
||||||
|
|||||||
+2
-2
@@ -16,10 +16,10 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
|||||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||||
# In Windows, build-name is used as the major, minor, and patch parts
|
# In Windows, build-name is used as the major, minor, and patch parts
|
||||||
# of the product and file versions while build-number is used as the build suffix.
|
# of the product and file versions while build-number is used as the build suffix.
|
||||||
version: 340.0.0+340
|
version: 343.0.0+343
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=2.19.6 <3.0.0'
|
sdk: '>=3.5.0 <4.0.0'
|
||||||
|
|
||||||
isar_version: &isar_version 3.1.8 # define the version to be used
|
isar_version: &isar_version 3.1.8 # define the version to be used
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user