Adding elements to the map via table
I'd like to add elements (we'll just say points for now, but in the future, this will include polys/paths) to the visualized map via input to the dynamic table. What would be the process for accomplishing that?
My initial thinking is that I'll need a button to "add row". But how that button should link into the table stream is not clear. The table stream self.poly_table = DynamicMap(self.load_table, streams=streams) is linked to the load_table callback. If I force an entry, won't that break the dynamic mapping?
Its almost like the current setup is that the dynamic table linkage is a one way street, always listening for more information from the the map. But I need this to be a two-way street. I need the table to listen for information from the map and I need the map to listen for information from the table. Does that make sense? Is that possible?
This may be further complicated by the fact that when we add a new row, it should be empty. I'm not sure if an attempted drawing of an empty element will cause problems.
Its almost like the current setup is that the dynamic table linkage is a one way street, always listening for more information from the the map. But I need this to be a two-way street. I need the table to listen for information from the map and I need the map to listen for information from the table. Does that make sense? Is that possible?
In future we can probably have a widget button to add rows to the Table yes, but that work will probably have to wait on the simplified PolyAnnotator.
So the required work is at a level deeper than the annotators themselves? i.e. this isn't something that could be done for the point annotator (only) in its current state? I'm ok with waiting, I just want to make sure I understand.
No, the work is likely at the Annotator level, but as discussed elsewhere, it doesn't make much sense to build stuff on PolyAnnotator which we've already decided should be hugely simplified. That simplification is waiting on changes/features in HoloViews though.
Can I get an update on this? Seems like it was waiting on something in Bokeh?
It doesn't seem like there's going to be much progress on this at the bokeh end any time soon, but once we are using panel I think we can easily combine the tables with some buttons to add and delete rows in the table.
@philippjfr will check on the Bokeh issue/submit a new one
We had an internal issue about this on the private repo, which references the relevant bokeh issues: https://github.com/ContinuumIO/EarthSim/issues/137
I can do this with panel using a button to add a row and redrawing the table.
@philippjfr Unless there were plans to implement this at a deeper level, then I suggest closing.
We did discuss adding this functionality directly to bokeh tables and opened an issue https://github.com/bokeh/bokeh/issues/7988. No progress on that front though and it's unlikely to happen unless we explicitly prioritize it.
I see this as necessary functionality for many workflows for recieveing input. We will need the ability copy and paste data into the bokeh table also -- automatically expand (add the necesary rows) to contain the new data.
Some applications (i.e. polygons) will require the table order to indicate relationship of the data entries. Therefore, being able to insert an empty row at the beginning, in the middle, or the end is necessary. Likewise, deleting specific rows or multiple rows, is necessary also.
+1
From the internal issue:
- [ ] Bokeh #7988: Add ability to insert new row in DataTable
- [ ] Bokeh #7762: Add support for copy and paste into DataTable