Initial commit: Kimai TMS

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
This commit is contained in:
TMS
2026-06-18 21:20:26 +00:00
commit eb299c9131
1099 changed files with 359817 additions and 0 deletions

149
js/func.js Normal file
View File

@@ -0,0 +1,149 @@
/**
* 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);
}
}
}
//------------------------------------------------------------------------------------------