Giter Site home page Giter Site logo

openair-reborn's Introduction

OpenAir Reborn!

A Chrome extension that converts OpenAir's clicky clicky time tracking grid into a nice, keyboard-powered, Toggl-esque interface.

Installation

Download it from the Chrome Webstore.

How to contribute

Don't be scared! Setup only takes 2 minutes.

Step 1: Download and install dependencies

  1. Fork this repo and clone your fork locally.
  2. Open up the root directory in a terminal
  3. Run npm install to install the node dependencies, such as grunt and bower
  4. Run bower install to install the bower components

Step 2: Enable the extension

  1. Disable the Webstore version of the extension if you have it enabled.
  2. Open up chrome://extensions and check "Developer mode".
  3. Click "Load unpacked extension" and browse to the app/ directory to install it.
  4. The extension should be running now. Reload an OpenAir timesheet to confirm.

Step 3: Start developing

  1. Run grunt debug.
  2. Edit some code. The extension itself should reload automatically (thanks Yeoman!), and SCSS changes should be auto-compiled to CSS and applied to the page without reloading, but you still have to reload the OpenAir tab to make it pick up any JS changes.
  3. When you're done with your changes, push them to your fork and create a pull request for them.
  4. You can also run grunt build at any time to bump the manifest version and generate a Webstore compatible zip file for upload.

openair-reborn's People

Contributors

ckoppenhaver avatar crittermike avatar evanlovely avatar hstidsen avatar jacepp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openair-reborn's Issues

Adding/editing time in the OA grid directly doesn't populate notes correctly on the OAR time list

This is because OpenAir makes it easy for us to fetch notes on initial load (it passes in a nice little JSON dump in a script tag), but very difficult to fetch notes added after load (since those are just stored in JS state which is mind-numbingly hard for us to break into from the outside).

If this ends up causing people issues instead of just being an edge case that no one notices, we can look into programmatically triggering a tooltip on the notes to grab the info out of there, or possibly even triggering the edit form and using .val() on the textarea.

UX: Auto-scroll on edit

When you click on the edit icon for a time entry, it's not obvious that you need to scroll to the top to see the edit form, especially on forms that have lots of time entries already. I think this would be best solved by having the page scroll to the top when you click the edit icon.

Does not work for timesheet weeks that start on Sunday, rather than Monday

I love this freaking extension, really, truly, honestly, I do, but I am going to kick babies if this thing screws up my entries again.

Just for kicks, I checked out what day 7/14/2014 was (from the extension screenshot) and sure enough, it was Monday.

I can't get my company to change the way the weeks are in OA, and try as I might, I cannot figure out how to fix it in the code. I've looked at every last file, poured over every last detail, and it still eludes me.

PLEASE fix this so that it's flexible about the week starting day. I will buy you beer, I will bring you hookers and blackjack. Just help me.

Timers should keep running if the browser/tab is closed

This could be done by putting start time into localStorage when a timer is started, and deleting it when stopped, so that when the page is first loaded, if any tasks/times exist in localStorage, we know that that's an actively running timer, and should preset it with the correct amount of time and start it.

Empty timesheet edit page

The timesheet is empty of form elements or time records, and the preview button is missing to disable OpenAir Reborn. JS Console is empty.

Empty Edit Timesheet Page

Include some sort of "Commonly used projects/tasks" quick links to pre-fill the select boxes

Most people spend the vast majority of their time on 3 or so projects/tasks, so making them select the project/task each time for them is a waste.

Maybe include a "quick-pick" list of projects/tasks under the select boxes and clicking one of them will pre-fill the select boxes, based on the top 3 tasks from the past week or something? Maybe save that info in localstorage or chrome.settings.sync?

Or maybe just have the top 3 most common at the top of the select list, and the rest underneath it?

Time descriptions with only numbers break OAR after saving the page

  1. Enter a time entry with a number as the only text in the description, such as "1234"
  2. Save the timesheet
  3. After the page reloads, the timesheet doesn't load, and you also can't switch to the original time grid to remove that entry

Looks like when parsing the timesheet to populate the OAR listing, we need to cast to string.

Day selection widget should present all options

Right now the options in selecting a day include focusing on the widget and typing, or focusing on the widget and selecting a day option. However, this is a case where their are finite options. Maybe instead of this, having something more like styled radio buttons would work?

Su M T W Th F Sa

UX: Auto-rounding of hours

With the timers, it would be nice if there was a way to round the hours to 15-minute increments automatically.

Please fill out all fields note

Hi - After entering timesheet hours and I hit 'add' I receive a note that reads "Please fill out all fields before submitting form". All fields are filled out (as far as I can tell). Is there a fix for it?

Notes not added correctly (proxied as a different user on a previous timesheet)

Setup: Chrome 36.0.1985.125 on Mac 10.9.4. Proxied as a different user. Working on a previously-approved, but since re-opened timesheet (about a month old).

Actions:

  • Click edit on the entry.
  • Change the task selection.
  • Click add.
  • The original entry now is updated to the new task and seems to have a valid note.
  • Click Save.
  • ERROR: Notes are required for the XYZ project
  • The original entry now has no note.

Alternative path:

  • Click Preview.
  • Because the original project/task has other entries on other days, there is still a line for it in the grid.
  • There is a second line with the original project/task and no hours or notes.
  • There is a new line with the project and the new task. The hours are there, but no note.

Starting a timer with a new entry leaves it stuck at zero

I am finding the timer mode (hitting start when a new entry does not have "Hours" filled in), creates a new entry at zero without any incrementation. I find it necessary to pause and restart the timer with the play/pause button in the entry operations links.
This has been the case since I first installed Reborn.

Console Output

TypeError: Cannot read property 'start' of undefined
    at chrome-extension://ajmdofceiiflcdlclkicifcnccdgkcmb/scripts/timeentry.js:1:727
    at Array.forEach (native)
    at Object.f [as forEach] (chrome-extension://ajmdofceiiflcdlclkicifcnccdgkcmb/bower_components/angular/angular.js:1:1006)
    at k.a.addTime (chrome-extension://ajmdofceiiflcdlclkicifcnccdgkcmb/scripts/timeentry.js:1:260)
    at chrome-extension://ajmdofceiiflcdlclkicifcnccdgkcmb/bower_components/angular/angular.js:3:29629
    at chrome-extension://ajmdofceiiflcdlclkicifcnccdgkcmb/bower_components/angular/angular.js:4:4819
    at k.$eval (chrome-extension://ajmdofceiiflcdlclkicifcnccdgkcmb/bower_components/angular/angular.js:2:25863)
    at k.$apply (chrome-extension://ajmdofceiiflcdlclkicifcnccdgkcmb/bower_components/angular/angular.js:2:26141)
    at HTMLInputElement.<anonymous> (chrome-extension://ajmdofceiiflcdlclkicifcnccdgkcmb/bower_components/angular/angular.js:4:4801)
    at HTMLInputElement._.event.dispatch (chrome-extension://ajmdofceiiflcdlclkicifcnccdgkcmb/bower_components/jquery/dist/jquery.js:2:14424) 

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.