Ranking erweitert

This commit is contained in:
Sven committed 2024-04-22 14:42:43 +02:00
1 parent 32ec25af14
commit 91f641f998
6 files changed
+449 -327

No files matched your search

+9 -8
View File
@@ -10,6 +10,7 @@ import 'package:stadtbote/popups/tasks_popups/zip_popup.dart';
import 'package:stadtbote/protocoll_messages/zip_message.dart'; import 'package:stadtbote/protocoll_messages/zip_message.dart';
import 'package:stadtbote/tools/constants.dart'; import 'package:stadtbote/tools/constants.dart';
import 'package:stadtbote/tools/message_service.dart'; import 'package:stadtbote/tools/message_service.dart';
import 'package:stadtbote/tools/messages/ranking_updated.dart';
import 'package:stadtbote/tools/mqtt_core.dart'; import 'package:stadtbote/tools/mqtt_core.dart';
import '../tools/util.dart'; import '../tools/util.dart';
@@ -40,7 +41,7 @@ class ApproachAreaPage extends ContentViewWidget {
} }
class _ApproachAreaPageState extends State<ApproachAreaPage> { class _ApproachAreaPageState extends State<ApproachAreaPage> {
late List<Rank>? _ranking; late Ranking? _ranking;
late bool _initCompleted = false; late bool _initCompleted = false;
@@ -49,12 +50,10 @@ class _ApproachAreaPageState extends State<ApproachAreaPage> {
super.initState(); super.initState();
Future.delayed(const Duration(seconds: 0), () async { Future.delayed(const Duration(seconds: 0), () async {
_ranking = await MyApp.isarInstance.ranks.where().findAll(); _ranking = await MyApp.isarInstance.rankings.where().findFirst();
_initCompleted = true; _initCompleted = true;
_sendZip(Rank(), "24893");
setState(() {}); setState(() {});
}); });
@@ -74,6 +73,8 @@ class _ApproachAreaPageState extends State<ApproachAreaPage> {
return Util.getWaitWidget(context); return Util.getWaitWidget(context);
} }
_fillColumns();
return Padding( return Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: InteractiveViewer( child: InteractiveViewer(
@@ -93,8 +94,8 @@ class _ApproachAreaPageState extends State<ApproachAreaPage> {
List<Widget> columns = []; List<Widget> columns = [];
if (_ranking != null) { if (_ranking != null) {
for (int i = 0; i < _ranking!.length; i++) { for (int i = 0; i < _ranking!.ranks.length; i++) {
var rank = _ranking![i]; var rank = _ranking!.ranks[i];
List<Widget> entries = []; List<Widget> entries = [];
entries.add( entries.add(
@@ -196,10 +197,10 @@ class _ApproachAreaPageState extends State<ApproachAreaPage> {
} }
_initMessages() { _initMessages() {
/*MessageService().subscribe<RankingUpdated>(Constants.messageTopicRankingUpdated, this, (rankingUpdateMessage) async { MessageService().subscribe<RankingUpdated>(Constants.messageTopicRankingUpdated, this, (rankingUpdateMessage) async {
_ranking = await MyApp.isarInstance.rankings.where().findFirst(); _ranking = await MyApp.isarInstance.rankings.where().findFirst();
setState(() {}); setState(() {});
});*/ });
} }
} }
+1 -1
View File
@@ -129,7 +129,7 @@ class _MessagesPageState extends State<MessagesPage> {
author: message.from == _sid ? _user : _central, author: message.from == _sid ? _user : _central,
createdAt: DateTime.parse(message.time).toLocal().millisecondsSinceEpoch, createdAt: DateTime.parse(message.time).toLocal().millisecondsSinceEpoch,
id: message.id.toString(), id: message.id.toString(),
text: message.text, text: message.subj + "\n" + message.text,
)); ));
_messages.sort((a, b) => b.createdAt! > a.createdAt! ? 1 : 0); _messages.sort((a, b) => b.createdAt! > a.createdAt! ? 1 : 0);
+1 -1
View File
@@ -40,7 +40,7 @@ Future<void> main() async {
MessageSchema, MessageSchema,
EnqueuedMessageSchema, EnqueuedMessageSchema,
LogEntrySchema, LogEntrySchema,
RankSchema RankingSchema
], directory: dir.path); ], directory: dir.path);
runZonedGuarded(() {}, (error, stackTrace) { runZonedGuarded(() {}, (error, stackTrace) {
+17 -3
View File
@@ -5,15 +5,29 @@ part 'rank.g.dart';
@collection @collection
@JsonSerializable() @JsonSerializable()
class Ranking {
@JsonValue(0)
late Id? id = Isar.autoIncrement;
@JsonKey(name: "ranking")
late List<Rank> ranks;
Ranking();
factory Ranking.fromJson(Map<String, dynamic> json) => _$RankingFromJson(json);
Map<String, dynamic> toJson() => _$RankingToJson(this);
}
@embedded
@JsonSerializable()
class Rank { class Rank {
late Id id; late int id;
late String zip; late String zip;
late String area; late String area;
late int time;
late List<Vehicle> vehicles; late List<Vehicle> vehicles;
Rank(); Rank();
+413 -309
View File
@@ -9,11 +9,402 @@ part of 'rank.dart';
// coverage:ignore-file // coverage:ignore-file
// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types // ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types
extension GetRankCollection on Isar { extension GetRankingCollection on Isar {
IsarCollection<Rank> get ranks => this.collection(); IsarCollection<Ranking> get rankings => this.collection();
} }
const RankSchema = CollectionSchema( const RankingSchema = CollectionSchema(
name: r'Ranking',
id: 923686411839286896,
properties: {
r'ranks': PropertySchema(
id: 0,
name: r'ranks',
type: IsarType.objectList,
target: r'Rank',
)
},
estimateSize: _rankingEstimateSize,
serialize: _rankingSerialize,
deserialize: _rankingDeserialize,
deserializeProp: _rankingDeserializeProp,
idName: r'id',
indexes: {},
links: {},
embeddedSchemas: {r'Rank': RankSchema, r'Vehicle': VehicleSchema},
getId: _rankingGetId,
getLinks: _rankingGetLinks,
attach: _rankingAttach,
version: '3.1.0+1',
);
int _rankingEstimateSize(
Ranking object,
List<int> offsets,
Map<Type, List<int>> allOffsets,
) {
var bytesCount = offsets.last;
bytesCount += 3 + object.ranks.length * 3;
{
final offsets = allOffsets[Rank]!;
for (var i = 0; i < object.ranks.length; i++) {
final value = object.ranks[i];
bytesCount += RankSchema.estimateSize(value, offsets, allOffsets);
}
}
return bytesCount;
}
void _rankingSerialize(
Ranking object,
IsarWriter writer,
List<int> offsets,
Map<Type, List<int>> allOffsets,
) {
writer.writeObjectList<Rank>(
offsets[0],
allOffsets,
RankSchema.serialize,
object.ranks,
);
}
Ranking _rankingDeserialize(
Id id,
IsarReader reader,
List<int> offsets,
Map<Type, List<int>> allOffsets,
) {
final object = Ranking();
object.id = id;
object.ranks = reader.readObjectList<Rank>(
offsets[0],
RankSchema.deserialize,
allOffsets,
Rank(),
) ??
[];
return object;
}
P _rankingDeserializeProp<P>(
IsarReader reader,
int propertyId,
int offset,
Map<Type, List<int>> allOffsets,
) {
switch (propertyId) {
case 0:
return (reader.readObjectList<Rank>(
offset,
RankSchema.deserialize,
allOffsets,
Rank(),
) ??
[]) as P;
default:
throw IsarError('Unknown property with id $propertyId');
}
}
Id _rankingGetId(Ranking object) {
return object.id ?? Isar.autoIncrement;
}
List<IsarLinkBase<dynamic>> _rankingGetLinks(Ranking object) {
return [];
}
void _rankingAttach(IsarCollection<dynamic> col, Id id, Ranking object) {
object.id = id;
}
extension RankingQueryWhereSort on QueryBuilder<Ranking, Ranking, QWhere> {
QueryBuilder<Ranking, Ranking, QAfterWhere> anyId() {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(const IdWhereClause.any());
});
}
}
extension RankingQueryWhere on QueryBuilder<Ranking, Ranking, QWhereClause> {
QueryBuilder<Ranking, Ranking, QAfterWhereClause> idEqualTo(Id id) {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between(
lower: id,
upper: id,
));
});
}
QueryBuilder<Ranking, Ranking, QAfterWhereClause> idNotEqualTo(Id id) {
return QueryBuilder.apply(this, (query) {
if (query.whereSort == Sort.asc) {
return query
.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: false),
)
.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: false),
);
} else {
return query
.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: false),
)
.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: false),
);
}
});
}
QueryBuilder<Ranking, Ranking, QAfterWhereClause> idGreaterThan(Id id,
{bool include = false}) {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: include),
);
});
}
QueryBuilder<Ranking, Ranking, QAfterWhereClause> idLessThan(Id id,
{bool include = false}) {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: include),
);
});
}
QueryBuilder<Ranking, Ranking, QAfterWhereClause> idBetween(
Id lowerId,
Id upperId, {
bool includeLower = true,
bool includeUpper = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between(
lower: lowerId,
includeLower: includeLower,
upper: upperId,
includeUpper: includeUpper,
));
});
}
}
extension RankingQueryFilter
on QueryBuilder<Ranking, Ranking, QFilterCondition> {
QueryBuilder<Ranking, Ranking, QAfterFilterCondition> idIsNull() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNull(
property: r'id',
));
});
}
QueryBuilder<Ranking, Ranking, QAfterFilterCondition> idIsNotNull() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNotNull(
property: r'id',
));
});
}
QueryBuilder<Ranking, Ranking, QAfterFilterCondition> idEqualTo(Id? value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'id',
value: value,
));
});
}
QueryBuilder<Ranking, Ranking, QAfterFilterCondition> idGreaterThan(
Id? value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan(
include: include,
property: r'id',
value: value,
));
});
}
QueryBuilder<Ranking, Ranking, QAfterFilterCondition> idLessThan(
Id? value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan(
include: include,
property: r'id',
value: value,
));
});
}
QueryBuilder<Ranking, Ranking, QAfterFilterCondition> idBetween(
Id? lower,
Id? upper, {
bool includeLower = true,
bool includeUpper = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between(
property: r'id',
lower: lower,
includeLower: includeLower,
upper: upper,
includeUpper: includeUpper,
));
});
}
QueryBuilder<Ranking, Ranking, QAfterFilterCondition> ranksLengthEqualTo(
int length) {
return QueryBuilder.apply(this, (query) {
return query.listLength(
r'ranks',
length,
true,
length,
true,
);
});
}
QueryBuilder<Ranking, Ranking, QAfterFilterCondition> ranksIsEmpty() {
return QueryBuilder.apply(this, (query) {
return query.listLength(
r'ranks',
0,
true,
0,
true,
);
});
}
QueryBuilder<Ranking, Ranking, QAfterFilterCondition> ranksIsNotEmpty() {
return QueryBuilder.apply(this, (query) {
return query.listLength(
r'ranks',
0,
false,
999999,
true,
);
});
}
QueryBuilder<Ranking, Ranking, QAfterFilterCondition> ranksLengthLessThan(
int length, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
return query.listLength(
r'ranks',
0,
true,
length,
include,
);
});
}
QueryBuilder<Ranking, Ranking, QAfterFilterCondition> ranksLengthGreaterThan(
int length, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
return query.listLength(
r'ranks',
length,
include,
999999,
true,
);
});
}
QueryBuilder<Ranking, Ranking, QAfterFilterCondition> ranksLengthBetween(
int lower,
int upper, {
bool includeLower = true,
bool includeUpper = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.listLength(
r'ranks',
lower,
includeLower,
upper,
includeUpper,
);
});
}
}
extension RankingQueryObject
on QueryBuilder<Ranking, Ranking, QFilterCondition> {
QueryBuilder<Ranking, Ranking, QAfterFilterCondition> ranksElement(
FilterQuery<Rank> q) {
return QueryBuilder.apply(this, (query) {
return query.object(q, r'ranks');
});
}
}
extension RankingQueryLinks
on QueryBuilder<Ranking, Ranking, QFilterCondition> {}
extension RankingQuerySortBy on QueryBuilder<Ranking, Ranking, QSortBy> {}
extension RankingQuerySortThenBy
on QueryBuilder<Ranking, Ranking, QSortThenBy> {
QueryBuilder<Ranking, Ranking, QAfterSortBy> thenById() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'id', Sort.asc);
});
}
QueryBuilder<Ranking, Ranking, QAfterSortBy> thenByIdDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'id', Sort.desc);
});
}
}
extension RankingQueryWhereDistinct
on QueryBuilder<Ranking, Ranking, QDistinct> {}
extension RankingQueryProperty
on QueryBuilder<Ranking, Ranking, QQueryProperty> {
QueryBuilder<Ranking, int, QQueryOperations> idProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'id');
});
}
QueryBuilder<Ranking, List<Rank>, QQueryOperations> ranksProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'ranks');
});
}
}
// **************************************************************************
// IsarEmbeddedGenerator
// **************************************************************************
// coverage:ignore-file
// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types
const RankSchema = Schema(
name: r'Rank', name: r'Rank',
id: 4990427334210593033, id: 4990427334210593033,
properties: { properties: {
@@ -22,9 +413,9 @@ const RankSchema = CollectionSchema(
name: r'area', name: r'area',
type: IsarType.string, type: IsarType.string,
), ),
r'time': PropertySchema( r'id': PropertySchema(
id: 1, id: 1,
name: r'time', name: r'id',
type: IsarType.long, type: IsarType.long,
), ),
r'vehicles': PropertySchema( r'vehicles': PropertySchema(
@@ -43,14 +434,6 @@ const RankSchema = CollectionSchema(
serialize: _rankSerialize, serialize: _rankSerialize,
deserialize: _rankDeserialize, deserialize: _rankDeserialize,
deserializeProp: _rankDeserializeProp, deserializeProp: _rankDeserializeProp,
idName: r'id',
indexes: {},
links: {},
embeddedSchemas: {r'Vehicle': VehicleSchema},
getId: _rankGetId,
getLinks: _rankGetLinks,
attach: _rankAttach,
version: '3.1.0+1',
); );
int _rankEstimateSize( int _rankEstimateSize(
@@ -79,7 +462,7 @@ void _rankSerialize(
Map<Type, List<int>> allOffsets, Map<Type, List<int>> allOffsets,
) { ) {
writer.writeString(offsets[0], object.area); writer.writeString(offsets[0], object.area);
writer.writeLong(offsets[1], object.time); writer.writeLong(offsets[1], object.id);
writer.writeObjectList<Vehicle>( writer.writeObjectList<Vehicle>(
offsets[2], offsets[2],
allOffsets, allOffsets,
@@ -97,8 +480,7 @@ Rank _rankDeserialize(
) { ) {
final object = Rank(); final object = Rank();
object.area = reader.readString(offsets[0]); object.area = reader.readString(offsets[0]);
object.id = id; object.id = reader.readLong(offsets[1]);
object.time = reader.readLong(offsets[1]);
object.vehicles = reader.readObjectList<Vehicle>( object.vehicles = reader.readObjectList<Vehicle>(
offsets[2], offsets[2],
VehicleSchema.deserialize, VehicleSchema.deserialize,
@@ -136,93 +518,6 @@ P _rankDeserializeProp<P>(
} }
} }
Id _rankGetId(Rank object) {
return object.id;
}
List<IsarLinkBase<dynamic>> _rankGetLinks(Rank object) {
return [];
}
void _rankAttach(IsarCollection<dynamic> col, Id id, Rank object) {
object.id = id;
}
extension RankQueryWhereSort on QueryBuilder<Rank, Rank, QWhere> {
QueryBuilder<Rank, Rank, QAfterWhere> anyId() {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(const IdWhereClause.any());
});
}
}
extension RankQueryWhere on QueryBuilder<Rank, Rank, QWhereClause> {
QueryBuilder<Rank, Rank, QAfterWhereClause> idEqualTo(Id id) {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between(
lower: id,
upper: id,
));
});
}
QueryBuilder<Rank, Rank, QAfterWhereClause> idNotEqualTo(Id id) {
return QueryBuilder.apply(this, (query) {
if (query.whereSort == Sort.asc) {
return query
.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: false),
)
.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: false),
);
} else {
return query
.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: false),
)
.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: false),
);
}
});
}
QueryBuilder<Rank, Rank, QAfterWhereClause> idGreaterThan(Id id,
{bool include = false}) {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(
IdWhereClause.greaterThan(lower: id, includeLower: include),
);
});
}
QueryBuilder<Rank, Rank, QAfterWhereClause> idLessThan(Id id,
{bool include = false}) {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(
IdWhereClause.lessThan(upper: id, includeUpper: include),
);
});
}
QueryBuilder<Rank, Rank, QAfterWhereClause> idBetween(
Id lowerId,
Id upperId, {
bool includeLower = true,
bool includeUpper = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between(
lower: lowerId,
includeLower: includeLower,
upper: upperId,
includeUpper: includeUpper,
));
});
}
}
extension RankQueryFilter on QueryBuilder<Rank, Rank, QFilterCondition> { extension RankQueryFilter on QueryBuilder<Rank, Rank, QFilterCondition> {
QueryBuilder<Rank, Rank, QAfterFilterCondition> areaEqualTo( QueryBuilder<Rank, Rank, QAfterFilterCondition> areaEqualTo(
String value, { String value, {
@@ -352,7 +647,7 @@ extension RankQueryFilter on QueryBuilder<Rank, Rank, QFilterCondition> {
}); });
} }
QueryBuilder<Rank, Rank, QAfterFilterCondition> idEqualTo(Id value) { QueryBuilder<Rank, Rank, QAfterFilterCondition> idEqualTo(int value) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo( return query.addFilterCondition(FilterCondition.equalTo(
property: r'id', property: r'id',
@@ -362,7 +657,7 @@ extension RankQueryFilter on QueryBuilder<Rank, Rank, QFilterCondition> {
} }
QueryBuilder<Rank, Rank, QAfterFilterCondition> idGreaterThan( QueryBuilder<Rank, Rank, QAfterFilterCondition> idGreaterThan(
Id value, { int value, {
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
@@ -375,7 +670,7 @@ extension RankQueryFilter on QueryBuilder<Rank, Rank, QFilterCondition> {
} }
QueryBuilder<Rank, Rank, QAfterFilterCondition> idLessThan( QueryBuilder<Rank, Rank, QAfterFilterCondition> idLessThan(
Id value, { int value, {
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
@@ -388,58 +683,6 @@ extension RankQueryFilter on QueryBuilder<Rank, Rank, QFilterCondition> {
} }
QueryBuilder<Rank, Rank, QAfterFilterCondition> idBetween( QueryBuilder<Rank, Rank, QAfterFilterCondition> idBetween(
Id lower,
Id upper, {
bool includeLower = true,
bool includeUpper = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between(
property: r'id',
lower: lower,
includeLower: includeLower,
upper: upper,
includeUpper: includeUpper,
));
});
}
QueryBuilder<Rank, Rank, QAfterFilterCondition> timeEqualTo(int value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'time',
value: value,
));
});
}
QueryBuilder<Rank, Rank, QAfterFilterCondition> timeGreaterThan(
int value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan(
include: include,
property: r'time',
value: value,
));
});
}
QueryBuilder<Rank, Rank, QAfterFilterCondition> timeLessThan(
int value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan(
include: include,
property: r'time',
value: value,
));
});
}
QueryBuilder<Rank, Rank, QAfterFilterCondition> timeBetween(
int lower, int lower,
int upper, { int upper, {
bool includeLower = true, bool includeLower = true,
@@ -447,7 +690,7 @@ extension RankQueryFilter on QueryBuilder<Rank, Rank, QFilterCondition> {
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between( return query.addFilterCondition(FilterCondition.between(
property: r'time', property: r'id',
lower: lower, lower: lower,
includeLower: includeLower, includeLower: includeLower,
upper: upper, upper: upper,
@@ -678,154 +921,6 @@ extension RankQueryObject on QueryBuilder<Rank, Rank, QFilterCondition> {
} }
} }
extension RankQueryLinks on QueryBuilder<Rank, Rank, QFilterCondition> {}
extension RankQuerySortBy on QueryBuilder<Rank, Rank, QSortBy> {
QueryBuilder<Rank, Rank, QAfterSortBy> sortByArea() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'area', Sort.asc);
});
}
QueryBuilder<Rank, Rank, QAfterSortBy> sortByAreaDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'area', Sort.desc);
});
}
QueryBuilder<Rank, Rank, QAfterSortBy> sortByTime() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'time', Sort.asc);
});
}
QueryBuilder<Rank, Rank, QAfterSortBy> sortByTimeDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'time', Sort.desc);
});
}
QueryBuilder<Rank, Rank, QAfterSortBy> sortByZip() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'zip', Sort.asc);
});
}
QueryBuilder<Rank, Rank, QAfterSortBy> sortByZipDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'zip', Sort.desc);
});
}
}
extension RankQuerySortThenBy on QueryBuilder<Rank, Rank, QSortThenBy> {
QueryBuilder<Rank, Rank, QAfterSortBy> thenByArea() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'area', Sort.asc);
});
}
QueryBuilder<Rank, Rank, QAfterSortBy> thenByAreaDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'area', Sort.desc);
});
}
QueryBuilder<Rank, Rank, QAfterSortBy> thenById() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'id', Sort.asc);
});
}
QueryBuilder<Rank, Rank, QAfterSortBy> thenByIdDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'id', Sort.desc);
});
}
QueryBuilder<Rank, Rank, QAfterSortBy> thenByTime() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'time', Sort.asc);
});
}
QueryBuilder<Rank, Rank, QAfterSortBy> thenByTimeDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'time', Sort.desc);
});
}
QueryBuilder<Rank, Rank, QAfterSortBy> thenByZip() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'zip', Sort.asc);
});
}
QueryBuilder<Rank, Rank, QAfterSortBy> thenByZipDesc() {
return QueryBuilder.apply(this, (query) {
return query.addSortBy(r'zip', Sort.desc);
});
}
}
extension RankQueryWhereDistinct on QueryBuilder<Rank, Rank, QDistinct> {
QueryBuilder<Rank, Rank, QDistinct> distinctByArea(
{bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'area', caseSensitive: caseSensitive);
});
}
QueryBuilder<Rank, Rank, QDistinct> distinctByTime() {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'time');
});
}
QueryBuilder<Rank, Rank, QDistinct> distinctByZip(
{bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) {
return query.addDistinctBy(r'zip', caseSensitive: caseSensitive);
});
}
}
extension RankQueryProperty on QueryBuilder<Rank, Rank, QQueryProperty> {
QueryBuilder<Rank, int, QQueryOperations> idProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'id');
});
}
QueryBuilder<Rank, String, QQueryOperations> areaProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'area');
});
}
QueryBuilder<Rank, int, QQueryOperations> timeProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'time');
});
}
QueryBuilder<Rank, List<Vehicle>, QQueryOperations> vehiclesProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'vehicles');
});
}
QueryBuilder<Rank, String, QQueryOperations> zipProperty() {
return QueryBuilder.apply(this, (query) {
return query.addPropertyName(r'zip');
});
}
}
// **************************************************************************
// IsarEmbeddedGenerator
// **************************************************************************
// coverage:ignore-file // coverage:ignore-file
// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types // ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types
@@ -1046,11 +1141,21 @@ extension VehicleQueryObject
// JsonSerializableGenerator // JsonSerializableGenerator
// ************************************************************************** // **************************************************************************
Ranking _$RankingFromJson(Map<String, dynamic> json) => Ranking()
..id = json['id'] as int?
..ranks = (json['ranking'] as List<dynamic>)
.map((e) => Rank.fromJson(e as Map<String, dynamic>))
.toList();
Map<String, dynamic> _$RankingToJson(Ranking instance) => <String, dynamic>{
'id': instance.id,
'ranking': instance.ranks,
};
Rank _$RankFromJson(Map<String, dynamic> json) => Rank() Rank _$RankFromJson(Map<String, dynamic> json) => Rank()
..id = json['id'] as int ..id = json['id'] as int
..zip = json['zip'] as String ..zip = json['zip'] as String
..area = json['area'] as String ..area = json['area'] as String
..time = json['time'] as int
..vehicles = (json['vehicles'] as List<dynamic>) ..vehicles = (json['vehicles'] as List<dynamic>)
.map((e) => Vehicle.fromJson(e as Map<String, dynamic>)) .map((e) => Vehicle.fromJson(e as Map<String, dynamic>))
.toList(); .toList();
@@ -1059,7 +1164,6 @@ Map<String, dynamic> _$RankToJson(Rank instance) => <String, dynamic>{
'id': instance.id, 'id': instance.id,
'zip': instance.zip, 'zip': instance.zip,
'area': instance.area, 'area': instance.area,
'time': instance.time,
'vehicles': instance.vehicles, 'vehicles': instance.vehicles,
}; };
+8 -5
View File
@@ -13,6 +13,7 @@ import 'package:stadtbote/model/job.dart';
import 'package:stadtbote/model/log_entry.dart'; import 'package:stadtbote/model/log_entry.dart';
import 'package:stadtbote/model/message.dart'; import 'package:stadtbote/model/message.dart';
import 'package:stadtbote/model/location_status.dart'; import 'package:stadtbote/model/location_status.dart';
import 'package:stadtbote/model/rank.dart';
import 'package:stadtbote/protocoll_messages/acknowledge_job.dart'; import 'package:stadtbote/protocoll_messages/acknowledge_job.dart';
import 'package:stadtbote/protocoll_messages/bootstrap_request.dart'; import 'package:stadtbote/protocoll_messages/bootstrap_request.dart';
import 'package:stadtbote/protocoll_messages/bootstrap_response_payload.dart'; import 'package:stadtbote/protocoll_messages/bootstrap_response_payload.dart';
@@ -27,6 +28,7 @@ import 'package:stadtbote/tools/message_service.dart';
import 'package:stadtbote/tools/messages/job_deleted_message.dart'; import 'package:stadtbote/tools/messages/job_deleted_message.dart';
import 'package:stadtbote/tools/messages/job_received_message.dart'; import 'package:stadtbote/tools/messages/job_received_message.dart';
import 'package:stadtbote/tools/messages/message_message.dart'; import 'package:stadtbote/tools/messages/message_message.dart';
import 'package:stadtbote/tools/messages/ranking_updated.dart';
import 'package:stadtbote/tools/messages/session_info_update.dart'; import 'package:stadtbote/tools/messages/session_info_update.dart';
import 'package:stadtbote/tools/messages/status_info_update.dart'; import 'package:stadtbote/tools/messages/status_info_update.dart';
// ignore: depend_on_referenced_packages // ignore: depend_on_referenced_packages
@@ -246,16 +248,15 @@ class MqttCore {
MessageService().publish<LocationStatusUpdate>(Constants.messageTopicLocationStatusUpdated, arguments: LocationStatusUpdate(status: locationStatus)); MessageService().publish<LocationStatusUpdate>(Constants.messageTopicLocationStatusUpdated, arguments: LocationStatusUpdate(status: locationStatus));
} }
void _rankingMessageReceived(List<dynamic> payloadData) async { void _rankingMessageReceived(payloadData) async {
/*Map<String, dynamic> rankingMap = {}; var ranking = Ranking.fromJson(payloadData);
rankingMap["ranks"] = payloadData;
var ranking = Ranking.fromJson(rankingMap);
await MyApp.isarInstance.writeTxn(() async { await MyApp.isarInstance.writeTxn(() async {
await MyApp.isarInstance.rankings.clear();
await MyApp.isarInstance.rankings.put(ranking); await MyApp.isarInstance.rankings.put(ranking);
}); });
MessageService().publish<RankingUpdated>(Constants.messageTopicRankingUpdated, arguments: RankingUpdated());*/ MessageService().publish<RankingUpdated>(Constants.messageTopicRankingUpdated, arguments: RankingUpdated());
} }
void _jobMessageReceived(payloadData) async { void _jobMessageReceived(payloadData) async {
@@ -405,6 +406,8 @@ class MqttCore {
_connectToBroker(); _connectToBroker();
} catch (ex) { } catch (ex) {
Util.logException("bootstrap failed");
_startBootstrapReconnectTimer(); _startBootstrapReconnectTimer();
} }
} }