// ==UserScript==
// @name WhenIWork True Total Worked
// @namespace danielrayjones
// @description Adds the Total hours worked, including today
// @include https://app.wheniwork.com/payroll/
// @version 0.2
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js
// ==/UserScript==
/* global $ */
$(document).ready(function() {
  'use strict';
  // Filter out this event from iframes
  if (!this.body.classList.contains("controller-payroll")) {
    return;
  }
  let currentHourSum = 0;
  function updateHours(hours) {
    currentHourSum = hours;
    let weekPlusDayTotal = $('#week-plus-day-total');
    let span = `Total with Today${hours}`
    if (weekPlusDayTotal.length === 0) {
      $('#header-summary-container .stats').append(
        `
`
      );
    } else {
      weekPlusDayTotal.html(span);
    }
    // In case this ran while the page was loading, let's try again in two seconds.
    setTimeout(addHours, 2000);
  }
  function addHours() {
    let hourSum = 0;
    $('.times-list .col-worked .text-input[data-total]').each(function () {
      hourSum += parseFloat($(this).text()) || 0;
    });
    // Adjust for floating point errors
    hourSum = Math.round(hourSum*100)/100;
    console.log(`got ${hourSum} hours`);
    // AJAX request hasn't finished yet. Let's wait some more.
    if (currentHourSum === 0 && hourSum === 0) return setTimeout(addHours, 2000);
    if (currentHourSum !== hourSum && hourSum > 0) {
      updateHours(hourSum);
    }
  }
  // The hours don't show up until after an AJAX request completes.
  // Let's wait two seconds for it to finish.
  setTimeout(addHours, 2000);
});