Giter Site home page Giter Site logo

gcal-boostlingo-scheduler's Introduction

Google Calendar/Boostlingo extension

Welcome! This extension aims to share data from your Boostlingo account back to your Google Calendar.

Installation

After installing the extension, you should see its icon in the Chrome toolbar, next to the URL bar. (If you do not, you may need to click the puzzle piece to show the extensions list.)

The popup when you click the menu has a form to log in to Boostlingo. Log in is good for 30 days, and once you have, the form will include the date/time at which your log in will expire.

Information

Currently, 3 types of information are supported:

Icons

Each calendar event now has an icon indicating boostlingo status; the icon is also a clickable link to the boostlingo job.

Status Icon
No Boostlingo job
No interpreters scheduled yet
Interpreters scheduled
Job completed

Interpreter name(s)

For a calendar event with interpreters, mouse over the icon to see their name(s):

Optional warnings

Configurable via a checkbox in the extension icon's popup menu.

Zoom Link Mismatch Warning

Toggles off and on; defaults to off.

When checked, if the Boostlingo job doesn't contain the same Zoom link as the Google Calendar event, clicking on the event will show a warning:

Caveats

This extension does not (currently) create or update any data in Boostlingo or Google Calendar; its intended use is "my job created a meeting in Google Calendar, I requested interpreters in Boostlingo, now I see info about both in Google Calendar". (From an interpreter perspective, you'll need to create your own Google Calendar events for each job.)

gcal-boostlingo-scheduler's People

Contributors

ismith avatar

Watchers

 avatar

gcal-boostlingo-scheduler's Issues

Sentry

It'd be fab to get sentry errors hooked up - errors on undefined, null, etc in particular are a thing I suspect will take some ironing out. But I want to make sure this doesn't leak PII to me. Need to look at options there, whether it's sanitizing strings or making it opt-in.

Before selector is semantically wrong

Current selector is "div[data-eventid=" + node.dataset.eventid + "][data-eventchip] div div span:first-of-type ::before"; if I do :first-of-type::before, I get two icons. WTF. Works visually, so, for now I'm ignoring and just filing this issue.

2021-09-07_16-35

Google calendar template links

It's possible to pre-fill a gcal event creation form using a link like https://www.google.com/calendar/render?action=TEMPLATE&text=Title&dates=20190227/20190228 (see: https://www.formsite.com/blog/google-calendar-links/).

When receiving events from Boostlingo for which there are no matching google calendar events, offer a set of links to click to easily create such gcal events.

Example use case: user is an interpreter who has accepted a job, and wants gcal events created for them.

(Alternative: yes, there's a google calendar API, which could just create events as needed w/o human interaction. I kind of prefer the link approach, because then we don't have to bother with another set of auth creds [google oauth]. But if a contributor feels inclined, I might accept it.)

Create boostlingo event from google calendar

It'd be a really smooth experience if I could:

  • see an event on my calendar with no boostlingo job yet (icon is an empty circle)
  • click the icon
  • get taken to the boostlingo appointment creation form, with some fields filled in

I think the obvious field to fill in is the date+time (start+end); however, that's where this becomes tricky and I don't have an answer yet. With javascript, angular.element(document.querySelector(...)).val("new value").trigger("change") is approximately how you set a form field value. ("Approximately" - I forget if .val(...) and .trigger(...) chain or must be called separately.) The id of the element that's a problem is #assignementDate (sic) - this has a handler attached to it that pops up a datepicker. Unfortunately, that keeps it from displaying the changed value - you can use eg "2020-02-02T00:00:00Z" as the new value, and nothing shows up in the field! Other fields, this works fine for.

Might be there's an angular-ish way to work around this, I don't yet know.

IMO that alone - date, start_time, end_time getting populated would be a significant win in my UX. But I could also envision populating the boostlingo description or private notes from the google calendar description, and then let the deaf client edit as they wish. (Or, perhaps as a configurable option, get the zoom/etc link from the google event and put it in.)

Regardless, I think further implementation isn't very productive unless a solve can be found for that datepicker issue.

sendMessage callbacks

I use an explicit request/response pattern, with a sendMessage on each side, because I can't figure out how to make the callbacks work. This'd be nice to clean up, just not worth blocking progress at this time.

fontawesome

proposal:

loading - spinner
null - circle
awaiting schedule - pause-circle
scheduled - american-sign-language-interpreting
complete - archive

Refresh data on a timer?

There's a mutation observer that calls getEvents and refreshes the boostlingo data when elements in the UI change. This might actually suffice as-is; I'm not sure if mouseovers, etc, suffice to trigger it. If not, window.setInterval(getEvents, 5*60*1000) to refresh every 5m?

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.