onCreated method
Callback used to notify a node that it was created. This is called after a node is deserialized as well.
Implementation
@override
void onCreated() async {
var rp = configs[r'$path'] as String?;
rp ??= configs[r'$value_path'] as String?;
if (configs[r'$publish'] == true) {
isPublishOnly = true;
}
valuePath = rp!;
group = _link[Path(path).parentPath] as WatchGroupNode?;
var groupName = group?._watchName;
_link.addNode('$path/lwv', <String, dynamic>{
r'$name': 'Last Written Value',
r'$type': 'dynamic',
});
_link.addNode('$path/startDate', <String, dynamic>{
r'$name': 'Start Date',
r'$type': 'string',
});
_link.addNode('$path/endDate', <String, dynamic>{
r'$name': 'End Date',
r'$type': 'string',
});
if (children['enabled'] == null) {
_link.addNode('$path/enabled', <String, dynamic>{
r'$name': 'Enabled',
r'$type': 'bool',
'?value': true,
r'$writable': 'write',
});
}
if (group?.db?.database == null) {
await group?.db?.waitForDatabaseReady();
}
var summary = await group?.db?.database?.getSummary(groupName, valuePath!);
if (summary?.first != null) {
_link.updateValue('$path/startDate', summary?.first?.timestamp);
isStartDateFilled = true;
}
if (summary?.last != null) {
var update = ValueUpdate(
summary?.last!.value,
ts: summary?.last!.timestamp,
);
_link.updateValue('$path/lwv', update);
updateValue(update);
}
timer = Scheduler.safeEvery(const Duration(seconds: 1), () async {
await storeBuffer();
});
var ghn = GetHistoryNode('$path/getHistory');
addChild('getHistory', ghn);
(_link.provider as SimpleNodeProvider).setNode(ghn.path, ghn);
updateList('getHistory');
_link.addNode('$path/purge', <String, dynamic>{
r'$name': 'Purge',
r'$invokable': 'write',
r'$params': [
{'name': 'timeRange', 'type': 'string', 'editor': 'daterange'},
],
r'$is': 'purgePath',
});
_link.addNode('$path/delete', <String, dynamic>{
r'$name': 'Delete',
r'$invokable': 'write',
r'$is': 'delete',
});
_link.onValueChange('$path/enabled').listen((ValueUpdate update) {
if (update.value == true) {
sub();
} else {
if (valueSub != null) {
valueSub?.cancel();
valueSub = null;
}
}
});
if (_link.val('$path/enabled') == true) {
sub();
}
group?.db?.database?.addWatchPathExtensions(this);
}