Skip to content
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

GUI overhaul #307

Closed
13 of 19 tasks
philipp2310 opened this issue Sep 16, 2020 · 28 comments
Closed
13 of 19 tasks

GUI overhaul #307

philipp2310 opened this issue Sep 16, 2020 · 28 comments
Assignees
Labels
cleanup discussion documentation Improvements or additions to documentation enhancement New feature or request Epic GUI help wanted Extra attention is needed
Milestone

Comments

@philipp2310
Copy link
Member

philipp2310 commented Sep 16, 2020

This is a collection of ideas that should (but don't have to) be improved with the web UI.

Please don't add anymore to this list if it is not REQUIRED for a smooth process in the b5 release as a stabilization phase was started

New Ideas will be in the next Epic found here #360

  • cleanup JS -> rebuilt in vue.js - WIP
  • more functions behind login, including a way to logout - WIP
    -- [x] privacy:
    --- [x] aliceWatch
    --- [x] syslog
    -- [x] administration:
    --- [x] scenarios
    --- [x] skills
    --- [x] myHome editing mode
  • device/location depending display
    -- [x] start directly in theater mode
    -- [x] use different widget layouts
    -- [x] start in different widget layouts
    -- [ ] widgets need site or at least widget instance dependent settings
    -- [ ] screen privileges (what is the default user access level)
    -- [ ] define uuid of the speaker/sat that should output voice (e.g. please log in) Config siteID for talking on interface access #251
  • Central login function Central login function #337
  • myHome display mode as widget
    -- [ ] only allow display and toggling devices
    -- [ ] allow widget show on toggle (requires multiple instances of one widget)
  • small screen/touch interface
    -- [x] left sidebar initially hidden. One button opens
    -- [ ] bigger sidebar as overlay/dropdown
  • Fix z-Indexing for widgets 🚧 Reworking broken z-indexing #330
    -- [ ] is now available as a generic z-indexed css class
  • multiple instances of one widget 🚧 Added id column to widgets #331 - WIP
    -- [x] way to init. widgets has to change
    -- [x] data of widgets has to be saved separately
    -- [x] adding of widgets needs changed menu
    - [ ] parenting of widgets - not planned at the moment, lowest priority
    -- [ ] of bigger use when you have a big myHome widget on the lower layer and special widgets above for e.g. room temperature
    -- moved to long-term Long-term GUI Development #360
  • MyHome documentation - WIP
  • MyHome fallback for missing Icons
    -- [x] If an icon can't be loaded, fall back to a generic "error Icon" -> easier to debug
  • MyHome spawn voice created room in a more convenient size and location
  • MyHome nested rooms
  • MyHome - Renaming a device does not rename it in configs
  • MyHome - find a good way to "magnetize" movement and resizing -> vue?
  • "Alice currently not available" must not reload the page when stuff was changed (myHome, AdminConfig, widget movement..) - shouldn't be a problem with single page layout anymore!

TODOs for Merge with b5

  • update skills for new path to LocationManager and Location
  • update skills with telemetry for storeData and siteId == deviceId
  • update skills to new widget structure
  • update skills for new DeviceType structure
@philipp2310 philipp2310 added enhancement New feature or request GUI Epic labels Sep 16, 2020
@philipp2310 philipp2310 added this to the 1.0.0-rc1 milestone Sep 16, 2020
@philipp2310 philipp2310 added cleanup discussion documentation Improvements or additions to documentation help wanted Extra attention is needed labels Sep 16, 2020
@philipp2310 philipp2310 self-assigned this Sep 16, 2020
@hipitihop
Copy link
Contributor

I'd like to add a proposal to the list, consider using React
https://reactjs.org/tutorial/tutorial.html#what-is-react

@Psychokiller1888 Psychokiller1888 self-assigned this Oct 26, 2020
@Psychokiller1888
Copy link
Member

Re parenting... ATM I did not do it as this can easily go down a rabbit hole. We'll see if I get an idea

Now, re multi instances. It basically completly works as of now BUT... Javascript.... Where styles can be "scoped" to their parent div and not override same named classes. JS cannot. That means, on the same page, if you have twice the "time" widget active, only one will work, because well... They use the same target ids, the same function names etc etc and are loaded twice. This is really really problematic. One thing could be made core side though....

  • When Alice imports the widgets
    • MD5 hash of the untouched file
    • Keep hashes in a file
    • If no modded files exist OR file hash has changed
      • Check html files for
        • id="my_id"
        • List those ids and rename them to id="uuid4()_my_id"
      • Check JS files for:
        • ID selectors => rename them according to above list
        • Function definitions => rename them to uuid4()_functionName
        • Check refs for those functions and rename accordingly
        • Constants => rename them to uuid4_constantName
        • Check refs for those constants and rename accordingly
      • CSS can be left alone, it is anyway scoped to the tag
      • Dump the new files into prod_widgetName.widget/js files
      • Serve modded files
    • If modded file exists and hash not changed serve the modded files

Question is, what do I forget?

@Psychokiller1888
Copy link
Member

Psychokiller1888 commented Nov 21, 2020

@hipitihop

I'd like to add a proposal to the list, consider using React
https://reactjs.org/tutorial/tutorial.html#what-is-react

Went for Vue.js

@LazzaAU
Copy link
Contributor

LazzaAU commented Nov 30, 2020

Observations noticed while testing the new interface. (viewed on firefox)

  • miss alignment of headings in some of the "admin" interface. refer this following screenshot.

Kazam_screenshot_00044

  1. The following buttons seem to of stopped working in the skills tab
  • Stop
  • Reload
  • Remove

Settings button works. The following is in the console , can expand any relevant error if required.

Kazam_screenshot_00046

@LazzaAU
Copy link
Contributor

LazzaAU commented Dec 2, 2020

i can confirm the three buttons work in the skill tab again.

Clicking the "stop" button then refreshing the page takes the skill out of alphabetical order and places it to the bottom of the page. If your unaware of this new shift ( as in someone like me with a small screen that has to scroll) then you may deem it to be broken cause the skill disappears. When in fact it hasn't its just moved

Starting the skill again does not move it back to alphabetical order where you are used to it being. unless you restart

  • Confirmed
  • cant reproduce
  • fixed
  • Doesn't need fixed. That's how it is.

skillOrder

@LazzaAU
Copy link
Contributor

LazzaAU commented Dec 2, 2020

and sorry if i'm jumping ahead of things here but assume your aware of this also

  • WIP
  • Fixed

delete skill

@philipp2310
Copy link
Member Author

philipp2310 commented Jan 4, 2021

Click to expand solved

Bugs:

  • newly installed skills are only shown after reloading the skill page
  • skills -> shop -> Ok/Install -> Toolbar switches, screen stays in the shop
    link.gif
  • skills shop shows already installed skills (like AliceCore)
    image.png
  • switching from skill shop to any other page and back creates same inconsistent state with the toolbar as above
    link.gif
  • myHome: switching from floor painter to any other tool won't remove the floor tile from the mouse pointer but still will place the correct item. Deselecting floor isn't working as well: Only ESC works
  • myHome: Adding a device: The skill is shown even if there is no device available for adding (for example it shows ALICECORE, but it is not clickable) Other deviceTypes (AliceSatellite, Vaccum) seem not yet implemented although the skill contains the deviceType dict
    image.png
  • myHome: Linking starts, but no connection from AliceCore to a room is possible: red border, no error message on click
  • myHome: Linking from device to device is possible (feature was on my list as well, but isn't intended in that case I guess)
    image.png
  • myHome: Links are not removed when switching to another page, for example widgets:
    image.png
    -->followup error from failed device to device link
  • skills: Turning off a skill, won't change the icon until reloaded with F5, starting works
    link.gif
  • myHome: dragging the map around while clicked on a location is not possible (had to get that device at 50k px -> 50k px large location - hard to miss while dragging..) -> not happens all the time as it seems
  • uninstalled skill only reappears in the shop after restarting Alice
  • leaving widgets on tab 2 to another page (skills, myHome..) and returning to widgets, will show the widgets of tab 2, but will show tab 1 as selected
    link.gif
  • widgets not working on second opening of the page
  • parenting of devices seems to keep absolut x/y values: moved AliceCore from no location to a location, now it is gone, F12 shows it off the screen (NOT ALWAYS! Actually couldn't reproduce a second time - might be caused by rotations as well, they behave strange when you drop a rotated device on or out of rotated rooms): image.png
  • myHome: adding two devices to one room gives error:
    image.png
  • myHome: devices of zigbee/vacuum have a icon on creation, but no icon after restart of alice
  • myHome: switching from any tool (device or location) to the adding tool required deselection of the prev. tool

Added features - after the initial version:

  • Up- and download of widget presets
  • myHome removal of links
  • myHome device settings
  • myHome link settings
    -- including for the location the device is in

Improvements:

  • Adding devices should maybe be grouped by skills like widgets?

  • Syslog should maybe started by default - if you never clicked on it, the screen is empty

  • Add a direct link from renaming of widget tabs to FA

  • search functionality for admin options (e.g. one free text field, if there is something entered, hide every option that is not containing that string)

  • a marking of the center of the 100k100k area would be nice, maybe even with arrows pointing in that direction once you are lost at 0px0px (shouldn't be necessary, but once you have to go there, it is hard to come back...

  • myHome: dragging a location by clicking in the center (on the text) opens the "please enter new name" popup after dropping

  • myHome: moving a location is not sending the new position (but the old) to aliceCore via API

  • Skills: FailedSkills are not shown

  • Skills: FailedSkills don't show enough information and Settings must be available.
    Skills with API aren't start able without changing the settings manually in the file

  • Skills: Changing settings gives an error in console - but works
    image.png

  • Moving a device to a new location won't create a link to the new parent location
    --- creating a new link to the parent manually is not possible

  • Moving a device to a room with active link removes the link after reload, but shows save error right away

  • live updates of the links
    --- [ ] creating a new device won't show a link to the parent room until reloading
    --- [ ] removing a device keeps the link in ui until refreshed
    image.png

  • Name of the device is shown for mouseOver of the whole - invisible - status bar, even if another device would be exactly in that spot
    image.png

  • Device._displayName is currently held in two different positions. Once as the variable, and second as default config value. Second one is shown in UI, first one is set for new devices. Device.py line 40 vs line 67

  • resizing a rotated widget has wrong (pre-rotation) bounding box - hard to fix, but still worth mentioning..
    -- TODO remove vue-draggable-resizable and use same as my home
    image.png

  • without ever changing the page for widgets, adding a widget is not possible (guess page id is not set - reproduce by deleting cookies)
    [WidgetManager] Tried to add widget Clock from skill DateDayTimeYear to page id 0 but the page doesn't exist#033[0m
    Not reproduceable anymore, might have been messed up pages?

  • many functions not working when "remember login" is NOT selected, working fine when login is remembered

  • after clearing cache: Skills Tour seems not to be working anymore "TypeError: this.skills.push is not a function" in skills.js line 123

  • Error message at end of skills tour:
    image.png

  • heartbeat broken edge is blocking clicks

  • somehow the wrong toolbar in skills is back? Couldn't find a way to call toggle from "extern"
    image.png

  • Newly installed skills don't appear in UI anymore, only after reload

  • ❄️❄️❄️ widget options, value of slider for visibility and font size isn't fixed width and causes the page to jump a bit

  • pressing enter in the "change widget tab icon" dialog causes a page reload but won't save the changed icon

  • clicking on an already opened tab in the widget pages causes the following error for the already present widgets:
    image.png

  • "Connect" has a confusing state on failed connection when the IP/Port have been saved before: IP and Port are filled, "remember" is set to false. If you connect now, the IP/Port will still be saved (from before) although the remember was set to false. Could maybe show "remember" when displaying IP/Port from earlier and if "remember" is set to false, delete the saved information

  • personal Opinion: pressing ESC while linking is active from a device should only deselect the device, not deselect the tool.. maybe ;)

rest moved to #369

Improvements:
- [x] concept for Telemetry: moved to #360

@Psychokiller1888
Copy link
Member

Devices are grouped by skills, with html dropdown list titles

@Psychokiller1888
Copy link
Member

Re myHome: Linking starts, but no connection from AliceCore to a room is possible: red border, no error message on click

On your screenshot it looks like Alice isn't placed in a location?

@philipp2310
Copy link
Member Author

correct, it got initially placed in no room (parent was 0 I think)

@Psychokiller1888
Copy link
Member

Yes, because there's no room by default instead of Hive as you had. Maybe we shouldn't display Alice until there's a room created by the user and automatically add Alice to that location?

@Psychokiller1888
Copy link
Member

Or auto create the first location as you did

@philipp2310
Copy link
Member Author

Should be easily done by just adding it initially to room 1 (just deleted my room with alice inside, added a new one and alice appeared in it)

@Psychokiller1888
Copy link
Member

true

@Psychokiller1888
Copy link
Member

Actually, Imma re-add your first location "The Hive", so when the user first opens the myHome page, there's a location, where we can then play the tour to explain the functions

@Psychokiller1888
Copy link
Member

Uninstall skill will reappear in shop after the shop data has been fetched again`. Core checks every 15 minutes, and UI asks core store data every 5 minutes. I'm hesitating to trigger a store update after a skill deletion, because if a user delete 5 skills in a row, that's 5 store refresh. Thoughts?

@Psychokiller1888
Copy link
Member

Re widgets page bug after changing main page, I honestly have no freaking idea why this happens. Added logs, the activeTabId is always correct, but the wrong class is applied to the tab

@philipp2310
Copy link
Member Author

Uninstall skill will reappear in shop [...]

In my case it was the broken zigbee stick -> "Let's try reinstalling zigbee2mqtt"
How about a "dirty"-flag when you uninstall, that will force a UI reload of the store even if the 5 min aren't passed yet? That shouldn't trigger too often - unless the user really uninstalls one skill -> store -> uninstall next skill -> store...
Core store refresh every 15 minutes is more than enough, I wouldn't touch that.

@Psychokiller1888
Copy link
Member

Yeah, did not think about re installing case... We could maybe also use the "skill deleted" mqtt topic and re add the skill in the store, simply?

@Psychokiller1888
Copy link
Member

Re finding the center of floorplan, I started to add an arrow that will show the center of the map. And when you click it the map is reset to center with 1.0 zoom. I also added floorplan position and zoom saving

@LazzaAU
Copy link
Contributor

LazzaAU commented Jan 15, 2021

New Interface Feature ? - Voice selection.

Not sure if this is already added or in the pipeline, but i'd like to suggest

  • Having a drop down list in Admin screen, for TTS voice

.
This would later allow a user to select a TTS voice from a drop down list for the appropriate engine selected.

@Psychokiller1888
Copy link
Member

Yep, wanted that since long

@Psychokiller1888
Copy link
Member

Can't repro the prevent redundant navigation

@philipp2310
Copy link
Member Author

prevent redundant navigation: just a cosmetic thing, not blocking the merge - I'll take a look after work :)

.then() for admin utils restart contains the switch to syslog - if you switch manually to syslog before the promise is fulfilled, you get the double navigation.

At least that is what I read out of the constellation (was repeatable for me) - if it is true, I should be able to fix it later ^^

@Psychokiller1888
Copy link
Member

Oh, ok, when coming from admin that auto leads to syslog, then I get it

@Psychokiller1888
Copy link
Member

Good if we get rid of them, but I think you don't see those messages in production mode, once built

@LazzaAU
Copy link
Contributor

LazzaAU commented Jan 23, 2021

Have started a thread for observations and bugs noticed with the merged new-interface. Issue #369

@philipp2310
Copy link
Member Author

Closing this issue and collecting any open points from this issue in the corresponding topics.
Awesome job! The new interface feels so good :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cleanup discussion documentation Improvements or additions to documentation enhancement New feature or request Epic GUI help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

4 participants