I'm Max.
LinkedIn โข Twitter โข Instagram
Find beauty in simplicity
A browser extension for Google Calendar that provides insights into where your time goes. Includes power user tools, data export and customization
Home Page: https://chrome.google.com/webstore/detail/calendar-plus/kgbbebdcmdgkbopcffmpgkgcmcoomhmh
License: MIT License
Describe the bug
The button to launch the Calendar Plus overlay does not appear on the default landing page "https://calendar.google.com/calendar/u/0/r" but does on other pages
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The Calendar Plus overlay launching button should appear on the landing page
This will improve user experience and enhance accessibility compliance
There are some unique challenges involved in fetching events for the entire year
If the page is loaded with sidebar collapsed (Google Calendar remembers if you collapsed it in previous session), then Calendar Plus extension fails to read the list of currently visible calendars, leading it to treat all calendars as disabled.
Should fix this by caching the list of calendars that were visible last time and updating that list once the sidebar is expanded again
Add a button to go to next/previous week.
Also, support N and P keyboard shortcuts (which are already used by Google Calendar). Make sure the week displayed in the extension and in Google Calendar is synchronized
This is useful for power users who are creating a lot of events
Currently, an all-day event is treated as an event that spans entire days, and thus contributes 24 hours to the plots.
However, this can easily skew the statistics.
There should be an option to ignore all-day events when plotting the events.
Note, changing the value of this pref would require wiping the events cache
Add and populate the manifest.json file to make the project be recognized as a Chrome Extension
Make the widget grid customizable. Allow changing the size of each widget, removing widgets and adding widgets. Make sure everything is keyboard accessible and screen reader accessible
This would be useful for power users who would save a lot of time with a keyboard shortcut rather than have to use the mouse to open the overlay
chrome
extensions APIs for the list of possible actions and eventsReact DevTools Extension does not work for debugging Chrome Extension out of the box.
Need to add information about that to the documentation
Calculate the current progress toward each goal the user set
Add ability to set, edit and remove goals for total number of hours of events in a given calendar. Goals should be synced with Google Extension Storage API
Google Calendar has one user-customizable view that can be set to display X days at once. The extension should detect the preferences for that view.
Currently, the "Calendar Plus" button just disappears when "customday" view is selected
Fetch events for current day/week/month.
Some sort of context store to cache the information (going to next/previous page back and forth should not re-fresh the same data)
LIsten to updates in some way (maybe wipe the cache when the overlay is closed, or maybe listen for all changes)
Display the progress toward each goal in a badge in the google calendar header. Piggy back on the colors of each calendar when displaying the badge. Clicking on the badge would open the overlay
Allow exporting data from the stacked area chart as a JSON or CSV
After each webpack rebuild, you need to go to the "Extensions" page in Google Chrome and press the "Update" button to reload the extension and see the newest changes.
There should be a an easier way
When user click on our extension in the list of extensions some action should happen.
Could possibly switch to the calendar tab, or open a new page by adding code like this to the Background/index.ts
file:
chrome.action.onClicked.addListener(function () {
chrome.tabs.create({ url: './src/public/background.html' });
});
Users can enable/disable calendars by clicking on them on the sidebar. The plugin should intercept that action somehow to keep the list of visible calendars synchronized.
Currently, the extension assumes Sunday is the first day of the week.
This is not always the case. User can customize this in Calendar settings. The extension should piggy-back on that setting
For UI and behavior customization. Also, would improve accessibility
Virtual calendars can be defined now (#86).
Next, need to make Doughnut Chart display the virtual calendars
Currently, the plugin assumes that Google Calendar's time zone matched the system time zone.
That is not always the case as user can change Google Calendar's time zone independently
Integrate with Google Drive API so that extension can store it's data there
Docs need to be made more clear for work enviornment setup
When user changes the view to day/week/month/year, or goes to previous/next week, the extension should listen to that and react accordingly.
Since the controls in the header are rendered by Google Calendar, clicking on them should still trigger the default action, we just need to synchronize the state of the Google Calendar with the state of our extension
See #106
Once a keyboard shortcut is added, it needs to be customizable to improve usability and to be compliant with the accessibility standards
Display a stacked area chart in a widget when in week view. The chart should show the daily time spent on events from each calendar
The sidebar should probably still be visible while the overlay is open.
The sidebar has useful features like a mini-calendar and the ability to change the visibility of calendars.
Also, I noticed bugs with sidebar not re-rendering properly after overlay is closed.
The test in /src/src/tests/tests/globalSetup.test.ts depends on whether or not we are currently observing daylight savings time.
This test should be resistant to changes in daylight savings time while still in the same location
Need to add a keyboard shortcut for marking an event as "ghosted".
Ghosted events are rendered as semi-transparent and are not interactive (thus preventing accidental clicks)
Changing the calendar view between week/day/month/... closes the overlay. It shouldn't
Add a github-bot that comments the current code coverage percentage on each Pull Request
Display the progress toward each goal in a widget in the dashboard
Clicking the Esc
button should close the overlay
In #80 a cache layer was added for computed event durations
However, we need to make caching smarter. For one, caching must be disabled for events in the future, as future events are likely to change (perhaps, the stale-while-refresh strategy could be used)
Also, there should be button to explicitly recompute the durations for current view (day, week or month) (see #125)
Ideally, we should detect which events changed and recompute only those, but that is a bit out of scope at the moment due to complexity involved
Let user set rules that determine how to subdivide a calendar (i.e, create a virtual calendar for all events in "KU Homework" calendar that begin with "EECS 665")
To generate human-friendly documentation
Need to group data by month, rather than show each day as a separate column
Add an oAuth integration so that the extension can get access to Google APIs on the user's behalf
Add a day/week/month/year selection option to the header of the overlay. Changing the view mode should also change the view mode in the Google Calendar behind the extension
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.