Erweiterungen Ranking

This commit is contained in:
Sven committed 2024-02-26 15:40:22 +01:00
1 parent 972855789d
commit 9f89673751
5 files changed
+266 -509

No files matched your search

+6 -6
View File
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:isar/isar.dart'; import 'package:isar/isar.dart';
import 'package:stadtbote/content_views/utils/content_view_widget.dart'; import 'package:stadtbote/content_views/utils/content_view_widget.dart';
import 'package:stadtbote/content_views/utils/header_info.dart'; import 'package:stadtbote/content_views/utils/header_info.dart';
import 'package:stadtbote/model/ranking.dart'; import 'package:stadtbote/model/rank.dart';
import 'package:stadtbote/popups/tasks_popups/zip_popup.dart'; 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/mqtt_core.dart'; import 'package:stadtbote/tools/mqtt_core.dart';
@@ -41,14 +41,14 @@ class ApproachAreaPage extends ContentViewWidget {
} }
class _ApproachAreaPageState extends State<ApproachAreaPage> { class _ApproachAreaPageState extends State<ApproachAreaPage> {
late Ranking? _ranking; late List<Rank>? _rankings;
late bool _initCompleted = false; late bool _initCompleted = false;
@override @override
void initState() { void initState() {
Future.delayed(const Duration(seconds: 0), () async { Future.delayed(const Duration(seconds: 0), () async {
_ranking = await MyApp.isarInstance.rankings.where().findFirst(); _rankings = await MyApp.isarInstance.ranks.where().findAll();
_initCompleted = true; _initCompleted = true;
@@ -82,9 +82,9 @@ class _ApproachAreaPageState extends State<ApproachAreaPage> {
List<Widget> _fillColumns() { List<Widget> _fillColumns() {
List<Widget> columns = []; List<Widget> columns = [];
if (_ranking != null) { if (_rankings != null) {
for (int i = 0; i < _ranking!.ranks.length; i++) { for (int i = 0; i < _rankings!.length; i++) {
var rank = _ranking!.ranks[i]; var rank = _rankings![i];
List<Widget> entries = []; List<Widget> entries = [];
entries.add( entries.add(
+2 -2
View File
@@ -6,7 +6,7 @@ import 'package:isar/isar.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:stadtbote/messages/pop_content_view_message.dart'; import 'package:stadtbote/messages/pop_content_view_message.dart';
import 'package:stadtbote/model/message.dart'; import 'package:stadtbote/model/message.dart';
import 'package:stadtbote/model/ranking.dart'; import 'package:stadtbote/model/rank.dart';
import 'package:stadtbote/model/status.dart'; import 'package:stadtbote/model/status.dart';
import 'package:stadtbote/model/task_info.dart'; import 'package:stadtbote/model/task_info.dart';
import 'package:stadtbote/popups/accept_jobs_popup.dart'; import 'package:stadtbote/popups/accept_jobs_popup.dart';
@@ -34,7 +34,7 @@ Future<void> main() async {
JobSchema, JobSchema,
TaskInfoSchema, TaskInfoSchema,
MessageSchema, MessageSchema,
RankingSchema RankSchema
], directory: dir.path); ], directory: dir.path);
runZonedGuarded(() {}, (error, stackTrace) { runZonedGuarded(() {}, (error, stackTrace) {
+3 -18
View File
@@ -1,33 +1,18 @@
import 'package:isar/isar.dart'; import 'package:isar/isar.dart';
import 'package:json_annotation/json_annotation.dart'; import 'package:json_annotation/json_annotation.dart';
part 'ranking.g.dart'; part 'rank.g.dart';
@collection @collection
@JsonSerializable() @JsonSerializable()
class Ranking {
@JsonKey(name: 'id', defaultValue: 0)
late Id id = 0;
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 int id; late Id id;
late String zip; late String zip;
late String area; late String area;
late String time; late int time;
late List<Vehicle> vehicles; late List<Vehicle> vehicles;
+239 -467
View File
@@ -1,6 +1,6 @@
// GENERATED CODE - DO NOT MODIFY BY HAND // GENERATED CODE - DO NOT MODIFY BY HAND
part of 'ranking.dart'; part of 'rank.dart';
// ************************************************************************** // **************************************************************************
// IsarCollectionGenerator // IsarCollectionGenerator
@@ -9,85 +9,108 @@ part of 'ranking.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 GetRankingCollection on Isar { extension GetRankCollection on Isar {
IsarCollection<Ranking> get rankings => this.collection(); IsarCollection<Rank> get ranks => this.collection();
} }
const RankingSchema = CollectionSchema( const RankSchema = CollectionSchema(
name: r'Ranking', name: r'Rank',
id: 923686411839286896, id: 4990427334210593033,
properties: { properties: {
r'ranks': PropertySchema( r'area': PropertySchema(
id: 0, id: 0,
name: r'ranks', name: r'area',
type: IsarType.string,
),
r'time': PropertySchema(
id: 1,
name: r'time',
type: IsarType.long,
),
r'vehicles': PropertySchema(
id: 2,
name: r'vehicles',
type: IsarType.objectList, type: IsarType.objectList,
target: r'Rank', target: r'Vehicle',
),
r'zip': PropertySchema(
id: 3,
name: r'zip',
type: IsarType.string,
) )
}, },
estimateSize: _rankingEstimateSize, estimateSize: _rankEstimateSize,
serialize: _rankingSerialize, serialize: _rankSerialize,
deserialize: _rankingDeserialize, deserialize: _rankDeserialize,
deserializeProp: _rankingDeserializeProp, deserializeProp: _rankDeserializeProp,
idName: r'id', idName: r'id',
indexes: {}, indexes: {},
links: {}, links: {},
embeddedSchemas: {r'Rank': RankSchema, r'Vehicle': VehicleSchema}, embeddedSchemas: {r'Vehicle': VehicleSchema},
getId: _rankingGetId, getId: _rankGetId,
getLinks: _rankingGetLinks, getLinks: _rankGetLinks,
attach: _rankingAttach, attach: _rankAttach,
version: '3.1.0+1', version: '3.1.0+1',
); );
int _rankingEstimateSize( int _rankEstimateSize(
Ranking object, Rank object,
List<int> offsets, List<int> offsets,
Map<Type, List<int>> allOffsets, Map<Type, List<int>> allOffsets,
) { ) {
var bytesCount = offsets.last; var bytesCount = offsets.last;
bytesCount += 3 + object.ranks.length * 3; bytesCount += 3 + object.area.length * 3;
bytesCount += 3 + object.vehicles.length * 3;
{ {
final offsets = allOffsets[Rank]!; final offsets = allOffsets[Vehicle]!;
for (var i = 0; i < object.ranks.length; i++) { for (var i = 0; i < object.vehicles.length; i++) {
final value = object.ranks[i]; final value = object.vehicles[i];
bytesCount += RankSchema.estimateSize(value, offsets, allOffsets); bytesCount += VehicleSchema.estimateSize(value, offsets, allOffsets);
} }
} }
bytesCount += 3 + object.zip.length * 3;
return bytesCount; return bytesCount;
} }
void _rankingSerialize( void _rankSerialize(
Ranking object, Rank object,
IsarWriter writer, IsarWriter writer,
List<int> offsets, List<int> offsets,
Map<Type, List<int>> allOffsets, Map<Type, List<int>> allOffsets,
) { ) {
writer.writeObjectList<Rank>( writer.writeString(offsets[0], object.area);
offsets[0], writer.writeLong(offsets[1], object.time);
writer.writeObjectList<Vehicle>(
offsets[2],
allOffsets, allOffsets,
RankSchema.serialize, VehicleSchema.serialize,
object.ranks, object.vehicles,
); );
writer.writeString(offsets[3], object.zip);
} }
Ranking _rankingDeserialize( Rank _rankDeserialize(
Id id, Id id,
IsarReader reader, IsarReader reader,
List<int> offsets, List<int> offsets,
Map<Type, List<int>> allOffsets, Map<Type, List<int>> allOffsets,
) { ) {
final object = Ranking(); final object = Rank();
object.area = reader.readString(offsets[0]);
object.id = id; object.id = id;
object.ranks = reader.readObjectList<Rank>( object.time = reader.readLong(offsets[1]);
offsets[0], object.vehicles = reader.readObjectList<Vehicle>(
RankSchema.deserialize, offsets[2],
VehicleSchema.deserialize,
allOffsets, allOffsets,
Rank(), Vehicle(),
) ?? ) ??
[]; [];
object.zip = reader.readString(offsets[3]);
return object; return object;
} }
P _rankingDeserializeProp<P>( P _rankDeserializeProp<P>(
IsarReader reader, IsarReader reader,
int propertyId, int propertyId,
int offset, int offset,
@@ -95,40 +118,46 @@ P _rankingDeserializeProp<P>(
) { ) {
switch (propertyId) { switch (propertyId) {
case 0: case 0:
return (reader.readObjectList<Rank>( return (reader.readString(offset)) as P;
case 1:
return (reader.readLong(offset)) as P;
case 2:
return (reader.readObjectList<Vehicle>(
offset, offset,
RankSchema.deserialize, VehicleSchema.deserialize,
allOffsets, allOffsets,
Rank(), Vehicle(),
) ?? ) ??
[]) as P; []) as P;
case 3:
return (reader.readString(offset)) as P;
default: default:
throw IsarError('Unknown property with id $propertyId'); throw IsarError('Unknown property with id $propertyId');
} }
} }
Id _rankingGetId(Ranking object) { Id _rankGetId(Rank object) {
return object.id; return object.id;
} }
List<IsarLinkBase<dynamic>> _rankingGetLinks(Ranking object) { List<IsarLinkBase<dynamic>> _rankGetLinks(Rank object) {
return []; return [];
} }
void _rankingAttach(IsarCollection<dynamic> col, Id id, Ranking object) { void _rankAttach(IsarCollection<dynamic> col, Id id, Rank object) {
object.id = id; object.id = id;
} }
extension RankingQueryWhereSort on QueryBuilder<Ranking, Ranking, QWhere> { extension RankQueryWhereSort on QueryBuilder<Rank, Rank, QWhere> {
QueryBuilder<Ranking, Ranking, QAfterWhere> anyId() { QueryBuilder<Rank, Rank, QAfterWhere> anyId() {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause(const IdWhereClause.any()); return query.addWhereClause(const IdWhereClause.any());
}); });
} }
} }
extension RankingQueryWhere on QueryBuilder<Ranking, Ranking, QWhereClause> { extension RankQueryWhere on QueryBuilder<Rank, Rank, QWhereClause> {
QueryBuilder<Ranking, Ranking, QAfterWhereClause> idEqualTo(Id id) { QueryBuilder<Rank, Rank, QAfterWhereClause> idEqualTo(Id id) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause(IdWhereClause.between( return query.addWhereClause(IdWhereClause.between(
lower: id, lower: id,
@@ -137,7 +166,7 @@ extension RankingQueryWhere on QueryBuilder<Ranking, Ranking, QWhereClause> {
}); });
} }
QueryBuilder<Ranking, Ranking, QAfterWhereClause> idNotEqualTo(Id id) { QueryBuilder<Rank, Rank, QAfterWhereClause> idNotEqualTo(Id id) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
if (query.whereSort == Sort.asc) { if (query.whereSort == Sort.asc) {
return query return query
@@ -159,7 +188,7 @@ extension RankingQueryWhere on QueryBuilder<Ranking, Ranking, QWhereClause> {
}); });
} }
QueryBuilder<Ranking, Ranking, QAfterWhereClause> idGreaterThan(Id id, QueryBuilder<Rank, Rank, QAfterWhereClause> idGreaterThan(Id id,
{bool include = false}) { {bool include = false}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(
@@ -168,7 +197,7 @@ extension RankingQueryWhere on QueryBuilder<Ranking, Ranking, QWhereClause> {
}); });
} }
QueryBuilder<Ranking, Ranking, QAfterWhereClause> idLessThan(Id id, QueryBuilder<Rank, Rank, QAfterWhereClause> idLessThan(Id id,
{bool include = false}) { {bool include = false}) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
return query.addWhereClause( return query.addWhereClause(
@@ -177,7 +206,7 @@ extension RankingQueryWhere on QueryBuilder<Ranking, Ranking, QWhereClause> {
}); });
} }
QueryBuilder<Ranking, Ranking, QAfterWhereClause> idBetween( QueryBuilder<Rank, Rank, QAfterWhereClause> idBetween(
Id lowerId, Id lowerId,
Id upperId, { Id upperId, {
bool includeLower = true, bool includeLower = true,
@@ -194,324 +223,6 @@ extension RankingQueryWhere on QueryBuilder<Ranking, Ranking, QWhereClause> {
} }
} }
extension RankingQueryFilter
on QueryBuilder<Ranking, Ranking, QFilterCondition> {
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',
id: 4990427334210593033,
properties: {
r'area': PropertySchema(
id: 0,
name: r'area',
type: IsarType.string,
),
r'id': PropertySchema(
id: 1,
name: r'id',
type: IsarType.long,
),
r'time': PropertySchema(
id: 2,
name: r'time',
type: IsarType.string,
),
r'vehicles': PropertySchema(
id: 3,
name: r'vehicles',
type: IsarType.objectList,
target: r'Vehicle',
),
r'zip': PropertySchema(
id: 4,
name: r'zip',
type: IsarType.string,
)
},
estimateSize: _rankEstimateSize,
serialize: _rankSerialize,
deserialize: _rankDeserialize,
deserializeProp: _rankDeserializeProp,
);
int _rankEstimateSize(
Rank object,
List<int> offsets,
Map<Type, List<int>> allOffsets,
) {
var bytesCount = offsets.last;
bytesCount += 3 + object.area.length * 3;
bytesCount += 3 + object.time.length * 3;
bytesCount += 3 + object.vehicles.length * 3;
{
final offsets = allOffsets[Vehicle]!;
for (var i = 0; i < object.vehicles.length; i++) {
final value = object.vehicles[i];
bytesCount += VehicleSchema.estimateSize(value, offsets, allOffsets);
}
}
bytesCount += 3 + object.zip.length * 3;
return bytesCount;
}
void _rankSerialize(
Rank object,
IsarWriter writer,
List<int> offsets,
Map<Type, List<int>> allOffsets,
) {
writer.writeString(offsets[0], object.area);
writer.writeLong(offsets[1], object.id);
writer.writeString(offsets[2], object.time);
writer.writeObjectList<Vehicle>(
offsets[3],
allOffsets,
VehicleSchema.serialize,
object.vehicles,
);
writer.writeString(offsets[4], object.zip);
}
Rank _rankDeserialize(
Id id,
IsarReader reader,
List<int> offsets,
Map<Type, List<int>> allOffsets,
) {
final object = Rank();
object.area = reader.readString(offsets[0]);
object.id = reader.readLong(offsets[1]);
object.time = reader.readString(offsets[2]);
object.vehicles = reader.readObjectList<Vehicle>(
offsets[3],
VehicleSchema.deserialize,
allOffsets,
Vehicle(),
) ??
[];
object.zip = reader.readString(offsets[4]);
return object;
}
P _rankDeserializeProp<P>(
IsarReader reader,
int propertyId,
int offset,
Map<Type, List<int>> allOffsets,
) {
switch (propertyId) {
case 0:
return (reader.readString(offset)) as P;
case 1:
return (reader.readLong(offset)) as P;
case 2:
return (reader.readString(offset)) as P;
case 3:
return (reader.readObjectList<Vehicle>(
offset,
VehicleSchema.deserialize,
allOffsets,
Vehicle(),
) ??
[]) as P;
case 4:
return (reader.readString(offset)) as P;
default:
throw IsarError('Unknown property with id $propertyId');
}
}
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, {
@@ -641,7 +352,7 @@ extension RankQueryFilter on QueryBuilder<Rank, Rank, QFilterCondition> {
}); });
} }
QueryBuilder<Rank, Rank, QAfterFilterCondition> idEqualTo(int value) { QueryBuilder<Rank, Rank, QAfterFilterCondition> idEqualTo(Id 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',
@@ -651,7 +362,7 @@ extension RankQueryFilter on QueryBuilder<Rank, Rank, QFilterCondition> {
} }
QueryBuilder<Rank, Rank, QAfterFilterCondition> idGreaterThan( QueryBuilder<Rank, Rank, QAfterFilterCondition> idGreaterThan(
int value, { Id value, {
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
@@ -664,7 +375,7 @@ extension RankQueryFilter on QueryBuilder<Rank, Rank, QFilterCondition> {
} }
QueryBuilder<Rank, Rank, QAfterFilterCondition> idLessThan( QueryBuilder<Rank, Rank, QAfterFilterCondition> idLessThan(
int value, { Id value, {
bool include = false, bool include = false,
}) { }) {
return QueryBuilder.apply(this, (query) { return QueryBuilder.apply(this, (query) {
@@ -677,8 +388,8 @@ extension RankQueryFilter on QueryBuilder<Rank, Rank, QFilterCondition> {
} }
QueryBuilder<Rank, Rank, QAfterFilterCondition> idBetween( QueryBuilder<Rank, Rank, QAfterFilterCondition> idBetween(
int lower, Id lower,
int upper, { Id upper, {
bool includeLower = true, bool includeLower = true,
bool includeUpper = true, bool includeUpper = true,
}) { }) {
@@ -693,55 +404,46 @@ extension RankQueryFilter on QueryBuilder<Rank, Rank, QFilterCondition> {
}); });
} }
QueryBuilder<Rank, Rank, QAfterFilterCondition> timeEqualTo( QueryBuilder<Rank, Rank, QAfterFilterCondition> timeEqualTo(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'time', property: r'time',
value: value, value: value,
caseSensitive: caseSensitive,
)); ));
}); });
} }
QueryBuilder<Rank, Rank, QAfterFilterCondition> timeGreaterThan( QueryBuilder<Rank, Rank, QAfterFilterCondition> timeGreaterThan(
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'time', property: r'time',
value: value, value: value,
caseSensitive: caseSensitive,
)); ));
}); });
} }
QueryBuilder<Rank, Rank, QAfterFilterCondition> timeLessThan( QueryBuilder<Rank, Rank, QAfterFilterCondition> timeLessThan(
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'time', property: r'time',
value: value, value: value,
caseSensitive: caseSensitive,
)); ));
}); });
} }
QueryBuilder<Rank, Rank, QAfterFilterCondition> timeBetween( QueryBuilder<Rank, Rank, QAfterFilterCondition> timeBetween(
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(
@@ -750,73 +452,6 @@ extension RankQueryFilter on QueryBuilder<Rank, Rank, QFilterCondition> {
includeLower: includeLower, includeLower: includeLower,
upper: upper, upper: upper,
includeUpper: includeUpper, includeUpper: includeUpper,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<Rank, Rank, QAfterFilterCondition> timeStartsWith(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.startsWith(
property: r'time',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<Rank, Rank, QAfterFilterCondition> timeEndsWith(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.endsWith(
property: r'time',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<Rank, Rank, QAfterFilterCondition> timeContains(String value,
{bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.contains(
property: r'time',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<Rank, Rank, QAfterFilterCondition> timeMatches(String pattern,
{bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.matches(
property: r'time',
wildcard: pattern,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<Rank, Rank, QAfterFilterCondition> timeIsEmpty() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'time',
value: '',
));
});
}
QueryBuilder<Rank, Rank, QAfterFilterCondition> timeIsNotEmpty() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan(
property: r'time',
value: '',
)); ));
}); });
} }
@@ -1043,6 +678,154 @@ 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
@@ -1263,22 +1046,11 @@ extension VehicleQueryObject
// JsonSerializableGenerator // JsonSerializableGenerator
// ************************************************************************** // **************************************************************************
Ranking _$RankingFromJson(Map<String, dynamic> json) => Ranking()
..id = json['id'] as int? ?? 0
..ranks = (json['ranks'] as List<dynamic>)
.map((e) => Rank.fromJson(e as Map<String, dynamic>))
.toList();
Map<String, dynamic> _$RankingToJson(Ranking instance) => <String, dynamic>{
'id': instance.id,
'ranks': 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 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();
+16 -16
View File
@@ -6,7 +6,7 @@ import 'package:flutter/services.dart';
import 'package:isar/isar.dart'; import 'package:isar/isar.dart';
import 'package:mqtt_client/mqtt_client.dart'; import 'package:mqtt_client/mqtt_client.dart';
import 'package:mqtt_client/mqtt_server_client.dart'; import 'package:mqtt_client/mqtt_server_client.dart';
import 'package:stadtbote/model/ranking.dart'; import 'package:stadtbote/model/rank.dart';
import 'package:stadtbote/model/status.dart'; import 'package:stadtbote/model/status.dart';
import 'package:stadtbote/protocoll_messages/bootstrap_response_payload.dart'; import 'package:stadtbote/protocoll_messages/bootstrap_response_payload.dart';
import 'package:stadtbote/model/job.dart'; import 'package:stadtbote/model/job.dart';
@@ -172,31 +172,29 @@ class MqttCore {
var topicArray = topic!.split('/'); var topicArray = topic!.split('/');
var messageType = topicArray[topicArray.length - 1]; var messageType = topicArray[topicArray.length - 1];
Map<String, dynamic> messageData = jsonDecode(payload);
switch(messageType) { switch(messageType) {
case 'session': case 'session':
_sessionMessageReceived(messageData); _sessionMessageReceived(jsonDecode(payload));
break; break;
case 'status': case 'status':
_statusMessageReceived(messageData); _statusMessageReceived(jsonDecode(payload));
break; break;
case 'ranks': case 'ranking':
//_rankingMessageReceived(payloadData); _rankingMessageReceived(jsonDecode(payload));
break; break;
case 'job': case 'job':
_jobMessageReceived(messageData); _jobMessageReceived(jsonDecode(payload));
break; break;
case 'job_del': case 'job_del':
_jobDeleteReceived(messageData); _jobDeleteReceived(jsonDecode(payload));
break; break;
case 'sync_request': case 'sync_request':
_syncRequestReceived(messageData); _syncRequestReceived(jsonDecode(payload));
break; break;
case "mssg": case "mssg":
@@ -216,6 +214,7 @@ class MqttCore {
_mqttClient.subscribe(_fromServerTopic + "/status", MqttQos.exactlyOnce); _mqttClient.subscribe(_fromServerTopic + "/status", MqttQos.exactlyOnce);
_mqttClient.subscribe(_fromServerTopic + "/job", MqttQos.exactlyOnce); _mqttClient.subscribe(_fromServerTopic + "/job", MqttQos.exactlyOnce);
_mqttClient.subscribe(_fromServerTopic + "/job_del", MqttQos.exactlyOnce); _mqttClient.subscribe(_fromServerTopic + "/job_del", MqttQos.exactlyOnce);
_mqttClient.subscribe(_fromServerTopic + "/ranking", MqttQos.exactlyOnce);
Util.logInfo('subscribed to topic: $_fromServerTopic'); Util.logInfo('subscribed to topic: $_fromServerTopic');
MessageService().publish<ConnectionStatus>(Constants.messageTopicConnectionStatusChanged, arguments: ConnectionStatus(status: ConnectionStatusEnum.connected)); MessageService().publish<ConnectionStatus>(Constants.messageTopicConnectionStatusChanged, arguments: ConnectionStatus(status: ConnectionStatusEnum.connected));
@@ -250,13 +249,14 @@ class MqttCore {
} }
void _rankingMessageReceived(List<dynamic> payloadData) async { void _rankingMessageReceived(List<dynamic> payloadData) async {
Map<String, dynamic> rankingMap = {}; for (var entry in payloadData) {
rankingMap["ranks"] = payloadData; var rank = Rank.fromJson(entry);
var ranking = Ranking.fromJson(rankingMap);
await MyApp.isarInstance.writeTxn(() async {
await MyApp.isarInstance.ranks.put(rank);
});
}
await MyApp.isarInstance.writeTxn(() async {
await MyApp.isarInstance.rankings.put(ranking);
});
MessageService().publish<RankingUpdated>(Constants.messageTopicRankingUpdated, arguments: RankingUpdated()); MessageService().publish<RankingUpdated>(Constants.messageTopicRankingUpdated, arguments: RankingUpdated());
} }