<feed xmlns='http://www.w3.org/2005/Atom'>
<title>chrome-timetasker/timetasker.js, branch v0.0.2</title>
<subtitle>A Google Chrome extension that auto-fills the Time Task time sheet form</subtitle>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/chrome-timetasker/'/>
<entry>
<title>timetasker.js: Fix the "billable" checkbox auto-fill</title>
<updated>2017-03-19T23:50:08+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2017-03-19T23:50:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/chrome-timetasker/commit/?id=da8f3df2fa59dbc836bb1691509c5c8bf385f89b'/>
<id>da8f3df2fa59dbc836bb1691509c5c8bf385f89b</id>
<content type='text'>
The checkbox wasn't getting filled in correctly. By some overzealous and
uncaught copy-pasting, I had wrapped the field in the function to
populate a select box. Since this is a checkbox, we want to use its
`.checked` property instead.

Use a timeout also. By default Time Task marks Billable as true/checked.
If the script unchecks the box and then the AJAX select box population
occurs, the check box re-checks itself. Adding a timeout allows it to
remain unchecked if you've set that in the user options.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The checkbox wasn't getting filled in correctly. By some overzealous and
uncaught copy-pasting, I had wrapped the field in the function to
populate a select box. Since this is a checkbox, we want to use its
`.checked` property instead.

Use a timeout also. By default Time Task marks Billable as true/checked.
If the script unchecks the box and then the AJAX select box population
occurs, the check box re-checks itself. Adding a timeout allows it to
remain unchecked if you've set that in the user options.
</pre>
</div>
</content>
</entry>
<entry>
<title>timetasker.js: Add a comment around the date auto-filler</title>
<updated>2017-03-19T23:41:52+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2017-03-19T23:41:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/chrome-timetasker/commit/?id=9a489a61c48c0a932f3b6a7273800428e2dde92d'/>
<id>9a489a61c48c0a932f3b6a7273800428e2dde92d</id>
<content type='text'>
Make it a little clearer what's going on in the date picker event
handler.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Make it a little clearer what's going on in the date picker event
handler.
</pre>
</div>
</content>
</entry>
<entry>
<title>timetasker.js: Load fields from options</title>
<updated>2017-03-18T20:19:16+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2017-03-18T20:19:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/chrome-timetasker/commit/?id=163d73a6df69517a28559390d293f7a82449e852'/>
<id>163d73a6df69517a28559390d293f7a82449e852</id>
<content type='text'>
Query the Chrome storage API to get user options for time entry
fields. Replace our hard-coded values with user-entered ones.

This allows the extension to work for others without requiring
modification of the source code.

In order to be able to pull the options, I had to move the main
extension code into a callback function that can be passed to
`chrome.storage.sync.get`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Query the Chrome storage API to get user options for time entry
fields. Replace our hard-coded values with user-entered ones.

This allows the extension to work for others without requiring
modification of the source code.

In order to be able to pull the options, I had to move the main
extension code into a callback function that can be passed to
`chrome.storage.sync.get`.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix typo in `populate_select` function name</title>
<updated>2017-03-18T16:19:45+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2017-03-18T16:19:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/chrome-timetasker/commit/?id=b3df24818c5e9d8d53d5104a5e1c90b872805960'/>
<id>b3df24818c5e9d8d53d5104a5e1c90b872805960</id>
<content type='text'>
That's what I get for doing this while sick.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
That's what I get for doing this while sick.
</pre>
</div>
</content>
</entry>
<entry>
<title>Auto-fill date fields</title>
<updated>2017-03-18T16:09:05+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2017-03-18T16:09:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/chrome-timetasker/commit/?id=f8c5cbed610100851d83a28194dce192dcc065ca'/>
<id>f8c5cbed610100851d83a28194dce192dcc065ca</id>
<content type='text'>
Surround the date event and time entry duplication in a timeout. We
need to wait for the select boxes to be filled in before we can
duplicate the time entries, so wait a conservative amount of time to
ensure the first entry is filled in before duplicating it.

The date event listener is also part of this timeout as it fires an
event on load without user interaction. We don't care about that
initial event.

Our date listener will listen for changes to the first time entry's
date field and automatically fill in the four duplicated entries with
subsequent dates increasing by 1 for each entry. This allows us to
select a Monday for the first time entry and have the rest of the week
automatically filled in for us.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Surround the date event and time entry duplication in a timeout. We
need to wait for the select boxes to be filled in before we can
duplicate the time entries, so wait a conservative amount of time to
ensure the first entry is filled in before duplicating it.

The date event listener is also part of this timeout as it fires an
event on load without user interaction. We don't care about that
initial event.

Our date listener will listen for changes to the first time entry's
date field and automatically fill in the four duplicated entries with
subsequent dates increasing by 1 for each entry. This allows us to
select a Monday for the first time entry and have the rest of the week
automatically filled in for us.
</pre>
</div>
</content>
</entry>
<entry>
<title>Duplicate the first time entry</title>
<updated>2017-03-18T15:21:35+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2017-03-18T15:21:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/chrome-timetasker/commit/?id=ec03d0a3d28af00d486b58e5f965a5b3edd80a10'/>
<id>ec03d0a3d28af00d486b58e5f965a5b3edd80a10</id>
<content type='text'>
Create four copies of the first entry to fill out a five day week.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Create four copies of the first entry to fill out a five day week.
</pre>
</div>
</content>
</entry>
<entry>
<title>Re-add timeouts around the Task and Work Type select boxes</title>
<updated>2017-03-18T15:13:00+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2017-03-18T15:13:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/chrome-timetasker/commit/?id=3153bffa94cecebb7ae0cd06d3eff6b7091080d4'/>
<id>3153bffa94cecebb7ae0cd06d3eff6b7091080d4</id>
<content type='text'>
Doing so properly fills in these boxes, leaving them time to populate
their options asynchronously.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Doing so properly fills in these boxes, leaving them time to populate
their options asynchronously.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fire change event on project select box</title>
<updated>2017-03-18T15:08:32+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2017-03-18T15:08:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/chrome-timetasker/commit/?id=d2fc72cd520a1a505ae710279603506b16fd9a09'/>
<id>d2fc72cd520a1a505ae710279603506b16fd9a09</id>
<content type='text'>
Remove our timeouts for the moment to focus on getting the Module
select box populated.

Fire a change event on the Project select box using the technique
and code described here:
http://stackoverflow.com/questions/2856513/how-can-i-trigger-an-onchange-event-manually/2856602#2856602
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove our timeouts for the moment to focus on getting the Module
select box populated.

Fire a change event on the Project select box using the technique
and code described here:
http://stackoverflow.com/questions/2856513/how-can-i-trigger-an-onchange-event-manually/2856602#2856602
</pre>
</div>
</content>
</entry>
<entry>
<title>Fill in the time field correctly</title>
<updated>2017-03-18T14:51:55+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2017-03-18T14:51:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/chrome-timetasker/commit/?id=4ce9ebcf4f3339e55670d98434e8b6f1f4f8d9ad'/>
<id>4ce9ebcf4f3339e55670d98434e8b6f1f4f8d9ad</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add initial timetasker.js</title>
<updated>2017-03-18T14:48:21+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2017-03-18T14:48:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/chrome-timetasker/commit/?id=93518f18ff1a12a660b25596be3832f5d94c3fd5'/>
<id>93518f18ff1a12a660b25596be3832f5d94c3fd5</id>
<content type='text'>
Rough approach at filling in the first row in the form. Trouble is
that the "module" select box doesn't get populated until the
"project" select box receives click/selection event.

Will need to figure out a way around that.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Rough approach at filling in the first row in the form. Trouble is
that the "module" select box doesn't get populated until the
"project" select box receives click/selection event.

Will need to figure out a way around that.
</pre>
</div>
</content>
</entry>
</feed>
