System log

This commit is contained in:
Hillel Coren 2020-08-25 17:04:36 +03:00
parent c21f012f1a
commit 22cd63ac37
3 changed files with 76 additions and 1 deletions

View File

@ -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),
),
),
], ],
), ),
), ),

View File

@ -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(),
),
],
);
}
}

View File

@ -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);