yunmi_app/lib/modules/audit_log/audit_log_details_page.dart

120 lines
4.3 KiB
Dart

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:thingsboard_app/core/context/tb_context.dart';
import 'package:thingsboard_app/core/context/tb_context_widget.dart';
import 'package:thingsboard_app/core/entity/entities_base.dart';
import 'package:thingsboard_app/generated/l10n.dart';
import 'package:thingsboard_app/modules/audit_log/audit_logs_base.dart';
import 'package:thingsboard_app/widgets/tb_app_bar.dart';
import 'package:thingsboard_client/thingsboard_client.dart';
class AuditLogDetailsPage extends TbContextWidget {
final AuditLog auditLog;
AuditLogDetailsPage(TbContext tbContext, this.auditLog) : super(tbContext);
@override
_AuditLogDetailsPageState createState() => _AuditLogDetailsPageState();
}
class _AuditLogDetailsPageState extends TbContextState<AuditLogDetailsPage> {
final labelTextStyle =
TextStyle(color: Color(0xFF757575), fontSize: 14, height: 20 / 14);
final valueTextStyle =
TextStyle(color: Color(0xFF282828), fontSize: 14, height: 20 / 14);
final JsonEncoder encoder = new JsonEncoder.withIndent(' ');
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: TbAppBar(tbContext,
title:
Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
if (widget.auditLog.entityName != null)
Text(widget.auditLog.entityName!,
style: TextStyle(
fontWeight: FontWeight.w500,
fontSize: 16,
height: 20 / 16)),
Text('${S.of(context).auditLogDetails}',
style: TextStyle(
color: Theme.of(context)
.primaryTextTheme
.titleLarge!
.color!
.withAlpha((0.38 * 255).ceil()),
fontSize: 12,
fontWeight: FontWeight.normal,
height: 16 / 12))
])),
body: Padding(
padding: EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.max,
children: [
Text('${S.of(context).entityType}', style: labelTextStyle),
Text(entityTypeTranslations[widget.auditLog.entityId.entityType]!,
style: valueTextStyle),
SizedBox(height: 16),
Text('${S.of(context).type}', style: labelTextStyle),
Text(actionTypeTranslations[widget.auditLog.actionType]!,
style: valueTextStyle),
SizedBox(height: 16),
Flexible(
fit: FlexFit.loose,
child: buildBorderedText('${S.of(context).actionData}',
encoder.convert(widget.auditLog.actionData))),
if (widget.auditLog.actionStatus == ActionStatus.FAILURE)
SizedBox(height: 16),
if (widget.auditLog.actionStatus == ActionStatus.FAILURE)
Flexible(
fit: FlexFit.loose,
child: buildBorderedText('${S.of(context).failureDetails}',
widget.auditLog.actionFailureDetails!))
]),
),
);
}
Widget buildBorderedText(String title, String content) {
return Stack(
children: <Widget>[
Container(
width: double.infinity,
padding: EdgeInsets.fromLTRB(16, 18, 48, 18),
margin: EdgeInsets.only(top: 6),
decoration: BoxDecoration(
border: Border.all(color: Color(0xFFDEDEDE), width: 1),
borderRadius: BorderRadius.circular(4),
shape: BoxShape.rectangle,
),
child: SingleChildScrollView(
child: Text(
content,
style: TextStyle(
color: Color(0xFF282828), fontSize: 14, height: 20 / 14),
),
),
),
Positioned(
left: 16,
top: 0,
child: Container(
padding: EdgeInsets.only(left: 4, right: 4),
color: Colors.white,
child: Text(
title,
style: TextStyle(
color: Color(0xFF757575), fontSize: 12, height: 14 / 12),
),
)),
],
);
}
}