Keep users informed
Some operations in applications, like loading data from an external source or running an algorithm on a large graph, take time. In these situations, you want to keep your users informed by providing them with visual and meaningful feedback. The same is true when you iterate through a list : users want to have feedback on the items in the list that are being processed.
A single node makes all the difference
Graphileon nodes are functions. The one in this example is a so-called HtmlView
, that displays an Html widget, inside of which we put a textarea, that is updated every time an incoming TRIGGER
is fired that has a message as payload. It has a batch TRIGGER
that points to itself to clear its contents.
If you want to try it, add the function and the batch trigger by running the Cypher statement below against your application store.
// WARNING // The Cypher statement below does not take into account any existing data in the database // you are running it against. // It may cause conflicts (e.g. with existing constraints), or produce other undesired side effects // (e.g. change results of existing queries). // It is therefore highly recommended to create a backup of your graph database before // executing the statement. CREATE (_267152:`DUMP`:`IA_Function` { `#logEntries:evaluate`: 'full', `container.height`: '400', `$template`: ' <textarea style="height:95%; width:95%;" id="qvFPAgvR5dEcWHJH">{{#logEntries}} {{.}}{{/logEntries}} </textarea> <script> let $textarea = $(\'#qvFPAgvR5dEcWHJH\'); $textarea.scrollTop($textarea[0].scrollHeight); </script>', `container.closable`: 'true', `name`: 'Progress', `$area`: 'sidebar-right', `type`: 'HtmlView', `uuid`: 'd978f150-b529-11ea-a47d-0242f63b198c', `container.id`: 'progress', `#logEntries`: '[]', `$_instance`: 'progressView' }) CREATE (_267152)-[:`TRIGGER` { `action`: 'clear', `#logEntries:evaluate`: 'full', `type`: 'batch', `uuid`: 'e7e3e420-b529-11ea-a47d-0242f63b198c', `#logEntries`: '[]' }]->(_267152)
Triggers that point to the HtmlView
should update the contents of the log by putting properties on the trigger, like the ones below.
{ "$_update.add.logEntries": "'Data loading started at ' +now()", "$_update.add.logEntries:evaluate": "full" }
To see it in action, watch the video below.