initial commit v3
This commit is contained in:
parent
d5e6b853b3
commit
93be864bd3
17 changed files with 677 additions and 613 deletions
|
@ -1,7 +1,7 @@
|
||||||
import 'package:ambito/src/domain/entity/baumarten/baumarten.dart';
|
import 'package:ambito/src/domain/entity/baumarten/baumarten.dart';
|
||||||
import 'package:ambito/src/domain/entity/massnahme/massnahme.dart';
|
import 'package:ambito/src/domain/entity/massnahme/massnahme.dart';
|
||||||
import 'package:ambito/src/packages/ambito_api/base.dart';
|
import 'package:ambito/src/packages/ambito_api/base.dart';
|
||||||
import 'package:ambito/src/pages/actions/actions_page.dart';
|
import 'package:ambito/src/pages/start/start_page.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_i18n/flutter_i18n.dart';
|
import 'package:flutter_i18n/flutter_i18n.dart';
|
||||||
|
@ -9,7 +9,7 @@ import 'package:get/get_navigation/src/root/get_material_app.dart';
|
||||||
import 'package:isar/isar.dart';
|
import 'package:isar/isar.dart';
|
||||||
import 'package:logger/logger.dart';
|
import 'package:logger/logger.dart';
|
||||||
|
|
||||||
final String AmbitoToken = 'TFxO7vzBLVRCu9I3VMoHmTuCvSu8aCDi';
|
const String ambitoToken = 'TFxO7vzBLVRCu9I3VMoHmTuCvSu8aCDi';
|
||||||
|
|
||||||
final Logger logger = Logger(
|
final Logger logger = Logger(
|
||||||
printer: PrettyPrinter(),
|
printer: PrettyPrinter(),
|
||||||
|
@ -20,11 +20,6 @@ late Isar isar;
|
||||||
void main() async {
|
void main() async {
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
|
|
||||||
/*Isar.open(
|
|
||||||
schemas: [BaumartenSchema, IdValueColorSchema, IdValueSchema],
|
|
||||||
directory: '',
|
|
||||||
);*/
|
|
||||||
|
|
||||||
await Isar.initialize();
|
await Isar.initialize();
|
||||||
const dir = Isar.sqliteInMemory;
|
const dir = Isar.sqliteInMemory;
|
||||||
const engine = kIsWeb ? IsarEngine.sqlite : IsarEngine.isar;
|
const engine = kIsWeb ? IsarEngine.sqlite : IsarEngine.isar;
|
||||||
|
@ -59,7 +54,9 @@ class Ambito extends StatelessWidget {
|
||||||
basePath: 'i18n',
|
basePath: 'i18n',
|
||||||
),
|
),
|
||||||
missingTranslationHandler: (key, locale) {
|
missingTranslationHandler: (key, locale) {
|
||||||
print("--- Missing Key: $key, languageCode: $locale");
|
if (kDebugMode) {
|
||||||
|
print("--- Missing Key: $key, languageCode: $locale");
|
||||||
|
}
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -70,88 +67,7 @@ class Ambito extends StatelessWidget {
|
||||||
scaffoldBackgroundColor: Colors.white,
|
scaffoldBackgroundColor: Colors.white,
|
||||||
useMaterial3: true,
|
useMaterial3: true,
|
||||||
),
|
),
|
||||||
home: const MyHomePage(),
|
home: const StartPage(),
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class MyHomePage extends StatefulWidget {
|
|
||||||
const MyHomePage({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<MyHomePage> createState() => _MyHomePageState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _MyHomePageState extends State<MyHomePage> {
|
|
||||||
String activeLink = '';
|
|
||||||
|
|
||||||
@override
|
|
||||||
void initState() {
|
|
||||||
activeLink = 'start';
|
|
||||||
super.initState();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
double fontSize = 16;
|
|
||||||
return Scaffold(
|
|
||||||
body: Column(
|
|
||||||
children: [
|
|
||||||
SizedBox(height: 50),
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
|
||||||
children: [
|
|
||||||
LinkButton('start'),
|
|
||||||
LinkButton('database'),
|
|
||||||
LinkButton('designer'),
|
|
||||||
Image.asset(
|
|
||||||
'images/logo.png',
|
|
||||||
scale: 1.3,
|
|
||||||
),
|
|
||||||
LinkButton('service'),
|
|
||||||
LinkButton('network'),
|
|
||||||
LinkButton('contact'),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
SizedBox(height: 50),
|
|
||||||
Expanded(
|
|
||||||
child: getContent(),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget getContent() {
|
|
||||||
if (activeLink == 'database') {
|
|
||||||
return ActionsPage();
|
|
||||||
}
|
|
||||||
return Text(activeLink);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget LinkButton(String link) {
|
|
||||||
double fontSize = 16;
|
|
||||||
return TextButton(
|
|
||||||
style: ButtonStyle(
|
|
||||||
overlayColor: MaterialStateProperty.resolveWith<Color>(
|
|
||||||
(Set<MaterialState> states) {
|
|
||||||
return Colors.white;
|
|
||||||
}),
|
|
||||||
),
|
|
||||||
onPressed: () {
|
|
||||||
setState(() {
|
|
||||||
activeLink = link;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
child: Text(
|
|
||||||
context.translate('page.start.links.$link.title'),
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: fontSize,
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
color: (activeLink == link)
|
|
||||||
? Colors.grey.shade400
|
|
||||||
: Colors.grey.shade800,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,13 +45,20 @@ class Baumarten extends BaseEntity {
|
||||||
String? waterlevel;
|
String? waterlevel;
|
||||||
@JsonKey(name: 'Bodenfeuchte')
|
@JsonKey(name: 'Bodenfeuchte')
|
||||||
List<IdValueColor>? humidity;
|
List<IdValueColor>? humidity;
|
||||||
String? Lichtzahl;
|
@JsonKey(name: 'Lichtzahl')
|
||||||
String? Temperaturzahl;
|
String? valueLight;
|
||||||
String? Feuchtezahl;
|
@JsonKey(name: 'Temperaturzahl')
|
||||||
String? Reaktionszahl;
|
String? valueTemperature;
|
||||||
String? Stickstoffzahl;
|
@JsonKey(name: 'Feuchtezahl')
|
||||||
List<IdValueColor>? Region;
|
String? valueHumidity;
|
||||||
String? Anmerkung;
|
@JsonKey(name: 'Reaktionszahl')
|
||||||
|
String? valueReaction;
|
||||||
|
@JsonKey(name: 'Stickstoffzahl')
|
||||||
|
String? valueNitrogen;
|
||||||
|
@JsonKey(name: 'Region')
|
||||||
|
List<IdValueColor>? region;
|
||||||
|
@JsonKey(name: 'Anmerkung')
|
||||||
|
String? note;
|
||||||
@JsonKey(name: "Wild/Kulturart")
|
@JsonKey(name: "Wild/Kulturart")
|
||||||
String? typeOfCulture;
|
String? typeOfCulture;
|
||||||
@JsonKey(name: 'Gebiet 1')
|
@JsonKey(name: 'Gebiet 1')
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -11,14 +11,20 @@ class FilePart {
|
||||||
|
|
||||||
String? url;
|
String? url;
|
||||||
Thumbnails? thumbnails;
|
Thumbnails? thumbnails;
|
||||||
String? visible_name;
|
@JsonKey(name: 'visible_name')
|
||||||
|
String? visibleName;
|
||||||
String? name;
|
String? name;
|
||||||
int? size;
|
int? size;
|
||||||
String? mime_type;
|
@JsonKey(name: 'mime_type')
|
||||||
bool? is_image;
|
String? mimeType;
|
||||||
int? image_width;
|
@JsonKey(name: 'is_image')
|
||||||
int? image_height;
|
bool? isImage;
|
||||||
String? uploaded_at;
|
@JsonKey(name: 'image_width')
|
||||||
|
int? imageWidth;
|
||||||
|
@JsonKey(name: 'image_height')
|
||||||
|
int? imageHeight;
|
||||||
|
@JsonKey(name: 'uploaded_at')
|
||||||
|
String? uploadedAt;
|
||||||
|
|
||||||
factory FilePart.fromJson(Map<String, dynamic> json) =>
|
factory FilePart.fromJson(Map<String, dynamic> json) =>
|
||||||
_$FilePartFromJson(json);
|
_$FilePartFromJson(json);
|
||||||
|
|
|
@ -25,7 +25,7 @@ const FilePartSchema = IsarGeneratedSchema(
|
||||||
target: 'Thumbnails',
|
target: 'Thumbnails',
|
||||||
),
|
),
|
||||||
IsarPropertySchema(
|
IsarPropertySchema(
|
||||||
name: 'visible_name',
|
name: 'visibleName',
|
||||||
type: IsarType.string,
|
type: IsarType.string,
|
||||||
),
|
),
|
||||||
IsarPropertySchema(
|
IsarPropertySchema(
|
||||||
|
@ -37,23 +37,23 @@ const FilePartSchema = IsarGeneratedSchema(
|
||||||
type: IsarType.long,
|
type: IsarType.long,
|
||||||
),
|
),
|
||||||
IsarPropertySchema(
|
IsarPropertySchema(
|
||||||
name: 'mime_type',
|
name: 'mimeType',
|
||||||
type: IsarType.string,
|
type: IsarType.string,
|
||||||
),
|
),
|
||||||
IsarPropertySchema(
|
IsarPropertySchema(
|
||||||
name: 'is_image',
|
name: 'isImage',
|
||||||
type: IsarType.bool,
|
type: IsarType.bool,
|
||||||
),
|
),
|
||||||
IsarPropertySchema(
|
IsarPropertySchema(
|
||||||
name: 'image_width',
|
name: 'imageWidth',
|
||||||
type: IsarType.long,
|
type: IsarType.long,
|
||||||
),
|
),
|
||||||
IsarPropertySchema(
|
IsarPropertySchema(
|
||||||
name: 'image_height',
|
name: 'imageHeight',
|
||||||
type: IsarType.long,
|
type: IsarType.long,
|
||||||
),
|
),
|
||||||
IsarPropertySchema(
|
IsarPropertySchema(
|
||||||
name: 'uploaded_at',
|
name: 'uploadedAt',
|
||||||
type: IsarType.string,
|
type: IsarType.string,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -86,7 +86,7 @@ int serializeFilePart(IsarWriter writer, FilePart object) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final value = object.visible_name;
|
final value = object.visibleName;
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
IsarCore.writeNull(writer, 3);
|
IsarCore.writeNull(writer, 3);
|
||||||
} else {
|
} else {
|
||||||
|
@ -103,7 +103,7 @@ int serializeFilePart(IsarWriter writer, FilePart object) {
|
||||||
}
|
}
|
||||||
IsarCore.writeLong(writer, 5, object.size ?? -9223372036854775808);
|
IsarCore.writeLong(writer, 5, object.size ?? -9223372036854775808);
|
||||||
{
|
{
|
||||||
final value = object.mime_type;
|
final value = object.mimeType;
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
IsarCore.writeNull(writer, 6);
|
IsarCore.writeNull(writer, 6);
|
||||||
} else {
|
} else {
|
||||||
|
@ -111,17 +111,17 @@ int serializeFilePart(IsarWriter writer, FilePart object) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final value = object.is_image;
|
final value = object.isImage;
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
IsarCore.writeNull(writer, 7);
|
IsarCore.writeNull(writer, 7);
|
||||||
} else {
|
} else {
|
||||||
IsarCore.writeBool(writer, 7, value);
|
IsarCore.writeBool(writer, 7, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
IsarCore.writeLong(writer, 8, object.image_width ?? -9223372036854775808);
|
IsarCore.writeLong(writer, 8, object.imageWidth ?? -9223372036854775808);
|
||||||
IsarCore.writeLong(writer, 9, object.image_height ?? -9223372036854775808);
|
IsarCore.writeLong(writer, 9, object.imageHeight ?? -9223372036854775808);
|
||||||
{
|
{
|
||||||
final value = object.uploaded_at;
|
final value = object.uploadedAt;
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
IsarCore.writeNull(writer, 10);
|
IsarCore.writeNull(writer, 10);
|
||||||
} else {
|
} else {
|
||||||
|
@ -145,7 +145,7 @@ FilePart deserializeFilePart(IsarReader reader) {
|
||||||
object.thumbnails = embedded;
|
object.thumbnails = embedded;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object.visible_name = IsarCore.readString(reader, 3);
|
object.visibleName = IsarCore.readString(reader, 3);
|
||||||
object.name = IsarCore.readString(reader, 4);
|
object.name = IsarCore.readString(reader, 4);
|
||||||
{
|
{
|
||||||
final value = IsarCore.readLong(reader, 5);
|
final value = IsarCore.readLong(reader, 5);
|
||||||
|
@ -155,31 +155,31 @@ FilePart deserializeFilePart(IsarReader reader) {
|
||||||
object.size = value;
|
object.size = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object.mime_type = IsarCore.readString(reader, 6);
|
object.mimeType = IsarCore.readString(reader, 6);
|
||||||
{
|
{
|
||||||
if (IsarCore.readNull(reader, 7)) {
|
if (IsarCore.readNull(reader, 7)) {
|
||||||
object.is_image = null;
|
object.isImage = null;
|
||||||
} else {
|
} else {
|
||||||
object.is_image = IsarCore.readBool(reader, 7);
|
object.isImage = IsarCore.readBool(reader, 7);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final value = IsarCore.readLong(reader, 8);
|
final value = IsarCore.readLong(reader, 8);
|
||||||
if (value == -9223372036854775808) {
|
if (value == -9223372036854775808) {
|
||||||
object.image_width = null;
|
object.imageWidth = null;
|
||||||
} else {
|
} else {
|
||||||
object.image_width = value;
|
object.imageWidth = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final value = IsarCore.readLong(reader, 9);
|
final value = IsarCore.readLong(reader, 9);
|
||||||
if (value == -9223372036854775808) {
|
if (value == -9223372036854775808) {
|
||||||
object.image_height = null;
|
object.imageHeight = null;
|
||||||
} else {
|
} else {
|
||||||
object.image_height = value;
|
object.imageHeight = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object.uploaded_at = IsarCore.readString(reader, 10);
|
object.uploadedAt = IsarCore.readString(reader, 10);
|
||||||
return object;
|
return object;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -383,20 +383,20 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> visible_nameIsNull() {
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> visibleNameIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(const IsNullCondition(property: 3));
|
return query.addFilterCondition(const IsNullCondition(property: 3));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
||||||
visible_nameIsNotNull() {
|
visibleNameIsNotNull() {
|
||||||
return QueryBuilder.apply(not(), (query) {
|
return QueryBuilder.apply(not(), (query) {
|
||||||
return query.addFilterCondition(const IsNullCondition(property: 3));
|
return query.addFilterCondition(const IsNullCondition(property: 3));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> visible_nameEqualTo(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> visibleNameEqualTo(
|
||||||
String? value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -412,7 +412,7 @@ extension FilePartQueryFilter
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
||||||
visible_nameGreaterThan(
|
visibleNameGreaterThan(
|
||||||
String? value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -428,7 +428,7 @@ extension FilePartQueryFilter
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
||||||
visible_nameGreaterThanOrEqualTo(
|
visibleNameGreaterThanOrEqualTo(
|
||||||
String? value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -443,7 +443,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> visible_nameLessThan(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> visibleNameLessThan(
|
||||||
String? value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -459,7 +459,7 @@ extension FilePartQueryFilter
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
||||||
visible_nameLessThanOrEqualTo(
|
visibleNameLessThanOrEqualTo(
|
||||||
String? value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -474,7 +474,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> visible_nameBetween(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> visibleNameBetween(
|
||||||
String? lower,
|
String? lower,
|
||||||
String? upper, {
|
String? upper, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
|
@ -491,8 +491,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> visibleNameStartsWith(
|
||||||
visible_nameStartsWith(
|
|
||||||
String value, {
|
String value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -507,7 +506,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> visible_nameEndsWith(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> visibleNameEndsWith(
|
||||||
String value, {
|
String value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -522,7 +521,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> visible_nameContains(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> visibleNameContains(
|
||||||
String value,
|
String value,
|
||||||
{bool caseSensitive = true}) {
|
{bool caseSensitive = true}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -536,7 +535,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> visible_nameMatches(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> visibleNameMatches(
|
||||||
String pattern,
|
String pattern,
|
||||||
{bool caseSensitive = true}) {
|
{bool caseSensitive = true}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -550,8 +549,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> visibleNameIsEmpty() {
|
||||||
visible_nameIsEmpty() {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(
|
return query.addFilterCondition(
|
||||||
const EqualCondition(
|
const EqualCondition(
|
||||||
|
@ -563,7 +561,7 @@ extension FilePartQueryFilter
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
||||||
visible_nameIsNotEmpty() {
|
visibleNameIsNotEmpty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(
|
return query.addFilterCondition(
|
||||||
const GreaterCondition(
|
const GreaterCondition(
|
||||||
|
@ -852,19 +850,19 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mime_typeIsNull() {
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mimeTypeIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(const IsNullCondition(property: 6));
|
return query.addFilterCondition(const IsNullCondition(property: 6));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mime_typeIsNotNull() {
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mimeTypeIsNotNull() {
|
||||||
return QueryBuilder.apply(not(), (query) {
|
return QueryBuilder.apply(not(), (query) {
|
||||||
return query.addFilterCondition(const IsNullCondition(property: 6));
|
return query.addFilterCondition(const IsNullCondition(property: 6));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mime_typeEqualTo(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mimeTypeEqualTo(
|
||||||
String? value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -879,7 +877,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mime_typeGreaterThan(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mimeTypeGreaterThan(
|
||||||
String? value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -895,7 +893,7 @@ extension FilePartQueryFilter
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
||||||
mime_typeGreaterThanOrEqualTo(
|
mimeTypeGreaterThanOrEqualTo(
|
||||||
String? value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -910,7 +908,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mime_typeLessThan(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mimeTypeLessThan(
|
||||||
String? value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -926,7 +924,7 @@ extension FilePartQueryFilter
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
||||||
mime_typeLessThanOrEqualTo(
|
mimeTypeLessThanOrEqualTo(
|
||||||
String? value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -941,7 +939,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mime_typeBetween(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mimeTypeBetween(
|
||||||
String? lower,
|
String? lower,
|
||||||
String? upper, {
|
String? upper, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
|
@ -958,7 +956,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mime_typeStartsWith(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mimeTypeStartsWith(
|
||||||
String value, {
|
String value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -973,7 +971,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mime_typeEndsWith(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mimeTypeEndsWith(
|
||||||
String value, {
|
String value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -988,7 +986,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mime_typeContains(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mimeTypeContains(
|
||||||
String value,
|
String value,
|
||||||
{bool caseSensitive = true}) {
|
{bool caseSensitive = true}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1002,7 +1000,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mime_typeMatches(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mimeTypeMatches(
|
||||||
String pattern,
|
String pattern,
|
||||||
{bool caseSensitive = true}) {
|
{bool caseSensitive = true}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1016,7 +1014,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mime_typeIsEmpty() {
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mimeTypeIsEmpty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(
|
return query.addFilterCondition(
|
||||||
const EqualCondition(
|
const EqualCondition(
|
||||||
|
@ -1027,8 +1025,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> mimeTypeIsNotEmpty() {
|
||||||
mime_typeIsNotEmpty() {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(
|
return query.addFilterCondition(
|
||||||
const GreaterCondition(
|
const GreaterCondition(
|
||||||
|
@ -1039,19 +1036,19 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> is_imageIsNull() {
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> isImageIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(const IsNullCondition(property: 7));
|
return query.addFilterCondition(const IsNullCondition(property: 7));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> is_imageIsNotNull() {
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> isImageIsNotNull() {
|
||||||
return QueryBuilder.apply(not(), (query) {
|
return QueryBuilder.apply(not(), (query) {
|
||||||
return query.addFilterCondition(const IsNullCondition(property: 7));
|
return query.addFilterCondition(const IsNullCondition(property: 7));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> is_imageEqualTo(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> isImageEqualTo(
|
||||||
bool? value,
|
bool? value,
|
||||||
) {
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1064,20 +1061,20 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> image_widthIsNull() {
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> imageWidthIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(const IsNullCondition(property: 8));
|
return query.addFilterCondition(const IsNullCondition(property: 8));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
||||||
image_widthIsNotNull() {
|
imageWidthIsNotNull() {
|
||||||
return QueryBuilder.apply(not(), (query) {
|
return QueryBuilder.apply(not(), (query) {
|
||||||
return query.addFilterCondition(const IsNullCondition(property: 8));
|
return query.addFilterCondition(const IsNullCondition(property: 8));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> image_widthEqualTo(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> imageWidthEqualTo(
|
||||||
int? value,
|
int? value,
|
||||||
) {
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1090,8 +1087,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> imageWidthGreaterThan(
|
||||||
image_widthGreaterThan(
|
|
||||||
int? value,
|
int? value,
|
||||||
) {
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1105,7 +1101,7 @@ extension FilePartQueryFilter
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
||||||
image_widthGreaterThanOrEqualTo(
|
imageWidthGreaterThanOrEqualTo(
|
||||||
int? value,
|
int? value,
|
||||||
) {
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1118,7 +1114,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> image_widthLessThan(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> imageWidthLessThan(
|
||||||
int? value,
|
int? value,
|
||||||
) {
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1132,7 +1128,7 @@ extension FilePartQueryFilter
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
||||||
image_widthLessThanOrEqualTo(
|
imageWidthLessThanOrEqualTo(
|
||||||
int? value,
|
int? value,
|
||||||
) {
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1145,7 +1141,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> image_widthBetween(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> imageWidthBetween(
|
||||||
int? lower,
|
int? lower,
|
||||||
int? upper,
|
int? upper,
|
||||||
) {
|
) {
|
||||||
|
@ -1160,20 +1156,20 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> image_heightIsNull() {
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> imageHeightIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(const IsNullCondition(property: 9));
|
return query.addFilterCondition(const IsNullCondition(property: 9));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
||||||
image_heightIsNotNull() {
|
imageHeightIsNotNull() {
|
||||||
return QueryBuilder.apply(not(), (query) {
|
return QueryBuilder.apply(not(), (query) {
|
||||||
return query.addFilterCondition(const IsNullCondition(property: 9));
|
return query.addFilterCondition(const IsNullCondition(property: 9));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> image_heightEqualTo(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> imageHeightEqualTo(
|
||||||
int? value,
|
int? value,
|
||||||
) {
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1187,7 +1183,7 @@ extension FilePartQueryFilter
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
||||||
image_heightGreaterThan(
|
imageHeightGreaterThan(
|
||||||
int? value,
|
int? value,
|
||||||
) {
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1201,7 +1197,7 @@ extension FilePartQueryFilter
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
||||||
image_heightGreaterThanOrEqualTo(
|
imageHeightGreaterThanOrEqualTo(
|
||||||
int? value,
|
int? value,
|
||||||
) {
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1214,7 +1210,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> image_heightLessThan(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> imageHeightLessThan(
|
||||||
int? value,
|
int? value,
|
||||||
) {
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1228,7 +1224,7 @@ extension FilePartQueryFilter
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
||||||
image_heightLessThanOrEqualTo(
|
imageHeightLessThanOrEqualTo(
|
||||||
int? value,
|
int? value,
|
||||||
) {
|
) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1241,7 +1237,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> image_heightBetween(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> imageHeightBetween(
|
||||||
int? lower,
|
int? lower,
|
||||||
int? upper,
|
int? upper,
|
||||||
) {
|
) {
|
||||||
|
@ -1256,20 +1252,20 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> uploaded_atIsNull() {
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> uploadedAtIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(const IsNullCondition(property: 10));
|
return query.addFilterCondition(const IsNullCondition(property: 10));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
||||||
uploaded_atIsNotNull() {
|
uploadedAtIsNotNull() {
|
||||||
return QueryBuilder.apply(not(), (query) {
|
return QueryBuilder.apply(not(), (query) {
|
||||||
return query.addFilterCondition(const IsNullCondition(property: 10));
|
return query.addFilterCondition(const IsNullCondition(property: 10));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> uploaded_atEqualTo(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> uploadedAtEqualTo(
|
||||||
String? value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -1284,8 +1280,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> uploadedAtGreaterThan(
|
||||||
uploaded_atGreaterThan(
|
|
||||||
String? value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -1301,7 +1296,7 @@ extension FilePartQueryFilter
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
||||||
uploaded_atGreaterThanOrEqualTo(
|
uploadedAtGreaterThanOrEqualTo(
|
||||||
String? value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -1316,7 +1311,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> uploaded_atLessThan(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> uploadedAtLessThan(
|
||||||
String? value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -1332,7 +1327,7 @@ extension FilePartQueryFilter
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
||||||
uploaded_atLessThanOrEqualTo(
|
uploadedAtLessThanOrEqualTo(
|
||||||
String? value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -1347,7 +1342,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> uploaded_atBetween(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> uploadedAtBetween(
|
||||||
String? lower,
|
String? lower,
|
||||||
String? upper, {
|
String? upper, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
|
@ -1364,7 +1359,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> uploaded_atStartsWith(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> uploadedAtStartsWith(
|
||||||
String value, {
|
String value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -1379,7 +1374,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> uploaded_atEndsWith(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> uploadedAtEndsWith(
|
||||||
String value, {
|
String value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
|
@ -1394,7 +1389,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> uploaded_atContains(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> uploadedAtContains(
|
||||||
String value,
|
String value,
|
||||||
{bool caseSensitive = true}) {
|
{bool caseSensitive = true}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1408,7 +1403,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> uploaded_atMatches(
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> uploadedAtMatches(
|
||||||
String pattern,
|
String pattern,
|
||||||
{bool caseSensitive = true}) {
|
{bool caseSensitive = true}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1422,7 +1417,7 @@ extension FilePartQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> uploaded_atIsEmpty() {
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition> uploadedAtIsEmpty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(
|
return query.addFilterCondition(
|
||||||
const EqualCondition(
|
const EqualCondition(
|
||||||
|
@ -1434,7 +1429,7 @@ extension FilePartQueryFilter
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
QueryBuilder<FilePart, FilePart, QAfterFilterCondition>
|
||||||
uploaded_atIsNotEmpty() {
|
uploadedAtIsNotEmpty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(
|
return query.addFilterCondition(
|
||||||
const GreaterCondition(
|
const GreaterCondition(
|
||||||
|
@ -1465,24 +1460,24 @@ FilePart _$FilePartFromJson(Map<String, dynamic> json) => FilePart()
|
||||||
..thumbnails = json['thumbnails'] == null
|
..thumbnails = json['thumbnails'] == null
|
||||||
? null
|
? null
|
||||||
: Thumbnails.fromJson(json['thumbnails'] as Map<String, dynamic>)
|
: Thumbnails.fromJson(json['thumbnails'] as Map<String, dynamic>)
|
||||||
..visible_name = json['visible_name'] as String?
|
..visibleName = json['visible_name'] as String?
|
||||||
..name = json['name'] as String?
|
..name = json['name'] as String?
|
||||||
..size = (json['size'] as num?)?.toInt()
|
..size = (json['size'] as num?)?.toInt()
|
||||||
..mime_type = json['mime_type'] as String?
|
..mimeType = json['mime_type'] as String?
|
||||||
..is_image = json['is_image'] as bool?
|
..isImage = json['is_image'] as bool?
|
||||||
..image_width = (json['image_width'] as num?)?.toInt()
|
..imageWidth = (json['image_width'] as num?)?.toInt()
|
||||||
..image_height = (json['image_height'] as num?)?.toInt()
|
..imageHeight = (json['image_height'] as num?)?.toInt()
|
||||||
..uploaded_at = json['uploaded_at'] as String?;
|
..uploadedAt = json['uploaded_at'] as String?;
|
||||||
|
|
||||||
Map<String, dynamic> _$FilePartToJson(FilePart instance) => <String, dynamic>{
|
Map<String, dynamic> _$FilePartToJson(FilePart instance) => <String, dynamic>{
|
||||||
'url': instance.url,
|
'url': instance.url,
|
||||||
'thumbnails': instance.thumbnails?.toJson(),
|
'thumbnails': instance.thumbnails?.toJson(),
|
||||||
'visible_name': instance.visible_name,
|
'visible_name': instance.visibleName,
|
||||||
'name': instance.name,
|
'name': instance.name,
|
||||||
'size': instance.size,
|
'size': instance.size,
|
||||||
'mime_type': instance.mime_type,
|
'mime_type': instance.mimeType,
|
||||||
'is_image': instance.is_image,
|
'is_image': instance.isImage,
|
||||||
'image_width': instance.image_width,
|
'image_width': instance.imageWidth,
|
||||||
'image_height': instance.image_height,
|
'image_height': instance.imageHeight,
|
||||||
'uploaded_at': instance.uploaded_at,
|
'uploaded_at': instance.uploadedAt,
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,7 +11,8 @@ class Thumbnails {
|
||||||
|
|
||||||
Thumbnail? tiny;
|
Thumbnail? tiny;
|
||||||
Thumbnail? small;
|
Thumbnail? small;
|
||||||
Thumbnail? card_cover;
|
@JsonKey(name: 'card_cover')
|
||||||
|
Thumbnail? cardCover;
|
||||||
|
|
||||||
factory Thumbnails.fromJson(Map<String, dynamic> json) =>
|
factory Thumbnails.fromJson(Map<String, dynamic> json) =>
|
||||||
_$ThumbnailsFromJson(json);
|
_$ThumbnailsFromJson(json);
|
||||||
|
|
|
@ -26,7 +26,7 @@ const ThumbnailsSchema = IsarGeneratedSchema(
|
||||||
target: 'Thumbnail',
|
target: 'Thumbnail',
|
||||||
),
|
),
|
||||||
IsarPropertySchema(
|
IsarPropertySchema(
|
||||||
name: 'card_cover',
|
name: 'cardCover',
|
||||||
type: IsarType.object,
|
type: IsarType.object,
|
||||||
target: 'Thumbnail',
|
target: 'Thumbnail',
|
||||||
),
|
),
|
||||||
|
@ -62,7 +62,7 @@ int serializeThumbnails(IsarWriter writer, Thumbnails object) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
final value = object.card_cover;
|
final value = object.cardCover;
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
IsarCore.writeNull(writer, 3);
|
IsarCore.writeNull(writer, 3);
|
||||||
} else {
|
} else {
|
||||||
|
@ -100,11 +100,11 @@ Thumbnails deserializeThumbnails(IsarReader reader) {
|
||||||
{
|
{
|
||||||
final objectReader = IsarCore.readObject(reader, 3);
|
final objectReader = IsarCore.readObject(reader, 3);
|
||||||
if (objectReader.isNull) {
|
if (objectReader.isNull) {
|
||||||
object.card_cover = null;
|
object.cardCover = null;
|
||||||
} else {
|
} else {
|
||||||
final embedded = deserializeThumbnail(objectReader);
|
final embedded = deserializeThumbnail(objectReader);
|
||||||
IsarCore.freeReader(objectReader);
|
IsarCore.freeReader(objectReader);
|
||||||
object.card_cover = embedded;
|
object.cardCover = embedded;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return object;
|
return object;
|
||||||
|
@ -137,14 +137,14 @@ extension ThumbnailsQueryFilter
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Thumbnails, Thumbnails, QAfterFilterCondition>
|
QueryBuilder<Thumbnails, Thumbnails, QAfterFilterCondition>
|
||||||
card_coverIsNull() {
|
cardCoverIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(const IsNullCondition(property: 3));
|
return query.addFilterCondition(const IsNullCondition(property: 3));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Thumbnails, Thumbnails, QAfterFilterCondition>
|
QueryBuilder<Thumbnails, Thumbnails, QAfterFilterCondition>
|
||||||
card_coverIsNotNull() {
|
cardCoverIsNotNull() {
|
||||||
return QueryBuilder.apply(not(), (query) {
|
return QueryBuilder.apply(not(), (query) {
|
||||||
return query.addFilterCondition(const IsNullCondition(property: 3));
|
return query.addFilterCondition(const IsNullCondition(property: 3));
|
||||||
});
|
});
|
||||||
|
@ -167,7 +167,7 @@ extension ThumbnailsQueryObject
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<Thumbnails, Thumbnails, QAfterFilterCondition> card_cover(
|
QueryBuilder<Thumbnails, Thumbnails, QAfterFilterCondition> cardCover(
|
||||||
FilterQuery<Thumbnail> q) {
|
FilterQuery<Thumbnail> q) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.object(q, 3);
|
return query.object(q, 3);
|
||||||
|
@ -186,7 +186,7 @@ Thumbnails _$ThumbnailsFromJson(Map<String, dynamic> json) => Thumbnails()
|
||||||
..small = json['small'] == null
|
..small = json['small'] == null
|
||||||
? null
|
? null
|
||||||
: Thumbnail.fromJson(json['small'] as Map<String, dynamic>)
|
: Thumbnail.fromJson(json['small'] as Map<String, dynamic>)
|
||||||
..card_cover = json['card_cover'] == null
|
..cardCover = json['card_cover'] == null
|
||||||
? null
|
? null
|
||||||
: Thumbnail.fromJson(json['card_cover'] as Map<String, dynamic>);
|
: Thumbnail.fromJson(json['card_cover'] as Map<String, dynamic>);
|
||||||
|
|
||||||
|
@ -194,5 +194,5 @@ Map<String, dynamic> _$ThumbnailsToJson(Thumbnails instance) =>
|
||||||
<String, dynamic>{
|
<String, dynamic>{
|
||||||
'tiny': instance.tiny?.toJson(),
|
'tiny': instance.tiny?.toJson(),
|
||||||
'small': instance.small?.toJson(),
|
'small': instance.small?.toJson(),
|
||||||
'card_cover': instance.card_cover?.toJson(),
|
'card_cover': instance.cardCover?.toJson(),
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
import 'package:ambito/src/domain/entity/base_entity.dart';
|
import 'package:ambito/src/domain/entity/base_entity.dart';
|
||||||
import 'package:ambito/src/domain/entity/id_value/id_value.dart';
|
import 'package:ambito/src/domain/entity/id_value/id_value.dart';
|
||||||
import 'package:ambito/src/domain/entity/id_value_color/id_value_color.dart';
|
import 'package:ambito/src/domain/entity/id_value_color/id_value_color.dart';
|
||||||
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
import 'package:isar/isar.dart';
|
import 'package:isar/isar.dart';
|
||||||
import 'package:json_annotation/json_annotation.dart';
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
|
||||||
|
@ -150,3 +152,21 @@ class Massnahme extends BaseEntity {
|
||||||
|
|
||||||
Map<String, dynamic> toJson() => _$MassnahmeToJson(this);
|
Map<String, dynamic> toJson() => _$MassnahmeToJson(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension MassnahmenExtension on Massnahme {
|
||||||
|
|
||||||
|
CachedNetworkImage? getThumbnail() {
|
||||||
|
CachedNetworkImage? image;
|
||||||
|
if (files != null && files!.isNotEmpty) {
|
||||||
|
if (files![0].thumbnails?.cardCover?.url != null) {
|
||||||
|
image = CachedNetworkImage(
|
||||||
|
imageUrl:files![0].thumbnails!.cardCover!.url!,
|
||||||
|
placeholder: (context, url) => const CircularProgressIndicator(),
|
||||||
|
errorWidget: (context, url, error) => const Icon(Icons.error),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -46,6 +46,7 @@ class BaseApi {
|
||||||
break;
|
break;
|
||||||
case 'massnahmen':
|
case 'massnahmen':
|
||||||
for (var massnahme in json['results']) {
|
for (var massnahme in json['results']) {
|
||||||
|
logger.d(massnahme);
|
||||||
BaseDB.put(Massnahme.fromJson(massnahme));
|
BaseDB.put(Massnahme.fromJson(massnahme));
|
||||||
isar.write((isar) {
|
isar.write((isar) {
|
||||||
isar.massnahmes.put(Massnahme.fromJson(massnahme));
|
isar.massnahmes.put(Massnahme.fromJson(massnahme));
|
||||||
|
|
|
@ -19,7 +19,7 @@ class RestClient {
|
||||||
var headers = {
|
var headers = {
|
||||||
"Content-Type": contentType,
|
"Content-Type": contentType,
|
||||||
"Accept": accept,
|
"Accept": accept,
|
||||||
"Authorization": "Token $AmbitoToken",
|
"Authorization": "Token $ambitoToken",
|
||||||
};
|
};
|
||||||
return headers;
|
return headers;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ import '../../../main.dart';
|
||||||
|
|
||||||
class BaseDB {
|
class BaseDB {
|
||||||
static put(var entity) {
|
static put(var entity) {
|
||||||
switch (entity.runtimeType) {
|
switch (entity.runtimeType.toString()) {
|
||||||
case 'Baumarten':
|
case 'Baumarten':
|
||||||
isar.write((isar) {
|
isar.write((isar) {
|
||||||
isar.baumartens.put(entity);
|
isar.baumartens.put(entity);
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import 'package:ambito/src/domain/entity/massnahme/massnahme.dart';
|
import 'package:ambito/src/domain/entity/massnahme/massnahme.dart';
|
||||||
import 'package:ambito/src/packages/ambito_db/base_db.dart';
|
import 'package:ambito/src/packages/ambito_db/base_db.dart';
|
||||||
|
import 'package:ambito/src/widgets/form/dropdown_menu.dart';
|
||||||
import 'package:cached_network_image/cached_network_image.dart';
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
import 'package:expandable_text/expandable_text.dart';
|
import 'package:expandable_text/expandable_text.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
@ -7,84 +8,94 @@ import 'package:flutter/material.dart';
|
||||||
import '../../../main.dart';
|
import '../../../main.dart';
|
||||||
|
|
||||||
class ActionsPage extends StatefulWidget {
|
class ActionsPage extends StatefulWidget {
|
||||||
|
const ActionsPage({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() => ActionsPageState();
|
State<StatefulWidget> createState() => ActionsPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class ActionsPageState extends State<ActionsPage> {
|
class ActionsPageState extends State<ActionsPage> {
|
||||||
final GlobalKey<FormFieldState> _keyType = GlobalKey<FormFieldState>();
|
final GlobalKey<FormFieldState> _keyType = GlobalKey<FormFieldState>();
|
||||||
|
final TextEditingController _controllerType = TextEditingController();
|
||||||
final GlobalKey<FormFieldState> _keyAreaType = GlobalKey<FormFieldState>();
|
final GlobalKey<FormFieldState> _keyAreaType = GlobalKey<FormFieldState>();
|
||||||
|
final TextEditingController _controllerAreaType = TextEditingController();
|
||||||
|
final GlobalKey<FormFieldState> _keySupport = GlobalKey<FormFieldState>();
|
||||||
|
final TextEditingController _controllerSupport = TextEditingController();
|
||||||
|
|
||||||
Map<int, bool> visible = {};
|
Map<int, bool> visible = {};
|
||||||
List<String> effort = [];
|
List<String> effort = [];
|
||||||
List<String> effect = [];
|
List<String> effect = [];
|
||||||
List<String> type = [];
|
Set<String> type = {};
|
||||||
String? filterType;
|
String? filterType;
|
||||||
List<String> areaType = [];
|
Set<String> areaType = {};
|
||||||
String? filterAreaType;
|
String? filterAreaType;
|
||||||
List<String> region = [];
|
List<String> region = [];
|
||||||
List<String> support = [];
|
String? filterSupport;
|
||||||
|
Set<String> support = {};
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
|
super.initState();
|
||||||
effort = [];
|
effort = [];
|
||||||
effect = [];
|
effect = [];
|
||||||
type = [];
|
type = {};
|
||||||
areaType = [];
|
areaType = {};
|
||||||
region = [];
|
region = [];
|
||||||
support = [];
|
support = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
List<Massnahme> massnahmen = BaseDB.getAll('Maßnahme');
|
List<Massnahme> massnahmen = BaseDB.getAll('Maßnahme');
|
||||||
|
Set<String> updatedTypes = {};
|
||||||
|
Set<String> updatedAreaTypes = {};
|
||||||
|
Set<String> updatedSupports = {};
|
||||||
|
|
||||||
List<Widget> actionCards = [];
|
|
||||||
for (var massnahme in massnahmen) {
|
for (var massnahme in massnahmen) {
|
||||||
//logger.d(massnahme.toJson());
|
if (massnahme.actionGroup != null) {
|
||||||
if (massnahme.actionGroup != null &&
|
updatedTypes.add(massnahme.actionGroup!.value!);
|
||||||
!type.contains(massnahme.actionGroup!.value)) {
|
|
||||||
setState(() {
|
|
||||||
type.add(massnahme.actionGroup!.value!);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
if (massnahme.factsheetAreaType != null) {
|
if (massnahme.factsheetAreaType != null) {
|
||||||
for (var aType in massnahme.factsheetAreaType!) {
|
for (var aType in massnahme.factsheetAreaType!) {
|
||||||
if (!areaType.contains(aType.value)) {
|
updatedAreaTypes.add(aType.value!);
|
||||||
setState(() {
|
}
|
||||||
areaType.add(aType.value!);
|
}
|
||||||
});
|
if (massnahme.fundingPrograms != null) {
|
||||||
}
|
for (var aType in massnahme.fundingPrograms!) {
|
||||||
|
updatedSupports.add(aType.value!);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var massnahme in massnahmen) {
|
setState(() {
|
||||||
bool myVisibility = true;
|
type.addAll(updatedTypes);
|
||||||
if (filterType != null) {
|
areaType.addAll(updatedAreaTypes);
|
||||||
if (massnahme.actionGroup == null ||
|
support.addAll(updatedSupports);
|
||||||
massnahme.actionGroup!.value != filterType) {
|
});
|
||||||
myVisibility = false;
|
|
||||||
}
|
List<Widget> actionCards = massnahmen.map((massnahme) {
|
||||||
}
|
bool typeMatches = filterType == null ||
|
||||||
if (filterAreaType != null) {
|
(massnahme.actionGroup != null &&
|
||||||
if (massnahme.factsheetAreaType != null) {
|
massnahme.actionGroup!.value == filterType);
|
||||||
myVisibility = false;
|
|
||||||
for (var aType in massnahme.factsheetAreaType!) {
|
bool areaTypeMatches = filterAreaType == null ||
|
||||||
if (aType.value == filterAreaType) {
|
(massnahme.factsheetAreaType
|
||||||
myVisibility = true;
|
?.any((aType) => aType.value == filterAreaType) ??
|
||||||
}
|
false);
|
||||||
}
|
|
||||||
}
|
bool supportMatches = filterSupport == null ||
|
||||||
}
|
(massnahme.fundingPrograms
|
||||||
|
?.any((aType) => aType.value == filterSupport) ??
|
||||||
|
false);
|
||||||
|
|
||||||
|
// Update visibility based on the matches
|
||||||
setState(() {
|
setState(() {
|
||||||
visible[massnahme.id] = myVisibility;
|
visible[massnahme.id] =
|
||||||
|
typeMatches && areaTypeMatches && supportMatches;
|
||||||
});
|
});
|
||||||
actionCards.add(getCard(context, massnahme));
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.d(visible);
|
return getCard(context, massnahme);
|
||||||
//logger.d(areaType);
|
}).toList();
|
||||||
|
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.only(left: 32, right: 32),
|
padding: const EdgeInsets.only(left: 32, right: 32),
|
||||||
|
@ -123,98 +134,80 @@ class ActionsPageState extends State<ActionsPage> {
|
||||||
|
|
||||||
Widget getFilter(BuildContext context) {
|
Widget getFilter(BuildContext context) {
|
||||||
return Row(
|
return Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
DropdownMenu(
|
DropdownMenuWidget(
|
||||||
key: _keyAreaType,
|
formKey: _keyAreaType,
|
||||||
initialSelection: filterAreaType,
|
label: 'Ort der Maßnahme',
|
||||||
leadingIcon: (filterAreaType != null)
|
controller: _controllerAreaType,
|
||||||
? IconButton(
|
filterValue: filterAreaType,
|
||||||
onPressed: () {
|
onClear: () {
|
||||||
_keyAreaType.currentState!.didChange(null);
|
setState(() {
|
||||||
_keyAreaType.currentState!.reset();
|
filterAreaType = null;
|
||||||
setState(() {
|
});
|
||||||
filterAreaType = null;
|
_controllerAreaType.clear();
|
||||||
});
|
},
|
||||||
},
|
|
||||||
icon: const Icon(Icons.delete),
|
|
||||||
)
|
|
||||||
: null,
|
|
||||||
onSelected: (String? selection) {
|
onSelected: (String? selection) {
|
||||||
setState(() {
|
setState(() {
|
||||||
filterAreaType = selection;
|
filterAreaType = selection;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
dropdownMenuEntries:
|
entries: areaType.toList(),
|
||||||
areaType.map<DropdownMenuEntry<String>>((String entry) {
|
|
||||||
return DropdownMenuEntry<String>(
|
|
||||||
value: entry,
|
|
||||||
label: entry,
|
|
||||||
);
|
|
||||||
}).toList(),
|
|
||||||
),
|
),
|
||||||
DropdownMenu(
|
DropdownMenuWidget(
|
||||||
key: _keyType,
|
formKey: _keyType,
|
||||||
leadingIcon: (filterType != null)
|
label: 'Art der Maßnahme',
|
||||||
? IconButton(
|
controller: _controllerType,
|
||||||
onPressed: () {
|
filterValue: filterType,
|
||||||
setState(() {
|
onClear: () {
|
||||||
filterType = null;
|
setState(() {
|
||||||
});
|
filterType = null;
|
||||||
_keyType.currentState!.reset();
|
});
|
||||||
},
|
_controllerType.clear();
|
||||||
icon: const Icon(Icons.delete),
|
},
|
||||||
)
|
|
||||||
: null,
|
|
||||||
onSelected: (String? selection) {
|
onSelected: (String? selection) {
|
||||||
setState(() {
|
setState(() {
|
||||||
filterType = selection;
|
filterType = selection;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
dropdownMenuEntries:
|
entries: type.toList(),
|
||||||
type.map<DropdownMenuEntry<String>>((String entry) {
|
),
|
||||||
return DropdownMenuEntry<String>(
|
DropdownMenuWidget(
|
||||||
value: entry,
|
formKey: _keySupport,
|
||||||
label: entry,
|
label: 'Förderprogramm',
|
||||||
);
|
controller: _controllerSupport,
|
||||||
}).toList(),
|
filterValue: filterSupport,
|
||||||
|
onClear: () {
|
||||||
|
setState(() {
|
||||||
|
filterSupport = null;
|
||||||
|
});
|
||||||
|
_controllerSupport.clear();
|
||||||
|
},
|
||||||
|
onSelected: (String? selection) {
|
||||||
|
setState(() {
|
||||||
|
filterSupport = selection;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
entries: support.toList(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget getCard(BuildContext context, Massnahme massnahme) {
|
Widget getCard(BuildContext context, Massnahme massnahme) {
|
||||||
Color background = Colors.white;
|
final Map<String, Color> actionGroupColors = {
|
||||||
switch (massnahme.actionGroup?.value) {
|
'Baulelemente': const Color(0xffFFD269),
|
||||||
case 'Baulelemente':
|
'Begrünung': const Color(0xff40DD74),
|
||||||
background = const Color(0xffFFD269);
|
'Bewirtschaftung': const Color(0xffBF72ED),
|
||||||
break;
|
'Nisthilfe': const Color(0xffDAE3FD),
|
||||||
case 'Begrünung':
|
'Pflanzung': const Color(0xff40D6E9),
|
||||||
background = const Color(0xff40DD74);
|
'Sondermaßnahmen': const Color(0xff689EF1),
|
||||||
break;
|
};
|
||||||
case 'Bewirtschaftung':
|
|
||||||
background = const Color(0xffBF72ED);
|
|
||||||
break;
|
|
||||||
case 'Nisthilfe':
|
|
||||||
background = const Color(0xffDAE3FD);
|
|
||||||
break;
|
|
||||||
case 'Pflanzung':
|
|
||||||
background = const Color(0xff40D6E9);
|
|
||||||
break;
|
|
||||||
case 'Sondermaßnahmen':
|
|
||||||
background = const Color(0xff689EF1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
var image;
|
Color background =
|
||||||
if (massnahme.files != null && massnahme.files!.isNotEmpty) {
|
actionGroupColors[massnahme.actionGroup?.value] ?? Colors.white;
|
||||||
if (massnahme.files![0].thumbnails?.card_cover?.url != null) {
|
|
||||||
image = CachedNetworkImage(
|
CachedNetworkImage? image = massnahme.getThumbnail();
|
||||||
imageUrl: massnahme.files![0].thumbnails!.card_cover!.url!,
|
|
||||||
placeholder: (context, url) => const CircularProgressIndicator(),
|
|
||||||
errorWidget: (context, url, error) => const Icon(Icons.error),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return Visibility(
|
return Visibility(
|
||||||
visible: visible[massnahme.id] ?? false,
|
visible: visible[massnahme.id] ?? false,
|
||||||
|
|
85
lib/src/pages/start/start_page.dart
Normal file
85
lib/src/pages/start/start_page.dart
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
import 'package:ambito/main.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import '../actions/actions_page.dart';
|
||||||
|
|
||||||
|
class StartPage extends StatefulWidget {
|
||||||
|
const StartPage({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<StartPage> createState() => StartPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class StartPageState extends State<StartPage> {
|
||||||
|
String activeLink = '';
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
activeLink = 'start';
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Scaffold(
|
||||||
|
body: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
const SizedBox(height: 50),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
|
children: [
|
||||||
|
_linkButton('start'),
|
||||||
|
_linkButton('database'),
|
||||||
|
_linkButton('designer'),
|
||||||
|
Image.asset(
|
||||||
|
'images/logo.png',
|
||||||
|
scale: 1.3,
|
||||||
|
),
|
||||||
|
_linkButton('service'),
|
||||||
|
_linkButton('network'),
|
||||||
|
_linkButton('contact'),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
const SizedBox(height: 50),
|
||||||
|
Expanded(
|
||||||
|
child: getContent(),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget getContent() {
|
||||||
|
if (activeLink == 'database') {
|
||||||
|
return const ActionsPage();
|
||||||
|
}
|
||||||
|
return Text(activeLink);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _linkButton(String link) {
|
||||||
|
double fontSize = 16;
|
||||||
|
return TextButton(
|
||||||
|
style: ButtonStyle(
|
||||||
|
overlayColor:
|
||||||
|
WidgetStateProperty.resolveWith<Color>((Set<WidgetState> states) {
|
||||||
|
return Colors.white;
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
onPressed: () {
|
||||||
|
setState(() {
|
||||||
|
activeLink = link;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
child: Text(
|
||||||
|
context.translate('page.start.links.$link.title'),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: fontSize,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
color: (activeLink == link)
|
||||||
|
? Colors.grey.shade400
|
||||||
|
: Colors.grey.shade800,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
1
lib/src/widgets/cards/card_massnahmen_list.dart
Normal file
1
lib/src/widgets/cards/card_massnahmen_list.dart
Normal file
|
@ -0,0 +1 @@
|
||||||
|
|
49
lib/src/widgets/form/dropdown_menu.dart
Normal file
49
lib/src/widgets/form/dropdown_menu.dart
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class DropdownMenuWidget extends StatelessWidget {
|
||||||
|
final Key formKey;
|
||||||
|
final String label;
|
||||||
|
final TextEditingController controller;
|
||||||
|
final String? filterValue;
|
||||||
|
final VoidCallback onClear;
|
||||||
|
final void Function(String?) onSelected;
|
||||||
|
final List<String> entries;
|
||||||
|
|
||||||
|
const DropdownMenuWidget({
|
||||||
|
super.key,
|
||||||
|
required this.formKey,
|
||||||
|
required this.label,
|
||||||
|
required this.controller,
|
||||||
|
required this.filterValue,
|
||||||
|
required this.onClear,
|
||||||
|
required this.onSelected,
|
||||||
|
required this.entries,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return DropdownMenu(
|
||||||
|
key: formKey,
|
||||||
|
label: Text(label),
|
||||||
|
controller: controller,
|
||||||
|
initialSelection: filterValue,
|
||||||
|
leadingIcon: (filterValue != null)
|
||||||
|
? IconButton(
|
||||||
|
onPressed: onClear,
|
||||||
|
icon: const Icon(Icons.cancel_outlined),
|
||||||
|
)
|
||||||
|
: const Icon(
|
||||||
|
Icons.cancel_outlined,
|
||||||
|
color: Colors.transparent,
|
||||||
|
),
|
||||||
|
onSelected: onSelected,
|
||||||
|
dropdownMenuEntries:
|
||||||
|
entries.map<DropdownMenuEntry<String>>((String entry) {
|
||||||
|
return DropdownMenuEntry<String>(
|
||||||
|
value: entry,
|
||||||
|
label: entry,
|
||||||
|
);
|
||||||
|
}).toList(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
69
pubspec.lock
69
pubspec.lock
|
@ -5,23 +5,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: _fe_analyzer_shared
|
name: _fe_analyzer_shared
|
||||||
sha256: f256b0c0ba6c7577c15e2e4e114755640a875e885099367bf6e012b19314c834
|
sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "72.0.0"
|
version: "67.0.0"
|
||||||
_macros:
|
|
||||||
dependency: transitive
|
|
||||||
description: dart
|
|
||||||
source: sdk
|
|
||||||
version: "0.3.2"
|
|
||||||
analyzer:
|
analyzer:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: analyzer
|
name: analyzer
|
||||||
sha256: b652861553cd3990d8ed361f7979dc6d7053a9ac8843fa73820ab68ce5410139
|
sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.7.0"
|
version: "6.4.1"
|
||||||
args:
|
args:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -90,18 +85,18 @@ packages:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: build_runner
|
name: build_runner
|
||||||
sha256: dd09dd4e2b078992f42aac7f1a622f01882a8492fef08486b27ddde929c19f04
|
sha256: "644dc98a0f179b872f612d3eb627924b578897c629788e858157fa5e704ca0c7"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.12"
|
version: "2.4.11"
|
||||||
build_runner_core:
|
build_runner_core:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: build_runner_core
|
name: build_runner_core
|
||||||
sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0
|
sha256: e3c79f69a64bdfcd8a776a3c28db4eb6e3fb5356d013ae5eb2e52007706d5dbe
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.3.2"
|
version: "7.3.1"
|
||||||
built_collection:
|
built_collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -226,10 +221,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: dart_style
|
name: dart_style
|
||||||
sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab"
|
sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.7"
|
version: "2.3.6"
|
||||||
dio:
|
dio:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -459,7 +454,7 @@ packages:
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.2"
|
version: "2.3.2"
|
||||||
http:
|
http:
|
||||||
dependency: transitive
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: http
|
name: http
|
||||||
sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
|
sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
|
||||||
|
@ -566,18 +561,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker
|
name: leak_tracker
|
||||||
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
|
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.0.5"
|
version: "10.0.4"
|
||||||
leak_tracker_flutter_testing:
|
leak_tracker_flutter_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker_flutter_testing
|
name: leak_tracker_flutter_testing
|
||||||
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
|
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.5"
|
version: "3.0.3"
|
||||||
leak_tracker_testing:
|
leak_tracker_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -618,14 +613,6 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.2.0"
|
||||||
macros:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: macros
|
|
||||||
sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.1.2-main.4"
|
|
||||||
maps_toolkit:
|
maps_toolkit:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -646,18 +633,18 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: material_color_utilities
|
name: material_color_utilities
|
||||||
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
|
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.11.1"
|
version: "0.8.0"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
|
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.15.0"
|
version: "1.12.0"
|
||||||
mgrs_dart:
|
mgrs_dart:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -939,10 +926,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: sqflite_common
|
name: sqflite_common
|
||||||
sha256: "4058172e418eb7e7f2058dcb7657d451a8fc264afa0dea4dbd0f304a57131611"
|
sha256: "3da423ce7baf868be70e2c0976c28a1bb2f73644268b7ffa7d2e08eab71f16a4"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.5.4+3"
|
version: "2.5.4"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -979,10 +966,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: synchronized
|
name: synchronized
|
||||||
sha256: "51b08572b9f091f8c3eb4d9d4be253f196ff0075d5ec9b10a884026d5b55d7bc"
|
sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.3.0+2"
|
version: "3.1.0+1"
|
||||||
term_glyph:
|
term_glyph:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -995,10 +982,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
|
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.2"
|
version: "0.7.0"
|
||||||
timing:
|
timing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1051,10 +1038,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vm_service
|
name: vm_service
|
||||||
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
|
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "14.2.5"
|
version: "14.2.1"
|
||||||
watcher:
|
watcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1128,5 +1115,5 @@ packages:
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.2"
|
version: "3.1.2"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.5.0 <4.0.0"
|
dart: ">=3.4.4 <4.0.0"
|
||||||
flutter: ">=3.22.0"
|
flutter: ">=3.22.0"
|
||||||
|
|
|
@ -36,6 +36,7 @@ dependencies:
|
||||||
expandable_text: ^2.3.0
|
expandable_text: ^2.3.0
|
||||||
path_provider: ^2.1.4
|
path_provider: ^2.1.4
|
||||||
cached_network_image: ^3.4.1
|
cached_network_image: ^3.4.1
|
||||||
|
http: ^1.2.2
|
||||||
|
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
|
|
Loading…
Reference in a new issue