Set a point value from UI with the time as well
-
Hi guys, been a while since I've asked a question...
Still using 3.5.6, I've got a dashboard page where the user wants to be able to set a point value however, I need to be able to set the day as well. This is usually for data entry for entering past weather events or future proposed events for forecast modelling....
Is there a way I can set the point's value as well as the time it should be set? Or am I going to need a bit of hack?
Fox
-
There is no existing component to do this, however I am sure the REST API supports it. I'll take a look how you could accomplish this.
-
@MattFox Here's how you can do it, the key is sending a full point value time model to
point.setValue()
<div class="ma-designer-root" id="dd72786c-80c5-48c0-ab41-4dd3dd8eca33" style="width: 1366px; height: 768px; position: relative;" ng-init="page = {value: 1, time: ('' | maMoment:'toISOString'), annotation: 'my annotation'}"> <ma-point-values id="c10062eb-a6f8-4cc3-a29a-2686b1b50a55" style="position: absolute; left: 451px; top: 61px;" point="page.point" values="page.values" realtime="true" latest="10"></ma-point-values> <div id="1c9d9a45-d671-4c49-ba87-4a67dee03a58" style="position: absolute; left: 346px; top: 112px; width: 336px; height: 267px;"> <div ng-repeat="pv in page.values | orderBy:'-timestamp' track by pv.timestamp"> {{pv.timestamp | maMoment:'format':'l LTS'}} — {{pv.value}} — {{pv.annotation}} </div> </div> <ma-get-point-value id="61982987-65b8-4bd6-a36d-ddf6bce7d3ed" style="position: absolute; left: 38px; top: 35px;" point-xid="voltage" point="page.point"></ma-get-point-value> <ma-button id="2dffc568-97be-47b8-9978-3070d299acb5" raised="true" style="position: absolute; left: 56px; top: 297px;" label="Set point value" ng-click="page.point.setValue({value: page.value, timestamp: (page.time | maMoment:'valueOf'), dataType: page.point.dataType, annotation: page.annotation})"></ma-button> <md-input-container id="d1ea909d-f17d-476d-bdfd-d53129976f00" style="position: absolute; left: 30px; top: 96px;"> <label>Value</label> <input type="number" ng-model="page.value"> </md-input-container> <md-input-container id="f464df07-7044-43e9-9d47-428546d13b42" style="position: absolute; left: 30px; top: 156px;"> <label>Time</label> <input ng-model="page.time"> </md-input-container> <md-input-container id="f2489a90-6239-4c0a-a1b5-3b6e756340c5" style="position: absolute; left: 31px; top: 215px;"> <label>Annotation</label> <input ng-model="page.annotation"> </md-input-container> </div>
-
@jared-wiltshire Gent! I'll give it a go. Was scrounging through the code at 9Pm and all I could deduce was placing a value, couldn't see any mention of using the timestamp as well.
-
Ok, good news it works really well, cannot thank you enough for the assistance lately.
I do have a possibly stupid question...
If I were to try and amend a value by saving the value again at the same timestamp, will it overwrite?
I have a feeling it may with the NoSQL DB, but I know for sure with my testing rig using the mysql database it'll probably double up.
Any thoughts?
My best idea is to remove the point value with the HTTP DELETE call then insert the newly amended value with the original timestamp. -
Doesn't matter which database, it will overwrite the old value at that timestamp.
-
Thanks, I might have to test, I seem to have doubling up...