OPD: fix Select2 transport error and stale investigation results
This commit is contained in:
parent
2b32dfe5da
commit
658e67ad3b
|
|
@ -2031,6 +2031,48 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var investigationSearchUrl = '<?= base_url('Opd_prescription/investigation_search') ?>';
|
||||||
|
var investigationSearchLatest = {};
|
||||||
|
|
||||||
|
function requestInvestigationSearchLatest(key, queryData, onSuccess, onFailure) {
|
||||||
|
var reqKey = (key || 'default').toString();
|
||||||
|
var state = investigationSearchLatest[reqKey] || { seq: 0, xhr: null };
|
||||||
|
state.seq += 1;
|
||||||
|
var seq = state.seq;
|
||||||
|
|
||||||
|
if (state.xhr && state.xhr.readyState !== 4) {
|
||||||
|
state.xhr.abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
state.xhr = $.ajax({
|
||||||
|
url: investigationSearchUrl,
|
||||||
|
dataType: 'json',
|
||||||
|
data: queryData || {}
|
||||||
|
}).done(function(data) {
|
||||||
|
var latest = investigationSearchLatest[reqKey];
|
||||||
|
if (!latest || latest.seq !== seq) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (typeof onSuccess === 'function') {
|
||||||
|
onSuccess(data || { rows: [] });
|
||||||
|
}
|
||||||
|
}).fail(function(xhr, textStatus, errorThrown) {
|
||||||
|
var latest = investigationSearchLatest[reqKey];
|
||||||
|
if (!latest || latest.seq !== seq) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (textStatus === 'abort') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (typeof onFailure === 'function') {
|
||||||
|
onFailure(xhr, textStatus, errorThrown);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
investigationSearchLatest[reqKey] = state;
|
||||||
|
return state.xhr;
|
||||||
|
}
|
||||||
|
|
||||||
function apiPost(url, payload, cb) {
|
function apiPost(url, payload, cb) {
|
||||||
var csrf = getCsrfPair();
|
var csrf = getCsrfPair();
|
||||||
payload = payload || {};
|
payload = payload || {};
|
||||||
|
|
@ -3500,13 +3542,7 @@
|
||||||
delay: 250,
|
delay: 250,
|
||||||
transport: function(params, success, failure) {
|
transport: function(params, success, failure) {
|
||||||
var term = (params.data && params.data.term) ? params.data.term : '';
|
var term = (params.data && params.data.term) ? params.data.term : '';
|
||||||
$.ajax({
|
requestInvestigationSearchLatest('custom_investigation_select2', { q: term }, success, failure);
|
||||||
url: '<?= base_url('Opd_prescription/investigation_search') ?>',
|
|
||||||
dataType: 'json',
|
|
||||||
data: { q: term },
|
|
||||||
success: success,
|
|
||||||
error: failure
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
processResults: function(data) {
|
processResults: function(data) {
|
||||||
var rows = (data && data.rows) ? data.rows : [];
|
var rows = (data && data.rows) ? data.rows : [];
|
||||||
|
|
@ -3548,13 +3584,7 @@
|
||||||
delay: 250,
|
delay: 250,
|
||||||
transport: function(params, success, failure) {
|
transport: function(params, success, failure) {
|
||||||
var term = (params.data && params.data.term) ? params.data.term : '';
|
var term = (params.data && params.data.term) ? params.data.term : '';
|
||||||
$.ajax({
|
requestInvestigationSearchLatest('investigation_name_select2', { q: term }, success, failure);
|
||||||
url: '<?= base_url('Opd_prescription/investigation_search') ?>',
|
|
||||||
dataType: 'json',
|
|
||||||
data: { q: term },
|
|
||||||
success: success,
|
|
||||||
error: failure
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
processResults: function(data) {
|
processResults: function(data) {
|
||||||
var rows = (data && data.rows) ? data.rows : [];
|
var rows = (data && data.rows) ? data.rows : [];
|
||||||
|
|
@ -3638,13 +3668,12 @@
|
||||||
delay: 250,
|
delay: 250,
|
||||||
transport: function(params, success, failure) {
|
transport: function(params, success, failure) {
|
||||||
var term = (params.data && params.data.term) ? params.data.term : '';
|
var term = (params.data && params.data.term) ? params.data.term : '';
|
||||||
$.ajax({
|
requestInvestigationSearchLatest(
|
||||||
url: '<?= base_url('Opd_prescription/investigation_search') ?>',
|
'investigation_name_select2',
|
||||||
dataType: 'json',
|
{ q: term, fav_only: invFavOnly ? 1 : 0, spec_id: invSpecId },
|
||||||
data: { q: term, fav_only: invFavOnly ? 1 : 0, spec_id: invSpecId },
|
success,
|
||||||
success: success,
|
failure
|
||||||
error: failure
|
);
|
||||||
});
|
|
||||||
},
|
},
|
||||||
processResults: function(data) {
|
processResults: function(data) {
|
||||||
var rows = (data && data.rows) ? data.rows : [];
|
var rows = (data && data.rows) ? data.rows : [];
|
||||||
|
|
@ -7247,13 +7276,15 @@
|
||||||
if (q.length < 1) {
|
if (q.length < 1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
apiGet('<?= base_url('Opd_prescription/investigation_search') ?>?q=' + encodeURIComponent(q), function(data) {
|
requestInvestigationSearchLatest('investigation_name_datalist', { q: q }, function(data) {
|
||||||
var html = '';
|
var html = '';
|
||||||
(data.rows || []).forEach(function(row) {
|
(data.rows || []).forEach(function(row) {
|
||||||
var text = (row.name || '') + ((row.code || '') ? ' [' + row.code + ']' : '');
|
var text = (row.name || '') + ((row.code || '') ? ' [' + row.code + ']' : '');
|
||||||
html += '<option value="' + $('<div>').text(text).html() + '" data-code="' + $('<div>').text(row.code || '').html() + '" data-name="' + $('<div>').text(row.name || '').html() + '"></option>';
|
html += '<option value="' + $('<div>').text(text).html() + '" data-code="' + $('<div>').text(row.code || '').html() + '" data-name="' + $('<div>').text(row.name || '').html() + '"></option>';
|
||||||
});
|
});
|
||||||
$('#investigation_suggest').html(html);
|
$('#investigation_suggest').html(html);
|
||||||
|
}, function() {
|
||||||
|
$('#investigation_suggest').html('');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -7439,13 +7470,8 @@
|
||||||
success({ rows: [] });
|
success({ rows: [] });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$.ajax({
|
var key = 'investigation_category_' + (category || 'all');
|
||||||
url: '<?= base_url('Opd_prescription/investigation_search') ?>',
|
requestInvestigationSearchLatest(key, { q: term, category: category }, success, failure);
|
||||||
dataType: 'json',
|
|
||||||
data: { q: term, category: category },
|
|
||||||
success: success,
|
|
||||||
error: failure
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
processResults: function(data) {
|
processResults: function(data) {
|
||||||
var rows = (data && data.rows) ? data.rows : [];
|
var rows = (data && data.rows) ? data.rows : [];
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user