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