ui changes group,policy

This commit is contained in:
venbaittech 2025-04-22 16:29:31 +05:30
parent ceb6aece50
commit d59aaf90bc
11 changed files with 496 additions and 176 deletions

View File

@ -199,13 +199,38 @@ class _ApprovalListState extends State<ApprovalList> {
// } // }
// } // }
Future<Map<String, dynamic>> getViewPlan(String planId) async {
final String apiUrldata = '$apiUrl/api/plans/find/$planId';
print("API URL: $apiUrldata");
// final token = await getToken();
if (token == null) {
throw Exception('Token not found. Please log in.');
}
final response = await http.put(
Uri.parse(apiUrldata),
headers: {
'Authorization': 'Bearer $token', // Add token here
'Content-Type': 'application/json',
},
);
if (response.statusCode == 200) {
final Map<String, dynamic>? resData = json.decode(response.body);
return resData?["data"];
} else {
throw Exception('Failed to load plans');
}
}
void viewPlanforApprover(String planId, void viewPlanforApprover(String planId,
{bool isViewMode = false, bool isApprover = true}) async { {bool isViewMode = false, bool isApprover = true}) async {
try { try {
Map<String, dynamic> planData = Map<String, dynamic> planData = await getViewPlan(planId);
await apiService.getViewPlan(planId, plansJson);
print("ViewAAA - $planData");
print("ViewAAA - $planData");
context.go('/createPlan', extra: { context.go('/createPlan', extra: {
'planData': planData, 'planData': planData,
'isViewMode': isViewMode, 'isViewMode': isViewMode,
@ -216,6 +241,18 @@ class _ApprovalListState extends State<ApprovalList> {
} }
} }
// void viewPlan(String planId, {bool isViewMode = false}) async {
// try {
// Map<String, dynamic> planData = await getViewPlan(planId);
// print("ViewAAA - $planData");
//
// context.go('/createPlan',
// extra: {'planData': planData, 'isViewMode': isViewMode});
// } catch (e) {
// print("Error fetching plan: $e");
// }
// }
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ResponsiveBuilder(builder: (context, sizingInfo) { return ResponsiveBuilder(builder: (context, sizingInfo) {
bool isDesktop = sizingInfo.deviceScreenType == DeviceScreenType.desktop; bool isDesktop = sizingInfo.deviceScreenType == DeviceScreenType.desktop;
@ -227,18 +264,46 @@ class _ApprovalListState extends State<ApprovalList> {
body: Row( body: Row(
children: [ children: [
if (isDesktop) CustomDrawer(isDesktop: true), if (isDesktop) CustomDrawer(isDesktop: true),
Expanded(child: buildTableLayout(isDesktop)) Expanded(child: buildGroupListLayout(isDesktop))
], ],
), ),
); );
}); });
} }
Widget buildGroupListLayout(bool isDesktop) {
return Container(
decoration: BoxDecoration(
// color: Colors.amber,
color: bodyColor,
border: Border.all(color: Color(0xFFF7F7FB), width: 3.5)),
child: buildTableLayout(isDesktop),
);
}
Widget buildTableLayout(isDesktop) { Widget buildTableLayout(isDesktop) {
return Container( return Container(
color: bodyColor, margin: isDesktop
? EdgeInsets.all(10.0)
: EdgeInsets.only(left: 20.0, bottom: 20.0, top: 10.0, right: 20.0),
padding: const EdgeInsets.all(10),
height: isDesktop
? MediaQuery.of(context).size.height * 0.98
: MediaQuery.of(context).size.height,
decoration: BoxDecoration(
border: isDesktop
? Border.all(
width: 2,
color: Color(0xFFF7F7FB),
)
: null,
color: Colors.white,
// color: Color(0xFFF7F7FB),
// color: Colors.amber,
),
child: Padding( child: Padding(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(1.0),
child: Container( child: Container(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(10.0),
color: Colors.white, color: Colors.white,

View File

@ -193,22 +193,30 @@ class _groupState extends State<Group> {
} }
Future<void> postGroupData(Map<String, dynamic> groupData) async { Future<void> postGroupData(Map<String, dynamic> groupData) async {
// final String apiUrldata = '$apiUrl/api/groups/create';
final token = await getToken(); // Fetch token final token = await getToken(); // Fetch token
final bool isEdit = widget.group != null && widget.group!.isNotEmpty;
print("isEdit: $isEdit");
print("postGroupData- ${widget.group?['group_id']}"); print("postGroupData- ${widget.group?['group_id']}");
// Determine whether it's create or update String apiUrlData;
final bool isEdit = widget.group != null && widget.group!.isNotEmpty;
final int? groupId = int.tryParse(selectedGroupId!);
print("postGroupData1 - $selectedGroupId"); if (isEdit) {
if (selectedGroupId == null) {
print("selectedGroupId is null. Cannot proceed.");
return;
}
// Build correct API URL final int? groupId = int.tryParse(selectedGroupId!);
final String apiUrlData = isEdit if (groupId == null) {
? '$apiUrl/api/groups/update/$groupId' // Update API print("groupId is invalid. selectedGroupId = $selectedGroupId");
: '$apiUrl/api/groups/create'; return;
}
apiUrlData = '$apiUrl/api/groups/update/$groupId';
} else {
apiUrlData = '$apiUrl/api/groups/create';
}
if (token == null) { if (token == null) {
throw Exception('Token not found. Please log in.'); throw Exception('Token not found. Please log in.');
@ -217,7 +225,6 @@ class _groupState extends State<Group> {
try { try {
final response = await (isEdit final response = await (isEdit
? http.put( ? http.put(
// <-- Use PUT for update
Uri.parse(apiUrlData), Uri.parse(apiUrlData),
headers: { headers: {
'Authorization': 'Bearer $token', 'Authorization': 'Bearer $token',
@ -231,23 +238,86 @@ class _groupState extends State<Group> {
'Authorization': 'Bearer $token', 'Authorization': 'Bearer $token',
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: jsonEncode(groupData), // Convert map to JSON body: jsonEncode(groupData),
)); ));
if (response.statusCode == 200 || response.statusCode == 201) { if (response.statusCode == 200 || response.statusCode == 201) {
print("Plan submitted successfully!"); print("Group submitted successfully!");
print("Response: ${response.body}"); print("Response: ${response.body}");
context.go('/group'); context.go('/group');
} else { } else {
print("Failed to submit plan. Status: ${response.statusCode}"); print("Failed to submit group. Status: ${response.statusCode}");
print("Error: ${response.body}"); print("Error: ${response.body}");
} }
} catch (e) { } catch (e) {
print(" Error submitting plan: $e"); print("Error submitting group: $e");
} }
} }
// Future<void> postGroupData(Map<String, dynamic> groupData) async {
// // final String apiUrldata = '$apiUrl/api/groups/create';
//
// final token = await getToken(); // Fetch token
//
// print("postGroupData- ${widget.group?['group_id']}");
//
// if (selectedGroupId == null) {
// print("selectedGroupId is null. Cannot proceed.");
// return;
// }
//
// final int? groupId = int.tryParse(selectedGroupId!);
// if (groupId == null) {
// print("groupId is invalid. selectedGroupId = $selectedGroupId");
// return;
// }
//
// final bool isEdit = widget.group != null && widget.group!.isNotEmpty;
// print("postGroupData1 - $selectedGroupId");
//
// // Build correct API URL
// final String apiUrlData = isEdit
// ? '$apiUrl/api/groups/update/$groupId' // Update API
// : '$apiUrl/api/groups/create';
//
// if (token == null) {
// throw Exception('Token not found. Please log in.');
// }
//
// try {
// final response = await (isEdit
// ? http.put(
// // <-- Use PUT for update
// Uri.parse(apiUrlData),
// headers: {
// 'Authorization': 'Bearer $token',
// 'Content-Type': 'application/json',
// },
// body: jsonEncode(groupData),
// )
// : http.post(
// Uri.parse(apiUrlData),
// headers: {
// 'Authorization': 'Bearer $token',
// 'Content-Type': 'application/json',
// },
// body: jsonEncode(groupData), // Convert map to JSON
// ));
//
// if (response.statusCode == 200 || response.statusCode == 201) {
// print("Plan submitted successfully!");
// print("Response: ${response.body}");
//
// context.go('/group');
// } else {
// print("Failed to submit plan. Status: ${response.statusCode}");
// print("Error: ${response.body}");
// }
// } catch (e) {
// print(" Error submitting plan: $e");
// }
// }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ResponsiveBuilder(builder: (context, sizingInfo) { return ResponsiveBuilder(builder: (context, sizingInfo) {
@ -260,114 +330,146 @@ class _groupState extends State<Group> {
body: Row( body: Row(
children: [ children: [
if (isDesktop) CustomDrawer(isDesktop: true), if (isDesktop) CustomDrawer(isDesktop: true),
Expanded(child: buildOrganizationLayout(isDesktop)) Expanded(child: buildData(isDesktop, context))
], ],
), ),
); );
}); });
} }
Widget buildData(bool isDesktop, context) {
return Container(
// margin: const EdgeInsets.only(left: 10.0, right: 15.0, top: 10.0, bottom: 10.0),
decoration: BoxDecoration(
// color: Colors.amber,
color: bodyColor,
border: Border.all(color: Color(0xFFF7F7FB), width: 3.5)),
child: Column(
children: [
Expanded(
child: Container(
color: bodyColor,
child: buildOrganizationLayout(isDesktop),
),
),
Container(
color: Colors.white,
padding: const EdgeInsets.all(8.0),
child: isDesktop
? Row(
mainAxisAlignment: MainAxisAlignment.end,
children: _buildSubmit(isDesktop),
)
: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: _buildSubmit(isDesktop),
),
),
],
),
);
}
Widget buildOrganizationLayout(isDesktop) { Widget buildOrganizationLayout(isDesktop) {
return Container( return Container(
color: bodyColor, margin: isDesktop
// color: Colors.white, ? EdgeInsets.all(10.0)
width: double.infinity, : EdgeInsets.only(left: 20.0, bottom: 20.0, top: 10.0, right: 20.0),
height: MediaQuery.of(context).size.height, height: isDesktop
margin: const EdgeInsets.all(8), ? MediaQuery.of(context).size.height * 0.98
child: SingleChildScrollView( : MediaQuery.of(context).size.height,
scrollDirection: Axis.vertical, decoration: BoxDecoration(
child: Column( border: isDesktop
mainAxisAlignment: MainAxisAlignment.start, ? Border.all(
crossAxisAlignment: CrossAxisAlignment.start, width: 2,
children: [ color: Color(0xFFF7F7FB),
Container( )
// color: Colors.white, : null,
padding: const EdgeInsets.all(10), color: Colors.white,
child: Row( // color: Color(0xFFF7F7FB),
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ // color: Colors.amber,
Text( ),
"Create Group", child: Column(
style: TextStyle(fontSize: 18), mainAxisAlignment: MainAxisAlignment.start,
), crossAxisAlignment: CrossAxisAlignment.start,
Container( children: [
color: Color(0xFFE9EBF6), Container(
child: IconButton( // color: Colors.white,
icon: Icon( padding: const EdgeInsets.all(10),
Icons.close, child: Row(
), mainAxisAlignment: MainAxisAlignment.center,
onPressed: () { children: [
context.go('/group'); Text(
}, "Create Group",
), style: TextStyle(fontSize: 18),
) ),
], // Container(
), // color: Color(0xFFE9EBF6),
// child: IconButton(
// icon: Icon(
// Icons.close,
// ),
// onPressed: () {
// context.go('/group');
// },
// ),
// )
],
), ),
// SizedBox( ),
// height: 5, // SizedBox(
// ), // height: 5,
Container( // ),
margin: const EdgeInsets.all(10), Container(
padding: const EdgeInsets.all(20), margin: const EdgeInsets.all(10),
color: Colors.white, padding: const EdgeInsets.all(20),
height: MediaQuery.of(context).size.height * 0.8, color: Colors.white,
child: Column( height: MediaQuery.of(context).size.height * 0.6,
children: [ child: Column(
// Row( children: [
// mainAxisAlignment: MainAxisAlignment.spaceBetween, // Row(
// children: [ // mainAxisAlignment: MainAxisAlignment.spaceBetween,
// Text( // children: [
// "Mail Settings", // Text(
// style: TextStyle(color: Colors.blueAccent), // "Mail Settings",
// ), // style: TextStyle(color: Colors.blueAccent),
// Icon( // ),
// Icons.keyboard_arrow_down_outlined, // Icon(
// color: Colors.blueAccent, // Icons.keyboard_arrow_down_outlined,
// size: 30, // color: Colors.blueAccent,
// ), // size: 30,
// ], // ),
// ), // ],
isDesktop // ),
? Row( isDesktop
mainAxisAlignment: MainAxisAlignment.spaceBetween, ? Row(
children: _buildFirstRow(isDesktop), mainAxisAlignment: MainAxisAlignment.spaceBetween,
) children: _buildFirstRow(isDesktop),
: Column( )
crossAxisAlignment: CrossAxisAlignment.center, : Column(
children: _buildFirstRow(isDesktop), crossAxisAlignment: CrossAxisAlignment.center,
), children: _buildFirstRow(isDesktop),
),
SizedBox( SizedBox(
height: 10, height: 10,
), ),
isDesktop isDesktop
? Row( ? Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: _buildSecondRow(isDesktop), children: _buildSecondRow(isDesktop),
) )
: Column( : Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: _buildSecondRow(isDesktop), children: _buildSecondRow(isDesktop),
), ),
// SizedBox(height: 15), // SizedBox(height: 15),
],
Spacer(), )),
isDesktop ],
? Row(
mainAxisAlignment: MainAxisAlignment.end,
children: _buildSubmit(isDesktop),
)
: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: _buildSubmit(isDesktop),
)
],
)),
],
),
), ),
); );
} }

View File

@ -146,12 +146,41 @@ class _GroupListState extends State<GroupList> {
Widget buildGroupListLayout(bool isDesktop) { Widget buildGroupListLayout(bool isDesktop) {
return Container( return Container(
color: bodyColor, decoration: BoxDecoration(
// color: Colors.white, // color: Colors.amber,
width: double.infinity, color: bodyColor,
height: MediaQuery.of(context).size.height, border: Border.all(color: Color(0xFFF7F7FB), width: 3.5)),
// margin: const EdgeInsets.all(8), child: buildGroupData(isDesktop),
padding: const EdgeInsets.all(8), );
}
// Widget buildGroupListView(bool isDesktop) {
// return Container(
// child: Text("DAta"),
// );
// }
Widget buildGroupData(isDesktop) {
return Container(
margin: isDesktop
? EdgeInsets.all(10.0)
: EdgeInsets.only(left: 20.0, bottom: 20.0, top: 10.0, right: 20.0),
padding: const EdgeInsets.all(10),
height: isDesktop
? MediaQuery.of(context).size.height * 0.98
: MediaQuery.of(context).size.height,
decoration: BoxDecoration(
border: isDesktop
? Border.all(
width: 2,
color: Color(0xFFF7F7FB),
)
: null,
color: Colors.white,
// color: Color(0xFFF7F7FB),
// color: Colors.amber,
),
child: Column( child: Column(
children: [ children: [
Row( Row(
@ -171,7 +200,7 @@ class _GroupListState extends State<GroupList> {
ElevatedButton( ElevatedButton(
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
foregroundColor: Colors.white, foregroundColor: Colors.white,
backgroundColor: layoutColor, backgroundColor: Color(0xFF114D8B),
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
// side: BorderSide(color: , width: 1), // side: BorderSide(color: , width: 1),
@ -204,7 +233,7 @@ class _GroupListState extends State<GroupList> {
children: [ children: [
Expanded( Expanded(
child: Container( child: Container(
height: MediaQuery.of(context).size.height * 0.899, // height: MediaQuery.of(context).size.height * 0.89,
padding: const EdgeInsets.all(10), padding: const EdgeInsets.all(10),
// margin: const EdgeInsets.only(bottom: 10), // margin: const EdgeInsets.only(bottom: 10),
color: Colors.white, color: Colors.white,
@ -226,12 +255,6 @@ class _GroupListState extends State<GroupList> {
); );
} }
// Widget buildGroupListView(bool isDesktop) {
// return Container(
// child: Text("DAta"),
// );
// }
Widget buildGroupListView(bool isDesktop) { Widget buildGroupListView(bool isDesktop) {
if (apiAllGroups == null || apiAllGroups!.isEmpty) { if (apiAllGroups == null || apiAllGroups!.isEmpty) {
return Center(child: Text("No groups found.")); return Center(child: Text("No groups found."));
@ -253,13 +276,26 @@ class _GroupListState extends State<GroupList> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text("Group Name: ${group['name']}", Row(
style: children: [
TextStyle(fontSize: 13, fontWeight: FontWeight.bold)), Expanded(
child: Text("Group Name: ${group['name']}",
style: TextStyle(
fontSize: 13, fontWeight: FontWeight.bold)),
),
],
),
SizedBox(height: 4), SizedBox(height: 4),
Text("Description: ${group['description'] ?? 'N/A'}"), Row(
Text("Policy: ${group['domestic_policy_id']}"), mainAxisAlignment: MainAxisAlignment.spaceBetween,
Text("Created By : ${group['created_by']}"), children: [
Expanded(
child: Text(
"Policy: ${group['domestic_policy_name'] ?? group['international_policy_name']}")),
Expanded(child: Text("${group['description'] ?? 'N/A'}")),
Expanded(child: Text(" ${group['created_by']}")),
],
),
Row( Row(
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
children: [ children: [

View File

@ -558,7 +558,7 @@ class _OrgSetUpState extends State<OrgSetUp> {
// if (showMail) // if (showMail)
SizedBox( SizedBox(
height: 3, height: 10,
), ),
Container( Container(
// width: double.infinity, // width: double.infinity,
@ -595,7 +595,7 @@ class _OrgSetUpState extends State<OrgSetUp> {
], ],
)), )),
SizedBox( SizedBox(
height: 5, height: 15,
), ),
Text( Text(
@ -607,7 +607,7 @@ class _OrgSetUpState extends State<OrgSetUp> {
color: Color(0xFF212121)), color: Color(0xFF212121)),
), ),
SizedBox( SizedBox(
height: 5, height: 10,
), ),
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
@ -634,11 +634,11 @@ class _OrgSetUpState extends State<OrgSetUp> {
), ),
), ),
SizedBox( SizedBox(
height: 5, height: 15,
), ),
Row( Column(
// crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
"Choose Theme", "Choose Theme",

View File

@ -126,16 +126,31 @@ class _CreatePlansState extends State<CreatePlan> {
// ), // ),
Expanded( Expanded(
child: Container( child: Container(
margin: const EdgeInsets.all(8), margin: isDesktop
? EdgeInsets.all(10.0)
: EdgeInsets.only(
left: 20.0, bottom: 20.0, top: 10.0, right: 20.0),
padding: const EdgeInsets.all(10),
height: isDesktop
? MediaQuery.of(context).size.height * 0.98
: MediaQuery.of(context).size.height,
decoration: BoxDecoration( decoration: BoxDecoration(
border: isDesktop
? Border.all(
width: 2,
color: Color(0xFFF7F7FB),
)
: null,
color: Colors.white, color: Colors.white,
borderRadius: BorderRadius.circular(12), // rounds all corners // color: Color(0xFFF7F7FB),
// color: Colors.amber,
), ),
// color: bodyColor, // color: bodyColor,
child: SingleChildScrollView( child: SingleChildScrollView(
child: Padding( child: Padding(
padding: EdgeInsets.all(20.0), padding: EdgeInsets.all(10.0),
child: CreateNewPlan( child: CreateNewPlan(
key: _createPlanKey, key: _createPlanKey,
bodyColor: bodyColor, bodyColor: bodyColor,
@ -920,6 +935,9 @@ class CreateNewPlansState extends State<CreateNewPlan> {
)), )),
], ],
), ),
SizedBox(
height: 10,
),
if (widget.isApprover) if (widget.isApprover)
Container( Container(
padding: const EdgeInsets.all(10), padding: const EdgeInsets.all(10),
@ -1570,7 +1588,7 @@ class CreateNewPlansState extends State<CreateNewPlan> {
? Colors.white ? Colors.white
: Colors.black, : Colors.black,
fontWeight: _selectedOption == option["value"] fontWeight: _selectedOption == option["value"]
? FontWeight.w600 ? FontWeight.w500
: null, : null,
), ),
), ),
@ -1652,7 +1670,7 @@ class CreateNewPlansState extends State<CreateNewPlan> {
color: color:
_selectedTripType == "1" ? Colors.white : Colors.black, _selectedTripType == "1" ? Colors.white : Colors.black,
fontWeight: fontWeight:
_selectedTripType == "1" ? FontWeight.w600 : null, _selectedTripType == "1" ? FontWeight.w500 : null,
fontSize: 13), fontSize: 13),
), ),
@ -1683,6 +1701,7 @@ class CreateNewPlansState extends State<CreateNewPlan> {
child: Container( child: Container(
width: 15, width: 15,
height: 15, height: 15,
decoration: BoxDecoration( decoration: BoxDecoration(
shape: BoxShape.rectangle, shape: BoxShape.rectangle,
// color: _selectedOption == option["value"] // color: _selectedOption == option["value"]
@ -1724,7 +1743,7 @@ class CreateNewPlansState extends State<CreateNewPlan> {
style: TextStyle( style: TextStyle(
fontSize: 13, fontSize: 13,
color: _selectedTripType == "2" ? Colors.white : Colors.black, color: _selectedTripType == "2" ? Colors.white : Colors.black,
fontWeight: _selectedTripType == "2" ? FontWeight.w600 : null, fontWeight: _selectedTripType == "2" ? FontWeight.w500 : null,
), ),
), ),
GestureDetector( GestureDetector(

View File

@ -187,18 +187,46 @@ class _ListPlansState extends State<ListPlans> {
body: Row( body: Row(
children: [ children: [
if (isDesktop) CustomDrawer(isDesktop: true), if (isDesktop) CustomDrawer(isDesktop: true),
Expanded(child: buildTableLayout(isDesktop)) Expanded(child: buildGroupListLayout(isDesktop))
], ],
), ),
); );
}); });
} }
Widget buildGroupListLayout(bool isDesktop) {
return Container(
decoration: BoxDecoration(
// color: Colors.amber,
color: bodyColor,
border: Border.all(color: Color(0xFFF7F7FB), width: 3.5)),
child: buildTableLayout(isDesktop),
);
}
Widget buildTableLayout(isDesktop) { Widget buildTableLayout(isDesktop) {
return Container( return Container(
color: bodyColor, margin: isDesktop
? EdgeInsets.all(10.0)
: EdgeInsets.only(left: 20.0, bottom: 20.0, top: 10.0, right: 20.0),
padding: const EdgeInsets.all(10),
height: isDesktop
? MediaQuery.of(context).size.height * 0.98
: MediaQuery.of(context).size.height,
decoration: BoxDecoration(
border: isDesktop
? Border.all(
width: 2,
color: Color(0xFFF7F7FB),
)
: null,
color: Colors.white,
// color: Color(0xFFF7F7FB),
// color: Colors.amber,
),
child: Padding( child: Padding(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(1.0),
child: Container( child: Container(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(10.0),
color: Colors.white, color: Colors.white,

View File

@ -286,7 +286,7 @@ class PolicyCriteriaState extends State<PolicyCriteria> {
Expanded( Expanded(
flex: 2, flex: 2,
child: Text( child: Text(
"Approver Name", "Approver",
style: TextStyle( style: TextStyle(
color: Color(0xFF9E9DBD), color: Color(0xFF9E9DBD),
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
@ -296,7 +296,7 @@ class PolicyCriteriaState extends State<PolicyCriteria> {
Expanded( Expanded(
flex: 2, flex: 2,
child: Text( child: Text(
"Notification", "Actions",
style: TextStyle( style: TextStyle(
color: Color(0xFF9E9DBD), color: Color(0xFF9E9DBD),
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
@ -304,7 +304,7 @@ class PolicyCriteriaState extends State<PolicyCriteria> {
), ),
), ),
Text( Text(
"Select", "Parallel Action",
style: TextStyle( style: TextStyle(
color: Color(0xFF9E9DBD), color: Color(0xFF9E9DBD),
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,

View File

@ -145,21 +145,44 @@ class _PolicyListState extends State<PolicyList> {
body: Row( body: Row(
children: [ children: [
if (isDesktop) CustomDrawer(isDesktop: true), if (isDesktop) CustomDrawer(isDesktop: true),
Expanded(child: buildGroupListLayout(isDesktop)) Expanded(child: buildGroupList(isDesktop))
], ],
), ),
); );
}); });
} }
Widget buildGroupList(bool isDesktop) {
return Container(
decoration: BoxDecoration(
// color: Colors.amber,
color: bodyColor,
border: Border.all(color: Color(0xFFF7F7FB), width: 3.5)),
child: buildGroupListLayout(isDesktop),
);
}
Widget buildGroupListLayout(bool isDesktop) { Widget buildGroupListLayout(bool isDesktop) {
return Container( return Container(
color: bodyColor, margin: isDesktop
// color: Colors.white, ? EdgeInsets.all(10.0)
width: double.infinity, : EdgeInsets.only(left: 20.0, bottom: 20.0, top: 10.0, right: 20.0),
height: MediaQuery.of(context).size.height, padding: const EdgeInsets.all(10),
// margin: const EdgeInsets.all(8), height: isDesktop
padding: const EdgeInsets.all(8), ? MediaQuery.of(context).size.height * 0.98
: MediaQuery.of(context).size.height,
decoration: BoxDecoration(
border: isDesktop
? Border.all(
width: 2,
color: Color(0xFFF7F7FB),
)
: null,
color: Colors.white,
// color: Color(0xFFF7F7FB),
// color: Colors.amber,
),
child: Column( child: Column(
children: [ children: [
Row( Row(
@ -179,7 +202,7 @@ class _PolicyListState extends State<PolicyList> {
ElevatedButton( ElevatedButton(
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
foregroundColor: Colors.white, foregroundColor: Colors.white,
backgroundColor: layoutColor, backgroundColor: Color(0xFF114D8B),
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
// side: BorderSide(color: , width: 1), // side: BorderSide(color: , width: 1),
@ -212,7 +235,7 @@ class _PolicyListState extends State<PolicyList> {
children: [ children: [
Expanded( Expanded(
child: Container( child: Container(
height: MediaQuery.of(context).size.height * 0.899, height: MediaQuery.of(context).size.height * 0.8,
padding: const EdgeInsets.all(10), padding: const EdgeInsets.all(10),
// margin: const EdgeInsets.only(bottom: 10), // margin: const EdgeInsets.only(bottom: 10),
color: Colors.white, color: Colors.white,

View File

@ -695,16 +695,30 @@ class _CreateUserFormState extends State<CreateUserForm> {
children: [ children: [
Expanded( Expanded(
child: Container( child: Container(
margin: const EdgeInsets.all(8), margin: isDesktop
? EdgeInsets.all(10.0)
: EdgeInsets.only(
left: 20.0, bottom: 20.0, top: 10.0, right: 20.0),
padding: const EdgeInsets.all(10),
height: isDesktop
? MediaQuery.of(context).size.height * 0.98
: MediaQuery.of(context).size.height,
decoration: BoxDecoration( decoration: BoxDecoration(
border: isDesktop
? Border.all(
width: 2,
color: Color(0xFFF7F7FB),
)
: null,
color: Colors.white, color: Colors.white,
borderRadius: BorderRadius.circular(12), // rounds all corners // color: Color(0xFFF7F7FB),
),
// color: Colors.amber,
),
// color: bodyColor, // color: bodyColor,
child: SingleChildScrollView( child: SingleChildScrollView(
child: Padding( child: Padding(
padding: EdgeInsets.all(20.0), padding: EdgeInsets.all(0.0),
child: _buildUserDetails(isDesktop), child: _buildUserDetails(isDesktop),
), ),
), ),

View File

@ -253,7 +253,7 @@ class _UserListScreenState extends State<UserListScreen> {
children: [ children: [
if (isDesktop) CustomDrawer(isDesktop: true), if (isDesktop) CustomDrawer(isDesktop: true),
// const Expanded(child: Center(child: Text("User Page Content"))), // const Expanded(child: Center(child: Text("User Page Content"))),
Expanded(child: buildUserTable(isDesktop)), Expanded(child: buildGroupList(isDesktop)),
], ],
), ),
), ),
@ -261,9 +261,37 @@ class _UserListScreenState extends State<UserListScreen> {
}); });
} }
Widget buildGroupList(bool isDesktop) {
return Container(
decoration: BoxDecoration(
// color: Colors.amber,
color: bodyColor,
border: Border.all(color: Color(0xFFF7F7FB), width: 3.5)),
child: buildUserTable(isDesktop),
);
}
Widget buildUserTable(bool isDesktop) { Widget buildUserTable(bool isDesktop) {
return Container( return Container(
color: bodyColor, margin: isDesktop
? EdgeInsets.all(10.0)
: EdgeInsets.only(left: 20.0, bottom: 20.0, top: 10.0, right: 20.0),
// padding: const EdgeInsets.all(10),
height: isDesktop
? MediaQuery.of(context).size.height * 0.98
: MediaQuery.of(context).size.height,
decoration: BoxDecoration(
border: isDesktop
? Border.all(
width: 2,
color: Color(0xFFF7F7FB),
)
: null,
color: Colors.white,
// color: Color(0xFFF7F7FB),
// color: Colors.amber,
),
child: Padding( child: Padding(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(10.0),
child: Container( child: Container(

View File

@ -136,14 +136,15 @@ class _CustomDrawerState extends State<CustomDrawer> {
children: [ children: [
Row( Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
selectedOrg?['logo'] != null selectedOrg?['logo'] != null
? ClipOval( ? ClipRect(
child: Image.network( child: Image.network(
selectedOrg!['logo'], selectedOrg!['logo'],
width: 50, width: 150,
height: 50, height: 50,
fit: BoxFit.cover, fit: BoxFit.fitWidth,
errorBuilder: (context, error, stackTrace) { errorBuilder: (context, error, stackTrace) {
return const CircleAvatar( return const CircleAvatar(
radius: 20, radius: 20,
@ -155,8 +156,12 @@ class _CustomDrawerState extends State<CustomDrawer> {
) )
: const CircleAvatar( : const CircleAvatar(
radius: 20, radius: 20,
backgroundColor: Colors.amber, backgroundColor: Colors.white,
child: Icon(Icons.add_a_photo, size: 10), child: Icon(
Icons.add_a_photo,
size: 10,
color: Colors.grey,
),
), ),
], ],
), ),