This commit is contained in:
Dwi Swandhana
2026-07-19 21:54:01 +07:00
parent 82dc63822e
commit 08984801f9
2 changed files with 112 additions and 257 deletions
@@ -3,13 +3,12 @@
@push('script') @push('script')
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
if (window.mikroExpertiseAutoOpenInitialized) { if (window.mikroExpertiseAutoOpenInitialized) {
console.warn('[mikro-expertise] duplicate script initialization skipped'); return;
return; }
} window.mikroExpertiseAutoOpenInitialized = true;
window.mikroExpertiseAutoOpenInitialized = true;
var focusPeriksaId = @json((string) ($focusPeriksaId ?? '')); var focusPeriksaId = @json((string) ($focusPeriksaId ?? ''));
var focusNoFoto = @json((string) ($focusNoFoto ?? '')); var focusNoFoto = @json((string) ($focusNoFoto ?? ''));
var returnUrl = @json($expertiseReturnUrl ?? url('/')); var returnUrl = @json($expertiseReturnUrl ?? url('/'));
var shouldOpenOnLoad = @json((bool) ($openExpertiseOnLoad ?? false)); var shouldOpenOnLoad = @json((bool) ($openExpertiseOnLoad ?? false));
@@ -18,26 +17,14 @@
var initialStartDate = @json($initialStartDate ?? ''); var initialStartDate = @json($initialStartDate ?? '');
var initialEndDate = @json($initialEndDate ?? ''); var initialEndDate = @json($initialEndDate ?? '');
var autoOpenAttempts = 0; var autoOpenAttempts = 0;
var maxAutoOpenAttempts = 12; var maxAutoOpenAttempts = 12;
var hasOpenedTarget = false; var hasOpenedTarget = false;
var hasRequestedFilteredLoad = false; var hasRequestedFilteredLoad = false;
window.mikroExpertiseDirectOpen = shouldOpenOnLoad; window.mikroExpertiseDirectOpen = shouldOpenOnLoad;
function setInitialFilters() {
console.log('[mikro-expertise] init', { if ($('#mulai').length) {
focusPeriksaId: focusPeriksaId, $('#mulai').val(initialStartDate);
focusNoFoto: focusNoFoto, }
shouldOpenOnLoad: shouldOpenOnLoad,
initialListMode: initialListMode,
initialSearchValue: initialSearchValue,
initialStartDate: initialStartDate,
initialEndDate: initialEndDate
});
function setInitialFilters() {
console.log('[mikro-expertise] setInitialFilters:start');
if ($('#mulai').length) {
$('#mulai').val(initialStartDate);
}
if ($('#akhir').length) { if ($('#akhir').length) {
$('#akhir').val(initialEndDate); $('#akhir').val(initialEndDate);
} }
@@ -47,17 +34,10 @@
if ($('#master_set01').length) { if ($('#master_set01').length) {
$('#master_set01').val(initialListMode); $('#master_set01').val(initialListMode);
} }
if ($('#valcari').length) { if ($('#valcari').length) {
$('#valcari').val(initialSearchValue); $('#valcari').val(initialSearchValue);
} }
console.log('[mikro-expertise] setInitialFilters:done', { }
mulai: $('#mulai').val(),
akhir: $('#akhir').val(),
valjenis: $('#valjenis').val(),
master_set01: $('#master_set01').val(),
valcari: $('#valcari').val()
});
}
function findExpertiseButton(boundIndex) { function findExpertiseButton(boundIndex) {
var row = $('#gridpemeriksaan').find('[role="row"][boundindex="' + boundIndex + '"]').first(); var row = $('#gridpemeriksaan').find('[role="row"][boundindex="' + boundIndex + '"]').first();
@@ -72,78 +52,45 @@
}).first(); }).first();
} }
function triggerExpertiseButton(boundIndex, rowData) { function triggerExpertiseButton(boundIndex, rowData) {
console.log('[mikro-expertise] triggerExpertiseButton:start', { try {
boundIndex: boundIndex, var columns = $('#gridpemeriksaan').jqxGrid('columns');
rowData: rowData var records = columns && columns.records ? columns.records : [];
});
try { for (var i = 0; i < records.length; i++) {
var columns = $('#gridpemeriksaan').jqxGrid('columns'); var column = records[i];
var records = columns && columns.records ? columns.records : []; if (column && typeof column.buttonclick === 'function') {
console.log('[mikro-expertise] triggerExpertiseButton:columns', { var renderedLabel = typeof column.cellsrenderer === 'function'
count: records.length ? column.cellsrenderer()
}); : '';
for (var i = 0; i < records.length; i++) { if (String(renderedLabel).indexOf('Expertise') !== -1) {
var column = records[i]; column.buttonclick(rowData || boundIndex);
if (column && typeof column.buttonclick === 'function') { return true;
var renderedLabel = typeof column.cellsrenderer === 'function' }
? column.cellsrenderer() }
: ''; }
} catch (error) {
console.error('[mikro-expertise] triggerExpertiseButton:error', error);
}
if (String(renderedLabel).indexOf('Expertise') !== -1) { var button = findExpertiseButton(boundIndex);
console.log('[mikro-expertise] triggerExpertiseButton:calling column.buttonclick', { if (button.length) {
columnIndex: i, button.trigger('click');
renderedLabel: renderedLabel return true;
}); }
column.buttonclick(rowData || boundIndex);
return true;
}
}
}
} catch (error) {
console.error('[mikro-expertise] triggerExpertiseButton:error', error);
}
var button = findExpertiseButton(boundIndex); return false;
if (button.length) { }
console.log('[mikro-expertise] triggerExpertiseButton:fallback DOM button click');
button.trigger('click');
return true;
}
console.warn('[mikro-expertise] triggerExpertiseButton:not found'); function openFocusedPeriksa() {
return false; if (!shouldOpenOnLoad || hasOpenedTarget || !focusPeriksaId) {
} return;
}
function openFocusedPeriksa() { var rows = $('#gridpemeriksaan').jqxGrid('getrows') || [];
console.log('[mikro-expertise] openFocusedPeriksa:start', { var matchedRow = null;
shouldOpenOnLoad: shouldOpenOnLoad, var matchedRowBoundIndex = -1;
hasOpenedTarget: hasOpenedTarget,
focusPeriksaId: focusPeriksaId,
focusNoFoto: focusNoFoto,
attempt: autoOpenAttempts + 1
});
if (!shouldOpenOnLoad || hasOpenedTarget || !focusPeriksaId) {
console.warn('[mikro-expertise] openFocusedPeriksa:skipped');
return;
}
var rows = $('#gridpemeriksaan').jqxGrid('getrows') || [];
console.log('[mikro-expertise] openFocusedPeriksa:grid rows', {
count: rows.length,
sample: rows.slice ? rows.slice(0, 3).map(function (row) {
return {
id: row.id,
nofoto: row.nofoto,
dlp: row.dlp,
status: row.status,
boundindex: row.boundindex
};
}) : []
});
var matchedRow = null;
var matchedRowBoundIndex = -1;
for (var i = 0; i < rows.length; i++) { for (var i = 0; i < rows.length; i++) {
if (String(rows[i].id) === focusPeriksaId || (focusNoFoto !== '' && String(rows[i].nofoto) === focusNoFoto)) { if (String(rows[i].id) === focusPeriksaId || (focusNoFoto !== '' && String(rows[i].nofoto) === focusNoFoto)) {
@@ -155,83 +102,58 @@
} }
} }
if (!matchedRow) { if (!matchedRow) {
autoOpenAttempts++; autoOpenAttempts++;
console.warn('[mikro-expertise] openFocusedPeriksa:not matched', { if (autoOpenAttempts >= maxAutoOpenAttempts) {
attempt: autoOpenAttempts, $('#divawal').show();
focusPeriksaId: focusPeriksaId, } else {
focusNoFoto: focusNoFoto setTimeout(openFocusedPeriksa, 500);
}); }
if (autoOpenAttempts >= maxAutoOpenAttempts) { return;
console.error('[mikro-expertise] openFocusedPeriksa:max attempts, showing divawal'); }
$('#divawal').show();
} else {
setTimeout(openFocusedPeriksa, 500);
}
return;
}
var triggerRowIndex = matchedRowBoundIndex >= 0 ? matchedRowBoundIndex : matchedRow.boundindex; var triggerRowIndex = matchedRowBoundIndex >= 0 ? matchedRowBoundIndex : matchedRow.boundindex;
console.log('[mikro-expertise] openFocusedPeriksa:matched', { $('#gridpemeriksaan').jqxGrid('selectrow', triggerRowIndex);
triggerRowIndex: triggerRowIndex, $('#gridpemeriksaan').jqxGrid('ensurerowvisible', triggerRowIndex);
row: matchedRow
});
$('#gridpemeriksaan').jqxGrid('selectrow', triggerRowIndex);
$('#gridpemeriksaan').jqxGrid('ensurerowvisible', triggerRowIndex);
setTimeout(function () { setTimeout(function () {
if (triggerExpertiseButton(triggerRowIndex, matchedRow)) { if (triggerExpertiseButton(triggerRowIndex, matchedRow)) {
hasOpenedTarget = true; hasOpenedTarget = true;
console.log('[mikro-expertise] openFocusedPeriksa:triggered'); return;
return; }
}
autoOpenAttempts++; autoOpenAttempts++;
console.warn('[mikro-expertise] openFocusedPeriksa:trigger failed', { if (autoOpenAttempts >= maxAutoOpenAttempts) {
attempt: autoOpenAttempts $('#divawal').show();
}); } else {
if (autoOpenAttempts >= maxAutoOpenAttempts) { setTimeout(openFocusedPeriksa, 500);
console.error('[mikro-expertise] openFocusedPeriksa:max trigger attempts, showing divawal'); }
$('#divawal').show(); }, 150);
} else { }
setTimeout(openFocusedPeriksa, 500);
}
}, 150);
}
function requestFilteredLoad() { function requestFilteredLoad() {
console.log('[mikro-expertise] requestFilteredLoad:start', { if (hasRequestedFilteredLoad) {
hasRequestedFilteredLoad: hasRequestedFilteredLoad, return;
openedpageType: typeof openedpage }
});
if (hasRequestedFilteredLoad) {
console.warn('[mikro-expertise] requestFilteredLoad:skipped duplicate');
return;
}
hasRequestedFilteredLoad = true; hasRequestedFilteredLoad = true;
setInitialFilters(); setInitialFilters();
if (typeof openedpage === 'function') { if (typeof openedpage === 'function') {
console.log('[mikro-expertise] requestFilteredLoad:calling openedpage');
openedpage(); openedpage();
} else { } else {
console.error('[mikro-expertise] requestFilteredLoad:openedpage missing, showing divawal');
$('#divawal').show(); $('#divawal').show();
} }
} }
$('#gridpemeriksaan').off('bindingcomplete.mikro-expertise').on('bindingcomplete.mikro-expertise', function () { $('#gridpemeriksaan').off('bindingcomplete.mikro-expertise').on('bindingcomplete.mikro-expertise', function () {
console.log('[mikro-expertise] grid bindingcomplete');
openFocusedPeriksa(); openFocusedPeriksa();
}); });
$(window).off('load.mikro-expertise').on('load.mikro-expertise', function () { $(window).off('load.mikro-expertise').on('load.mikro-expertise', function () {
console.log('[mikro-expertise] window load');
requestFilteredLoad(); requestFilteredLoad();
}); });
setTimeout(function () { setTimeout(function () {
console.log('[mikro-expertise] ready fallback load');
requestFilteredLoad(); requestFilteredLoad();
}, 0); }, 0);
@@ -3544,7 +3544,6 @@
if ( $.fn.DataTable.isDataTable('#tblkumanmanual2') ) { if ( $.fn.DataTable.isDataTable('#tblkumanmanual2') ) {
$("#tblkumanmanual2").DataTable().ajax.reload(); $("#tblkumanmanual2").DataTable().ajax.reload();
} }
console.log("Value updated", res);
} }
}); });
} }
@@ -3569,7 +3568,6 @@
if ( $.fn.DataTable.isDataTable('#tblkumanmanual2') ) { if ( $.fn.DataTable.isDataTable('#tblkumanmanual2') ) {
$("#tblkumanmanual2").DataTable().ajax.reload(); $("#tblkumanmanual2").DataTable().ajax.reload();
} }
console.log("Value updated", res);
} }
}); });
} }
@@ -3585,7 +3583,7 @@
_token: '{{ csrf_token() }}' _token: '{{ csrf_token() }}'
}, },
success: function(res) { success: function(res) {
console.log("Value updated", res); // console.log("Value updated", res);
} }
}); });
} }
@@ -4983,41 +4981,22 @@
}); });
} }
function openlamanekpertise(dlp, nofoto, idne){ function openlamanekpertise(dlp, nofoto, idne){
console.log('[openlamanekpertise] start', { dlp = dlp || document.getElementById('dlp').value;
inputDlp: dlp, nofoto = nofoto || document.getElementById('nofoto').value || document.getElementById('nofoto').textContent;
inputNofoto: nofoto, idne = idne || document.getElementById('periksa_id').value;
inputIdne: idne, if ((dlp == '' || dlp == null) && window.mikroExpertiseDirectOpen) {
currentDlp: document.getElementById('dlp') ? document.getElementById('dlp').value : null, $('#divtemplate').show();
currentNofotoValue: document.getElementById('nofoto') ? document.getElementById('nofoto').value : null, } else {
currentNofotoText: document.getElementById('nofoto') ? document.getElementById('nofoto').textContent : null,
currentPeriksaId: document.getElementById('periksa_id') ? document.getElementById('periksa_id').value : null
});
dlp = dlp || document.getElementById('dlp').value;
nofoto = nofoto || document.getElementById('nofoto').value || document.getElementById('nofoto').textContent;
idne = idne || document.getElementById('periksa_id').value;
if ((dlp == '' || dlp == null) && window.mikroExpertiseDirectOpen) {
dlp = 'Kultur';
console.warn('[openlamanekpertise] dlp empty, using direct-open fallback', {
fallbackDlp: dlp,
nofoto: nofoto,
idne: idne
});
}
console.log('[openlamanekpertise] resolved values', {
dlp: dlp,
nofoto: nofoto,
idne: idne
});
$('#dlp').val(dlp);
$('#nofoto').val(nofoto).html(nofoto);
$('#periksa_id').val(idne);
$('#template_jenis').val(dlp);
$('#divreadonly').hide();
$('#divawal').hide();
$('#divperiksa').show();
$('#divtemplate').hide(); $('#divtemplate').hide();
$('.templatejawaban').hide(); }
$('#divpreview').hide(); $('#nofoto').val(nofoto).html(nofoto);
$('#periksa_id').val(idne);
$('#template_jenis').val(dlp);
$('#divreadonly').hide();
$('#divawal').hide();
$('#divperiksa').show();
$('.templatejawaban').hide();
$('#divpreview').hide();
$('#masterdiv').show(); $('#masterdiv').show();
$('.setelahdipilihtemplate').show(); $('.setelahdipilihtemplate').show();
$('#id_bakterihitungkolselect').show(); $('#id_bakterihitungkolselect').show();
@@ -5033,12 +5012,6 @@
$('#vl_hasildiv2select').show(); $('#vl_hasildiv2select').show();
$('#vl_hasildiv2teks').hide(); $('#vl_hasildiv2teks').hide();
$('input[type="checkbox"]').prop('disabled', false); $('input[type="checkbox"]').prop('disabled', false);
console.log('[openlamanekpertise] ui toggled', {
divtemplateVisible: $('#divtemplate').is(':visible'),
masterdivVisible: $('#masterdiv').is(':visible'),
setelahdipilihtemplateVisibleCount: $('.setelahdipilihtemplate:visible').length
});
console.log('Loading komponen jawaban for DLP: '+dlp+' | No.Foto: '+nofoto+' | ID Periksa: '+idne);
var form_data = new FormData(); var form_data = new FormData();
form_data.append('nofoto', nofoto); form_data.append('nofoto', nofoto);
form_data.append('ruangan', dlp); form_data.append('ruangan', dlp);
@@ -5051,14 +5024,8 @@
contentType : false, contentType : false,
processData : false, processData : false,
success : function (response) { success : function (response) {
console.log('[openlamanekpertise] getResult success raw', response);
var komponens = response.komponens || JSON.parse(response); var komponens = response.komponens || JSON.parse(response);
console.log('[openlamanekpertise] getResult parsed', {
count: Array.isArray(komponens) ? komponens.length : null,
komponens: komponens
});
komponens.forEach(function(rows) { komponens.forEach(function(rows) {
console.log(rows.komponen+' | '+rows.isidata);
if (rows.komponen === 'lsg_pewarnaanlain') { if (rows.komponen === 'lsg_pewarnaanlain') {
CKEDITOR.instances['lsg_pewarnaanlain'].setData(rows.isidata); CKEDITOR.instances['lsg_pewarnaanlain'].setData(rows.isidata);
} else if (rows.komponen === 'lsg_ditemukanmorfologi') { } else if (rows.komponen === 'lsg_ditemukanmorfologi') {
@@ -5178,7 +5145,6 @@
}); });
} }
}); });
console.log('Displaying template for DLP: '+dlp);
if (dlp == 'CCI'){ if (dlp == 'CCI'){
$('#templatecci').show(); $('#templatecci').show();
$('#judultemplate').html('CCI'); $('#judultemplate').html('CCI');
@@ -5211,15 +5177,6 @@
$('#templatecovid').show(); $('#templatecovid').show();
$('#judultemplate').html('PCR COVID'); $('#judultemplate').html('PCR COVID');
} }
console.log('[openlamanekpertise] template branch done', {
dlp: dlp,
nofoto: nofoto,
idne: idne,
templateKulturVisible: $('#templatekultur').is(':visible'),
templatePewarnaanVisible: $('#templatepewarnaanlangsung').is(':visible'),
templateTbVisible: $('#templatetbc').is(':visible'),
templateViralLoadVisible: $('#templateviralload').is(':visible')
});
} }
function openedpage( jQuery ){ function openedpage( jQuery ){
var jenis = document.getElementById('master_set01').value; var jenis = document.getElementById('master_set01').value;
@@ -5230,15 +5187,7 @@
var poli = document.getElementById('valpoli2').value; var poli = document.getElementById('valpoli2').value;
var set06 = document.getElementById('master_judul').value; var set06 = document.getElementById('master_judul').value;
var token = document.getElementById('token').value; var token = document.getElementById('token').value;
console.log('[openedpage] getList params', {
jenis: jenis,
mulai: mulai,
akhir: akhir,
valcari: valcari,
poli: poli,
master: master,
judul: set06
});
if (jenis == 'ThisDay'){ if (jenis == 'ThisDay'){
$("#mulai").val(''); $("#mulai").val('');
$("#akhir").val(''); $("#akhir").val('');
@@ -5395,27 +5344,18 @@
$("#gridpemeriksaan").jqxGrid('sortby', 'tlsnofoto', 'asc'); $("#gridpemeriksaan").jqxGrid('sortby', 'tlsnofoto', 'asc');
}, },
columns: [ columns: [
{ text: 'Expertise', filterable: false, columntype: 'button', align: 'center', width: 70, cellsrenderer: function () { { text: 'Expertise', filterable: false, columntype: 'button', align: 'center', width: 70, cellsrenderer: function () {
return "Expertise"; return "Expertise";
}, buttonclick: function (row) { }, buttonclick: function (row) {
editrow = row; editrow = row;
var offset = $("#gridpemeriksaan").offset(); var offset = $("#gridpemeriksaan").offset();
var dataRecord = (row && typeof row === 'object') var dataRecord = (row && typeof row === 'object')
? row ? row
: $("#gridpemeriksaan").jqxGrid('getrowdata', editrow); : $("#gridpemeriksaan").jqxGrid('getrowdata', editrow);
console.log('[expertise button] clicked/resolved row', { if (!dataRecord || typeof dataRecord.id === 'undefined') {
inputRow: row, return;
editrow: editrow, }
dataRecord: dataRecord $("#nofoto").val('');
});
if (!dataRecord || typeof dataRecord.id === 'undefined') {
console.error('[expertise button] dataRecord missing/invalid', {
inputRow: row,
editrow: editrow
});
return;
}
$("#nofoto").val('');
$("#id_mikroorganismeoptional").val('').trigger('change'); $("#id_mikroorganismeoptional").val('').trigger('change');
for (var instance in CKEDITOR.instances) { for (var instance in CKEDITOR.instances) {
@@ -5447,16 +5387,9 @@
var cekuser5 = dataRecord.iddokter; var cekuser5 = dataRecord.iddokter;
var cekuser6 = dataRecord.analis; var cekuser6 = dataRecord.analis;
var set01 = dataRecord.pasien_id; var set01 = dataRecord.pasien_id;
var accnumber = dataRecord.nofoto; var accnumber = dataRecord.nofoto;
var cekkesimpulan = dataRecord.kesimpulan; var cekkesimpulan = dataRecord.kesimpulan;
var dlp = dataRecord.dlp; var dlp = dataRecord.dlp;
console.log('[expertise button] key values', {
id: goook,
nofoto: nofoto,
dlp: dlp,
status: statuse,
pasien_id: set01
});
var masteru = document.getElementById('master_userid').value; var masteru = document.getElementById('master_userid').value;
var token = document.getElementById('token').value; var token = document.getElementById('token').value;
var sourceadendum = { var sourceadendum = {