initial commit
parent
b5bfb3c0c0
commit
8a5478f37f
@ -0,0 +1,116 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:test_sa/extensions/context_extension.dart';
|
||||
import 'package:test_sa/extensions/int_extensions.dart';
|
||||
import 'package:test_sa/extensions/text_extensions.dart';
|
||||
import 'package:test_sa/extensions/widget_extensions.dart';
|
||||
import 'package:test_sa/models/all_requests_and_count_model.dart';
|
||||
import 'package:test_sa/models/ppm/ppm.dart';
|
||||
import 'package:test_sa/models/timer_model.dart';
|
||||
import 'package:test_sa/new_views/app_style/app_color.dart';
|
||||
import 'package:test_sa/service_request_latest/utilities/service_request_utils.dart';
|
||||
import 'package:test_sa/views/widgets/requests/request_status.dart';
|
||||
import 'package:test_sa/views/widgets/timer/app_timer.dart';
|
||||
|
||||
class AssetInfoWidget extends StatelessWidget {
|
||||
DummyModel ?model;
|
||||
AssetInfoWidget({super.key,DummyModel ?model});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Column(
|
||||
children: [
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
if (model?.request?.priority != null)
|
||||
StatusLabel(
|
||||
label: model?.request?.priority,
|
||||
textColor: AppColor.getRequestStatusTextColorByName(context,model?.request?.priority),
|
||||
backgroundColor: AppColor.getRequestStatusColorByName(context,model?.request?.priority),
|
||||
),
|
||||
8.height,
|
||||
|
||||
model!.ppm!.assetName!.heading5(context),
|
||||
8.height,
|
||||
'${context.translation.taskNo}: ${model!.ppm!.assetName}'.bodyText(context),
|
||||
'${context.translation.site}: ${model!.ppm!.siteName!.cleanupWhitespace.capitalizeFirstOfEach}'.bodyText(context),
|
||||
'${context.translation.assignEngineer}: ${model!.ppm!.assignedEmployeeName ?? ""}'.bodyText(context),
|
||||
'${context.translation.scheduledDate}: ${'July 7, 2024' ?? ""}'.bodyText(context),
|
||||
],
|
||||
).toShadowContainer(context),
|
||||
12.height,
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
buildingInfoWidget(label: context.translation.department, value: model!.ppm!.departmentName!.cleanupWhitespace.capitalizeFirstOfEach,context: context),
|
||||
8.height,
|
||||
buildingInfoWidget(label: context.translation.floor, value: model!.ppm!.floorName!.cleanupWhitespace.capitalizeFirstOfEach,context: context),
|
||||
8.height,
|
||||
buildingInfoWidget(label: context.translation.room, value: model!.ppm!.roomName!.cleanupWhitespace.capitalizeFirstOfEach,context: context),
|
||||
8.height,
|
||||
AppTimer(
|
||||
label: context.translation.timer,
|
||||
timer: model!.timerModel,
|
||||
width:double.infinity,
|
||||
enabled: model!.timerModel?.endAt == null,
|
||||
decoration: BoxDecoration(
|
||||
color: AppColor.neutral100,
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
),
|
||||
timerProgress: (isRunning) {},
|
||||
onChange: (timer) async {
|
||||
timer = timer;
|
||||
return true;
|
||||
},
|
||||
),
|
||||
// if (totalWorkingHours > 0.0) ...[
|
||||
11.height,
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
"Total Working Time: ",
|
||||
style: Theme.of(context).textTheme.bodySmall?.copyWith(color: context.isDark ? null : AppColor.neutral20, fontWeight: FontWeight.w500),
|
||||
),
|
||||
Text(
|
||||
" ${ServiceRequestUtils.formatTimerDuration(model!.totalWorkingHours.round())}",
|
||||
style: Theme.of(context).textTheme.bodyMedium,
|
||||
),
|
||||
],
|
||||
),
|
||||
8.height,
|
||||
],
|
||||
// ],
|
||||
).toShadowContainer(context,padding: 12),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget buildingInfoWidget({required String label, required String value, required BuildContext context}) {
|
||||
return Column(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
label,
|
||||
style: AppTextStyles.textFieldLabelStyle.copyWith(color: AppColor.neutral120),
|
||||
),
|
||||
3.height,
|
||||
Text(
|
||||
value,
|
||||
style: AppTextStyles.bodyText2.copyWith(color: AppColor.black10),
|
||||
)
|
||||
],
|
||||
).toShadowContainer(context, backgroundColor: AppColor.neutral100, borderRadius: 10, paddingObject: EdgeInsets.all(12.toScreenHeight), showShadow: false);
|
||||
}
|
||||
}
|
||||
|
||||
class DummyModel{
|
||||
RequestsDetails? request;
|
||||
Ppm? ppm;
|
||||
TimerModel? timerModel = TimerModel();
|
||||
double totalWorkingHours = 2;
|
||||
|
||||
DummyModel(this.request,this.ppm,this.timerModel,this.totalWorkingHours);
|
||||
}
|
||||
@ -0,0 +1,101 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:test_sa/controllers/providers/api/ppm_provider.dart';
|
||||
import 'package:test_sa/controllers/providers/api/user_provider.dart';
|
||||
import 'package:test_sa/extensions/context_extension.dart';
|
||||
import 'package:test_sa/extensions/int_extensions.dart';
|
||||
import 'package:test_sa/extensions/text_extensions.dart';
|
||||
import 'package:test_sa/extensions/widget_extensions.dart';
|
||||
import 'package:test_sa/models/all_requests_and_count_model.dart';
|
||||
import 'package:test_sa/models/enums/user_types.dart';
|
||||
import 'package:test_sa/models/ppm/ppm.dart';
|
||||
import 'package:test_sa/models/timer_model.dart';
|
||||
import 'package:test_sa/new_views/app_style/app_color.dart';
|
||||
import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
|
||||
import 'package:test_sa/service_request_latest/utilities/service_request_utils.dart';
|
||||
import 'package:test_sa/views/pages/user/ppm/ppm_work_order/recurrent_wo/components/asset_info_widget.dart';
|
||||
import 'package:test_sa/views/widgets/loaders/app_loading.dart';
|
||||
import 'package:test_sa/views/widgets/loaders/no_data_found.dart';
|
||||
import 'package:test_sa/views/widgets/requests/request_status.dart';
|
||||
import 'package:test_sa/views/widgets/timer/app_timer.dart';
|
||||
|
||||
class RecurrentWorkOrderView extends StatefulWidget {
|
||||
static const String id = "/visit-details";
|
||||
final RequestsDetails request;
|
||||
|
||||
const RecurrentWorkOrderView({Key? key, required this.request}) : super(key: key);
|
||||
|
||||
@override
|
||||
_RecurrentWorkOrderViewState createState() {
|
||||
return _RecurrentWorkOrderViewState();
|
||||
}
|
||||
}
|
||||
|
||||
class _RecurrentWorkOrderViewState extends State<RecurrentWorkOrderView> {
|
||||
UserProvider? userProvider;
|
||||
TimerModel? timerModel = TimerModel();
|
||||
PpmProvider? ppmProvider;
|
||||
|
||||
// double totalWorkingHours = _requestDetailProvider?.activityMaintenanceHelperModel?.activityMaintenanceTimers?.fold(0.0, (sum, item) => (sum ?? 0) + DateTime.parse(item.endTime!).difference(DateTime.parse(item.startTime!)).inSeconds) ?? 0;
|
||||
double totalWorkingHours = 2.0;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
userProvider ??= Provider.of<UserProvider>(context, listen: false);
|
||||
ppmProvider ??= Provider.of<PpmProvider>(context, listen: false);
|
||||
|
||||
return Scaffold(
|
||||
appBar: DefaultAppBar(title: context.translation.recurrentWo),
|
||||
body: SafeArea(
|
||||
child: FutureBuilder(
|
||||
future: ppmProvider!.getPpmById(widget.request.id!),
|
||||
builder: (context, snap) {
|
||||
if (snap.connectionState == ConnectionState.waiting) {
|
||||
return const ALoading();
|
||||
} else if (snap.hasData) {
|
||||
Ppm ppm = snap.data as Ppm;
|
||||
return Column(children: [
|
||||
AssetInfoWidget(model: DummyModel(widget.request, ppm, timerModel, totalWorkingHours)),
|
||||
]).paddingAll(12);
|
||||
}
|
||||
return NoDataFound(message: context.translation.noDataFound);
|
||||
}),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
class RoomTabs {
|
||||
String label;
|
||||
int tag;
|
||||
int id;
|
||||
|
||||
RoomTabs({
|
||||
required this.label,
|
||||
required this.tag,
|
||||
required this.id,
|
||||
});
|
||||
|
||||
static List<RoomTabs> getTabs({required UsersTypes userType, required BuildContext context}) {
|
||||
List<RoomTabs> tabs = [];
|
||||
|
||||
tabs.add(RoomTabs(label: 'Upcoming', tag: 0, id: 0));
|
||||
tabs.add(RoomTabs(label: 'UnAssigned Open', tag: 1, id: 1));
|
||||
tabs.add(RoomTabs(label: 'Assigned Open', tag: 1, id: 2));
|
||||
tabs.add(RoomTabs(label: 'In Progress', tag: 2, id: 3));
|
||||
tabs.add(RoomTabs(label: 'Completed', tag: 3, id: 4));
|
||||
return tabs;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue