Git Product home page Git Product logo

maxpatiiuk / calendar-plus Goto Github PK

View Code? Open in Web Editor NEW
5.0 5.0 1.0 9.85 MB

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

CSS 10.98% JavaScript 2.06% TypeScript 81.27% HTML 5.69%

calendar-plus's Introduction

calendar-plus's People

Contributors

dependabot[bot] avatar durbatuluk1701 avatar jakeangus avatar jetsemrick avatar maxpatiiuk avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

ratewar

calendar-plus's Issues

Extension is broken if page is loaded with sidebar collapsed

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

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

Add an option to ignore all-day 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 `manifest.json`

Add and populate the manifest.json file to make the project be recognized as a Chrome Extension

Make the widget grid customizable

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

Add documentation for getting React DevTools to work

Add ability to set goals

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

Add support for "customday" view

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

Integrate with Google Calendar APIs

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 a badge in Google Calendar header

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

Make reloading extension easier

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

Listen for extension icon click

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' });
});

Sync the list of visible calendars

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.

Detect first day of the week

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

Detect selected time zone

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

Listen to day/week/month/year changes

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

Display a stacked area chart

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

Overlay should not hide the side bar

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.

Fix test depending on Daylight Savings Time

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

Add a way to "ghost" an event

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)

Improve Caching Strategy

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

Add oAuth integration

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 selector

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.