adding i18n to all other pages batch3
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
import '../../l10n/app_localizations.dart';
|
||||
import '../../providers/token_manager.dart';
|
||||
import 'Bookmarks_api_service.dart';
|
||||
|
||||
@@ -24,7 +25,8 @@ class _CreateEntityScreenState extends State<CreateEntityScreen> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(title: const Text('Create Bookmarks')),
|
||||
appBar: AppBar(
|
||||
title: Text(AppLocalizations.of(context)!.createBookmarks)),
|
||||
body: SingleChildScrollView(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(16),
|
||||
@@ -70,11 +72,14 @@ class _CreateEntityScreenState extends State<CreateEntityScreen> {
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: const Text('Error'),
|
||||
content: Text('Failed to create entity: $e'),
|
||||
title: Text(AppLocalizations.of(context)!
|
||||
.error),
|
||||
content: Text(AppLocalizations.of(context)!
|
||||
.failedCreateEntity(e.toString())),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: const Text('OK'),
|
||||
child: Text(AppLocalizations.of(context)!
|
||||
.ok),
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import '../../Utils/image_constant.dart';
|
||||
import '../../Utils/size_utils.dart';
|
||||
import '../../l10n/app_localizations.dart';
|
||||
import '../../providers/token_manager.dart';
|
||||
import '../../theme/app_decoration.dart';
|
||||
import '../../theme/app_style.dart';
|
||||
@@ -46,11 +47,12 @@ class _bookmarks_entity_list_screenState
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: const Text('Error'),
|
||||
content: Text('Failed to fetch entities: $e'),
|
||||
title: Text(AppLocalizations.of(context)!.error),
|
||||
content: Text(AppLocalizations.of(context)!
|
||||
.failedFetchEntities(e.toString())),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: const Text('OK'),
|
||||
child: Text(AppLocalizations.of(context)!.ok),
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
@@ -74,11 +76,12 @@ class _bookmarks_entity_list_screenState
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: const Text('Error'),
|
||||
content: Text('Failed to delete entity: $e'),
|
||||
title: Text(AppLocalizations.of(context)!.error),
|
||||
content: Text(AppLocalizations.of(context)!
|
||||
.deleteEntityFailed(e.toString())),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: const Text('OK'),
|
||||
child: Text(AppLocalizations.of(context)!.ok),
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
@@ -105,10 +108,12 @@ class _bookmarks_entity_list_screenState
|
||||
Navigator.pop(context);
|
||||
}),
|
||||
centerTitle: true,
|
||||
title: AppbarTitle(text: "Bookmarks")),
|
||||
title: AppbarTitle(
|
||||
text: AppLocalizations.of(context)!.bookmarksTitle)),
|
||||
body: entities.isEmpty
|
||||
? const Center(
|
||||
child: Text('No BookMarks found.'),
|
||||
? Center(
|
||||
child: Text(
|
||||
AppLocalizations.of(context)!.noBookmarks),
|
||||
)
|
||||
: Container(
|
||||
width: double.maxFinite,
|
||||
@@ -315,8 +320,9 @@ class _bookmarks_entity_list_screenState
|
||||
})
|
||||
: Container(
|
||||
height: MediaQuery.of(context).size.height,
|
||||
child: const Center(
|
||||
child: Text("No Databases available"),
|
||||
child: Center(
|
||||
child: Text(AppLocalizations.of(context)!
|
||||
.noDatabases),
|
||||
)),
|
||||
)
|
||||
]))
|
||||
@@ -422,11 +428,12 @@ class _bookmarks_entity_list_screenState
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: const Text('Error'),
|
||||
content: Text('Failed to launch URL: $e'),
|
||||
title: Text(AppLocalizations.of(context)!.error),
|
||||
content: Text(AppLocalizations.of(context)!
|
||||
.failedLaunchUrl(e.toString())),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: const Text('OK'),
|
||||
child: Text(AppLocalizations.of(context)!.ok),
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
@@ -519,7 +526,8 @@ class _bookmarks_entity_list_screenState
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: const Text('Additional Fields'),
|
||||
title: Text(
|
||||
AppLocalizations.of(context)!.additionalFields),
|
||||
content: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
@@ -535,7 +543,7 @@ class _bookmarks_entity_list_screenState
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: const Text('Close'),
|
||||
child: Text(AppLocalizations.of(context)!.close),
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'dart:math';
|
||||
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
import '../../l10n/app_localizations.dart';
|
||||
import '../../providers/token_manager.dart';
|
||||
import 'Bookmarks_api_service.dart';
|
||||
|
||||
@@ -27,7 +28,8 @@ class _UpdateEntityScreenState extends State<UpdateEntityScreen> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(title: const Text('Update Bookmarks')),
|
||||
appBar: AppBar(
|
||||
title: Text(AppLocalizations.of(context)!.updateBookmarks)),
|
||||
body: SingleChildScrollView(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(16),
|
||||
@@ -41,7 +43,8 @@ class _UpdateEntityScreenState extends State<UpdateEntityScreen> {
|
||||
const InputDecoration(labelText: 'bookmark_firstletter'),
|
||||
validator: (value) {
|
||||
if (value == null || value.isEmpty) {
|
||||
return 'Please enter a bookmark_firstletter';
|
||||
return AppLocalizations.of(context)!.pleaseEnterThis(
|
||||
'bookmark_firstletter');
|
||||
}
|
||||
return null;
|
||||
},
|
||||
@@ -55,7 +58,8 @@ class _UpdateEntityScreenState extends State<UpdateEntityScreen> {
|
||||
decoration: const InputDecoration(labelText: 'bookmark_link'),
|
||||
validator: (value) {
|
||||
if (value == null || value.isEmpty) {
|
||||
return 'Please enter a bookmark_link';
|
||||
return AppLocalizations.of(context)!.pleaseEnterThis(
|
||||
'bookmark_link');
|
||||
}
|
||||
return null;
|
||||
},
|
||||
@@ -70,7 +74,8 @@ class _UpdateEntityScreenState extends State<UpdateEntityScreen> {
|
||||
const InputDecoration(labelText: 'fileupload_field'),
|
||||
validator: (value) {
|
||||
if (value == null || value.isEmpty) {
|
||||
return 'Please enter a fileupload_field';
|
||||
return AppLocalizations.of(context)!.pleaseEnterThis(
|
||||
'fileupload_field');
|
||||
}
|
||||
return null;
|
||||
},
|
||||
@@ -99,11 +104,14 @@ class _UpdateEntityScreenState extends State<UpdateEntityScreen> {
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: const Text('Error'),
|
||||
content: Text('Failed to update entity: $e'),
|
||||
title: Text(AppLocalizations.of(context)!
|
||||
.error),
|
||||
content: Text(AppLocalizations.of(context)!
|
||||
.failedUpdateEntity(e.toString())),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: const Text('OK'),
|
||||
child: Text(AppLocalizations.of(context)!
|
||||
.ok),
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
|
||||
@@ -7,6 +7,7 @@ import 'dart:convert';
|
||||
|
||||
import '../../Utils/image_constant.dart';
|
||||
import '../../Utils/size_utils.dart';
|
||||
import '../../l10n/app_localizations.dart';
|
||||
import '../../providers/token_manager.dart';
|
||||
import '../../resources/api_constants.dart';
|
||||
import '../../theme/app_style.dart';
|
||||
@@ -95,17 +96,21 @@ class _RaisedTicketScreenState extends State<RaisedTicketScreen> {
|
||||
)
|
||||
],
|
||||
centerTitle: true,
|
||||
title: AppbarTitle(text: "Raised Tickets")),
|
||||
title: AppbarTitle(
|
||||
text: AppLocalizations.of(context)!.raisedTickets)),
|
||||
body: ListView.builder(
|
||||
itemCount: tickets.length,
|
||||
itemBuilder: (context, index) {
|
||||
final ticket = tickets[index];
|
||||
return ListTile(
|
||||
title: Text(
|
||||
'Ticket ID: ${ticket['ticketid']}',
|
||||
AppLocalizations.of(context)!
|
||||
.ticketIdRow(ticket['ticketid'].toString()),
|
||||
style: const TextStyle(fontSize: 12),
|
||||
),
|
||||
subtitle: Text('Ticket Name: ${ticket['ticketname']}',
|
||||
subtitle: Text(
|
||||
AppLocalizations.of(context)!
|
||||
.ticketNameRow(ticket['ticketname'].toString()),
|
||||
style: const TextStyle(fontSize: 10)),
|
||||
// Add more fields as needed
|
||||
);
|
||||
@@ -210,7 +215,9 @@ class _TicketFormScreenState extends State<TicketFormScreen> {
|
||||
Navigator.pop(context);
|
||||
}),
|
||||
centerTitle: true,
|
||||
title: AppbarTitle(text: "Raise a Ticket")),
|
||||
title: AppbarTitle(
|
||||
text:
|
||||
AppLocalizations.of(context)!.raiseTicket)),
|
||||
body: Padding(
|
||||
padding: const EdgeInsets.all(16.0),
|
||||
child: Column(
|
||||
@@ -221,13 +228,14 @@ class _TicketFormScreenState extends State<TicketFormScreen> {
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Text("Title",
|
||||
Text(AppLocalizations.of(context)!.ticketTitle,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
textAlign: TextAlign.left,
|
||||
style: AppStyle.txtGilroyMedium16Bluegray900),
|
||||
CustomTextFormField(
|
||||
focusNode: FocusNode(),
|
||||
hintText: "Enter Title",
|
||||
hintText: AppLocalizations.of(context)!
|
||||
.enterTicketTitle,
|
||||
controller: titleController,
|
||||
margin: getMargin(top: 6))
|
||||
])),
|
||||
@@ -237,13 +245,16 @@ class _TicketFormScreenState extends State<TicketFormScreen> {
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Text("Description",
|
||||
Text(
|
||||
AppLocalizations.of(context)!
|
||||
.ticketDescription,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
textAlign: TextAlign.left,
|
||||
style: AppStyle.txtGilroyMedium16Bluegray900),
|
||||
CustomTextFormField(
|
||||
focusNode: FocusNode(),
|
||||
hintText: "Enter Description",
|
||||
hintText: AppLocalizations.of(context)!
|
||||
.enterTicketDescription,
|
||||
controller: descriptionController,
|
||||
margin: getMargin(top: 6))
|
||||
])),
|
||||
@@ -253,19 +264,20 @@ class _TicketFormScreenState extends State<TicketFormScreen> {
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Text("Project Name",
|
||||
Text(AppLocalizations.of(context)!.projectName,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
textAlign: TextAlign.left,
|
||||
style: AppStyle.txtGilroyMedium16Bluegray900),
|
||||
CustomTextFormField(
|
||||
focusNode: FocusNode(),
|
||||
hintText: "Enter Project Name",
|
||||
hintText: AppLocalizations.of(context)!
|
||||
.enterProjectName,
|
||||
controller: projectNameController,
|
||||
margin: getMargin(top: 6))
|
||||
])), // Adjusted the spacing
|
||||
Row(
|
||||
children: <Widget>[
|
||||
Text('Pick Screenshot of issue'),
|
||||
Text(AppLocalizations.of(context)!.pickScreenshot),
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
_pickImage(); // Call the function to pick an image
|
||||
@@ -279,7 +291,7 @@ class _TicketFormScreenState extends State<TicketFormScreen> {
|
||||
),
|
||||
CustomButton(
|
||||
height: getVerticalSize(50),
|
||||
text: "Submit",
|
||||
text: AppLocalizations.of(context)!.submit,
|
||||
margin: getMargin(top: 24, bottom: 5),
|
||||
onTap: () async {
|
||||
submitTicket(screenshot);
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'dart:convert';
|
||||
|
||||
import '../../l10n/app_localizations.dart';
|
||||
|
||||
// class ReportEditor extends StatefulWidget {
|
||||
// @override
|
||||
// _ReportEditorState createState() => _ReportEditorState();
|
||||
@@ -687,7 +689,8 @@ class _ReportEditorState extends State<ReportEditor> {
|
||||
await pdfFile.writeAsBytes(pdfBytes);
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text('PDF saved to ${pdfFile.path}'),
|
||||
content: Text(AppLocalizations.of(context)!
|
||||
.pdfSaved(pdfFile.path)),
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -696,7 +699,8 @@ class _ReportEditorState extends State<ReportEditor> {
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
key: _scaffoldKey,
|
||||
appBar: AppBar(title: Text('Report Editor')),
|
||||
appBar: AppBar(
|
||||
title: Text(AppLocalizations.of(context)!.reportEditor)),
|
||||
body: Row(
|
||||
children: <Widget>[
|
||||
Container(
|
||||
@@ -705,21 +709,27 @@ class _ReportEditorState extends State<ReportEditor> {
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Text('Drag and Drop Fields:'),
|
||||
Text(AppLocalizations.of(context)!.dragDropFields),
|
||||
Draggable<String>(
|
||||
data: 'Title',
|
||||
child: DragField(text: 'Title'),
|
||||
feedback: DragField(text: 'Title'),
|
||||
child: DragField(
|
||||
text: AppLocalizations.of(context)!.dragTitle),
|
||||
feedback: DragField(
|
||||
text: AppLocalizations.of(context)!.dragTitle),
|
||||
),
|
||||
Draggable<String>(
|
||||
data: 'Phone Number',
|
||||
child: DragField(text: 'Phone Number'),
|
||||
feedback: DragField(text: 'Phone Number'),
|
||||
child: DragField(
|
||||
text: AppLocalizations.of(context)!.dragPhone),
|
||||
feedback: DragField(
|
||||
text: AppLocalizations.of(context)!.dragPhone),
|
||||
),
|
||||
Draggable<String>(
|
||||
data: 'Date',
|
||||
child: DragField(text: 'Date'),
|
||||
feedback: DragField(text: 'Date'),
|
||||
child: DragField(
|
||||
text: AppLocalizations.of(context)!.dragDate),
|
||||
feedback: DragField(
|
||||
text: AppLocalizations.of(context)!.dragDate),
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -743,7 +753,8 @@ class _ReportEditorState extends State<ReportEditor> {
|
||||
),
|
||||
Align(
|
||||
alignment: Alignment.bottomRight,
|
||||
child: Text('Scale Bar Report Editor'),
|
||||
child: Text(AppLocalizations.of(context)!
|
||||
.scaleBarTitle),
|
||||
),
|
||||
...droppedFields.asMap().entries.map((entry) {
|
||||
final index = entry.key;
|
||||
@@ -924,14 +935,17 @@ class _EditableFieldState extends State<EditableField> {
|
||||
children: [
|
||||
TextFormField(
|
||||
controller: keyController,
|
||||
decoration: InputDecoration(labelText: 'Key'),
|
||||
decoration: InputDecoration(
|
||||
labelText: AppLocalizations.of(context)!.keyLabel),
|
||||
onChanged: (value) {
|
||||
widget.onEdit(value, valueController.text);
|
||||
},
|
||||
),
|
||||
TextFormField(
|
||||
controller: valueController,
|
||||
decoration: InputDecoration(labelText: 'Value'),
|
||||
decoration: InputDecoration(
|
||||
labelText:
|
||||
AppLocalizations.of(context)!.valueLabel),
|
||||
onChanged: (value) {
|
||||
widget.onEdit(keyController.text, value);
|
||||
},
|
||||
@@ -955,7 +969,8 @@ class DraggableTarget extends StatelessWidget {
|
||||
child: DragTarget<String>(
|
||||
builder: (context, candidateData, rejectedData) {
|
||||
return Center(
|
||||
child: Text('Drop Here', style: TextStyle(fontSize: 24)),
|
||||
child: Text(AppLocalizations.of(context)!.dropHere,
|
||||
style: TextStyle(fontSize: 24)),
|
||||
);
|
||||
},
|
||||
onAccept: (String field) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import '../../Utils/image_constant.dart';
|
||||
import '../../Utils/size_utils.dart';
|
||||
import '../../l10n/app_localizations.dart';
|
||||
import '../../widgets/app_bar/appbar_image.dart';
|
||||
import '../../widgets/app_bar/appbar_title.dart';
|
||||
import '../../widgets/app_bar/custom_app_bar.dart';
|
||||
@@ -24,20 +25,42 @@ class SetupScreen extends StatelessWidget {
|
||||
Navigator.pop(context);
|
||||
}),
|
||||
centerTitle: true,
|
||||
title: AppbarTitle(text: "Setup Screen")),
|
||||
title: AppbarTitle(
|
||||
text: AppLocalizations.of(context)!.setupScreen)),
|
||||
body: SingleChildScrollView(
|
||||
child: Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
buildSetupBlock(context, 'User Maintenance', SysParameter()),
|
||||
buildSetupBlock(context, 'User Group Maintenance', SysParameter()),
|
||||
buildSetupBlock(context, 'Menu Maintenance', SysParameter()),
|
||||
buildSetupBlock(context, 'Menu Access', SysParameter()),
|
||||
buildSetupBlock(context, 'System Parameter', SysParameter()),
|
||||
buildSetupBlock(context, 'Access Type', SysParameter()),
|
||||
buildSetupBlock(
|
||||
context,
|
||||
AppLocalizations.of(context)!.userMaintenance,
|
||||
SysParameter()),
|
||||
buildSetupBlock(
|
||||
context,
|
||||
AppLocalizations.of(context)!.userGroupMaintenance,
|
||||
SysParameter()),
|
||||
buildSetupBlock(
|
||||
context,
|
||||
AppLocalizations.of(context)!.menuMaintenance,
|
||||
SysParameter()),
|
||||
buildSetupBlock(
|
||||
context,
|
||||
AppLocalizations.of(context)!.menuAccess,
|
||||
SysParameter()),
|
||||
buildSetupBlock(
|
||||
context,
|
||||
AppLocalizations.of(context)!.sysParamTitle,
|
||||
SysParameter()),
|
||||
buildSetupBlock(
|
||||
context,
|
||||
AppLocalizations.of(context)!.accessType,
|
||||
SysParameter()),
|
||||
// buildSetupBlock(context, 'Report', ReportPage()),
|
||||
buildSetupBlock(context, 'Dashboard', SysParameter()),
|
||||
buildSetupBlock(
|
||||
context,
|
||||
AppLocalizations.of(context)!.dashboardMenu,
|
||||
SysParameter()),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@@ -5,6 +5,7 @@ import 'package:image_picker/image_picker.dart';
|
||||
|
||||
import '../../Utils/image_constant.dart';
|
||||
import '../../Utils/size_utils.dart';
|
||||
import '../../l10n/app_localizations.dart';
|
||||
import '../../providers/token_manager.dart';
|
||||
import '../../theme/app_style.dart';
|
||||
import '../../widgets/app_bar/appbar_image.dart';
|
||||
@@ -139,11 +140,12 @@ class _SysParameterState extends State<SysParameter> {
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: const Text('Error'),
|
||||
content: Text('Please select an image.'),
|
||||
title: Text(AppLocalizations.of(context)!.error),
|
||||
content: Text(
|
||||
AppLocalizations.of(context)!.selectImage),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: const Text('OK'),
|
||||
child: Text(AppLocalizations.of(context)!.ok),
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
@@ -171,11 +173,12 @@ class _SysParameterState extends State<SysParameter> {
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: const Text('Error'),
|
||||
content: Text('Failed to upload image: $e'),
|
||||
title: Text(AppLocalizations.of(context)!.error),
|
||||
content: Text(AppLocalizations.of(context)!
|
||||
.failedUploadImage(e.toString())),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: const Text('OK'),
|
||||
child: Text(AppLocalizations.of(context)!.ok),
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
@@ -201,8 +204,9 @@ class _SysParameterState extends State<SysParameter> {
|
||||
onTap: () {
|
||||
Navigator.pop(context);
|
||||
}),
|
||||
centerTitle: true,
|
||||
title: AppbarTitle(text: "System Parameter")),
|
||||
centerTitle: true,
|
||||
title: AppbarTitle(
|
||||
text: AppLocalizations.of(context)!.sysParamTitle)),
|
||||
body: Material(child:SingleChildScrollView( // Wrap the form in a SingleChildScrollView
|
||||
scrollDirection: Axis.vertical, // Allow vertical scrolling
|
||||
child:Padding(
|
||||
@@ -211,131 +215,159 @@ class _SysParameterState extends State<SysParameter> {
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'Scheduler Timer',
|
||||
fieldName: AppLocalizations.of(context)!.schedulerTimer,
|
||||
controller: schedulerTimerController,
|
||||
tooltip: 'Tooltip for Scheduler Timer',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.schedulerTimer),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'Lease Tax Code',
|
||||
fieldName: AppLocalizations.of(context)!.leaseTaxCode,
|
||||
controller: leaseTaxCodeController,
|
||||
tooltip: 'Tooltip for Lease Tax Code',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.leaseTaxCode),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'Vessel Confirmation Process Limit',
|
||||
fieldName:
|
||||
AppLocalizations.of(context)!.vesselConfProcessLimit,
|
||||
controller: vesselConfirmationController,
|
||||
tooltip: 'Tooltip for Vessel Confirmation Process Limit',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.vesselConfProcessLimit),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'Row To Display',
|
||||
fieldName: AppLocalizations.of(context)!.rowToDisplay,
|
||||
controller: rowToDisplayController,
|
||||
tooltip: 'Tooltip for Row To Display',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.rowToDisplay),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'Link To Display',
|
||||
fieldName: AppLocalizations.of(context)!.linkToDisplay,
|
||||
controller: linkToDisplayController,
|
||||
tooltip: 'Tooltip for Link To Display',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.linkToDisplay),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'Row To Add',
|
||||
fieldName: AppLocalizations.of(context)!.rowToAdd,
|
||||
controller: rowToAddController,
|
||||
tooltip: 'Tooltip for Row To Add',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.rowToAdd),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'LOV Row To Display',
|
||||
fieldName: AppLocalizations.of(context)!.lovRowToDisplay,
|
||||
controller: lovRowToDisplayController,
|
||||
tooltip: 'Tooltip for LOV Row To Display',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.lovRowToDisplay),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'LOV Link To Display',
|
||||
fieldName: AppLocalizations.of(context)!.lovLinkToDisplay,
|
||||
controller: lovLinkToDisplayController,
|
||||
tooltip: 'Tooltip for LOV Link To Display',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.lovLinkToDisplay),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'OID Server Name',
|
||||
fieldName: AppLocalizations.of(context)!.oidServerName,
|
||||
controller: oidServerNameController,
|
||||
tooltip: 'Tooltip for OID Server Name',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.oidServerName),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'OID Base',
|
||||
fieldName: AppLocalizations.of(context)!.oidBase,
|
||||
controller: oidBaseController,
|
||||
tooltip: 'Tooltip for OID Base',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.oidBase),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'OID Admin User',
|
||||
fieldName: AppLocalizations.of(context)!.oidAdminUser,
|
||||
controller: oidAdminUserController,
|
||||
tooltip: 'Tooltip for OID Admin User',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.oidAdminUser),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'OID Server Port',
|
||||
fieldName: AppLocalizations.of(context)!.oidServerPort,
|
||||
controller: oidServerPortController,
|
||||
tooltip: 'Tooltip for OID Server Port',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.oidServerPort),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'User Default Group',
|
||||
fieldName: AppLocalizations.of(context)!.userDefaultGroup,
|
||||
controller: userDefaultGroupController,
|
||||
tooltip: 'Tooltip for User Default Group',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.userDefaultGroup),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'Default Department',
|
||||
fieldName: AppLocalizations.of(context)!.defaultDepartment,
|
||||
controller: defaultDepartmentController,
|
||||
tooltip: 'Tooltip for Default Department',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.defaultDepartment),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'Default Position',
|
||||
fieldName: AppLocalizations.of(context)!.defaultPosition,
|
||||
controller: defaultPositionController,
|
||||
tooltip: 'Tooltip for Default Position',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.defaultPosition),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'Single Charge',
|
||||
fieldName: AppLocalizations.of(context)!.singleCharge,
|
||||
controller: singleChargeController,
|
||||
tooltip: 'Tooltip for Single Charge',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.singleCharge),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'First Day of The Week',
|
||||
fieldName: AppLocalizations.of(context)!.firstDayOfWeek,
|
||||
controller: firstDayOfWeekController,
|
||||
tooltip: 'Tooltip for First Day of The Week',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.firstDayOfWeek),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'Hour per Shift',
|
||||
fieldName: AppLocalizations.of(context)!.hourPerShift,
|
||||
controller: hourPerShiftController,
|
||||
tooltip: 'Tooltip for Hour per Shift',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.hourPerShift),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'CN Billing Frequency',
|
||||
fieldName:
|
||||
AppLocalizations.of(context)!.cnBillingFrequency,
|
||||
controller: cnBillingFrequencyController,
|
||||
tooltip: 'Tooltip for CN Billing Frequency',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.cnBillingFrequency),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'Billing Department Code',
|
||||
fieldName:
|
||||
AppLocalizations.of(context)!.billingDepartmentCode,
|
||||
controller: billingDepartmentCodeController,
|
||||
tooltip: 'Tooltip for Billing Department Code',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.billingDepartmentCode),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'Base Price List',
|
||||
fieldName: AppLocalizations.of(context)!.basePriceList,
|
||||
controller: basePriceListController,
|
||||
tooltip: 'Tooltip for Base Price List',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.basePriceList),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'Non-Container Service Order Auto-Approval Department Code',
|
||||
fieldName: AppLocalizations.of(context)!
|
||||
.nonContainerServiceOrder,
|
||||
controller: nonContainerServiceController,
|
||||
tooltip: 'Tooltip for Non-Container Service Order Auto-Approval Department Code',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.nonContainerServiceOrder),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'EDI MAE Scheduler ON/OFF',
|
||||
fieldName: AppLocalizations.of(context)!.ediMaeScheduler,
|
||||
controller: ediMaeSchedulerController,
|
||||
tooltip: 'Tooltip for EDI MAE Scheduler ON/OFF',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.ediMaeScheduler),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'EDI Scheduler ON/OFF',
|
||||
fieldName: AppLocalizations.of(context)!.ediScheduler,
|
||||
controller: ediSchedulerController,
|
||||
tooltip: 'Tooltip for EDI Scheduler ON/OFF',
|
||||
tooltip: AppLocalizations.of(context)!.tooltipFor(
|
||||
AppLocalizations.of(context)!.ediScheduler),
|
||||
),
|
||||
_buildFieldWithTooltip(
|
||||
fieldName: 'Company Name',
|
||||
fieldName: AppLocalizations.of(context)!.companyName,
|
||||
controller: companynameController,
|
||||
tooltip: 'Company Name',
|
||||
tooltip: AppLocalizations.of(context)!.companyName,
|
||||
),
|
||||
Text("Is Registration Allowed?",
|
||||
Text(AppLocalizations.of(context)!.regAllowed,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
textAlign: TextAlign.left,
|
||||
style: AppStyle
|
||||
@@ -351,7 +383,7 @@ class _SysParameterState extends State<SysParameter> {
|
||||
});
|
||||
},
|
||||
),
|
||||
Text("Yes",
|
||||
Text(AppLocalizations.of(context)!.yes,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
textAlign: TextAlign.left,
|
||||
style: AppStyle
|
||||
@@ -365,7 +397,7 @@ class _SysParameterState extends State<SysParameter> {
|
||||
});
|
||||
},
|
||||
),
|
||||
Text("No",
|
||||
Text(AppLocalizations.of(context)!.no,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
textAlign: TextAlign.left,
|
||||
style: AppStyle
|
||||
@@ -381,12 +413,13 @@ class _SysParameterState extends State<SysParameter> {
|
||||
backgroundColor: _imageBytes==null?MaterialStateProperty.all<Color>(Colors.red):MaterialStateProperty.all<Color>(Colors.green), // Change to the desired color
|
||||
),
|
||||
child: _imageBytes == null
|
||||
? Text("Pick a Company Logo",
|
||||
? Text(AppLocalizations.of(context)!.pickCompanyLogo,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
textAlign: TextAlign.left,
|
||||
style: AppStyle
|
||||
.txtGilroyMedium16Bluegray800)
|
||||
: Text("Company Logo uploaded Successful",
|
||||
: Text(
|
||||
AppLocalizations.of(context)!.logoUploadSuccess,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
textAlign: TextAlign.left,
|
||||
style: AppStyle
|
||||
@@ -394,10 +427,10 @@ class _SysParameterState extends State<SysParameter> {
|
||||
),
|
||||
|
||||
Tooltip(
|
||||
message: 'Allow customer code for MSC taulia CSV generation',
|
||||
message: AppLocalizations.of(context)!.mscTooltip,
|
||||
child: Column(
|
||||
children: [
|
||||
Text("i",
|
||||
Text(AppLocalizations.of(context)!.miscInfoLabel,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
textAlign: TextAlign.left,
|
||||
style: AppStyle
|
||||
@@ -420,7 +453,7 @@ class _SysParameterState extends State<SysParameter> {
|
||||
|
||||
CustomButton(
|
||||
height: getVerticalSize(50),
|
||||
text: "Save",
|
||||
text: AppLocalizations.of(context)!.saveBtn,
|
||||
margin: getMargin(top: 24, bottom: 5),
|
||||
onTap: () async {
|
||||
formData['regitrationAllowed'] = isRegistrationAllow;
|
||||
@@ -469,12 +502,17 @@ class _SysParameterState extends State<SysParameter> {
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: const Text('Error'),
|
||||
content: Text(
|
||||
'Failed to ${widget.sysparameter == null ? 'create' : 'update'} project: $e'),
|
||||
title: Text(
|
||||
AppLocalizations.of(context)!.error),
|
||||
content: Text(widget.sysparameter == null
|
||||
? AppLocalizations.of(context)!
|
||||
.failedCreateProject(e.toString())
|
||||
: AppLocalizations.of(context)!
|
||||
.failedUpdateProject(e.toString())),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: const Text('OK'),
|
||||
child: Text(
|
||||
AppLocalizations.of(context)!.ok),
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../../l10n/app_localizations.dart';
|
||||
import '../../providers/token_manager.dart';
|
||||
import 'dynamic_form_service.dart';
|
||||
|
||||
@@ -49,7 +50,7 @@ class _EditFormState extends State<EditForm> {
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('Edit Form'),
|
||||
title: Text(AppLocalizations.of(context)!.editForm),
|
||||
),
|
||||
body: SingleChildScrollView(
|
||||
child: Padding(
|
||||
@@ -58,16 +59,21 @@ class _EditFormState extends State<EditForm> {
|
||||
children: [
|
||||
TextFormField(
|
||||
controller: formNameController,
|
||||
decoration: InputDecoration(labelText: 'Form Name'),
|
||||
decoration: InputDecoration(
|
||||
labelText:
|
||||
AppLocalizations.of(context)!.formName),
|
||||
),
|
||||
TextFormField(
|
||||
controller: formDescController,
|
||||
decoration: InputDecoration(labelText: 'Form Description'),
|
||||
decoration: InputDecoration(
|
||||
labelText: AppLocalizations.of(context)!
|
||||
.formDescription),
|
||||
),
|
||||
DropdownButtonFormField<String>(
|
||||
value: relatedToController.text,
|
||||
decoration:
|
||||
const InputDecoration(labelText: 'Select Related To'),
|
||||
decoration: InputDecoration(
|
||||
labelText: AppLocalizations.of(context)!
|
||||
.selectRelatedTo),
|
||||
items: [
|
||||
...relatedToFixedDropdown.map<DropdownMenuItem<String>>(
|
||||
(item) {
|
||||
@@ -86,8 +92,9 @@ class _EditFormState extends State<EditForm> {
|
||||
),
|
||||
DropdownButtonFormField<String>(
|
||||
value: pageEventController.text,
|
||||
decoration:
|
||||
const InputDecoration(labelText: 'Select Page Event'),
|
||||
decoration: InputDecoration(
|
||||
labelText: AppLocalizations.of(context)!
|
||||
.selectPageEvent),
|
||||
items: [
|
||||
...pageEventFixedDropdown.map<DropdownMenuItem<String>>(
|
||||
(item) {
|
||||
@@ -106,22 +113,41 @@ class _EditFormState extends State<EditForm> {
|
||||
),
|
||||
TextFormField(
|
||||
controller: buttonCaptionController,
|
||||
decoration: InputDecoration(labelText: 'Button Caption'),
|
||||
decoration: InputDecoration(
|
||||
labelText: AppLocalizations.of(context)!
|
||||
.buttonCaption),
|
||||
),
|
||||
|
||||
const Text('Components Details'),
|
||||
Text(AppLocalizations.of(context)!.componentsDetails),
|
||||
SingleChildScrollView(
|
||||
scrollDirection: Axis.horizontal,
|
||||
child: DataTable(
|
||||
columns: const <DataColumn>[
|
||||
DataColumn(label: Text('Label')),
|
||||
DataColumn(label: Text('Type')),
|
||||
DataColumn(label: Text('Mapping')),
|
||||
DataColumn(label: Text('Mandatory')),
|
||||
DataColumn(label: Text('Readonly')),
|
||||
DataColumn(label: Text('Drop Values')),
|
||||
DataColumn(label: Text('SP')),
|
||||
DataColumn(label: Text('Actions'), numeric: false), // Add Actions column
|
||||
columns: <DataColumn>[
|
||||
DataColumn(
|
||||
label: Text(
|
||||
AppLocalizations.of(context)!.colLabel)),
|
||||
DataColumn(
|
||||
label: Text(
|
||||
AppLocalizations.of(context)!.colType)),
|
||||
DataColumn(
|
||||
label: Text(
|
||||
AppLocalizations.of(context)!.colMapping)),
|
||||
DataColumn(
|
||||
label: Text(
|
||||
AppLocalizations.of(context)!.colMandatory)),
|
||||
DataColumn(
|
||||
label: Text(
|
||||
AppLocalizations.of(context)!.colReadonly)),
|
||||
DataColumn(
|
||||
label: Text(
|
||||
AppLocalizations.of(context)!.colDropValues)),
|
||||
DataColumn(
|
||||
label: Text(
|
||||
AppLocalizations.of(context)!.colSP)),
|
||||
DataColumn(
|
||||
label: Text(AppLocalizations.of(context)!
|
||||
.colActions),
|
||||
numeric: false), // Add Actions column
|
||||
],
|
||||
rows: components.asMap().entries.map((entry) {
|
||||
final index = entry.key;
|
||||
@@ -228,7 +254,8 @@ class _EditFormState extends State<EditForm> {
|
||||
components.removeAt(index);
|
||||
});
|
||||
},
|
||||
child: Text('Delete'),
|
||||
child: Text(
|
||||
AppLocalizations.of(context)!.delete),
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -250,7 +277,7 @@ class _EditFormState extends State<EditForm> {
|
||||
});
|
||||
setState(() {}); // Refresh the UI to show the new row
|
||||
},
|
||||
child: Text('Add Row'),
|
||||
child: Text(AppLocalizations.of(context)!.addRow),
|
||||
),
|
||||
|
||||
ElevatedButton(
|
||||
@@ -266,7 +293,7 @@ class _EditFormState extends State<EditForm> {
|
||||
apiService.updateDynamicForm(token!, widget.formData['form_id'], widget.formData);
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text('Update'),
|
||||
child: Text(AppLocalizations.of(context)!.update),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
||||
|
||||
import '../../Utils/image_constant.dart';
|
||||
import '../../Utils/size_utils.dart';
|
||||
import '../../l10n/app_localizations.dart';
|
||||
import '../../providers/token_manager.dart';
|
||||
import '../../theme/app_style.dart';
|
||||
import '../../widgets/app_bar/appbar_image.dart';
|
||||
@@ -51,7 +52,9 @@ class _CreateFormState extends State<CreateForm> {
|
||||
Navigator.pop(context);
|
||||
}),
|
||||
centerTitle: true,
|
||||
title: AppbarTitle(text: "Create Dynamic Form"),),
|
||||
title: AppbarTitle(
|
||||
text: AppLocalizations.of(context)!
|
||||
.createDynamicForm),),
|
||||
body: SingleChildScrollView(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(16.0),
|
||||
@@ -63,14 +66,15 @@ class _CreateFormState extends State<CreateForm> {
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Text("Form Name",
|
||||
Text(AppLocalizations.of(context)!.formName,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
textAlign: TextAlign.left,
|
||||
style: AppStyle
|
||||
.txtGilroyMedium16Bluegray900),
|
||||
CustomTextFormField(
|
||||
focusNode: FocusNode(),
|
||||
hintText: "Enter Form Name",
|
||||
hintText: AppLocalizations.of(context)!
|
||||
.enterFormName,
|
||||
controller: formNameController,
|
||||
margin: getMargin(top: 6))
|
||||
])),
|
||||
@@ -80,14 +84,17 @@ class _CreateFormState extends State<CreateForm> {
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Text("Form Description",
|
||||
Text(
|
||||
AppLocalizations.of(context)!
|
||||
.formDescription,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
textAlign: TextAlign.left,
|
||||
style: AppStyle
|
||||
.txtGilroyMedium16Bluegray900),
|
||||
CustomTextFormField(
|
||||
focusNode: FocusNode(),
|
||||
hintText: "Enter Form Description",
|
||||
hintText: AppLocalizations.of(context)!
|
||||
.enterFormDescription,
|
||||
controller: formDescController,
|
||||
margin: getMargin(top: 6))
|
||||
])),
|
||||
@@ -99,7 +106,7 @@ class _CreateFormState extends State<CreateForm> {
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
"Select Related To",
|
||||
AppLocalizations.of(context)!.selectRelatedTo,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
textAlign: TextAlign.left,
|
||||
style: AppStyle.txtGilroyMedium16Bluegray900,
|
||||
@@ -132,7 +139,7 @@ class _CreateFormState extends State<CreateForm> {
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
"Select Page Event",
|
||||
AppLocalizations.of(context)!.selectPageEvent,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
textAlign: TextAlign.left,
|
||||
style: AppStyle.txtGilroyMedium16Bluegray900,
|
||||
@@ -163,29 +170,46 @@ class _CreateFormState extends State<CreateForm> {
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Text("Button Caption",
|
||||
Text(
|
||||
AppLocalizations.of(context)!
|
||||
.buttonCaption,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
textAlign: TextAlign.left,
|
||||
style: AppStyle
|
||||
.txtGilroyMedium16Bluegray900),
|
||||
CustomTextFormField(
|
||||
focusNode: FocusNode(),
|
||||
hintText: "Enter Button Caption",
|
||||
hintText: AppLocalizations.of(context)!
|
||||
.enterButtonCaption,
|
||||
controller: buttonCaptionController,
|
||||
margin: getMargin(top: 6))
|
||||
])),
|
||||
const Text('Components Details'),
|
||||
Text(AppLocalizations.of(context)!.componentsDetails),
|
||||
SingleChildScrollView(
|
||||
scrollDirection: Axis.horizontal,
|
||||
child: DataTable(
|
||||
columns: const <DataColumn>[
|
||||
DataColumn(label: Text('Label')),
|
||||
DataColumn(label: Text('Type')),
|
||||
DataColumn(label: Text('Mapping')),
|
||||
DataColumn(label: Text('Mandatory')),
|
||||
DataColumn(label: Text('Readonly')),
|
||||
DataColumn(label: Text('Drop Values')),
|
||||
DataColumn(label: Text('SP')),
|
||||
columns: <DataColumn>[
|
||||
DataColumn(
|
||||
label: Text(
|
||||
AppLocalizations.of(context)!.colLabel)),
|
||||
DataColumn(
|
||||
label: Text(
|
||||
AppLocalizations.of(context)!.colType)),
|
||||
DataColumn(
|
||||
label: Text(
|
||||
AppLocalizations.of(context)!.colMapping)),
|
||||
DataColumn(
|
||||
label: Text(
|
||||
AppLocalizations.of(context)!.colMandatory)),
|
||||
DataColumn(
|
||||
label: Text(
|
||||
AppLocalizations.of(context)!.colReadonly)),
|
||||
DataColumn(
|
||||
label: Text(
|
||||
AppLocalizations.of(context)!.colDropValues)),
|
||||
DataColumn(
|
||||
label: Text(
|
||||
AppLocalizations.of(context)!.colSP)),
|
||||
],
|
||||
rows: components.asMap().entries.map((entry) {
|
||||
final index = entry.key;
|
||||
@@ -201,8 +225,9 @@ class _CreateFormState extends State<CreateForm> {
|
||||
)),
|
||||
DataCell(
|
||||
DropdownButtonFormField<String>(
|
||||
decoration:
|
||||
const InputDecoration(labelText: 'Select Type'),
|
||||
decoration: InputDecoration(
|
||||
labelText: AppLocalizations.of(context)!
|
||||
.selectType),
|
||||
items: [
|
||||
...typeFixedDropdown.map<DropdownMenuItem<String>>(
|
||||
(item) {
|
||||
@@ -223,8 +248,9 @@ class _CreateFormState extends State<CreateForm> {
|
||||
),
|
||||
DataCell(
|
||||
DropdownButtonFormField<String>(
|
||||
decoration:
|
||||
const InputDecoration(labelText: 'Select Mapping'),
|
||||
decoration: InputDecoration(
|
||||
labelText: AppLocalizations.of(context)!
|
||||
.selectMapping),
|
||||
items: [
|
||||
...mappingFixedDropdown.map<DropdownMenuItem<String>>(
|
||||
(item) {
|
||||
@@ -251,8 +277,9 @@ class _CreateFormState extends State<CreateForm> {
|
||||
)),
|
||||
DataCell(
|
||||
DropdownButtonFormField<String>(
|
||||
decoration:
|
||||
const InputDecoration(labelText: 'Select Read Only'),
|
||||
decoration: InputDecoration(
|
||||
labelText: AppLocalizations.of(context)!
|
||||
.selectReadOnly),
|
||||
items: [
|
||||
...truefalseFixedDropdown.map<DropdownMenuItem<String>>(
|
||||
(item) {
|
||||
@@ -290,7 +317,7 @@ class _CreateFormState extends State<CreateForm> {
|
||||
),
|
||||
CustomButton(
|
||||
height: getVerticalSize(50),
|
||||
text: "Add Row",
|
||||
text: AppLocalizations.of(context)!.addRow,
|
||||
margin: getMargin(top: 24, bottom: 5),
|
||||
onTap: () async {
|
||||
components.add({
|
||||
@@ -308,7 +335,7 @@ class _CreateFormState extends State<CreateForm> {
|
||||
|
||||
CustomButton(
|
||||
height: getVerticalSize(50),
|
||||
text: "Create Dynamic Form",
|
||||
text: AppLocalizations.of(context)!.createDynamicForm,
|
||||
margin: getMargin(top: 24, bottom: 5),
|
||||
onTap: () async {
|
||||
final dynamicFormData = {
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'package:flutter/rendering.dart';
|
||||
import '../../Utils/color_constants.dart';
|
||||
import '../../Utils/image_constant.dart';
|
||||
import '../../Utils/size_utils.dart';
|
||||
import '../../l10n/app_localizations.dart';
|
||||
import '../../providers/token_manager.dart';
|
||||
import '../../widgets/app_bar/appbar_image.dart';
|
||||
import '../../widgets/app_bar/appbar_title.dart';
|
||||
@@ -58,11 +59,12 @@ class _DynamicFormState extends State<DynamicForm> {
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: const Text('Error'),
|
||||
content: Text('Failed to delete entity: $e'),
|
||||
title: Text(AppLocalizations.of(context)!.error),
|
||||
content: Text(AppLocalizations.of(context)!
|
||||
.deleteEntityFailed(e.toString())),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: const Text('OK'),
|
||||
child: Text(AppLocalizations.of(context)!.ok),
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
@@ -109,12 +111,15 @@ class _DynamicFormState extends State<DynamicForm> {
|
||||
)
|
||||
],
|
||||
centerTitle: true,
|
||||
title: AppbarTitle(text: "Dynamic Form")),
|
||||
title: AppbarTitle(
|
||||
text:
|
||||
AppLocalizations.of(context)!.dynamicForm)),
|
||||
body: isLoading == false
|
||||
? const Center(child: CircularProgressIndicator())
|
||||
: allData.isEmpty
|
||||
? const Center(
|
||||
child: Text('No Services available.'),
|
||||
? Center(
|
||||
child: Text(AppLocalizations.of(context)!
|
||||
.noServices),
|
||||
)
|
||||
: Scrollable(
|
||||
viewportBuilder:
|
||||
@@ -125,13 +130,27 @@ class _DynamicFormState extends State<DynamicForm> {
|
||||
scrollDirection: Axis.horizontal,
|
||||
child: DataTable(
|
||||
columns: [
|
||||
DataColumn(label: Text('Form Name')),
|
||||
DataColumn(label: Text('Form Description')),
|
||||
DataColumn(label: Text('Related To')),
|
||||
DataColumn(label: Text('Page Event')),
|
||||
DataColumn(label: Text('Button Caption')),
|
||||
DataColumn(label: Text('Build')),
|
||||
DataColumn(label: Text('Actions')),
|
||||
DataColumn(
|
||||
label: Text(AppLocalizations.of(context)!
|
||||
.formName)),
|
||||
DataColumn(
|
||||
label: Text(AppLocalizations.of(context)!
|
||||
.formDescription)),
|
||||
DataColumn(
|
||||
label: Text(AppLocalizations.of(context)!
|
||||
.relatedTo)),
|
||||
DataColumn(
|
||||
label: Text(AppLocalizations.of(context)!
|
||||
.pageEvent)),
|
||||
DataColumn(
|
||||
label: Text(AppLocalizations.of(context)!
|
||||
.buttonCaption)),
|
||||
DataColumn(
|
||||
label: Text(AppLocalizations.of(context)!
|
||||
.buildCol)),
|
||||
DataColumn(
|
||||
label: Text(AppLocalizations.of(context)!
|
||||
.colActions)),
|
||||
],
|
||||
rows: allData.map((module) {
|
||||
return DataRow(
|
||||
@@ -156,7 +175,9 @@ class _DynamicFormState extends State<DynamicForm> {
|
||||
apiService.BuildForms(
|
||||
token!, module['form_id']);
|
||||
},
|
||||
child: Text("build"),
|
||||
child: Text(
|
||||
AppLocalizations.of(context)!
|
||||
.buildBtn),
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: ColorConstant.blue700,
|
||||
),
|
||||
@@ -184,19 +205,29 @@ class _DynamicFormState extends State<DynamicForm> {
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: const Text(
|
||||
'Confirm Deletion'),
|
||||
content: const Text(
|
||||
'Are you sure you want to delete this Module?'),
|
||||
title: Text(
|
||||
AppLocalizations.of(
|
||||
context)!
|
||||
.confirmDeletion),
|
||||
content: Text(
|
||||
AppLocalizations.of(
|
||||
context)!
|
||||
.deleteModuleConfirm),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: const Text('Cancel'),
|
||||
child: Text(
|
||||
AppLocalizations.of(
|
||||
context)!
|
||||
.cancel),
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
),
|
||||
TextButton(
|
||||
child: const Text('Delete'),
|
||||
child: Text(
|
||||
AppLocalizations.of(
|
||||
context)!
|
||||
.delete),
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
deleteEntity(module);
|
||||
|
||||
Reference in New Issue
Block a user