{ "version": 3, "sources": ["../../../../../apps/medad_sis_ui/medad_sis_ui/public/js/formio/components/OneCallApplicantProgram.bundle.js"], "sourcesContent": ["// import { Formio } from \"formiojs\";\n\nconst FieldComponent = Formio.Components.components.field;\n\nclass OneCallApplicantProgramComponent extends FieldComponent {\n static schema(...extend) {\n return FieldComponent.schema(\n {\n label: \"One Call Applicant Program\",\n key: \"OneCallApplicantProgram\",\n type: \"OneCallApplicantProgram\",\n apiendpoint: \"\",\n campusLable: \"Campus\",\n collegeLable: \"College\",\n preferenceLable: \"Preference\",\n activateCollege: false,\n },\n ...extend\n );\n }\n\n static get builderInfo() {\n return {\n title: \"One Call Applicant Program\",\n icon: \"th\",\n group: \"data\",\n documentation: \"/userguide/#textfield\",\n weight: 0,\n schema: OneCallApplicantProgramComponent.schema(),\n };\n }\n\n constructor(component, options, data) {\n super(component, options, data);\n this.result = [];\n this.apiData = [];\n this.rowNumber = 0;\n this.allowToRemove = true;\n const protocol = window.location.protocol;\n const hostname = window.location.hostname;\n const port = window.location.port;\n this.fetchValidationValues = `${protocol}//${hostname}:${port}/api/method/medad_sis_adm.apis.v2.application.get_application_model_min_max_preferences_and_max_campuses?model={{_model}}`;\n this.maximumCampuses = 0;\n this.minimum = 0;\n this.maximum = 0;\n }\n\n async init() {\n super.init();\n }\n\n render(content) {\n return super\n .render(`
\n
\n \n \n \n \n \n ${\n this.component.activateCollege\n ? ``\n : \"\"\n }\n \n \n \n \n \n ${\n this.getValue() &&\n this.getValue()[\"applicant_program\"].length > 0\n ? this.getValue()\n [\"applicant_program\"].map(\n (rowData, index) => `\n \n \n \n ${\n this.component.activateCollege\n ? `\n `\n : \"\"\n }\n \n \n \n `\n )\n .join(\"\")\n : \"\"\n }\n \n\n\n \n \n \n \n \n
#${this.t(\n this.component.campusLable\n )}${this.t(\n this.component.collegeLable\n )}${this.t(\n this.component.preferenceLable\n )}
${index + 1}\n \n \n \n \n \n \n \n
\n \n
\n
\n
\n `);\n }\n\n async attach(element) {\n if (this.getValue() && this.getValue()[\"applicant_program\"].length > 0) {\n this.apiData = this.getValue()[\"applicant_program\"];\n this.result = this.getValue()[\"applicant_program\"];\n }\n\n await this.fetchDateFromAPI();\n\n this.loadRefs(element, {\n addRowBtn: \"single\",\n applicantPrograms: \"single\",\n });\n\n this.addEventListener(this.refs.addRowBtn, \"click\", () => {\n var campusesOption = [\n ...new Set(this.apiData.map((entry) => entry.campus)),\n ];\n\n var table = document\n .getElementById(\"applicantPrograms\")\n .getElementsByTagName(\"tbody\")[0];\n var newRow = table.insertRow(table.rows.length);\n\n var rowCell = newRow.insertCell(0);\n var campusCell = newRow.insertCell(1);\n var collegeCell = \"\";\n if (this.component.activateCollege) {\n collegeCell = newRow.insertCell(2);\n }\n var preferenceCell = newRow.insertCell(\n this.component.activateCollege ? 3 : 2\n );\n var actionCell = newRow.insertCell(\n this.component.activateCollege ? 4 : 3\n );\n\n var choiseNumber = this.rowNumber;\n this.rowNumber++;\n newRow.id = choiseNumber;\n\n rowCell.innerHTML = table.rows.length;\n\n campusCell.innerHTML =\n '\";\n\n if (this.component.activateCollege) {\n collegeCell.innerHTML =\n '\";\n }\n preferenceCell.innerHTML =\n '\";\n actionCell.innerHTML =\n '';\n\n const campusSelect = document.getElementById(\"campus\" + choiseNumber);\n if (this.component.activateCollege) {\n this.result.push({\n campus: \"\",\n college: \"\",\n preference: \"\",\n description: \"\",\n });\n } else {\n this.result.push({ campus: \"\", preference: \"\", description: \"\" });\n }\n this.addEventListener(\n campusSelect,\n \"change\",\n this.handleCampusSelection(choiseNumber)\n );\n this.setValue({ applicant_program: this.result });\n });\n\n this.addEventListener(document.body, \"click\", (event) => {\n const target = event.target;\n if (\n target.tagName === \"BUTTON\" &&\n target.classList.contains(\"btn-danger\") &&\n this.allowToRemove\n ) {\n var table = document\n .getElementById(\"applicantPrograms\")\n .getElementsByTagName(\"tbody\")[0];\n var rowCount = table.rows.length;\n\n const row = target.closest(\"tr\");\n const rowIndex = this.getRowIndex(event);\n this.result.splice(rowIndex, 1);\n row.remove();\n\n if (rowCount > 1) {\n for (var i = 0; i < rowCount - 1; i++) {\n table.rows[i].cells[0].innerText = i + 1;\n }\n }\n this.setValue({ applicant_program: this.result });\n }\n\n this.allowToRemove = !this.allowToRemove;\n });\n\n if (this.getValue() && this.getValue()[\"applicant_program\"].length > 0) {\n var i = this.getValue()[\"applicant_program\"].length - 1;\n while (i >= 0) {\n const campusSelect = document.getElementById(\"campus\" + i);\n const collegeSelect = document.getElementById(\"college\" + i);\n const preferenceSelect = document.getElementById(\"preference\" + i);\n this.addEventListener(\n campusSelect,\n \"change\",\n this.handleCampusSelection(i)\n );\n this.addEventListener(\n collegeSelect,\n \"change\",\n this.handleCollegeSelection(i)\n );\n this.addEventListener(\n preferenceSelect,\n \"change\",\n this.handlePreferencesSelection()\n );\n i--;\n }\n this.rowNumber = this.getValue()[\"applicant_program\"].length;\n }\n\n return super.attach(element);\n }\n\n getCampus() {\n const filteredCampuses = this.apiData.map((entry) => entry.campus);\n\n const uniqueCampuses = [...new Set(filteredCampuses)];\n\n return uniqueCampuses;\n }\n\n getCollegesForCampus(selectedCampus) {\n const filteredColleges = this.apiData\n .filter((entry) => entry.campus === selectedCampus)\n .map((entry) => entry.college);\n\n const uniqueColleges = [...new Set(filteredColleges)];\n\n return uniqueColleges;\n }\n\n getPreferences(selectedCampus, selectedCollege = null) {\n const filteredEntries = this.apiData.filter(\n (entry) =>\n entry.campus === selectedCampus &&\n (selectedCollege === null || entry.college === selectedCollege)\n );\n\n const namesAndPreferences = filteredEntries.map((entry) => ({\n name: entry.name,\n description: entry.description,\n }));\n\n return namesAndPreferences;\n }\n\n checkValidity(data, dirty, rowData) {\n //Call the super checkValidity method to perform the default input validation.\n const isValid = super.checkValidity(data, dirty, rowData);\n\n //Call the customValidation method to perform the custom validation.\n const customValidationResult = this.customValidation();\n\n //If the custom validation failed, set the error message and return false.\n if (customValidationResult !== true) {\n this.setCustomValidity(customValidationResult);\n return false;\n }\n\n //If the custom validation passed, return the result of the default input validation.\n return isValid;\n }\n\n customValidation() {\n const applicantPrograms = this.getValue();\n\n // Check if the array is not empty\n if (\n !applicantPrograms[\"applicant_program\"] ||\n applicantPrograms[\"applicant_program\"].length === 0\n ) {\n return this.t(\"Please provide at least one program preference.\");\n }\n\n const seenPreferences = new Set();\n\n for (const program of applicantPrograms[\"applicant_program\"]) {\n // Check if any field is empty\n if (\n !program.campus ||\n (!this.component.activateCollege && !program.preference) ||\n (this.component.activateCollege &&\n (!program.college || !program.preference))\n ) {\n return this.t(\"All fields in the preferences must be filled.\");\n }\n\n // Check if the preference is not repeated\n const preferenceKey = `${program.campus}-${program.college}-${program.preference}`;\n if (seenPreferences.has(preferenceKey)) {\n return this.t(\"Duplicate preference found.\");\n }\n\n // Check if the preference value is not empty\n if (program.preference.trim() === \"\") {\n return this.t(\"Preference value cannot be empty.\");\n }\n\n seenPreferences.add(preferenceKey);\n }\n\n if(this.maximumCampuses > 0){\n const uniqueCampuses = [...new Set(applicantPrograms['applicant_program'].map(item => item.campus))];\n if(this.maximumCampuses < uniqueCampuses.length){\n return this.t(`The number of unique campuses exceeds the allowed limit`) + `(${this.maximumCampuses}).`;\n }\n }\n\n if ((this.minimum > 0 && applicantPrograms['applicant_program'].length < this.minimum) || (this.maximum > 0 && applicantPrograms['applicant_program'].length > this.maximum)) {\n return this.t('The number of applicant programs is outside the allowed range') + `(${this.minimum > 0? this.minimum : 0} ` + this.t('to') + ` ${this.maximum > 0? this.maximum : this.t('no max')})` ;\n }\n\n // All validations passed\n return true;\n }\n\n async fetchDateFromAPI() {\n // try {\n // var token = JSON.parse(localStorage.getItem(\"token\"))[\"access_token\"];\n // } catch (error) {\n // var token = null;\n // }\n await fetch(this.processUrlString(this.component.apiendpoint), {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n // ...(token !== null && token !== undefined\n // ? {\n // Authorization: `Bearer ${\n // JSON.parse(localStorage.getItem(\"token\"))[\"access_token\"]\n // }`,\n // }\n // : {}),\n },\n })\n .then((response) => response.json())\n .then((data) => {\n const records = data[\"message\"].map((record) => record);\n this.apiData = records;\n })\n .catch((error) => {\n console.error(\"Error:\", error);\n });\n\n await fetch(this.processUrlString(this.fetchValidationValues), {\n method: 'GET',\n headers: {\n \"Content-Type\": \"application/json\",\n // ...(token !== null && token !== undefined\n // ? {\n // Authorization: `Bearer ${\n // JSON.parse(localStorage.getItem(\"token\"))[\"access_token\"]\n // }`,\n // }\n // : {}),\n },\n })\n .then(response => response.json())\n .then(data => {\n const result = data['message'];\n this.maximumCampuses = result[\"maximum_number_of_campuses\"];\n this.minimum = result[\"minimum\"];\n this.maximum = result[\"maximum\"];\n })\n .catch(error => {\n console.error('Error:', error);\n });\n }\n\n getRowIndex(event) {\n return event.target.closest(\"tr\").querySelectorAll(\"td\")[0].textContent - 1; // Adjusting for 0-based index\n }\n\n processUrlString(url) {\n // Regular expression to match {{ data.value }} and {{ data.special_person ? '=' : '!=' }}\n const regex = /\\{\\{([^{}]+)\\}\\}/g;\n\n // Replace placeholders with their corresponding values\n var processedUrl = url.replace(regex, (match, expression) => {\n // Evaluate the expression using the rootObject\n try {\n const value = eval(`this._data.${expression}`);\n return value;\n } catch (error) {\n console.error(`Error evaluating expression: ${expression}`);\n return match; // Keep the original placeholder if there is an error\n }\n });\n return processedUrl;\n }\n\n handleCampusSelection = (choiseNumber) => {\n return (event) => {\n const selectedCampus = event.target.value;\n const rowId = this.getRowIndex(event);\n const campusSelect = document.getElementById(\"campus\" + choiseNumber);\n const selectedCampusValue = campusSelect.value;\n const preferenceSelect = document.getElementById(\n \"preference\" + choiseNumber\n );\n\n if (this.component.activateCollege) {\n const collegeSelect = document.getElementById(\"college\" + choiseNumber);\n\n collegeSelect.innerHTML =\n '\" +\n this.getCollegesForCampus(selectedCampus)\n .map(\n (option) =>\n '\"\n )\n .join(\"\");\n\n preferenceSelect.innerHTML =\n '\";\n this.addEventListener(\n collegeSelect,\n \"change\",\n this.handleCollegeSelection(choiseNumber)\n );\n this.result[rowId][\"college\"] = \"\";\n } else {\n preferenceSelect.innerHTML =\n '\" +\n this.getPreferences(selectedCampusValue)\n .map(\n (option) =>\n '\"\n )\n .join(\"\");\n\n this.addEventListener(\n preferenceSelect,\n \"change\",\n this.handlePreferencesSelection()\n );\n }\n\n this.result[rowId][\"campus\"] = selectedCampus;\n this.result[rowId][\"preference\"] = \"\";\n this.result[rowId][\"description\"] = \"\";\n this.setValue({ applicant_program: this.result });\n };\n };\n\n handleCollegeSelection = (choiseNumber) => {\n return (event) => {\n const selectedCollege = event.target.value;\n const preferenceSelect = document.getElementById(\n \"preference\" + choiseNumber\n );\n\n const campusSelect = document.getElementById(\"campus\" + choiseNumber);\n const selectedCampusValue = campusSelect.value;\n\n preferenceSelect.innerHTML =\n '\" +\n this.getPreferences(selectedCampusValue, selectedCollege)\n .map(\n (option) =>\n '\"\n )\n .join(\"\");\n\n this.addEventListener(\n preferenceSelect,\n \"change\",\n this.handlePreferencesSelection()\n );\n const rowId = this.getRowIndex(event);\n this.result[rowId][\"college\"] = selectedCollege;\n this.result[rowId][\"preference\"] = \"\";\n this.result[rowId][\"description\"] = \"\";\n this.setValue({ applicant_program: this.result });\n };\n };\n\n handlePreferencesSelection = () => {\n return (event) => {\n const selectedPreference = event.target.value;\n const selectedDescription =\n event.target.options[event.target.selectedIndex].text;\n\n const rowId = this.getRowIndex(event);\n this.result[rowId][\"preference\"] = selectedPreference;\n this.result[rowId][\"description\"] = selectedDescription;\n\n this.setValue({ applicant_program: this.result });\n };\n };\n}\n\nOneCallApplicantProgramComponent.editForm = function () {\n return FieldComponent.editForm([\n {\n weight: 10,\n key: \"api\",\n label: \"API Configuration\",\n components: [\n {\n type: \"input\",\n input: true,\n key: \"apiendpoint\",\n label: \"API Endpoint\",\n placeholder: \"Enter the API endpoint URL\",\n description: \"Specify the URL from which to retrieve data.\",\n tooltip:\n \"Enter the URL of the API endpoint that provides data for the component.\",\n validate: {\n custom: function (value) {\n if (!value) {\n return \"API Endpoint is required.\";\n }\n\n return true;\n },\n },\n weight: 21,\n },\n ],\n },\n {\n weight: 10,\n key: \"display\",\n components: [\n {\n weight: 500,\n type: \"checkbox\",\n input: true,\n key: \"activateCollege\",\n label: \"Allow College\",\n tooltip:\n \"Activate college to allow the applicant to select a college\",\n },\n ],\n },\n {\n weight: 10,\n key: \"display\",\n components: [\n {\n weight: 500,\n type: \"input\",\n input: true,\n required: true,\n key: \"campusLable\",\n label: \"Campus Lable\",\n tooltip: \"Text will display on table header\",\n },\n ],\n },\n {\n weight: 10,\n key: \"display\",\n components: [\n {\n weight: 500,\n type: \"input\",\n input: true,\n required: true,\n key: \"collegeLable\",\n label: \"College Lable\",\n tooltip: \"Text will display on table header\",\n },\n ],\n },\n {\n weight: 10,\n key: \"display\",\n components: [\n {\n weight: 500,\n type: \"input\",\n input: true,\n required: true,\n key: \"preferenceLable\",\n label: \"Preference Lable\",\n tooltip: \"Text will display on table header\",\n },\n ],\n },\n ]);\n};\n\nFormio.use({\n components: {\n OneCallApplicantProgram: OneCallApplicantProgramComponent,\n },\n});\n"], "mappings": "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", "names": [] }