PageSourceSearch

https://khulnacity.gov.bd/widget-assets/js/OfficeFindThreeWidget

js khulnacity.gov.bd collected 2026-10-08 07:03:36 UTC 9,907 bytes, 3 lines download raw bytes

1;((window,document)=>{ // OfficeFindThreeWidget
2let widgetStateV3={},geoLevelMapping={divisional_level:["division"],district_level:["division","district"],upazila_level:["division","district","upazila"],upazila_regional_office:["division","district","upazila"],pourashava_level:["division","district","upazila"],union_level:["division","district","upazila","union"],regional_office:["division"]},geoApiEndpoints={division:"/ajax/get/division/list",district:"/ajax/get/district/{loc_id}/list",upazila:"/ajax/get/upazilla/{loc_id}/list",union:"/ajax/get/union/{loc_id}/list",city_corporation:"/ajax/get/city-corporation/{loc_id}/list"},geoFieldMapping={division:"loc_division_id",district:"loc_district_id",upazila:"loc_upazila_id",union:"loc_union_id",city_corporation:"loc_district_id"};function getLangV3(e){return widgetStateV3[e]?.lang||"bn"}function getTitleFieldV3(e){return"en"===e?"title_en":"title_bn"}let placeholdersV3={office_level:{en:"Select Office Level",bn:"অফিস স্তর নির্বাচন করুন"},division:{en:"Select Division",bn:"বিভাগ নির্বাচন করুন"},district:{en:"Select District",bn:"জেলা নির্বাচন করুন"},upazila:{en:"Select Upazila",bn:"উপজেলা নির্বাচন করুন"},union:{en:"Select Union",bn:"ইউনিয়ন নির্বাচন করুন"},city_corporation:{en:"Select City Corporation",bn:"সিটি কর্পোরেশন নির্বাচন করুন"},office:{en:"Select Office",bn:"অফিস নির্বাচন করুন"}};function getPlaceholderV3(e,t){return placeholdersV3[e]?.[t]||placeholdersV3[e]?.bn||""}function createDropdownV3(e,t,i){var o=document.createElement("select"),e=(o.id=e,document.createElement("option"));return e.value="",e.textContent=t,o.appendChild(e),i&&o.addEventListener("change",function(e){updateSelectTitleV3(this),i.call(this,e)}),o}function updateSelectTitleV3(e){e&&0<=e.selectedIndex&&(e.title=e.options[e.selectedIndex].text||"")}function populateDropdownV3(o,e,n,a="_id"){for(;1<o.options.length;)o.remove(1);e.forEach(e=>{var t=document.createElement("option"),i=(t.value=e[a],e[n]||e.title_en||e.title_bn||"");t.textContent=i,t.title=i,t.dataset.item=JSON.stringify(e),o.appendChild(t)})}function setDropdownValueV3(e,t){e&&t&&(e.value=t,updateSelectTitleV3(e))}function showSpinnerV3(e){hideSpinnerV3(e);var t=document.createElement("span");return t.className="loading-spinner",t.innerHTML='<i class="ph ph-spinner-gap"></i>',e.appendChild(t),t}function hideSpinnerV3(e){e=e.querySelector(".loading-spinner");e&&e.remove()}function clearDropdownsAfterV3(e,t){let i=!1;Array.from(e.children).forEach(e=>{i&&e.remove(),e===t&&(i=!0)})}async function handleOfficeLevelChangeV3(e,t,i,o){var n=t.options[t.selectedIndex],a=t.value;getLangV3(e);clearDropdownsAfterV3(i,t),o.setAttribute("disabled",!0),a&&(n=(t=JSON.parse(n.dataset.item||"{}")).is_geo_level||0,t=t.code||"",widgetStateV3[e].officeLevelId=a,widgetStateV3[e].levelCode=t,widgetStateV3[e].isGeoLevel=n,widgetStateV3[e].geoLocations={},1===n&&0<(a=geoLevelMapping[t]||[]).length?await loadGeoDropdownV3(e,i,o,a,0,null):await loadOfficesDropdownV3(e,i,o))}async function loadGeoDropdownV3(i,o,n,a,l,e){var t=getLangV3(i);let d=a[l],c=geoApiEndpoints[d];e&&(c=c.replace("{loc_id}",e)),showSpinnerV3(o);try{var r=await fetch(c);if(hideSpinnerV3(o),!r.ok)throw new Error(`Failed to fetch ${d} list`);var s,f,p=await r.json();p&&0<p.length&&(s=getTitleFieldV3(t),populateDropdownV3(f=createDropdownV3(`geo_${d}_`+i,getPlaceholderV3(d,t),async function(){var e,t=this.value;clearDropdownsAfterV3(o,this),n.setAttribute("disabled",!0),t&&(widgetStateV3[i].geoLocations[d]=t,(e=l+1)<a.length?await loadGeoDropdownV3(i,o,n,a,e,t):await loadOfficesDropdownV3(i,o,n))}),p,s),o.appendChild(f))}catch(e){console.error(`Error fetching ${d} list:`,e)}}async function loadOfficesDropdownV3(e,t,i){var o,n=getLangV3(e),{officeTypeId:a,officeLevelId:l,geoLocations:d}=widgetStateV3[e],c=[];if(c.push("office_type_id="+a),d&&0<Object.keys(d).length)for(o of["union","upazila","city_corporation","district","division"])if(d[o]){var r=geoFieldMapping[o];c.push("loc_id="+d[o]),c.push("loc_type="+r);break}a=0<c.length?"?"+c.join("&"):"";showSpinnerV3(t);try{var s=await fetch(`/ajax/get/office-level/${l}/offices`+a);if(hideSpinnerV3(t),!s.ok)throw new Error("Failed to fetch offices");
2var f,p,g=await s.json();g&&0<g.length&&(f=getTitleFieldV3(n),populateDropdownV3(p=createDropdownV3("office_"+e,getPlaceholderV3("office",n),function(){this.value?(widgetStateV3[e].selectedOffice=JSON.parse(this.options[this.selectedIndex].dataset.item||"{}"),i.removeAttribute("disabled")):i.setAttribute("disabled",!0)}),g,f),t.appendChild(p))}catch(e){console.error("Error fetching offices:",e)}}async function loadOfficesDropdownWithPreselectV3(e,t,i,o){var n,a=getLangV3(e),{officeTypeId:l,officeLevelId:d,geoLocations:c}=widgetStateV3[e],r=[];if(r.push("office_type_id="+l),c&&0<Object.keys(c).length)for(n of["union","upazila","city_corporation","district","division"])if(c[n]){var s=geoFieldMapping[n];r.push("loc_id="+c[n]),r.push("loc_type="+s);break}l=0<r.length?"?"+r.join("&"):"";try{var f,p,g,u=await fetch(`/ajax/get/office-level/${d}/offices`+l);u.ok&&(f=await u.json())&&0<f.length&&(p=getTitleFieldV3(a),populateDropdownV3(g=createDropdownV3("office_"+e,getPlaceholderV3("office",a),function(){this.value?(widgetStateV3[e].selectedOffice=JSON.parse(this.options[this.selectedIndex].dataset.item||"{}"),i.removeAttribute("disabled")):i.setAttribute("disabled",!0)}),f,p),o&&(setDropdownValueV3(g,o),g.value===o)&&i.removeAttribute("disabled"),t.appendChild(g))}catch(e){console.error("Error fetching offices:",e)}}window.handleOfficeTypeChangeV3=async function(e,t,i,o){let n=document.getElementById(o),a=document.getElementById(i);var l=t.options[t.selectedIndex],d=t.value,t=t.dataset.lang||"bn";if(widgetStateV3[e]={lang:t,officeTypeId:d,dynamicDropdownsId:i,goBtnId:o,allowLevels:{}},a.innerHTML="",n.setAttribute("disabled",!0),d){i=JSON.parse(l.dataset.allowLevels||"{}");widgetStateV3[e].allowLevels=i,showSpinnerV3(a);try{var c=await fetch(`/ajax/get/office-type/${d}/levels`);if(hideSpinnerV3(a),!c.ok)throw new Error("Failed to fetch office levels");var r,s,f,p,g=await c.json();g&&0<g.length&&(r=getTitleFieldV3(t),1===g.length?(s=g[0],widgetStateV3[e].officeLevelId=s._id,widgetStateV3[e].levelCode=s?.code||"",widgetStateV3[e].isGeoLevel=s?.is_geo_level||0,widgetStateV3[e].geoLocations={},1===s?.is_geo_level&&0<(f=geoLevelMapping[s?.code]||[]).length?await loadGeoDropdownV3(e,a,n,f,0,null):await loadOfficesDropdownV3(e,a,n)):(populateDropdownV3(p=createDropdownV3("officeLevel_"+e,getPlaceholderV3("office_level",t),function(){handleOfficeLevelChangeV3(e,this,a,n)}),g,r),a.appendChild(p)))}catch(e){console.error("Error fetching office levels:",e)}}},window.handleGoClickV3=function(t){t=document.getElementById(t).querySelector('select[id^="office_"]');if(t&&t.value){t=t.options[t.selectedIndex],t=JSON.parse(t.dataset.item||"{}");let e=null;t.domains&&0<t.domains.length?e=t.domains[0].subdomain:t.domain?e=t.domain:t.subdomain?e=t.subdomain:t.file_domain&&(e=t.file_domain),e?window.open("//"+e,"_blank"):console.warn("No domain found for selected office")}},window.initOfficeFindThreePreselect=async function(a,e,t,l){var i=document.getElementById("officeType_"+a);let d=document.getElementById(e),c=document.getElementById(t);if(i&&l.officeTypeId){var r=i.dataset.lang||"bn",s=getTitleFieldV3(r);widgetStateV3[a]={lang:r,officeTypeId:l.officeTypeId,dynamicDropdownsId:e,goBtnId:t,allowLevels:{},geoLocations:{}};try{var o=await fetch(`/ajax/get/office-type/${l.officeTypeId}/levels`);if(o.ok){var n,f=await o.json();if(f&&0!==f.length){let e=null;if(1===f.length?e=f[0]:l.officeLevelId&&(populateDropdownV3(n=createDropdownV3("officeLevel_"+a,getPlaceholderV3("office_level",r),function(){handleOfficeLevelChangeV3(a,this,d,c)}),f,s),setDropdownValueV3(n,l.officeLevelId),d.appendChild(n),e=f.find(e=>e._id.toString()===l.officeLevelId)),e){if(widgetStateV3[a].officeLevelId=e._id,widgetStateV3[a].levelCode=e?.code||"",widgetStateV3[a].isGeoLevel=e?.is_geo_level||0,1===e?.is_geo_level){let n=geoLevelMapping[e?.code]||[];for(let o=0;o<n.length;o++){let i=n[o],e=null,t=(0===o?e=null:"district"===i?e=l.divisionId:"upazila"===i?e=l.districtId:"union"===i&&(e=l.upazilaId),geoApiEndpoints[i]);if(e){t=t.replace("{loc_id}",e);try{var p=await fetch(t);if(!p.ok)break;var g=await p.json();if(g&&0<g.length){var u=createDropdownV3(`geo_${i}_`+a,getPlaceholderV3(i,r),async function(){var e,t=this.value;clearDropdownsAfterV3(d,this),c.setAttribute("disabled",!0),t&&(widgetStateV3[a].geoLocations[i]=t,(e=n.indexOf(i)+1)<n.length?await loadGeoDropdownV3(a,d,c,n,e,t):await loadOfficesDropdownV3(a,d,c))});populateDropdownV3(u,g,s);let e="";if("division"===i?e=l.divisionId:"district"===i?e=l.districtId:"upazila"===i?e=l.upazilaId:"union"===i&&(e=l.unionId),e&&(setDropdownValueV3(u,e),widgetStateV3[a].geoLocations[i]=e),d.appendChild(u),!e)break}}catch(e){console.error(`Error loading ${i}:`,e);break}}}}await loadOfficesDropdownWithPreselectV3(a,d,c,l.officeId)}}}}catch(e){console.error("Error in pre-selection:",e)}}},(()=>{function e(){document.querySelectorAll(".office-findthree-widget[data-
2preselect]").forEach(function(e){try{var t,i,o,n=e.dataset.widgetId,a=JSON.parse(e.dataset.preselect||"{}");n&&a.officeTypeId&&(t=document.getElementById("officeType_"+n),i=e.querySelector(".dynamic-dropdowns"),o=e.querySelector('button[id^="i"]'),t)&&i&&o&&window.initOfficeFindThreePreselect(n,i.id,o.id,a)}catch(e){console.error("Error auto-initializing OfficeFindThreeWidget:",e)}})}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):setTimeout(e,100)})();
3})(_window,_document);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.