231 lines
9.5 KiB
PHP
231 lines
9.5 KiB
PHP
<!--
|
|
@extends(Session::get('previlage') == 'developer' ? 'dokter.ppdsdeveloper' : 'dokter.ppds')
|
|
-->
|
|
@extends('dokter.ppdsdeveloper')
|
|
|
|
@push('script')
|
|
<script type="text/javascript">
|
|
$(function () {
|
|
var focusPeriksaId = @json((string) ($focusPeriksaId ?? ''));
|
|
var focusNoFoto = @json((string) ($focusNoFoto ?? ''));
|
|
var returnUrl = @json($expertiseReturnUrl ?? url('/'));
|
|
var shouldOpenOnLoad = @json((bool) ($openExpertiseOnLoad ?? false));
|
|
var initialListMode = @json($initialListMode ?? 'searchbydate');
|
|
var initialSearchValue = @json($initialSearchValue ?? '');
|
|
var initialStartDate = @json($initialStartDate ?? '');
|
|
var initialEndDate = @json($initialEndDate ?? '');
|
|
var autoOpenAttempts = 0;
|
|
var maxAutoOpenAttempts = 12;
|
|
var hasOpenedTarget = false;
|
|
var hasRequestedFilteredLoad = false;
|
|
|
|
console.log('[mikro-expertise] init', {
|
|
focusPeriksaId: focusPeriksaId,
|
|
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) {
|
|
$('#akhir').val(initialEndDate);
|
|
}
|
|
if ($('#valjenis').length) {
|
|
$('#valjenis').val(initialListMode);
|
|
}
|
|
if ($('#master_set01').length) {
|
|
$('#master_set01').val(initialListMode);
|
|
}
|
|
if ($('#valcari').length) {
|
|
$('#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) {
|
|
var row = $('#gridpemeriksaan').find('[role="row"][boundindex="' + boundIndex + '"]').first();
|
|
if (!row.length) {
|
|
return $();
|
|
}
|
|
|
|
return row.find('button, input, .jqx-button').filter(function () {
|
|
var text = $.trim($(this).text());
|
|
var value = $.trim($(this).val());
|
|
return text === 'Expertise' || value === 'Expertise';
|
|
}).first();
|
|
}
|
|
|
|
function triggerExpertiseButton(boundIndex, rowData) {
|
|
console.log('[mikro-expertise] triggerExpertiseButton:start', {
|
|
boundIndex: boundIndex,
|
|
rowData: rowData
|
|
});
|
|
try {
|
|
var columns = $('#gridpemeriksaan').jqxGrid('columns');
|
|
var records = columns && columns.records ? columns.records : [];
|
|
console.log('[mikro-expertise] triggerExpertiseButton:columns', {
|
|
count: records.length
|
|
});
|
|
|
|
for (var i = 0; i < records.length; i++) {
|
|
var column = records[i];
|
|
if (column && typeof column.buttonclick === 'function') {
|
|
var renderedLabel = typeof column.cellsrenderer === 'function'
|
|
? column.cellsrenderer()
|
|
: '';
|
|
|
|
if (String(renderedLabel).indexOf('Expertise') !== -1) {
|
|
console.log('[mikro-expertise] triggerExpertiseButton:calling column.buttonclick', {
|
|
columnIndex: i,
|
|
renderedLabel: renderedLabel
|
|
});
|
|
column.buttonclick(rowData || boundIndex);
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
} catch (error) {
|
|
console.error('[mikro-expertise] triggerExpertiseButton:error', error);
|
|
}
|
|
|
|
var button = findExpertiseButton(boundIndex);
|
|
if (button.length) {
|
|
console.log('[mikro-expertise] triggerExpertiseButton:fallback DOM button click');
|
|
button.trigger('click');
|
|
return true;
|
|
}
|
|
|
|
console.warn('[mikro-expertise] triggerExpertiseButton:not found');
|
|
return false;
|
|
}
|
|
|
|
function openFocusedPeriksa() {
|
|
console.log('[mikro-expertise] openFocusedPeriksa:start', {
|
|
shouldOpenOnLoad: shouldOpenOnLoad,
|
|
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++) {
|
|
if (String(rows[i].id) === focusPeriksaId || (focusNoFoto !== '' && String(rows[i].nofoto) === focusNoFoto)) {
|
|
matchedRow = rows[i];
|
|
matchedRowBoundIndex = typeof rows[i].boundindex !== 'undefined'
|
|
? rows[i].boundindex
|
|
: i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!matchedRow) {
|
|
autoOpenAttempts++;
|
|
console.warn('[mikro-expertise] openFocusedPeriksa:not matched', {
|
|
attempt: autoOpenAttempts,
|
|
focusPeriksaId: focusPeriksaId,
|
|
focusNoFoto: focusNoFoto
|
|
});
|
|
if (autoOpenAttempts >= maxAutoOpenAttempts) {
|
|
console.error('[mikro-expertise] openFocusedPeriksa:max attempts, showing divawal');
|
|
$('#divawal').show();
|
|
}
|
|
return;
|
|
}
|
|
|
|
var triggerRowIndex = matchedRowBoundIndex >= 0 ? matchedRowBoundIndex : matchedRow.boundindex;
|
|
console.log('[mikro-expertise] openFocusedPeriksa:matched', {
|
|
triggerRowIndex: triggerRowIndex,
|
|
row: matchedRow
|
|
});
|
|
$('#gridpemeriksaan').jqxGrid('selectrow', triggerRowIndex);
|
|
$('#gridpemeriksaan').jqxGrid('ensurerowvisible', triggerRowIndex);
|
|
|
|
setTimeout(function () {
|
|
if (triggerExpertiseButton(triggerRowIndex, matchedRow)) {
|
|
hasOpenedTarget = true;
|
|
console.log('[mikro-expertise] openFocusedPeriksa:triggered');
|
|
return;
|
|
}
|
|
|
|
autoOpenAttempts++;
|
|
console.warn('[mikro-expertise] openFocusedPeriksa:trigger failed', {
|
|
attempt: autoOpenAttempts
|
|
});
|
|
if (autoOpenAttempts >= maxAutoOpenAttempts) {
|
|
console.error('[mikro-expertise] openFocusedPeriksa:max trigger attempts, showing divawal');
|
|
$('#divawal').show();
|
|
}
|
|
}, 150);
|
|
}
|
|
|
|
function requestFilteredLoad() {
|
|
console.log('[mikro-expertise] requestFilteredLoad:start', {
|
|
hasRequestedFilteredLoad: hasRequestedFilteredLoad,
|
|
openedpageType: typeof openedpage
|
|
});
|
|
if (hasRequestedFilteredLoad) {
|
|
console.warn('[mikro-expertise] requestFilteredLoad:skipped duplicate');
|
|
return;
|
|
}
|
|
|
|
hasRequestedFilteredLoad = true;
|
|
setInitialFilters();
|
|
if (typeof openedpage === 'function') {
|
|
console.log('[mikro-expertise] requestFilteredLoad:calling openedpage');
|
|
openedpage();
|
|
} else {
|
|
console.error('[mikro-expertise] requestFilteredLoad:openedpage missing, showing divawal');
|
|
$('#divawal').show();
|
|
}
|
|
}
|
|
|
|
$('#gridpemeriksaan').off('bindingcomplete.mikro-expertise').on('bindingcomplete.mikro-expertise', function () {
|
|
console.log('[mikro-expertise] grid bindingcomplete');
|
|
openFocusedPeriksa();
|
|
});
|
|
|
|
$(window).off('load.mikro-expertise').on('load.mikro-expertise', function () {
|
|
console.log('[mikro-expertise] window load');
|
|
requestFilteredLoad();
|
|
});
|
|
|
|
$('#btnkembali2').off('click.mikro-expertise').on('click.mikro-expertise', function () {
|
|
window.location.href = returnUrl;
|
|
});
|
|
});
|
|
</script>
|
|
@endpush
|