File: D:/HostingSpaces/SBogers10/hours.komma.pro/wwwroot/js/hours-page.js
/* -------------------- Event handlers -------------------- */
//make new url by chosen date
$(document).off( "change", "#hourOverview #datepicker").on( "change", "#hourOverview #datepicker", function () {
changeDate($(this).val());
});
//make new url by chosen user
$(document).off( "change", "#selectUser").on( "change", "#selectUser", function () {
//goPjax(updateQueryString('user', $(this).val(), null));
changeUser(undefined, undefined, $(this).val());
});
//make new url by chosen project
$(document).off( "change", ".selectProject.selectpicker").on( "change", ".selectProject.selectpicker", function() {
var projectID = $(".tab-content .active select.selectProject").val();
if(projectID) {
$.ajax({
type: 'get',
url: '/getProgressBarForProject',
data: {
'id': projectID
},
success: function (data) {
$(".project_progress_bar").html(data);
//$.each($("#project_progress_bar"), function(i, progress_bar){ $(progress_bar).html(data); });
},
error: function( jqXHR, textStatus, errorThrown ) {
checkAuthentication(jqXHR);
$(".error-container").html('<div class="alert alert-danger" role="alert">' + errorThrown + '</div>');
}
});
refreshSubprojectSelect();
}
});
//make new url by chosen subproject
$(document).off( "change", ".active .selectSubproject.selectpicker").on( "change", ".active .selectSubproject.selectpicker", function () {
console.log('select.selectSubproject change');
var subProjectID = $(".active select.selectSubproject").val();
var isExpenses = $(".tab-content .active").attr("id") === 'expense'; //window.location.pathname.split('?')[0] === '/expense';
if(subProjectID) {
$.ajax({
type: 'get',
url: '/getProgressBarForSubProject',
data: {
'id': subProjectID
},
success: function (data) {
//$.each($("subproject_progress_bar"), function(i, progress_bar){ $(progress_bar).html(data); });
$(".subproject_progress_bar").html(data);
},
error: function( jqXHR, textStatus, errorThrown ) {
checkAuthentication(jqXHR);
$(".error-container").html('<div class="alert alert-danger" role="alert">' + errorThrown + '</div>');
}
});
refreshTaskSelect();
$.ajax({
type: 'get',
url: '/getExpenseTypesAndUnits',
data: {
'id': subProjectID
},
success: function (data) {
$(".error-container").html('');
fillExpenseSelect(data.expenses);
},
error: function( jqXHR, textStatus, errorThrown ) {
checkAuthentication(jqXHR);
$(".error-container").html('<div class="alert alert-danger" role="alert">' + errorThrown + '</div>');
}
});
}
});
$(document).off( "keydown", "textarea[name='description']").on( "keydown", "textarea[name='description']", function(event){
$( ".main-form-submit" ).removeAttr("disabled");
if ((event.ctrlKey || event.metaKey) && event.which == 13) {
$( ".tab-pane.active form" ).submit();
event.preventDefault();
}
});
$(document).off( "keydown", "textarea[name='internDescription']").on( "keydown", "textarea[name='internDescription']", function(event){
$( "#intern-hours-submit" ).removeAttr("disabled");
if ((event.ctrlKey || event.metaKey) && event.which == 13) {
$( "#absence-form" ).submit();
event.preventDefault();
}
});
$(document).off( "change", ".selectAbsence.selectpicker").on( "change", ".selectAbsence.selectpicker", function(){
$("#internal input[name='internHours']").removeAttr("disabled");
$("#internal input[name='internHours']").spinner( "enable" );
$("#internal input[name='internHours']").focus();
$("#internal textarea[name='internDescription']").removeAttr("disabled");
});
$(document).off( "change", "#expense #selectExpense").on( "change", "#expense #selectExpense", function () {
var optionSelected = $("option:selected", this);
var expenseUnitName = optionSelected.attr('data-unit-name');
$('#expense #expenseOrTaskLabel').text(expenseUnitName);
$('.description').removeAttr("disabled");
$('.internDescription').removeAttr("disabled");
});
$(document).off( "change", "#selectTask").on( "change", "#selectTask", function () {
$('.description').removeAttr("disabled");
$('.internDescription').removeAttr("disabled");
$("input[name='hours']").focus();
});
$(document).off( "blur", "input[type=number]").on( "blur", 'input[type=number]', function (e) {
if (this.value && this.value[0] === ".") {
this.value = '0'+this.value;
}
});
//make correct form for delete hour or expense
$(document).off( "click", ".deleteModal").on( "click", ".deleteModal", function () {
var targetModal = $(this).attr('data-target');
var target = $(targetModal).find('.nameholder').html();
var id = $(targetModal).find('.idholder').val();
//console.log('deleteModal clicked ' + target + " => " +id);
switch(target){
case 'onkosten':
$('#delete-form').attr('action', '/expense/' + id);
$('#delete-form').attr('id', 'delete-form-onkosten-'+id);
$('button#submitButton').attr('form', 'delete-form-onkosten-'+id);
// form has a different ID in the projects show blade
// $('.projectOverview button#submitButton').attr('form', 'delete-form-onkosten-'+id);
break;
case 'verlofuren':
$('#delete-form').attr('action', '/absence/' + id);
$('#delete-form').attr('id', 'delete-form-verlofuren-'+id);
$('button#submitButton').attr('form', 'delete-form-verlofuren-'+id);
break;
case 'uren':
$('#delete-form').attr('action', '/hours/' + id);
$('#delete-form').attr('id', 'delete-form-uren-'+id);
$('button#submitButton').attr('form', 'delete-form-uren-'+id);
break;
case 'taak':
$('button#submitButton').attr('form', 'delete-form-taak-'+id);
break;
case 'taak-template':
$('button#submitButton').attr('form', 'delete-form-taak-template-'+id);
break;
case 'subproject-template':
$('button#submitButton').attr('form', 'delete-form-subproject-template-'+id);
break;
case 'project-template':
$('button#submitButton').attr('form', 'delete-form-project-template-'+id);
break;
case 'deelproject':
$('button#submitButton').attr('form', 'delete-form-deelproject-'+id);
break;
case 'projecturen':
$('button#submitButton').attr('form', 'delete-form-projecturen-'+id);
break;
case 'absence-balance':
$('button#submitButton').attr('form', 'delete-form-absence-balance-'+id);
break;
}
});
/* attach a submit handler to the form */
$(document).off( "submit", "form[id^='delete-form']").on( "submit", "form[id^='delete-form']", function(event) {
$.pjax.submit(event, pJaxContainer);
$(".modal").hide();
$('body').removeClass('modal-open');
document.body.removeAttribute("style");
$(".modal-backdrop").hide();
event.preventDefault();
});
// /* attach a submit handler to the form */
$(document).off( "submit", "#hour-form, #expense-form, #travel-form").on( "submit", "#hour-form, #expense-form, #travel-form", function(event) {
if(isFormValid($(this))) {
this.action = $(".tab-pane.active .main-form-submit").attr("formaction");
$.pjax.submit(event, pJaxContainer);
}
event.preventDefault();
return false;
});
$(document).off( "submit", "#intern-hours-form").on( "submit", "#intern-hours-form", function(event) {
if(isFormValid($("#intern-hours-form")) ) {
this.action = $(".active #intern-hours-submit").attr("formaction");
$.pjax.submit(event, pJaxContainer);
}
event.preventDefault();
return false;
});
/* -------------------- Functions -------------------- */
function showHourForm() {
resetForms();
$(".panel #hours").addClass('active').siblings().removeClass('active');
$("ul.nav-tabs li:first-child").addClass('active').siblings().removeClass('active');
$("#hours .selectProject").focus();
}
function showAbsenceForm() {
resetForms();
$(".panel #internal").addClass('active').siblings().removeClass('active');
$("ul.nav-tabs li:nth-child(2)").addClass('active').siblings().removeClass('active');
$(".selectAbsence button").focus();
}
function showExpenseForm() {
resetForms();
$(".panel #expense").addClass('active').siblings().removeClass('active');
$("ul.nav-tabs li:nth-child(3)").addClass('active').siblings().removeClass('active');
$("#expense .selectProject").focus();
}
function showTravelForm() {
resetForms();
$(".panel #travel").addClass('active').siblings().removeClass('active');
$("ul.nav-tabs li:last-child").addClass('active').siblings().removeClass('active');
$("#travel input[name='hours']").prop('disabled', false);
$("#travel input[name='hours']").spinner( "enable" );
$("#travel .description").prop('disabled', false);
}
function resetForms(){
resetHoursForm($('#hour-form'));
resetHoursForm($('#expense-form'));
resetAbsenceForm($('#absence-form'));
}
function editHour(event, projectID, subProjectID, hourID, userID, date, view){
if(event.target.nodeName != 'SPAN' && event.target.nodeName != 'BUTTON') {
$(event.target).closest('tr').addClass('active').siblings().removeClass('active');
data = {
'project': projectID,
'subproject': subProjectID,
'hour':hourID,
'user':userID,
'date':date,
'view':view,
};
// console.log('editHour ', hourID);
showHourForm();
$.ajax({
type: 'get',
url: '/getHourFormData',
data: data,
success: function (result) {
$(".error-container").html('');
result.userId = userID;
fillHourForm(result);
},
error: function( jqXHR, textStatus, errorThrown) {
checkAuthentication(jqXHR);
$(".error-container").html('<div class="alert alert-danger" role="alert">' + errorThrown + '</div>');
}
});
}
}
function editExpense(event, projectID, subProjectID, expenseID, userID, date, view){
if(event.target.nodeName != 'SPAN' && event.target.nodeName != 'BUTTON') {
data = {
'project': projectID,
'subproject': subProjectID,
'expense': expenseID,
'user': userID,
'date': date,
'view':view,
};
showExpenseForm();
$.ajax({
type: 'get',
url: '/getExpenseFormData',
data: data,
success: function (result) {
$(".error-container").html('');
fillExpenseForm(result);
},
error: function( jqXHR, textStatus, errorThrown) {
checkAuthentication(jqXHR);
$(".error-container").html('<div class="alert alert-danger" role="alert">' + errorThrown + '</div>');
}
});
}
}
function editTravelExpense(event, projectID, subProjectID, expenseID, userID, date, view){
if(event.target.nodeName != 'SPAN' && event.target.nodeName != 'BUTTON') {
data = {
'project': projectID,
'subproject': subProjectID,
'expense': expenseID,
'user': userID,
'date': date,
'view':view,
};
showTravelForm();
$.ajax({
type: 'get',
url: '/getExpenseFormData',
data: data,
success: function (result) {
$(".error-container").html('');
fillTravelForm(result);
},
error: function( jqXHR, textStatus, errorThrown) {
checkAuthentication(jqXHR);
$(".error-container").html('<div class="alert alert-danger" role="alert">' + errorThrown + '</div>');
}
});
}
}
function editAbsence(event, absenceID, userID, date, view) {
if(event.target.nodeName != 'SPAN' && event.target.nodeName != 'BUTTON') {
data = {
'absence': absenceID,
'user': userID,
'date': date,
'view':view,
};
showAbsenceForm();
$.ajax({
type: 'get',
url: '/getAbsenceFormData',
data: data,
success: function (result) {
$(".error-container").html('');
fillAbsenceForm(result);
},
error: function( jqXHR, textStatus, errorThrown) {
checkAuthentication(jqXHR);
$(".error-container").html('<div class="alert alert-danger" role="alert">' + errorThrown + '</div>');
}
});
}
}
function fillHourForm(data) {
// set project and progress bar
$("#hours .selectProject").children('[value="'+data.subprojectWithTasks.project_id+'"]').prop("selected", "selected");
$('#hours .selectProject').selectpicker('refresh');
$("#hours .project_progress_bar").html(data.projectProgressBar);
// fill subprojects and set selected subproject incl. progressbar
fillSubProjectSelect(data.subprojects);
$("#hours .selectSubproject").children('[value="'+data.subprojectWithTasks.id+'"]').prop("selected", "selected");
$('#hours .selectSubproject').selectpicker('refresh');
$("#hours .subproject_progress_bar").html(data.subprojectProgressBar);
// fill tasks and set selected task
fillTaskSelect(data.subprojectWithTasks);
$("#selectTask").children('[value="'+data.hour.task_id+'"]').prop("selected", "selected");
$('#selectTask').selectpicker('refresh');
// set hour value and description
$("#hours input[name='hours']").val(parseFloat(data.hour.value));
$('#hours .description').removeAttr("disabled");
$('#hours .internDescription').removeAttr("disabled");
$("#hours input[name='hours']").spinner( "enable" );
$('#hours .description').text(data.hour.description);
if(data.hour.intern_description !== '' && data.hour.intern_description != null) {
console.log('intern_description:', data.hour.intern_description);
$('#hours .internDescription').text(data.hour.intern_description);
$('#hours .collapsableDescription').addClass('in');
}
// set hour bug checkbox
$("#hours input[name='bug']").prop('checked', data.hour.bug);
// enable form button and show cancel button
$( "#hours .main-form-submit" ).removeAttr("disabled");
$( "#hours .main-form-submit" ).attr('formaction', '/hours/'+data.hour.id);
$( "#hour-form" ).attr('action', '/hours/'+data.hour.id);
$( "#hours .hiddenUpdate" ).val('PUT');
$( "#hours .hiddenDate" ).val($("#datepicker").val());
$( "#hours .hiddenUser" ).val(data.userId);
$( "#hours #main-form-reset" ).css('display', 'block');
$("#hours input[name='hours']").focus();
}
function resetHoursForm(form) {
//$.pjax({url: '/hours', container: '.hour-form'});
$(form)[0].reset();
$('tr.clickable-row').removeClass('active');
$('.selectProject').val('default');
$('.selectSubproject').prop('disabled', true);
$('.selectSubproject').val('default');
$('#subprojectlink').prop('disabled', true);
$('#selectTask').prop('disabled', true);
$('#selectTask').val('default');
$('#selectExpense').prop('disabled', true);
$('#selectExpense').val('default');
$(".selectpicker").selectpicker('refresh');
$(".project_progress_bar").html('');
$(" .subproject_progress_bar").html('');
$("#expense #expenseOrTaskLabel").text('<--- Kies het type onkosten');
$('.description').text('');
$('.description').prop('disabled', true);
$('.internDescription').text('');
$('.internDescription').prop('disabled', true);
$("#hours input[name='hours']").val('');
$("#hours input[name='hours']").prop('disabled', true);
$("#hours input[name='hours']").spinner( "disable" );
$( "#hours .main-form-submit" ).prop('disabled', true);
$( "#hours .main-form-submit" ).attr('formaction', '/newhour');
$( "#hour-form" ).attr('action', '/newhour');
$( ".hiddenUpdate" ).val('POST');
$( "#main-form-reset" ).css('display', 'none');
}
function fillExpenseForm(data) {
// set project and progress bar
$("#expense .selectProject").children('[value="'+data.subproject.project_id+'"]').prop("selected", "selected");
$('#expense .selectProject').selectpicker('refresh');
$("#expense .project_progress_bar").html(data.projectProgressBar);
// fill subprojects and set selected subproject incl. progressbar
fillSubProjectSelect(data.subprojects);
$("#expense .selectSubproject").children('[value="'+data.subproject.id+'"]').prop("selected", "selected");
$('#expense .selectSubproject').selectpicker('refresh');
$("#expense .subproject_progress_bar").html(data.subprojectProgressBar);
// fill tasks and set selected task
fillExpenseSelect(data.expenses);
$("#selectExpense").children('[value="'+data.expense.expense_type_id+'"]').prop("selected", "selected");
$('#selectExpense').selectpicker('refresh');
var expenseUnitName = data.expenses.find(function (arr) { return arr.id === data.expense.expense_type_id; }).expense_unit.name;
$('#expense #expenseOrTaskLabel').text(expenseUnitName);
// set hour value and description
$("#expense input[name='hours']").val(parseFloat(data.expense.value));
$("#expense input[name='hours']").spinner( "enable" );
$('#expense .description').removeAttr("disabled");
$('#expense .internDescription').removeAttr("disabled");
$('#expense .description').text(data.expense.description);
if(data.expense.intern_description !== '' && data.expense.intern_description != null) {
console.log('intern_description:', data.expense.intern_description);
$('#expense .internDescription').text(data.expense.intern_description);
$('#expense .collapsableDescription').addClass('in');
}
// enable form button and show cancel button
$( "#expense .main-form-submit" ).removeAttr("disabled");
$( "#expense .main-form-submit" ).attr('formaction', '/expense/'+data.expense.id);
$( "#expense #expense-form" ).attr('action', '/expense/'+data.expense.id);
$( "#expense .hiddenDate" ).val($("#datepicker").val());
$( "#expense .hiddenUpdate" ).val('PUT');
$( "#expense #main-form-reset" ).css('display', 'block');
$( "#expense input[name='hours']" ).focus();
}
function fillTravelForm(data) {
// set hour value and description
$("#travel input[name='hours']").val(parseFloat(data.expense.value));
$("#travel input[name='hours']").spinner( "enable" );
$('#travel .description').removeAttr("disabled");
$('#travel .internDescription').removeAttr("disabled");
$('#travel .description').text(data.expense.description);
// enable form button and show cancel button
$( "#travel .main-form-submit" ).removeAttr("disabled");
$( "#travel .main-form-submit" ).attr('formaction', '/expense/'+data.expense.id);
$( "#travel #expense-form" ).attr('action', '/expense/'+data.expense.id);
$( "#travel .hiddenDate" ).val($("#datepicker").val());
$( "#travel .hiddenUpdate" ).val('PUT');
$( "#travel #main-form-reset" ).css('display', 'block');
$( "#travel input[name='hours']" ).focus();
}
function fillAbsenceForm(data){
$("#internal .selectAbsence").children('[value="'+data.absence_type+'"]').prop("selected", "selected");
$("#internal .selectAbsence").selectpicker('refresh');
$("#internal input[name='internHours']").removeAttr("disabled");
$("#internal input[name='internHours']").val(parseFloat(data.value));
$("#internal textarea[name='internDescription']").removeAttr("disabled");
$("#internal textarea[name='internDescription']").text(data.description);
// enable form button and show cancel button
$( "#internal #intern-hours-submit" ).removeAttr("disabled");
$( "#internal #intern-hours-submit" ).attr('formaction', '/absence/'+data.absence_id);
$( "#internal #absence-form" ).attr('action', '/absence/'+data.absence_id);
$( "#internal .hiddenDate" ).val($("#datepicker").val());
$( "#internal .hiddenUpdate" ).val('PUT');
$( "#internal #intern-hours-reset" ).css('display', 'block');
$( "#internal input[name='internHours']" ).focus();
}
function resetAbsenceForm(form){
$(form)[0].reset();
$("#internal .selectAbsence").children('option:selected').prop("selected", false);
$("#internal .selectAbsence").selectpicker('refresh');
$("#internal input[name='internHours']").val('');
$("#internal input[name='internHours']").prop('disabled', true);
$("#internal input[name='internHours']").spinner( "disable" );
$("#internal textarea[name='internDescription']").prop('disabled', true);
$("#internal textarea[name='internDescription']").text('');
// enable form button and show cancel button
$( "#internal #intern-hours-submit" ).removeAttr("disabled");
$( "#internal #intern-hours-submit" ).attr('formaction', '/absence');
$( "#internal #absence-form" ).attr('action', '/absence');
$( ".hiddenUpdate" ).val('POST');
$( "#intern-hours-submit" ).prop('disabled', true);
$( "#intern-hours-reset" ).css('display', 'none');
}
function refreshProjectSelect(selectedID) {
$.ajax({
type: 'get',
url: '/getProjects',
success: function (data) {
$(".error-container").html('');
fillProjectSelect(data.projects, selectedID);
},
error: function( jqXHR, textStatus, errorThrown) {
checkAuthentication(jqXHR);
$(".error-container").html('<div class="alert alert-danger" role="alert">' + errorThrown + '</div>');
}
});
}
function fillProjectSelect(projects, selectedID) {
var projectOptions = '';
$.each(projects, function(i, project) {
var selected = (selectedID && selectedID == project.id);
projectOptions += '<option value="'+project.id+'" '+ (selected ? "selected" : "") +'>'+project.name+'</option>';
});
//$.each($('#selectSubproject'), function(i, select){ $(select).html(subProjectOptions); });
$('select.selectProject').html(projectOptions);
$('.selectProject').selectpicker('refresh');
$('.selectSubproject').removeAttr("disabled");
$('#subprojectlink').removeAttr("disabled");
if(selectedID) {
$.ajax({
type: 'get',
url: '/getProgressBarForProject',
data: {
'id': selectedID
},
success: function (data) {
$(".project_progress_bar").html(data);
}
});
refreshSubprojectSelect();
}
}
function refreshSubprojectSelect(selectedID) {
selectedID = typeof selectedID === 'undefined' ? null : selectedID;
var projectID = $(".tab-content .active select.selectProject").val();
if(projectID) {
$.ajax({
type: 'get',
url: '/getSubprojectsForProject',
data: {
'id': projectID
},
success: function (data) {
$(".error-container").html('');
fillSubProjectSelect(data.subprojects, selectedID);
},
error: function (jqXHR, textStatus, errorThrown) {
checkAuthentication(jqXHR);
$(".error-container").html('<div class="alert alert-danger" role="alert">' + errorThrown + '</div>');
}
});
}
if(selectedID) {
$.ajax({
type: 'get',
url: '/getProgressBarForSubProject',
data: {
'id': selectedID
},
success: function (data) {
//$.each($("subproject_progress_bar"), function(i, progress_bar){ $(progress_bar).html(data); });
$(".subproject_progress_bar").html(data);
}
});
}
}
function fillSubProjectSelect(subprojects, selectedID) {
var subProjectOptions = '';
var lockDividerAdded = false;
subprojects.sort(function(a, b){return a.locked - b.locked});
$.each(subprojects, function(i, subProject) {
var selected = (selectedID && selectedID == subProject.id);
if(subProject.locked) {
if(!lockDividerAdded) {
subProjectOptions += '<option data-divider="true"></option>';
lockDividerAdded = true;
}
subProjectOptions += '<option disabled data-icon="glyphicon-lock" value="' + subProject.id + '" ' + (selected ? "selected" : "") + '>' + subProject.name + '</option>';
} else {
subProjectOptions += '<option value="' + subProject.id + '" ' + (selected ? "selected" : "") + '>' + subProject.name + '</option>';
}
});
//$.each($('#selectSubproject'), function(i, select){ $(select).html(subProjectOptions); });
$('select.selectSubproject').html(subProjectOptions);
$('.selectSubproject').selectpicker('refresh');
$('.selectSubproject').removeAttr("disabled");
$('#subprojectlink').removeAttr("disabled");
$('#selectTask').prop('disabled', true);
$('#selectTask').selectpicker('refresh');
$("input[name='hours']").prop('disabled', true);
$(".tab-content .active button[data-id='selectSubproject']").focus();
if(selectedID) { refreshTaskSelect(); }
$("#subproject_progress_bar").html('');
$('.selectSubproject').selectpicker('refresh');
}
function refreshTaskSelect() {
var subProjectID = $(".active select.selectSubproject").val();
$.ajax({
type: 'get',
url: '/getTasksForSubProject',
data: {
'id': subProjectID
},
success: function (data) {
$(".error-container").html('');
fillTaskSelect(data.subproject);
},
error: function( jqXHR, textStatus, errorThrown) {
checkAuthentication(jqXHR);
$(".error-container").html('<div class="alert alert-danger" role="alert">' + errorThrown + '</div>');
}
});
}
function fillTaskSelect(subprojectWithTasks, selectedID) {
console.log('fillTaskSelect');
var selectOptions = '';
$.each(subprojectWithTasks.tasks, function (i, task) {
var taskTemplate =subprojectWithTasks.task_templates.find(function (arr) { return arr.id === task.task_template_id; });
selectOptions += '<option value="' + task.id + '">' + taskTemplate.name + '</option>';
});
//console.log(subprojectWithTasks.billable !== undefined, " && ", subprojectWithTasks.billable !== null, " : ", subprojectWithTasks.subproject_template.standard_billable);
$('#hours #billable').val( (subprojectWithTasks.billable !== undefined && subprojectWithTasks.billable !== null) ? subprojectWithTasks.billable : subprojectWithTasks.subproject_template.standard_billable);
$('#selectTask').html(selectOptions);
$('#selectTask').removeAttr("disabled");
$('#tasklink').removeAttr("disabled");
$('#selectTask').selectpicker('refresh');
$("#hours input[name='hours']").removeAttr("disabled");
$("#hours input[name='hours']").spinner( "enable" );
$("#hours button[data-id='selectTask']").focus();
}
function fillExpenseSelect(expenses) {
var selectOptions = '';
$.each(expenses, function (i, expense) {
selectOptions += '<option value="' + expense.id + '" data-unit-name="' + expense.expense_unit.name + '">' + expense.name + '</option>';
});
$('#expense #billable').val(1);
$('#selectExpense').html(selectOptions);
$('#selectExpense').removeAttr("disabled");
$('#selectExpense').selectpicker('refresh');
$("#expense input[name='hours']").removeAttr("disabled");
$("#expense input[name='hours']").spinner( "enable" );
$("#expense button[data-id='selectExpense']").focus();
}
/* -------------------- Helper Functions -------------------- */
function changeDate(date, view, user) {
if(typeof view === 'undefined') {
view = $('input#view').val() }
else
{
$('input#view').val(view);
}
user = typeof user === 'undefined' ? $('input.hiddenUser').val() : user;
$("input.hiddenDate").val(date);
var data = {
'date': date,
'view': view,
'user': user,
"_token": $('meta[name="csrf-token"]').attr('content')
};
//$.pjax({url: url, container: '#hourOverview'});
$.pjax({url: "/hours", type:"POST", data: data, container: '#hourOverview'}).done(function() { $.pjax({url: "/hours", type:"POST", data: data, container: '#hoursDashboard'}); });
}
function changeUser(date, view, user) {
view = typeof view === 'undefined' ? $('input#view').val() : view;
date = typeof date === 'undefined' ? $('input.hiddenDate').val() : date;
$('input.hiddenUser').val(user);
var data = {
'date': date,
'view': view,
'user': user,
"_token": $('meta[name="csrf-token"]').attr('content')
};
$.pjax({url: "/hours", type:"POST", data: data, container: '#hourOverview'}).done(function() { $.pjax({url: "/hours", type:"POST", data: data, container: '#hoursDashboard'}); });
}
function setView(view) {
$('input#view').val(view);
}
function showTaskPopup(){
var subProjectID = $(".tab-content .active select.selectSubproject").val();
loadPopup('/taken/create/'+subProjectID,'#createTaskModal');
}
function showSubProjectPopup(){
var projectID = $(".tab-content .active select.selectProject").val();
loadPopup('/subprojecten/create/'+projectID,'#createSubProjectModal');
}
function checkAuthentication(jqXHRObject){
if(jqXHRObject.status === 401) {
window.location = "/login";
}
}
/* -------------------- Stopwatch -------------------- */
var swSeconds = 0, swMinutes = 0, swHours = 0, t=null;
function addSeconds() {
swSeconds++;
if (swSeconds >= 60) {
swSeconds = 0;
swMinutes++;
if (swMinutes >= 60) {
swMinutes = 0;
swHours++;
}
}
var timeString = (swHours ? (swHours > 9 ? swHours : "0" + swHours) : "00") + ":"
+ (swMinutes ? (swMinutes > 9 ? swMinutes : "0" + swMinutes) : "00") + ":"
+ (swSeconds > 9 ? swSeconds : "0" + swSeconds);
$(".time").html(timeString);
}
$(document).on( "click", "#start", function(){
if(t === null) { t = setInterval(addSeconds, 1000); }
});
$(document).on( "click", "#stop", function(){
clearInterval(t);
t = null;
});
$(document).on( "click", "#clear", function() {
$(".time").html("00:00:00");
swSeconds = 0; swMinutes = 0; swHours = 0;
});