Preventive Maintenance Screen

merge-requests/8/head
zaid_daoud 2 years ago
parent 095dbc86ad
commit 0e87b0fbf9

@ -72,11 +72,9 @@ class RegularVisitsProvider extends ChangeNotifier {
if (response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
// client's request was successfully received // client's request was successfully received
try { try {
List requestsListJson = List requestsListJson = json.decode(utf8.decode(response.bodyBytes).replaceAll("\\", ""));
json.decode(utf8.decode(response.bodyBytes).replaceAll("\\", "")); List<Visit> visitsList = requestsListJson.map((request) => Visit.fromJson(request)).toList();
List<Visit> visits = visits.addAll(visitsList);
requestsListJson.map((request) => Visit.fromJson(request)).toList();
visits.addAll(visits);
if (visits.length == pageItemNumber) { if (visits.length == pageItemNumber) {
nextPage = true; nextPage = true;
} else { } else {

@ -1,7 +1,6 @@
import '../lookup.dart'; import '../lookup.dart';
class Visit{ class Visit {
String? id; String? id;
String? serialNumber; String? serialNumber;
String? expectDate; String? expectDate;
@ -42,7 +41,7 @@ class Visit{
this.deviceNumber, this.deviceNumber,
}); });
factory Visit.fromJson(Map<String,dynamic> parsedJson){ factory Visit.fromJson(Map<String, dynamic> parsedJson) {
return Visit( return Visit(
id: parsedJson["nid"], id: parsedJson["nid"],
serialNumber: parsedJson["title"], serialNumber: parsedJson["title"],
@ -61,10 +60,10 @@ class Visit{
contactStatus: parsedJson["contactStatus"], contactStatus: parsedJson["contactStatus"],
images: List<String>.from(parsedJson["images"] ?? []), images: List<String>.from(parsedJson["images"] ?? []),
status: Lookup( status: Lookup(
id: int.tryParse(parsedJson["status"] ?? "-1")??-1, // actual value (0,1,2) id: int.tryParse(parsedJson["status"] ?? "-1") ?? -1, // actual value (0,1,2)
label: parsedJson["status_value"] // text value label: parsedJson["status_value"] // text value
), ),
assignTo: parsedJson["assigned_to"], assignTo: parsedJson["assigned_to"],
); );
} }
} }

@ -4,20 +4,22 @@ import '../../../controllers/localization/localization.dart';
import '../../../models/subtitle.dart'; import '../../../models/subtitle.dart';
import '../../app_style/sizing.dart'; import '../../app_style/sizing.dart';
import 'date_picker.dart'; import 'date_picker.dart';
class FromToDateBar extends StatefulWidget { class FromToDateBar extends StatefulWidget {
final DateTime from; final DateTime? from;
final DateTime to; final DateTime? to;
final Function(DateTime)? onPickFrom; final Function(DateTime)? onPickFrom;
final Function(DateTime)? onPickTo; final Function(DateTime)? onPickTo;
const FromToDateBar({Key? key, required this.from, required this.to, this.onPickFrom, this.onPickTo}) : super(key: key); const FromToDateBar({Key? key, required this.from, required this.to, this.onPickFrom, this.onPickTo}) : super(key: key);
@override @override
_FromToDateBarState createState() => _FromToDateBarState(); _FromToDateBarState createState() => _FromToDateBarState();
} }
class _FromToDateBarState extends State<FromToDateBar> { class _FromToDateBarState extends State<FromToDateBar> {
late DateTime _from; late DateTime? _from;
late DateTime _to; late DateTime? _to;
@override @override
void initState() { void initState() {
@ -32,22 +34,18 @@ class _FromToDateBarState extends State<FromToDateBar> {
return Row( return Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly, mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [ children: [
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
_subtitle?.from??'', _subtitle?.from ?? '',
style: Theme.of(context).textTheme.bodyText1?.copyWith( style: Theme.of(context).textTheme.bodyText1?.copyWith(fontSize: 12, fontWeight: FontWeight.normal),
fontSize: 12,
fontWeight: FontWeight.normal
),
textScaleFactor: AppStyle.getScaleFactor(context), textScaleFactor: AppStyle.getScaleFactor(context),
), ),
ADatePicker( ADatePicker(
date: _from, date: _from,
from: DateTime(1950), from: DateTime(1950),
onDatePicker: (date){ onDatePicker: (date) {
_from = date; _from = date;
setState(() {}); setState(() {});
widget.onPickFrom!(date); widget.onPickFrom!(date);
@ -59,17 +57,14 @@ class _FromToDateBarState extends State<FromToDateBar> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
_subtitle?.to??"", _subtitle?.to ?? "",
style: Theme.of(context).textTheme.bodyText1?.copyWith( style: Theme.of(context).textTheme.bodyText1?.copyWith(fontSize: 12, fontWeight: FontWeight.normal),
fontSize: 12,
fontWeight: FontWeight.normal
),
textScaleFactor: AppStyle.getScaleFactor(context), textScaleFactor: AppStyle.getScaleFactor(context),
), ),
ADatePicker( ADatePicker(
date: _to, date: _to,
from: DateTime(1950), from: DateTime(1950),
onDatePicker: (date){ onDatePicker: (date) {
_to = date; _to = date;
setState(() {}); setState(() {});
widget.onPickTo!(date); widget.onPickTo!(date);

@ -29,8 +29,7 @@ class VisitsSearchDialog extends StatefulWidget {
VisitsSearchDialogState createState() => VisitsSearchDialogState(); VisitsSearchDialogState createState() => VisitsSearchDialogState();
} }
class VisitsSearchDialogState extends State<VisitsSearchDialog> class VisitsSearchDialogState extends State<VisitsSearchDialog> with TickerProviderStateMixin {
with TickerProviderStateMixin {
VisitsSearch? _search; VisitsSearch? _search;
List<Lookup> status = const [ List<Lookup> status = const [
Lookup( Lookup(
@ -195,8 +194,7 @@ class VisitsSearchDialogState extends State<VisitsSearchDialog>
children: List.generate( children: List.generate(
contactStatus.length, contactStatus.length,
(index) { (index) {
bool isSelected = bool isSelected = _search?.contactStatus == contactStatus[index].key;
_search?.contactStatus == contactStatus[index].key;
return FilterItem( return FilterItem(
isSelected: isSelected, isSelected: isSelected,
onSelected: () { onSelected: () {
@ -220,8 +218,8 @@ class VisitsSearchDialogState extends State<VisitsSearchDialog>
height: 4.0 * AppStyle.getScaleFactor(context), height: 4.0 * AppStyle.getScaleFactor(context),
), ),
FromToDateBar( FromToDateBar(
from: _search!.actualDateFrom!, from: _search?.actualDateFrom,
to: _search!.actualDateTo!, to: _search?.actualDateTo,
onPickFrom: (date) { onPickFrom: (date) {
_search?.actualDateFrom = date; _search?.actualDateFrom = date;
}, },
@ -237,11 +235,8 @@ class VisitsSearchDialogState extends State<VisitsSearchDialog>
height: 4.0 * AppStyle.getScaleFactor(context), height: 4.0 * AppStyle.getScaleFactor(context),
), ),
FromToDateBar( FromToDateBar(
from: _search?.expectedDateFrom ?? from: _search?.expectedDateFrom ?? DateTime(today.year, today.month, 1),
DateTime(today.year, today.month, 1), to: _search?.expectedDateTo ?? DateTime(today.year, (today.month + 1).clamp(1, 12), today.month == 12 ? 31 : 0),
to: _search?.expectedDateTo ??
DateTime(today.year, (today.month + 1).clamp(1, 12),
today.month == 12 ? 31 : 0),
onPickFrom: (date) { onPickFrom: (date) {
_search?.expectedDateFrom = date; _search?.expectedDateFrom = date;
}, },
@ -252,8 +247,7 @@ class VisitsSearchDialogState extends State<VisitsSearchDialog>
Visibility( Visibility(
visible: _search?.toSearchString().isNotEmpty ?? false, visible: _search?.toSearchString().isNotEmpty ?? false,
child: Padding( child: Padding(
padding: padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
child: AButton( child: AButton(
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
text: subtitle?.clearSearch ?? '', text: subtitle?.clearSearch ?? '',

Loading…
Cancel
Save