Collections Operations UI Design Patterns #14
Replies: 5 comments 1 reply
Lists/StreamsUI design patterns for lists and streams of objectsHere are some resources on UI design patterns for viewing and exploring lists of objects:
ReactJS packages for lists and streams of objectsHere are some ReactJS packages that you can use to create UIs for lists and streams of objects:
key-value storesUI design patterns for key-value storesHere are some resources on UI design patterns for viewing and exploring key-value stores of objects:
ReactJS packages for key-value storesHere are some ReactJS packages and resources that you can use to create UIs for key-value stores:
|
|
Most of our python backend objects are designed to have interfaces taken from the collections abstract classes: https://docs.python.org/3/library/collections.abc.html#collections-abstract-base-classes We want to map those objects, and (some of) the methods to interact with them, to UI components from material UI: https://mui.com/material-ui/ For example:
More(With Geppetto; take with grain of salt) This relationship is a many-to-many relationship, and will depend on the data characteristics, design choices, and context. Here are some more examples of different uses cases where we map some python objects to UI components to view, or even mutate these objects. (Note, the Form and Carousel components are not from Material UI (didn't find them there), but point to a list of possible react choices for them). Synopsis table
Details
|
|
Regarding implicit and explicit navigation. There is a middle ground between those two (or even a spectrum from one to the other). One common UX between explicit and implicit is having virtual scrolling (what you call infinite scrolling) with the UI displaying the information of loaded data, so the user can have "control" over data loading process. This is actually what has been implemented by @gitOfKumarSathish for the Data Table component. A totally implicit navigation would be having the UI only displaying the total number of items in the collection and virtualize the not loaded (or unloaded items) for features like selection (select all items), aggregated values and so on. |
|
Regarding File Explorers and Tree Views. To me a File Explorer are a concrete implementation of a Tree View. Do you share the same opinion @thorwhalen or do you see consider them as totally different types of components? |

Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
See comments:
A significant portion of UI components can be distilled down to a handful of operations performed on a limited set of data types. This abstraction allows for a more streamlined and efficient design process, as well as a more consistent user experience. Our goal is to develop versatile UI components that can be readily utilized once these abstractions are determined.
To illustrate:
Where this fits in the
i2mintstackWhenever possible (and not a ridiculous stretch) we chose our facade's base/inner_facing interface from python builtin interfaces (for example, from the abstract methods of python collections).
Packages like dol and creek to help us to create these python-like facades to various data systems and formats. On the other hand, with py2http we can create consistent web-service APIs to these collections methods (see the Mapping python collections builtin methods to REST API patterns discussion) and with http2py or http2js, make consistent python or JS interfaces to even third party APIs that can be abstracted to some collections methods. Finally, the front provides an abstract base to create such web-services as
py2httpdoes, but also GUIs (for example, using streamlitfront)This "collections operations" UI effort is just the next step of that stack.
Collection Explorers: Design Dimensions and Considerations
Data Aspects
Front-end Aspects
Examples of UI flavors
Examples of UIs to for lists/streams/sequences:
Examples of UIs to for key-value data:
Examples of UIs for fixed-schema data:
In conclusion, by abstracting UI components to basic operations on simple data types, we can better understand their functionality and design more effective user interfaces. This approach also highlights the commonalities between different components, potentially leading to reusable design patterns and components.
All reactions