-
Notifications
You must be signed in to change notification settings - Fork 338
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MediaPlayer Capability UI #1628
Comments
See also: WebThingsIO/schemas#34 |
This is the most complex schema we have added to the WebThings platform and the number of properties and actions really stretches the current hub and spoke design system for the thing detail UI. In #1629 I experimented with a more custom design for a UI capability which takes a more custom approach (which we ultimately didn't use), but I think this may be case where that is even more necessary. Below are two rough examples of a UI design which demonstrate the problem and a possible solution. Each design represents nearly all the interaction affordances of the schema proposed in WebThingsIO/schemas#34 (the first just misses out One issue with this less modular design is that it somehow has to support lots of variations on which properties and actions are supported. Should we try to accommodate all possible combinations in the design, or always show all UI elements and disable the ones that aren't supported. I'd like to try the former, but it may result in a messy looking UI for some use cases. It would be good to have a responsive UI design which accommodate smaller screens, which the first design obviously wouldn't support well. But the biggest issue is what happens if a device adds other properties and actions which aren't part of the Thoughts? |
What about playlists or browser ? |
That's really a question for the schema. While it's a fine line for several of the properties in the current draft of the schema, I'd say playlists and a media browser definitely tip over into things which are not properties of a physical device. |
Hi @benfrancis, Is there any way that a device can provide its own interface? In industrial HMI design these per-device interfaces are called "faceplates", after how the physical interface on instruments is called. The HMI is built in a modular way from a library of symbols each of which represent a real-world thing with various properties, much like WebThings Gateway. The properties are standardised in most cases, or a device may bring its own properties if necessary. The faceplates are standard per-device, and these are all taken from a library so there is some consistency of HMI look and behaviour. Complex devices can provide their own faceplate. Whilst I like the hub-spoke design it clearly doesn't work at all for the media player. I like the custom "faceplate" you've made for the media player. I think if there is a device that uses more than on capability or adds extra properties then that device should have a way to provide its own faceplate. Generally however I think the hub-spoke design works very well and is very responsive to smaller displays. Please don't throw the baby out with the bathwater 😉 Cheers 🙂 |
Yes, absolutely. A web thing can link to its own web UI using a link relation in the links section of its Thing Description:
This is then rendered as a link icon which can be clicked to access the custom web UI. This has been supported since WebThings Gateway 0.5 but unfortunately few web things currently do it and it's non-trivial for add-ons to implement. At one point I envisioned this would be the way that most devices would work and the default automatically generated UI would be a fallback for devices which don't provide their own UI. So far that hasn't turned out to be the case. Media players would be a good use case for this feature so that they can provide their own optimised UI for their particular feature set.
This does indeed sound very much like capability schemas, with the option to provide a custom web UI. |
Hi @benfrancis, So if things can already provide a link to a custom UI then isn't that the solution? Or did you want to build in to the Gateway a default UI for MediaPlayer? Either are fine. But if your main concern is to try and create a UI which addresses all possible uses of the MediaPlayer capability then I think that may be trying to do too much. If a thing fulfils the standard MediaPlayer capability and does nothing more then your default will suffice; if the thing isn't a perfect match then a custom UI should be provided. And maybe I've still not full understood problem! Cheers 🙂 |
@madb1lly wrote:
Both. I'd like a useable default UI which covers the core use cases, and the ability for web things to provide their own custom UI which is more tailored to a particular device.
Exactly. This issue is about what the default should be. |
Couldn't we just provide the media player UI as some sort of link relation template and leave the thing view in its bubble design as it is? |
@bewee wrote:
What do you mean by link relation template?
This is what we ended up doing with the |
Ah I see. I would like to avoid having two default user interfaces for a media player capability as I think that adds a lot of unnecessary complexity to the UI. In the longer term I'd be interested in exploring a different design approach for the gateway UI which does a better job of balancing more task-focused user interfaces with the extensibility of the current hub and spoke design pattern to ideally have the best of both worlds. In the meantime if we take the approach in the second mockup which breaks with the current design pattern, I think we either need to also implement some kind of "other properties" UI to access other custom properties, or accept that if the user chooses media player as a device's primary capability when adding it to the gateway then they can't access any other custom properties of the device. |
As a user I want to control and view the status of a media player so that I can control the playback of audio and video in my home.
The text was updated successfully, but these errors were encountered: