System log
This commit is contained in:
parent
c21f012f1a
commit
22cd63ac37
|
|
@ -11,6 +11,7 @@ import 'package:invoiceninja_flutter/ui/client/view/client_view_activity.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/client/view/client_view_details.dart';
|
import 'package:invoiceninja_flutter/ui/client/view/client_view_details.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/client/view/client_view_documents.dart';
|
import 'package:invoiceninja_flutter/ui/client/view/client_view_documents.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/client/view/client_view_ledger.dart';
|
import 'package:invoiceninja_flutter/ui/client/view/client_view_ledger.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/client/view/client_view_system_logs.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/client/view/client_view_vm.dart';
|
import 'package:invoiceninja_flutter/ui/client/view/client_view_vm.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/client/view/client_view_overview.dart';
|
import 'package:invoiceninja_flutter/ui/client/view/client_view_overview.dart';
|
||||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||||
|
|
@ -36,7 +37,7 @@ class _ClientViewState extends State<ClientView>
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
_controller = TabController(vsync: this, length: 5);
|
_controller = TabController(vsync: this, length: 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -78,6 +79,9 @@ class _ClientViewState extends State<ClientView>
|
||||||
Tab(
|
Tab(
|
||||||
text: localization.activity,
|
text: localization.activity,
|
||||||
),
|
),
|
||||||
|
Tab(
|
||||||
|
text: localization.systemLogs,
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
body: Builder(builder: (context) {
|
body: Builder(builder: (context) {
|
||||||
|
|
@ -119,6 +123,13 @@ class _ClientViewState extends State<ClientView>
|
||||||
key: ValueKey(viewModel.client.id),
|
key: ValueKey(viewModel.client.id),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
RefreshIndicator(
|
||||||
|
onRefresh: () => viewModel.onRefreshed(context),
|
||||||
|
child: ClientViewSystemLogs(
|
||||||
|
viewModel: viewModel,
|
||||||
|
key: ValueKey(viewModel.client.id),
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/client/view/client_view_vm.dart';
|
||||||
|
|
||||||
|
class ClientViewSystemLogs extends StatefulWidget {
|
||||||
|
const ClientViewSystemLogs({Key key, this.viewModel}) : super(key: key);
|
||||||
|
|
||||||
|
final ClientViewVM viewModel;
|
||||||
|
|
||||||
|
@override
|
||||||
|
_ClientViewSystemLogsState createState() => _ClientViewSystemLogsState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _ClientViewSystemLogsState extends State<ClientViewSystemLogs> {
|
||||||
|
|
||||||
|
Map<String, bool> _isExpanded = {};
|
||||||
|
|
||||||
|
@override
|
||||||
|
void didChangeDependencies() {
|
||||||
|
if (widget.viewModel.client.isStale) {
|
||||||
|
widget.viewModel.onRefreshed(context);
|
||||||
|
}
|
||||||
|
super.didChangeDependencies();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
final client = widget.viewModel.client;
|
||||||
|
|
||||||
|
if (client.isStale) {
|
||||||
|
return LoadingIndicator();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ListView(
|
||||||
|
children: [
|
||||||
|
ExpansionPanelList(
|
||||||
|
expansionCallback: (int index, bool isExpanded) {
|
||||||
|
print('## expansionCallback - inde: $index, isExpanded: $isExpanded');
|
||||||
|
setState(() {
|
||||||
|
final systemLog = client.systemLogs[index];
|
||||||
|
_isExpanded[systemLog.id] = !isExpanded;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
children: client.systemLogs.map((systemLog) {
|
||||||
|
return ExpansionPanel(
|
||||||
|
headerBuilder: (BuildContext context, bool isExpanded) {
|
||||||
|
return Text(systemLog.userId);
|
||||||
|
},
|
||||||
|
isExpanded: _isExpanded[systemLog.id] == true,
|
||||||
|
body: Container(
|
||||||
|
child: Text(systemLog.log),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}).toList(),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -15,6 +15,7 @@ mixin LocalizationsProvider on LocaleCodeAware {
|
||||||
static final Map<String, Map<String, String>> _localizedValues = {
|
static final Map<String, Map<String, String>> _localizedValues = {
|
||||||
'en': {
|
'en': {
|
||||||
// STARTER: lang key - do not remove comment
|
// STARTER: lang key - do not remove comment
|
||||||
|
'system_logs': 'System Logs',
|
||||||
'view_portal': 'View Portal',
|
'view_portal': 'View Portal',
|
||||||
'copy_link': 'Copy Link',
|
'copy_link': 'Copy Link',
|
||||||
'token_billing': 'Token Billing',
|
'token_billing': 'Token Billing',
|
||||||
|
|
@ -4419,6 +4420,9 @@ mixin LocalizationsProvider on LocaleCodeAware {
|
||||||
|
|
||||||
String get viewPortal => _localizedValues[localeCode]['view_portal'] ?? '';
|
String get viewPortal => _localizedValues[localeCode]['view_portal'] ?? '';
|
||||||
|
|
||||||
|
String get systemLogs => _localizedValues[localeCode]['system_logs'] ?? '';
|
||||||
|
|
||||||
|
|
||||||
String lookup(String key) {
|
String lookup(String key) {
|
||||||
final lookupKey = toSnakeCase(key);
|
final lookupKey = toSnakeCase(key);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue