Submitted by Pierre_Admin on 2016/09/01 21:22
Hi IQ users,
 
The last big piece missing before releasing v1.0 is support for online calendars.
 
As I'm working on the changes required for this new feature, I'll share design notes with you.
Feel free to comment and / or ask questions. It is your chance to chip in and influence IQ dev.

Calendar Design Notes

  • IQ Calendars
    • IQ will be able to display one or more calendars, each in its own tab
    • Calendars have 1, 2, 3, 5, 7 day, month and year preset ranges. In addition, the mini-calendar can be used to select custom ranges (i.e. 2 weeks, only Mondays and Tuesdays, etc)
    • Visually, calendars can have the following views:
      • Typical day view with week days as columns and hours as rows
      • Typical month view with week days as columns and week numbers as rows
      • Horizontal scrolling view, scrollable from Jan 1st to Dec 31st
      • Vertical scrolling view, scrollable from Jan 1st to Dec 31st
      • Timeline view (eventually) for busy calendars with lots of overlapping events
    • Any date field-value can be shown in calendars, either automatically (if set in Field Properties) or for individual items (right-click -> Show in Calendar)
    • For each calendar, users can select what events to show / hide (show / hide the corresponding date field)
       
  • Synced Calendars
    • Calendars from Google et al can be displayed inside any IQ Calendar
    • Each synced calendar gets a dedicated date field (with the field property "In Calendar by default" checked)
    • For each synced calendar, users can select to show / hide it (show / hide the corresponding date field)
       
  • Events
    • All events are linked to an IQ item
    • Items can be displayed more than once in the calendar, once per date field-value
    • Events can be one of: All day, Unscheduled, or Scheduled.
      • All day and Unscheduled events are shown at the top of the calendar. They don't have a start time
      • Unscheduled events have a defined duration (i.e. 2 hours) but have not been assigned a start time. Basically, they can represent events / tasks that can occur anytime during that day
      • Scheduled events have defined start time and duration. When the Calendar shows the time scale, they are shown in the correct spot
      • Dragging an event from the top part to the time scale are changes it to Scheduled type. Dragging a scheduled event to the top part changes it to Unscheduled type
    • Key event properties have corresponding field-values (Start, Duration, Where, Description, Repeating, etc)
       
  • Repeating Events
    • Repeat patterns can be specified for events:
      • Preset repeat patterns can be defined using the Event dialog (daily, weekly, monthly, yearly)
      • Custom repeat patters can be defined by manually editing the ICalendar string, such as:
        • On the third to the last day of the month: FREQ=MONTHLY;BYMONTHDAY=-3
        • All work day of February: FREQ=DAILY;BYMONTH=2;BYDAY=MO,TU,WE,TH,FR
        • The last work day of the month: FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1
        • Every work day on week 5 and 20: FREQ=YEARLY;BYWEEKNO=5,20;BYDAY=MO,TU,WE,TH,FR
      • Moving an event that is part of a series creates an Exception event
      • Deleting an event that is part of a series creates an Exception event
      • Exception events can be deleted, hence restoring the event in its series
    • Any event in a series can be converted to a distinct item (and then have distinct HTML and field values, distinct parents and sub-items)
       
  • Synced Events
    • IQ will regularly poll calendar servers to retrieve the list of New / Modified / Deleted events and apply changes to the IQBase:
      • For each event created in a synced calendar, an IQ item will be created. Event date/time is saved in the date field associated with this synced calendar.
    • Changes to events made inside IQ, where the date field is linked to a synced calendar, will be sent to the calendar server
    • When changes have been made on both IQ and server sides, the most recent will win
 
 

Comments

Thank you for this Pierre!  I will be studying your post in detail and commenting more as ideas come to mind.
 
[quote]Any event in a series can be converted to a distinct item (and then have distinct HTML and field values, distinct parents and sub-items)[/quote]
 
1. I believe this should be able to be done (at least) two ways:
  • en masse on creation.  The user would define whether they want distinct items created for each event, or one item.
  • After the fact the user should be able to click on any event and convert it to a distinct item.
2. Just as events now have a description that (can be) distinct, even when they are all tied to the same item, I also think they should have a done field that can be distinct, even when they are all tied to the same item.  It shouldn't be necessary to convert them all to distinct items to mark them done.
 
 

Pierre_Admin

2016/09/01 23:33

In reply to by David_H

[quote=David_H]
Just as events now have a description that (can be) distinct, even when they are all tied to the same item, I also think they should have a done field that can be distinct, even when they are all tied to the same item.  It shouldn't be necessary to convert them all to distinct items to mark them done.[/quote]
 
I agree that it would be nice, but it isn't feasible (nor possible in other programs AFAIK). What could be done however is that when marking an event as done, if it is part of a series, you're given the choice to overwrite the done date OR create a separate item and mark it done.
 
At one point, I was contemplating automatically changing all past recurring events to separate items. The rationale was that if in the past, an event either happened or it did not happen. If it happened, it becomes an item, if not, it should be deleted. Only future events really belong to the series as they are still "virtual". But I'm no longer so sure that it would be a good system.
 
Also, Armando has implemented an interesting solution whereby he appends all task done dates in a text field. It isn't really a date field (sortable, etc) but it does leave a trace of done dates. Food for thought !
 
 
Pierre_Admin
IQ Designer
 

[quote]I agree that it would be nice, but it isn't feasible[/quote]
 
Can't events have a dedicated done field, just as they have a dedicated description field?  That's what I was referring to.  Admittedly, I can see that could potentially cause user confusion with regard to the standard Done field.

Pierre_Admin

2016/09/02 00:05

In reply to by David_H

[quote=David_H]
Can't events have a dedicated done field, just as they have a dedicated description field?
[/quote]
Well, when you're using a dedicated descriptions field, you're actually creating an event exception. Notice how the event then has an icon with an x in it. 
It is true that event exceptions could have a special "done" field, and these could be visible in the Calendar...
Integration of these special "done" field values with the rest of IQ is not easy to do, if at all possible (same applies to the dedicated description field).
 
Creating separate items seems like a much simpler and elegant solution
 
Pierre_Admin
IQ Designer
 

Hi Pierre. 
 
As you could imagine, the calendar info is very exciting news for me. What you've outline sounds like almost anything anyone could want in that dept. 
 
I say 'almost' b/c I think it's a bit optimistic to expect a wide swath of people to know how to use the formula syntax to set filters/data parsing; a system that runs throughout InfoQube.
 
I'd be very interested in your thoughts on this. 
 
Maybe your target market is comfortable with that sort of thing & I should shut up about it. 
 
But that's my .02
 
Best,
 
Jan Rifkinson
Ridgefield CT USA

Pierre_Admin

2016/09/02 09:27

In reply to by jan_rifkinson

Hi Jan,
 
It's good to see that you're still monitoring the IQ community website !  I hope all is well for you.
 
>I say 'almost' b/c I think it's a bit optimistic to expect a wide swath of people to know how to use the formula syntax to set filters/data parsing; a system that runs throughout InfoQube.
 
IQ has evolved significantly since you last used it and SQL-like syntax is less used. More user-friendly grid and column filters are generally used.
 
Pierre_Admin
IQ Designer
 

[quote]IQ will be able to display one or more calendars, each in its own tab[/quote]
 
I assume this means they will be able to be viewed separately, or the user will be able to select as many as they desire and view together them as one calendar?  That is how Outlook and Google calendar work and therefore how I'd also expect IQ to work.

Pierre_Admin

2016/09/06 21:50

In reply to by David_H

[quote=David_H]
[quote]IQ will be able to display one or more calendars, each in its own tab[/quote]
 
I assume this means they will be able to be viewed separately, or the user will be able to select as many as they desire and view together them as one calendar?[/quote]
Yes and no. What I mean is that you'll be able to have many Calendars, and in each of these, you'll select what events are displayed, based on their date fields. So you could have:
  1. Calendar 1, containing:
    • Appointments
    • Todo's
    • Google Main Calendar
  2. Calendar 2, containing:
    • Task StartDate
    • Task EndDate
    • Google Main Calendar
    • Google Wife's Calendar
 
Pierre_Admin
IQ Designer
 

Great list Pierre!! Very exciting.
I have some suggestions, but I'm in the middle of many things at the same time ... So I won't be able to gather my thoughts before a few days.
 
-
IQ geek
Windows 8.1
CPU: Intel i5 2.6ghz

I found my previous suggestions & needs, calendarwise. Some might overlap with what's described above and what's already implemented.
 
[quote=Armando]
Those features are all important to me (pretty much in order):

 
- Syncing ;-)
 
- Alarms/reminders + snooze (5/10/30/.. .min/days...)
 
- Conditional formatting (colors) for events/appointments -- or something like that. So that users don't need to hand color every event pertaining to the same project/theme/activity domain/field.
 
- Control over the time scale unit, visually. Right now, it seems that it's not possible -- it follows the font size and doesn't seem to go beyond 15min. I.E. : I'd like to be able to see bigger time slots/scale, divided in 5 min increment.
 
 
- Shortcut keys (Ctrl+X, Ctrl+C, Ctrl+V, Ctrl+E, etc.) to accomplish all basic tasks (copy/cut/paste/delete , etc. events)
 
- Keyboard navigation/event creation in the big calendar "scale"/day view . Being able to just use the keyboard. E.g.  create items just by starting to type or by pressing enter, navigate time slots using arrows, jump from one appointment to the other using tab/shift tab, delete (or ctrl+e) to delete events, F2 to edit an event, Ctrl+C/V to copy and paste, etc. Those are pretty standard navigation/editing keys.
 
- Ctrl + mouse left click ->  drag/drop to copy event(s)

- Drag drop event to specific day in the mini calendar(s)
 
- Other event coding/characterization  : busy/tentative/out of office/Free
 
 

EDIT; a few other suggestions, more "IQ specific" :
 
- Being able to see from the fields (properties pane) if an item is recurring or not, and what kind of recurrence.

- F7-F8 to move from one event to the other while properties pane is open.

- "Color" option in the calendar context menu.
 
 
[/quote]
 
I think I gave other suggestions elsewhere. Will look for them later...
 
-
IQ geek
Windows 8.1
CPU: Intel i5 2.6ghz

Bump... 
 
Any thoughts on this ? 
 
Is it not a flexible, powerful and elegant solution to integrating on-line calendars with IQ ?
 
Any foreseeable problems / limitations ?
 
Pierre_Admin
IQ Designer
 

ethanrox

2016/09/20 13:27

In reply to by Pierre_Admin

[quote=Pierre_Admin]
Bump... 
 
Any thoughts on this ? 
 
Is it not a flexible, powerful and elegant solution to integrating on-line calendars with IQ ?
 
Any foreseeable problems / limitations ?
 
Pierre_Admin
IQ Designer
 
[/quote]
 
 
Maybe a pilot ? Google Calendar sync and go from there.
 
For me personally it is much easier to tinker with something to fully understand what my own requirements are.

Armando

2016/09/20 13:10

In reply to by Pierre_Admin

[quote=Pierre_Admin]
Bump... 
 
Any thoughts on this ? 
 
Is it not a flexible, powerful and elegant solution to integrating on-line calendars with IQ ?
 
Any foreseeable problems / limitations ?
 
Pierre_Admin
IQ Designer
 
[/quote]
 
I think the Google way is probably the best bet right now. Apart from that, I made many suggestions to ease calendaring workflow (e.g. in terms of shortcuts, etc. All IQ common shortcuts should be available in calendar view)
 
Feedback on what, specifically? 
 
-
IQ geek
Windows 8.1
CPU: Intel i5 2.6ghz

Pierre_Admin

2016/09/20 13:13

In reply to by Armando

[quote=Armando]
Feedback on what, specifically? [/quote]
Well on the content of my initial post, which had as much to do with end-user features as with the underlying structure, on how to integrate IQ with on-line calendars
 
Pierre_Admin
IQ Designer
 

Armando

2016/09/20 13:24

In reply to by Pierre_Admin

[quote=Pierre_Admin]
[quote=Armando]
Feedback on what, specifically? [/quote]
Well on the content of my initial post, which had as much to do with end-user features as with the underlying structure, on how to integrate IQ with on-line calendars
 
Pierre_Admin
IQ Designer
 
[/quote]
 
Like I said, I think it's great!  : )
 
I then added some other suggestions of features I use everyday (in Outlook Calendar).

I'll have another close look at your list later tomorrow.
 
 
-
IQ geek
Windows 8.1
CPU: Intel i5 2.6ghz

This is a list of improvements I personally find necessary for InfoQube's Calendar (to be edited)
 
I. Interface/User Experience:
1. Context menu
1.1. Ability to show item in (new) Scratch Grid
1.2. Ability to set color (background/foreground)
1.3. Ability to show item in Home Grid
...
2. Calendar view
2.1. Showing durations for Unscheduled Events which are less than 1 hour in Minutes, i.e. not (0h) but 15m
...
 
3. Calendar Item Dialog
3.1. "Where" and "Description" Fields accessible from within InfoQube
 
4. Fields
4.1. ItemInCalendar field not Read-Only. If read-only then if set via Auto-Assign or else to TRUE, then actually the item being shown in the calendar (the last time I tested you HAD to go through "Show Item in Calendar" to actually display the item in the Calendar.
4.2. Dedicated background/foreground color fields
...
II. Sync...
 
 

I have a GTD like productivity feature I'd like to see that I was spoiled by on a few calendars I used years ago.  It was the ability to create a simple ideal daily schedule that functioned as a background on a calendar (and could be different for different days).  I found it incredibly useful.  As an example, it might look something like:
 
Monday
6:00 Wake
6:30 Exercise
7:00 Breakfast
8:00 Work
10:00 Work Meetings
12:00 Lunch
1:00 Work
4:00 Grocery Shopping
 
You get the idea.  It allowed you to create a daily template schedule to focus on - then you scheduled actual events over the schedule template.  If you had an assistant it also allowed them to see how you wanted your time filled up, they would know to try to schedule meetings between 10 and 12.
 
The problem is that creating these types of templates by creating actual events on a calendar doesn't work well, it causes you to fill it up with things that are meant to be a time template, not actual events, then you have to duplicate them across hundreds of days and so on, and then when you schedule actual calendar appointments, the events start conflicting with the template entries and show up side by side etc, your to-do list gets filled up with template items you don't need to track and so forth.
 
I realize this feature would not integrate with Google or Outlook and that would be fine - the background could be a function that only appeared in IQ.
 
I know this is a unique feature, but I think it's very powerful, and IQ is very unique and powerful .
 
I believe this may already be somewhat possible with what Pierre has outlined above, perhaps the only addition necessary would be to be able to mark a calendar event as a "background" event so that other calendar events would layer over them?

Armando

2016/09/22 09:26

In reply to by David_H

I use this template strategy... when I can. : )
 
[quote=David_H]
 
The problem is that creating these types of templates by creating actual events on a calendar doesn't work well, it causes you to fill it up with things that are meant to be a time template, not actual events, then you have to duplicate them across hundreds of days and so on, and then when you schedule actual calendar appointments, the events start conflicting with the template entries and show up side by side etc, your to-do list gets filled up with template items you don't need to track and so forth.
 
[/quote]
 
In Outlook, I just create other calendars, used for templates. In them I put recurring appointments (some are every week, others every day, others specific days, etc.) so the templates are reproduced everyday.
 
Then, either
1- select all needed appointments/items and ctrl+Drag Drop them in my "real" calendar (recurrence isn't copied so they become individual items, which is perfect).
2- Or just use the template calendars as a visual structure/model since they can be seen simultaneously with my real calendar, exactly side by side.
 
-
IQ geek
Windows 8.1
CPU: Intel i5 2.6ghz

Thanks Armando, I do the same, I have a dedicated calendar for it in Outlook.  It's just a visual preference for the background method, it reduces visual noise and increases focus.  Here's a screenshot of one of the programs that did it, I really liked the way the background events were transparent and the actual scheduled items solid over them.
 

Armando

2016/09/22 15:15

In reply to by David_H

[quote=David_H]
Thanks Armando, I do the same, I have a dedicated calendar for it in Outlook.  It's just a visual preference for the background method, it reduces visual noise and increases focus.  Here's a screenshot of one of the programs that did it, I really liked the way the background events were transparent and the actual scheduled items solid over them.
 
[/quote]
 
I tried Achieve Planner, a along while ago, just before choosing IQ (seems like we followed a similar path/quest).
 
I like this schedule template idea too.

(Just mentioned the Outlook workaround for it what it is... a workaround.)
 
-
IQ geek
Windows 8.1
CPU: Intel i5 2.6ghz

Would it be possible to have the start and end time of an appointment populate the duration field for the item (could be an option under tools>options to turn on or off)?  I'd find this incredibly useful for time tracking.
 
Edit: I see there is a field named ItemDuration that already calculates the length of the appointment.  Could I have that field give precedence to summing the appointment start and end time, but if that is not present, have it sum the "start time" and "end time" fields I use for time tracking?

Currently it is impossible to read the task if there are several task at the same time. Multi-line items can also not be read. Line this:
It would be great if the time-scale would expand and items stacked on top of each other (like in Ecco) so that these items could be read.

Pierre_Admin

2016/11/01 18:04

In reply to by viking

You can show the appointment field in a grid and use the Date Filter to do that something like Ecco has
Also, the Properties pane / Notifications pane are always there to help you
 
The Calendar is an Outlook / Google calendar look-a-like, so this is how it is displayed
 
Pierre_Admin
IQ Designer
 

Pierre_Admin

2016/11/02 10:57

In reply to by viking

[quote=viking]
Currently it is impossible to read the task if there are several task at the same time.
[/quote]
You can click on the time scale to toggle its display, tasks would then be shown from top to bottom.
Also, why are you using Scheduled events for tasks ? If you used Unscheduled events, they would always be shown at the top of the display.
 
HTH !
 
Pierre_Admin
IQ Designer
 

Hi IQ Users !
 
For the next month, resuming work on the Calendar, following this plan.
 
Wish me luck lol !
 
 
Pierre_Admin
IQ Designer