1. @override
Future onCreated()

Callback used to notify a node that it was created. This is called after a node is deserialized as well.

Source

@override
onCreated() async {
  String rp = configs[r"$path"];

  if (rp == null) {
    rp = configs[r"$value_path"];
  }

  if (configs[r"$publish"] == true) {
    isPublishOnly = true;
  }

  valuePath = rp;
  group = _link[new Path(path).parentPath];

  String groupName = group._watchName;

  _link.addNode("${path}/lwv", {
    r"$name": "Last Written Value",
    r"$type": "dynamic"
  });

  _link.addNode("${path}/startDate", {
    r"$name": "Start Date",
    r"$type": "string"
  });

  _link.addNode("${path}/endDate", {
    r"$name": "End Date",
    r"$type": "string"
  });

  if (children["enabled"] == null) {
    _link.addNode("${path}/enabled", {
      r"$name": "Enabled",
      r"$type": "bool",
      "?value": true,
      r"$writable": "write"
    });
  }

  if (group.db.database == null) {
    Completer c = new Completer();
    group.db.onDatabaseReady.add(c.complete);
    await c.future;
  }

  HistorySummary 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) {
    ValueUpdate update = new 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 = new GetHistoryNode("${path}/getHistory");
  addChild("getHistory", ghn);
  (_link.provider as SimpleNodeProvider).setNode(ghn.path, ghn);
  updateList("getHistory");

  _link.addNode("${path}/purge", {
    r"$name": "Purge",
    r"$invokable": "write",
    r"$params": [
      {
        "name": "timeRange",
        "type": "string",
        "editor": "daterange"
      }
    ],
    r"$is": "purgePath"
  });

  _link.addNode("${path}/delete", {
    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);
}