hass-swipe-navigation icon indicating copy to clipboard operation
hass-swipe-navigation copied to clipboard

Implement custom swipe actions

Open albinmedoc opened this issue 2 years ago • 15 comments

-- Work in progress --

I have started to allow specifying the exact tab index when swiping. This allow more customizations for the user.

It would allow the user to swipe from tab 10 to tab 1 in one swipe.

I'm having trouble loading the configuration, and would need some help, the rest should work fine.

A view has two additional configurations:

{
      swipe_back_index: string | number | null | undefined;
      swipe_forward_index: string | number | null | undefined;
}

string: is a path to a tab number: is the index of a tab null: disables swipe undefined: default behaviour (prev/next tab accordingly)

albinmedoc avatar Feb 12 '23 06:02 albinmedoc

Thank you very much for your contribution. I surely can help.

The main thing to discuss here is whether to:

  • Put the custom swipe configuration at the same level of the current config
    • In this case the user needs a way to specify which tab refers to each custom-swipe config.
    • The advantage is that we have all the config in one place. The disadvantage is that the user needs to remember to update the config when changing tab paths.
  • Put the custom swipe configuration at the same level of the "view"s configuration.
    • Advantage is that "related things are near" (views and view-specific swipe config), but the configuration is now split across the file. This is both inconvenient and I guess it would also be harder to code.

What's your opinion?

P.S. I'm trying to adhere to conventional commits. I would appreciate if you could try to follow it principles. Have a look at it or try to mimic my commit messages looking at the history. 😊

zanna-37 avatar Feb 12 '23 09:02 zanna-37

The code is working now. Both by setting the global configuration and by view. The global overrides the view config.

albinmedoc avatar Feb 13 '23 11:02 albinmedoc

I don't have time to write tests for this feature or fix any bugs. Feel free to edit the code as you likings.

albinmedoc avatar Feb 13 '23 12:02 albinmedoc

Thank you very much! I'll take it from here if you don't have time.

zanna-37 avatar Feb 13 '23 13:02 zanna-37

Thank you. Just want to mention thats is possible to specify tab by index or path.

I dont know how this works by the built in lovelace? I'm using UI Minimalist.

albinmedoc avatar Feb 13 '23 13:02 albinmedoc

Really looking forward to this being implemented! Googled this issue and found this PR.

NewsGuyTor avatar Mar 12 '23 17:03 NewsGuyTor

Thanks @NewsGuyTor! I have been running this PR for over a month and it works great.

I think the missing piece for this PR to get merged is to add the documentation for this feature. Currently I don't have time to write it myself. Feel free to do it if you have the time.

albinmedoc avatar Mar 13 '23 06:03 albinmedoc

We need to rebase everything but there will be a lot of conflicts. I'm thinking about rewriting this, taking huge inspiration from this PR. I'll add Albin in the commit as co-author as well as in the changelog. However, I'm a bit busy currently but It's on the roadmap with top priority.

zanna-37 avatar Mar 13 '23 15:03 zanna-37

Hi all. So, this enhancement would be the best software enhancement known to man kind, so many use cases for the swipe back and forward view index option. I see the branch is still pending and there may be a desire to rewrite. Any way we could get this feature without the rewrite? ;-)

jpoeppelman1 avatar Jun 25 '23 11:06 jpoeppelman1

Any way we could get this feature without the rewrite? ;-)

No, I don't think so. Problem is that the PR works, but I need to make it stable and future-proof. Since this new feature requires users to change the configuration manually, I need to think of a good config structure in order to leave room for later improvements and actions.

For example, I could allow for arbitrary js execution, not only navigation. But in order to do this I need to sit down and think carefully because once you create the structure it's not very elegant to change it with a breaking change down the road and ask users to comply.

I'm currently busy with work but I haven't forgotten this PR. =) Hang on tight.

zanna-37 avatar Jun 26 '23 20:06 zanna-37

Hi all. I'm okay with using the PR version until we get the refactored version. I'm okay if it breaks in the next release, I'll make the needed changes. So, I'm not a javascript developer, how can I convert the ts file to js when loading as a resource in HA? Any help really appreciated. ;)

jpoeppelman1 avatar Jul 01 '23 20:07 jpoeppelman1

You can have a look at https://github.com/zanna-37/hass-swipe-navigation/blob/main/CONTRIBUTING.md#build or https://github.com/zanna-37/hass-swipe-navigation/blob/main/.github/workflows/build-on-release.yml.

If you don't know what I'm talking about, I discourage you to continue without having a deeper understanding. However, if you're feeling lucky just run scripts/build.sh, you should find the compiled file on dist/swipe-navigation.js.

zanna-37 avatar Jul 05 '23 09:07 zanna-37

You can have a look at https://github.com/zanna-37/hass-swipe-navigation/blob/main/CONTRIBUTING.md#build or https://github.com/zanna-37/hass-swipe-navigation/blob/main/.github/workflows/build-on-release.yml.

If you don't know what I'm talking about, I discourage you to continue without having a deeper understanding. However, if you're feeling lucky just run scripts/build.sh, you should find the compiled file on dist/swipe-navigation.js.

Thanks for helping me. I was able to compile the file using the docker method, then took the swipe-navigation.js file from the dist folder, copied it to my-ha-config/www/community/hass-swipe-navigation. I then restart HA and cleared my frontend cache in the iOS companion app, loaded the dashboard, no luck, it did not work. I added "swipe_back_index: security" and it did not honor the path. Below is the structure I used. Any advice?

  • title: '' path: security-detail swipe_back_index: security type: custom:vertical-layout badges: [] cards:

jpoeppelman1 avatar Jul 07 '23 11:07 jpoeppelman1

Have a look at https://community.home-assistant.io/t/hacs-card-install-wont-update-with-local-code-changes/314328.

zanna-37 avatar Jul 10 '23 07:07 zanna-37

Just checking in here. How long do you think it will be before we can use this super awesome feature? :-)

jpoeppelman1 avatar Sep 11 '23 15:09 jpoeppelman1