3
0
Fork 0

Compare commits

...

1 Commits

Author SHA1 Message Date
micha3lbrown 4ea602eeef
Add logLocalTZ to app settings
Allow users to configure their log timezone for all sites.

Advances #2
Closes #8
2021-02-05 16:37:11 -05:00
3 changed files with 43 additions and 5 deletions

View File

@ -34,7 +34,9 @@ class _SettingsScreenState extends State<SettingsScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
List<Widget> colorSection = []; List<Widget> colorSection = [];
List<Widget> logSection = [];
// System Color Configs
colorSection.add(ConfigItem( colorSection.add(ConfigItem(
label: Text('Use system colors'), label: Text('Use system colors'),
labelWidth: 200, labelWidth: 200,
@ -63,10 +65,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
)), )),
)); ));
} }
// Log Configs
List<Widget> items = []; logSection.add(ConfigItem(
items.add(ConfigSection(children: colorSection));
items.add(ConfigItem(
label: Text('Wrap log output'), label: Text('Wrap log output'),
labelWidth: 200, labelWidth: 200,
content: Align( content: Align(
@ -81,6 +81,25 @@ class _SettingsScreenState extends State<SettingsScreen> {
}, },
)), )),
)); ));
logSection.add(ConfigItem(
label: Text('Use Local Time Zone'),
labelWidth: 200,
content: Align(
alignment: Alignment.centerRight,
child: Switch.adaptive(
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
value: settings.logLocalTZ,
onChanged: (value) {
setState(() {
settings.logLocalTZ = value;
});
},
)),
));
List<Widget> items = [];
items.add(ConfigSection(children: colorSection));
items.add(ConfigSection(children: logSection));
items.add(ConfigSection(children: [ items.add(ConfigSection(children: [
ConfigPageItem( ConfigPageItem(
label: Text('About'), label: Text('About'),

View File

@ -103,8 +103,11 @@ class _SiteLogsScreenState extends State<SiteLogsScreen> {
loadLogs() async { loadLogs() async {
var file = File(widget.site.logFile); var file = File(widget.site.logFile);
try { try {
final v = await file.readAsString(); String v = await file.readAsString();
if (settings.logLocalTZ) {
v = convertToLocalTZ(v);
}
setState(() { setState(() {
logs = v; logs = v;
}); });
@ -126,4 +129,12 @@ class _SiteLogsScreenState extends State<SiteLogsScreen> {
return BoxConstraints(minWidth: MediaQuery.of(context).size.width); return BoxConstraints(minWidth: MediaQuery.of(context).size.width);
} }
} }
convertToLocalTZ(String rawLog) {
rawLog = rawLog.replaceAllMapped(RegExp('time="(.*?)"'), (match) {
DateTime userDate = DateTime.parse(match.group(1));
return 'time="${userDate.toLocal().toIso8601String()}"';
});
return rawLog;
}
} }

View File

@ -38,6 +38,14 @@ class Settings {
_set('logWrap', enabled); _set('logWrap', enabled);
} }
bool get logLocalTZ {
return _getBool('logLocalTZ', false);
}
set logLocalTZ(bool enabled) {
_set('logLocalTZ', enabled);
}
String _getString(String key, String defaultValue) { String _getString(String key, String defaultValue) {
final val = _settings[key]; final val = _settings[key];
if (val is String) { if (val is String) {