nextcloud/calendar

implement a search function [$90]

georgehrke opened this issue ยท 29 comments


There is a $90 open bounty on this issue. Add to the bounty at Bountysource.

Using the ordinary search is unbearable slow, we need some changes to the CalDAV server here.

Using the ordinary search is unbearable slow, we need some changes to the CalDAV server here.

The changes are now there (nextcloud/server#4098) ... What is the state here? @georgehrke

We can now implement a performant search with our CalDAV server. So we just need to implement it ;)

requires being able to link to events are dates
#21

How is the data stored in the calendarobjects table, especially the calendardata field? Haven't found the table specs/documentation or the code storing it. It changed from NC10 -> NC11 I think, where in NC10 you have been able to find cleartext ics-data in the field.

It didn't change.

From old backups I can say that OC seemed to use cleartext while NC seems to use "_binary" as seen in the latest sql dump. Correction: change might have been made from OC to NC, but not from NC10 -> NC11.

The column type might have changed, i don't recall, but the actual data we store in there was and is RFC 5545 based ical data.

There is a $30 open bounty on this issue. Add to the bounty at Bountysource.

By now the bounty has rissen to $60!

I was just about to ask for this feature. ๐Ÿ˜‰ Because of the delay between altering certain types of calendar events and them being rendered I tend to think I may have made a bad edit. I realize at that point that I have no tool to do a text search for the event.

I don't know if this would help but a calendar mode we don't have is the event list, where it's just a simple linear display of data for the calendar. Like an infinite scroll blog. Well if that display mode is possible, couldn't the search just be implemented on the displayed text? Filters for that rendering could be date range & simple buttons like a year, month, next 365 days, last 365 days, a logical named calendar, my events or shared events.

I feel like solving this problem is harder than it seems until a person starts to work on it.

I just added another $10.

@WNYmathGuy yes search results should be listed in agenda view IMO.

Does that mean that #402 needs to be fixed first, and only then search can be implemented?

Putting into backlog in favour of nextcloud/server#20918

I and colleagues would be willing to add a decent bounty on this if this and duplicate #113 could be worked on...

@SLYtiger16 Please see https://help.nextcloud.com/t/dont-use-bountysource-anymore/84943

(Edit: Let me remove the bounty label from issues)

@georgehrke is there an alternative method you wish to you to incentivize development on specific issues?

@georgehrke is there an alternative method you wish to you to incentivize development on specific issues?

Actual code / pull-requests are the best contribution possible.

Regarding this issue in particular, i'm currently implementing nextcloud/server#20918, which will also solve this ticket.

@georgehrke which properties of an event will be indexed in a search for the Nextcloud/server PR?
Might I suggest at least summary, description, and attendees?

The following properties are being indexed already:
https://github.com/nextcloud/server/blob/4cac0f6895cf4bda4dda0b7cb3b843546eb0a952/apps/dav/lib/CalDAV/CalDavBackend.php#L136

We will use the following ones for the search:

  • Title of event
  • Location
  • Description
  • Email of attendees
  • Name of attendees
  • Email of organizer
  • Name of organizer

@georgehrke I was thinking about this and would like to ask, will this nextcloud/server PR add the ability to find an event via search just like files and folders displayed in a list, or will this allow the calendar view of events to be filtered to only events with matching properties?
I personally find limited but beneficial use in the former and absolute daily need in the latter...

It will be a list for now, see nextcloud/server#21971 for the current design.
I can't say for sure whether it will allow apps to implement their own "in-content" search later on.

Would it be antithetical to the future of nextcloud to implement a filter in the calendar separate from the unified search? A calendar view filter is beneficial when looking types of events or those with certain attendees or summary traits. It is most beneficial if results can still be visualized in the standard calendar formats by limiting the events rendered. I would not be opposed to opening a new issue anda loose attempt at a PR (not great with vue.js yet) as long as it would not be a waste of everyone's time.

The calendar should definitely implement the Unified Search with the list view, because that's the primary use-case for search. As a user, I want to be able to search the entire calendar, not just the current month.

That's what this issue was always about.

If you want to discuss your filtering approach, please open a new issue, but I'm not sure it's a feature we will include in this app.

georgehrke I was thinking about this and would like to ask, will this nextcloud/server PR add the ability to find an event via search just like files and folders displayed in a list, or will this allow the calendar view of events to be filtered to only events with matching properties?
I personally find limited but beneficial use in the former and absolute daily need in the latter...

filtering in week view (and day/month) would be incredible! @SLYtiger16 do you know any software or web service that does this? I could not find one..

It would allow to create digital signage boards for rooms in an office. Put name of the room in description of events, set the filter to that room name, display that page on a small tablet next to the door of the room. Wow!

@alexanderdd I wrote one for a proprietary program which also is utilizing fullcalendar.js.

It was SUPER easy, it was written in JavaScript and simply implements an events_array.filter() testing for a string.toLowerCase() match on the "search" input value vs. the event.summary event.description event.location and the properties of event.attendees.

It would be a super simple implementation which simply limits the events for a document rerender

@SLYtiger16 I opened a separate issue for filtering as Georg suggested

This is closed but no search function?

There's a search function in Nextcloud 20 (Calendar App 2.1)