You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

232 lines
7.0 KiB

import 'dart:math';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:bookatanker/common/settings.dart';
class TankLevelsModel {
String tank_name = '';
String capacity='';
String capacityForParse='';
String finalCapacity='';
String block_name='';
String type_of_water='';
String type='';
String tank_location='';
String water_level='';
List inConnections=[];
List outConnections=[];
List inputConnections=[];
List outputConnections=[];
String source='';
Color cardColor=Colors.white;
bool isCheckedInput=false;
bool isCheckedOutput=false;
var showInConnections='';
var showOutConnections='';
Color percentageTextColor=Colors.black;
Image tank_image=Image(image: const AssetImage('images/100%.png'),);
List<Color> startButtonColor=<Color>[];
List<Color> stoptButtonColor=<Color>[];
String motorStatus='';
String currentWaterLevelPercent='';
DateTime lastUpdatedTime=DateTime.now();
String displayLastUpdatedTime='';
String mode='';
String tank_status='';
String slave_status='';
String slaveDisconnectedTime='';
bool isAutomaticMode=true;
TextEditingController minimumLevelTextboxController = TextEditingController();
TextEditingController maximumLevelTextboxController = TextEditingController();
Widget minTextBox() {
return Container(
child: TextFormField(
cursorColor: Colors.white,
style: TextStyle(color: primaryColor),
controller: minimumLevelTextboxController,
decoration: textFormFieldDecorationForBoxId(Icons.percent,'Minimum Water level in percentage (%)'),
),
);
}
Widget maxTextBox() {
return Container(
child: TextFormField(
cursorColor: Colors.white,
style: TextStyle(color: primaryColor),
controller: maximumLevelTextboxController,
decoration: textFormFieldDecorationForBoxId(Icons.percent,'Maximum Water level in percentage (%)'),
),
);
}
Widget saveButton(context){
return
Container(
width: MediaQuery.of(context).size.width * .99,
height: 50,
padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
foregroundColor: Colors.white,
backgroundColor: primaryColor,
),
onPressed: () { },
child: const Text(
'Save',
style: TextStyle(
fontSize: 20,
),
),),)
;
}
TankLevelsModel();
factory TankLevelsModel.fromJson(Map<String, dynamic> json){
TankLevelsModel rtvm = new TankLevelsModel();
rtvm.tank_name = json['tankName'] ?? '';
rtvm.capacity = json['capacity'] ??'';
rtvm.capacityForParse =rtvm.capacity. replaceAll(',', '');
rtvm.tank_status = json['status'] ?? '';
rtvm.block_name = json['blockName'] ?? '';
rtvm.type_of_water = json['typeOfWater'] ?? '';
rtvm.water_level = json['waterlevel'] ?? '';
rtvm.lastUpdatedTime = DateTime.now();
if(rtvm.isAutomaticMode==false){
rtvm.mode = 'Manual Mode';
}
else{
rtvm.mode = 'Automatic Mode';
}
rtvm.displayLastUpdatedTime = DateFormat('yyyy-MM-dd HH:mm:ss').format(rtvm.lastUpdatedTime);
rtvm.motorStatus ='OFF';
rtvm.tank_location = json['tankLocation']??'';
//40/100*80
/*if(rtvm.water_level.toString().toLowerCase()=='nan') {
rtvm.water_level='20';
}*/
if(rtvm.water_level!=''){
double percent=int.parse(rtvm.water_level )/double.parse(rtvm.capacityForParse )*100;
rtvm.currentWaterLevelPercent=percent.toStringAsFixed(0);
print(percent);
if( percent<20){
rtvm.percentageTextColor=Color(0XFFE2483D);
/*rtvm.tank_image=Image(image: const AssetImage('images/25%gif.gif'),height:60,width:60,);*/
rtvm.tank_image=Image(image: const AssetImage('images/25%.png'),height: 70,width:70,);
}
else if( percent>20&&percent<50){
rtvm.percentageTextColor=Color(0XFFE56910);
/*rtvm.tank_image=Image(image: const AssetImage('images/50%gif.gif'),height: 60,width:60,);*/
rtvm.tank_image=Image(image: const AssetImage('images/50%.png'),height: 70,width:70,);
}
else if( percent>50&&percent<80){
rtvm.percentageTextColor=Color(0XFF1D7AFC);
/*rtvm.tank_image=Image(image: const AssetImage('images/75%gif.gif'),height: 60,width:60,);*/
rtvm.tank_image=Image(image: const AssetImage('images/75%.png'),height: 70,width:70,);
}
else{
rtvm.percentageTextColor=Color(0XFF0A9E04);
/* rtvm.tank_image=Image(image: const AssetImage('images/100%gif.gif'),height: 60,width:60,);*/
rtvm.tank_image=Image(image: const AssetImage('images/100%.png'),height: 70,width:70,);
}
}
else{
rtvm.water_level ='';
}
if(rtvm.tank_location.toString().toUpperCase()=='SUMP'&&rtvm.type_of_water.toString().toUpperCase()=='BORE WATER'){
rtvm.cardColor=Color(0xffC4A484);
}
else if(rtvm.tank_location.toString().toUpperCase()=='SUMP'&&rtvm.type_of_water.toString().toUpperCase()=='DRINKING WATER'){
rtvm.cardColor=Color(0xffc3e3f8);
}
else if(rtvm.tank_location.toString().toUpperCase()=='OVERHEAD'&&rtvm.type_of_water.toString().toUpperCase()=='BORE WATER'){
rtvm.cardColor=Color(0xfff8f3cb);
}
else if(rtvm.tank_location.toString().toUpperCase()=='OVERHEAD'&&rtvm.type_of_water.toString().toUpperCase()=='DRINKING WATER'){
rtvm.cardColor=Color(0XFF9bedff);
}
else{
rtvm.cardColor=Color(0xffcdf3ce);
}
Random random = new Random();
rtvm.type = json['type'] ?? '';
//rtvm.connections=json['connections']??[];
rtvm.source = json['tankName']??'';
rtvm.inConnections = json['connections']['inputConnections']??[];
rtvm.inConnections.forEach((element) {
rtvm.inputConnections.add(element['inputConnections']);
rtvm.showInConnections=rtvm.inputConnections.join(",");
});
rtvm.outConnections = json['connections']['outputConnections']??[];
rtvm.outConnections.forEach((element) {
rtvm.outputConnections.add(element['outputConnections']);
rtvm.showOutConnections=rtvm.outputConnections.join(",");
});
rtvm.isCheckedInput = false;
rtvm.isCheckedOutput = false;
if(rtvm.motorStatus.toString().toUpperCase()=='OFF'){
rtvm.startButtonColor=<Color>[Colors.green,Colors.greenAccent,Colors.lightGreen];
rtvm.stoptButtonColor=<Color>[Colors.grey,Colors.grey,Colors.grey];
}
else{
rtvm.startButtonColor=<Color>[Colors.grey,Colors.grey,Colors.grey];
rtvm.stoptButtonColor=<Color>[Colors.redAccent,Colors.red,Colors.redAccent];
}
rtvm.slave_status = json['slave_status'] ?? '';
rtvm.slaveDisconnectedTime = json['slave_disconnected_time'] ?? '';
return rtvm;
}
Map<String, dynamic> toJson() => {
"tankName":this.tank_name,
"capacity": this.capacity,
"blockName": this.block_name,
"typeOfWater": this.type_of_water ,
"type": this.type,
"tankLocation": this.tank_location,
"waterlevel": this.water_level,
"source": this.source,
};
}