Kimai time management system (PHP 5.6 / MySQL) with custom extensions: - Budget tracking (ki_budget) - Change request form (ki_changerequest) - Invoice generation (ki_invoice) - Expense tracking (ki_expenses) - Flexi time (ki_flexitime) - Export, admin panel, timesheets, tasks, summary Database: ~900K time entries, 2,000+ users, 439 projects. Config: includes/autoconf.php — localhost/kimai/kimai
150 lines
4.5 KiB
JavaScript
150 lines
4.5 KiB
JavaScript
/**
|
|
* This file is part of
|
|
* Kimai - Open Source Time Tracking // http://www.kimai.org
|
|
* (c) 2006-2009 Kimai-Development-Team
|
|
*
|
|
* Kimai is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; Version 3, 29 June 2007
|
|
*
|
|
* Kimai is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with Kimai; If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
/**
|
|
* Javascript functions used in the timesheet extension.
|
|
*/
|
|
|
|
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
// pastes the current date and time in the outPoint field of the
|
|
// change dialog for timesheet entries
|
|
//
|
|
// $tpl->assign('pasteValue', date("d.m.Y - H:i:s",$kga['now']));
|
|
//
|
|
function pasteNow(value) {
|
|
|
|
now = new Date();
|
|
|
|
H = now.getHours();
|
|
i = now.getMinutes();
|
|
s = now.getSeconds();
|
|
|
|
if (H<10) H = "0"+H;
|
|
if (i<10) i = "0"+i;
|
|
if (s<10) s = "0"+s;
|
|
|
|
time = H + ":" + i + ":" + s;
|
|
|
|
$("#edit_out_time").val(time);
|
|
|
|
$("#select_out_day").datepicker( "setDate" , now );
|
|
}
|
|
|
|
//
|
|
// Thanks to Tijl Vercaemer for the time duration field !
|
|
//
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
// Returns a Date object, based on 2 strings
|
|
//
|
|
function mn_getDateFromStrings(dateStr) {
|
|
result = new Date();
|
|
dateArray=dateStr.split(/\./);
|
|
if(dateArray.length != 3) {
|
|
return null;
|
|
}
|
|
result.setFullYear(dateArray[2],dateArray[1]-1,dateArray[0]);
|
|
return result;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
// Gets the begin Date, while editing a timesheet record
|
|
//
|
|
function mn_getStartDate() {
|
|
return mn_getDateFromStrings($("#select_in_day").val());
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
// Gets the end Date, while editing a timesheet record
|
|
//
|
|
function mn_getEndDate() {
|
|
return mn_getDateFromStrings($("#select_out_day").val());
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
// Change the end time field, based on the duration, while editing a timesheet record
|
|
//
|
|
function mn_durationToTime() {
|
|
end = mn_getEndDate();
|
|
durationArray=$("#edit_duration").val().split(/:|\./);
|
|
if(end!=null && durationArray.length > 0 && durationArray.length < 4) {
|
|
secs = durationArray[0]*3600;
|
|
if(durationArray.length > 1)
|
|
secs += (durationArray[1]*60);
|
|
if(durationArray.length > 2)
|
|
secs += parseInt(durationArray[2]);
|
|
begin = new Date();
|
|
begin.setTime(end.getTime()-(secs*1000));
|
|
|
|
|
|
var H = begin.getHours();
|
|
var i = begin.getMinutes();
|
|
var s = begin.getSeconds();
|
|
|
|
if (H<10) H = "0"+H;
|
|
if (i<10) i = "0"+i;
|
|
if (s<10) s = "0"+s;
|
|
|
|
$("#edit_in_time").val(H + ":" + i + ":" + s);
|
|
|
|
var d = begin.getDate();
|
|
var m = begin.getMonth() + 1;
|
|
var y = begin.getFullYear();
|
|
if (d<10) d = "0"+d;
|
|
if (m<10) m = "0"+m;
|
|
|
|
$("#select_in_day").val(d + "." + m + "." + y);
|
|
}
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
// Change the duration field, based on the time, while editing a timesheet record
|
|
//
|
|
function mn_timeToDuration() {
|
|
begin = mn_getStartDate();
|
|
end = mn_getEndDate();
|
|
if(begin==null || end==null) {
|
|
$("#edit_duration").val("");
|
|
} else {
|
|
beginSecs = Math.floor(begin.getTime() / 1000);
|
|
endSecs = Math.floor(end.getTime() / 1000);
|
|
durationSecs = endSecs - beginSecs;
|
|
if(durationSecs<0) {
|
|
$("#edit_duration").val("");
|
|
} else {
|
|
secs = durationSecs%60;
|
|
if(secs<10)
|
|
secs="0"+secs;
|
|
durationSecs = Math.floor(durationSecs/60);
|
|
mins = durationSecs%60;
|
|
if(mins<10)
|
|
mins="0"+mins;
|
|
hours = Math.floor(durationSecs / 60);
|
|
if(hours<10)
|
|
hours="0"+hours;
|
|
$("#edit_duration").val(hours+":"+mins+":"+secs);
|
|
}
|
|
}
|
|
}
|
|
//------------------------------------------------------------------------------------------
|
|
|
|
|
|
|