chess/resources/views/content/projects/actionKanban.blade.php

748 lines
35 KiB
PHP
Raw Permalink Normal View History

2024-08-29 03:56:32 +00:00
<script>
"use strict";
var validation_sub_task;
var team_role_id = '{{ $team_role_id }}';
// Class definition
var KTKanbanBoardDemo = function() {
var _demo3 = function() {
var formData = new FormData();
var member_id = team_role_id == '1' || team_role_id == '2' ? $('#member_id_kb').val():'{{ Auth::user()->id }}';
formData.append('id', $('#id_project_kb').val())
formData.append('team_role_id', team_role_id)
formData.append('member_id', member_id)
znLoadingPage()
doPost(base_url + 'projects/get_any/data_kanban_task', formData, function(msg, data) {
znLoadingPageEnd()
var kanban = new jKanban({
element: '#kt_kanban_3',
gutter: '0',
widthBoard: '250px',
click: function(el) {
var idEl = $(el).data('eid');
idEl = idEl.replace('_','');
var formData = new FormData();
formData.append('id', idEl);
formData.append('id_project', $('#id_project_kb').val());
znLoadingPage()
doPost(base_url + 'projects/get_any/get_data_detail_task', formData, function(msg, data) {
znLoadingPageEnd()
var data = data.data;
$('#id_task_detail').val(idEl)
$('#phone_number').val(data.task.phone_number)
$('#btn_create_sub_task').attr('onclick','createSubTask(`'+idEl+'`)')
$('#task_name').html(data.task.task_name)
$('#due_date').html(znFormatDate(data.task.due_date))
if(team_role_id == 1 || team_role_id == 2) {
$('#btn_reminder').removeClass('d-none');
} else {
$('#btn_reminder').addClass('d-none');
}
if(data.task.status_id==3 && (team_role_id==1 || team_role_id==2)) {
$('#btn_lanjutkan_task_detail').removeClass('d-none');
} else {
$('#btn_lanjutkan_task_detail').addClass('d-none');
}
$('#status').html(data.task.status)
$('#critical_level').html(data.task.critical_level)
if(data.task.url_doc) {
$('#dokumen').removeClass('d-none')
$('#dokumen').attr('href', data.task.url_doc)
} else {
$('#dokumen').addClass('d-none')
}
$('#task_note').html(data.task.task_note)
$('#sub_task_').html(``)
$.each(data.subTask, function(k,v) {
var style = '';
if(v.status_id == 4) {
// style = '<div style="position: absolute; background: red; height: 3px; width: 90%; z-index: 9; border-radius: 15px;"></div>';
style = 'style="text-decoration: line-through"';
} else if(v.status_id == 3) {
// style = '<div style="position: absolute; background: lightseagreen; height: 3px; width: 90%; z-index: 9; border-radius: 15px;"></div>';
style = 'style="text-decoration: line-through"';
}
$('#sub_task_').append(`
<!--begin::Item-->
<div class="d-flex align-items-center mb-2 row">
<!--begin::Text-->
<div class="col-md-8">
<div class="d-flex flex-column flex-grow-1">
<a href="#" class="text-dark-75 text-hover-primary font-weight-bold font-size-lg mb-1" ${style}>`+v.subtask_detail+`</a>
<span class="text-muted font-weight-bold">`+v.status+`</span>
</div>
</div>
<!--end::Text-->
<!--begin::Dropdown-->
<div class="col-md-4 text-right">
<a href="javascript:;" onclick="updateSubTask('`+v.id+`','`+v.subtask_detail+`','`+v.status_id+`','`+idEl+`')" class="btn btn-light-info btn-sm font-size-sm font-weight-bolder text-dark-75 btn-icon" data-toggle="tooltip" title="" data-placement="left" data-original-title="Update Sub Task"><i class="la la-edit"></i></a>
</div>
<!--end::Dropdown-->
</div>
<!--end::Item-->
`)
})
$('#comment_task').html(``)
$.each(data.commentTask, function(k,v) {
var textAlign = 'text-left';
var alignItem = 'align-items-start';
var bgChat = 'bg-light-primary';
if(v.user_crt_id == '{{ Auth::user()->id }}') {
textAlign = 'align-items-right';
alignItem = 'align-items-end';
bgChat = 'bg-light-success';
}
$('#comment_task').append(`
<!--begin::Message In-->
<div class="d-flex flex-column mb-5 `+alignItem+`">
<div class="d-flex align-items-center">
<div class="symbol symbol-circle symbol-35 mr-3">
<img alt="Pic" src="`+v.image_url+`" />
</div>
<div>
<a href="#" class="text-dark-75 text-hover-primary font-weight-bold font-size-h6">`+v.full_name+`</a>
<span class="text-muted font-size-sm">`+znFormatDatetime(v.created_at)+`</span>
</div>
</div>
<div class="mt-2 rounded p-5 `+bgChat+` text-dark-50 font-weight-bold font-size-md `+textAlign+` max-w-400px">`+v.comment_note+`</div>
</div>
<!--end::Message In-->
`);
})
znModal('mDetTask')
$('[data-scroll="true"]').each(function() {
var el = $(this);
KTUtil.scrollInit(this, {
mobileNativeScroll: true,
handleWindowResize: true,
rememberPosition: (el.data('remember-position') == 'true' ? true : false),
height: function() {
if (KTUtil.isBreakpointDown('lg') && el.data('mobile-height')) {
return el.data('mobile-height');
} else {
return el.data('height');
}
}
});
});
});
},
dropEl: function(el, target, source, sibling) {
var sourceId = source.parentElement.getAttribute('data-id');
var targetId = target.parentElement.getAttribute('data-id');
var idTask = $(el).data('eid');
var statusTarget = target.parentElement.getAttribute('data-id');
statusTarget = statusTarget.replace('_','');
var bgTask = ['info', 'warning', 'success', 'danger'];
var idTask = $(el).data('eid');
var idT = idTask.replace('_','');
var formData = new FormData();
formData.append('id', idT)
formData.append('status_id', statusTarget);
znLoadingPage()
doPost(base_url + 'projects/act_any/update_status_task', formData, function(msg, data) {
znLoadingPageEnd()
if(data.rc == null) {
kanban.removeElement(idTask)
kanban.addElement(sourceId, {
id: $(el).data('eid'),
title: el.innerHTML,
statusid: $(el).data('statusid'),
class: bgTask[parseInt($(el).data('statusid'))-1]
},0);
znNotif('danger','Internal Server Error');
} else {
if(data.rc == 0){
if(statusTarget==3 && (team_role_id==1 || team_role_id==2)) {
$('#id_task_lanjutkan').val('');
popConfirm("Lanjutkan", `<div class="mt-2">Apakah Task ini akan diteruskan ke Member lain ?</div>`, function() {
$('#id_task_lanjutkan').val(idT);
znModal('mFormLanjutkanTask')
});
}
$(el).attr('data-class', bgTask[parseInt(statusTarget)-1])
}else{
kanban.removeElement(idTask)
kanban.addElement(sourceId, {
id: $(el).data('eid'),
title: el.innerHTML,
statusid: $(el).data('statusid'),
class: bgTask[parseInt($(el).data('statusid'))-1]
},0);
znNotif("danger", data.rm);
}
}
});
},
boards: data.data
});
});
}
/* var _demo4 = function() {
var kanban = new jKanban({
element: '#kt_kanban_4',
gutter: '0',
click: function(el) {
alert(el.innerHTML);
},
boards: [{
'id': '_backlog',
'title': 'Backlog',
'class': 'light-dark',
'item': [{
'title': `
<div class="d-flex align-items-center">
<div class="symbol symbol-success mr-3">
<img alt="Pic" src="assets/media/users/300_24.jpg" />
</div>
<div class="d-flex flex-column align-items-start">
<span class="text-dark-50 font-weight-bold mb-1">SEO Optimization</span>
<span class="label label-inline label-light-success font-weight-bold">In progress</span>
</div>
</div>
`,
},
{
'title': `
<div class="d-flex align-items-center">
<div class="symbol symbol-success mr-3">
<span class="symbol-label font-size-h4">A.D</span>
</div>
<div class="d-flex flex-column align-items-start">
<span class="text-dark-50 font-weight-bold mb-1">Finance</span>
<span class="label label-inline label-light-danger font-weight-bold">Pending</span>
</div>
</div>
`,
}
]
},
{
'id': '_todo',
'title': 'To Do',
'class': 'light-danger',
'item': [{
'title': `
<div class="d-flex align-items-center">
<div class="symbol symbol-success mr-3">
<img alt="Pic" src="assets/media/users/300_16.jpg" />
</div>
<div class="d-flex flex-column align-items-start">
<span class="text-dark-50 font-weight-bold mb-1">Server Setup</span>
<span class="label label-inline label-light-dark font-weight-bold">Completed</span>
</div>
</div>
`,
},
{
'title': `
<div class="d-flex align-items-center">
<div class="symbol symbol-success mr-3">
<img alt="Pic" src="assets/media/users/300_15.jpg" />
</div>
<div class="d-flex flex-column align-items-start">
<span class="text-dark-50 font-weight-bold mb-1">Report Generation</span>
<span class="label label-inline label-light-warning font-weight-bold">Due</span>
</div>
</div>
`,
}
]
},
{
'id': '_working',
'title': 'Working',
'class': 'light-primary',
'item': [{
'title': `
<div class="d-flex align-items-center">
<div class="symbol symbol-success mr-3">
<img alt="Pic" src="assets/media/users/300_24.jpg" />
</div>
<div class="d-flex flex-column align-items-start">
<span class="text-dark-50 font-weight-bold mb-1">Marketing</span>
<span class="label label-inline label-light-danger font-weight-bold">Planning</span>
</div>
</div>
`,
},
{
'title': `
<div class="d-flex align-items-center">
<div class="symbol symbol-light-info mr-3">
<span class="symbol-label font-size-h4">A.P</span>
</div>
<div class="d-flex flex-column align-items-start">
<span class="text-dark-50 font-weight-bold mb-1">Finance</span>
<span class="label label-inline label-light-primary font-weight-bold">Done</span>
</div>
</div>
`,
}
]
},
{
'id': '_done',
'title': 'Done',
'class': 'light-success',
'item': [{
'title': `
<div class="d-flex align-items-center">
<div class="symbol symbol-success mr-3">
<img alt="Pic" src="assets/media/users/300_11.jpg" />
</div>
<div class="d-flex flex-column align-items-start">
<span class="text-dark-50 font-weight-bold mb-1">SEO Optimization</span>
<span class="label label-inline label-light-success font-weight-bold">In progress</span>
</div>
</div>
`,
},
{
'title': `
<div class="d-flex align-items-center">
<div class="symbol symbol-success mr-3">
<img alt="Pic" src="assets/media/users/300_20.jpg" />
</div>
<div class="d-flex flex-column align-items-start">
<span class="text-dark-50 font-weight-bold mb-1">Product Team</span>
<span class="label label-inline label-light-danger font-weight-bold">In progress</span>
</div>
</div>
`,
}
]
},
{
'id': '_deploy',
'title': 'Deploy',
'class': 'light-primary',
'item': [{
'title': `
<div class="d-flex align-items-center">
<div class="symbol symbol-light-warning mr-3">
<span class="symbol-label font-size-h4">D.L</span>
</div>
<div class="d-flex flex-column align-items-start">
<span class="text-dark-50 font-weight-bold mb-1">SEO Optimization</span>
<span class="label label-inline label-light-success font-weight-bold">In progress</span>
</div>
</div>
`,
},
{
'title': `
<div class="d-flex align-items-center">
<div class="symbol symbol-light-danger mr-3">
<span class="symbol-label font-size-h4">E.K</span>
</div>
<div class="d-flex flex-column align-items-start">
<span class="text-dark-50 font-weight-bold mb-1">Requirement Study</span>
<span class="label label-inline label-light-warning font-weight-bold">Scheduled</span>
</div>
</div>
`,
}
]
}
]
});
var toDoButton = document.getElementById('addToDo');
toDoButton.addEventListener('click', function() {
kanban.addElement(
'_todo', {
'title': `
<div class="d-flex align-items-center">
<div class="symbol symbol-light-primary mr-3">
<img alt="Pic" src="assets/media/users/300_14.jpg" />
</div>
<div class="d-flex flex-column align-items-start">
<span class="text-dark-50 font-weight-bold mb-1">Requirement Study</span>
<span class="label label-inline label-light-success font-weight-bold">Scheduled</span>
</div>
</div>
`
}
);
});
var addBoardDefault = document.getElementById('addDefault');
addBoardDefault.addEventListener('click', function() {
kanban.addBoards(
[{
'id': '_default',
'title': 'New Board',
'class': 'primary-light',
'item': [{
'title': `
<div class="d-flex align-items-center">
<div class="symbol symbol-success mr-3">
<img alt="Pic" src="assets/media/users/300_13.jpg" />
</div>
<div class="d-flex flex-column align-items-start">
<span class="text-dark-50 font-weight-bold mb-1">Payment Modules</span>
<span class="label label-inline label-light-primary font-weight-bold">In development</span>
</div>
</div>
`},{
'title': `
<div class="d-flex align-items-center">
<div class="symbol symbol-success mr-3">
<img alt="Pic" src="assets/media/users/300_12.jpg" />
</div>
<div class="d-flex flex-column align-items-start">
<span class="text-dark-50 font-weight-bold mb-1">New Project</span>
<span class="label label-inline label-light-danger font-weight-bold">Pending</span>
</div>
</div>
`}
]
}]
)
});
var removeBoard = document.getElementById('removeBoard');
removeBoard.addEventListener('click', function() {
kanban.removeBoard('_done');
});
} */
// Public functions
return {
init: function() {
// _demo1();
// _demo2();
_demo3();
$('.selectpicker').selectpicker()
$('[data-scroll="true"]').each(function() {
var el = $(this);
KTUtil.scrollInit(this, {
mobileNativeScroll: true,
handleWindowResize: true,
rememberPosition: (el.data('remember-position') == 'true' ? true : false),
height: function() {
if (KTUtil.isBreakpointDown('lg') && el.data('mobile-height')) {
return el.data('mobile-height');
} else {
return el.data('height');
}
}
});
});
// _demo4();
/* validation_task = FormValidation.formValidation(
KTUtil.getById('form_task'),
{
fields: {
task_name: {
validators: {
notEmpty: {
message: 'Wajib diisi!'
}
}
},
task_code: {
validators: {
notEmpty: {
message: 'Wajib diisi!'
}
}
},
start_date: {
validators: {
notEmpty: {
message: 'Wajib diisi!'
}
}
},
due_date: {
validators: {
notEmpty: {
message: 'Wajib diisi!'
}
}
},
status_id: {
validators: {
notEmpty: {
message: 'Wajib diisi!'
}
}
},
critical_level_id: {
validators: {
notEmpty: {
message: 'Wajib diisi!'
}
}
},
},
plugins: {
trigger: new FormValidation.plugins.Trigger(),
bootstrap: new FormValidation.plugins.Bootstrap()
}
}
); */
}
};
}();
jQuery(document).ready(function() {
KTKanbanBoardDemo.init();
validation_sub_task = FormValidation.formValidation(
KTUtil.getById('form_sub_task'),
{
fields: {
subtask_detail: {
validators: {
notEmpty: {
message: 'Wajib diisi!'
}
}
},
status_id: {
validators: {
notEmpty: {
message: 'Wajib diisi!'
}
}
},
},
plugins: {
trigger: new FormValidation.plugins.Trigger(),
bootstrap: new FormValidation.plugins.Bootstrap()
}
}
);
});
function reminder(id, phone_number) {
popConfirm("Konfirmasi",
`<div class="mt-2">Kirim Reminder Task ?</div>`,
function() {
var formData = new FormData();
formData.append('id', id)
formData.append('phone_number', phone_number)
formData.append('project_name', $('#project_name_task').val())
znLoadingModal('mDetTask')
doPost(base_url+'projects/act_any/store_reminder', formData, function (msg, data) {
// znLoadingPageEnd();
znLoadingModalEnd('mDetTask')
if (data == null){
znNotif("danger", msg);
}else {
if(data.rc == 0){
znNotif('success','Berhasil Kirim Reminder');
$('#mDetTask').modal('hide')
}else{
znNotif("danger", data.rm);
}
}
})
});
}
function lanjutkanTaskDetail(id) {
$('#id_task_lanjutkan').val('')
$('#id_task_lanjutkan').val(id)
znModal('mFormLanjutkanTask');
}
function storeLanjutkanTask() {
var myForm = document.getElementById('form_lanjutkan_task');
var formData = new FormData(myForm);
popConfirm("Konfirmasi",
`<div class="mt-2">Yakin Akan Lanjutkan Data Task Ini ?</div>`,
function() {
znLoadingModal('mFormLanjutkanTask')
doPost(base_url+'projects/act_any/store_lanjutkan_task', formData, function (msg, data) {
// znLoadingPageEnd();
znLoadingModalEnd('mFormLanjutkanTask')
if (data == null){
znNotif("danger", msg);
}else {
if(data.rc == 0){
znNotif('success','Berhasil Menyimpan Data');
$('#mDetTask').modal('hide')
$('#mFormLanjutkanTask').modal('hide')
}else{
znNotif("danger", data.rm);
}
}
})
});
}
function createNewTask() {
var member_id = $('#member_id_kb').val();
var id_project = $('#id_project_kb').val();
if(member_id) {
tambahTask(id_project, member_id)
} else {
znNotif('warning', 'pilih member terlebih dahulu')
}
}
function changeKaban() {
$('#kt_kanban_3').html(``)
KTKanbanBoardDemo.init();
}
function createSubTask(id) {
var form = document.getElementById('form_sub_task');
form.reset();
$('#get_id_sub_task').val('')
$('#task_id').val(id)
$('#status_id_st').val('').trigger('change.select2')
znModal('mFormSubTask')
}
function updateSubTask(idSubT, subDet, status, idTask) {
var form = document.getElementById('form_sub_task');
form.reset();
$('#task_id').val(idTask)
$('#subtask_detail').val(subDet)
$('#get_id_sub_task').val(idSubT)
$('#status_id_st').val(status).trigger('change.select2')
znModal('mFormSubTask')
}
function storeSubTask() {
validation_sub_task.validate().then(function (status) {
if(status=='Valid') {
var task_id = $('#task_id').val();
var myForm = document.getElementById('form_sub_task');
var formData = new FormData(myForm);
popConfirm("Konfirmasi Data Sub Task",
`<div class="mt-2">Yakin Akan Menyimpan Data Task Ini ?</div>`,
function() {
znLoadingModal('mFormSubTask')
doPost(base_url+'projects/act_any/store_data_sub_task', formData, function (msg, data) {
// znLoadingPageEnd();
znLoadingModalEnd('mFormSubTask')
if (data == null){
znNotif("danger", msg);
}else {
if(data.rc == 0){
znNotif('success','Berhasil Menyimpan Data');
getSubTask(task_id)
$('#mFormSubTask').modal('hide')
}else{
znNotif("danger", data.rm);
}
}
})
});
}
})
}
function getSubTask(id) {
znLoadingModal('mDetTask')
var formData = new FormData();
formData.append('id', id);
doPost(base_url + 'projects/get_any/data_sub_task', formData, function(msg, data) {
znLoadingModalEnd('mDetTask')
$('#sub_task_').html(``);
$.each(data.data, function(k,v) {
var style = '';
if(v.status_id == 4) {
// style = '<div style="position: absolute; background: red; height: 3px; width: 90%; z-index: 9; border-radius: 15px;"></div>';
style = 'style="text-decoration: line-through"';
} else if(v.status_id == 3) {
// style = '<div style="position: absolute; background: lightseagreen; height: 3px; width: 90%; z-index: 9; border-radius: 15px;"></div>';
style = 'style="text-decoration: line-through"';
}
$('#sub_task_').append(`
<!--begin::Item-->
<div class="d-flex align-items-center mb-2 row">
<!--begin::Text-->
<div class="col-md-8">
<div class="d-flex flex-column flex-grow-1">
<a href="#" class="text-dark-75 text-hover-primary font-weight-bold font-size-md mb-1" ${style}>`+v.subtask_detail+`</a>
<span class="text-muted font-weight-bold">`+v.status+`</span>
</div>
</div>
<!--end::Text-->
<!--begin::Dropdown-->
<div class="col-md-4 text-right">
<a href="javascript:;" onclick="updateSubTask('`+v.id+`','`+v.subtask_detail+`','`+v.status_id+`','`+id+`')" class="btn btn-light-info btn-sm font-size-sm font-weight-bolder text-dark-75 btn-icon" data-toggle="tooltip" title="" data-placement="left" data-original-title="Update Sub Task"><i class="la la-edit"></i></a>
</div>
<!--end::Dropdown-->
</div>
<!--end::Item-->
`)
})
})
}
function storeCommentTask(id_project, id_task) {
var formData = new FormData();
formData.append('id_project', id_project)
formData.append('id_task', id_task)
formData.append('comment_task_note', $('#comment_task_note').val())
popConfirm("Konfirmasi Comment Note",
`<div class="mt-2">Yakin Akan Menyimpan Data Comment Ini ?</div>`,
function() {
znLoadingModal('mDetTask')
doPost(base_url+'projects/act_any/store_data_comment_task', formData, function (msg, data) {
// znLoadingPageEnd();
znLoadingModalEnd('mDetTask')
if (data == null){
znNotif("danger", msg);
}else {
if(data.rc == 0){
znNotif('success','Berhasil Menyimpan Data');
$('#comment_task_note').val('');
getCommentTask(id_project, id_task)
}else{
znNotif("danger", data.rm);
}
}
})
});
}
function getCommentTask(id_project, task_id) {
znLoadingModal('mDetTask')
var formData = new FormData();
formData.append('id_project', id_project);
formData.append('task_id', task_id);
doPost(base_url + 'projects/get_any/data_comment_task', formData, function(msg, data) {
console.log(data)
znLoadingModalEnd('mDetTask')
$('#comment_task').html(``)
$.each(data.data, function(k,v) {
var textAlign = 'text-left';
var alignItem = 'align-items-start';
var bgChat = 'bg-light-primary';
if(v.user_crt_id == '{{ Auth::user()->id }}') {
textAlign = 'align-items-right';
alignItem = 'align-items-end';
bgChat = 'bg-light-success';
}
$('#comment_task').append(`
<!--begin::Message In-->
<div class="d-flex flex-column mb-5 `+alignItem+`">
<div class="d-flex align-items-center">
<div class="symbol symbol-circle symbol-35 mr-3">
<img alt="Pic" src="`+v.image_url+`" />
</div>
<div>
<a href="#" class="text-dark-75 text-hover-primary font-weight-bold font-size-h6">`+v.full_name+`</a>
<br>
<span class="text-muted font-size-sm">`+znFormatDatetime(v.created_at)+`</span>
</div>
</div>
<div class="mt-2 rounded p-5 `+bgChat+` text-dark-50 font-weight-bold font-size-md `+textAlign+` max-w-400px">`+v.comment_note+`</div>
</div>
<!--end::Message In-->
`);
})
})
}
</script>