You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
256 lines
8.9 KiB
256 lines
8.9 KiB
var hrModal = $('#modal-hr > .modal-dialog > .modal-content'); |
|
|
|
function resetFormAssign() { |
|
$('#select-role-hr').val(null).trigger("change"); |
|
$('#select-role-hr').find('option').remove(); |
|
$('#select-role-hr').val(""); |
|
$('#select-hr').val(null).trigger("change"); |
|
$('#select-hr').find('option').remove(); |
|
$('#select-hr').val(""); |
|
$("#hr-start-date").val(""); |
|
$("#hr-end-date").val(""); |
|
$("#hr_role").val(""); |
|
// $("#hide-form-hr").hide(); |
|
// $("#show-form-hr").show(); |
|
// $("#form-assign-hr").hide(); |
|
$('#form-assign-hr').trigger("reset"); |
|
$('#btn-assign-hr').html('Assign'); |
|
$('#btn-assign-hr').prop("disabled", false); |
|
}; |
|
|
|
$(document).ready(function () { |
|
var tableHr = $("#table-hr").DataTable({ |
|
"processing": true, |
|
"serverSide": true, |
|
"ajax": { |
|
"url": `${base_url}user-to-activity/datatables`, |
|
"data": function (d) { |
|
d.idact = activityId; |
|
} |
|
}, |
|
"columns": [ |
|
{ data: 'user_name', name: 'user_name' }, |
|
{ data: 'role_name', name: 'role_name' }, |
|
{ |
|
data: 'start_date', name: 'start_date', render: function (data, type) { |
|
return data ? formatDate(data) : '-' |
|
} |
|
}, |
|
{ |
|
data: 'end_date', name: 'end_date', render: function (data, type) { |
|
return data ? formatDate(data) : '-' |
|
} |
|
}, |
|
{ |
|
data: 'action', |
|
name: 'action', |
|
orderable: true, |
|
searchable: true |
|
}, |
|
] |
|
}); |
|
|
|
function deleteHrAssign(id) { |
|
$.ajax({ |
|
url: `${base_url}user-to-activity/delete/${id}`, |
|
type: "DELETE", |
|
success: function (data) { |
|
actionHappen = true; |
|
gantt.alert("Delete Human Resource Assign Success!"); |
|
tableHr.draw(); |
|
}, |
|
error: function (data) { |
|
gantt.alert("Delete Human Resource Assign Failed, try again later!"); |
|
} |
|
}); |
|
} |
|
|
|
$("#modal-hr").on("click", "#show-form-hr", function () { |
|
$(this).hide(); |
|
$("#hide-form-hr").show(); |
|
$("#form-assign-hr").show(); |
|
}); |
|
|
|
$("#modal-hr").on("click", "#hide-form-hr", function () { |
|
$(this).hide(); |
|
resetFormAssign() |
|
$("#show-form-hr").show(); |
|
}); |
|
|
|
$('#modal-hr').on('show.bs.modal', function (event) { |
|
$('#modal-hr-title').html("Human Resource " + activityName); |
|
$('#modal-hr-sub-title').html(`<p style="font-size: 12px; color: #747474">Plan Date ${moment(activityEarlyStart).format('MM-DD-YYYY')} - ${moment(activityEarlyFinish).format('MM-DD-YYYY')}</p>`); |
|
$("#hr-start-date").val(moment(activityEarlyStart).format('YYYY-MM-DD')); |
|
$("#hr-end-date").val(moment(activityEarlyFinish).format('YYYY-MM-DD')); |
|
$('#modal-hr-time-startDate').html("Minimum from " + moment(activityEarlyStart).format('MM-DD-YYYY')); |
|
$('#modal-hr-time-endDate').html("Maximum from " + moment(activityEarlyFinish).format('MM-DD-YYYY')); |
|
tableHr.draw(); |
|
}); |
|
|
|
$('#modal-hr').on('hide.bs.modal', function (event) { |
|
$("#hide-form-hr").hide(); |
|
$("#show-form-hr").show(); |
|
if (actionHappen) { |
|
updateActivity(activityId); |
|
} |
|
resetFormAssign(); |
|
}); |
|
|
|
$('#select-role-hr').select2({ |
|
dropdownParent: hrModal, |
|
placeholder: 'Pilih human resource role', |
|
allowClear: true, |
|
ajax: { |
|
url: `${base_url}project-role/select`, |
|
dataType: 'json', |
|
data: function (params) { |
|
var query = { |
|
search: params.term, |
|
type: 'public', |
|
} |
|
return query; |
|
}, |
|
processResults: function (result) { |
|
return { |
|
results: $.map(result, function (item) { |
|
// console.log("cek item", item) |
|
return { |
|
text: item.name, |
|
id: item.id |
|
} |
|
}) |
|
}; |
|
}, |
|
cache: false |
|
} |
|
}); |
|
$('#select-hr').select2({ |
|
dropdownParent: hrModal, |
|
placeholder: 'Pilih human resource', |
|
allowClear: true, |
|
ajax: { |
|
url: `${base_url}human-resource/select`, |
|
dataType: 'json', |
|
data: function (params) { |
|
var query = { |
|
search: params.term, |
|
type: 'public', |
|
idact: activityId, |
|
idProyek: proyekId |
|
} |
|
return query; |
|
}, |
|
processResults: function (result) { |
|
return { |
|
results: $.map(result, function (item) { |
|
// console.log("cek item", item) |
|
return { |
|
text: item.name, |
|
id: item.id + "|" + item.proyek_role, |
|
proyek_role: item.proyek_role |
|
} |
|
}) |
|
}; |
|
}, |
|
cache: false |
|
} |
|
}); |
|
|
|
$('#select-hr').on('select2:select', function (e) { |
|
let param_data = e.params.data; |
|
if (param_data && param_data.proyek_role) { |
|
let proyek_role = param_data.proyek_role |
|
$("#hr_role").val(proyek_role); |
|
} |
|
|
|
}); |
|
|
|
$("#hr-start-date").on('input', (e) => { |
|
let inputDate = moment($("#hr-start-date").val()); |
|
if (moment(inputDate).format('YYYY') >= moment(activityEarlyStart).format('YYYY')) { |
|
if (inputDate.isBefore(moment(activityEarlyStart).format('YYYY-MM-DD')) || inputDate.isAfter(moment(activityEarlyFinish).format('YYYY-MM-DD'))) { |
|
gantt.alert("Start date should be inside activity date range !"); |
|
$("#hr-start-date").val(""); |
|
} |
|
} |
|
}); |
|
|
|
$("#hr-end-date").on('change', (e) => { |
|
let inputDate = moment($("#hr-end-date").val()); |
|
if (moment(inputDate).format('YYYY') >= moment(activityEarlyStart).format('YYYY')) { |
|
if (inputDate.isBefore(moment(activityEarlyStart).format('YYYY-MM-DD')) || inputDate.isAfter(moment(activityEarlyFinish).format('YYYY-MM-DD'))) { |
|
gantt.alert("End date should be inside activity date range !"); |
|
$("#hr-end-date").val(""); |
|
} |
|
} |
|
}) |
|
|
|
$("#form-assign-hr").on('submit', function (e) { |
|
e.preventDefault(); |
|
|
|
$('#btn-assign-hr').html('Assign...'); |
|
$('#btn-assign-hr').prop("disabled", true); |
|
|
|
// var formData = new FormData(this); |
|
let users = $("#select-hr").val(); |
|
let start_date = $("#hr-start-date").val(); |
|
let end_date = $("#hr-end-date").val(); |
|
let user_id = []; |
|
let user_role = []; |
|
users.map((item) => { |
|
let text = item.split('|'); |
|
user_id.push(text[0]); |
|
user_role.push(text[1]); |
|
}) |
|
|
|
if (!users || users.length === 0) { |
|
gantt.alert("Please choose user to assign!"); |
|
$('#btn-assign-hr').html('Assign'); |
|
$('#btn-assign-hr').prop("disabled", false); |
|
return false |
|
} |
|
|
|
|
|
let payload = { |
|
user_id: user_id, |
|
start_date: start_date, |
|
end_date: end_date, |
|
role_proyek_id: user_role, |
|
version_gantt_id: ganttId, |
|
proyek_id: proyekId, |
|
activity_id: activityId |
|
} |
|
$.ajax({ |
|
data: JSON.stringify(payload), |
|
url: `${base_url}user-to-activity/add-multiple`, |
|
type: "POST", |
|
processData: false, |
|
contentType: false, |
|
success: function (data) { |
|
actionHappen = true; |
|
resetFormAssign(); |
|
tableHr.draw(); |
|
gantt.alert("Human Resource Assign Success!"); |
|
}, |
|
error: function (data) { |
|
$('#btn-assign-hr').html('Assign'); |
|
resetFormAssign(); |
|
gantt.alert("Human Resource Assign Failed, try again later!"); |
|
} |
|
}); |
|
}); |
|
|
|
$("#table-hr").on("click", ".btn-hr-delete", function () { |
|
let id = $(this).data('id'); |
|
var box = gantt.confirm({ |
|
text: "Human resource will be deleted from activity, continue?", |
|
ok: "Delete", |
|
cancel: "Cancel", |
|
callback: function (result) { |
|
if (result) { |
|
deleteHrAssign(id); |
|
} |
|
} |
|
}); |
|
}); |
|
});
|
|
|