Hi
I am using elixir full stack with liveview. I am building a dashboard application which will be heavy on data from database, pubsub etc. Especially from database, there will be data for charts for their multi series, single stats, forecasts, etc. But when data comes from database it still needs to be (pre)processed a bit, to push it into right structure for JS Charts.js data/datasets, and uses it for line charts, etc.
So for charting I am using Charts.js via JS.hooks.
So, is this something you would do inside mount function or you would do it somehow different or somewhere else. I mean with Genserver it is what you would use handle_continue for. So that you have fast startups of genserver processes.
I feel something similar should be the approach with mount function of liveview… or am I mistaken? I guess we don’t want it to be slow with fetching data from DB, manipulating it, because with huge amount of data this can be time consuming. But at the same time I don’t think you can do any better if you just push the logic into some other module, file, location.
What would be the best practice/approach here? Beside pushing this to something else than mount function. Use the mount function to only set empty structures and perhaps to “handle loading” state and visual appearence of spinner suggesting that not all the data is ready yet. And somehow trigger something like Task.async to fetch data? Perhaps from mount? I mean, can/should I use handle_continue in liveview or send a message to myself with send(self()… and catch that with handle_info and do data processing there? What would you suggest?
Thanks in advance for your feedbacks
Tomaz Bracic