Erweiterungen

This commit is contained in:
Sven committed 2024-02-14 11:21:22 +01:00
1 parent 31fe4c5a06
commit 98581c9a39
13 files changed
+2789 -993

No files matched your search

+160 -16
View File
@@ -1,9 +1,20 @@
import 'package:flutter/material.dart'; 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/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/popups/tasks_popups/zip_popup.dart';
import 'package:stadtbote/protocoll_messages/zip_message.dart';
import 'package:stadtbote/tools/mqtt_core.dart';
import '../main.dart';
import '../tools/util.dart'; import '../tools/util.dart';
enum ModeEnum {
set,
request
}
class ApproachAreaPage extends ContentViewWidget { class ApproachAreaPage extends ContentViewWidget {
const ApproachAreaPage({super.key}); const ApproachAreaPage({super.key});
@@ -14,7 +25,7 @@ class ApproachAreaPage extends ContentViewWidget {
Future<HeaderInfo> getHeaderInfo(BuildContext context) async { Future<HeaderInfo> getHeaderInfo(BuildContext context) async {
return HeaderInfo( return HeaderInfo(
titleWidget: const Text( titleWidget: const Text(
'Angenommene Aufträge', 'Anfahrtsbereich',
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 20.0, fontSize: 20.0,
@@ -30,14 +41,14 @@ class ApproachAreaPage extends ContentViewWidget {
} }
class _ApproachAreaPageState extends State<ApproachAreaPage> { class _ApproachAreaPageState extends State<ApproachAreaPage> {
//late List<Job> _jobs; late Ranking? _ranking;
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 {
//_jobs = await MyApp.isarInstance.jobs.filter().stateEqualTo(1).findAll(); _ranking = await MyApp.isarInstance.rankings.where().findFirst();
_initCompleted = true; _initCompleted = true;
@@ -53,25 +64,158 @@ class _ApproachAreaPageState extends State<ApproachAreaPage> {
return Util.getWaitWidget(context); return Util.getWaitWidget(context);
} }
return const SingleChildScrollView( return Padding(
padding: const EdgeInsets.all(8.0),
child: InteractiveViewer(
alignment: Alignment.topCenter,
child: SingleChildScrollView(
scrollDirection: Axis.vertical, scrollDirection: Axis.vertical,
child: SingleChildScrollView( child: SingleChildScrollView(
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
child: Row( child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: _fillColumns()),
children: [ ),
SizedBox(width: 80, child: Text('Row 1')),
SizedBox(width: 80, child: Text('Row 2')),
SizedBox(width: 80, child: Text('Row 3')),
SizedBox(width: 80, child: Text('Row 4')),
SizedBox(width: 80, child: Text('Row 5')),
SizedBox(width: 80, child: Text('Row 6')),
],
), ),
), ),
); );
} }
/*void _clicked(Job job) { List<Widget> _fillColumns() {
MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: TourListPage(job: job)); List<Widget> columns = [];
}*/
if (_ranking != null) {
for (int i = 0; i < _ranking!.ranks.length; i++) {
var rank = _ranking!.ranks[i];
List<Widget> entries = [];
entries.add(
GestureDetector(
onTap: ()=> {
if (i == 0) {
showZipPopup(context, 'ACHTUNG: Wenn Sie Ihre PLZ ändern, verlieren Sie Ihr Ranking!\n', 'Freimelden', (zip) => {_sendZip(rank, zip, ModeEnum.set)}),
} else {
showZipPopup(context, 'ACHTUNG: Wenn Sie Ihre PLZ ändern, verlieren Sie Ihr Ranking!\n', 'OK', (zip) => {_sendZip(rank, zip, ModeEnum.request)}),
} }
},
child: Container(
padding: const EdgeInsets.all(4),
margin: const EdgeInsets.all(2),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: i == 0 ? Colors.lightGreen : Colors.white,
border: Border.all(
color: Colors.grey,
width: 0.5,
),
),
width: 85,
height: 60,
child: Column(children: [
Text(
rank.zip,
style: const TextStyle(fontSize: 20),
),
Text(
rank.area,
)
]
)
),
),
);
for (int j = 0; j < rank.vehicles.length; j++) {
var vehicle = rank.vehicles[j];
var imageFilename = vehicle.self == true ? "assets/mein_${mapVehicleTypeToImageName(vehicle.type)}" : "assets/${mapVehicleTypeToImageName(vehicle.type)}";
entries.add(Container(
padding: const EdgeInsets.all(4),
margin: const EdgeInsets.all(2),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Colors.white,
border: Border.all(
color: Colors.grey,
width: 0.5,
),
),
width: 80,
height: 60,
child: Column(
children: [
Image.asset(imageFilename, width: 30, height: 30),
const SizedBox(width: 10),
Text(
mapVehicleTypeToText(vehicle.type)
),
],
),
));
}
columns.add(Align(
alignment: Alignment.topLeft,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: entries,
),
));
}
}
return columns;
}
_sendZip(Rank rank, String zip, ModeEnum mode) {
var zipMessage = ZipMessage();
if (mode == ModeEnum.set) {
var position = MyApp.currentPosition;
zipMessage.setPos = ZipSetPos();
zipMessage.setPos!.zip = zip;
if (position != null) {
zipMessage.setPos!.track = ZipTrack();
zipMessage.setPos!.track.time = DateTime.now().toIso8601String();
zipMessage.setPos!.track.pos = ZipTrackPos();
zipMessage.setPos!.track.pos!.lat = position.latitude;
zipMessage.setPos!.track.pos!.long = position.longitude;
zipMessage.setPos!.track.pos!.acc = position.accuracy.toInt();
}
} else {
zipMessage.reqZip = ZipReqZip();
zipMessage.reqZip!.id = rank.id;
zipMessage.reqZip!.zip = zip;
}
MqttCore.instance.publishPayloadMessage("rank", zipMessage.toJson());
}
}
/*
private void SendMessage(int columnNumber, string zipNumber)
{
var payloadObject = new JObject();
if (columnNumber == 0)
{
var setPosObject = new JObject();
payloadObject.Add(new JProperty("set_pos", setPosObject));
setPosObject.Add(new JProperty("zip", zipNumber));
setPosObject.Add(new JProperty("track", CreateTrackObject()));
}
else
{
var regZipObject = new JObject();
payloadObject.Add(new JProperty("reg_zip", regZipObject));
regZipObject.Add(new JProperty("id", columnNumber));
regZipObject.Add(new JProperty("zip", zipNumber));
}
var json = payloadObject.ToString();
App.Core.SendJsonMessageAsync("rank", payloadObject);
}
*/
+1 -1
View File
@@ -259,7 +259,7 @@ class _MainPageState extends State<MainPage> {
widget.sidValueNotifier.value = sessionStatusInfoUpdateMessage.status.sid; widget.sidValueNotifier.value = sessionStatusInfoUpdateMessage.status.sid;
}); });
MessageService().subscribe<StatusInfoUpdate>(Constants.messageTopicStatusInfoUpdate, this, (statusInfoUpdateMessage) { MessageService().subscribe<StatusInfoUpdate>(Constants.messageTopicStatusInfoUpdated, this, (statusInfoUpdateMessage) {
_updateHeader(); _updateHeader();
}); });
+2
View File
@@ -6,6 +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/PopContentViewMessage.dart'; import 'package:stadtbote/messages/PopContentViewMessage.dart';
import 'package:stadtbote/model/message.dart'; import 'package:stadtbote/model/message.dart';
import 'package:stadtbote/model/ranking.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';
@@ -33,6 +34,7 @@ Future<void> main() async {
JobSchema, JobSchema,
TaskInfoSchema, TaskInfoSchema,
MessageSchema, MessageSchema,
RankingSchema
], directory: dir.path); ], directory: dir.path);
runZonedGuarded(() {}, (error, stackTrace) { runZonedGuarded(() {}, (error, stackTrace) {
+56
View File
@@ -0,0 +1,56 @@
import 'package:isar/isar.dart';
import 'package:json_annotation/json_annotation.dart';
part 'ranking.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 String zip;
late String area;
late String time;
late List<Vehicle> vehicles;
Rank();
factory Rank.fromJson(Map<String, dynamic> json) => _$RankFromJson(json);
Map<String, dynamic> toJson() => _$RankToJson(this);
}
@embedded
@JsonSerializable()
class Vehicle {
late int id;
late int type;
@JsonKey(name: 'self', defaultValue: false)
late bool? self;
Vehicle();
factory Vehicle.fromJson(Map<String, dynamic> json) => _$VehicleFromJson(json);
Map<String, dynamic> toJson() => _$VehicleToJson(this);
}
File diff suppressed because it is too large. Load diff
+53
View File
@@ -0,0 +1,53 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:stadtbote/model/task_info.dart';
import 'package:stadtbote/tools/util.dart';
showZipPopup(BuildContext context, String text, String buttonText, Function(String) onFinished) async {
await showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
contentPadding: EdgeInsets.zero,
shadowColor: Colors.transparent,
backgroundColor: Colors.white,
content: StatefulBuilder(builder: (BuildContext context, StateSetter setState) {
TextEditingController textEditingController = TextEditingController();
return SizedBox(
key: GlobalKey(),
height: 280,
width: MediaQuery.of(context).size.width * 0.8,
child: Container(
height: 100,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Colors.white,
border: Border.all(
color: Colors.grey,
width: 0.5,
),
),
child: Padding(
padding: const EdgeInsets.all(35.0),
child: Column(
children: [
Text(text, style: TextStyle(fontWeight: FontWeight.bold)),
const SizedBox(height: 20),
Util.getDefaultTextField('Postleitzahl',
type: TextInputType.text,
formatter: [FilteringTextInputFormatter.singleLineFormatter],
controller: textEditingController,
autofocus: true),
const SizedBox(height: 20),
getDefaultButton(buttonText, () => {
Navigator.of(context).pop(),
onFinished(textEditingController.text)})
],
),
),
));
}));
});
}
@@ -2,973 +2,6 @@
part of 'fin_tour_message.dart'; part of 'fin_tour_message.dart';
// **************************************************************************
// 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 FinTourTaskSchema = Schema(
name: r'FinTourTask',
id: 8687341112458224246,
properties: {
r'code': PropertySchema(
id: 0,
name: r'code',
type: IsarType.long,
),
r'codes': PropertySchema(
id: 1,
name: r'codes',
type: IsarType.stringList,
),
r'pos': PropertySchema(
id: 2,
name: r'pos',
type: IsarType.object,
target: r'FinTaskPos',
),
r'sId': PropertySchema(
id: 3,
name: r'sId',
type: IsarType.long,
),
r'sign': PropertySchema(
id: 4,
name: r'sign',
type: IsarType.string,
),
r'time': PropertySchema(
id: 5,
name: r'time',
type: IsarType.string,
),
r'val': PropertySchema(
id: 6,
name: r'val',
type: IsarType.string,
)
},
estimateSize: _finTourTaskEstimateSize,
serialize: _finTourTaskSerialize,
deserialize: _finTourTaskDeserialize,
deserializeProp: _finTourTaskDeserializeProp,
);
int _finTourTaskEstimateSize(
FinTourTask object,
List<int> offsets,
Map<Type, List<int>> allOffsets,
) {
var bytesCount = offsets.last;
{
final list = object.codes;
if (list != null) {
bytesCount += 3 + list.length * 3;
{
for (var i = 0; i < list.length; i++) {
final value = list[i];
bytesCount += value.length * 3;
}
}
}
}
bytesCount += 3 +
FinTaskPosSchema.estimateSize(
object.pos, allOffsets[FinTaskPos]!, allOffsets);
{
final value = object.sign;
if (value != null) {
bytesCount += 3 + value.length * 3;
}
}
bytesCount += 3 + object.time.length * 3;
{
final value = object.val;
if (value != null) {
bytesCount += 3 + value.length * 3;
}
}
return bytesCount;
}
void _finTourTaskSerialize(
FinTourTask object,
IsarWriter writer,
List<int> offsets,
Map<Type, List<int>> allOffsets,
) {
writer.writeLong(offsets[0], object.code);
writer.writeStringList(offsets[1], object.codes);
writer.writeObject<FinTaskPos>(
offsets[2],
allOffsets,
FinTaskPosSchema.serialize,
object.pos,
);
writer.writeLong(offsets[3], object.sId);
writer.writeString(offsets[4], object.sign);
writer.writeString(offsets[5], object.time);
writer.writeString(offsets[6], object.val);
}
FinTourTask _finTourTaskDeserialize(
Id id,
IsarReader reader,
List<int> offsets,
Map<Type, List<int>> allOffsets,
) {
final object = FinTourTask();
object.code = reader.readLongOrNull(offsets[0]);
object.codes = reader.readStringList(offsets[1]);
object.pos = reader.readObjectOrNull<FinTaskPos>(
offsets[2],
FinTaskPosSchema.deserialize,
allOffsets,
) ??
FinTaskPos();
object.sId = reader.readLong(offsets[3]);
object.sign = reader.readStringOrNull(offsets[4]);
object.time = reader.readString(offsets[5]);
object.val = reader.readStringOrNull(offsets[6]);
return object;
}
P _finTourTaskDeserializeProp<P>(
IsarReader reader,
int propertyId,
int offset,
Map<Type, List<int>> allOffsets,
) {
switch (propertyId) {
case 0:
return (reader.readLongOrNull(offset)) as P;
case 1:
return (reader.readStringList(offset)) as P;
case 2:
return (reader.readObjectOrNull<FinTaskPos>(
offset,
FinTaskPosSchema.deserialize,
allOffsets,
) ??
FinTaskPos()) as P;
case 3:
return (reader.readLong(offset)) as P;
case 4:
return (reader.readStringOrNull(offset)) as P;
case 5:
return (reader.readString(offset)) as P;
case 6:
return (reader.readStringOrNull(offset)) as P;
default:
throw IsarError('Unknown property with id $propertyId');
}
}
extension FinTourTaskQueryFilter
on QueryBuilder<FinTourTask, FinTourTask, QFilterCondition> {
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> codeIsNull() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNull(
property: r'code',
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
codeIsNotNull() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNotNull(
property: r'code',
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> codeEqualTo(
int? value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'code',
value: value,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> codeGreaterThan(
int? value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan(
include: include,
property: r'code',
value: value,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> codeLessThan(
int? value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan(
include: include,
property: r'code',
value: value,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> codeBetween(
int? lower,
int? upper, {
bool includeLower = true,
bool includeUpper = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between(
property: r'code',
lower: lower,
includeLower: includeLower,
upper: upper,
includeUpper: includeUpper,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> codesIsNull() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNull(
property: r'codes',
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
codesIsNotNull() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNotNull(
property: r'codes',
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
codesElementEqualTo(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'codes',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
codesElementGreaterThan(
String value, {
bool include = false,
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan(
include: include,
property: r'codes',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
codesElementLessThan(
String value, {
bool include = false,
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan(
include: include,
property: r'codes',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
codesElementBetween(
String lower,
String upper, {
bool includeLower = true,
bool includeUpper = true,
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between(
property: r'codes',
lower: lower,
includeLower: includeLower,
upper: upper,
includeUpper: includeUpper,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
codesElementStartsWith(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.startsWith(
property: r'codes',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
codesElementEndsWith(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.endsWith(
property: r'codes',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
codesElementContains(String value, {bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.contains(
property: r'codes',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
codesElementMatches(String pattern, {bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.matches(
property: r'codes',
wildcard: pattern,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
codesElementIsEmpty() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'codes',
value: '',
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
codesElementIsNotEmpty() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan(
property: r'codes',
value: '',
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
codesLengthEqualTo(int length) {
return QueryBuilder.apply(this, (query) {
return query.listLength(
r'codes',
length,
true,
length,
true,
);
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> codesIsEmpty() {
return QueryBuilder.apply(this, (query) {
return query.listLength(
r'codes',
0,
true,
0,
true,
);
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
codesIsNotEmpty() {
return QueryBuilder.apply(this, (query) {
return query.listLength(
r'codes',
0,
false,
999999,
true,
);
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
codesLengthLessThan(
int length, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
return query.listLength(
r'codes',
0,
true,
length,
include,
);
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
codesLengthGreaterThan(
int length, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
return query.listLength(
r'codes',
length,
include,
999999,
true,
);
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
codesLengthBetween(
int lower,
int upper, {
bool includeLower = true,
bool includeUpper = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.listLength(
r'codes',
lower,
includeLower,
upper,
includeUpper,
);
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> sIdEqualTo(
int value) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'sId',
value: value,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> sIdGreaterThan(
int value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan(
include: include,
property: r'sId',
value: value,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> sIdLessThan(
int value, {
bool include = false,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan(
include: include,
property: r'sId',
value: value,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> sIdBetween(
int lower,
int upper, {
bool includeLower = true,
bool includeUpper = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between(
property: r'sId',
lower: lower,
includeLower: includeLower,
upper: upper,
includeUpper: includeUpper,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> signIsNull() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNull(
property: r'sign',
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
signIsNotNull() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNotNull(
property: r'sign',
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> signEqualTo(
String? value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'sign',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> signGreaterThan(
String? value, {
bool include = false,
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan(
include: include,
property: r'sign',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> signLessThan(
String? value, {
bool include = false,
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan(
include: include,
property: r'sign',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> signBetween(
String? lower,
String? upper, {
bool includeLower = true,
bool includeUpper = true,
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between(
property: r'sign',
lower: lower,
includeLower: includeLower,
upper: upper,
includeUpper: includeUpper,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> signStartsWith(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.startsWith(
property: r'sign',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> signEndsWith(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.endsWith(
property: r'sign',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> signContains(
String value,
{bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.contains(
property: r'sign',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> signMatches(
String pattern,
{bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.matches(
property: r'sign',
wildcard: pattern,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> signIsEmpty() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'sign',
value: '',
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
signIsNotEmpty() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan(
property: r'sign',
value: '',
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> timeEqualTo(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'time',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> timeGreaterThan(
String 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<FinTourTask, FinTourTask, QAfterFilterCondition> timeLessThan(
String 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<FinTourTask, FinTourTask, QAfterFilterCondition> timeBetween(
String lower,
String upper, {
bool includeLower = true,
bool includeUpper = true,
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between(
property: r'time',
lower: lower,
includeLower: includeLower,
upper: upper,
includeUpper: includeUpper,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, 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<FinTourTask, FinTourTask, 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<FinTourTask, FinTourTask, 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<FinTourTask, FinTourTask, 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<FinTourTask, FinTourTask, QAfterFilterCondition> timeIsEmpty() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'time',
value: '',
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
timeIsNotEmpty() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan(
property: r'time',
value: '',
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> valIsNull() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNull(
property: r'val',
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> valIsNotNull() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(const FilterCondition.isNotNull(
property: r'val',
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> valEqualTo(
String? value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'val',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> valGreaterThan(
String? value, {
bool include = false,
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan(
include: include,
property: r'val',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> valLessThan(
String? value, {
bool include = false,
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.lessThan(
include: include,
property: r'val',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> valBetween(
String? lower,
String? upper, {
bool includeLower = true,
bool includeUpper = true,
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.between(
property: r'val',
lower: lower,
includeLower: includeLower,
upper: upper,
includeUpper: includeUpper,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> valStartsWith(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.startsWith(
property: r'val',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> valEndsWith(
String value, {
bool caseSensitive = true,
}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.endsWith(
property: r'val',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> valContains(
String value,
{bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.contains(
property: r'val',
value: value,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> valMatches(
String pattern,
{bool caseSensitive = true}) {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.matches(
property: r'val',
wildcard: pattern,
caseSensitive: caseSensitive,
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> valIsEmpty() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.equalTo(
property: r'val',
value: '',
));
});
}
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition>
valIsNotEmpty() {
return QueryBuilder.apply(this, (query) {
return query.addFilterCondition(FilterCondition.greaterThan(
property: r'val',
value: '',
));
});
}
}
extension FinTourTaskQueryObject
on QueryBuilder<FinTourTask, FinTourTask, QFilterCondition> {
QueryBuilder<FinTourTask, FinTourTask, QAfterFilterCondition> pos(
FilterQuery<FinTaskPos> q) {
return QueryBuilder.apply(this, (query) {
return query.object(q, r'pos');
});
}
}
// ************************************************************************** // **************************************************************************
// JsonSerializableGenerator // JsonSerializableGenerator
// ************************************************************************** // **************************************************************************
+120
View File
@@ -0,0 +1,120 @@
import 'package:isar/isar.dart';
import 'package:json_annotation/json_annotation.dart';
part 'zip_message.g.dart';
/*
{
"recv": "rank",
"payload": {
"set_pos": {
"zip": "22525",
"track": {
"time": "2021-03-01T12:55:51Z",
"pos":
{
"lat": 53.595121,
"long": 9.907433,
"acc": 35
}
}
},
"reg_zip": {
"id": 2,
"zip": "22039"
}
}
}
*/
@JsonSerializable()
class ZipMessage {
@JsonKey(name: "set_pos")
ZipSetPos? setPos;
@JsonKey(name: "req_zip")
ZipReqZip? reqZip;
ZipMessage();
factory ZipMessage.fromJson(Map<String, dynamic> json) => _$ZipMessageFromJson(json);
Map<String, dynamic> toJson() => _$ZipMessageToJson(this);
}
@embedded
@JsonSerializable()
class ZipReqZip {
late int id;
late String zip;
ZipReqZip();
factory ZipReqZip.fromJson(Map<String, dynamic> json) => _$ZipReqZipFromJson(json);
Map<String, dynamic> toJson() => _$ZipReqZipToJson(this);
}
@embedded
@JsonSerializable()
class ZipSetPos {
late String zip;
late ZipTrack track;
ZipSetPos();
factory ZipSetPos.fromJson(Map<String, dynamic> json) => _$ZipSetPosFromJson(json);
Map<String, dynamic> toJson() => _$ZipSetPosToJson(this);
}
@embedded
@JsonSerializable()
class ZipTrack {
late String time;
late ZipTrackPos? pos;
ZipTrack();
factory ZipTrack.fromJson(Map<String, dynamic> json) => _$ZipTrackFromJson(json);
Map<String, dynamic> toJson() => _$ZipTrackToJson(this);
}
@embedded
@JsonSerializable()
class ZipTrackPos {
late double lat;
late double long;
late int acc;
ZipTrackPos();
factory ZipTrackPos.fromJson(Map<String, dynamic> json) => _$ZipTrackPosFromJson(json);
Map<String, dynamic> toJson() => _$ZipTrackPosToJson(this);
}
/*
@JsonSerializable()
class MessageContent
{
late String text;
late String subj;
late String time;
MessageContent();
factory MessageContent.fromJson(Map<String, dynamic> json) => _$MessageContentFromJson(json);
Map<String, dynamic> toJson() => _$MessageContentToJson(this);
}
*/
File diff suppressed because it is too large. Load diff
+2 -1
View File
@@ -7,7 +7,8 @@ class Constants {
static const String messageTopicConnectionStatusChanged = "connection_status_changed"; static const String messageTopicConnectionStatusChanged = "connection_status_changed";
static const String messageTopicSessionInfoUpdate = "status_info_updated"; static const String messageTopicSessionInfoUpdate = "status_info_updated";
static const String messageTopicSessionStatusInfoUpdate = "session_status_info_updated"; static const String messageTopicSessionStatusInfoUpdate = "session_status_info_updated";
static const String messageTopicStatusInfoUpdate = "status_info_updated"; static const String messageTopicStatusInfoUpdated = "status_info_updated";
static const String messageTopicRankingUpdated = "ranking_updated";
static const String messageTopicJobReceived = "job_received"; static const String messageTopicJobReceived = "job_received";
static const String messageTopicJobDeleted = "job_deleted"; static const String messageTopicJobDeleted = "job_deleted";
static const String messageTopicMessageReceived = "message_received"; static const String messageTopicMessageReceived = "message_received";
+5
View File
@@ -0,0 +1,5 @@
import 'package:stadtbote/model/status.dart';
class RankingUpdated {
RankingUpdated();
}
+9 -7
View File
@@ -5,6 +5,7 @@ import 'dart:math';
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/status.dart'; import 'package:stadtbote/model/status.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';
@@ -21,6 +22,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
@@ -249,19 +251,19 @@ class MqttCore {
await MyApp.isarInstance.status.put(statusMessage); await MyApp.isarInstance.status.put(statusMessage);
}); });
MessageService().publish<StatusInfoUpdate>(Constants.messageTopicStatusInfoUpdate, arguments: StatusInfoUpdate(status: statusMessage)); MessageService().publish<StatusInfoUpdate>(Constants.messageTopicStatusInfoUpdated, arguments: StatusInfoUpdate(status: statusMessage));
} }
void _rankingMessageReceived(payloadData) async { void _rankingMessageReceived(List<dynamic> payloadData) async {
Util.logInfo('_rankingMessageReceived'); Map<String, dynamic> rankingMap = {};
rankingMap["ranks"] = payloadData;
/*var statusMessage = Status.fromJson(payloadData['status']); var ranking = Ranking.fromJson(rankingMap);
await MyApp.isarInstance.writeTxn(() async { await MyApp.isarInstance.writeTxn(() async {
await MyApp.isarInstance.status.put(statusMessage); await MyApp.isarInstance.rankings.put(ranking);
}); });
BroadcastReceiver().publish<StatusInfoUpdate>(Constants.messageTopicStatusInfoUpdate, arguments: StatusInfoUpdate(status: statusMessage));*/ MessageService().publish<RankingUpdated>(Constants.messageTopicRankingUpdated, arguments: RankingUpdated());
} }
void _jobMessageReceived(payloadData) async { void _jobMessageReceived(payloadData) async {
+1 -1
View File
@@ -299,7 +299,7 @@ String mapVehicleTypeToText(int vehType) {
return "Service"; return "Service";
} }
return "!UNBEKANTER VEHICLE TYPE!"; return "!?????!";
} }
String mapTourMode(String mode) { String mapTourMode(String mode) {