PDF Export
This commit is contained in:
parent
bb16516891
commit
bb1e1ecc95
22 changed files with 1911 additions and 394 deletions
|
@ -64,6 +64,8 @@ void main() async {
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
MeasureRepository().buildMeasureComplete();
|
||||||
|
|
||||||
/*BaseApi().getContent('cart', false).then((carts) {
|
/*BaseApi().getContent('cart', false).then((carts) {
|
||||||
logger.i(carts);
|
logger.i(carts);
|
||||||
for (final cart in carts) {
|
for (final cart in carts) {
|
||||||
|
@ -82,6 +84,8 @@ void main() async {
|
||||||
|
|
||||||
await MeasureRepository().getCategoriesGroupsAndTypes();
|
await MeasureRepository().getCategoriesGroupsAndTypes();
|
||||||
|
|
||||||
|
MeasureRepository().buildMeasureMonths();
|
||||||
|
|
||||||
runApp(const Ambito());
|
runApp(const Ambito());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,31 +1,35 @@
|
||||||
import 'package:ambito/src/entity/cart/cart_element.dart';
|
import 'package:ambito/src/entity/cart/cart_element.dart';
|
||||||
import 'package:ambito/src/entity/entities.dart';
|
import 'package:ambito/src/entity/entities.dart';
|
||||||
|
import 'package:collection/collection.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_spinbox/flutter_spinbox.dart';
|
||||||
import 'package:syncfusion_flutter_datagrid/datagrid.dart';
|
import 'package:syncfusion_flutter_datagrid/datagrid.dart';
|
||||||
|
|
||||||
import '../../packages/ambito_theme/ambito_theme.dart';
|
import '../../packages/ambito_theme/ambito_theme.dart';
|
||||||
|
|
||||||
class CartDataSource extends DataGridSource {
|
class CartDataSource extends DataGridSource {
|
||||||
CartDataSource(
|
CartDataSource(
|
||||||
{required List<CartElement> cartElements, required this.context}) {
|
{required this.cartElements,
|
||||||
|
required this.context,
|
||||||
|
required this.controller}) {
|
||||||
dataGridRows = cartElements
|
dataGridRows = cartElements
|
||||||
.map<DataGridRow>(
|
.map<DataGridRow>(
|
||||||
(dataGridRow) => DataGridRow(
|
(dataGridRow) => DataGridRow(
|
||||||
cells: [
|
cells: [
|
||||||
DataGridCell<String>(
|
DataGridCell<String>(
|
||||||
columnName: 'name',
|
columnName: 'Material',
|
||||||
value: dataGridRow.name,
|
value: dataGridRow.name,
|
||||||
),
|
),
|
||||||
DataGridCell<String>(
|
DataGridCell<String>(
|
||||||
columnName: 'amount',
|
columnName: 'Menge',
|
||||||
value: dataGridRow.amount,
|
value: dataGridRow.amount,
|
||||||
),
|
),
|
||||||
DataGridCell<List<IdValue>>(
|
DataGridCell<List<IdValue>>(
|
||||||
columnName: 'provider',
|
columnName: 'Anbieter',
|
||||||
value: dataGridRow.provider,
|
value: dataGridRow.provider,
|
||||||
),
|
),
|
||||||
DataGridCell<String>(
|
DataGridCell<String>(
|
||||||
columnName: 'price',
|
columnName: 'Richtpreis',
|
||||||
value: dataGridRow.price.toString(),
|
value: dataGridRow.price.toString(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -35,8 +39,15 @@ class CartDataSource extends DataGridSource {
|
||||||
}
|
}
|
||||||
|
|
||||||
final BuildContext context;
|
final BuildContext context;
|
||||||
|
final List<CartElement> cartElements;
|
||||||
|
|
||||||
List<DataGridRow> dataGridRows = [];
|
List<DataGridRow> dataGridRows = [];
|
||||||
|
final DataGridController controller;
|
||||||
|
|
||||||
|
dynamic newCellValue;
|
||||||
|
|
||||||
|
/// Helps to control the editable text in the [TextField] widget.
|
||||||
|
TextEditingController editingController = TextEditingController();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<DataGridRow> get rows => dataGridRows;
|
List<DataGridRow> get rows => dataGridRows;
|
||||||
|
@ -47,7 +58,7 @@ class CartDataSource extends DataGridSource {
|
||||||
|
|
||||||
double completePrice = double.tryParse(row
|
double completePrice = double.tryParse(row
|
||||||
.getCells()
|
.getCells()
|
||||||
.where((cell) => cell.columnName == 'price')
|
.where((cell) => cell.columnName == 'Richtpreis')
|
||||||
.first
|
.first
|
||||||
.value
|
.value
|
||||||
.toString() ??
|
.toString() ??
|
||||||
|
@ -56,7 +67,7 @@ class CartDataSource extends DataGridSource {
|
||||||
|
|
||||||
int amount = int.tryParse(row
|
int amount = int.tryParse(row
|
||||||
.getCells()
|
.getCells()
|
||||||
.where((cell) => cell.columnName == 'amount')
|
.where((cell) => cell.columnName == 'Menge')
|
||||||
.first
|
.first
|
||||||
.value
|
.value
|
||||||
.toString() ??
|
.toString() ??
|
||||||
|
@ -70,7 +81,7 @@ class CartDataSource extends DataGridSource {
|
||||||
return DataGridRowAdapter(
|
return DataGridRowAdapter(
|
||||||
cells: row.getCells().map<Widget>(
|
cells: row.getCells().map<Widget>(
|
||||||
(dataGridCell) {
|
(dataGridCell) {
|
||||||
if (dataGridCell.columnName == 'provider') {
|
if (dataGridCell.columnName == 'Anbieter') {
|
||||||
final providerString =
|
final providerString =
|
||||||
dataGridCell.value.map((ele) => ele.value).toList().join(', ');
|
dataGridCell.value.map((ele) => ele.value).toList().join(', ');
|
||||||
return Container(
|
return Container(
|
||||||
|
@ -86,7 +97,7 @@ class CartDataSource extends DataGridSource {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dataGridCell.columnName == 'price') {
|
if (dataGridCell.columnName == 'Richtpreis') {
|
||||||
final priceString = amount == 1
|
final priceString = amount == 1
|
||||||
? '${dataGridCell.value ?? '0'}€'
|
? '${dataGridCell.value ?? '0'}€'
|
||||||
: '${completePrice.toStringAsFixed(2)}€ (${dataGridCell.value ?? '0'}€ pro Stk.)';
|
: '${completePrice.toStringAsFixed(2)}€ (${dataGridCell.value ?? '0'}€ pro Stk.)';
|
||||||
|
@ -102,41 +113,14 @@ class CartDataSource extends DataGridSource {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (dataGridCell.columnName == 'amount') {
|
if (dataGridCell.columnName == 'Menge') {
|
||||||
return Container(
|
return Container(
|
||||||
alignment: Alignment.centerLeft,
|
alignment: Alignment.centerLeft,
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
child: Row(
|
child: Text(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
dataGridCell.value,
|
||||||
children: [
|
textAlign: TextAlign.center,
|
||||||
IconButton(
|
style: theme.bodyMedium,
|
||||||
icon: Icon(
|
|
||||||
Icons.remove,
|
|
||||||
color: Theme.of(context).colorScheme.secondary,
|
|
||||||
),
|
|
||||||
padding:
|
|
||||||
EdgeInsets.symmetric(vertical: 4.0, horizontal: 18.0),
|
|
||||||
iconSize: 16.0,
|
|
||||||
color: Theme.of(context).primaryColor,
|
|
||||||
onPressed: () {},
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
dataGridCell.value,
|
|
||||||
textAlign: TextAlign.center,
|
|
||||||
style: theme.bodyMedium,
|
|
||||||
),
|
|
||||||
IconButton(
|
|
||||||
icon: Icon(
|
|
||||||
Icons.add,
|
|
||||||
color: Theme.of(context).colorScheme.secondary,
|
|
||||||
),
|
|
||||||
padding:
|
|
||||||
EdgeInsets.symmetric(vertical: 4.0, horizontal: 18.0),
|
|
||||||
iconSize: 16.0,
|
|
||||||
color: Theme.of(context).primaryColor,
|
|
||||||
onPressed: () {},
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -154,4 +138,54 @@ class CartDataSource extends DataGridSource {
|
||||||
},
|
},
|
||||||
).toList());
|
).toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget? buildEditWidget(DataGridRow dataGridRow,
|
||||||
|
RowColumnIndex rowColumnIndex, GridColumn column, CellSubmit submitCell) {
|
||||||
|
// Text going to display on editable widget
|
||||||
|
final String displayText = dataGridRow
|
||||||
|
.getCells()
|
||||||
|
.firstWhereOrNull((DataGridCell dataGridCell) =>
|
||||||
|
dataGridCell.columnName == column.columnName)
|
||||||
|
?.value
|
||||||
|
?.toString() ??
|
||||||
|
'';
|
||||||
|
|
||||||
|
// The new cell value must be reset.
|
||||||
|
// To avoid committing the [DataGridCell] value that was previously edited
|
||||||
|
// into the current non-modified [DataGridCell].
|
||||||
|
newCellValue = null;
|
||||||
|
|
||||||
|
final int dataRowIndex = dataGridRows.indexOf(dataGridRow);
|
||||||
|
|
||||||
|
final bool isNumericType = column.columnName == 'Menge';
|
||||||
|
|
||||||
|
return Container(
|
||||||
|
padding: const EdgeInsets.all(0),
|
||||||
|
alignment: isNumericType ? Alignment.centerRight : Alignment.centerLeft,
|
||||||
|
child: SpinBox(
|
||||||
|
min: 1,
|
||||||
|
max: 100,
|
||||||
|
value: double.parse(displayText),
|
||||||
|
onChanged: (value) {
|
||||||
|
//cartElements[dataRowIndex].amount = value.toString();
|
||||||
|
},
|
||||||
|
),
|
||||||
|
/*NumberInputWithIncrementDecrement(
|
||||||
|
controller: editingController,
|
||||||
|
buttonArrangement: ButtonArrangement.incRightDecLeft,
|
||||||
|
min: 1,
|
||||||
|
initialValue: int.parse(displayText),
|
||||||
|
enableMinMaxClamping: true,
|
||||||
|
incIcon: Icons.add,
|
||||||
|
decIcon: Icons.remove,
|
||||||
|
onChanged: (value) {
|
||||||
|
logger.d('changed to $value');
|
||||||
|
},
|
||||||
|
onSubmitted: (value) {
|
||||||
|
logger.i('submitted $value');
|
||||||
|
},
|
||||||
|
),*/
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import 'package:ambito/src/entity/_general/file/file_part.dart';
|
import 'package:ambito/src/entity/_general/file/file_part.dart';
|
||||||
import 'package:ambito/src/entity/_general/id_value_color/id_value_color.dart';
|
import 'package:ambito/src/entity/_general/id_value_color/id_value_color.dart';
|
||||||
|
import 'package:ambito/src/entity/base_entity.dart';
|
||||||
import 'package:cached_network_image/cached_network_image.dart';
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:isar/isar.dart';
|
import 'package:isar/isar.dart';
|
||||||
|
@ -13,11 +14,10 @@ part 'measure_complete.g.dart';
|
||||||
|
|
||||||
@JsonSerializable()
|
@JsonSerializable()
|
||||||
@collection
|
@collection
|
||||||
class MeasureComplete {
|
class MeasureComplete extends BaseEntity with EntityWithId {
|
||||||
MeasureComplete({required this.id, required this.name});
|
MeasureComplete();
|
||||||
|
|
||||||
final int id;
|
String? name;
|
||||||
final String name;
|
|
||||||
FilePart? image;
|
FilePart? image;
|
||||||
String? description;
|
String? description;
|
||||||
String? target;
|
String? target;
|
||||||
|
@ -66,8 +66,9 @@ class MeasureComplete {
|
||||||
List<String> helper = [];
|
List<String> helper = [];
|
||||||
List<FilePart> helperFiles = [];
|
List<FilePart> helperFiles = [];
|
||||||
|
|
||||||
MeasureComplete mc =
|
MeasureComplete mc = MeasureComplete()
|
||||||
MeasureComplete(id: json['id'], name: json['field_3021886']);
|
..id = json['id']
|
||||||
|
..name = json['field_3021886'];
|
||||||
if (json['field_2402548'] != null && json['field_2402548'].isNotEmpty) {
|
if (json['field_2402548'] != null && json['field_2402548'].isNotEmpty) {
|
||||||
mc.image = FilePart.fromJson(json['field_2402548'][0]);
|
mc.image = FilePart.fromJson(json['field_2402548'][0]);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -204,7 +204,14 @@ const MeasureCompleteSchema = IsarGeneratedSchema(
|
||||||
|
|
||||||
@isarProtected
|
@isarProtected
|
||||||
int serializeMeasureComplete(IsarWriter writer, MeasureComplete object) {
|
int serializeMeasureComplete(IsarWriter writer, MeasureComplete object) {
|
||||||
IsarCore.writeString(writer, 1, object.name);
|
{
|
||||||
|
final value = object.name;
|
||||||
|
if (value == null) {
|
||||||
|
IsarCore.writeNull(writer, 1);
|
||||||
|
} else {
|
||||||
|
IsarCore.writeString(writer, 1, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
{
|
{
|
||||||
final value = object.image;
|
final value = object.image;
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
|
@ -593,14 +600,8 @@ int serializeMeasureComplete(IsarWriter writer, MeasureComplete object) {
|
||||||
|
|
||||||
@isarProtected
|
@isarProtected
|
||||||
MeasureComplete deserializeMeasureComplete(IsarReader reader) {
|
MeasureComplete deserializeMeasureComplete(IsarReader reader) {
|
||||||
final int _id;
|
final object = MeasureComplete();
|
||||||
_id = IsarCore.readId(reader);
|
object.name = IsarCore.readString(reader, 1);
|
||||||
final String _name;
|
|
||||||
_name = IsarCore.readString(reader, 1) ?? '';
|
|
||||||
final object = MeasureComplete(
|
|
||||||
id: _id,
|
|
||||||
name: _name,
|
|
||||||
);
|
|
||||||
{
|
{
|
||||||
final objectReader = IsarCore.readObject(reader, 2);
|
final objectReader = IsarCore.readObject(reader, 2);
|
||||||
if (objectReader.isNull) {
|
if (objectReader.isNull) {
|
||||||
|
@ -840,16 +841,15 @@ MeasureComplete deserializeMeasureComplete(IsarReader reader) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
object.id = IsarCore.readId(reader);
|
||||||
return object;
|
return object;
|
||||||
}
|
}
|
||||||
|
|
||||||
@isarProtected
|
@isarProtected
|
||||||
dynamic deserializeMeasureCompleteProp(IsarReader reader, int property) {
|
dynamic deserializeMeasureCompleteProp(IsarReader reader, int property) {
|
||||||
switch (property) {
|
switch (property) {
|
||||||
case 0:
|
|
||||||
return IsarCore.readId(reader);
|
|
||||||
case 1:
|
case 1:
|
||||||
return IsarCore.readString(reader, 1) ?? '';
|
return IsarCore.readString(reader, 1);
|
||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
final objectReader = IsarCore.readObject(reader, 2);
|
final objectReader = IsarCore.readObject(reader, 2);
|
||||||
|
@ -1131,6 +1131,8 @@ dynamic deserializeMeasureCompleteProp(IsarReader reader, int property) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case 0:
|
||||||
|
return IsarCore.readId(reader);
|
||||||
default:
|
default:
|
||||||
throw ArgumentError('Unknown property: $property');
|
throw ArgumentError('Unknown property: $property');
|
||||||
}
|
}
|
||||||
|
@ -1578,94 +1580,22 @@ extension MeasureCompleteQueryBuilderUpdate
|
||||||
extension MeasureCompleteQueryFilter
|
extension MeasureCompleteQueryFilter
|
||||||
on QueryBuilder<MeasureComplete, MeasureComplete, QFilterCondition> {
|
on QueryBuilder<MeasureComplete, MeasureComplete, QFilterCondition> {
|
||||||
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
||||||
idEqualTo(
|
nameIsNull() {
|
||||||
int value,
|
|
||||||
) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addFilterCondition(
|
return query.addFilterCondition(const IsNullCondition(property: 1));
|
||||||
EqualCondition(
|
|
||||||
property: 0,
|
|
||||||
value: value,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
||||||
idGreaterThan(
|
nameIsNotNull() {
|
||||||
int value,
|
return QueryBuilder.apply(not(), (query) {
|
||||||
) {
|
return query.addFilterCondition(const IsNullCondition(property: 1));
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addFilterCondition(
|
|
||||||
GreaterCondition(
|
|
||||||
property: 0,
|
|
||||||
value: value,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
|
||||||
idGreaterThanOrEqualTo(
|
|
||||||
int value,
|
|
||||||
) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addFilterCondition(
|
|
||||||
GreaterOrEqualCondition(
|
|
||||||
property: 0,
|
|
||||||
value: value,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
|
||||||
idLessThan(
|
|
||||||
int value,
|
|
||||||
) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addFilterCondition(
|
|
||||||
LessCondition(
|
|
||||||
property: 0,
|
|
||||||
value: value,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
|
||||||
idLessThanOrEqualTo(
|
|
||||||
int value,
|
|
||||||
) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addFilterCondition(
|
|
||||||
LessOrEqualCondition(
|
|
||||||
property: 0,
|
|
||||||
value: value,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
|
||||||
idBetween(
|
|
||||||
int lower,
|
|
||||||
int upper,
|
|
||||||
) {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addFilterCondition(
|
|
||||||
BetweenCondition(
|
|
||||||
property: 0,
|
|
||||||
lower: lower,
|
|
||||||
upper: upper,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
||||||
nameEqualTo(
|
nameEqualTo(
|
||||||
String value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1681,7 +1611,7 @@ extension MeasureCompleteQueryFilter
|
||||||
|
|
||||||
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
||||||
nameGreaterThan(
|
nameGreaterThan(
|
||||||
String value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1697,7 +1627,7 @@ extension MeasureCompleteQueryFilter
|
||||||
|
|
||||||
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
||||||
nameGreaterThanOrEqualTo(
|
nameGreaterThanOrEqualTo(
|
||||||
String value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1713,7 +1643,7 @@ extension MeasureCompleteQueryFilter
|
||||||
|
|
||||||
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
||||||
nameLessThan(
|
nameLessThan(
|
||||||
String value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1729,7 +1659,7 @@ extension MeasureCompleteQueryFilter
|
||||||
|
|
||||||
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
||||||
nameLessThanOrEqualTo(
|
nameLessThanOrEqualTo(
|
||||||
String value, {
|
String? value, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -1745,8 +1675,8 @@ extension MeasureCompleteQueryFilter
|
||||||
|
|
||||||
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
||||||
nameBetween(
|
nameBetween(
|
||||||
String lower,
|
String? lower,
|
||||||
String upper, {
|
String? upper, {
|
||||||
bool caseSensitive = true,
|
bool caseSensitive = true,
|
||||||
}) {
|
}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -9643,6 +9573,92 @@ extension MeasureCompleteQueryFilter
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
||||||
|
idEqualTo(
|
||||||
|
int value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
EqualCondition(
|
||||||
|
property: 0,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
||||||
|
idGreaterThan(
|
||||||
|
int value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterCondition(
|
||||||
|
property: 0,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
||||||
|
idGreaterThanOrEqualTo(
|
||||||
|
int value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterOrEqualCondition(
|
||||||
|
property: 0,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
||||||
|
idLessThan(
|
||||||
|
int value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessCondition(
|
||||||
|
property: 0,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
||||||
|
idLessThanOrEqualTo(
|
||||||
|
int value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessOrEqualCondition(
|
||||||
|
property: 0,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterFilterCondition>
|
||||||
|
idBetween(
|
||||||
|
int lower,
|
||||||
|
int upper,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
BetweenCondition(
|
||||||
|
property: 0,
|
||||||
|
lower: lower,
|
||||||
|
upper: upper,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension MeasureCompleteQueryObject
|
extension MeasureCompleteQueryObject
|
||||||
|
@ -9657,18 +9673,6 @@ extension MeasureCompleteQueryObject
|
||||||
|
|
||||||
extension MeasureCompleteQuerySortBy
|
extension MeasureCompleteQuerySortBy
|
||||||
on QueryBuilder<MeasureComplete, MeasureComplete, QSortBy> {
|
on QueryBuilder<MeasureComplete, MeasureComplete, QSortBy> {
|
||||||
QueryBuilder<MeasureComplete, MeasureComplete, QAfterSortBy> sortById() {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addSortBy(0);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<MeasureComplete, MeasureComplete, QAfterSortBy> sortByIdDesc() {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addSortBy(0, sort: Sort.desc);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<MeasureComplete, MeasureComplete, QAfterSortBy> sortByName(
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterSortBy> sortByName(
|
||||||
{bool caseSensitive = true}) {
|
{bool caseSensitive = true}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -10277,22 +10281,22 @@ extension MeasureCompleteQuerySortBy
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
extension MeasureCompleteQuerySortThenBy
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterSortBy> sortById() {
|
||||||
on QueryBuilder<MeasureComplete, MeasureComplete, QSortThenBy> {
|
|
||||||
QueryBuilder<MeasureComplete, MeasureComplete, QAfterSortBy> thenById() {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(0);
|
return query.addSortBy(0);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryBuilder<MeasureComplete, MeasureComplete, QAfterSortBy> thenByIdDesc() {
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterSortBy> sortByIdDesc() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(0, sort: Sort.desc);
|
return query.addSortBy(0, sort: Sort.desc);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension MeasureCompleteQuerySortThenBy
|
||||||
|
on QueryBuilder<MeasureComplete, MeasureComplete, QSortThenBy> {
|
||||||
QueryBuilder<MeasureComplete, MeasureComplete, QAfterSortBy> thenByName(
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterSortBy> thenByName(
|
||||||
{bool caseSensitive = true}) {
|
{bool caseSensitive = true}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -10698,6 +10702,18 @@ extension MeasureCompleteQuerySortThenBy
|
||||||
return query.addSortBy(40, sort: Sort.desc, caseSensitive: caseSensitive);
|
return query.addSortBy(40, sort: Sort.desc, caseSensitive: caseSensitive);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterSortBy> thenById() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addSortBy(0);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureComplete, MeasureComplete, QAfterSortBy> thenByIdDesc() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addSortBy(0, sort: Sort.desc);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension MeasureCompleteQueryWhereDistinct
|
extension MeasureCompleteQueryWhereDistinct
|
||||||
|
@ -10985,13 +11001,7 @@ extension MeasureCompleteQueryWhereDistinct
|
||||||
|
|
||||||
extension MeasureCompleteQueryProperty1
|
extension MeasureCompleteQueryProperty1
|
||||||
on QueryBuilder<MeasureComplete, MeasureComplete, QProperty> {
|
on QueryBuilder<MeasureComplete, MeasureComplete, QProperty> {
|
||||||
QueryBuilder<MeasureComplete, int, QAfterProperty> idProperty() {
|
QueryBuilder<MeasureComplete, String?, QAfterProperty> nameProperty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
|
||||||
return query.addProperty(0);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryBuilder<MeasureComplete, String, QAfterProperty> nameProperty() {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addProperty(1);
|
return query.addProperty(1);
|
||||||
});
|
});
|
||||||
|
@ -11266,17 +11276,17 @@ extension MeasureCompleteQueryProperty1
|
||||||
return query.addProperty(42);
|
return query.addProperty(42);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
extension MeasureCompleteQueryProperty2<R>
|
QueryBuilder<MeasureComplete, int, QAfterProperty> idProperty() {
|
||||||
on QueryBuilder<MeasureComplete, R, QAfterProperty> {
|
|
||||||
QueryBuilder<MeasureComplete, (R, int), QAfterProperty> idProperty() {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addProperty(0);
|
return query.addProperty(0);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QueryBuilder<MeasureComplete, (R, String), QAfterProperty> nameProperty() {
|
extension MeasureCompleteQueryProperty2<R>
|
||||||
|
on QueryBuilder<MeasureComplete, R, QAfterProperty> {
|
||||||
|
QueryBuilder<MeasureComplete, (R, String?), QAfterProperty> nameProperty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addProperty(1);
|
return query.addProperty(1);
|
||||||
});
|
});
|
||||||
|
@ -11565,17 +11575,17 @@ extension MeasureCompleteQueryProperty2<R>
|
||||||
return query.addProperty(42);
|
return query.addProperty(42);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
extension MeasureCompleteQueryProperty3<R1, R2>
|
QueryBuilder<MeasureComplete, (R, int), QAfterProperty> idProperty() {
|
||||||
on QueryBuilder<MeasureComplete, (R1, R2), QAfterProperty> {
|
|
||||||
QueryBuilder<MeasureComplete, (R1, R2, int), QOperations> idProperty() {
|
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addProperty(0);
|
return query.addProperty(0);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QueryBuilder<MeasureComplete, (R1, R2, String), QOperations> nameProperty() {
|
extension MeasureCompleteQueryProperty3<R1, R2>
|
||||||
|
on QueryBuilder<MeasureComplete, (R1, R2), QAfterProperty> {
|
||||||
|
QueryBuilder<MeasureComplete, (R1, R2, String?), QOperations> nameProperty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addProperty(1);
|
return query.addProperty(1);
|
||||||
});
|
});
|
||||||
|
@ -11867,6 +11877,12 @@ extension MeasureCompleteQueryProperty3<R1, R2>
|
||||||
return query.addProperty(42);
|
return query.addProperty(42);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureComplete, (R1, R2, int), QOperations> idProperty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addProperty(0);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
@ -11874,10 +11890,9 @@ extension MeasureCompleteQueryProperty3<R1, R2>
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|
||||||
MeasureComplete _$MeasureCompleteFromJson(Map<String, dynamic> json) =>
|
MeasureComplete _$MeasureCompleteFromJson(Map<String, dynamic> json) =>
|
||||||
MeasureComplete(
|
MeasureComplete()
|
||||||
id: (json['id'] as num).toInt(),
|
..id = (json['id'] as num).toInt()
|
||||||
name: json['name'] as String,
|
..name = json['name'] as String?
|
||||||
)
|
|
||||||
..image = json['image'] == null
|
..image = json['image'] == null
|
||||||
? null
|
? null
|
||||||
: FilePart.fromJson(json['image'] as Map<String, dynamic>)
|
: FilePart.fromJson(json['image'] as Map<String, dynamic>)
|
||||||
|
|
|
@ -8,11 +8,11 @@ class MeasureDetailsRepository extends BaseDB {
|
||||||
@override
|
@override
|
||||||
IsarCollection collection = isar.measureDetails;
|
IsarCollection collection = isar.measureDetails;
|
||||||
|
|
||||||
MeasureDetails getDetailsForMeasure(String measure) {
|
MeasureDetails? getDetailsForMeasure(String measure) {
|
||||||
List<MeasureDetails> all = isar.measureDetails.where().findAll();
|
List<MeasureDetails> all = isar.measureDetails.where().findAll();
|
||||||
return all
|
return all
|
||||||
.where(
|
.where(
|
||||||
(el) => el.measure!.map((m) => m.value).toList().contains(measure))
|
(el) => el.measure!.map((m) => m.value).toList().contains(measure))
|
||||||
.first;
|
.firstOrNull;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,8 @@ import 'package:ambito/src/entity/lists/list_repository.dart';
|
||||||
import 'package:ambito/src/entity/measure/category/measure_category.dart';
|
import 'package:ambito/src/entity/measure/category/measure_category.dart';
|
||||||
import 'package:ambito/src/entity/measure/complete/measure_complete.dart';
|
import 'package:ambito/src/entity/measure/complete/measure_complete.dart';
|
||||||
import 'package:ambito/src/entity/measure/measure_grouping.dart';
|
import 'package:ambito/src/entity/measure/measure_grouping.dart';
|
||||||
|
import 'package:ambito/src/entity/measure/months/measure_months.dart';
|
||||||
|
import 'package:ambito/src/entity/measure/types_details/measure_types_details_repository.dart';
|
||||||
import 'package:ambito/src/extensions/extensions.dart';
|
import 'package:ambito/src/extensions/extensions.dart';
|
||||||
import 'package:ambito/src/packages/ambito_db/base_db.dart';
|
import 'package:ambito/src/packages/ambito_db/base_db.dart';
|
||||||
import 'package:isar/isar.dart';
|
import 'package:isar/isar.dart';
|
||||||
|
@ -11,6 +13,7 @@ import 'package:isar/isar.dart';
|
||||||
import '../../consts/consts.dart';
|
import '../../consts/consts.dart';
|
||||||
import '../../packages/ambito_notifier/notifier/filter_notifier.dart';
|
import '../../packages/ambito_notifier/notifier/filter_notifier.dart';
|
||||||
import '../../widgets/form/fields/field_dropdown.dart';
|
import '../../widgets/form/fields/field_dropdown.dart';
|
||||||
|
import 'details/measure_details_repository.dart';
|
||||||
import 'group/measure_group.dart';
|
import 'group/measure_group.dart';
|
||||||
|
|
||||||
class MeasureRepository extends BaseDB {
|
class MeasureRepository extends BaseDB {
|
||||||
|
@ -260,4 +263,68 @@ class MeasureRepository extends BaseDB {
|
||||||
MeasureComplete? getMeasureCompleteByName(String name) {
|
MeasureComplete? getMeasureCompleteByName(String name) {
|
||||||
return isar.measureCompletes.where().nameEqualTo(name).findFirst();
|
return isar.measureCompletes.where().nameEqualTo(name).findFirst();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void buildMeasureComplete() {
|
||||||
|
List<MeasureComplete> allMeasureCompletes = [];
|
||||||
|
|
||||||
|
List<MeasureGeneral> measuresGeneral =
|
||||||
|
isar.measureGenerals.where().findAll();
|
||||||
|
|
||||||
|
for (final measureGeneral in measuresGeneral) {
|
||||||
|
Map<String, dynamic> combined = {'id': measureGeneral.id};
|
||||||
|
|
||||||
|
// Fetch related details and types
|
||||||
|
final measureDetails =
|
||||||
|
MeasureDetailsRepository().getDetailsForMeasure(measureGeneral.name!);
|
||||||
|
|
||||||
|
final MeasureTypes? measureType = MeasureRepository().getTypeByName(
|
||||||
|
measureGeneral.measureType!.map((el) => el.value).first ?? '');
|
||||||
|
final measureTypesDetails = MeasureTypesDetailsRepository()
|
||||||
|
.getTypeDetailsForType(measureType?.measureType ?? '');
|
||||||
|
// Save preferences and populate combined map
|
||||||
|
prefs.setBool('extended_json', true).then((_) {
|
||||||
|
_mergeToCombinedMap(combined, measureGeneral?.toJson());
|
||||||
|
_mergeToCombinedMap(combined, measureDetails?.toJson());
|
||||||
|
_mergeToCombinedMap(combined, measureType?.toJson());
|
||||||
|
_mergeToCombinedMap(combined, measureTypesDetails?.toJson());
|
||||||
|
|
||||||
|
isar.write((isar) {
|
||||||
|
isar.measureCompletes.put(MeasureComplete.fromJson(combined));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _mergeToCombinedMap(
|
||||||
|
Map<String, dynamic> combined, Map<String, dynamic>? data) {
|
||||||
|
data?.forEach((key, value) {
|
||||||
|
if (key != 'id') {
|
||||||
|
combined[key] = value;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void buildMeasureMonths() {
|
||||||
|
List<MeasureComplete> allCompletes =
|
||||||
|
isar.measureCompletes.where().findAll();
|
||||||
|
List<MeasureMonths> measureMonths = [];
|
||||||
|
|
||||||
|
for (final complete in allCompletes) {
|
||||||
|
List<bool> apply = months
|
||||||
|
.map((item) => complete.applyMonths?.contains(item) ?? false)
|
||||||
|
.toList();
|
||||||
|
List<bool> maint = months
|
||||||
|
.map((item) => complete.maintenanceMonths?.contains(item) ?? false)
|
||||||
|
.toList();
|
||||||
|
final measureMonth = MeasureMonths()
|
||||||
|
..id = complete.id
|
||||||
|
..name = complete.name
|
||||||
|
..maintenanceList = maint
|
||||||
|
..applyList = apply;
|
||||||
|
|
||||||
|
isar.write((isar) {
|
||||||
|
isar.measureMonths.put(measureMonth);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
46
lib/src/entity/measure/months/measure_months.dart
Normal file
46
lib/src/entity/measure/months/measure_months.dart
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
import 'package:ambito/src/entity/base_entity.dart';
|
||||||
|
import 'package:isar/isar.dart';
|
||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
|
||||||
|
part 'measure_months.g.dart';
|
||||||
|
|
||||||
|
@collection
|
||||||
|
@JsonSerializable(explicitToJson: true)
|
||||||
|
class MeasureMonths extends BaseEntity with EntityWithId {
|
||||||
|
MeasureMonths();
|
||||||
|
|
||||||
|
String? name;
|
||||||
|
List<bool>? maintenanceList = [
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false
|
||||||
|
];
|
||||||
|
List<bool>? applyList = [
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false
|
||||||
|
];
|
||||||
|
|
||||||
|
factory MeasureMonths.fromJson(Map<String, dynamic> json) =>
|
||||||
|
_$MeasureMonthsFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$MeasureMonthsToJson(this);
|
||||||
|
}
|
850
lib/src/entity/measure/months/measure_months.g.dart
Normal file
850
lib/src/entity/measure/months/measure_months.g.dart
Normal file
|
@ -0,0 +1,850 @@
|
||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'measure_months.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// _IsarCollectionGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
// coverage:ignore-file
|
||||||
|
// ignore_for_file: duplicate_ignore, invalid_use_of_protected_member, lines_longer_than_80_chars, constant_identifier_names, avoid_js_rounded_ints, no_leading_underscores_for_local_identifiers, require_trailing_commas, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_in_if_null_operators, library_private_types_in_public_api, prefer_const_constructors
|
||||||
|
// ignore_for_file: type=lint
|
||||||
|
|
||||||
|
extension GetMeasureMonthsCollection on Isar {
|
||||||
|
IsarCollection<int, MeasureMonths> get measureMonths => this.collection();
|
||||||
|
}
|
||||||
|
|
||||||
|
const MeasureMonthsSchema = IsarGeneratedSchema(
|
||||||
|
schema: IsarSchema(
|
||||||
|
name: 'MeasureMonths',
|
||||||
|
idName: 'id',
|
||||||
|
embedded: false,
|
||||||
|
properties: [
|
||||||
|
IsarPropertySchema(
|
||||||
|
name: 'name',
|
||||||
|
type: IsarType.string,
|
||||||
|
),
|
||||||
|
IsarPropertySchema(
|
||||||
|
name: 'maintenanceList',
|
||||||
|
type: IsarType.boolList,
|
||||||
|
),
|
||||||
|
IsarPropertySchema(
|
||||||
|
name: 'applyList',
|
||||||
|
type: IsarType.boolList,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
indexes: [],
|
||||||
|
),
|
||||||
|
converter: IsarObjectConverter<int, MeasureMonths>(
|
||||||
|
serialize: serializeMeasureMonths,
|
||||||
|
deserialize: deserializeMeasureMonths,
|
||||||
|
deserializeProperty: deserializeMeasureMonthsProp,
|
||||||
|
),
|
||||||
|
embeddedSchemas: [],
|
||||||
|
);
|
||||||
|
|
||||||
|
@isarProtected
|
||||||
|
int serializeMeasureMonths(IsarWriter writer, MeasureMonths object) {
|
||||||
|
{
|
||||||
|
final value = object.name;
|
||||||
|
if (value == null) {
|
||||||
|
IsarCore.writeNull(writer, 1);
|
||||||
|
} else {
|
||||||
|
IsarCore.writeString(writer, 1, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
final list = object.maintenanceList;
|
||||||
|
if (list == null) {
|
||||||
|
IsarCore.writeNull(writer, 2);
|
||||||
|
} else {
|
||||||
|
final listWriter = IsarCore.beginList(writer, 2, list.length);
|
||||||
|
for (var i = 0; i < list.length; i++) {
|
||||||
|
IsarCore.writeBool(listWriter, i, list[i]);
|
||||||
|
}
|
||||||
|
IsarCore.endList(writer, listWriter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
final list = object.applyList;
|
||||||
|
if (list == null) {
|
||||||
|
IsarCore.writeNull(writer, 3);
|
||||||
|
} else {
|
||||||
|
final listWriter = IsarCore.beginList(writer, 3, list.length);
|
||||||
|
for (var i = 0; i < list.length; i++) {
|
||||||
|
IsarCore.writeBool(listWriter, i, list[i]);
|
||||||
|
}
|
||||||
|
IsarCore.endList(writer, listWriter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return object.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
@isarProtected
|
||||||
|
MeasureMonths deserializeMeasureMonths(IsarReader reader) {
|
||||||
|
final object = MeasureMonths();
|
||||||
|
object.name = IsarCore.readString(reader, 1);
|
||||||
|
{
|
||||||
|
final length = IsarCore.readList(reader, 2, IsarCore.readerPtrPtr);
|
||||||
|
{
|
||||||
|
final reader = IsarCore.readerPtr;
|
||||||
|
if (reader.isNull) {
|
||||||
|
object.maintenanceList = null;
|
||||||
|
} else {
|
||||||
|
final list = List<bool>.filled(length, false, growable: true);
|
||||||
|
for (var i = 0; i < length; i++) {
|
||||||
|
list[i] = IsarCore.readBool(reader, i);
|
||||||
|
}
|
||||||
|
IsarCore.freeReader(reader);
|
||||||
|
object.maintenanceList = list;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
final length = IsarCore.readList(reader, 3, IsarCore.readerPtrPtr);
|
||||||
|
{
|
||||||
|
final reader = IsarCore.readerPtr;
|
||||||
|
if (reader.isNull) {
|
||||||
|
object.applyList = null;
|
||||||
|
} else {
|
||||||
|
final list = List<bool>.filled(length, false, growable: true);
|
||||||
|
for (var i = 0; i < length; i++) {
|
||||||
|
list[i] = IsarCore.readBool(reader, i);
|
||||||
|
}
|
||||||
|
IsarCore.freeReader(reader);
|
||||||
|
object.applyList = list;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
object.id = IsarCore.readId(reader);
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
|
||||||
|
@isarProtected
|
||||||
|
dynamic deserializeMeasureMonthsProp(IsarReader reader, int property) {
|
||||||
|
switch (property) {
|
||||||
|
case 1:
|
||||||
|
return IsarCore.readString(reader, 1);
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
final length = IsarCore.readList(reader, 2, IsarCore.readerPtrPtr);
|
||||||
|
{
|
||||||
|
final reader = IsarCore.readerPtr;
|
||||||
|
if (reader.isNull) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
final list = List<bool>.filled(length, false, growable: true);
|
||||||
|
for (var i = 0; i < length; i++) {
|
||||||
|
list[i] = IsarCore.readBool(reader, i);
|
||||||
|
}
|
||||||
|
IsarCore.freeReader(reader);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
final length = IsarCore.readList(reader, 3, IsarCore.readerPtrPtr);
|
||||||
|
{
|
||||||
|
final reader = IsarCore.readerPtr;
|
||||||
|
if (reader.isNull) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
final list = List<bool>.filled(length, false, growable: true);
|
||||||
|
for (var i = 0; i < length; i++) {
|
||||||
|
list[i] = IsarCore.readBool(reader, i);
|
||||||
|
}
|
||||||
|
IsarCore.freeReader(reader);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 0:
|
||||||
|
return IsarCore.readId(reader);
|
||||||
|
default:
|
||||||
|
throw ArgumentError('Unknown property: $property');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sealed class _MeasureMonthsUpdate {
|
||||||
|
bool call({
|
||||||
|
required int id,
|
||||||
|
String? name,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
class _MeasureMonthsUpdateImpl implements _MeasureMonthsUpdate {
|
||||||
|
const _MeasureMonthsUpdateImpl(this.collection);
|
||||||
|
|
||||||
|
final IsarCollection<int, MeasureMonths> collection;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool call({
|
||||||
|
required int id,
|
||||||
|
Object? name = ignore,
|
||||||
|
}) {
|
||||||
|
return collection.updateProperties([
|
||||||
|
id
|
||||||
|
], {
|
||||||
|
if (name != ignore) 1: name as String?,
|
||||||
|
}) >
|
||||||
|
0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sealed class _MeasureMonthsUpdateAll {
|
||||||
|
int call({
|
||||||
|
required List<int> id,
|
||||||
|
String? name,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
class _MeasureMonthsUpdateAllImpl implements _MeasureMonthsUpdateAll {
|
||||||
|
const _MeasureMonthsUpdateAllImpl(this.collection);
|
||||||
|
|
||||||
|
final IsarCollection<int, MeasureMonths> collection;
|
||||||
|
|
||||||
|
@override
|
||||||
|
int call({
|
||||||
|
required List<int> id,
|
||||||
|
Object? name = ignore,
|
||||||
|
}) {
|
||||||
|
return collection.updateProperties(id, {
|
||||||
|
if (name != ignore) 1: name as String?,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension MeasureMonthsUpdate on IsarCollection<int, MeasureMonths> {
|
||||||
|
_MeasureMonthsUpdate get update => _MeasureMonthsUpdateImpl(this);
|
||||||
|
|
||||||
|
_MeasureMonthsUpdateAll get updateAll => _MeasureMonthsUpdateAllImpl(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
sealed class _MeasureMonthsQueryUpdate {
|
||||||
|
int call({
|
||||||
|
String? name,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
class _MeasureMonthsQueryUpdateImpl implements _MeasureMonthsQueryUpdate {
|
||||||
|
const _MeasureMonthsQueryUpdateImpl(this.query, {this.limit});
|
||||||
|
|
||||||
|
final IsarQuery<MeasureMonths> query;
|
||||||
|
final int? limit;
|
||||||
|
|
||||||
|
@override
|
||||||
|
int call({
|
||||||
|
Object? name = ignore,
|
||||||
|
}) {
|
||||||
|
return query.updateProperties(limit: limit, {
|
||||||
|
if (name != ignore) 1: name as String?,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension MeasureMonthsQueryUpdate on IsarQuery<MeasureMonths> {
|
||||||
|
_MeasureMonthsQueryUpdate get updateFirst =>
|
||||||
|
_MeasureMonthsQueryUpdateImpl(this, limit: 1);
|
||||||
|
|
||||||
|
_MeasureMonthsQueryUpdate get updateAll =>
|
||||||
|
_MeasureMonthsQueryUpdateImpl(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
class _MeasureMonthsQueryBuilderUpdateImpl
|
||||||
|
implements _MeasureMonthsQueryUpdate {
|
||||||
|
const _MeasureMonthsQueryBuilderUpdateImpl(this.query, {this.limit});
|
||||||
|
|
||||||
|
final QueryBuilder<MeasureMonths, MeasureMonths, QOperations> query;
|
||||||
|
final int? limit;
|
||||||
|
|
||||||
|
@override
|
||||||
|
int call({
|
||||||
|
Object? name = ignore,
|
||||||
|
}) {
|
||||||
|
final q = query.build();
|
||||||
|
try {
|
||||||
|
return q.updateProperties(limit: limit, {
|
||||||
|
if (name != ignore) 1: name as String?,
|
||||||
|
});
|
||||||
|
} finally {
|
||||||
|
q.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension MeasureMonthsQueryBuilderUpdate
|
||||||
|
on QueryBuilder<MeasureMonths, MeasureMonths, QOperations> {
|
||||||
|
_MeasureMonthsQueryUpdate get updateFirst =>
|
||||||
|
_MeasureMonthsQueryBuilderUpdateImpl(this, limit: 1);
|
||||||
|
|
||||||
|
_MeasureMonthsQueryUpdate get updateAll =>
|
||||||
|
_MeasureMonthsQueryBuilderUpdateImpl(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
extension MeasureMonthsQueryFilter
|
||||||
|
on QueryBuilder<MeasureMonths, MeasureMonths, QFilterCondition> {
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
nameIsNull() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 1));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
nameIsNotNull() {
|
||||||
|
return QueryBuilder.apply(not(), (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 1));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition> nameEqualTo(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
EqualCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
nameGreaterThan(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
nameGreaterThanOrEqualTo(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterOrEqualCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
nameLessThan(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
nameLessThanOrEqualTo(
|
||||||
|
String? value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessOrEqualCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition> nameBetween(
|
||||||
|
String? lower,
|
||||||
|
String? upper, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
BetweenCondition(
|
||||||
|
property: 1,
|
||||||
|
lower: lower,
|
||||||
|
upper: upper,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
nameStartsWith(
|
||||||
|
String value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
StartsWithCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
nameEndsWith(
|
||||||
|
String value, {
|
||||||
|
bool caseSensitive = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
EndsWithCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
nameContains(String value, {bool caseSensitive = true}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
ContainsCondition(
|
||||||
|
property: 1,
|
||||||
|
value: value,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition> nameMatches(
|
||||||
|
String pattern,
|
||||||
|
{bool caseSensitive = true}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
MatchesCondition(
|
||||||
|
property: 1,
|
||||||
|
wildcard: pattern,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
nameIsEmpty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
const EqualCondition(
|
||||||
|
property: 1,
|
||||||
|
value: '',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
nameIsNotEmpty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
const GreaterCondition(
|
||||||
|
property: 1,
|
||||||
|
value: '',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
maintenanceListIsNull() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 2));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
maintenanceListIsNotNull() {
|
||||||
|
return QueryBuilder.apply(not(), (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 2));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
maintenanceListElementEqualTo(
|
||||||
|
bool value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
EqualCondition(
|
||||||
|
property: 2,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
maintenanceListIsEmpty() {
|
||||||
|
return not().group(
|
||||||
|
(q) => q.maintenanceListIsNull().or().maintenanceListIsNotEmpty(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
maintenanceListIsNotEmpty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
const GreaterOrEqualCondition(property: 2, value: null),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
applyListIsNull() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 3));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
applyListIsNotNull() {
|
||||||
|
return QueryBuilder.apply(not(), (query) {
|
||||||
|
return query.addFilterCondition(const IsNullCondition(property: 3));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
applyListElementEqualTo(
|
||||||
|
bool value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
EqualCondition(
|
||||||
|
property: 3,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
applyListIsEmpty() {
|
||||||
|
return not().group(
|
||||||
|
(q) => q.applyListIsNull().or().applyListIsNotEmpty(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
applyListIsNotEmpty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
const GreaterOrEqualCondition(property: 3, value: null),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition> idEqualTo(
|
||||||
|
int value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
EqualCondition(
|
||||||
|
property: 0,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
idGreaterThan(
|
||||||
|
int value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterCondition(
|
||||||
|
property: 0,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
idGreaterThanOrEqualTo(
|
||||||
|
int value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
GreaterOrEqualCondition(
|
||||||
|
property: 0,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition> idLessThan(
|
||||||
|
int value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessCondition(
|
||||||
|
property: 0,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition>
|
||||||
|
idLessThanOrEqualTo(
|
||||||
|
int value,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
LessOrEqualCondition(
|
||||||
|
property: 0,
|
||||||
|
value: value,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterFilterCondition> idBetween(
|
||||||
|
int lower,
|
||||||
|
int upper,
|
||||||
|
) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(
|
||||||
|
BetweenCondition(
|
||||||
|
property: 0,
|
||||||
|
lower: lower,
|
||||||
|
upper: upper,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension MeasureMonthsQueryObject
|
||||||
|
on QueryBuilder<MeasureMonths, MeasureMonths, QFilterCondition> {}
|
||||||
|
|
||||||
|
extension MeasureMonthsQuerySortBy
|
||||||
|
on QueryBuilder<MeasureMonths, MeasureMonths, QSortBy> {
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterSortBy> sortByName(
|
||||||
|
{bool caseSensitive = true}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addSortBy(
|
||||||
|
1,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterSortBy> sortByNameDesc(
|
||||||
|
{bool caseSensitive = true}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addSortBy(
|
||||||
|
1,
|
||||||
|
sort: Sort.desc,
|
||||||
|
caseSensitive: caseSensitive,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterSortBy> sortById() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addSortBy(0);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterSortBy> sortByIdDesc() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addSortBy(0, sort: Sort.desc);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension MeasureMonthsQuerySortThenBy
|
||||||
|
on QueryBuilder<MeasureMonths, MeasureMonths, QSortThenBy> {
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterSortBy> thenByName(
|
||||||
|
{bool caseSensitive = true}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addSortBy(1, caseSensitive: caseSensitive);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterSortBy> thenByNameDesc(
|
||||||
|
{bool caseSensitive = true}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addSortBy(1, sort: Sort.desc, caseSensitive: caseSensitive);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterSortBy> thenById() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addSortBy(0);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterSortBy> thenByIdDesc() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addSortBy(0, sort: Sort.desc);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension MeasureMonthsQueryWhereDistinct
|
||||||
|
on QueryBuilder<MeasureMonths, MeasureMonths, QDistinct> {
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterDistinct> distinctByName(
|
||||||
|
{bool caseSensitive = true}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addDistinctBy(1, caseSensitive: caseSensitive);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterDistinct>
|
||||||
|
distinctByMaintenanceList() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addDistinctBy(2);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, MeasureMonths, QAfterDistinct>
|
||||||
|
distinctByApplyList() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addDistinctBy(3);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension MeasureMonthsQueryProperty1
|
||||||
|
on QueryBuilder<MeasureMonths, MeasureMonths, QProperty> {
|
||||||
|
QueryBuilder<MeasureMonths, String?, QAfterProperty> nameProperty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addProperty(1);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, List<bool>?, QAfterProperty>
|
||||||
|
maintenanceListProperty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addProperty(2);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, List<bool>?, QAfterProperty> applyListProperty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addProperty(3);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, int, QAfterProperty> idProperty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addProperty(0);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension MeasureMonthsQueryProperty2<R>
|
||||||
|
on QueryBuilder<MeasureMonths, R, QAfterProperty> {
|
||||||
|
QueryBuilder<MeasureMonths, (R, String?), QAfterProperty> nameProperty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addProperty(1);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, (R, List<bool>?), QAfterProperty>
|
||||||
|
maintenanceListProperty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addProperty(2);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, (R, List<bool>?), QAfterProperty>
|
||||||
|
applyListProperty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addProperty(3);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, (R, int), QAfterProperty> idProperty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addProperty(0);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension MeasureMonthsQueryProperty3<R1, R2>
|
||||||
|
on QueryBuilder<MeasureMonths, (R1, R2), QAfterProperty> {
|
||||||
|
QueryBuilder<MeasureMonths, (R1, R2, String?), QOperations> nameProperty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addProperty(1);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, (R1, R2, List<bool>?), QOperations>
|
||||||
|
maintenanceListProperty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addProperty(2);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, (R1, R2, List<bool>?), QOperations>
|
||||||
|
applyListProperty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addProperty(3);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<MeasureMonths, (R1, R2, int), QOperations> idProperty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addProperty(0);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// JsonSerializableGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
MeasureMonths _$MeasureMonthsFromJson(Map<String, dynamic> json) =>
|
||||||
|
MeasureMonths()
|
||||||
|
..id = (json['id'] as num).toInt()
|
||||||
|
..name = json['name'] as String?
|
||||||
|
..maintenanceList = (json['maintenanceList'] as List<dynamic>?)
|
||||||
|
?.map((e) => e as bool)
|
||||||
|
.toList()
|
||||||
|
..applyList =
|
||||||
|
(json['applyList'] as List<dynamic>?)?.map((e) => e as bool).toList();
|
||||||
|
|
||||||
|
Map<String, dynamic> _$MeasureMonthsToJson(MeasureMonths instance) =>
|
||||||
|
<String, dynamic>{
|
||||||
|
'id': instance.id,
|
||||||
|
'name': instance.name,
|
||||||
|
'maintenanceList': instance.maintenanceList,
|
||||||
|
'applyList': instance.applyList,
|
||||||
|
};
|
147
lib/src/entity/measure/months/measure_months_datasource.dart
Normal file
147
lib/src/entity/measure/months/measure_months_datasource.dart
Normal file
|
@ -0,0 +1,147 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:syncfusion_flutter_datagrid/datagrid.dart';
|
||||||
|
|
||||||
|
import '../../../packages/ambito_theme/ambito_theme.dart';
|
||||||
|
import 'measure_months.dart';
|
||||||
|
|
||||||
|
class MeasureMonthsDatasource extends DataGridSource {
|
||||||
|
MeasureMonthsDatasource(
|
||||||
|
{required List<MeasureMonths> areas,
|
||||||
|
required this.context,
|
||||||
|
required this.type}) {
|
||||||
|
dataGridRows = areas
|
||||||
|
.map<DataGridRow>(
|
||||||
|
(dataGridRow) => DataGridRow(
|
||||||
|
cells: [
|
||||||
|
DataGridCell<String>(
|
||||||
|
columnName: 'measure',
|
||||||
|
value: dataGridRow.name,
|
||||||
|
),
|
||||||
|
DataGridCell<bool>(
|
||||||
|
columnName: 'jan',
|
||||||
|
value: type == 'apply'
|
||||||
|
? dataGridRow.applyList![0]
|
||||||
|
: dataGridRow.maintenanceList![0],
|
||||||
|
),
|
||||||
|
DataGridCell<bool>(
|
||||||
|
columnName: 'feb',
|
||||||
|
value: type == 'apply'
|
||||||
|
? dataGridRow.applyList![1]
|
||||||
|
: dataGridRow.maintenanceList![1],
|
||||||
|
),
|
||||||
|
DataGridCell<bool>(
|
||||||
|
columnName: 'mar',
|
||||||
|
value: type == 'apply'
|
||||||
|
? dataGridRow.applyList![2]
|
||||||
|
: dataGridRow.maintenanceList![2],
|
||||||
|
),
|
||||||
|
DataGridCell<bool>(
|
||||||
|
columnName: 'apr',
|
||||||
|
value: type == 'apply'
|
||||||
|
? dataGridRow.applyList![3]
|
||||||
|
: dataGridRow.maintenanceList![3],
|
||||||
|
),
|
||||||
|
DataGridCell<bool>(
|
||||||
|
columnName: 'may',
|
||||||
|
value: type == 'apply'
|
||||||
|
? dataGridRow.applyList![4]
|
||||||
|
: dataGridRow.maintenanceList![4],
|
||||||
|
),
|
||||||
|
DataGridCell<bool>(
|
||||||
|
columnName: 'jun',
|
||||||
|
value: type == 'apply'
|
||||||
|
? dataGridRow.applyList![5]
|
||||||
|
: dataGridRow.maintenanceList![5],
|
||||||
|
),
|
||||||
|
DataGridCell<bool>(
|
||||||
|
columnName: 'jul',
|
||||||
|
value: type == 'apply'
|
||||||
|
? dataGridRow.applyList![6]
|
||||||
|
: dataGridRow.maintenanceList![6],
|
||||||
|
),
|
||||||
|
DataGridCell<bool>(
|
||||||
|
columnName: 'aug',
|
||||||
|
value: type == 'apply'
|
||||||
|
? dataGridRow.applyList![7]
|
||||||
|
: dataGridRow.maintenanceList![7],
|
||||||
|
),
|
||||||
|
DataGridCell<bool>(
|
||||||
|
columnName: 'sep',
|
||||||
|
value: type == 'apply'
|
||||||
|
? dataGridRow.applyList![8]
|
||||||
|
: dataGridRow.maintenanceList![8],
|
||||||
|
),
|
||||||
|
DataGridCell<bool>(
|
||||||
|
columnName: 'oct',
|
||||||
|
value: type == 'apply'
|
||||||
|
? dataGridRow.applyList![9]
|
||||||
|
: dataGridRow.maintenanceList![9],
|
||||||
|
),
|
||||||
|
DataGridCell<bool>(
|
||||||
|
columnName: 'nov',
|
||||||
|
value: type == 'apply'
|
||||||
|
? dataGridRow.applyList![10]
|
||||||
|
: dataGridRow.maintenanceList![10],
|
||||||
|
),
|
||||||
|
DataGridCell<bool>(
|
||||||
|
columnName: 'dec',
|
||||||
|
value: type == 'apply'
|
||||||
|
? dataGridRow.applyList![11]
|
||||||
|
: dataGridRow.maintenanceList![11],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
final BuildContext context;
|
||||||
|
final String type;
|
||||||
|
|
||||||
|
List<DataGridRow> dataGridRows = [];
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<DataGridRow> get rows => dataGridRows;
|
||||||
|
|
||||||
|
@override
|
||||||
|
DataGridRowAdapter? buildRow(DataGridRow row) {
|
||||||
|
final AmbitoTheme theme = getTheme(context);
|
||||||
|
|
||||||
|
return DataGridRowAdapter(
|
||||||
|
cells: row.getCells().map<Widget>(
|
||||||
|
(dataGridCell) {
|
||||||
|
if (dataGridCell.columnName == 'measure') {
|
||||||
|
return Container(
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
|
child: Text(
|
||||||
|
dataGridCell.value,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: theme.bodyMedium.copyWith(
|
||||||
|
color: theme.currentColorScheme.primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
Widget content = SizedBox();
|
||||||
|
if (type == 'apply' && dataGridCell.value == true) {
|
||||||
|
content = Icon(
|
||||||
|
Icons.carpenter_outlined,
|
||||||
|
color: theme.currentColorScheme.secondary,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (type == 'maintenance' && dataGridCell.value == true) {
|
||||||
|
content = Icon(
|
||||||
|
Icons.eco_outlined,
|
||||||
|
color: theme.currentColorScheme.secondary,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return Container(
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
|
child: content,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
).toList());
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,9 +5,11 @@ import 'package:ambito/src/entity/lists/list_measure.dart';
|
||||||
import 'package:ambito/src/entity/lists/list_measure_single.dart';
|
import 'package:ambito/src/entity/lists/list_measure_single.dart';
|
||||||
import 'package:ambito/src/entity/lists/list_measure_type_group_category.dart';
|
import 'package:ambito/src/entity/lists/list_measure_type_group_category.dart';
|
||||||
import 'package:ambito/src/entity/measure/category/measure_category.dart';
|
import 'package:ambito/src/entity/measure/category/measure_category.dart';
|
||||||
|
import 'package:ambito/src/entity/measure/complete/measure_complete.dart';
|
||||||
import 'package:ambito/src/entity/measure/details/measure_details.dart';
|
import 'package:ambito/src/entity/measure/details/measure_details.dart';
|
||||||
import 'package:ambito/src/entity/measure/group/measure_group.dart';
|
import 'package:ambito/src/entity/measure/group/measure_group.dart';
|
||||||
import 'package:ambito/src/entity/measure/measure_grouping.dart';
|
import 'package:ambito/src/entity/measure/measure_grouping.dart';
|
||||||
|
import 'package:ambito/src/entity/measure/months/measure_months.dart';
|
||||||
import 'package:ambito/src/entity/measure/types_details/measure_types_details.dart';
|
import 'package:ambito/src/entity/measure/types_details/measure_types_details.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:isar/isar.dart';
|
import 'package:isar/isar.dart';
|
||||||
|
@ -40,6 +42,8 @@ class AmbitoIsarDB {
|
||||||
ListMeasureSingleSchema,
|
ListMeasureSingleSchema,
|
||||||
ListMeasureTypeGroupCategorySchema,
|
ListMeasureTypeGroupCategorySchema,
|
||||||
MaterialSchema,
|
MaterialSchema,
|
||||||
|
MeasureMonthsSchema,
|
||||||
|
MeasureCompleteSchema,
|
||||||
MeasureTypesSchema,
|
MeasureTypesSchema,
|
||||||
MeasureTypesDetailsSchema,
|
MeasureTypesDetailsSchema,
|
||||||
MeasureGeneralSchema,
|
MeasureGeneralSchema,
|
||||||
|
|
|
@ -1,16 +1,15 @@
|
||||||
import 'package:ambito/src/entity/_general/filter/item_filter.dart';
|
import 'package:ambito/src/entity/measure/months/measure_months.dart';
|
||||||
import 'package:ambito/src/entity/_general/filter/item_filter_repository.dart';
|
import 'package:ambito/src/entity/measure/months/measure_months_datasource.dart';
|
||||||
import 'package:ambito/src/entity/measure/measure_repository.dart';
|
|
||||||
import 'package:ambito/src/entity/measure/types/measure_types.dart';
|
|
||||||
import 'package:ambito/src/extensions/extensions.dart';
|
|
||||||
import 'package:ambito/src/packages/ambito_theme/ambito_theme.dart';
|
import 'package:ambito/src/packages/ambito_theme/ambito_theme.dart';
|
||||||
import 'package:collection/collection.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:isar/isar.dart';
|
||||||
import 'package:screen_breakpoints/screen_breakpoints.dart';
|
import 'package:screen_breakpoints/screen_breakpoints.dart';
|
||||||
import 'package:syncfusion_flutter_calendar/calendar.dart';
|
import 'package:syncfusion_flutter_core/theme.dart';
|
||||||
|
import 'package:syncfusion_flutter_datagrid/datagrid.dart';
|
||||||
|
import 'package:toggle_switch/toggle_switch.dart';
|
||||||
|
|
||||||
import '../../consts/consts.dart';
|
import '../../consts/consts.dart';
|
||||||
import '../../widgets/appbar/ambito_appbar.dart';
|
import '../../widgets/page/base_page.dart';
|
||||||
|
|
||||||
class CalendarPage extends StatefulWidget {
|
class CalendarPage extends StatefulWidget {
|
||||||
const CalendarPage({super.key});
|
const CalendarPage({super.key});
|
||||||
|
@ -20,148 +19,310 @@ class CalendarPage extends StatefulWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class CalendarPageState extends State<CalendarPage> {
|
class CalendarPageState extends State<CalendarPage> {
|
||||||
List<Appointment> appointments = <Appointment>[];
|
int display = 0;
|
||||||
|
|
||||||
Set<ItemFilter>? monthFilter = {};
|
String type = 'maintenance';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
initDataSource();
|
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
||||||
initDataSource() {
|
|
||||||
monthFilter = ItemFilterRepository().getByType('month');
|
|
||||||
for (String month in months) {
|
|
||||||
DateTime now = DateTime.now();
|
|
||||||
int monthInt = months.indexOf(month) + 1;
|
|
||||||
|
|
||||||
DateTime startDate = DateTime(now.year, monthInt, 1, 0, 0, 0);
|
|
||||||
DateTime endDate = DateTime(
|
|
||||||
now.year, monthInt, startDate.lastDayOfMonth.day, 23, 59, 59);
|
|
||||||
|
|
||||||
ItemFilter? itemFilter =
|
|
||||||
monthFilter?.firstWhereOrNull((item) => item.name == month);
|
|
||||||
if (itemFilter != null) {
|
|
||||||
List<MeasureTypes?> currentMeasures =
|
|
||||||
MeasureRepository().getByIds(itemFilter.ids!);
|
|
||||||
for (var measure in currentMeasures) {
|
|
||||||
appointments.add(
|
|
||||||
Appointment(
|
|
||||||
startTime: startDate,
|
|
||||||
endTime: endDate,
|
|
||||||
isAllDay: true,
|
|
||||||
subject: measure!.measureType ?? '',
|
|
||||||
color: actionGroupColors[measure.measureGroup!.value!]!,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
List<MeasureMonths> mm = isar.measureMonths.where().sortByName().findAll();
|
||||||
|
|
||||||
final AmbitoTheme theme = getTheme(context);
|
final AmbitoTheme theme = getTheme(context);
|
||||||
|
|
||||||
return Scaffold(
|
return BasePage().getPage(
|
||||||
appBar: AmbitoAppbar(
|
context,
|
||||||
links: const ['dashboard', 'massnahmen'],
|
SingleChildScrollView(
|
||||||
breakpoint: Breakpoint.fromContext(context),
|
child: Expanded(
|
||||||
theme: theme,
|
child: Align(
|
||||||
),
|
alignment: Alignment.topCenter,
|
||||||
body: Center(
|
child: Padding(
|
||||||
child: Padding(
|
padding: context.breakpoint.padding,
|
||||||
padding: const EdgeInsets.all(32),
|
child: SizedBox(
|
||||||
child: SfCalendar(
|
width: 1152,
|
||||||
firstDayOfWeek: 1,
|
height: MediaQuery.of(context).size.height - 80,
|
||||||
showNavigationArrow: true,
|
child: Padding(
|
||||||
view: CalendarView.month,
|
padding: EdgeInsets.only(bottom: 40),
|
||||||
dataSource: _AppointmentDataSource(appointments),
|
child: Column(
|
||||||
monthViewSettings: const MonthViewSettings(
|
mainAxisSize: MainAxisSize.max,
|
||||||
appointmentDisplayMode: MonthAppointmentDisplayMode.appointment,
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
appointmentDisplayCount: 64,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
theme.verticalSpacerMax,
|
||||||
|
Text(
|
||||||
|
'Kalender',
|
||||||
|
textAlign: TextAlign.start,
|
||||||
|
style: theme.headlineLarge.copyWith(
|
||||||
|
color: theme.currentColorScheme.onSurface,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
theme.verticalSpacer,
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
ToggleSwitch(
|
||||||
|
initialLabelIndex: display,
|
||||||
|
totalSwitches: 2,
|
||||||
|
minWidth: 200,
|
||||||
|
borderWidth: 1,
|
||||||
|
labels: const ['Pflege', 'Maßnahme'],
|
||||||
|
activeBgColor: [
|
||||||
|
theme.currentColorScheme.secondary
|
||||||
|
],
|
||||||
|
borderColor: [theme.currentColorScheme.secondary],
|
||||||
|
inactiveBgColor: Colors.white,
|
||||||
|
activeFgColor:
|
||||||
|
theme.currentColorScheme.onSecondary,
|
||||||
|
customTextStyles: [theme.bodyMedium],
|
||||||
|
onToggle: (index) {
|
||||||
|
setState(() {
|
||||||
|
display = index ?? 0;
|
||||||
|
if (display == 0) {
|
||||||
|
type = 'maintenance';
|
||||||
|
} else {
|
||||||
|
type = 'apply';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
theme.verticalSpacer,
|
||||||
|
Expanded(
|
||||||
|
child: gridWidget(
|
||||||
|
mm,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
theme.verticalSpacerMax,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget gridWidget(List<MeasureMonths> mm) {
|
||||||
|
final AmbitoTheme theme = getTheme(context);
|
||||||
|
|
||||||
|
return SizedBox(
|
||||||
|
width: 1152,
|
||||||
|
child: SfDataGridTheme(
|
||||||
|
data: SfDataGridThemeData(
|
||||||
|
headerColor: theme.currentColorScheme.primaryContainer,
|
||||||
|
sortIcon: Icon(
|
||||||
|
Icons.keyboard_arrow_down,
|
||||||
|
color: theme.currentColorScheme.primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: SfDataGrid(
|
||||||
|
allowSorting: true,
|
||||||
|
source:
|
||||||
|
MeasureMonthsDatasource(areas: mm, context: context, type: type),
|
||||||
|
columnWidthMode: ColumnWidthMode.fill,
|
||||||
|
columns: [
|
||||||
|
GridColumn(
|
||||||
|
columnName: 'name',
|
||||||
|
label: Container(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(
|
||||||
|
'Bezeichnung',
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: theme.bodyMedium.copyWith(
|
||||||
|
color: theme.currentColorScheme.primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
GridColumn(
|
||||||
|
columnName: 'jan',
|
||||||
|
maximumWidth: 70,
|
||||||
|
label: Container(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(
|
||||||
|
'Jan',
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: theme.bodyMedium.copyWith(
|
||||||
|
color: theme.currentColorScheme.primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
GridColumn(
|
||||||
|
columnName: 'feb',
|
||||||
|
maximumWidth: 70,
|
||||||
|
label: Container(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(
|
||||||
|
'Feb',
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: theme.bodyMedium.copyWith(
|
||||||
|
color: theme.currentColorScheme.primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
GridColumn(
|
||||||
|
columnName: 'mar',
|
||||||
|
maximumWidth: 70,
|
||||||
|
label: Container(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(
|
||||||
|
'Mär',
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: theme.bodyMedium.copyWith(
|
||||||
|
color: theme.currentColorScheme.primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
GridColumn(
|
||||||
|
columnName: 'apr',
|
||||||
|
maximumWidth: 70,
|
||||||
|
label: Container(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(
|
||||||
|
'Apr',
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: theme.bodyMedium.copyWith(
|
||||||
|
color: theme.currentColorScheme.primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
GridColumn(
|
||||||
|
columnName: 'may',
|
||||||
|
maximumWidth: 70,
|
||||||
|
label: Container(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(
|
||||||
|
'Mai',
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: theme.bodyMedium.copyWith(
|
||||||
|
color: theme.currentColorScheme.primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
GridColumn(
|
||||||
|
columnName: 'jun',
|
||||||
|
maximumWidth: 70,
|
||||||
|
label: Container(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(
|
||||||
|
'Jun',
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: theme.bodyMedium.copyWith(
|
||||||
|
color: theme.currentColorScheme.primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
GridColumn(
|
||||||
|
columnName: 'jul',
|
||||||
|
maximumWidth: 70,
|
||||||
|
label: Container(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(
|
||||||
|
'Jul',
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: theme.bodyMedium.copyWith(
|
||||||
|
color: theme.currentColorScheme.primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
GridColumn(
|
||||||
|
columnName: 'aug',
|
||||||
|
maximumWidth: 70,
|
||||||
|
label: Container(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(
|
||||||
|
'Aug',
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: theme.bodyMedium.copyWith(
|
||||||
|
color: theme.currentColorScheme.primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
GridColumn(
|
||||||
|
columnName: 'sep',
|
||||||
|
maximumWidth: 70,
|
||||||
|
label: Container(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(
|
||||||
|
'Sep',
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: theme.bodyMedium.copyWith(
|
||||||
|
color: theme.currentColorScheme.primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
GridColumn(
|
||||||
|
columnName: 'oct',
|
||||||
|
maximumWidth: 70,
|
||||||
|
label: Container(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(
|
||||||
|
'Okt',
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: theme.bodyMedium.copyWith(
|
||||||
|
color: theme.currentColorScheme.primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
GridColumn(
|
||||||
|
columnName: 'nov',
|
||||||
|
maximumWidth: 70,
|
||||||
|
label: Container(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(
|
||||||
|
'Nov',
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: theme.bodyMedium.copyWith(
|
||||||
|
color: theme.currentColorScheme.primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
GridColumn(
|
||||||
|
columnName: 'dec',
|
||||||
|
maximumWidth: 70,
|
||||||
|
label: Container(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(
|
||||||
|
'Dez',
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: theme.bodyMedium.copyWith(
|
||||||
|
color: theme.currentColorScheme.primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
_AppointmentDataSource _getCalendarDataSource() {
|
|
||||||
List<Appointment> appointments = <Appointment>[];
|
|
||||||
appointments.add(Appointment(
|
|
||||||
startTime: DateTime.now(),
|
|
||||||
endTime: DateTime.now().add(const Duration(minutes: 10)),
|
|
||||||
subject: 'Meeting',
|
|
||||||
isAllDay: true,
|
|
||||||
color: Colors.blue,
|
|
||||||
startTimeZone: '',
|
|
||||||
endTimeZone: '',
|
|
||||||
));
|
|
||||||
|
|
||||||
return _AppointmentDataSource(appointments);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class _AppointmentDataSource extends CalendarDataSource {
|
|
||||||
_AppointmentDataSource(List<Appointment> source) {
|
|
||||||
appointments = source;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*class ActionDataSource extends CalendarDataSource {
|
|
||||||
ActionDataSource(List<Action> source) {
|
|
||||||
appointments = source;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
DateTime getStartTime(int index) {
|
|
||||||
return appointments![index].from;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
DateTime getEndTime(int index) {
|
|
||||||
return appointments![index].to;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
bool isAllDay(int index) {
|
|
||||||
return appointments![index].isAllDay;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
String getSubject(int index) {
|
|
||||||
return appointments![index].eventName;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
String getStartTimeZone(int index) {
|
|
||||||
return appointments![index].startTimeZone;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
String getEndTimeZone(int index) {
|
|
||||||
return appointments![index].endTimeZone;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Color getColor(int index) {
|
|
||||||
return appointments![index].background;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Action {
|
|
||||||
Action(
|
|
||||||
{this.eventName = '',
|
|
||||||
required this.from,
|
|
||||||
required this.to,
|
|
||||||
required this.background,
|
|
||||||
this.isAllDay = false});
|
|
||||||
|
|
||||||
String eventName;
|
|
||||||
DateTime from;
|
|
||||||
DateTime to;
|
|
||||||
Color background;
|
|
||||||
bool isAllDay;
|
|
||||||
}*/
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import 'dart:convert';
|
||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
|
|
||||||
import 'package:ambito/src/entity/cart/cart_datasource.dart';
|
import 'package:ambito/src/entity/cart/cart_datasource.dart';
|
||||||
|
@ -13,7 +14,12 @@ import 'package:screen_breakpoints/screen_breakpoints.dart';
|
||||||
import 'package:screenshot/screenshot.dart';
|
import 'package:screenshot/screenshot.dart';
|
||||||
import 'package:syncfusion_flutter_core/theme.dart';
|
import 'package:syncfusion_flutter_core/theme.dart';
|
||||||
import 'package:syncfusion_flutter_datagrid/datagrid.dart';
|
import 'package:syncfusion_flutter_datagrid/datagrid.dart';
|
||||||
|
import 'package:syncfusion_flutter_datagrid_export/export.dart';
|
||||||
|
import 'package:syncfusion_flutter_pdf/pdf.dart';
|
||||||
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
|
import '../../consts/consts.dart';
|
||||||
|
import '../../entity/_general/id_value/id_value.dart';
|
||||||
import '../../entity/cart/cart.dart';
|
import '../../entity/cart/cart.dart';
|
||||||
import '../../entity/measure/general/measure_general_repository.dart';
|
import '../../entity/measure/general/measure_general_repository.dart';
|
||||||
import '../../widgets/buttons/print_all_button.dart';
|
import '../../widgets/buttons/print_all_button.dart';
|
||||||
|
@ -43,6 +49,8 @@ class CartPageState extends State<CartPage> {
|
||||||
final ScreenshotController screenshotController = ScreenshotController();
|
final ScreenshotController screenshotController = ScreenshotController();
|
||||||
Uint8List? _imageFile;
|
Uint8List? _imageFile;
|
||||||
|
|
||||||
|
final DataGridController _dataGridController = DataGridController();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
@ -109,13 +117,12 @@ class CartPageState extends State<CartPage> {
|
||||||
List<Widget> children = [];
|
List<Widget> children = [];
|
||||||
|
|
||||||
if (carts != null) {
|
if (carts != null) {
|
||||||
int counter = 0;
|
|
||||||
for (final cart in carts) {
|
for (final cart in carts) {
|
||||||
final measure = MeasureGeneralRepository().getByName(cart.name!);
|
final measure = MeasureGeneralRepository().getByName(cart.name!);
|
||||||
|
|
||||||
final elements = CartRepository().getElementsByCartId(cart.id);
|
final elements = CartRepository().getElementsByCartId(cart.id);
|
||||||
|
|
||||||
double sum = 0;
|
double sum = 0;
|
||||||
|
final GlobalKey<SfDataGridState> key = GlobalKey<SfDataGridState>();
|
||||||
|
|
||||||
for (final element in elements) {
|
for (final element in elements) {
|
||||||
sum = sum +
|
sum = sum +
|
||||||
|
@ -123,69 +130,103 @@ class CartPageState extends State<CartPage> {
|
||||||
(double.tryParse(element.price ?? '0') ?? 0));
|
(double.tryParse(element.price ?? '0') ?? 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
final card = ExportFrame(
|
final card = SizedBox(
|
||||||
exportDelegate: exportDelegate,
|
width: 1152,
|
||||||
frameId: 'cart${cart.id}',
|
child: Card(
|
||||||
child: SizedBox(
|
elevation: 0,
|
||||||
width: 1152,
|
color: theme.currentColorScheme.tertiary,
|
||||||
child: Card(
|
child: Padding(
|
||||||
elevation: 0,
|
padding: const EdgeInsets.all(20),
|
||||||
color: theme.currentColorScheme.tertiary,
|
child: Column(
|
||||||
child: Padding(
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
padding: const EdgeInsets.all(20),
|
children: [
|
||||||
child: Column(
|
Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
children: [
|
||||||
children: [
|
Text(
|
||||||
Row(
|
cart.name!,
|
||||||
children: [
|
style: theme.labelLarge
|
||||||
Text(
|
.copyWith(color: theme.currentColorScheme.primary),
|
||||||
cart.name!,
|
),
|
||||||
style: theme.labelLarge.copyWith(
|
const Spacer(),
|
||||||
color: theme.currentColorScheme.primary),
|
SizedBox(
|
||||||
),
|
height: 40,
|
||||||
const Spacer(),
|
width: 200,
|
||||||
SizedBox(
|
child: ClipRRect(
|
||||||
height: 40,
|
borderRadius: const BorderRadius.all(
|
||||||
width: 200,
|
Radius.circular(10),
|
||||||
child: ClipRRect(
|
|
||||||
borderRadius: const BorderRadius.all(
|
|
||||||
Radius.circular(10),
|
|
||||||
),
|
|
||||||
child: measure?.getFullImage() ??
|
|
||||||
Image.asset('assets/images/logo_trans.png'),
|
|
||||||
),
|
),
|
||||||
|
child: measure?.getFullImage() ??
|
||||||
|
Image.asset('assets/images/logo_trans.png'),
|
||||||
),
|
),
|
||||||
],
|
),
|
||||||
),
|
],
|
||||||
theme.verticalSpacerSmall,
|
),
|
||||||
gridWidget(elements ?? []),
|
theme.verticalSpacerSmall,
|
||||||
theme.verticalSpacer,
|
gridWidget(elements ?? [], key),
|
||||||
Row(
|
theme.verticalSpacer,
|
||||||
children: [
|
Row(
|
||||||
Text(
|
children: [
|
||||||
'Richtpreis ca. ${sum.toStringAsFixed(2)}€',
|
Text(
|
||||||
style: theme.labelMedium
|
'Richtpreis ca. ${sum.toStringAsFixed(2)}€',
|
||||||
.copyWith(fontWeight: FontWeight.bold),
|
style: theme.labelMedium
|
||||||
),
|
.copyWith(fontWeight: FontWeight.bold),
|
||||||
Spacer(),
|
),
|
||||||
PrintButton(
|
Spacer(),
|
||||||
onPressed: () async {
|
PrintButton(
|
||||||
final pdf = await exportDelegate
|
onPressed: () async {
|
||||||
.exportToPdfDocument('cart${cart.id}');
|
PdfDocument document =
|
||||||
await saveFile(pdf, '${cart.id}.pdf');
|
key.currentState!.exportToPdfDocument(
|
||||||
},
|
headerFooterExport:
|
||||||
),
|
(DataGridPdfHeaderFooterExportDetails
|
||||||
],
|
headerFooterExport) {
|
||||||
)
|
final double width = headerFooterExport.pdfPage
|
||||||
],
|
.getClientSize()
|
||||||
),
|
.width;
|
||||||
|
final PdfPageTemplateElement header =
|
||||||
|
PdfPageTemplateElement(
|
||||||
|
Rect.fromLTWH(0, 0, width, 65));
|
||||||
|
header.graphics.drawString(
|
||||||
|
'Warenkorb für "${cart.name!}"',
|
||||||
|
PdfStandardFont(PdfFontFamily.helvetica, 13,
|
||||||
|
style: PdfFontStyle.bold),
|
||||||
|
bounds: const Rect.fromLTWH(0, 25, 400, 60),
|
||||||
|
);
|
||||||
|
headerFooterExport.pdfDocumentTemplate.top =
|
||||||
|
header;
|
||||||
|
},
|
||||||
|
cellExport: (details) {
|
||||||
|
if (details.cellType ==
|
||||||
|
DataGridExportCellType.row &&
|
||||||
|
details.columnName == 'Anbieter') {
|
||||||
|
if (details.cellValue.toString() == '[]') {
|
||||||
|
details.pdfCell.value = '-';
|
||||||
|
} else {
|
||||||
|
List<String> values = [];
|
||||||
|
for (IdValue idValue
|
||||||
|
in (details.cellValue as List<IdValue>)) {
|
||||||
|
values.add(idValue.value ?? '');
|
||||||
|
}
|
||||||
|
logger.d(values.join(', '));
|
||||||
|
details.pdfCell.value = values.join(', ');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
fitAllColumnsInOnePage: true,
|
||||||
|
);
|
||||||
|
final List<int> bytes = document.saveSync();
|
||||||
|
launchUrl(Uri.parse(
|
||||||
|
"data:application/octet-stream;base64,${base64Encode(bytes)}"));
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
children.add(card);
|
children.add(card);
|
||||||
children.add(theme.verticalSpacerMax);
|
children.add(theme.verticalSpacerMax);
|
||||||
counter++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,7 +239,8 @@ class CartPageState extends State<CartPage> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget gridWidget(List<CartElement> cartElements) {
|
Widget gridWidget(
|
||||||
|
List<CartElement> cartElements, GlobalKey<SfDataGridState> key) {
|
||||||
final AmbitoTheme theme = getTheme(context);
|
final AmbitoTheme theme = getTheme(context);
|
||||||
|
|
||||||
return SfDataGridTheme(
|
return SfDataGridTheme(
|
||||||
|
@ -210,12 +252,22 @@ class CartPageState extends State<CartPage> {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
child: SfDataGrid(
|
child: SfDataGrid(
|
||||||
|
controller: _dataGridController,
|
||||||
|
key: key,
|
||||||
allowSorting: true,
|
allowSorting: true,
|
||||||
source: CartDataSource(cartElements: cartElements, context: context),
|
allowEditing: true,
|
||||||
|
selectionMode: SelectionMode.single,
|
||||||
|
editingGestureType: EditingGestureType.doubleTap,
|
||||||
|
navigationMode: GridNavigationMode.cell,
|
||||||
|
source: CartDataSource(
|
||||||
|
cartElements: cartElements,
|
||||||
|
context: context,
|
||||||
|
controller: _dataGridController),
|
||||||
columnWidthMode: ColumnWidthMode.fill,
|
columnWidthMode: ColumnWidthMode.fill,
|
||||||
columns: [
|
columns: [
|
||||||
GridColumn(
|
GridColumn(
|
||||||
columnName: 'name',
|
columnName: 'Material',
|
||||||
|
allowEditing: true,
|
||||||
label: Container(
|
label: Container(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
alignment: Alignment.centerLeft,
|
alignment: Alignment.centerLeft,
|
||||||
|
@ -229,8 +281,9 @@ class CartPageState extends State<CartPage> {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
GridColumn(
|
GridColumn(
|
||||||
columnName: 'amount',
|
columnName: 'Menge',
|
||||||
maximumWidth: 150,
|
maximumWidth: 150,
|
||||||
|
allowEditing: true,
|
||||||
label: Container(
|
label: Container(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
alignment: Alignment.centerLeft,
|
alignment: Alignment.centerLeft,
|
||||||
|
@ -244,9 +297,10 @@ class CartPageState extends State<CartPage> {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
GridColumn(
|
GridColumn(
|
||||||
columnName: 'provider',
|
columnName: 'Anbieter',
|
||||||
maximumWidth: 200,
|
maximumWidth: 200,
|
||||||
allowSorting: false,
|
allowSorting: false,
|
||||||
|
allowEditing: false,
|
||||||
label: Container(
|
label: Container(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
alignment: Alignment.centerLeft,
|
alignment: Alignment.centerLeft,
|
||||||
|
@ -260,8 +314,9 @@ class CartPageState extends State<CartPage> {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
GridColumn(
|
GridColumn(
|
||||||
columnName: 'price',
|
columnName: 'Richtpreis',
|
||||||
allowSorting: true,
|
allowSorting: true,
|
||||||
|
allowEditing: false,
|
||||||
maximumWidth: 250,
|
maximumWidth: 250,
|
||||||
label: Container(
|
label: Container(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
padding: const EdgeInsets.symmetric(horizontal: 10.0),
|
||||||
|
|
|
@ -114,7 +114,6 @@ class DashboardAreasPageState extends State<DashboardAreasPage> {
|
||||||
padding: context.breakpoint.padding,
|
padding: context.breakpoint.padding,
|
||||||
child: SizedBox(
|
child: SizedBox(
|
||||||
width: 1152,
|
width: 1152,
|
||||||
height: 1152,
|
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
import 'package:ambito/src/entity/entities.dart';
|
import 'package:ambito/src/entity/entities.dart';
|
||||||
import 'package:ambito/src/entity/measure/details/measure_details.dart';
|
import 'package:ambito/src/entity/measure/details/measure_details.dart';
|
||||||
import 'package:ambito/src/entity/measure/details/measure_details_repository.dart';
|
|
||||||
import 'package:ambito/src/entity/measure/measure_repository.dart';
|
|
||||||
import 'package:ambito/src/entity/measure/types_details/measure_types_details.dart';
|
import 'package:ambito/src/entity/measure/types_details/measure_types_details.dart';
|
||||||
import 'package:ambito/src/entity/measure/types_details/measure_types_details_repository.dart';
|
|
||||||
import 'package:ambito/src/extensions/extensions.dart';
|
import 'package:ambito/src/extensions/extensions.dart';
|
||||||
import 'package:ambito/src/pages/measure/detail/cards/main/combined_card.dart';
|
import 'package:ambito/src/pages/measure/detail/cards/main/combined_card.dart';
|
||||||
import 'package:ambito/src/pages/measure/detail/cards/main/gallery_card.dart';
|
import 'package:ambito/src/pages/measure/detail/cards/main/gallery_card.dart';
|
||||||
|
@ -63,13 +60,12 @@ class MeasureDetailPageState extends State<MeasureDetailPage> {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
|
||||||
// Parse ID from parameters
|
// Parse ID from parameters
|
||||||
id = int.tryParse(Get.parameters['id'] ?? '0') ?? 0;
|
|
||||||
|
|
||||||
// Initialize combined map with ID
|
// Initialize combined map with ID
|
||||||
Map<String, dynamic> combined = {'id': id};
|
//Map<String, dynamic> combined = {'id': id};
|
||||||
|
|
||||||
// Retrieve measureGeneral data
|
// Retrieve measureGeneral data
|
||||||
measureGeneral = isar.measureGenerals.where().idEqualTo(id!).findFirst();
|
/* measureGeneral = isar.measureGenerals.where().idEqualTo(id!).findFirst();
|
||||||
|
|
||||||
if (measureGeneral != null) {
|
if (measureGeneral != null) {
|
||||||
// Fetch related details and types
|
// Fetch related details and types
|
||||||
|
@ -92,7 +88,7 @@ class MeasureDetailPageState extends State<MeasureDetailPage> {
|
||||||
});
|
});
|
||||||
|
|
||||||
logger.d(measure!.toJson());
|
logger.d(measure!.toJson());
|
||||||
});
|
});*/
|
||||||
|
|
||||||
// Add scroll listener for the back-to-top button
|
// Add scroll listener for the back-to-top button
|
||||||
scrollController.addListener(() {
|
scrollController.addListener(() {
|
||||||
|
@ -116,6 +112,12 @@ class MeasureDetailPageState extends State<MeasureDetailPage> {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final AmbitoTheme theme = getTheme(context);
|
final AmbitoTheme theme = getTheme(context);
|
||||||
|
|
||||||
|
id = int.tryParse(Get.parameters['id'] ?? '0') ?? 0;
|
||||||
|
|
||||||
|
MeasureComplete? measure =
|
||||||
|
isar.measureCompletes.where().idEqualTo(id!).findFirst()!;
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AmbitoAppbar(
|
appBar: AmbitoAppbar(
|
||||||
links: const ['dashboard', 'massnahmen'],
|
links: const ['dashboard', 'massnahmen'],
|
||||||
|
@ -239,7 +241,7 @@ class MeasureDetailPageState extends State<MeasureDetailPage> {
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.centerLeft,
|
alignment: Alignment.centerLeft,
|
||||||
child: Text(
|
child: Text(
|
||||||
measure.name,
|
measure.name!,
|
||||||
style: theme.currentThemeData.textTheme.headlineMedium,
|
style: theme.currentThemeData.textTheme.headlineMedium,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -322,8 +322,4 @@ class MeasuresPageState extends State<MeasuresPage> {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool _hasCommonItems(List listOne, List listTwo) {
|
|
||||||
return listOne.toSet().intersection(listTwo.toSet()).isNotEmpty;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,9 +7,13 @@
|
||||||
#include "generated_plugin_registrant.h"
|
#include "generated_plugin_registrant.h"
|
||||||
|
|
||||||
#include <isar_flutter_libs/isar_flutter_libs_plugin.h>
|
#include <isar_flutter_libs/isar_flutter_libs_plugin.h>
|
||||||
|
#include <url_launcher_linux/url_launcher_plugin.h>
|
||||||
|
|
||||||
void fl_register_plugins(FlPluginRegistry* registry) {
|
void fl_register_plugins(FlPluginRegistry* registry) {
|
||||||
g_autoptr(FlPluginRegistrar) isar_flutter_libs_registrar =
|
g_autoptr(FlPluginRegistrar) isar_flutter_libs_registrar =
|
||||||
fl_plugin_registry_get_registrar_for_plugin(registry, "IsarFlutterLibsPlugin");
|
fl_plugin_registry_get_registrar_for_plugin(registry, "IsarFlutterLibsPlugin");
|
||||||
isar_flutter_libs_plugin_register_with_registrar(isar_flutter_libs_registrar);
|
isar_flutter_libs_plugin_register_with_registrar(isar_flutter_libs_registrar);
|
||||||
|
g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
|
||||||
|
fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
|
||||||
|
url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
list(APPEND FLUTTER_PLUGIN_LIST
|
list(APPEND FLUTTER_PLUGIN_LIST
|
||||||
isar_flutter_libs
|
isar_flutter_libs
|
||||||
|
url_launcher_linux
|
||||||
)
|
)
|
||||||
|
|
||||||
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
||||||
|
|
|
@ -10,6 +10,7 @@ import isar_flutter_libs
|
||||||
import path_provider_foundation
|
import path_provider_foundation
|
||||||
import shared_preferences_foundation
|
import shared_preferences_foundation
|
||||||
import sqflite_darwin
|
import sqflite_darwin
|
||||||
|
import url_launcher_macos
|
||||||
|
|
||||||
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||||
GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin"))
|
GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin"))
|
||||||
|
@ -17,4 +18,5 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||||
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
||||||
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
|
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
|
||||||
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
|
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
|
||||||
|
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
|
||||||
}
|
}
|
||||||
|
|
120
pubspec.lock
120
pubspec.lock
|
@ -464,6 +464,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0"
|
||||||
|
flutter_spinbox:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: flutter_spinbox
|
||||||
|
sha256: "38d8c1a3a39f0fa72823d4470785f5e165f2deb53531ca7803b54ba45e4dbd46"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.13.1"
|
||||||
flutter_test:
|
flutter_test:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -730,6 +738,14 @@ packages:
|
||||||
url: "https://pub.isar-community.dev"
|
url: "https://pub.isar-community.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.3"
|
version: "4.0.3"
|
||||||
|
jiffy:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: jiffy
|
||||||
|
sha256: "1c1b86459969ff9f32dc5b0ffe392f1e08181e66396cf9dd8fa7c90552a691af"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.3.2"
|
||||||
jovial_misc:
|
jovial_misc:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -874,6 +890,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.0"
|
version: "1.0.0"
|
||||||
|
number_inc_dec:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: number_inc_dec
|
||||||
|
sha256: af0a35f923a2e67532bc6579e8fbf0093be8ea185e48bb543db4e3e355017ec5
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.8.0"
|
||||||
octo_image:
|
octo_image:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1335,6 +1359,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "28.1.33"
|
version: "28.1.33"
|
||||||
|
syncfusion_flutter_datagrid_export:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: syncfusion_flutter_datagrid_export
|
||||||
|
sha256: "8f948663820f1c987430df9243b48e83d1e4ba3823ed3fb8c054f5d6b6ade2f8"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "28.1.33"
|
||||||
syncfusion_flutter_datepicker:
|
syncfusion_flutter_datepicker:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -1343,6 +1375,22 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "28.1.33"
|
version: "28.1.33"
|
||||||
|
syncfusion_flutter_pdf:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: syncfusion_flutter_pdf
|
||||||
|
sha256: bdd6b6c085fc39fbcfbf641efbf7f97d9c39b58e57accc47fca4f9db592b2294
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "28.1.33"
|
||||||
|
syncfusion_flutter_xlsio:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: syncfusion_flutter_xlsio
|
||||||
|
sha256: dfe4ab39ae2c3fad1b2e9696e69d30099a54913bcc78c17df39c44c517de72b0
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "28.1.33"
|
||||||
syncfusion_localizations:
|
syncfusion_localizations:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -1351,6 +1399,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "28.1.33"
|
version: "28.1.33"
|
||||||
|
syncfusion_officecore:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: syncfusion_officecore
|
||||||
|
sha256: c771b542eeb8ed90344e32dadc5ae8a54292ce159c1f98db1a8b16c71a7c2f37
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "28.1.33"
|
||||||
synchronized:
|
synchronized:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1431,6 +1487,70 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.2"
|
version: "2.2.2"
|
||||||
|
url_launcher:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: url_launcher
|
||||||
|
sha256: "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.3.1"
|
||||||
|
url_launcher_android:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_android
|
||||||
|
sha256: "6fc2f56536ee873eeb867ad176ae15f304ccccc357848b351f6f0d8d4a40d193"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.3.14"
|
||||||
|
url_launcher_ios:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_ios
|
||||||
|
sha256: "16a513b6c12bb419304e72ea0ae2ab4fed569920d1c7cb850263fe3acc824626"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.3.2"
|
||||||
|
url_launcher_linux:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_linux
|
||||||
|
sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.2.1"
|
||||||
|
url_launcher_macos:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_macos
|
||||||
|
sha256: "17ba2000b847f334f16626a574c702b196723af2a289e7a93ffcb79acff855c2"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.2.2"
|
||||||
|
url_launcher_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_platform_interface
|
||||||
|
sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.2"
|
||||||
|
url_launcher_web:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: url_launcher_web
|
||||||
|
sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.3"
|
||||||
|
url_launcher_windows:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_windows
|
||||||
|
sha256: "44cf3aabcedde30f2dba119a9dea3b0f2672fbe6fa96e85536251d678216b3c4"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.3"
|
||||||
uuid:
|
uuid:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -67,6 +67,11 @@ dependencies:
|
||||||
cross_file: ^0.3.4+2
|
cross_file: ^0.3.4+2
|
||||||
screenshot: ^3.0.0
|
screenshot: ^3.0.0
|
||||||
webview_flutter_web: ^0.2.3+4
|
webview_flutter_web: ^0.2.3+4
|
||||||
|
number_inc_dec: ^0.8.0
|
||||||
|
flutter_spinbox: ^0.13.1
|
||||||
|
syncfusion_flutter_datagrid_export: ^28.1.33
|
||||||
|
url_launcher_web: ^2.3.3
|
||||||
|
url_launcher: ^6.3.1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#include <geolocator_windows/geolocator_windows.h>
|
#include <geolocator_windows/geolocator_windows.h>
|
||||||
#include <isar_flutter_libs/isar_flutter_libs_plugin.h>
|
#include <isar_flutter_libs/isar_flutter_libs_plugin.h>
|
||||||
#include <permission_handler_windows/permission_handler_windows_plugin.h>
|
#include <permission_handler_windows/permission_handler_windows_plugin.h>
|
||||||
|
#include <url_launcher_windows/url_launcher_windows.h>
|
||||||
|
|
||||||
void RegisterPlugins(flutter::PluginRegistry* registry) {
|
void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||||
GeolocatorWindowsRegisterWithRegistrar(
|
GeolocatorWindowsRegisterWithRegistrar(
|
||||||
|
@ -17,4 +18,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||||
registry->GetRegistrarForPlugin("IsarFlutterLibsPlugin"));
|
registry->GetRegistrarForPlugin("IsarFlutterLibsPlugin"));
|
||||||
PermissionHandlerWindowsPluginRegisterWithRegistrar(
|
PermissionHandlerWindowsPluginRegisterWithRegistrar(
|
||||||
registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
|
registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
|
||||||
|
UrlLauncherWindowsRegisterWithRegistrar(
|
||||||
|
registry->GetRegistrarForPlugin("UrlLauncherWindows"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
|
||||||
geolocator_windows
|
geolocator_windows
|
||||||
isar_flutter_libs
|
isar_flutter_libs
|
||||||
permission_handler_windows
|
permission_handler_windows
|
||||||
|
url_launcher_windows
|
||||||
)
|
)
|
||||||
|
|
||||||
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
list(APPEND FLUTTER_FFI_PLUGIN_LIST
|
||||||
|
|
Loading…
Reference in a new issue