Browse Source

plot action history

master
daivph 5 years ago
parent
commit
a2ae8c105b
6 changed files with 104 additions and 18 deletions
  1. +40
    -2
      lib/custom_model/CropPlot.dart
  2. +8
    -8
      lib/data/api/dio_provider.dart
  3. +1
    -2
      lib/presentation/screens/plot/sc_plot.dart
  4. +0
    -1
      lib/presentation/screens/plot_detail/bloc/plot_detail_bloc.dart
  5. +1
    -2
      lib/presentation/screens/plot_detail/sc_plot_action.dart
  6. +54
    -3
      lib/presentation/screens/plot_detail/sc_plot_information.dart

+ 40
- 2
lib/custom_model/CropPlot.dart View File

String netHouseName; String netHouseName;
int areaId; int areaId;
String area; String area;
List<TbDetailUsers> tbDetailUsers;


TbCropDTO( TbCropDTO(
{this.id, {this.id,
this.netHouseId, this.netHouseId,
this.netHouseName, this.netHouseName,
this.areaId, this.areaId,
this.area});
this.area,
this.tbDetailUsers});


TbCropDTO.fromJson(Map<String, dynamic> json) { TbCropDTO.fromJson(Map<String, dynamic> json) {
id = json['id']; id = json['id'];
netHouseName = json['netHouseName']; netHouseName = json['netHouseName'];
areaId = json['areaId']; areaId = json['areaId'];
area = json['area']; area = json['area'];
if (json['tbDetailUsers'] != null) {
tbDetailUsers = new List<TbDetailUsers>();
json['tbDetailUsers'].forEach((v) {
tbDetailUsers.add(new TbDetailUsers.fromJson(v));
});
}
} }


Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
data['netHouseName'] = this.netHouseName; data['netHouseName'] = this.netHouseName;
data['areaId'] = this.areaId; data['areaId'] = this.areaId;
data['area'] = this.area; data['area'] = this.area;
if (this.tbDetailUsers != null) {
data['tbDetailUsers'] =
this.tbDetailUsers.map((v) => v.toJson()).toList();
}
return data;
}
}

class TbDetailUsers {
int id;
String fullName;
String phone;

TbDetailUsers({this.id, this.fullName, this.phone});

TbDetailUsers.fromJson(Map<String, dynamic> json) {
id = json['id'];
fullName = json['fullName'];
phone = json['phone'];
}

Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['fullName'] = this.fullName;
data['phone'] = this.phone;
return data; return data;
} }
} }
String description; String description;
int activityTypeId; int activityTypeId;
String activityTypeName; String activityTypeName;
String activityTypeDescription;


Activities( Activities(
{this.id, {this.id,
this.executeDate, this.executeDate,
this.description, this.description,
this.activityTypeId, this.activityTypeId,
this.activityTypeName});
this.activityTypeName,
this.activityTypeDescription});


Activities.fromJson(Map<String, dynamic> json) { Activities.fromJson(Map<String, dynamic> json) {
id = json['id']; id = json['id'];
description = json['description']; description = json['description'];
activityTypeId = json['activityTypeId']; activityTypeId = json['activityTypeId'];
activityTypeName = json['activityTypeName']; activityTypeName = json['activityTypeName'];
activityTypeDescription = json['activityTypeDescription'];
} }


Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
data['description'] = this.description; data['description'] = this.description;
data['activityTypeId'] = this.activityTypeId; data['activityTypeId'] = this.activityTypeId;
data['activityTypeName'] = this.activityTypeName; data['activityTypeName'] = this.activityTypeName;
data['activityTypeDescription'] = this.activityTypeDescription;
return data; return data;
} }
} }

+ 8
- 8
lib/data/api/dio_provider.dart View File

var token = await pref.getString(DATA_CONST.TOKEN_KEY); var token = await pref.getString(DATA_CONST.TOKEN_KEY);
options.headers["Authorization"] = "Bearer $token"; options.headers["Authorization"] = "Bearer $token";
options.receiveTimeout = 20000; options.receiveTimeout = 20000;
log("onRequest: ${options.uri}\n"
"data=${options.data}\n"
"method=${options.method}\n"
"headers=${options.headers}\n"
"queryParameters=${options.queryParameters}");
// log("onRequest: ${options.uri}\n"
// "data=${options.data}\n"
// "method=${options.method}\n"
// "headers=${options.headers}\n"
// "queryParameters=${options.queryParameters}");
return options; return options;
} }


@override @override
Future onResponse(Response response) { Future onResponse(Response response) {
log("onResponse: $response");
// log("onResponse: $response");
return super.onResponse(response); return super.onResponse(response);
} }


@override @override
Future onError(DioError err) { Future onError(DioError err) {
log("onError: $err\n"
"Response: ${err.response}");
// log("onError: $err\n"
// "Response: ${err.response}");
return super.onError(err); return super.onError(err);
} }
} }

+ 1
- 2
lib/presentation/screens/plot/sc_plot.dart View File

child: Card( child: Card(
color: backgroundColor, color: backgroundColor,
child: ListTile( child: ListTile(
title: Text(
item.code.toString() + " - " + item.suppliesName.toString(),
title: Text("${item.code ?? ''} - ${item.suppliesName ?? ''}",
style: TextStyle(color: textColor)), style: TextStyle(color: textColor)),
subtitle: Text(item.startDate.format_DDMMYY_HHmm().toString(), subtitle: Text(item.startDate.format_DDMMYY_HHmm().toString(),
style: TextStyle(color: textColor)), style: TextStyle(color: textColor)),

+ 0
- 1
lib/presentation/screens/plot_detail/bloc/plot_detail_bloc.dart View File

if (state is PlotDetailSuccess) { if (state is PlotDetailSuccess) {
final currentState = state as PlotDetailSuccess; final currentState = state as PlotDetailSuccess;
int page = currentState.page + 1; int page = currentState.page + 1;
yield PlotDetailLoading();
final response = await repository.getPlotDetail(event.cropId, final response = await repository.getPlotDetail(event.cropId,
page: page, size: pageSize); page: page, size: pageSize);
yield response.activities.isEmpty yield response.activities.isEmpty

+ 1
- 2
lib/presentation/screens/plot_detail/sc_plot_action.dart View File

return GestureDetector( return GestureDetector(
child: Card( child: Card(
child: ListTile( child: ListTile(
//TODO: Update actitivy name from Api
title: Text(item.activityTypeName.toString()),
title: Text(item.activityTypeDescription ?? ''),
subtitle: Text(item.executeDate.format_DDMMYY_HHmm()), subtitle: Text(item.executeDate.format_DDMMYY_HHmm()),
), ),
), ),

+ 54
- 3
lib/presentation/screens/plot_detail/sc_plot_information.dart View File

} }


_statusController.text = statusCrop; _statusController.text = statusCrop;
_houseNameController.text = _crop.netHouseName.toString();
_codeController.text = _crop.code.toString();
_supplyNameController.text = _crop.suppliesName.toString();
_houseNameController.text = _crop.netHouseName?.toString();
_codeController.text = _crop.code?.toString();
_supplyNameController.text = _crop.suppliesName?.toString();
_areaController.text = _crop.areaM2.formatNumtoStringDecimal(); _areaController.text = _crop.areaM2.formatNumtoStringDecimal();
_seedingDateController.text = result.sowingDate.format_DDMMYY_HHmm();
_timeSoakSeedController.text =
result.soakSeedsTime.formatNumtoStringDecimal();
_timeNurserySeedController.text =
result.soakSeedsTime.formatNumtoStringDecimal();
_quantityPlantController.text =
result.numberPlants.formatNumtoStringDecimal();
_currentPlantController.text =
result.numberCurrentPlants.formatNumtoStringDecimal();
_timeEndGrowController.text = _crop.endDate.format_DDMMYY_HHmm();
_descriptionController.text = _descriptionController.text =
_crop.description == null ? "" : _crop.description.toString(); _crop.description == null ? "" : _crop.description.toString();
var technicians = _crop.tbDetailUsers.map((e) => e.fullName).join(",");
_mainTechnicianController.text = technicians;
}, (err) {}); }, (err) {});
} }


LoadingDialog.hideLoadingDialog(context); LoadingDialog.hideLoadingDialog(context);
flutterToast.showToast( flutterToast.showToast(
child: WidgetToast(message: label_update_success)); child: WidgetToast(message: label_update_success));
controller.initValue();
}).catchError((error) { }).catchError((error) {
_scaffoldKey.currentState.showSnackBar(SnackBar( _scaffoldKey.currentState.showSnackBar(SnackBar(
content: Row( content: Row(


Widget _statusField() { Widget _statusField() {
return TextFormField( return TextFormField(
enabled: false,
controller: _statusController, controller: _statusController,
decoration: InputDecoration(labelText: "Trạng thái"), decoration: InputDecoration(labelText: "Trạng thái"),
); );


Widget _houseNameField() { Widget _houseNameField() {
return TextFormField( return TextFormField(
enabled: false,
controller: _houseNameController, controller: _houseNameController,
decoration: InputDecoration(labelText: "Nhà màng"), decoration: InputDecoration(labelText: "Nhà màng"),
); );


Widget _codeField() { Widget _codeField() {
return TextFormField( return TextFormField(
enabled: false,
controller: _codeController, controller: _codeController,
decoration: InputDecoration(labelText: "Mã lô"), decoration: InputDecoration(labelText: "Mã lô"),
); );


Widget _supplyNameField() { Widget _supplyNameField() {
return TextFormField( return TextFormField(
enabled: false,
controller: _supplyNameController, controller: _supplyNameController,
decoration: InputDecoration(labelText: "Giống"), decoration: InputDecoration(labelText: "Giống"),
); );


Widget _seedingDateField() { Widget _seedingDateField() {
return TextFormField( return TextFormField(
enabled: false,
controller: _seedingDateController, controller: _seedingDateController,
decoration: InputDecoration(labelText: "Ngày gieo trồng"), decoration: InputDecoration(labelText: "Ngày gieo trồng"),
); );


Widget _timeSoakSeedField() { Widget _timeSoakSeedField() {
return TextFormField( return TextFormField(
enabled: false,
controller: _timeSoakSeedController, controller: _timeSoakSeedController,
decoration: InputDecoration(labelText: "Thời gian ngâm hạt"), decoration: InputDecoration(labelText: "Thời gian ngâm hạt"),
); );


Widget _timeNurserySeedField() { Widget _timeNurserySeedField() {
return TextFormField( return TextFormField(
enabled: false,
controller: _timeNurserySeedController, controller: _timeNurserySeedController,
decoration: InputDecoration(labelText: "Thời gian vô khây ươm"), decoration: InputDecoration(labelText: "Thời gian vô khây ươm"),
); );


Widget _quantityPlantField() { Widget _quantityPlantField() {
return TextFormField( return TextFormField(
enabled: false,
controller: _quantityPlantController, controller: _quantityPlantController,
decoration: InputDecoration(labelText: "Số lượng cây trồng"), decoration: InputDecoration(labelText: "Số lượng cây trồng"),
); );


Widget _currentPlantField() { Widget _currentPlantField() {
return TextFormField( return TextFormField(
enabled: false,
controller: _currentPlantController, controller: _currentPlantController,
decoration: InputDecoration(labelText: "Số lượng cây hiện tại"), decoration: InputDecoration(labelText: "Số lượng cây hiện tại"),
); );


Widget _timeEndGrowField() { Widget _timeEndGrowField() {
return TextFormField( return TextFormField(
enabled: false,
controller: _timeEndGrowController, controller: _timeEndGrowController,
decoration: InputDecoration(labelText: "Ngày kết thúc canh tác"), decoration: InputDecoration(labelText: "Ngày kết thúc canh tác"),
); );


Widget _mainTechnicianField() { Widget _mainTechnicianField() {
return TextFormField( return TextFormField(
enabled: false,
controller: _mainTechnicianController, controller: _mainTechnicianController,
decoration: InputDecoration(labelText: "Kỹ sư trực tiếp"), decoration: InputDecoration(labelText: "Kỹ sư trực tiếp"),
); );


Widget _areaField() { Widget _areaField() {
return TextFormField( return TextFormField(
enabled: false,
controller: _areaController, controller: _areaController,
decoration: InputDecoration(labelText: "Diện tích (m\u00B2)"), decoration: InputDecoration(labelText: "Diện tích (m\u00B2)"),
); );
return LoadingListPage(); return LoadingListPage();
} }
})))))); }))))));

@override
void dispose() {
_statusController.dispose();
_houseNameController.dispose();
_codeController.dispose();
_supplyNameController.dispose();
_seedingDateController.dispose();
_timeSoakSeedController.dispose();
_timeNurserySeedController.dispose();
_quantityPlantController.dispose();
_currentPlantController.dispose();
_timeEndGrowController.dispose();
_mainTechnicianController.dispose();
_areaController.dispose();
_descriptionController.dispose();
super.dispose();
}
} }


class DescriptionChangeControler extends GetxController { class DescriptionChangeControler extends GetxController {
bool isChanged = false; bool isChanged = false;


void initValue() {
isChanged = false;
update();
}

void changeValue(String oldValue, String newValue) { void changeValue(String oldValue, String newValue) {
if (oldValue != newValue) { if (oldValue != newValue) {
isChanged = true; isChanged = true;
} else { } else {
isChanged = false; isChanged = false;
} }
if (oldValue.isNullOrBlank && newValue.isEmpty) {
isChanged = false;
}
update(); update();
} }
} }

Loading…
Cancel
Save