Gig-o-Matic / GO3

GNU General Public License v3.0
9 stars 8 forks source link

More detail possible in calendar feed? #529

Open uneasyalliance opened 3 weeks ago

uneasyalliance commented 3 weeks ago

This is a feature I'd really like to have. I'd like to be able to see in my external (e.g. google or apple) calendars all upcoming gigs, and have some way to visually differentiate my responded/didn't respond, attending/not attending status. I'm in one band using GigO, and another not, so having a combined local calendar with current status will be very helpful. I haven't fully investigated the .ics format to see where that could go, but I did check that the data is not available currently in the calendar feed.

I considered just screenscraping it, but if you consider this a useful option for users, I'd be willing to do the work to add it. Another option might be a way to download the complete schedule with all details, but I don't know if that's an option where GigO is hosted. I'd also be willing to work on some other pieces. I'm an experienced Python programmer. Let me know your thoughts!

John

aaronoppenheimer commented 3 weeks ago

Hi John - thanks for the input. There is a "Color" property in the iCalendar spec - I've never noticed it before. Apparently it allows clients to override the calendar default color if they want to. I don't know what that would look like but we can experiment and find out. The gig-o has a per-band color setting (which is used by the internal calendar view as well as the default 'schedule' view) - I can imagine giving the user the option to color calendar-feed events by band or by status (yes/no/etc). You can also already tell it not to include "no" events in your calfeed, so maybe that's less useful? How would you propose to use color?

uneasyalliance commented 3 weeks ago

Hi Aaron, thanks for the reply. I was thinking of either a data field (if available in the calendar format), or a subtle title modification, which gives the user's reply status. Whether that's a color, or a bit of text in the title I don't know what the best choice would be. The other band I'm in uses calendar invites, so they are differentiated by outline/solid/hidden for not accepted/yes/no respectively. Something like that would be a big help for my scheduling, but I'm not sure what the capabilities of goog calendar are in terms of custom coloring, it might just be a color per calendar source. In that case some discreet bit of data would do the job, then I could have a process to watch my GigO calendar feed, and then massage it to look the way I want in goog's calendar, then load it in.

uneasyalliance commented 3 weeks ago

I see "(Confirmed)" or "(Uncomfirmed)" for each item in the calendar feed, so perhaps something like that. A user could opt in or out maybe.

aaronoppenheimer commented 3 weeks ago

Huh - I wonder if the gig-o could just send calendar invites.

On Thu, Aug 22, 2024, at 6:38 PM, uneasyalliance wrote:

I see "(Confirmed)" or "(Uncomfirmed)" for each item in the calendar feed, so perhaps something like that. A user could opt in or out maybe.

— Reply to this email directly, view it on GitHub https://github.com/Gig-o-Matic/GO3/issues/529#issuecomment-2305864159, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAWDDNSXP344FQ2O7ZFDUEDZSZR5DAVCNFSM6AAAAABM6SM6JOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMBVHA3DIMJVHE. You are receiving this because you commented.Message ID: @.***>

aaronoppenheimer commented 3 weeks ago

Also https://icalendar.org/iCalendar-RFC-5545/3-2-12-participation-status.html

On Thu, Aug 22, 2024, at 6:41 PM, Aaron Oppenheimer wrote:

Huh - I wonder if the gig-o could just send calendar invites.

On Thu, Aug 22, 2024, at 6:38 PM, uneasyalliance wrote:

I see "(Confirmed)" or "(Uncomfirmed)" for each item in the calendar feed, so perhaps something like that. A user could opt in or out maybe.

— Reply to this email directly, view it on GitHub https://github.com/Gig-o-Matic/GO3/issues/529#issuecomment-2305864159, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAWDDNSXP344FQ2O7ZFDUEDZSZR5DAVCNFSM6AAAAABM6SM6JOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMBVHA3DIMJVHE. You are receiving this because you commented.Message ID: @.***>

uneasyalliance commented 3 weeks ago

That participation status field gets most of the way there, it doesn't map exactly to the gig-o statuses, but it's probably close enough. The idea of calendar invites is interesting, if you don't mind interacting directly with google's ecosystem.

uneasyalliance commented 3 weeks ago

I just found a page https://support.google.com/a/users/answer/9323423?hl=en indicating that google calendar events can be colorized per-event. Tomorrow I'll play with that and see if they're using a standard field for that.

aaronoppenheimer commented 2 weeks ago

I don't think we can do what we want. There is a "COLOR" attribute in the iCalendar spec, but it's new and doesn't seem to be implemented by and of the three calendars I tried it with (Apple Calendar, Fantasical, Google Calendar). You can set the color of single events in google calendar, but that resides in the app - if, for example, you set a color for a single event and then export the calendar, there's nothing about the color in the export, which I assume means Google Calendar is keeping color info internal.

I have been able to affect events using the "PARTSTAT" ("participation status," I think) - setting it to "ACCEPTED" or "TENTATIVE" or "DECLINED" does make a change, at least in Apple Calendar, though it's just a subtle icon and only when you drill down into the event, not in the calendar view. Also, setting an event status to "CANCELLED" makes the event disappear completely from the calendar.

I'm not sure about adding text to the title of the event - just a character or something wouldn't mean anything to most people. BUT - there are unicode symbols like 🟢 and 🟥 we could consider including as the first character in the title of the event. That does display correctly in Apple Calendar, at least, and it'd be straightforward to implement an option for people to turn that on and off.

But I want to understand the value a little better. Is it really useful to have "here's a gig for a band but you said you can't be there" on your calendar? Is it so if your plans change you'll see, hey, there's a gig here that maybe you can play now?