diff --git a/resources/views/form/rapport-team4/1791539482-b06c2f9a-fe45-4b16-843a-224f07ed0d7b.blade.php b/resources/views/form/rapport-team4/1791539482-b06c2f9a-fe45-4b16-843a-224f07ed0d7b.blade.php
index 9c3d48ca..e2b2119c 100644
--- a/resources/views/form/rapport-team4/1791539482-b06c2f9a-fe45-4b16-843a-224f07ed0d7b.blade.php
+++ b/resources/views/form/rapport-team4/1791539482-b06c2f9a-fe45-4b16-843a-224f07ed0d7b.blade.php
@@ -265,93 +265,152 @@
console.log(err);
});
})
- )..then(function() {
+ ).then(function() {
+ // All contacts loaded for each hierarchy
+ // Example usage: console.log(contacts);
// Filter out contacts where value == 'sample'
- contacts = contacts.filter(function(itm) {
- return itm.value !== 'sample' && itm.contact && itm.contact.type === 'doctor';
- });
+ contacts = contacts.filter(function(itm) { return itm.value !== 'sample' && itm.contact && itm.contact.type === 'doctor' });
contacts.sort(function(a, b) {
return (a.display || '').localeCompare(b.display || '', undefined, { sensitivity: 'base' });
});
- console.log("Filtered Contacts:", contacts);
+ console.log(contacts);
+
+ // Loop through contacts and append options to select elements whose id starts with 'field-contact_id'
+ // We assume contact_id fields may be suffixed, e.g. field-contact_id_1, field-contact_id, etc.
+ function applySelect2ToDoctorDropdowns() {
+ $("select[id^='field-contact_id']").each(function () {
+ var select = $(this);
+ // Avoid re-initializing select2
+ if (select.data("select2")) return;
+ select.select2({
+ width: "100%",
+ placeholder: "-- Select --",
+ allowClear: true
+ });
+ });
+ }
$('input[id^="field-msl_code"], input[id^="field-speciality"]').prop('readonly', true);
- // १. सर्व Dropdowns मध्ये options भरा
+
+
+ function enforceUniqueDoctorSelections() {
+ var selectedValues = [];
+
+
+ $("select[id^='field-contact_id']").each(function () {
+ var v = $(this).val();
+ if (v) selectedValues.push(String(v));
+ });
+
+
+ $("select[id^='field-contact_id']").each(function () {
+ var currentSelect = $(this);
+ var currentVal = currentSelect.val() ? String(currentSelect.val()) : "";
+
+ currentSelect.find("option").prop("disabled", false);
+
+ selectedValues.forEach(function (v) {
+ if (v && v !== currentVal) {
+ currentSelect
+ .find("option[value=\"" + v.replace(/"/g, '\\"') + "\"]")
+ .prop("disabled", true);
+ }
+ });
+
+
+ if (currentSelect.hasClass("select2-hidden-accessible")) {
+
+ currentSelect.select2({
+ width: "100%",
+ placeholder: "-- Select --",
+ allowClear: true
+ });
+ }
+ });
+ }
+
+
$("select[id^='field-contact_id']").each(function() {
- var select = $(this);
- var savedValue = select.attr('data-selected') || select.data('selected') || select.val() || '';
+ var select = $(this);
+ // Clear previous options
- // आधीपासून Select2 असेल तर तात्पुरते नष्ट करा जेणेकरून नवीन options व्यवस्थित लोड होतील
- if (select.hasClass("select2-hidden-accessible")) {
- select.select2('destroy');
- }
+ var savedValue = select.attr('data-selected') || select.data('selected') || select.val() || '';
+ select.empty();
- // जुने options रिकामे करा
- select.empty();
+ // Add a default 'Select' option
+ select.append(
+ $("")
+ .attr("value", '')
+ .text('-- Select --')
+ );
+ // Append options from contacts
+ contacts.forEach(function(itm) {
+ var option = $("")
+ .attr("value", itm.value)
+ .text(itm.display);
+
- // Default option जोडा
- select.append($("").attr("value", '').text('-- Select --'));
- // नवीन options जोडा
- contacts.forEach(function(itm) {
- var option = $("")
- .attr("value", itm.value)
- .text(itm.display);
+ // If doctor options have extra attributes
+ if (itm.contact && itm.contact.msl_code) {
+ option.attr("msl_code", itm.contact.msl_code);
+ }
+ if (itm.contact && itm.contact.speciality) {
+ option.attr("speciality", itm.contact.speciality);
+ }
- if (itm.contact && itm.contact.msl_code) {
- option.attr("msl_code", itm.contact.msl_code);
- }
- if (itm.contact && itm.contact.speciality) {
- option.attr("speciality", itm.contact.speciality);
+ if (savedValue && String(savedValue) === String(itm.value)) {
+ option.prop('selected', true);
+ }
+
+ select.append(option);
+ });
+
+ // For each select element, add a change event handler to populate `msl_code` and `speciality`
+ // We assume dropdowns and targets follow the pattern:
+ // - select: field-contact_id_1, field-contact_id_2, ..., field-contact_id
+ // - result: field-msl_code_1, field-speciality_1, etc.
+
+ // Remove any old event handlers first to prevent duplicate bindings
+ select.off('change').on('change', function () {
+ var selected = $(this).find(':selected');
+
+ var selectId = $(this).attr('id'); // e.g., field-contact_id_1
+ // Extract the suffix (e.g., _1 or empty)
+ var match = selectId.match(/^field-contact_id(_\d+)?$/);
+ var suffix = match && match[1] ? match[1] : '';
+
+ // Build the target msl_code and speciality field ids
+ var mslCodeField = $('#field-msl_code' + suffix);
+ var specialityField = $('#field-speciality' + suffix);
+
+ if (mslCodeField.length) {
+ mslCodeField.val(selected.attr('msl_code') || '');
+ }
+ if (specialityField.length) {
+ specialityField.val(selected.attr('speciality') || '');
+ }
+
+ // Prevent selecting the same doctor across multiple dropdowns
+ enforceUniqueDoctorSelections();
+ });
+
+ if (savedValue) {
+ select.val(savedValue).trigger('change');
}
- if (savedValue && String(savedValue) === String(itm.value)) {
- option.prop('selected', true);
- }
-
- select.append(option);
- });
-
- // Change event bind करा
- select.off('change').on('change', function () {
- var selected = $(this).find(':selected');
- var selectId = $(this).attr('id');
- var match = selectId.match(/^field-contact_id(_\d+)?$/);
- var suffix = match && match[1] ? match[1] : '';
-
- var mslCodeField = $('#field-msl_code' + suffix);
- var specialityField = $('#field-speciality' + suffix);
-
- if (mslCodeField.length) {
- mslCodeField.val(selected.attr('msl_code') || '');
- }
- if (specialityField.length) {
- specialityField.val(selected.attr('speciality') || '');
- }
+
+ });
+ // Ensure unique selection is enforced after initial render
enforceUniqueDoctorSelections();
- });
-
- // Select2 पुन्हा लागू करा
- select.select2({
- width: "100%",
- placeholder: "-- Select --",
- allowClear: true
- });
-
- if (savedValue) {
- select.val(savedValue).trigger('change');
- }
+ // Enable search on doctor dropdowns
+ applySelect2ToDoctorDropdowns();
+ $("#pageloader").fadeOut();
});
-
- // Unique doctor selections नियम लागू करा
- enforceUniqueDoctorSelections();
-
- $("#pageloader").fadeOut();
- });