apk provided to FM for asset image training

ui_ux_rollout_merge
Sikander Saleem 3 weeks ago
parent ace00bfa85
commit dbc53d62f8

@ -3,13 +3,13 @@ class URLs {
static const String appReleaseBuildNumber = "44";
// static const host1 = "https://atomsm.hmg.com"; // production url
static const host1 = "https://atomsm.hmg.com"; // production url
// static const host1 = "https://atomsmdev.hmg.com"; // local DEV url
static const host1 = "https://atomsmuat.hmg.com"; // local UAT url
// static const host1 = "https://atomsmuat.hmg.com"; // local UAT url
static final String _baseUrl = "$_host/mobile"; // host local UAT
// static final String _baseUrl = "$_host/mobile"; // host local UAT
// static final String _baseUrl = "$_host/v2/mobile"; // new V2 apis
// static final String _baseUrl = "$_host/v3/mobile"; // v3 for production CM,PM,TM
static final String _baseUrl = "$_host/v3/mobile"; // v3 for production CM,PM,TM
// static final String _baseUrl = "$_host/v4/mobile"; // v4 for Demo module
// static final String _baseUrl = "$_host/v5/mobile"; // v5 for data segregation
// static final String _baseUrl = "$_host/v6/mobile"; // for asset delivery module

@ -20,6 +20,7 @@ import 'package:test_sa/modules/cm_module/views/forms/asset_retired/asset_retire
import 'package:test_sa/modules/cm_module/views/forms/cost/cost_detail_form_screen.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/views/widgets/equipment/asset_detail_page.dart';
import 'package:test_sa/views/widgets/images/files_list.dart';
import 'package:test_sa/views/widgets/images/multi_image_picker.dart';
import 'package:test_sa/views/widgets/loaders/no_data_found.dart';
@ -190,10 +191,20 @@ class _ServiceRequestDetailViewState extends State<ServiceRequestDetailView> {
],
),
8.height,
Text(
Row(
spacing: 4,
children: [
Flexible(
child: Text(
context.translation.assetInformation,
style: AppTextStyles.heading4.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
),
const Icon(Icons.open_in_new_rounded, color: AppColor.primary10, size: 21).onPress(() {
Navigator.of(context).pushNamed(AssetDetailPage.id, arguments: workOrder.asset!.id);
})
],
),
8.height,
Text(
'${context.translation.assetName}: ${workOrder.assetNdModel!.name?.cleanupWhitespace?.capitalizeFirstOfEach}',

@ -9,6 +9,8 @@ class UploadingDialog extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: Material(
borderRadius: BorderRadius.circular(20.0),
child: Container(
height: 150.toScreenWidth,
width: 200.toScreenWidth,
@ -31,6 +33,7 @@ class UploadingDialog extends StatelessWidget {
],
),
),
),
);
}
}

@ -7,6 +7,7 @@ import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/helper/utils.dart';
import 'package:test_sa/models/device/asset_by_id_model.dart';
import 'package:test_sa/models/generic_attachment_model.dart';
import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart';
@ -168,7 +169,7 @@ class _AssetDetailPageState extends State<AssetDetailPage> {
context: context,
child: AppFilledButton(
buttonColor: AppColor.primary10,
label: "Upload Images",
label: "Upload Images (AI Training)",
onPressed: _upload,
),
),

@ -10,6 +10,7 @@ import 'package:test_sa/modules/cm_module/views/components/action_button/footer_
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
import 'package:test_sa/views/widgets/dialogs/dialog.dart';
import 'package:test_sa/views/widgets/images/multi_image_picker.dart';
class AssetImageUploadPage extends StatefulWidget {
@ -30,6 +31,7 @@ class _AssetImageUploadPageState extends State<AssetImageUploadPage> {
@override
void initState() {
super.initState();
// attachments = widget.attachments;
}
@override
@ -47,10 +49,11 @@ class _AssetImageUploadPageState extends State<AssetImageUploadPage> {
padding: const EdgeInsets.all(16),
children: [
AttachmentPicker(
label: "Upload Images",
label: "Import",
attachment: attachments,
buttonColor: AppColor.black10,
onlyImages: true,
pickMultiple: true,
showAsListView: true,
buttonIcon: 'image-plus'.toSvgAsset(color: context.isDark ? AppColor.primary10 : AppColor.neutral120),
onChange: (_attachments) {
@ -64,14 +67,23 @@ class _AssetImageUploadPageState extends State<AssetImageUploadPage> {
context: context,
child: AppFilledButton(
buttonColor: AppColor.primary10,
disableButton: attachments.length < 4,
label: "Upload Images",
onPressed: () async {
bool result = await showDialog(
context: context,
builder: (_) => AAlertDialog(
title: context.translation.confirm,
content: "For more enhancement, these images will be used to train AI model.\n\nAre you sure you are uploading clear and high quality images?"),
);
if (result) {
Utils.showUploadingDialog(context);
bool result = await Provider.of<AssetProvider>(context, listen: false).uploadAssetImages(widget.assetId, attachments);
result = await Provider.of<AssetProvider>(context, listen: false).uploadAssetImages(widget.assetId, attachments);
Utils.hideLoading(context);
if (result) {
Navigator.pop(context, result);
}
}
},
),
),

@ -322,6 +322,7 @@ class AttachmentPicker extends StatefulWidget {
final Function(List<GenericAttachmentModel>)? onChange;
final bool showAsGrid;
final bool showAsListView;
final bool pickMultiple;
Lookup? documentType;
AttachmentPicker(
@ -337,6 +338,7 @@ class AttachmentPicker extends StatefulWidget {
this.documentType,
this.showAsGrid = false,
this.showAsListView = false,
this.pickMultiple = false,
this.buttonColor})
: super(key: key);
@ -348,7 +350,8 @@ class _AttachmentPickerState extends State<AttachmentPicker> {
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,spacing: 12,
crossAxisAlignment: CrossAxisAlignment.start,
spacing: 12,
children: [
AppDashedButton(
title: widget.label,
@ -465,16 +468,21 @@ class _AttachmentPickerState extends State<AttachmentPicker> {
).paddingAll(21),
)) as ImageSource;
final pickedFile = await ImagePicker().pickImage(source: source, imageQuality: 70, maxWidth: 800, maxHeight: 800);
// if(widget.pickMultiple) {
final pickedFile12 = await ImagePicker().pickMultiImage(imageQuality: 70, maxWidth: 800, maxHeight: 800);
if (pickedFile != null) {
File fileImage = File(pickedFile.path);
widget.attachment.add(GenericAttachmentModel(id: 0, name: fileImage.path, documentTypeId: widget.documentType));
if (widget.onChange != null) {
widget.onChange!(widget.attachment);
}
setState(() {});
}
// // }
//
// final pickedFile = await ImagePicker().pickImage(source: source, imageQuality: 70, maxWidth: 800, maxHeight: 800);
//
// if (pickedFile != null) {
// File fileImage = File(pickedFile.path);
// widget.attachment.add(GenericAttachmentModel(id: 0, name: fileImage.path, documentTypeId: widget.documentType));
// if (widget.onChange != null) {
// widget.onChange!(widget.attachment);
// }
// setState(() {});
// }
}
Widget gridItem(IconData iconData, String title) {
@ -632,6 +640,20 @@ class _AttachmentPickerState extends State<AttachmentPicker> {
// );
if (source == null) return;
if (widget.pickMultiple && source == ImageSource.gallery) {
final pickedFiles = await ImagePicker().pickMultiImage(imageQuality: 70, maxWidth: 800, maxHeight: 800);
if (pickedFiles.isNotEmpty) {
pickedFiles.forEach((pickedFile) {
File fileImage = File(pickedFile.path);
widget.attachment.add(GenericAttachmentModel(id: 0, name: fileImage.path, documentTypeId: widget.documentType));
});
if (widget.onChange != null) {
widget.onChange!(widget.attachment);
}
setState(() {});
return;
}
}
final pickedFile = await ImagePicker().pickImage(source: source, imageQuality: 70, maxWidth: 800, maxHeight: 800);
if (pickedFile != null) {

Loading…
Cancel
Save