{"version":3,"file":"js/470-86502c6e795e20137eb8.js","mappings":"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","sources":["webpack://relier-react-webpack-rails/./app/javascript/controllers/application.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/admin_preview_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/bar_graph_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/basket_target_templates.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/basket_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/batch_add_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/calibrate_orientation_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/chart_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/cohort_progresses_deliveries_table_controller.js","webpack://relier-react-webpack-rails/./app/javascript/cable.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/cohort_report_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/column_selector_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/concertina_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/content_library_modal_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/copy_backup_codes_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/countdown_timer_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/course_selector_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/current_use_selector_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/curricular_summary_tab_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/dashboard/card_content_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/dashboard/student/case_learning_time_chart_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/dashboard/student/completed_available_cases_chart_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/dashboard_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/document_modal_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/dropdown_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/edit_delivery_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/educator_dashboard_card_content_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/element_collapser_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/enum_selector_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/exam_course_scheduling_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/filter_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/filter_search_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/grid_list_view_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/group_selection_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/help_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/highlight_focus_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/hovercard_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/image_gallery_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/image_preview_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/import_new_questions_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/mfa_send_otp_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/modal_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/mount_react_on_rails_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/multi_cohort_curricular_summary_tab_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/new_delivery_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/new_exam_variation_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/new_project_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/notify_program_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/open_questions_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/overflow_detector_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/overlay_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/popup_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/print_document_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/project_dashboard_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/projects_reports_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/question_stats_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/quiz_form_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/quiz_hover_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/quiz_modal_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/quiz_mode_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/quiz_player_aux_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/redirect_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/reducible_list_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/report_date_ranges_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/reports_dashboard_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/reports_select_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/reset_popup_confirmation_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/row_ordering_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/row_selector_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/saq_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/search_form_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/side_navigation_page_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/single_cohort_report_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/slide_right_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/sort_columns_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/ssm_optout_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/sticky_info_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/student_learning_progress_table_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/success_banner_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/text_decoration_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/to_do_modal_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/todo_form_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/todo_list_page_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/turbo_request_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/update_user_profile_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/open_react_modal_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/view_toggle_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/student_performance_controller.js","webpack://relier-react-webpack-rails/./app/javascript/controllers/index.js"],"sourcesContent":["import { Application } from \"@hotwired/stimulus\"\n\nconst application = Application.start()\n\n// Configure Stimulus development experience\napplication.debug = false\nwindow.Stimulus = application\n\nexport { application }\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n\n submit(ev) {\n let aqueductTable = window.AqueductTable;\n let rows = aqueductTable.state.rows;\n const selectedRows = rows.filter(row => row.selected);\n const rowIds = selectedRows.map(row => row[\"question_id\"]);\n let url = new URL(ev.target.href)\n url.searchParams.append('question_id_list', rowIds)\n ev.preventDefault()\n ev.target.href = url\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"graph\", \"type\"]\n\n // format: { : {: percentage1, : percentage2,...},\n // : {: percentage1, : percentage2,...},\n // ... }\n get percentages() {\n return JSON.parse(this.graphTarget.dataset.percentages)\n }\n\n get barKeys() {\n return Object.keys(this.percentages)\n }\n\n get gridType() {\n if (this.hasTypeTarget && this.typeTarget.dataset.type == \"vertical\") {\n return \"grid-row\"\n }\n return \"grid-column\"\n }\n\n initialize() {\n if (this.graphTarget) {\n this.setGraphSections(this.graphTarget.children, this.percentages)\n }\n }\n\n // format: chunks: [ { dataset: { barKey: , chunkKey: },\n // { dataset: { barKey: , chunkKey: },\n // ...,\n // { dataset: { barKey: , chunkKey: },\n // ...,\n // ]\n setGraphSections(chunks, percentages) {\n let totals = {}\n for (const key of this.barKeys) {\n totals[key] = 1\n }\n for (const chunk of chunks) {\n const bar = chunk.dataset.barKey\n if (percentages[bar][chunk.dataset.chunkKey] === 0) {\n chunk.classList.add(\"hidden\")\n }\n const newTotal = totals[bar] + Math.ceil(percentages[bar][chunk.dataset.chunkKey])\n chunk.style.setProperty(this.gridType, `${totals[bar]} / ${newTotal}`)\n totals[bar] = newTotal\n }\n }\n}\n","export function questionSetColumns(item) {\n return [\n {\n type: 'div',\n attributes: {\"class\": 'c1'},\n content: item.selectable_id,\n children: []\n },\n {\n type: 'div',\n attributes: {\"class\": 'c2 text'},\n content: null,\n children: [\n {\n type: 'a',\n attributes: {\n \"class\": 'basket-link',\n \"href\": `${selectableTypePath(item.selectable_type)}${item.selectable_id}`\n },\n content: item.description\n }\n ]\n },\n {\n type: 'div',\n attributes: {\"class\": 'c3', \"data-target\": 'basket.item'},\n content: null,\n children: [\n {\n type: 'button',\n attributes: {\n \"data-action\": 'basket#removeItem',\n \"data-basket-id\": item.selection_basket_id,\n \"data-item-id\": item.id\n },\n content: \"Remove\"\n }\n ]\n }\n ]\n}\n\nexport function documentSetColumns(item) {\n return [\n {\n type: 'div',\n attributes: {\"class\": 'c1', \"style\": \"width: 550px; height: 100%;\"},\n content: item.description,\n children: []\n },\n {\n type: 'div',\n attributes: {\"class\": 'c2', \"data-target\": 'basket.item'},\n content: null,\n children: [\n {\n type: 'button',\n attributes: {\n \"data-action\": 'basket#removeItem',\n \"data-basket-id\": item.selection_basket_id,\n \"data-item-id\": item.id\n },\n content: \"Remove\"\n }\n ]\n }\n ]\n}\n\nfunction selectableTypePath(type) {\n return {\n \"Assessment::Question\":\"/assessment/questions/\",\n }[type]\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport axios from \"axios\";\n\nimport { questionSetColumns, documentSetColumns } from \"./basket_target_templates\"\n\nexport default class extends Controller {\n static targets = [ \"modal\", \"item\", \"list\", \"addCount\", \"viewCount\", \"viewButton\", \"all\", \"totalCount\", \"basket\" ];\n\n initialize() {\n this.checkAndDisableItems(this.currentSelectableIds);\n }\n\n get type() {\n return this.basketTarget.dataset.type\n }\n\n get rowSelecter() {\n return this.application.getControllerForElementAndIdentifier(\n this.element,\n \"row-selector\"\n );\n }\n\n get itemClass() {\n return this.element.dataset.itemClass;\n }\n\n get currentSelectableIds() {\n return this.itemTargets.map((item) => {\n return Number.parseInt(item.dataset.selectableId);\n });\n }\n\n get basketId() {\n return this.listTarget.dataset.basketId;\n }\n\n open() {\n this.modalTarget.classList.remove(\"hidden\");\n }\n\n close() {\n this.modalTarget.classList.add(\"hidden\");\n }\n\n showViewButton() {\n this.viewButtonTarget.classList.remove(\"hidden\");\n }\n\n hideViewButton() {\n this.viewButtonTarget.classList.add(\"hidden\");\n }\n\n clearAddCount() {\n if (this.hasAddCountTarget) {\n this.setCountTargets(this.addCountTargets, 0);\n }\n }\n\n setAddCount() {\n if (this.hasAddCountTarget) {\n const count = this.rowSelecter?.enabledSelectedRows(this.type).length || 0;\n this.setCountTargets(this.addCountTargets, count);\n }\n }\n\n setViewCount(count = 0) {\n if (this.hasViewCountTarget) {\n this.setCountTargets(this.viewCountTargets, count);\n }\n this.setTotalCount(count);\n }\n\n setTotalCount(newCount = 0) {\n if (this.hasTotalCountTarget) {\n const currentNum = Number.parseInt(this.totalCountTarget.dataset.currentNum);\n const newNum = newCount || Number.parseInt(this.viewCountTarget.innerHTML.match(/\\d+/));\n this.setCountTargets(this.totalCountTargets, currentNum + newNum);\n }\n }\n\n setCountTargets(targets, count) {\n targets.forEach((ct) => ct.innerHTML = ct.innerHTML.replace(/\\d+/, count));\n }\n\n addItem(event) {\n // When adding items after navigating to /questions via the \"Question Bank\"\n // button on the Assessment dashboard, clicking ADD SELECTED ITEMS spawns 2 events\n event.stopImmediatePropagation();\n\n const items = [{selectable_class: event.target.dataset.itemClass, selectable_id: event.target.dataset.itemId}]\n const data = {\n selection_basket_items: items\n };\n axios({\n data,\n url: `/selection_baskets/${event.target.dataset.basketId}/selection_basket_items`,\n method: \"post\",\n withCredentials: true,\n headers: {\n 'Accept': 'application/json'\n }\n }).then((response) => {\n const list = this.listTarget;\n [...list.children].forEach(c => list.removeChild(c));\n this.constructBasket(JSON.parse(response.data.basket));\n if(response.data.errors.length) {\n window.alert(response.data.errors.join(''));\n }\n this.clearAddCount();\n this.showViewButton();\n this.uncheckSelectAll();\n }).catch((error) => {\n console.log(error);\n });\n }\n\n addAllItems(event) {\n // When adding items after navigating to /questions via the \"Question Bank\"\n // button on the Assessment dashboard, clicking ADD SELECTED ITEMS spawns 2 events\n event.stopImmediatePropagation();\n\n const items = [{selectable_class: event.target.dataset.itemClass, selectable_id: event.target.dataset.itemId}]\n const data = {\n selection_basket_items: items\n };\n axios({\n data,\n url: `/selection_baskets/${event.target.dataset.basketId}/selection_basket_items`,\n method: \"post\",\n withCredentials: true,\n headers: {\n 'Accept': 'application/json'\n }\n }).then((response) => {\n const list = this.listTarget;\n [...list.children].forEach(c => list.removeChild(c));\n this.constructBasket(JSON.parse(response.data.basket));\n if(response.data.errors.length) {\n window.alert(response.data.errors.join(''));\n }\n this.clearAddCount();\n this.showViewButton();\n this.uncheckSelectAll();\n }).catch((error) => {\n console.log(error);\n });\n }\n\n getCsrfToken() {\n return document.querySelector('meta[name=\"csrf-token\"]').content;\n }\n\n addItemsToContentLibraryBasket(event) {\n event.stopImmediatePropagation();\n\n const csrfToken = this.getCsrfToken();\n const allDocuments = JSON.parse(event.target.dataset.allDocuments);\n const selectionBasketItems = JSON.parse(event.target.dataset.selectionBasketItems);\n\n const formData = new FormData();\n allDocuments.forEach(documentId => {\n formData.append('all_documents[]', documentId);\n });\n\n selectionBasketItems.forEach(basketItem => {\n formData.append('selection_basket_items[][selectable_class]', basketItem.selectable_class);\n formData.append('selection_basket_items[][selectable_id]', basketItem.selectable_id);\n });\n\n fetch(`/selection_baskets/${event.target.dataset.selectionBasketId}/selection_basket_items`, {\n method: \"POST\",\n headers: {\n \"X-CSRF-Token\": csrfToken,\n \"Accept\": \"text/vnd.turbo-stream.html\"\n },\n body: formData\n })\n .then(response => response.text())\n .then(html => Turbo.renderStreamMessage(html));\n }\n\n addItems(event) {\n // When adding items after navigating to /questions via the \"Question Bank\"\n // button on the Assessment dashboard, clicking ADD SELECTED ITEMS spawns 2 events\n event.stopImmediatePropagation();\n\n // Prevent needlessly sending empty data\n if (this.rowSelecter.enabledSelectedRows(this.type).length === 0) {\n return\n }\n\n const items = this.rowSelecter.enabledSelectedRows(this.type).map((row) => {\n const data = row.querySelector(\".basketItem\").dataset;\n return { selectable_class: data.itemClass, selectable_id: data.itemId }\n })\n const data = {\n selection_basket_items: items\n };\n axios({\n data,\n url: `/selection_baskets/${event.target.dataset.basketId}/selection_basket_items`,\n method: \"post\",\n withCredentials: true,\n headers: {\n 'Accept': 'application/json'\n }\n }).then((response) => {\n const list = this.listTarget;\n [...list.children].forEach(c => list.removeChild(c));\n this.constructBasket(JSON.parse(response.data.basket));\n if(response.data.errors.length) {\n window.alert(response.data.errors.join(''));\n }\n this.clearAddCount();\n this.showViewButton();\n this.uncheckSelectAll();\n }).catch((error) => {\n console.log(error);\n });\n }\n\n removeAllItems() {\n axios({\n url: `${window.origin}/selection_baskets/${this.basketId}/selection_basket_items/destroy_all`,\n method: \"delete\",\n withCredentials: true,\n headers: {\n 'Accept': 'application/json'\n }\n }).then((response) => {\n const list = this.listTarget;\n [...list.children].forEach(c => list.removeChild(c));\n this.setViewCount();\n this.checkAndDisableItems();\n this.close();\n this.hideViewButton();\n this.uncheckSelectAll();\n }).catch((error) => {\n console.log(error);\n });\n }\n\n removeItem(event) {\n axios({\n url: `${window.origin}/selection_baskets/${this.basketId}/selection_basket_items/${event.target.dataset.itemId}`,\n method: \"delete\",\n withCredentials: true,\n headers: {\n 'Accept': 'application/json'\n }\n }).then((response) => {\n const list = this.listTarget;\n [...list.children].forEach(c => list.removeChild(c));\n this.constructBasket(response.data);\n this.uncheckSelectAll();\n }).catch((error) => {\n console.log(error)\n })\n }\n\n toggleAll(event) {\n event.stopImmediatePropagation();\n if (this.hasAllTarget) {\n switch (this.allTarget.dataset.value) {\n case \"none\":\n this.selectAll();\n this.allTarget.setAttribute(\"data-value\", \"all\");\n this.allTarget.innerHTML = \"DESELECT ALL\";\n break;\n case \"all\":\n this.deselectAll();\n this.allTarget.setAttribute(\"data-value\", \"none\");\n this.allTarget.innerHTML = \"SELECT ALL\";\n break;\n }\n }\n }\n\n uncheckSelectAll() {\n if (this.hasAllTarget && this.allTarget.dataset.value == \"all\") {\n this.allTarget.setAttribute(\"data-value\", \"none\");\n this.allTarget.innerHTML = \"SELECT ALL\";\n this.allTarget.checked = false;\n }\n }\n\n selectAll() {\n this.rowSelecter.selectAllRows(this.type);\n this.setAddCount();\n }\n\n deselectAll() {\n this.rowSelecter.deselectAllRows(this.type);\n this.setAddCount();\n }\n\n // column: {\n // type/*:string*/: elementType,\n // attributes/*:object*/: {attr: value,...},\n // content/*:string*/: innerHTML,\n // children/*:array*/: [child1, child2,...]\n // }\n // child: column\n formatColumn(column) {\n const el = document.createElement(column.type);\n for (const [k,v] of Object.entries(column.attributes)) {\n el.setAttribute(k, v);\n }\n if (column.content) {\n el.innerHTML = column.content;\n }\n column.children?.forEach((child) => {\n el.appendChild(this.formatColumn(child));\n })\n return el;\n }\n\n formatRow(columns = []) {\n columns.forEach((col) => {\n this.listTarget.appendChild(this.formatColumn(col));\n });\n }\n\n constructBasket(basketJson) {\n switch (basketJson.target) {\n case \"DocumentSet::New\":\n this.constructDocumentSetBasket(basketJson);\n break;\n case \"Assessment::QuestionSet::Edit\":\n case \"Assessment::QuestionSet::New\":\n this.constructQuestionSetBasket(basketJson);\n break;\n }\n }\n\n constructQuestionSetBasket(basketJson) {\n if (basketJson.items.length == 0) {\n this.close();\n this.hideViewButton();\n }\n for(const item of basketJson.items) {\n this.formatRow(questionSetColumns(item));\n };\n this.setViewCount(basketJson.items.length);\n this.checkAndDisableItems(basketJson.items.map(i => i.selectable_id));\n }\n\n constructDocumentSetBasket(basketJson) {\n if (basketJson.items.length == 0) {\n this.close();\n this.hideViewButton();\n }\n for(const item of basketJson.items) {\n this.formatRow(documentSetColumns(item));\n };\n this.setViewCount(basketJson.items.length);\n this.checkAndDisableItems(basketJson.items.map(i => i.selectable_id));\n }\n\n checkAndDisableItems(items = []) {\n if (this.rowSelecter) {\n for(const row of this.rowSelecter.rowTargets) {\n const rowRep = row.querySelector(\"input.select-box[type='checkbox']\")\n if(!rowRep) continue;\n if (items.includes(Number.parseInt(rowRep.value))) {\n rowRep.checked = true;\n rowRep.disabled = true;\n } else {\n rowRep.checked = false;\n rowRep.disabled = false;\n }\n }\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"addModal\", \"unknownModal\", \"add\", \"unknown\", \"summaryTable\"];\n\n connect() {\n this.selectedStudents = this.selectedStudents || [];\n }\n\n connect() {\n document.addEventListener(\"keydown\", this.handleKeydown);\n }\n\n disconnect() {\n document.removeEventListener(\"keydown\", this.handleKeydown);\n }\n\n handleKeydown = (event) => {\n if (event.key === \"Escape\") {\n this.closeAdd();\n this.closeUnknown();\n }\n };\n\n openAdd() {\n this.addModalTarget.classList.remove(\"hidden\");\n this.addModalTarget.querySelector(\"[data-target='batch-add.add']\").focus();\n document.addEventListener(\"keydown\", this.handleKeydown);\n }\n\n closeAdd() {\n this.addModalTarget.classList.add(\"hidden\");\n document.removeEventListener(\"keydown\", this.handleKeydown);\n this.clearTextarea();\n }\n\n openUnknown() {\n this.unknownModalTarget.classList.remove(\"hidden\");\n document.addEventListener(\"keydown\", this.handleKeydown);\n }\n\n closeUnknown() {\n this.unknownModalTarget.classList.add(\"hidden\");\n document.removeEventListener(\"keydown\", this.handleKeydown);\n }\n\n handleKeydown = (event) => {\n if (event.key === \"Escape\") {\n this.closeAdd();\n this.closeUnknown();\n } else if (event.key === \"Enter\") {\n this.add();\n }\n };\n\n selectRows(items, prop) {\n const aqueductTable = window.AqueductTable;\n const rows = aqueductTable.state.rows;\n let newRows = [];\n let foundItems = [];\n for (const row of rows) {\n if (items.includes(row[prop])) {\n row.selected = true;\n foundItems.push(row[prop]);\n newRows.unshift(row);\n } else {\n newRows.push(row);\n }\n }\n aqueductTable.setState({ rows: newRows });\n this.closeAdd();\n if (foundItems.length !== items.length) {\n let unknownItems = items.filter(item => !foundItems.includes(item));\n if (unknownItems.length) {\n this.unknownTarget.value = unknownItems.join(\", \");\n this.openUnknown();\n }\n }\n }\n\n add() {\n if (this.hasAddTarget && this.addTarget.value.length) {\n let items = [];\n try {\n items = this.addTarget.value.toLowerCase().split(/[,;|/\\s]/).filter(a => a !== '');\n } catch (e) {\n console.log(e);\n }\n\n if (this.hasSummaryTableTarget) {\n this.selectSummaryTableRows(items, this.addTarget.dataset.prop);\n } else {\n this.selectRows(items, this.addTarget.dataset.prop);\n }\n this.clearTextarea();\n } else {\n $('#error').show();\n }\n }\n\n copy() {\n if (this.hasUnknownTarget && this.unknownTarget.value.length) {\n this.unknownTarget.select();\n this.unknownTarget.setSelectionRange(0, 99999);\n try {\n document.execCommand('copy');\n console.log(\"Copied the text: \" + this.unknownTarget.value);\n } catch (e) {\n console.log(e)\n }\n }\n }\n\n selectSummaryTableRows(items, prop) {\n if (this.hasSummaryTableTarget) {\n const aqueductTable = document.getElementById('SummaryTable');\n const tbody = aqueductTable.querySelector('tbody');\n const rows = Array.from(tbody.rows);\n \n const selectedStudents = Array.isArray(this.selectedStudents) ? [...this.selectedStudents] : [];\n const newlySelected = [];\n \n for (const row of rows) {\n try {\n const studentInfo = JSON.parse(row.getAttribute('data-student-info') || \"{}\");\n if (studentInfo) {\n const cellValue = studentInfo[prop];\n const studentId = studentInfo[\"id\"].toString();\n const checkbox = row.querySelector('input[type=\"checkbox\"]');\n \n if (items.includes(cellValue)) {\n if (checkbox) {\n checkbox.checked = true;\n if (!selectedStudents.includes(studentId)) {\n selectedStudents.push(studentId);\n newlySelected.push(cellValue);\n checkbox.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n }\n }\n \n if (checkbox && checkbox.checked) {\n tbody.prepend(row);\n }\n }\n } catch (error) {\n console.error(\"Error parsing student info:\", error);\n }\n }\n \n this.selectedStudents = selectedStudents;\n tbody.querySelectorAll('input[type=\"checkbox\"]:checked').forEach((checkbox) => {\n checkbox.dispatchEvent(new Event(\"change\", { bubbles: true }));\n });\n this.dispatchSelectedStudentsEvent();\n this.closeAdd();\n\n let allFoundItems = [...newlySelected, ...this.selectedStudents.map(id => {\n const row = rows.find(r => JSON.parse(r.getAttribute('data-student-info') || \"{}\").id.toString() === id);\n return row ? JSON.parse(row.getAttribute('data-student-info') || \"{}\")[prop] : null;\n }).filter(Boolean)];\n\n let unknownItems = items.filter(item => !allFoundItems.includes(item));\n if (unknownItems.length) {\n this.unknownTarget.value = unknownItems.join(\", \");\n this.openUnknown();\n }\n }\n }\n\n dispatchSelectedStudentsEvent() {\n this.element.dispatchEvent(new CustomEvent(\"students:selected\", {\n detail: { selectedStudents: this.selectedStudents },\n bubbles: true\n }));\n }\n\n clearTextarea() {\n if (this.hasAddTarget) {\n this.addTarget.value = \"\";\n }\n } \n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"card\", \"nextBtn\", \"prevBtn\", \"toHonorCode\", \"todoDropdown\"];\n\n connect() {\n this.currentCardIndex = 0;\n\n if (this.cardTargets.length > 0) {\n this.cardTargets[this.currentCardIndex].classList.add('active');\n }\n }\n\n goToNextCard() {\n if (this.currentCardIndex < this.cardTargets.length - 1) {\n this.cardTargets[this.currentCardIndex].classList.remove('active');\n this.currentCardIndex++;\n this.cardTargets[this.currentCardIndex].classList.add('active');\n }\n }\n\n goToPreviousCard() {\n if (this.currentCardIndex > 0) {\n this.cardTargets[this.currentCardIndex].classList.remove('active');\n this.currentCardIndex--;\n this.cardTargets[this.currentCardIndex].classList.add('active');\n }\n }\n\n skipAssessment() {\n this.currentCardIndex = this.cardTargets.length - 1; // Jump to last card\n this.cardTargets.forEach(card => card.classList.remove('active')); // Hide all cards\n this.cardTargets[this.currentCardIndex].classList.add('active');\n }\n\n toggleDropdown(event) {\n let dropdownContainer = this.todoDropdownTarget;\n dropdownContainer.classList.toggle(\"hidden\", event.target.value !== \"true\");\n document.getElementById(\"autoAddTodosField\").value = event.target.value === \"true\";\n document.getElementById('toHonorCode').disabled = event.target.value === \"true\";\n\n }\n\n honorSubmit() {\n document.getElementById('honorCodeCheckbox').addEventListener('change', function () {\n document.getElementById('nextButton').disabled = !this.checked;\n });\n }\n\n toggleMultiSelect() {\n // Toggle visibility of the multi-select dropdown\n document.getElementById(\"todoListDropdown\").classList.toggle(\"hidden\");\n }\n\n updateSelectedLists() {\n const selectedIds = Array.from(document.querySelectorAll(\"input[name='todo_list_ids[]']:checked\")).map(checkbox => checkbox.value);\n const newListName = document.getElementById(\"newTodoListName\").value.trim();\n\n // Update hidden fields\n document.getElementById(\"todoListIdsField\").value = selectedIds.join(',');\n document.getElementById(\"newTodoListField\").value = newListName;\n\n // Enable submit button if at least one list is selected or a new list is created\n document.getElementById(\"toHonorCode\").disabled = selectedIds.length === 0 && newListName === \"\";\n }\n\n toggleNewListInput(event) {\n document.getElementById(\"newTodoListName\").classList.toggle(\"hidden\", !event.target.checked);\n if (!event.target.checked) {\n document.getElementById(\"newTodoListName\").value = \"\";\n }\n this.updateSelectedLists();\n }\n\n trackAutoAddToDoSelection() {\n const autoAddTodos = document.getElementById(\"autoAddTodosField\")?.value;\n const rosteringId = document.getElementById(\"rosteringId\")?.value;\n\n analytics.track(\"calibrate_auto_add_to_do_selection\", {\n page: window.location.href,\n source: \"Calibrate\",\n enabled_auto_todos: autoAddTodos,\n rostering_id: rosteringId,\n });\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport Chart from 'chart.js/auto';\n\nexport default class extends Controller {\n static values = {\n registrationValues: Array,\n registrationColors: Array\n }\n\n connect() {\n this.renderPieChart();\n console.log(this.registrationValuesValue); // Should log the data passed to `data-pie-chart-values-value`\n console.log(this.registrationColorsValue);\n if (!this.registrationValuesValue.length) {\n this.registrationValuesValue = [1]; // Example fallback value\n }\n if (!this.registrationColorsValue.length) {\n this.registrationColorsValue = ['#ffffff']; // Example fallback color\n }\n }\n\n renderPieChart() {\n const values = this.registrationValuesValue;\n const colors = this.registrationColorsValue;\n let total = values.reduce((acc, val) => acc + val, 0);\n let gradient = 'conic-gradient(';\n let accumulatedPercentage = 0;\n\n values.forEach((value, index) => {\n let percentage = value / total * 100;\n let startPercentage = accumulatedPercentage;\n let endPercentage = accumulatedPercentage + percentage;\n gradient += `${colors[index]} ${startPercentage}% ${endPercentage}%, `;\n accumulatedPercentage = endPercentage;\n });\n\n gradient = gradient.slice(0, -2) + ')'; // Remove the last comma and space\n console.log(gradient);\n this.element.style.background = gradient;\n }\n}","import { Controller } from \"@hotwired/stimulus\"\nimport * as React from 'react'\nimport { createRoot } from \"react-dom/client\";\nimport CohortProgressesDeliveriesTable from \"../src/react/components/Assessment/Reports/CohortProgressesDeliveriesTable\";\n\n// Connects to data-controller=\"cohort-progresses-deliveries-table\"\nexport default class extends Controller {\n static targets = [\"cohortProgressTable\"];\n\n connect() {\n let reportData = JSON.parse(this.element.dataset.reportData);\n createRoot(this.cohortProgressTableTarget).render();\n }\n}\n","import { createConsumer } from '@rails/actioncable';\n\nlet consumer;\n\nconst createChannel = (...args) => {\n if (!consumer) {\n consumer = createConsumer();\n }\n\n return consumer.subscriptions.create(...args);\n};\n\nexport default createChannel;\n","import { Controller } from \"@hotwired/stimulus\";\nimport createChannel from '../cable';\n\nexport default class extends Controller {\n static targets = ['report', 'reportProgress', 'reportProgressBar', 'thankYouMessage', 'hours', 'minutes', 'seconds'];\n\n connect() {\n this.startTimer();\n\n var requestId = this.data.get('request');\n if (!window.location.search.includes('request_id=')) {\n var newUrl = window.location.href + (window.location.search ? '&' : '?') + 'request_id=' + requestId;\n window.history.replaceState({}, '', newUrl);\n }\n\n var jobId = this.data.get('job');\n if (!window.location.search.includes('job_id=')) {\n var newUrl = window.location.href + (window.location.search ? '&' : '?') + 'job_id=' + jobId;\n window.history.replaceState({}, '', newUrl);\n }\n\n const totalReports = this.data.get('total-reports');\n let thisController = this;\n\n const progressChannel = createChannel({ channel: 'ReportProgressNotifierChannel', request_id: this.data.get('request') }, {\n received({ progress, report_done }) {\n console.log(\"Received data in ReportProgressNotifierChannel\");\n\n if (progress === 100) {\n if (thisController.hasReportProgressBarTarget) {\n thisController.reportProgressBarTarget.style.display = 'none';\n }\n\n if (thisController.hasThankYouMessageTarget) {\n thisController.thankYouMessageTarget.style.display = 'block';\n thisController.thankYouMessageTarget.innerHTML = \"Thank you! All reports are completed.\";\n }\n\n const generatingMessage = document.querySelector('.mt-3');\n if (generatingMessage) {\n generatingMessage.style.display = 'none';\n }\n\n const progressBar = document.querySelector('.progress-outer');\n if (progressBar) {\n progressBar.style.display = 'none';\n }\n\n } else {\n if (thisController.hasReportProgressBarTarget) {\n thisController.reportProgressBarTarget.style.width = `${progress}%`;\n thisController.reportProgressBarTarget.setAttribute('aria-valuenow', progress);\n thisController.reportProgressBarTarget.innerHTML = `${progress}%`;\n } else {\n console.error(\"Report progress bar target is not defined.\");\n }\n }\n\n if (thisController.hasReportProgressTarget) {\n thisController.reportProgressTarget.innerHTML = `Reports calculated: ${report_done} / ${totalReports}`;\n } else {\n console.error(\"Report progress target is not defined.\");\n }\n },\n });\n\n const cohortChannel = createChannel({ channel: 'CohortReportChannel', request_id: this.data.get('request') }, {\n received({ report, complete }) {\n console.log(\"Received data from CohortReportChannel\");\n thisController.reportTarget.innerHTML = report;\n thisController.initChart();\n thisController.initBarChart();\n\n if (complete) {\n thisController.removeIdsFromUrl();\n cohortChannel.unsubscribe();\n progressChannel.unsubscribe();\n \n thisController.disconnectChannels(cohortChannel, progressChannel);\n console.log(\"Report generation complete. Unsubscribing and disconnecting from channels.\");\n }\n },\n });\n }\n\n startTimer() {\n let totalSeconds = 0;\n this.timerInterval = setInterval(() => {\n totalSeconds++;\n this.updateTimer(totalSeconds);\n }, 1000);\n }\n\n updateTimer(totalSeconds) {\n const hours = Math.floor(totalSeconds / 3600);\n const minutes = Math.floor((totalSeconds % 3600) / 60);\n const seconds = totalSeconds % 60;\n\n this.hoursTarget.innerHTML = this.pad(hours);\n this.minutesTarget.innerHTML = this.pad(minutes);\n this.secondsTarget.innerHTML = this.pad(seconds);\n }\n\n pad(val) {\n return val.toString().padStart(2, '0');\n }\n\n removeIdsFromUrl() {\n const currentUrl = new URL(window.location.href);\n currentUrl.searchParams.delete('job_id');\n currentUrl.searchParams.delete('request_id');\n window.history.replaceState({}, '', currentUrl.toString());\n }\n\n disconnectChannels(cohortChannel, progressChannel) {\n cohortChannel.consumer.disconnect();\n progressChannel.consumer.disconnect();\n clearInterval(this.timerInterval);\n }\n\n initChart() {\n google.charts.load('current', {'packages':['corechart']});\n google.charts.setOnLoadCallback(drawChart);\n\n function drawChart() {\n try {\n const chartDataElement = document.getElementById('piechart_0');\n if (!chartDataElement) {\n console.error(\"Chart element not found\");\n return;\n }\n\n const graphData = chartDataElement.dataset.graphData;\n\n if (!graphData || graphData.length === 0) {\n console.error(\"Graph data is empty or undefined\");\n return;\n }\n\n const dataRows = JSON.parse(graphData);\n\n var dataTable = new google.visualization.DataTable();\n dataTable.addColumn('string', 'level');\n dataTable.addColumn('number', 'score');\n dataTable.addColumn({type: 'string', role: 'tooltip', 'p': {'html': true}});\n dataTable.addRows(dataRows);\n\n var options = {\n legend: 'none',\n colors: ['#297937', '#FAA633', '#ad346A'],\n pieSliceTextStyle: {\n fontName: 'Roboto',\n fontSize: 16\n },\n pieSliceText: 'percentage',\n tooltip: {isHtml: true, trigger: 'selection'},\n backgroundColor: {\n fill: '#FFFFFF',\n fillOpacity: 0.0\n },\n chartArea: {\n height: \"90%\",\n width: \"90%\"\n }\n };\n\n var container = document.getElementById('piechart_0');\n var chart = new google.visualization.PieChart(container);\n\n google.visualization.events.addListener(chart, 'click', clearSelection);\n document.body.addEventListener('click', clearSelection, false);\n\n chart.draw(dataTable, options);\n function clearSelection(e) {\n if (!container.contains(e.srcElement)) {\n chart.setSelection();\n }\n }\n\n } catch (error) {\n console.error(\"Error parsing JSON data: \", error);\n }\n }\n }\n\n initBarChart() {\n google.charts.load('current', {'packages':['corechart']});\n google.charts.setOnLoadCallback(drawChart);\n\n function drawChart() {\n try {\n const chartDataElement = document.getElementById('barchart_0');\n if (!chartDataElement) {\n console.error(\"Bar Chart element not found\");\n return;\n }\n\n const barChartData = chartDataElement.dataset.barChartData;\n\n if (!barChartData || barChartData.length === 0) {\n console.error(\"Bar chart data is empty or undefined\");\n return;\n }\n\n const parsedData = JSON.parse(barChartData);\n\n var data = google.visualization.arrayToDataTable(parsedData);\n\n var options = {\n colors: ['#297937', '#FAA633', '#ad346A', '#D9D9D9'],\n bar: {groupWidth: \"35%\"},\n vAxis: {\n title: \"# of students\",\n titleTextStyle: {\n fontName: 'Roboto',\n italic: false,\n }\n },\n hAxis: {\n textStyle: {fontName: 'Inter'}\n },\n backgroundColor: {\n fill: '#FFFFFF',\n fillOpacity: 0.0\n },\n chartArea: {\n height: \"60%\",\n width: \"70%\"\n },\n isStacked: true,\n legend: 'none',\n tooltip: { isHtml: true }\n };\n\n var container = document.getElementById('barchart_0');\n var chart = new google.visualization.ColumnChart(container);\n\n chart.draw(data, options);\n window.addEventListener('resize', () => {\n chart.draw(data, options);\n });\n\n } catch (error) {\n console.error(\"Error parsing JSON data: \", error);\n }\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"modal\", \"pageMask\", \"columnCheckbox\" ]\n\n display() {\n $(this.modalTarget).show();\n $(this.pageMaskTarget).show();\n }\n\n close() {\n $(this.modalTarget).hide();\n $(this.pageMaskTarget).hide();\n }\n\n toggleColumn(ev) {\n var selection_map_json = this.data.get('selections')\n if (!selection_map_json) {\n selection_map_json = '{}'\n }\n var selection_map = JSON.parse(selection_map_json)\n\n selection_map[$(ev.target).data('column-name')] = $(ev.target).prop('checked')\n\n this.data.set('selections', JSON.stringify(selection_map))\n }\n\n toggleAllColumns(ev) {\n var do_select_all = $(ev.target).prop('checked')\n var selection_map = {}\n\n this.columnCheckboxTargets.forEach(cb => {\n if ($(cb).data('column-name') == 'select_all') {\n selection_map[$(cb).data('column-name')] = true\n $(cb).prop('checked', true)\n } else {\n selection_map[$(cb).data('column-name')] = do_select_all\n $(cb).prop('checked', do_select_all)\n }\n });\n\n this.data.set('selections', JSON.stringify(selection_map))\n }\n\n save() {\n let columnsToHide = Object.entries(JSON.parse(this.data.get('selections'))).map((pair, idx) => {\n return [idx, pair[1]]\n }).filter(pair => {\n return !pair[1]\n }).map(pair => pair[0])\n\n let url = new URL(window.location.href)\n let params = new URLSearchParams(url.search.slice(1))\n\n params.delete('hide_columns')\n params.append('hide_columns', JSON.stringify(columnsToHide))\n params.append('filter_name', $(\"#filter_name\").val())\n\n url.search = params.toString()\n this.close()\n\n window.location = url.toString()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"toggle\", \"arrow\"]\n\n connect() {\n if(window.location.href.split('#').pop() == 'available_content_graph') {\n document.getElementById('available_content_graph')?.scrollIntoView();\n }\n\n if (this.element.dataset.concertinaExpandDefault === \"true\") {\n this.expand();\n }\n }\n\n play() {\n if (this.hasToggleTarget) {\n for (const target of this.toggleTargets) {\n target.classList.toggle('closed')\n }\n }\n this.toggleArrow();\n }\n\n expand() {\n if (this.hasToggleTarget) {\n for (const target of this.toggleTargets) {\n target.classList.remove('closed')\n }\n }\n }\n\n handleKeypress(event) {\n // Check if the Enter key was pressed \n if ((event.key === 'Enter' || event.keyCode === 13) ) {\n // Call the play method\n this.play();\n }\n }\n\n toggleArrow() {\n if (this.hasArrowTarget) {\n this.arrowTarget.classList.toggle('closed');\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport React from \"react\";\n\nexport default class extends Controller {\n static targets = [\"synopsisModal\", \"learningObjectivesModal\", \"documentTitle\",\n \"documentSynopsis\", \"documentLO\", \"documentTitleLOModal\",\n \"MODMapModal\", \"documentTitleMMModal\",\n \"modMap\", \"documentIntegration\",\n \"basketModal\", \"addCourseModal\", \"addTodoModal\",\n \"todoModal\", \"prereqTodoModal\", \"documentIdInput\",\n \"subservientIdInput\", \"modalSubservientSubtitle\", \"modalSubtitle\",\n \"modalPrerequisiteSubtitle\", \"clearNoteField\", \"clearDateField\",\n \"clearSubNoteField\", \"clearSubDateField\", \"clearPreNoteField\", \"clearPreDateField\", \"quizModal\", \"documentTitleQuizModal\", \"questionsAnsweredQuizModal\",\"percentCorrectQuizModal\",\n \"saveQuizTodoModal\", \"quizName\", \"quizId\",\"resetModal\"];\n\n connect() {\n this.handleKeydown = this.handleKeydown.bind(this);\n document.addEventListener('keydown', this.handleKeydown);\n }\n\n disconnect() {\n document.removeEventListener('keydown', this.handleKeydown);\n }\n\n handleKeydown(event) {\n if (this.hasQuizModalTarget && !this.quizModalTarget.classList.contains('hidden')) {\n let cancelButton = this.quizModalTarget.querySelector('.cancel-button-class');\n if (event.key === 'Escape') {\n this['hideQuizModal'](event);\n }\n }\n\n if (this.hasSaveQuizTodoModalTarget && !this.saveQuizTodoModalTarget.classList.contains('hidden')) {\n this.handleModalKeydown(event, this.saveQuizTodoModalTarget, 'hideSaveQuizTodoModal');\n }\n\n if (this.hasSynopsisModalTarget && !this.synopsisModalTarget.classList.contains('hidden')) {\n let cancelButton = this.synopsisModalTarget.querySelector('.cancel-button-class');\n if (event.key === 'Escape') {\n this['hideSynopsisModal'](event);\n }\n }\n\n if (this.hasLearningObjectivesModalTarget && !this.learningObjectivesModalTarget.classList.contains('hidden')) {\n let cancelButton = this.learningObjectivesModalTarget.querySelector('.cancel-button-class');\n if (event.key === 'Escape') {\n this['hideLearningObjectivesModal'](event);\n }\n }\n\n if (this.hasMODMapModalTarget && !this.MODMapModalTarget.classList.contains('hidden')) {\n let cancelButton = this.MODMapModalTarget.querySelector('.cancel-button-class');\n if (event.key === 'Escape') {\n this['hideModMapModal'](event);\n }\n }\n }\n\n handleModalKeydown(event, modal, hideModalMethod) {\n let submitButton = modal.querySelector('input[type=\"submit\"]');\n let cancelButton = modal.querySelector('.cancel-button-class');\n\n if (event.key === 'Enter') {\n // Trigger the submit button click event\n submitButton.click();\n } else if (event.key === 'Escape') {\n // Trigger the cancel button click event\n this[hideModalMethod](event);\n }\n }\n\n openSynopsisModal(event){\n this.documentTitleTarget.innerHTML=event.params.title\n this.documentSynopsisTarget.innerHTML=event.params.synopsis\n this.documentIntegrationTarget.innerHTML=\"\"\n if(event.params.documentKind!=='illness_script') {\n let finalDiagnosis = event.params.finalDiagnosis.length !== 0 ?\n \"

Final Diagnosis: \" + event.params.finalDiagnosis.map((final_diagnosis) => {\n return ` ${final_diagnosis} `\n }) + \"
\" : \"\"\n let clinicalExcellence = event.params.clinicalExcellence.length !== 0 ?\n \"

Clinical Excellence Curricular Thread: \" + event.params.clinicalExcellence.map((obj) => {\n return `${obj}`\n }) + \"
\" : \"\"\n let basicScienceDiscipline = event.params.basicScienceDisciplines.length !== 0 ?\n \"

Basic Science Curricular Thread: \" + event.params.basicScienceDisciplines.map((obj) => {\n return `${obj}`\n }) + \"
\" : \"\"\n this.documentIntegrationTarget.innerHTML = finalDiagnosis.replaceAll(',', '') + clinicalExcellence.replaceAll(',', '') + basicScienceDiscipline.replaceAll(',', '')\n }\n this.synopsisModalTarget.classList.remove(\"hidden\");\n }\n\n hideSynopsisModal(){\n this.synopsisModalTarget.classList.add(\"hidden\");\n }\n\n openBasketModal(){\n this.basketModalTarget.classList.remove(\"hidden\");\n }\n\n hideBasketModal(){\n this.basketModalTarget.classList.add(\"hidden\");\n }\n\n openLearningObjectivesModal(event){\n this.documentTitleLOModalTarget.innerHTML=event.params.title\n const searchText = event.params.searchText\n const renderedLearningObjectives = event.params.lo.map((lo) => {\n if (searchText !== \"\" && lo.toLowerCase().includes(searchText.toLowerCase())) {\n const regex = new RegExp(searchText, 'gi');\n lo = lo.replace(regex, (match) => `${match}`);\n }\n return `\n
\n
\n
\n ${lo}\n
\n
\n `;\n }).join(\"\");\n\n this.documentLOTarget.innerHTML=renderedLearningObjectives\n this.learningObjectivesModalTarget.classList.remove(\"hidden\");\n }\n\n hideLearningObjectivesModal(){\n this.learningObjectivesModalTarget.classList.add(\"hidden\");\n }\n\n openModMapModal(){\n this.documentTitleMMModalTarget.innerHTML=event.params.title\n this.modMapTarget.innerHTML=``\n this.MODMapModalTarget.classList.remove(\"hidden\");\n }\n\n hideModMapModal(){\n this.MODMapModalTarget.classList.add(\"hidden\");\n }\n\n openAddCourseModal() {\n this.addCourseModalTarget.classList.remove(\"hidden\");\n }\n\n hideAddCourseModal() {\n this.addCourseModalTarget.classList.add(\"hidden\");\n }\n\n openAddTodoModal() {\n this.addTodoModalTarget.classList.remove(\"hidden\");\n }\n\n hideAddTodoModal() {\n this.addTodoModalTarget.classList.add(\"hidden\");\n }\n\n openPrereqTodoModal(e) {\n const documentId = e.target.dataset.documentId;\n const documentTitle = e.target.dataset.documentTitle;\n const prerequisiteTitle = e.target.dataset.prerequisiteTitle;\n\n this.modalSubservientSubtitleTarget.innerHTML = documentTitle;\n this.modalPrerequisiteSubtitleTarget.innerHTML = prerequisiteTitle;\n this.subservientIdInputTarget.value = documentId;\n this.clearSubNoteFieldTarget.value = \"\";\n this.clearSubDateFieldTarget.value = \"\";\n this.clearPreNoteFieldTarget.value = \"\";\n this.clearPreDateFieldTarget.value = \"\";\n this.prereqTodoModalTarget.classList.remove(\"hidden\");\n }\n\n hidePrereqTodoModal() {\n this.prereqTodoModalTarget.classList.add(\"hidden\");\n }\n\n openTodoModal(e) {\n fetch(e.target.dataset.url)\n .then (response => response.text())\n .then(html => Turbo.renderStreamMessage(html))\n .then(this.todoModalTarget.classList.remove(\"hidden\"));\n }\n\n hideTodoModal(e) {\n this.todoModalTarget.classList.add(\"hidden\");\n }\n\n openQuizModal(event){\n event.preventDefault();\n let dataset = event.currentTarget.dataset;\n let source = dataset.source;\n this.quizModalTarget.classList.remove(\"hidden\");\n const documentTitle = dataset.documentTitle;\n this.documentTitleQuizModalTarget.innerHTML = documentTitle;\n this.questionsAnsweredQuizModalTarget.innerHTML = dataset.questionsAnswered;\n let percentCorrect = dataset.percentageCorrect;\n let pieDiv = document.getElementById('saq-modal-pie-div');\n pieDiv.style = `--p:${percentCorrect};--c:#1d7360;--b:15px;`;\n this.percentCorrectQuizModalTarget.innerHTML = percentCorrect+ '%';\n let openQuestionLink = document.getElementById(\"open-question\");\n let newOnClick = `analytics.track('open_questions', {page: window.location.href, source: '${source}', case_name: '${documentTitle}'})`;\n openQuestionLink.setAttribute(\"onclick\", newOnClick);\n let quizId = dataset.quizId;\n openQuestionLink.href = openQuestionLink.href.replace(/\\/id\\//, `/${quizId}/`);\n let resetOpenQuestionLink = document.getElementById(\"reset-open-question\");\n resetOpenQuestionLink.href = resetOpenQuestionLink.href.replace(/\\/id\\//, `/${quizId}/`);\n if(this.hasQuizIdTarget) {\n this.quizIdTarget.value = quizId;\n }\n if(this.hasQuizNameTarget) {\n this.quizNameTarget.innerHTML = dataset.quizName;\n }\n let saveTodoLik = document.getElementById(\"save-question-to-todo\");\n let newSaveTodoOnClick = `analytics.track('saq_save_to_do', {page: window.location.href, source: '${source}', case_name: '${documentTitle}'})`;\n saveTodoLik.setAttribute(\"onclick\", newSaveTodoOnClick);\n let openQuestionButton = document.getElementById('open-question');\n if (openQuestionButton) {\n openQuestionButton.focus();\n }\n analytics.track('questions_button', {page: window.location.href, source: source, case_name: documentTitle})\n }\n\n hideQuizModal(){\n this.quizModalTarget.classList.add(\"hidden\");\n }\n\n openSaveQuizTodoModal(event){\n event.preventDefault();\n this.quizModalTarget.classList.add(\"hidden\");\n this.saveQuizTodoModalTarget.classList.remove(\"hidden\");\n let selectElement = document.getElementsByClassName(\"select-list-save-quiz-todo-modal\")[0];\n selectElement.focus();\n }\n\n hideSaveQuizTodoModal(){\n this.saveQuizTodoModalTarget.classList.add(\"hidden\");\n if(this.saveQuizTodoModalTarget.dataset.redirectTo) {\n window.location = this.saveQuizTodoModalTarget.dataset.redirectTo;\n }\n }\n\n openResetModal(e){\n e.preventDefault();\n e.stopImmediatePropagation();\n const resetModalId = e.target.dataset.resetModalId;\n const modal = this.resetModalTargets.find(target => target.id === `reset_modal_${resetModalId}`);\n if (modal) {\n modal.classList.remove(\"hidden\");\n }\n }\n\n hideResetModal(e){\n const resetModalId = e.target.dataset.resetModalId;\n const modal = this.resetModalTargets.find(target => target.id === `reset_modal_${resetModalId}`);\n if (modal) {\n modal.classList.add(\"hidden\");\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n copy(ev) {\n let table = document.getElementById('backupcodes')\n let codes = []\n for (let i in table.rows) {\n let row = table.rows[i]\n for (let j in row.cells) {\n let col = row.cells[j]\n codes.push(col.innerHTML)\n }\n }\n let filteredCodes = codes.filter(function(x) {\n return x !== undefined && x !== \"\";\n });\n let stringCodes = filteredCodes.toString()\n navigator.clipboard.writeText(stringCodes)\n .then(res => alert(\"Copied Backup Codes to Clipboard\"))\n .catch(err => alert(\"Copy failed: \" + err))\n ev.preventDefault()\n }\n}","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"display\", \"pauseTime\"];\n\n initialize() {\n const modalIds = [\n \"pause-modal-id\",\n \"pause-rationale-modal-id\",\n \"pause-expiration-modal-id\",\n \"warning-modal-id\",\n \"expiration-modal-id\"\n ];\n modalIds.forEach(id => this.hideModal(this.data.get(id)));\n\n if (this.hasDisplayTarget || this.hasPauseTimeTarget) {\n this.examSeconds = parseInt(this.data.get(\"starting-seconds\"));\n this.warningSeconds = parseInt(this.data.get(\"warning-seconds\"));\n this.pauseRemaining = parseInt(this.data.get(\"pause-remaining-seconds\"));\n\n this.startExamCountdown();\n this.startWarningCountdown();\n const pauseTimer = document.getElementById(\"pauseTimer\");\n if (pauseTimer) {\n pauseTimer.style.display = \"none\";\n }\n\n if (parseInt(this.data.get(\"pause-remaining-seconds\")) > 0) {\n this.pausesExam(parseInt(this.data.get(\"pause-remaining-seconds\")));\n this.showModal('pauseModal');\n }\n }\n this.setupEventListeners();\n }\n\n startExamCountdown() {\n this.examEndTime = new Date().getTime() + this.examSeconds * 1000;\n this.examInterval = setInterval(() => {\n if (!this.displayTarget) {\n clearInterval(this.examInterval);\n return;\n }\n\n const now = new Date().getTime();\n const timeLeft = this.examEndTime - now;\n\n if (timeLeft <= 0) {\n clearInterval(this.examInterval);\n this.onExpired();\n return;\n }\n const endTime = now + timeLeft;\n\n // Now, calculate the remaining time using countdown.js by specifying endTime\n const remaining = countdown(new Date(endTime), new Date(), countdown.HOURS | countdown.MINUTES | countdown.SECONDS);\n this.updateDisplay(remaining);\n }, 1000);\n }\n\n startWarningCountdown() {\n this.warningEndTime = new Date().getTime() + this.warningSeconds * 1000;\n this.warningInterval = setInterval(() => {\n const now = new Date().getTime();\n const timeLeft = this.warningEndTime - now;\n\n if (timeLeft <= 0) {\n this.displayWarning();\n this.displayWarningModal(timeLeft);\n clearInterval(this.warningInterval);\n }\n }, 1000);\n }\n\n updateDisplay(remaining) {\n if (!this.displayTarget) return;\n\n const hours = remaining.hours.toString().padStart(2, \"0\");\n const minutes = remaining.minutes.toString().padStart(2, \"0\");\n const seconds = remaining.seconds.toString().padStart(2, \"0\");\n this.displayTarget.innerHTML = `${hours}:${minutes}:${seconds}`;\n }\n\n setupEventListeners() {\n const modals = {\n pauseRationale: document.getElementById(this.data.get(\"pause-rationale-modal-id\")),\n warning: document.getElementById(this.data.get(\"warning-modal-id\")),\n pauseExpiration: document.getElementById(this.data.get(\"pause-expiration-modal-id\")),\n pause: document.getElementById(this.data.get(\"pause-modal-id\")),\n expiration: document.getElementById(this.data.get(\"expiration-modal-id\"))\n };\n\n // Setup pause rationale modal events\n if (modals.pauseRationale) {\n this.addClickHandler(modals.pauseRationale.querySelector(\"#submit-pause-btn\"), (e) => {\n e.preventDefault();\n this.pauseRationaleModalClosed();\n });\n\n const closeSelectors = [\".btn-close\", \"#pause-cancel\"];\n closeSelectors.forEach(selector => {\n this.addClickHandler(modals.pauseRationale.querySelector(selector), (e) => {\n e.preventDefault();\n this.hideModal('pauseRationaleModal');\n });\n });\n }\n\n // Setup warning modal events\n if (modals.warning) {\n const closeSelectors = [\".btn-close\", \".cancl\"];\n closeSelectors.forEach(selector => {\n this.addClickHandler(modals.warning.querySelector(selector), (e) => {\n e.preventDefault();\n this.hideModal('warningModal');\n });\n });\n }\n\n // Setup pause expiration modal events\n if (modals.pauseExpiration) {\n this.addClickHandler(modals.pauseExpiration.querySelector(\".cancl\"), (e) => {\n e.preventDefault();\n this.hideModal('pauseExpirationModal');\n this.autosubmittedModalClosed();\n });\n }\n\n // Setup pause modal events\n if (modals.pause) {\n this.addClickHandler(modals.pause.querySelector(\"#resume-pause-btn\"), (e) => {\n e.preventDefault();\n this.hideModal('pauseModal');\n this.pauseModalClosed();\n });\n }\n\n // Setup expiration modal events\n if (modals.expiration) {\n this.addClickHandler(modals.expiration.querySelector(\"#auto-submit\"), (e) => {\n e.preventDefault();\n this.autosubmittedModalClosed();\n });\n }\n }\n\n addClickHandler(element, handler) {\n if (element) {\n element.addEventListener(\"click\", handler);\n }\n }\n\n addEscapeKeyListener() {\n document.addEventListener('keydown', (event) => {\n if (event.key === 'Escape') {\n document.querySelectorAll('.btn-close').forEach(button => button.click());\n }\n });\n }\n\n showPauseRationaleModal(ev) {\n this.showModal(this.data.get(\"pause-rationale-modal-id\"));\n const reasonInput = document.getElementById(\"reason\");\n const submitButton = document.getElementById(\"submit-pause-btn\");\n\n if (reasonInput && submitButton) {\n reasonInput.addEventListener(\"input\", function () {\n submitButton.disabled = reasonInput.value.trim() === \"\";\n });\n\n submitButton.addEventListener(\"click\", this.hidePausebtn);\n }\n }\n\n hidePausebtn() {\n const pauseButton = document.getElementById(\"pauseButton\");\n if (pauseButton) {\n setTimeout(() => {\n pauseButton.style.display = \"none\";\n }, 1000);\n }\n }\n\n pauseRationaleModalClosed() {\n const reasonInput = document.getElementById(\"reason\");\n const errorMessage = document.getElementById(\"errorMessage\");\n\n if (!reasonInput) return;\n\n const pauseReason = reasonInput.value;\n if (pauseReason === \"\") {\n if (errorMessage) {\n errorMessage.style.display = \"block\";\n }\n this.showModal(this.data.get(\"pause-rationale-modal-id\"));\n } else {\n this.pause(pauseReason);\n this.hideModal('pauseRationaleModal');\n this.showModal('pauseModal');\n }\n }\n\n pause(pauseReason) {\n this.pausesExam(parseInt(this.data.get(\"pause-seconds\")));\n const pauseUrl = document.getElementById(\"pause-url\").value;\n const rostering = { pause_reason: pauseReason };\n const token = document.querySelector('meta[name=\"csrf-token\"]').content;\n\n fetch(pauseUrl, {\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": token\n },\n body: JSON.stringify({ rostering: rostering })\n });\n }\n\n pausesExam(pauseSeconds) {\n this.pauseEndTime = new Date().getTime() + pauseSeconds * 1000;\n this.pauseInterval = setInterval(() => {\n const remaining = countdown(new Date(),this.pauseEndTime, countdown.HOURS | countdown.MINUTES | countdown.SECONDS);\n if (remaining.value <= 0) {\n this.submitExam();\n clearInterval(this.pauseInterval);\n } else {\n this.displayPauseTimer(remaining);\n }\n }, 1000);\n\n clearInterval(this.examInterval);\n clearInterval(this.warningInterval);\n\n const pauseTimer = document.getElementById(\"pauseTimer\");\n const examTimer = document.getElementById(\"examTimer\");\n const pauseButton = document.getElementById(\"pauseButton\");\n\n if (pauseTimer) pauseTimer.style.display = \"block\";\n if (examTimer) examTimer.style.display = \"none\";\n if (pauseButton) pauseButton.disabled = true;\n }\n\n pauseModalClosed() {\n this.resume();\n }\n\n resume() {\n this.startExamCountdown();\n this.startWarningCountdown();\n\n const pauseTimer = document.getElementById(\"pauseTimer\");\n const examTimer = document.getElementById(\"examTimer\");\n\n if (pauseTimer) pauseTimer.style.display = \"none\";\n if (examTimer) examTimer.style.display = \"block\";\n clearInterval(this.pauseInterval);\n\n const rostering = { pause_interval: this.pauseRemaining };\n const resumeUrl = document.getElementById(\"resume-url\").value;\n const token = document.querySelector('meta[name=\"csrf-token\"]').content;\n\n fetch(resumeUrl, {\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": token\n },\n body: JSON.stringify({ rostering: rostering })\n });\n }\n\n submitExam() {\n const timedout = document.getElementById(\"timedout\");\n if (timedout) {\n timedout.value = \"timedout\";\n }\n this.hideModal(this.data.get(\"pause-modal-id\"));\n this.showModal(this.data.get(\"pause-expiration-modal-id\"));\n }\n\n displayPauseTimer(remaining) {\n const pauseTime = document.getElementById(\"pauseTime\");\n if (!pauseTime) return;\n\n const hours = remaining.hours.toString().padStart(2, \"0\");\n const minutes = remaining.minutes.toString().padStart(2, \"0\");\n const seconds = remaining.seconds.toString().padStart(2, \"0\");\n pauseTime.innerHTML = `${hours}:${minutes}:${seconds}`;\n }\n\n onExpired() {\n clearInterval(this.examInterval);\n this.showModal(this.data.get(\"expiration-modal-id\"));\n const timedout = document.getElementById(\"timedout\");\n if (timedout) {\n timedout.value = \"timedout\";\n }\n }\n\n displayWarning() {\n const timer = document.getElementById(\"timer\");\n if (timer) {\n timer.classList.add(\"red_background\");\n }\n }\n\n // Display the warning modal only once\n displayWarningModal(timeLeft) {\n if (timeLeft > -2000) {\n this.showModal(this.data.get(\"warning-modal-id\"));\n }\n }\n\n autosubmittedModalClosed() {\n const redirectUrl = document.getElementById(\"redirect-url\").value;\n this.autosubmitted();\n window.location = redirectUrl;\n }\n\n autosubmitted() {\n const autoSubmitUrl = document.getElementById(\"autosubmit-url\").value;\n const token = document.querySelector('meta[name=\"csrf-token\"]').content;\n\n fetch(autoSubmitUrl, {\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": token\n }\n });\n }\n\n showModal(modalId) {\n const modal = document.getElementById(modalId);\n if (modal) {\n modal.style.display = \"block\";\n document.body.style.overflow = \"hidden\";\n this.addEscapeKeyListener();\n }\n }\n\n hideModal(modalId) {\n const modal = document.getElementById(modalId);\n if (modal) {\n modal.style.display = \"none\";\n document.body.style.overflow = \"auto\";\n }\n }\n}","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [ \"roleSelector\", \"courseSelections\" ]\n\n connect() {\n this.updateCourseSelectionVisibility()\n }\n\n changeRole(ev) {\n this.updateCourseSelectionVisibility()\n }\n\n needsCourseSelections() {\n let target = this.roleSelectorTarget;\n let selectedRoleName = target.options[target.selectedIndex].label;\n let rolesNeedingResponsibilities = JSON.parse(target.dataset.rolesRequiringResponsibilities);\n\n return rolesNeedingResponsibilities.includes(selectedRoleName);\n }\n\n updateCourseSelectionVisibility() {\n this.courseSelectionsTarget.hidden = !this.needsCourseSelections();\n }\n\n submitForm(event) {\n if(this.needsCourseSelections()) {\n let checkboxes = document.getElementById('course-selection-fieldset').querySelectorAll('input[type=checkbox]')\n let checkboxChecked = Array.from(checkboxes).find((element) => element.checked === true);\n if (!checkboxChecked) {\n alert(\"Please select atleast one course\")\n event.preventDefault();\n }\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n\n haltClickThrough(event) {\n event.preventDefault()\n }\n\n persist(event) {\n let patchUrl = event.target.dataset.patchUrl\n let newVal = event.target.value\n fetch(patchUrl, {\n headers: { \"Content-Type\": \"application/json; charset=utf-8\" },\n method: 'PATCH',\n redirect: 'manual',\n body: JSON.stringify({\n assessment_question: {\n current_use: newVal\n }\n })\n })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport * as React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport CurricularSummarySystem from \"../src/react/components/Assessment/Reports/CurricularPerformanceSummary/curricular_summary_system\";\nimport CurricularSummaryFocus from \"../src/react/components/Assessment/Reports/CurricularPerformanceSummary/curricular_summary_focus\";\n\n// Connects to data-controller=\"curricular-summary-tab\"\nexport default class extends Controller {\n static targets = [\"CurricularPerformanceSummary\"];\n\n connect() {\n let reportData = JSON.parse(this.element.dataset.reportData);\n createRoot(this.CurricularPerformanceSummaryTarget).render(\n <>\n \n \n \n );\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"cardLoader\", \"cardContent\"];\n\n connect() {\n if (this.hasCardLoaderTarget && this.hasCardContentTarget) {\n this.loadCardContent();\n }\n }\n\n loadCardContent() {\n const cardName = this.element.dataset.cardName;\n const cardLoader = this.cardLoaderTarget;\n const cardContent = this.cardContentTarget;\n cardLoader.style.display = \"block\";\n\n fetch(`/dashboard/${cardName}`)\n .then(response => response.text())\n .then(html => {\n cardContent.innerHTML = html;\n })\n .catch(error => {\n console.error(\"Error fetching data:\", error);\n cardContent.innerHTML = \"Error fetching data: \" + error.message;\n })\n .finally(() => {\n cardLoader.style.display = \"none\";\n cardContent.style.opacity = \"1\";\n });\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport Chart from 'chart.js/auto'\n\n// Connects to data-controller=\"dashboard--student--case-learning-time-chart\"\nexport default class extends Controller {\n static values = {\n stats: Object\n }\n connect() {\n const chartContainer = this.element;\n const statsData = this.statsValue;\n\n (async function() {\n const labels = Object.keys(statsData);\n const data = Object.values(statsData);\n let delayed;\n\n new Chart(\n chartContainer,\n {\n type: 'bar',\n data: {\n labels: labels,\n datasets: [\n {\n data: data,\n backgroundColor: '#1564A4'\n }\n ]\n },\n options: {\n aspectRatio: false,\n responsive: true,\n barThickness: 5,\n plugins: {\n legend: {\n display: false\n },\n tooltip: {\n callbacks: {\n title: function(tooltipItems) {\n return '';\n },\n label: function(context) {\n const label = context.dataset.label || '';\n const tooltipText = label ? (label + ' ' + context.parsed.y) : context.parsed.y;\n return tooltipText + ' minutes on ' + context.label;\n }\n }\n }\n },\n animation: {\n onComplete: () => {\n delayed = true;\n },\n delay: (context) => {\n let delay = 0;\n if (context.type === 'data' && context.mode === 'default' && !delayed) {\n delay = context.dataIndex * 50 + context.datasetIndex * 50;\n }\n return delay;\n },\n },\n scales: {\n x: {\n grid: {\n display: false\n },\n ticks: {\n minRotation: 45\n }\n },\n y: {\n grid: {\n display: true\n },\n title: {\n display: true,\n text: 'Minutes',\n font: {\n weight: 'bold'\n }\n }\n }\n }\n }\n }\n );\n })();\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport Chart from 'chart.js/auto'\n\n// Connects to data-controller=\"dashboard--student--completed-available-cases-chart\"\nexport default class extends Controller {\n static values = {\n stats: Object\n }\n connect() {\n const chartContainer = this.element;\n const statsData = this.statsValue;\n\n (async function() {\n const labels = Object.keys(statsData);\n const completedCasesData = Object.values(statsData).map(value => value.completed_cases);\n const availableCasesData = Object.values(statsData).map(value => value.available_cases);\n const startedCasesData = Object.values(statsData).map(value => value.started_cases);\n const subscribedCasesData = Object.values(statsData).map(value => value.subscribed);\n\n const datasets = [\n {\n label: 'Completed',\n data: completedCasesData,\n backgroundColor: completedCasesData.map((value, index) => subscribedCasesData[index] ? '#3D266E' : '#696969')\n },\n {\n label: 'Started',\n data: startedCasesData,\n backgroundColor: startedCasesData.map((value, index) => subscribedCasesData[index] ? '#9E76B4' : '#696969')\n },\n {\n label: 'Available',\n data: availableCasesData,\n backgroundColor: availableCasesData.map((value, index) => subscribedCasesData[index] ? '#D9D9D9' : '#696969')\n }\n ];\n\n if (subscribedCasesData.includes(false)) {\n datasets.push({\n label: 'Available for additional purchase',\n data: [],\n backgroundColor: '#696969'\n });\n }\n\n new Chart(\n chartContainer,\n {\n type: 'bar',\n data: {\n labels: labels,\n datasets: datasets\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n scales: {\n x: {\n stacked: true,\n grid: {\n display: false\n },\n title: {\n display: true,\n text: 'Aquifer Courses',\n color: '#000',\n font: {\n family: 'Roboto Condensed',\n weight: 'bold'\n }\n }\n },\n y: {\n stacked: true,\n title: {\n display: true,\n text: '# of cases/scripts',\n color: '#000',\n font: {\n family: 'Roboto Condensed',\n weight: 'bold'\n }\n }\n }\n },\n plugins: {\n legend: {\n labels: {\n boxWidth: 10,\n padding: 20\n }\n }\n }\n }\n }\n );\n })();\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = []\n\n changeExamVariationStatus(changeEvent) {\n let selectElem = changeEvent.target;\n let newStatus = selectElem.value\n let url = selectElem.closest('td').dataset.examVariationUrl\n\n $.ajax({\n url: url,\n type: \"PATCH\",\n async: true,\n dataType: \"json\",\n data: {\n assessment_exam_variation: {\n status: newStatus\n }\n }\n });\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport React from \"react\";\n\nexport default class extends Controller {\n static targets = [\"teachingPointModal\"];\n\n hideTeachingPointModal(){\n this.teachingPointModalTarget.classList.add(\"hidden\");\n }\n\n openTeachingPointModal(){\n window.renderAllChildReactOnRailsComponents?.(this.element);\n this.teachingPointModalTarget.classList.remove(\"hidden\");\n }\n\n hideTeachingPointModalItemResponse(e){\n const itemResponseId = e.target.dataset.itemResponseId;\n const modal = this.teachingPointModalTargets.find(target => target.id === `tp_modal_${itemResponseId}`);\n if (modal) {\n modal.classList.add(\"hidden\");\n }\n }\n\n openTeachingPointModalItemResponse(e){\n window.renderAllChildReactOnRailsComponents?.(this.element);\n const itemResponseId = e.target.dataset.itemResponseId;\n const modal = this.teachingPointModalTargets.find(target => target.id === `tp_modal_${itemResponseId}`);\n if (modal) {\n modal.classList.remove(\"hidden\");\n }\n }\n\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"menu\",\"submenu\",\"arrow\"];\n\n connect() {\n const shownMenuId = localStorage.getItem(\"shownDropdownId\");\n if (shownMenuId) {\n const shownMenu = document.getElementById(shownMenuId);\n if (shownMenu) {\n shownMenu.removeAttribute(\"hidden\");\n document.addEventListener(\"click\", this.closeDropdowns);\n }\n }\n this.changeBackground();\n }\n\n changeBackground() {\n const checkboxes = this.element.querySelectorAll('input[type=\"checkbox\"]');\n const button = this.element.querySelector('.hotwire-button');\n if (!button) { return null; }\n const isChecked = Array.from(checkboxes).some(checkbox => checkbox.checked);\n if (isChecked) {\n button.style.backgroundColor = '#D9D9D9';\n } else {\n button.style.backgroundColor = 'white';\n }\n }\n\n toggle(event) {\n event.preventDefault();\n if (this.hasArrowTarget) {\n this.arrowTarget.classList.toggle(\"flipped\");\n }\n if (!this.menuTarget.classList.contains(\"hidden\")) {\n document.addEventListener(\"click\", this.closeDropdowns)\n } else {\n document.removeEventListener(\"click\", this.closeDropdowns)\n }\n const currentMenu = this.menuTarget;\n const allMenus = document.querySelectorAll(\".dropdown-list\");\n allMenus.forEach((menu) => {\n if (menu !== currentMenu) {\n menu.setAttribute(\"hidden\", \"\");\n }\n });\n if (currentMenu.hasAttribute(\"hidden\")) {\n currentMenu.removeAttribute(\"hidden\");\n localStorage.setItem(\"shownDropdownId\", currentMenu.id);\n } else {\n currentMenu.setAttribute(\"hidden\", \"\");\n localStorage.removeItem(\"shownDropdownId\");\n }\n this.changeBackground();\n }\n\n toggleSubmenu(event) {\n event.preventDefault();\n if (this.hasSubmenuTarget) { // Check if submenuTarget exists\n const submenu = this.submenuTarget;\n const allSubmenus = document.querySelectorAll(\"[data-target='dropdown.submenu']\");\n allSubmenus.forEach((sub) => {\n if (sub !== submenu) {\n sub.setAttribute(\"hidden\", \"\");\n }\n });\n if (submenu.hasAttribute(\"hidden\")) {\n submenu.removeAttribute(\"hidden\");\n } else {\n submenu.setAttribute(\"hidden\", \"\");\n }\n }\n }\n\n closeDropdowns = (event) => {\n if (!event.target.closest(\"[data-controller='dropdown']\")) {\n this.menuTarget.setAttribute(\"hidden\", \"\");\n if (this.hasSubmenuTarget) {\n this.submenuTarget.setAttribute(\"hidden\", \"\"); // Close the submenu if it exists\n }\n document.removeEventListener(\"click\", this.closeDropdowns)\n localStorage.removeItem(\"shownDropdownId\");\n }\n }\n\n toggleOnEnter(event) {\n if (event.keyCode === 13) {\n this.toggle(event)\n }\n }\n\n toggleEducatorDashboardSort(event){\n if (this.hasArrowTarget) {\n this.arrowTarget.classList.toggle(\"flipped\");\n }\n if (!this.menuTarget.classList.contains(\"hidden\")) {\n document.addEventListener(\"click\", this.closeDropdowns)\n } else {\n document.removeEventListener(\"click\", this.closeDropdowns)\n }\n const currentMenu = this.menuTarget;\n const allMenus = document.querySelectorAll(\".dropdown-list\");\n allMenus.forEach((menu) => {\n if (menu !== currentMenu) {\n menu.setAttribute(\"hidden\", \"\");\n }\n });\n if (currentMenu.hasAttribute(\"hidden\")) {\n currentMenu.removeAttribute(\"hidden\");\n localStorage.setItem(\"shownDropdownId\", currentMenu.id);\n } else {\n currentMenu.setAttribute(\"hidden\", \"\");\n localStorage.removeItem(\"shownDropdownId\");\n }\n this.changeBackground();\n }\n}","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"restartModal\", \"grdu\", \"reason\", \"pauseModal\", \"examName\",\n \"studentName\", \"pauseDate\", \"pauseTime\", \"pauseReason\",\n \"startDate\",\"endDate\",\"academicStartDate\",\"academicEndDate\",\n \"restartCommit\", \"examCourse\",\"dropdown\", \"hiddenField\", \"placeholder\",\n \"aqueductTableRow\", \"defaultExamForm\", \"highlightedRowsInfo\",\n \"highlightedRowsAlert\", \"warningModal\", \"courseSchedules\"]\n\n initialize() {\n const courseSchedulingFeatureFlag = this.element.dataset.schedulingFormFlag === \"true\";\n if (this.hasExamCourseTarget) {\n this.setSelectedExamCourse();\n }\n\n // Setup Edit Start DatePicker\n $(this.startDateTarget).datepicker({\n numberOfMonths: 2,\n dateFormat: \"mm-dd-yy\",\n minDate: 0,\n onSelect: (selected) => {\n var availability_ends_at = new Date(selected);\n availability_ends_at.setDate(availability_ends_at.getDate() + 10);\n $(this.endDateTarget).datepicker(\"option\", \"minDate\", selected);\n $(this.endDateTarget).datepicker(\"option\", \"maxDate\", availability_ends_at);\n $(\"#date_changed\").click();\n this.resetEndTimeAndDateFieldsEdit();\n if (courseSchedulingFeatureFlag) {\n this.checkDateInput(selected);\n } else if (this.hasExamCourseTarget) {\n this.reloadExamCourses();\n }\n }\n }).on(\"change\", (event) => {\n let inputValue = event.target.value.trim();\n if (inputValue) {\n this.checkMinDate(inputValue);\n if (this.hasExamCourseTarget && !courseSchedulingFeatureFlag) this.reloadExamCourses();\n }\n });\n\n\n const startDateElem = document.getElementById(\"exam-start-date-picker-edit\");\n const startMinDate = startDateElem && new Date(startDateElem.value);\n const startMaxDate = startDateElem && new Date(startDateElem.value);\n\n // Setup Edit End DatePicker\n $(this.endDateTarget).datepicker({\n numberOfMonths: 2,\n dateFormat: \"mm-dd-yy\",\n minDate: startMinDate,\n maxDate: startMaxDate && new Date(this.findMaxDate(startMaxDate)),\n onSelect: (selected) => {\n $(\"#date_changed\").click();\n var start_date = document.getElementById(\"exam-start-date-picker-edit\").value;\n var end_date = document.getElementById(\"exam-end-date-picker-edit\").value;\n var needs_subset = start_date == end_date;\n this.rebuildEndTimeSelectOptionsEdit(needs_subset);\n }\n }).on('keypress', function(e){ e.preventDefault();});\n\n }\n\n connect() {\n document.addEventListener(\"click\", this.closeDropdownOnClickOutside.bind(this));\n if (this.hasAcademicStartDateTarget) {\n this.formatDateInput(this.academicStartDateTarget);\n }\n if (this.hasAcademicEndDateTarget) {\n this.formatDateInput(this.academicEndDateTarget);\n }\n if (this.hasStartDateTarget){\n this.formatDateInput(this.startDateTarget);\n }\n }\n\n disconnect() {\n document.removeEventListener(\"click\", this.closeDropdownOnClickOutside.bind(this));\n }\n\n delayedCheckHighlightedRows() {\n setTimeout(() => {\n this.checkHighlightedRows(); // Call the checkHighlightedRows function after a delay\n }, 100);\n }\n\n checkHighlightedRows() {\n let aqueductTable = window.AqueductTable;\n let rows = aqueductTable.state.rows;\n this.alertForHighlightedRow(rows);\n this.showHighlightedRowInfo(rows);\n }\n\n changeDefaultForm(ev) {\n const selectEl = ev.target.closest('select');\n const default_exam_form = selectEl.value;\n const optionEl = [...(selectEl.children)].find(elem => elem.value == default_exam_form);\n const default_form_name = optionEl.innerText;\n\n let aqueductTable = window.AqueductTable;\n let rows = aqueductTable.state.rows;\n\n rows.forEach(row => {\n let exam_form = row.exam_form;\n if (exam_form == 'default') {\n exam_form = default_exam_form;\n }\n row.default_form_name = default_form_name;\n row.row_class = row.forms_already_taken.includes(exam_form) ? \"highlighted_rows\" : \"\";\n });\n\n aqueductTable.setState({ rows });\n this.alertForHighlightedRow(rows);\n this.showHighlightedRowInfo(rows);\n }\n\n changeRosteringForm(ev) {\n let aqueductTable = window.AqueductTable;\n let rows = aqueductTable.state.rows;\n let row = rows.find(row => row.grdu_id == this.getGrduId(ev));\n\n const default_exam_form = this.defaultExamFormTarget.selectedOptions[0].value;\n let exam_form = this.getExamForm(ev, default_exam_form);\n\n if(row.forms_already_taken.includes(exam_form)){\n row.row_class = \"highlighted_rows\";\n $(this.highlightedRowsInfoTarget).show();\n }\n else{\n row.row_class = \"\";\n $(this.highlightedRowsInfoTarget).hide();\n }\n row.exam_form = exam_form;\n\n aqueductTable.setState({ rows });\n }\n\n explainStatus(ev) {\n let grdu_id = ev.target.closest('tr').querySelector('.grdu_id_cell input[type=\"hidden\"]').value;\n let result\n $.ajax({\n url: \"pause_details\",\n type: \"GET\",\n async: false,\n dataType: \"json\",\n data: {grdu_id: grdu_id},\n success: function(response){\n result = response\n }\n });\n this.examNameTarget.textContent = result.exam_name\n this.studentNameTarget.textContent = result.student_name\n this.pauseDateTarget.textContent = result.pause_date\n this.pauseTimeTarget.textContent = result.pause_start_time+\"-\"+result.pause_end_time+\" \"+result.timezone\n this.pauseReasonTarget.textContent = result.pause_reason\n $(this.pauseModalTarget).show();\n }\n\n pauseClose(){\n $(this.pauseModalTarget).hide();\n }\n\n displayRestart(ev) {\n this.grduTarget.value = ev.target.closest('tr').querySelector('.grdu_id_cell input[type=\"hidden\"]').value;\n\n // Transfer row-specific data held in the row's \"Restart\" button to the submit button element.\n this.restartCommitTarget.dataset.url = ev.target.dataset.url;\n\n $(this.restartModalTarget).show();\n }\n\n closeRestart() {\n $(this.restartModalTarget).hide();\n }\n\n restartExam(){\n let grdu_id = this.grduTarget.value;\n\n // The restart API endpoint is in the commit button's dataset.\n let url = this.restartCommitTarget.dataset.url\n\n let aqueductTable = window.AqueductTable;\n let rows = aqueductTable.state.rows;\n let rowIdx = rows.findIndex(row => row.grdu_id == grdu_id);\n let assessment_rostering = {\n reason_for_restart: this.reasonTarget.value\n }\n $.ajax({\n url: url,\n type: \"PATCH\",\n async: false,\n dataType: \"json\",\n data: {assessment_rostering: assessment_rostering}\n });\n $(this.restartModalTarget).hide();\n rows[rowIdx].status = 'Restarted';\n rows[rowIdx].can_restart = false;\n aqueductTable.setState({ rows });\n }\n\n getGrduId(ev) {\n return ev.target.closest('tr').querySelector('.grdu_id_cell input[type=\"hidden\"]').value;\n }\n\n getExamForm(ev, default_exam_form) {\n let exam_form = ev.target.closest('select').value;\n if (exam_form == 'default') {\n exam_form = default_exam_form;\n }\n return exam_form;\n }\n\n alertForHighlightedRow(rows){\n if (rows.some(row => row.row_class == \"highlighted_rows\" && row.selected)) {\n $(this.highlightedRowsAlertTarget).show();\n }\n }\n\n showHighlightedRowInfo(rows){\n if (rows.some(row => row.row_class == \"highlighted_rows\")){\n $(this.highlightedRowsInfoTarget).show();\n }\n else{\n $(this.highlightedRowsInfoTarget).hide();\n }\n }\n\n closehighlightedRowsAlert(){\n $(this.highlightedRowsAlertTarget).hide();\n }\n\n resetEndTimeAndDateFieldsEdit() {\n var end_date_picker = document.getElementById(\"exam-end-date-picker-edit\");\n end_date_picker.value = null;\n\n var needs_subset = false;\n this.rebuildEndTimeSelectOptionsEdit(needs_subset);\n }\n\n rebuildEndTimeSelectOptionsEdit(needs_subset) {\n var start_time_select = document.getElementById(\"start-time-select\");\n var end_time_select = document.getElementById(\"end-time-select\");\n\n if (needs_subset) {\n var start_time = start_time_select.options[start_time_select.selectedIndex].text;\n\n // Extract subset of options after selected start_time\n var new_end_time_inner_html = start_time_select.innerHTML.slice(start_time_select.innerHTML.indexOf(start_time) - 1);\n end_time_select.innerHTML = new_end_time_inner_html;\n } else {\n // Reset time list to stock\n end_time_select.innerHTML = start_time_select.innerHTML;\n }\n }\n\n reloadExamCourses() {\n const url = this.examCourseTarget.dataset.url && new URL(this.examCourseTarget.dataset.url)\n const preserveAssessment = new URLSearchParams(window.location.search).get('preserve_assessment') === 'true';\n\n if (url) {\n if (preserveAssessment) {\n url.searchParams.append('start_date', this.examCourseTarget.dataset.startDate)\n } else {\n url.searchParams.append('start_date', this.startDateTarget.value)\n }\n }\n\n fetch(url)\n .then(response => response.text())\n .then(html => {\n const tempContainer = document.createElement('div');\n tempContainer.innerHTML = html.trim();\n\n // Find the new select element inside the fetched HTML\n const newSelect = tempContainer.querySelector('select');\n\n if (newSelect) {\n // Replace the current examCourseTarget with the new select element\n this.examCourseTarget.replaceWith(newSelect);\n }\n })\n }\n\n setSelectedExamCourse() {\n const selectedCourse = document.getElementById('hidden_exam_course')?.value;\n\n if (selectedCourse) {\n const selectedOption = Array.from(this.examCourseTarget.options).find(\n option => option.value === selectedCourse\n );\n\n if (selectedOption) {\n selectedOption.selected = true;\n }\n }\n }\n\n findMaxDate(min_date){\n return min_date.setDate(min_date.getDate()+10)\n }\n\n toggleDropdown() {\n if (this.hasDropdownTarget) {\n const isHidden = this.dropdownTarget.style.display === \"none\";\n this.dropdownTarget.style.display = isHidden ? \"block\" : \"none\";\n\n if (isHidden) {\n const firstCheckbox = this.dropdownTarget.querySelector('input[type=\"checkbox\"]');\n if (firstCheckbox) firstCheckbox.focus();\n }\n }\n }\n\n handleDropdownKeydown(event) {\n if (event.key === \" \" || event.key === \"Enter\") {\n event.preventDefault();\n this.toggleDropdown();\n }\n }\n\n updateSelectedGoals() {\n const selectedValues = Array.from(document.querySelectorAll('input[name=\"assessment_goal_options[]\"]:checked'))\n .map(checkbox => checkbox.value);\n\n if (this.hasHiddenFieldTarget) {\n this.hiddenFieldTarget.value = selectedValues.join(\",\");\n }\n\n if (this.hasPlaceholderTarget) {\n this.placeholderTarget.value =\n selectedValues.length > 0\n ? `You selected ${selectedValues.length} goal${selectedValues.length > 1 ? 's' : ''}`\n : \"Select Goals\";\n }\n }\n\n closeDropdownOnClickOutside(event) {\n if (this.hasDropdownTarget && this.hasPlaceholderTarget) {\n if (\n this.dropdownTarget.style.display === \"block\" &&\n !this.dropdownTarget.contains(event.target) &&\n event.target !== this.placeholderTarget\n ) {\n this.dropdownTarget.style.display = \"none\";\n this.placeholderTarget.setAttribute(\"aria-expanded\", \"false\");\n }\n }\n }\n\n checkCustomValidation() {\n if (this.hasAcademicStartDateTarget && this.academicStartDateTarget.value) {\n if (!this.isValidDate(this.academicStartDateTarget.value)) {\n this.academicStartDateTarget.setCustomValidity(\"Please enter a valid academic start date in the format MM-DD-YYYY.\");\n } else {\n this.academicStartDateTarget.setCustomValidity(\"\");\n }\n }\n\n if (this.hasAcademicEndDateTarget && this.academicEndDateTarget.value) {\n if (!this.isValidDate(this.academicEndDateTarget.value)) {\n this.academicEndDateTarget.setCustomValidity(\"Please enter a valid academic end date in the format MM-DD-YYYY.\");\n } else {\n this.academicEndDateTarget.setCustomValidity(\"\");\n }\n }\n }\n\n isValidDate(dateString) {\n let regex = /^\\d{2}-\\d{2}-\\d{4}$/;\n\n if (!regex.test(dateString)) {\n return false;\n }\n\n let parts = dateString.split('-');\n let year = parseInt(parts[2], 10);\n let month = parseInt(parts[0], 10);\n let day = parseInt(parts[1], 10);\n if (year < 2000 || year > 2100 || month < 1 || month > 12 || day < 1 || day > 31){\n return false; // Invalid year, month, or day\n }\n return true;\n }\n\n formatDateInput(input) {\n input.addEventListener(\"input\", function () {\n let value = input.value.replace(/\\D/g, \"\"); // Remove non-numeric characters\n let formattedValue = \"\";\n\n if (value.length > 0) {\n formattedValue = value.substring(0, 2); // MM\n }\n if (value.length > 2) {\n formattedValue += \"-\" + value.substring(2, 4); // DD\n }\n if (value.length > 4) {\n formattedValue += \"-\" + value.substring(4, 8); // YYYY\n }\n\n input.value = formattedValue;\n });\n input.addEventListener(\"blur\", () => {\n if (input !== this.startDateTarget) {\n let regex = /^(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])-(20\\d\\d)$/;\n let errorMsg;\n\n if (input.id === \"academic-start-date-picker-edit\") {\n errorMsg = document.querySelector(\".aystart-error-msg\");\n } else if (input.id === \"academic-end-date-picker-edit\") {\n errorMsg = document.querySelector(\".ayend-error-msg\");\n }\n\n if (input.value === '' || regex.test(input.value)) {\n input.classList.remove(\"error-border\");\n errorMsg.classList.add(\"hidden\");\n } else {\n input.classList.add(\"error-border\");\n errorMsg.classList.remove(\"hidden\");\n }\n }\n });\n }\n\n checkDateInput(input) {\n const element = document.querySelector('[data-controller~=\"edit-delivery\"]');\n const schedulingFeatureFlag = element ? element.getAttribute('data-scheduling-form-flag') === 'true' : false;\n if (schedulingFeatureFlag) {\n const inputDate = new Date(input);\n const oneYearLater = new Date();\n oneYearLater.setFullYear(oneYearLater.getFullYear() + 1);\n\n if (inputDate > oneYearLater) {\n $(this.warningModalTarget).show();\n }\n }\n }\n\n hideWarningModal(){\n $(this.warningModalTarget).hide();\n }\n\n resetDates(){\n this.startDateTarget.value = '';\n this.hideWarningModal();\n }\n\n setMinScheduleDate(){\n const courseSchedulingFeatureFlag = this.element.dataset.schedulingFormFlag === \"true\";\n if (courseSchedulingFeatureFlag){\n this.startDateTarget.value = ''\n this.endDateTarget.value = ''\n const selectedCourse = this.examCourseTarget.value;\n const courseSchedules = JSON.parse(this.courseSchedulesTarget.value);\n let minDate = courseSchedules[selectedCourse] ? new Date(courseSchedules[selectedCourse]) : new Date();\n if (minDate < new Date()) {\n minDate = new Date();\n }\n this.minDate = minDate;\n $(this.startDateTarget).datepicker(\"option\", \"minDate\", minDate);\n }\n }\n\n checkMinDate(dateString) {\n const inputDate = this.parseDate(dateString);\n const minDate = this.minDate || new Date(Date.UTC(new Date().getUTCFullYear(), new Date().getUTCMonth(), new Date().getUTCDate()));\n const isValid = inputDate && inputDate >= minDate && this.isValidDate(dateString);\n const dateToUse = isValid ? inputDate : minDate;\n $(this.startDateTarget).datepicker(\"setDate\", this.formatDate(dateToUse));\n this.checkDateInput(this.formatDate(dateToUse));\n\n // Calculate availability end date (10 days after start date)\n const availabilityEndsAt = new Date(dateToUse);\n availabilityEndsAt.setDate(availabilityEndsAt.getDate() + 10);\n\n // Update end datepicker options\n $(this.endDateTarget).datepicker(\"option\", \"minDate\", dateToUse);\n $(this.endDateTarget).datepicker(\"option\", \"maxDate\", availabilityEndsAt);\n\n this.resetEndTimeAndDateFieldsEdit();\n }\n\n parseDate(dateString) {\n const parts = dateString.split(\"-\");\n const month = parseInt(parts[0], 10) - 1;\n const day = parseInt(parts[1], 10);\n const year = parseInt(parts[2], 10);\n return new Date(Date.UTC(year, month, day));\n }\n\n formatDate(date) {\n return `${String(date.getUTCMonth() + 1).padStart(2, '0')}-${String(date.getUTCDate()).padStart(2, '0')}-${date.getUTCFullYear()}`;\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"cardLoader\", \"cardContent\", \"questionModal\"];\n\n connect() {\n if (this.hasCardLoaderTarget && this.hasCardContentTarget) {\n this.loadCardContent();\n }\n }\n\n loadCardContent() {\n const cardName = this.element.dataset.cardName;\n const cardLoader = this.cardLoaderTarget;\n const cardContent = this.cardContentTarget;\n const startDate = this.element.dataset.startDate;\n const endDate = this.element.dataset.endDate;\n cardLoader.style.display = \"block\";\n\n const params = new URLSearchParams({\n start_date: startDate,\n end_date: endDate,\n });\n\n fetch(`/educator_dashboard/${cardName}?${params.toString()}`)\n .then(response => response.text())\n .then(html => {\n cardContent.innerHTML = html;\n })\n .catch(error => {\n console.error(\"Error fetching data:\", error);\n cardContent.innerHTML = \"Error fetching data: \" + error.message;\n })\n .finally(() => {\n cardLoader.style.display = \"none\";\n cardContent.style.opacity = \"1\";\n });\n }\n\n openQuestionModal(event){\n event.preventDefault();\n analytics.track('questions_about_data', {page: window.location.href, source: \"Dashboard\"})\n this.questionModalTarget.classList.remove(\"hidden\");\n document.addEventListener(\"click\", this.closeQuestionModal.bind(this));\n }\n\n closeQuestionModal(event){\n if(event.target.id === 'questionModal'){\n this.questionModalTarget.classList.add(\"hidden\");\n }\n }\n\n updateDate(event) {\n const startDateInput = document.getElementById(\"start-date\");\n const endDateInput = document.getElementById(\"end-date\");\n \n // Get the previous valid values from data attributes\n const previousStartDate = startDateInput.dataset.previousValue || startDateInput.value;\n const previousEndDate = endDateInput.dataset.previousValue || endDateInput.value;\n \n const startDate = new Date(startDateInput.value);\n const endDate = new Date(endDateInput.value);\n \n if (startDate && endDate) {\n if (endDate < startDate) {\n alert(\"End date must be greater than the start date.\");\n \n // Revert the field value to its previous valid value, formatted for the input type\n if (event.target.id === \"end-date\") {\n endDateInput.value = this.formatDateForInput(previousEndDate);\n } else if (event.target.id === \"start-date\") {\n startDateInput.value = this.formatDateForInput(previousStartDate);\n }\n \n return;\n }\n }\n \n // If validation passes, update the previous valid values in data attributes\n startDateInput.dataset.previousValue = startDateInput.value;\n endDateInput.dataset.previousValue = endDateInput.value;\n \n const form = document.getElementById(\"calendar-form\");\n form.requestSubmit();\n }\n \n formatDateForInput(dateString) {\n const date = new Date(dateString);\n if (isNaN(date)) return \"\"; // Return empty string if the date is invalid\n \n const months = [\n \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\",\n \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"\n ];\n \n const month = months[date.getMonth()]; // Get abbreviated month name\n const day = date.getDate(); // Day with leading zero\n const year = date.getFullYear(); // Full year\n \n // Return the formatted date in M d, yy format\n return `${month} ${day}, ${year}`;\n }\n}","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"collapsibleElement\", \"collapserControl\" ]\n\n toggleCollapse(ev) {\n if (this.collapserControlTarget.classList.contains(\"icon-open-box\") || \n this.collapserControlTarget.classList.contains(\"icon-close-box\")) {\n this.collapserControlTarget.classList.toggle(\"icon-open-box\");\n this.collapserControlTarget.classList.toggle(\"icon-close-box\");\n this.collapsibleElementTarget.classList.toggle('hidden');\n } else if (this.collapserControlTarget.classList.contains(\"open-icon\") || \n this.collapserControlTarget.classList.contains(\"closed-icon\")) {\n this.collapserControlTarget.classList.toggle(\"open-icon\");\n this.collapserControlTarget.classList.toggle(\"closed-icon\");\n this.collapsibleElementTarget.classList.toggle('hidden');\n }\n }\n \n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n // static targets = [ \"modal\", \"pageMask\", \"columnCheckbox\" ]\n\n haltClickThrough(ev) {\n ev.preventDefault()\n }\n\n persist(ev) {\n let el = $(ev.target)\n let patchUrl = el.data('patch-url')\n let newVal = el.val()\n fetch(patchUrl, {\n headers: { \"Content-Type\": \"application/json; charset=utf-8\" },\n method: 'PATCH',\n redirect: 'manual',\n body: JSON.stringify({\n assessment_question: {\n status: newVal\n }\n })\n })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"checkbox\", \"dateField\", \"submitButton\"];\n\n connect() {\n this.initializeDatePickers();\n this.handlePreselectedCourses();\n const closeButton = document.getElementById(\"course-schedule-close\");\n if (closeButton) {\n closeButton.addEventListener(\"click\", this.reloadForm.bind(this));\n }\n }\n\n // Handle pre-selection on page load\n handlePreselectedCourses() {\n this.checkboxTargets.forEach((checkbox) => {\n const dateField = this.dateFieldTargets.find(\n (field) => field.id === `assessment_date_${checkbox.value}`\n );\n if (dateField) {\n dateField.disabled = !checkbox.checked;\n }\n });\n }\n\n // Toggle date fields based on checkbox selection\n toggleSelection(event) {\n const checkbox = event.target;\n const dateField = this.dateFieldTargets.find(\n (field) => field.id === `assessment_date_${checkbox.value}`\n );\n\n if (dateField) {\n dateField.disabled = !checkbox.checked;\n if (!dateField.disabled) {\n dateField.focus();\n } else {\n dateField.value = \"\"; // Clear date if checkbox is unchecked\n }\n }\n }\n\n initializeDatePickers() {\n this.dateFieldTargets.forEach((dateField) => {\n $(dateField)\n .datepicker({\n numberOfMonths: 1,\n dateFormat: \"M d, yy\",\n minDate: new Date(),\n onSelect: function (date) {\n $(this).val(date);\n }\n })\n .on(\"keypress\", function (e) {\n e.preventDefault();\n });\n });\n }\n\n // Confirm submission with a summary of new selections\n confirmSubmission(event) {\n event.preventDefault();\n\n // Collect newly selected courses with their dates\n const newCoursesWithDates = this.checkboxTargets\n .filter(\n (checkbox) => checkbox.checked && checkbox.dataset.isNew === \"true\"\n )\n .map((checkbox) => {\n const dateField = document.getElementById(\n `assessment_date_${checkbox.value}`\n );\n return {\n name: checkbox.value.split(\"_\") .map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(\" \"),\n date: dateField && dateField.value ? dateField.value : \"No date selected\"\n };\n });\n\n // If there are new selections, show confirmation\n if (newCoursesWithDates.length > 0) {\n const courseDetails = newCoursesWithDates\n .map((course) => `${course.name} starting on ${course.date}`)\n .join(\"\\n\");\n\n const confirmation = confirm(\n `Saving this work will allow faculty users to begin scheduling Calibrate assessments for the following:\\n\\n${courseDetails}`\n );\n\n if (!confirmation) return;\n }\n\n this.element.submit();\n }\n\n reloadForm() {\n const form = document.getElementById(\"course-schedule-form\");\n if (form) {\n form.reset();\n }\n // Reinitialize the date pickers and pre-selections\n this.initializeDatePickers();\n this.handlePreselectedCourses();\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [ \"selectFilter\" ];\n\n submitFilter() {\n const url = new URL(window.location.href)\n const params = new URLSearchParams(url.search.slice(1))\n\n params.delete('filter')\n params.append('filter', this.selectFilterTarget.value)\n\n url.search = params.toString()\n\n window.location = url.toString()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nimport debounce from \"debounce\";\n\n// Connects to data-controller=\"form\"\nexport default class extends Controller {\n static targets = [ \"source\", \"filterable\" ]\n\n filter(event) {\n let lowerCaseFilterTerm = this.sourceTarget.value.toLowerCase()\n\n this.filterableTargets.forEach((el, i) => {\n let filterableKey = el.getAttribute(\"data-filter-key\")\n\n el.classList.toggle(\"filter--notFound\", !filterableKey.toLowerCase().includes( lowerCaseFilterTerm ) )\n })\n }\n}\n","// controllers/grid_list_view_controller.js\nimport { Controller } from \"@hotwired/stimulus\";\nimport Cookies from \"js-cookie\";\n\nexport default class extends Controller {\n static targets = [\"grid\", \"list\", \"container\"];\n\n connect() {\n // Initialize view state from cookies\n const view = Cookies.get(`view-${this.element.dataset.identifier}`) || \"list\";\n this.setView(view);\n }\n\n setView(view) {\n if (view === \"grid\") {\n this.gridTarget.classList.add(\"active\");\n this.listTarget.classList.remove(\"active\");\n this.containerTarget.classList.add(\"view-grid\");\n this.containerTarget.classList.remove(\"view-list\");\n } else {\n this.gridTarget.classList.remove(\"active\");\n this.listTarget.classList.add(\"active\");\n this.containerTarget.classList.add(\"view-list\");\n this.containerTarget.classList.remove(\"view-grid\");\n }\n // Store the view state in cookies\n Cookies.set(`view-${this.element.dataset.identifier}`, view, { expires: 7 });\n }\n\n switchToGrid() {\n this.setView(\"grid\");\n }\n\n switchToList() {\n this.setView(\"list\");\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport React from \"react\";\n\nexport default class extends Controller {\n static targets = [\"filterDropdown\", \"selectedGroups\", \"documentSetId\",\"customCourses\", \"assessmentDeliveries\", \"customCoursesFilter\", \"assessmentDeliveriesFilter\", \"summaryTable\", \"addSelectedGroup\"];\n\n connect() {\n this.selectedStudents = this.selectedStudents || [];\n this.selectedCustomCourses = {};\n this.selectedAssessmentDeliveries = {};\n this.currentCustomCourses = {};\n this.currentAssessmentDeliveries = {};\n if (this.hasDocumentSetIdTarget){\n this.fetchStudentsForDocumentSet();\n }\n this.selectedStudentsByGroup = this.selectedStudentsByGroup || {};\n }\n\n fetchStudentsForDocumentSet() {\n const customCourseId = this.documentSetIdTarget.value;\n const customCoursesData = JSON.parse(this.element.dataset.groupSelectionCustomCourses);\n\n if (customCourseId) {\n // Find the custom course corresponding to the documentSetId\n const selectedCourse = this.findCourseById(customCoursesData,customCourseId);\n\n if (selectedCourse) {\n // Set the default selected custom course based on the documentSetId\n this.selectedCustomCourses[selectedCourse.id] = `${selectedCourse.name}(${selectedCourse.start_date} - ${selectedCourse.end_date})`;\n\n // Update the hidden input field\n this.updateHiddenInput(this.selectedCustomCourses, this.selectedAssessmentDeliveries);\n this.currentCustomCourses = { ...this.selectedCustomCourses };\n\n // Display the selected course in the modal\n this.updateSelectedGroups();\n }\n }\n }\n\n // Find a course by its ID from the passed customCoursesData\n findCourseById(customCoursesData, courseId) {\n return customCoursesData.find(course => course.id == courseId);\n }\n\n // Fetch students based on filters\n async fetchStudents(event) {\n event.preventDefault();\n\n try {\n const url = this.addSelectedGroupTarget.dataset.url;\n const filterData = this.getFilterData();\n const selectedGroupsBlock = document.getElementById(\"selected_groups_block\");\n const modalTarget = document.querySelector('[data-modal-target=\"modal\"]');\n const response = await this.sendPostRequest(url, filterData);\n\n if (response.ok) {\n if (selectedGroupsBlock) {\n selectedGroupsBlock.style.display = \"block\";\n this.updateSelectedGroupInForm();\n }\n const data = await response.json();\n const grduIds = data.grdus.map(grdu => grdu.id); // Store GRDU ids\n const groupIds = filterData.custom_courses.length > 0 ? filterData.custom_courses : [];\n const deliveryIds = filterData.assessment_deliveries.length > 0 ? filterData.assessment_deliveries : [];\n\n if (grduIds.length) {\n // Select rows based on the GRDU id\n if (this.hasSummaryTableTarget) {\n groupIds.forEach(groupId => {\n this.selectSummaryTableRows(grduIds, \"id\", groupId, null);\n });\n\n deliveryIds.forEach(deliveryId => {\n this.selectSummaryTableRows(grduIds, \"id\", null, deliveryId);\n }); \n } else {\n this.selectRows(grduIds, \"grdu_id\");\n }\n }\n this.currentCustomCourses = { ...this.selectedCustomCourses };\n this.currentAssessmentDeliveries = { ...this.selectedAssessmentDeliveries };\n modalTarget.classList.add(\"hidden\");\n } else {\n throw new Error(\"Network response was not ok\");\n }\n } catch (error) {\n console.error(\"Error:\", error);\n }\n }\n\n // Extract filter data from the dropdown\n getFilterData() {\n return JSON.parse(this.filterDropdownTarget.value);\n }\n\n // Send a POST request\n async sendPostRequest(url, filterData) {\n return fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": document.querySelector('meta[name=\"csrf-token\"]').content,\n },\n body: JSON.stringify({ filterData }),\n });\n }\n\n selectRows(items, prop) {\n const aqueductTable = window.AqueductTable;\n const rows = aqueductTable.state.rows;\n let newRows = [];\n let foundItems = [];\n // Loop through each row and check if the current row's `prop` (e.g. 'id') is in the items list\n for (const row of rows) {\n if (items.includes(row[prop])) {\n row.selected = true;\n foundItems.push(row[prop]);\n newRows.unshift(row); // Add selected rows at the beginning\n } else {\n newRows.push(row);\n }\n }\n\n // Update the table state with the new rows\n aqueductTable.setState({ rows: newRows });\n }\n\n unselectAllRows(){\n if (this.hasSummaryTableTarget) {\n this.unselectSummaryTableRows();\n } else {\n const aqueductTable = window.AqueductTable;\n const rows = aqueductTable.state.rows;\n\n for (const row of rows) {\n row.selected = false;\n }\n\n // Update the table state with the rows\n aqueductTable.setState({ rows: rows });\n }\n }\n\n // Handle custom courses selection\n updateCustomCourses(event) {\n this.updateSelection(\n event,\n this.selectedCustomCourses,\n \"custom_courses\"\n );\n }\n\n // Handle assessment deliveries selection\n updateAssessmentDeliveries(event) {\n this.updateSelection(\n event,\n this.selectedAssessmentDeliveries,\n \"assessment_deliveries\"\n );\n }\n\n // General method to update selection based on the event\n updateSelection(event, selectedItems, key) {\n const element = event.target;\n const id = parseInt(element.value);\n const displayText = element.parentElement.querySelector(\"label\").textContent.toUpperCase();\n\n if (element.checked) {\n selectedItems = { ...selectedItems, [id]: displayText };\n } else {\n selectedItems = Object.fromEntries(\n Object.entries(selectedItems).filter(([key]) => parseInt(key) !== id)\n );\n }\n\n if (key === \"custom_courses\") {\n this.selectedCustomCourses = selectedItems;\n } else if (key === \"assessment_deliveries\") {\n this.selectedAssessmentDeliveries = selectedItems;\n }\n\n this.updateHiddenInput(this.selectedCustomCourses, this.selectedAssessmentDeliveries);\n this.updateSelectedGroups();\n }\n\n // Update the hidden input with selected values\n updateHiddenInput(selectedCustomCourses, selectedAssessmentDeliveries) {\n const filterData = {\n custom_courses: Object.keys(selectedCustomCourses).map(Number),\n assessment_deliveries: Object.keys(selectedAssessmentDeliveries).map(Number),\n };\n\n this.filterDropdownTarget.value = JSON.stringify(filterData);\n const hiddenCustomCourseField = document.getElementById('assessment_delivery_custom_course_ids');\n\n if (hiddenCustomCourseField) {\n hiddenCustomCourseField.value = filterData.custom_courses.join(',');\n }\n }\n\n // Update the selected groups display\n updateSelectedGroups() {\n this.selectedGroupsTarget.innerHTML = this.generateSelectedGroupsHTML(\n this.selectedCustomCourses,\n this.selectedAssessmentDeliveries\n );\n }\n\n // Generate HTML for selected groups\n generateSelectedGroupsHTML(customCourses, assessmentDeliveries, isForm = false) {\n const generateHTML = (items, type) =>\n Object.entries(items)\n .map(\n ([id, text]) =>\n `
\n

${text}

\n ${!isForm\n ? ``\n : \"\"}\n
`\n )\n .join(\"\");\n\n return (\n generateHTML(customCourses, \"custom_course\") +\n generateHTML(assessmentDeliveries, \"assessment_delivery\")\n );\n }\n\n // Remove a group from the selected list\n removeGroup(event) {\n const { id, type } = event.target.dataset;\n const parsedId = parseInt(id);\n\n if (type === \"custom_course\") {\n delete this.selectedCustomCourses[parsedId];\n this.unselectStudentsByGroup(parsedId, null);\n } else if (type === \"assessment_delivery\") {\n delete this.selectedAssessmentDeliveries[parsedId];\n this.unselectStudentsByGroup(null, parsedId);\n }\n\n this.updateHiddenInput(this.selectedCustomCourses, this.selectedAssessmentDeliveries);\n this.updateSelectedGroups();\n }\n\n updateSelectedGroupInForm(){\n const selectedGroupsList = document.getElementById(\"selected_groups_list\");\n if (selectedGroupsList) {\n selectedGroupsList.innerHTML = this.generateSelectedGroupsHTML(\n this.selectedCustomCourses,\n this.selectedAssessmentDeliveries,\n true\n );\n }\n }\n\n openGroupSelectionModal() {\n if (this.currentCustomCourses || this.currentAssessmentDeliveries) {\n this.selectedCustomCourses = this.currentCustomCourses;\n this.selectedAssessmentDeliveries = this.currentAssessmentDeliveries;\n this.updateHiddenInput(this.currentCustomCourses, this.currentAssessmentDeliveries)\n this.updateSelectedGroups();\n this.selectAlreadySelected(this.filterDropdownTarget.value);\n }\n document.addEventListener(\"keydown\", this.handleKeydown);\n }\n\n selectAlreadySelected(data) {\n try {\n this.customCoursesTargets.forEach((checkbox) => (checkbox.checked = false));\n this.assessmentDeliveriesTargets.forEach((checkbox) => (checkbox.checked = false));\n let parsedData = JSON.parse(data);\n\n if (parsedData.custom_courses) {\n parsedData.custom_courses.forEach((courseId) => {\n let checkbox = this.customCoursesTargets.find(\n (cb) => cb.value == courseId // Match checkbox value with courseId\n );\n if (checkbox) {\n checkbox.checked = true;\n }\n });\n }\n\n if (parsedData.assessment_deliveries) {\n parsedData.assessment_deliveries.forEach((deliveryId) => {\n let checkbox = this.assessmentDeliveriesTargets.find(\n (cb) => cb.value == deliveryId // Match checkbox value with deliveryId\n );\n if (checkbox) {\n checkbox.checked = true;\n }\n });\n }\n } catch (error) {\n console.error(\"Invalid JSON Data:\", error);\n }\n }\n\n selectSummaryTableRows(items, prop, groupId = null, deliveryId = null) {\n if (this.hasSummaryTableTarget) {\n const aqueductTable = document.getElementById('SummaryTable');\n const tbody = aqueductTable.querySelector('tbody');\n const rows = Array.from(tbody.rows);\n\n const selectedStudents = Array.isArray(this.selectedStudents) ? [...this.selectedStudents] : [];\n const newlySelected = [];\n\n if (!this.selectedStudentsByGroup) {\n this.selectedStudentsByGroup = {};\n }\n\n const groupKey = groupId ? `group-${groupId}` : null;\n const deliveryKey = deliveryId ? `delivery-${deliveryId}` : null;\n\n if (groupKey && !this.selectedStudentsByGroup[groupKey]) {\n this.selectedStudentsByGroup[groupKey] = [];\n }\n if (deliveryKey && !this.selectedStudentsByGroup[deliveryKey]) {\n this.selectedStudentsByGroup[deliveryKey] = [];\n }\n \n for (const row of rows) {\n try {\n const studentInfo = JSON.parse(row.getAttribute('data-student-info') || \"{}\");\n if (studentInfo) {\n const cellValue = studentInfo[prop];\n const studentId = studentInfo[\"id\"].toString();\n const checkbox = row.querySelector('input[type=\"checkbox\"]');\n \n if (items.includes(cellValue)) {\n if (checkbox) {\n checkbox.checked = true;\n\n if (groupKey) {\n row.setAttribute(\"data-selected-by\", groupKey);\n if (!this.selectedStudentsByGroup[groupKey].includes(studentId)) {\n this.selectedStudentsByGroup[groupKey].push(studentId);\n }\n }\n if (deliveryKey) {\n row.setAttribute(\"data-selected-by\", deliveryKey);\n if (!this.selectedStudentsByGroup[deliveryKey].includes(studentId)) {\n this.selectedStudentsByGroup[deliveryKey].push(studentId);\n }\n }\n\n if (!selectedStudents.includes(studentId)) {\n selectedStudents.push(studentId);\n newlySelected.push(cellValue);\n checkbox.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n }\n }\n\n if (checkbox && checkbox.checked) {\n tbody.prepend(row);\n }\n }\n } catch (error) {\n console.error(\"Error parsing student info:\", error);\n }\n }\n \n this.selectedStudents = selectedStudents;\n tbody.querySelectorAll('input[type=\"checkbox\"]:checked').forEach((checkbox) => {\n checkbox.dispatchEvent(new Event(\"change\", { bubbles: true }));\n });\n this.dispatchSelectedStudentsEvent();\n }\n }\n\n unselectSummaryTableRows() {\n if (!this.hasSummaryTableTarget) return;\n\n const aqueductTable = document.getElementById('SummaryTable');\n const tbody = aqueductTable.querySelector('tbody');\n const rows = Array.from(tbody.rows);\n let selectedStudents = [];\n let uncheckedCheckboxes = [];\n\n if (!this.pendingRemovalGroups) this.pendingRemovalGroups = [];\n if (!this.pendingRemovalDeliveries) this.pendingRemovalDeliveries = [];\n\n for (const row of rows) {\n try {\n const studentInfo = JSON.parse(row.getAttribute('data-student-info') || \"{}\");\n if (!studentInfo) continue;\n\n const studentId = studentInfo[\"id\"].toString();\n const checkbox = row.querySelector('input[type=\"checkbox\"]');\n\n const belongsToGroup = this.pendingRemovalGroups.some(groupId => {\n const groupKey = `group-${groupId}`;\n const studentIds = this.selectedStudentsByGroup[groupKey] || [];\n return studentIds.includes(studentId);\n });\n\n const belongsToDelivery = this.pendingRemovalDeliveries.some(deliveryId => {\n const deliveryKey = `delivery-${deliveryId}`;\n const studentIds = this.selectedStudentsByGroup[deliveryKey] || [];\n return studentIds.includes(studentId);\n });\n\n if ((belongsToGroup || belongsToDelivery) && checkbox) {\n checkbox.checked = false;\n row.removeAttribute(\"data-selected-by\");\n uncheckedCheckboxes.push(checkbox);\n }\n\n if (checkbox && checkbox.checked) {\n selectedStudents.push(studentId);\n }\n } catch (error) {\n console.error(\"Error parsing student info:\", error);\n }\n }\n\n this.selectedStudents = selectedStudents;\n\n uncheckedCheckboxes.forEach((checkbox) => {\n checkbox.dispatchEvent(new Event(\"change\", { bubbles: true }));\n });\n\n this.dispatchSelectedStudentsEvent();\n\n this.pendingRemovalGroups = [];\n this.pendingRemovalDeliveries = [];\n }\n\n unselectStudentsByGroup(groupId = null, deliveryId = null) {\n if (!this.pendingRemovalGroups) this.pendingRemovalGroups = [];\n if (!this.pendingRemovalDeliveries) this.pendingRemovalDeliveries = [];\n\n if (groupId && !this.pendingRemovalGroups.includes(groupId)) {\n this.pendingRemovalGroups.push(groupId);\n }\n\n if (deliveryId && !this.pendingRemovalDeliveries.includes(deliveryId)) {\n this.pendingRemovalDeliveries.push(deliveryId);\n }\n }\n\n dispatchSelectedStudentsEvent() {\n this.element.dispatchEvent(new CustomEvent(\"students:selected\", {\n detail: { selectedStudents: this.selectedStudents },\n bubbles: true\n }));\n }\n\n handleKeydown = (event) => {\n const modal = document.querySelector(\"[data-modal-target='modal']\");\n \n if (modal && !modal.classList.contains(\"hidden\")) { \n if (event.key === \"Enter\") {\n this.fetchStudents(event);\n }\n }\n };\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport React from \"react\";\n\nexport default class extends Controller {\n static targets = [\"helpModal\"]\n\n openHelpModal(event){\n this.helpModalTarget.classList.remove(\"hidden\");\n document.addEventListener(\"click\", this.hideHelpModal.bind(this));\n }\n\n hideHelpModal(event){\n if(event.target.id === 'helpModal')\n this.helpModalTarget.classList.add(\"hidden\");\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n connect() {\n document.addEventListener(\"keyup\", this.handleKeyUp);\n }\n\n disconnect() {\n document.removeEventListener(\"keyup\", this.handleKeyUp);\n }\n\n handleKeyUp(event) {\n if (event.key === \"Tab\") {\n const activeElement = document.querySelector(\".current-element\");\n if (activeElement) {\n activeElement.classList.remove(\"current-element\");\n }\n\n const focusedElement = document.activeElement;\n if (focusedElement && (\n focusedElement.tagName === \"A\" ||\n focusedElement.tagName === \"BUTTON\" ||\n focusedElement.tagName === \"INPUT\" ||\n focusedElement.tagName === \"SELECT\" ||\n focusedElement.classList.contains(\"nav-link\")\n )) {\n focusedElement.classList.add(\"current-element\");\n }\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"hovercard\"\nexport default class extends Controller {\n static targets = [\"card\"];\n static values = { url: String };\n\n show() {\n if (this.hasCardTarget) {\n this.cardTarget.classList.remove(\"hidden\");\n } else {\n const html = this.urlValue;\n console.log(html);\n const fragment = document.createRange().createContextualFragment(html);\n this.element.appendChild(fragment);\n }\n }\n\n hide() {\n console.log(\"hiding\")\n if (this.hasCardTarget) {\n console.log(\"hascardtarget\")\n this.cardTarget.classList.add(\"hidden\");\n }\n }\n\n disconnect() {\n if (this.hasCardTarget) {\n this.cardTarget.remove();\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n static targets = ['galleryContainer' ,'modalImage', 'modalContentImage', 'prevArrow', 'nextArrow'];\n\n get dots() {\n return document.querySelectorAll('[data-ref=\"image\"]');\n }\n get slideContainer() {\n return document.querySelector('.slides');\n }\n get indicator() {\n return document.querySelector('#indicator');\n }\n get slides() {\n if (this.hasGalleryContainerTarget) {\n return this.galleryContainerTarget.querySelectorAll('.slide-image');\n }\n return document.querySelectorAll('.slide-image');\n }\n\n connect() {\n if (this.hasModalContentImageTarget) {\n this.modalContentImageTarget.onclick = this.closeModalImage.bind(this);\n }\n\n let currentIndex = \"0\";\n if (this.slides.length > 1) {\n const observer = new IntersectionObserver(function (entries, observer) {\n const activated = entries.reduce(function (max, entry) {\n return (entry.intersectionRatio > max.intersectionRatio) ? entry : max;\n });\n if (activated.intersectionRatio > 0) {\n currentIndex = activated.target.dataset.index;\n this.updateIndicator(currentIndex);\n }\n }.bind(this), { root: this.slideContainer, threshold: 0.5 });\n\n for (const slide of this.slides) {\n observer.observe(slide);\n }\n }\n\n for (const dot of this.dots) {\n dot.addEventListener(\"click\", this.scrollToImage.bind(this));\n }\n if (this.hasPrevArrowTarget) {\n this.prevArrowTarget.addEventListener(\"click\", this.scrollToPrevious.bind(this));\n }\n if (this.hasNextArrowTarget) {\n this.nextArrowTarget.addEventListener(\"click\", this.scrollToNext.bind(this));\n }\n document.addEventListener('keydown', this.handleKeyDown.bind(this));\n }\n\n disconnect() {\n document.removeEventListener('keydown', this.handleKeyDown.bind(this));\n }\n\n expandImage(e) {\n this.modalImageTarget.style.display = \"flex\";\n this.modalImageTarget.classList.add(\"open\");\n document.body.classList.add('modal-open');\n this.modalContentImageTarget.src = e.currentTarget.src;\n }\n\n expandImageIcon(e) {\n this.modalImageTarget.style.display = \"flex\";\n this.modalImageTarget.classList.add(\"open\");\n document.body.classList.add(\"modal-open\");\n this.modalContentImageTarget.src = e.currentTarget.parentElement.firstElementChild.src;\n }\n\n closeModalImage() {\n if (this.hasModalImageTarget) {\n this.modalImageTarget.style.display = \"none\";\n this.modalImageTarget.classList.remove(\"open\");\n }\n document.body.classList.remove('modal-open');\n }\n\n handleKeyDown(event) {\n if (event.key === 'Escape' && this.modalImageTarget.classList.contains('open')) {\n this.closeModalImage();\n }\n }\n\n updateIndicator(currentIndex) {\n for (const slide of this.slides) {\n if (slide.dataset.index === currentIndex) {\n this.dots[currentIndex].classList.add(\"current\");\n this.updatePositions(slide);\n } else {\n this.dots[slide.dataset.index].classList.remove(\"current\");\n }\n }\n }\n\n scrollToPrevious() {\n const current = document.querySelector('[data-position=\"current\"]');\n const previous = document.querySelector('[data-position=\"previous\"]');\n\n if (previous) {\n previous.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'center'\n });\n previous.dataset.position = \"current\";\n current.dataset.position = \"next\";\n const newPrev = document.querySelector(`[data-index=\"${parseInt(previous.dataset.index) - 1}\"]`);\n if (newPrev) {\n newPrev.dataset.position = \"previous\"\n }\n document.querySelector('.dot.current')?.classList.remove(\"current\");\n document.querySelector(`[data-ref-id=\"${previous.id}\"]`)?.classList.add(\"current\");\n } else {\n this.scrollToLast();\n }\n }\n\n scrollToNext() {\n const current = document.querySelector('[data-position=\"current\"]');\n const next = document.querySelector('[data-position=\"next\"]');\n\n if (next) {\n next.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'center'\n });\n next.dataset.position = \"current\";\n current.dataset.position = \"previous\";\n const newNext = document.querySelector(`[data-index=\"${parseInt(next.dataset.index) + 1}\"]`);\n if (newNext) {\n newNext.dataset.position = \"next\";\n }\n document.querySelector('.dot.current')?.classList.remove(\"current\");\n document.querySelector(`[data-ref-id=\"${next.id}\"]`)?.classList.add(\"current\");\n } else {\n this.scrollToFirst();\n }\n }\n\n scrollToLast() {\n const lastIndex = this.dots.length - 1;\n const last = document.querySelector(`[data-index=\"${lastIndex}\"]`);\n const previous = document.querySelector(`[data-index=\"${lastIndex - 1}\"]`);\n last.dataset.position = \"current\";\n previous.dataset.position = \"previous\";\n last.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'center'\n });\n document.querySelector('.dot.current')?.classList.remove(\"current\");\n document.querySelector(`[data-ref-id=\"${last.id}\"]`)?.classList.add(\"current\");\n }\n\n scrollToFirst() {\n const first = document.querySelector('#image-0');\n const next = document.querySelector('#image-1');\n first.dataset.position = \"current\";\n next.dataset.position = \"next\";\n first.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'center'\n });\n document.querySelector('.dot.current')?.classList.remove(\"current\");\n document.querySelector('[data-ref-id=\"image-0\"]')?.classList.add(\"current\");\n }\n\n scrollToImage(e) {\n if (e.currentTarget.classList.contains('current')) {\n return;\n }\n const target = document.querySelector(`#${e.currentTarget.dataset.refId}`);\n this.updatePositions(target);\n target.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'center'\n });\n document.querySelector('.dot.current')?.classList.remove(\"current\");\n e.currentTarget.classList.add(\"current\");\n }\n\n updatePositions(target) {\n const current = document.querySelector('[data-position=\"current\"]');\n const next = document.querySelector('[data-position=\"next\"]');\n const previous = document.querySelector('[data-position=\"previous\"]');\n\n current.dataset.position = \"\";\n if (next) {\n next.dataset.position = \"\";\n }\n if (previous) {\n previous.dataset.position = \"\";\n }\n\n target.dataset.position = \"current\";\n\n const index = parseInt(target.dataset.index);\n if (index !== 0) {\n document.querySelector(`[data-index=\"${index - 1}\"]`).dataset.position = \"previous\";\n }\n if (index !== this.dots.length - 1) {\n document.querySelector(`[data-index=\"${index + 1}\"]`).dataset.position = \"next\";\n }\n };\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"input\", \"preview\"];\n\n connect() {\n this.inputTarget.addEventListener(\"change\", this.previewImage.bind(this));\n }\n\n previewImage() {\n const file = this.inputTarget.files[0];\n const reader = new FileReader();\n\n reader.onload = (e) => {\n const imagePreview = document.getElementById(\"image-preview\");\n\n const image = document.createElement(\"img\");\n image.src = e.target.result;\n image.style.maxWidth = \"100%\";\n image.style.height = \"auto\";\n\n const newImageText = document.createElement(\"p\");\n newImageText.textContent = \"New Image: (If you save this form it will replace the current image.)\";\n newImageText.style.fontWeight = \"bold\";\n newImageText.style.fontFamily = \"roboto\";\n\n imagePreview.innerHTML = \"\";\n imagePreview.appendChild(newImageText);\n imagePreview.appendChild(image);\n\n this.previewTarget.innerHTML = \"\";\n this.previewTarget.appendChild(image);\n };\n\n reader.readAsDataURL(file);\n }\n}","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"confirmModal\"]\n\n handleFileChange(){\n this.element.submit();\n }\n\n importQuestions() {\n $(this.confirmModalTarget).hide();\n this.element.querySelector(\"#csv_file\").click();\n }\n\n openModal() {\n $(this.confirmModalTarget).show();\n }\n\n closeModal() {\n $(this.confirmModalTarget).hide();\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n send() {\n const email = document.getElementById(\"email\").innerText\n $.ajax({\n url: \"/two_factor_settings/send_otp\",\n type: \"GET\",\n async: false,\n dataType: \"json\",\n data: {email: email},\n success: function(response){\n if(response['send_otp'] == false){\n alert(\"Something went wrong. Please try again.\")\n }else{\n let result = response\n }\n }\n });\n }\n}","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [ \"modal\", \"assessmentWithoutForm\" ];\n\n initialize() {\n this.handleKeyDown = this.handleKeyDown.bind(this);\n document.addEventListener(\"keydown\", this.handleKeyDown);\n }\n\n connect() {\n if (this.hasAssessmentWithoutFormTarget) {\n this.alertForAssessmentWithoutForm();\n }\n }\n\n disconnect() {\n document.removeEventListener(\"keydown\", this.handleKeyDown);\n }\n\n handleKeyDown(event) {\n if (event.key === \"Escape\") {\n this.close();\n if (this.hasAssessmentWithoutFormTarget) {\n this.closeAlert();\n }\n }\n }\n\n open(e) {\n e.preventDefault();\n e.stopImmediatePropagation();\n\n const aqueductTable = window.AqueductTable;\n if (aqueductTable){\n aqueductTable.setState({query: {}});\n }\n\n this.modalTarget.classList.remove(\"hidden\");\n\n // Ensure that the next tick focuses the first focusable element\n setTimeout(() => {\n this.setFocusOnFirstElement();\n }, 0);\n }\n\n close() {\n if (this.modalTarget) {\n const subscriberForm = document.querySelector('#subscriber-form');\n if (subscriberForm){\n subscriberForm.reset();\n }\n\n this.modalTarget.classList.add(\"hidden\");\n }\n }\n\n setFocusOnFirstElement() {\n const focusableElements = this.modalTarget.querySelectorAll('input[type=\"checkbox\"], button, [tabindex]:not([tabindex=\"-1\"])');\n if (focusableElements.length > 0) {\n focusableElements[0].focus();\n }\n }\n\n alertForAssessmentWithoutForm(){\n $(this.assessmentWithoutFormTarget).show().css(\"background-color\", \"#2b2b2b42\");\n }\n\n closeAlert(){\n $(this.assessmentWithoutFormTarget).hide();\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n connect() {\n setTimeout(() => {\n window.renderAllChildReactOnRailsComponents(this.element);\n }, 500)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport * as React from \"react\"\nimport { createRoot } from \"react-dom/client\"\nimport CurricularSummarySystem from \"../src/react/components/Assessment/Reports/CurricularPerformanceSummary/curricular_summary_system\";\nimport CurricularSummaryFocus from \"../src/react/components/Assessment/Reports/CurricularPerformanceSummary/curricular_summary_focus\";\nimport CurricularSummaryDiscipline from \"../src/react/components/Assessment/Reports/CurricularPerformanceSummary/curricular_summary_discipline\";\n\n\n// Connects to data-controller=\"multi-cohort-curricular-summary-tab\"\nexport default class extends Controller {\n static targets = [\"CurricularPerformancesSummary\"];\n\n connect() {\n let reportData = JSON.parse(this.element.dataset.reportData);\n createRoot(this.CurricularPerformancesSummaryTarget).render(\n <>\n \n \n \n \n );\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"email\", \"phone\", \"startDate\", \"startTime\",\n \"endDate\", \"endTime\", \"programType\", \"examCourse\",\n \"academicStartDate\",\"academicEndDate\",\"aqueductCard\",\n \"purpose\", \"rosterings\" , \"warningModal\", \"courseSchedules\"]\n\n initialize() {\n if (this.hasEmailTarget && !this.emailTarget) return;\n\n const urlParams = new URLSearchParams(window.location.search);\n const preserveDates = urlParams.get('preserve_dates') === 'true';\n const preserveAssessment = urlParams.get('preserve_assessment') === 'true';\n const schedulingFormFeature = this.element.dataset.schedulingFormFlag === \"true\";\n const shouldReloadExamCourses = this.hasExamCourseTarget && !schedulingFormFeature;\n\n if ((preserveDates || preserveAssessment) && shouldReloadExamCourses) {\n this.reloadExamCourses();\n }\n\n const datepickerOptions = {\n numberOfMonths: 2,\n dateFormat: \"mm-dd-yy\",\n minDate: 0,\n onSelect: (date) => {\n $(\"#date_changed\").click();\n this.startDateSelected(date);\n if (schedulingFormFeature) {\n this.checkDateInput(date);\n } else if (!preserveDates && !preserveAssessment) {\n this.reloadExamCourses();\n }\n }\n };\n\n // Setup Start DatePicker\n $(this.startDateTarget)\n .datepicker(datepickerOptions)\n .on(\"change\", (event) => {\n const inputValue = event.target.value.trim();\n if (inputValue) {\n this.checkMinDate(inputValue);\n if (!schedulingFormFeature) this.reloadExamCourses();\n }\n });\n\n // Setup End DatePicker\n $(this.endDateTarget).datepicker({\n numberOfMonths: 2,\n dateFormat: \"mm-dd-yy\",\n onSelect: (date) => {\n this.endDateSelected(date);\n $(\"#date_changed\").click();\n }\n }).on('keypress', function(e){ e.preventDefault(); });\n\n // Initial field states\n if (this.hasEndDateTarget) setInactive(this.endDateTarget);\n\n // Prevent the user from being able to submit the form with Enter\n $(document).ready(function () {\n $(window).keydown(function (event) {\n if (event.keyCode == 13) {\n event.preventDefault();\n return false;\n }\n });\n });\n\n // Attach event listeners for academic date fields\n if (this.hasStartDateTarget) this.formatDateInput(this.startDateTarget);\n if (this.hasAcademicStartDateTarget) this.formatDateInput(this.academicStartDateTarget);\n if (this.hasAcademicEndDateTarget) this.formatDateInput(this.academicEndDateTarget);\n }\n\n // Are we in the Calibrate Demonstration Program?\n get isDemo() {\n return JSON.parse(this.element.dataset.demo)\n }\n\n // Number of days between start date and end date in seconds\n get timeDiff() {\n return new Date(this.endDateTarget.value) - new Date(this.startDateTarget.value)\n }\n\n //////////////////////\n // Stimulus Actions //\n //////////////////////\n reloadExamCourses() {\n const url = this.examCourseTarget.dataset.url && new URL(this.examCourseTarget.dataset.url)\n const preserveDates = new URLSearchParams(window.location.search).get('preserve_dates') === 'true';\n\n if (url) {\n if (preserveDates) {\n url.searchParams.append('start_date', this.examCourseTarget.dataset.startDate)\n } else if (this.startDateTarget.value) {\n url.searchParams.append('start_date', this.startDateTarget.value)\n } else {\n url.searchParams.append('start_date', new Date().toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: '2-digit' }));\n }\n }\n\n fetch(url)\n .then(response => response.text())\n .then(html => {\n const tempContainer = document.createElement('div');\n tempContainer.innerHTML = html.trim();\n\n // Find the new select element inside the fetched HTML\n const newSelect = tempContainer.querySelector('select');\n\n if (newSelect) {\n // Replace the current examCourseTarget with the new select element\n this.examCourseTarget.replaceWith(newSelect);\n\n // Optionally, set the selected option\n this.setSelectedExamCourse();\n }\n })\n }\n\n setSelectedExamCourse() {\n const selectedCourse = document.getElementById('hidden_exam_course')?.value;\n\n if (selectedCourse) {\n const selectedOption = Array.from(this.examCourseTarget.options).find(\n option => option.value === selectedCourse\n );\n\n if (selectedOption) {\n selectedOption.selected = true;\n }\n }\n }\n\n startDateSelected(windowStartDate) {\n setActive(this.endDateTarget);\n\n this.startDateTarget.classList.add(\"date-selected\");\n $(this.endDateTarget).datepicker(\"option\", \"minDate\", windowStartDate);\n this.endDateTarget.value = '';\n if (this.isDemo) {\n const diff = new Date(this.endDateTarget.value) - new Date(this.startDateTarget.value)\n this.#rebuildEndTimeSelectOptions(this.timeDiff);\n } else {\n const windowEndDate = new Date(windowStartDate);\n windowEndDate.setDate(windowEndDate.getDate() + 10);\n $(this.endDateTarget).datepicker(\"option\", \"maxDate\", windowEndDate);\n }\n }\n\n startTimeSelected() {\n if (this.isDemo) return\n }\n\n endDateSelected(date) {\n this.endDateTarget.classList.add(\"date-selected\");\n }\n\n checkRosteringPresence(ev) {\n const aqueductTable = window.AqueductTable;\n const rows = aqueductTable.state.rows;\n\n if (!rows.some(row => row.selected)) {\n let answer = confirm('You have not selected any students. Do you want to request the delivery without any students?')\n if (!answer) {\n ev.preventDefault()\n }\n }\n\n if (aqueductTable){\n aqueductTable.setState({query: {}});\n }\n }\n\n checkCustomValidities() {\n if (this.hasEmailTarget) {\n this.emailTarget.setCustomValidity(\n this.emailTarget.validity.valueMissing ? \"Provide contact email\" : \"\"\n );\n }\n\n if (this.hasPhoneTarget) {\n this.phoneTarget.setCustomValidity(\n this.phoneTarget.validity.valueMissing ? \"Provide contact phone\" : \"\"\n );\n }\n\n this.startDateTarget.setCustomValidity(\n this.startDateTarget.validity.valueMissing ? \"Select start date\" : \"\"\n );\n\n this.startTimeTarget.setCustomValidity(\n this.startTimeTarget.validity.valueMissing ? \"Select start time\" : \"\"\n );\n\n this.endDateTarget.setCustomValidity(\n this.endDateTarget.validity.valueMissing ? \"Select end date\" : \"\"\n );\n\n this.endTimeTarget.setCustomValidity(\n this.endTimeTarget.validity.valueMissing ? \"Select end time\" : \"\"\n );\n\n this.programTypeTarget.setCustomValidity(\n this.programTypeTarget.validity.valueMissing ? \"Select program type\" : \"\"\n );\n\n this.examCourseTarget.setCustomValidity(\n this.examCourseTarget.validity.valueMissing ? \"Select course\" : \"\"\n );\n\n this.purposeTarget.setCustomValidity(\n this.purposeTarget.validity.valueMissing ? \"Select purpose\" : \"\"\n );\n\n if (this.hasAcademicStartDateTarget && this.academicStartDateTarget.value) {\n if (!this.isValidDate(this.academicStartDateTarget.value)) {\n this.academicStartDateTarget.setCustomValidity(\"Please enter a valid academic start date in the format MM-DD-YYYY.\");\n } else {\n this.academicStartDateTarget.setCustomValidity(\"\");\n }\n }\n\n if (this.hasAcademicEndDateTarget && this.academicEndDateTarget.value) {\n if (!this.isValidDate(this.academicEndDateTarget.value)) {\n this.academicEndDateTarget.setCustomValidity(\"Please enter a valid academic end date in the format MM-DD-YYYY.\");\n } else {\n this.academicEndDateTarget.setCustomValidity(\"\");\n }\n }\n this.updateSelectedGoals();\n this.endDateTarget.disabled = false;\n }\n\n\n isValidDate(dateString) {\n let regex = /^\\d{2}-\\d{2}-\\d{4}$/;\n\n if (!regex.test(dateString)) {\n return false;\n }\n\n let parts = dateString.split('-');\n let year = parseInt(parts[2], 10);\n let month = parseInt(parts[0], 10);\n let day = parseInt(parts[1], 10);\n if (year < 2000 || year > 2100 || month < 1 || month > 12 || day < 1 || day > 31){\n return false; // Invalid year, month, or day\n }\n return true;\n }\n\n #rebuildEndTimeSelectOptions(diff = null) {\n const optionsArray = [...this.startTimeTarget.options]\n\n const appendEndTimeOptions = (startIndex, endIndex) => {\n this.endTimeTarget.options.length = 0\n for (let i = startIndex; i <= endIndex; i++) {\n appendSelectOption(this.endTimeTarget, optionsArray[i])\n }\n }\n\n switch(diff) {\n case 0:\n appendEndTimeOptions(this.startTimeTarget.selectedIndex, optionsArray.length-1)\n break;\n case 864000000:\n appendEndTimeOptions(0, this.startTimeTarget.selectedIndex)\n break;\n case 860400000:\n appendEndTimeOptions(0, Math.min(this.startTimeTarget.selectedIndex+1, optionsArray.length-1))\n break;\n case 867600000:\n appendEndTimeOptions(0, Math.max(this.startTimeTarget.selectedIndex-1, 1))\n break;\n default:\n appendEndTimeOptions(0, optionsArray.length-1)\n }\n\n function appendSelectOption(select, option) {\n const optionEl = document.createElement(\"option\")\n optionEl.value = option.value\n optionEl.innerHTML = option.innerHTML\n select.appendChild(optionEl)\n }\n }\n\n formatDateInput(input) {\n input.addEventListener(\"input\", function () {\n let value = input.value.replace(/\\D/g, \"\"); // Remove non-numeric characters\n let formattedValue = \"\";\n\n if (value.length > 0) {\n formattedValue = value.substring(0, 2); // MM\n }\n if (value.length > 2) {\n formattedValue += \"-\" + value.substring(2, 4); // DD\n }\n if (value.length > 4) {\n formattedValue += \"-\" + value.substring(4, 8); // YYYY\n }\n\n input.value = formattedValue;\n });\n input.addEventListener(\"blur\", () => {\n if (input !== this.startDateTarget) {\n let regex = /^(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])-(19|20)\\d\\d$/;\n if (input.value === '' || regex.test(input.value)) {\n input.classList.remove(\"error-border\");\n } else {\n input.classList.add(\"error-border\");\n }\n }\n });\n }\n\n checkDateInput(input) {\n const element = document.querySelector('[data-controller~=\"new-delivery\"]');\n const schedulingFeatureFlag = element ? element.getAttribute('data-scheduling-form-flag') === 'true' : false;\n if (schedulingFeatureFlag) {\n const inputDate = new Date(input);\n const oneYearLater = new Date();\n oneYearLater.setFullYear(oneYearLater.getFullYear() + 1);\n\n if (inputDate > oneYearLater) {\n $(this.warningModalTarget).show();\n }\n }\n }\n\n hideWarningModal(){\n $(this.warningModalTarget).hide();\n }\n\n resetDates(){\n this.startDateTarget.value = '';\n this.hideWarningModal();\n }\n\n setMinScheduleDate(){\n const courseSchedulingFeatureFlag = this.element.dataset.schedulingFormFlag === \"true\";\n if (courseSchedulingFeatureFlag){\n this.startDateTarget.value = ''\n this.endDateTarget.value = ''\n const selectedCourse = this.examCourseTarget.value;\n const courseSchedules = JSON.parse(this.courseSchedulesTarget.value);\n let minDate = courseSchedules[selectedCourse] ? new Date(courseSchedules[selectedCourse]) : new Date();\n if (minDate < new Date()) {\n minDate = new Date();\n }\n this.minDate = minDate;\n $(this.startDateTarget).datepicker(\"option\", \"minDate\", minDate);\n }\n }\n\n checkMinDate(dateString) {\n const inputDate = this.parseDate(dateString);\n const minDate = this.minDate || new Date(Date.UTC(new Date().getUTCFullYear(), new Date().getUTCMonth(), new Date().getUTCDate()));\n const isValid = inputDate && inputDate >= minDate && this.isValidDate(dateString);\n const dateToUse = isValid ? inputDate : minDate;\n $(this.startDateTarget).datepicker(\"setDate\", this.formatDate(dateToUse));\n this.startDateSelected(this.formatDate(dateToUse));\n this.checkDateInput(this.formatDate(dateToUse));\n }\n\n parseDate(dateString) {\n const parts = dateString.split(\"-\");\n const month = parseInt(parts[0], 10) - 1;\n const day = parseInt(parts[1], 10);\n const year = parseInt(parts[2], 10);\n return new Date(Date.UTC(year, month, day));\n }\n\n formatDate(date) {\n return `${String(date.getUTCMonth() + 1).padStart(2, '0')}-${String(date.getUTCDate()).padStart(2, '0')}-${date.getUTCFullYear()}`;\n }\n\n updateSelectedGoals() {\n const selectedValues = Array.from(document.querySelectorAll('input[name=\"assessment_goal_options[]\"]:checked'))\n .map(checkbox => checkbox.value);\n const hiddenField = document.getElementById('hidden-assessment-goals');\n const placeholder = document.getElementById('assessment-goal-placeholder');\n\n if (hiddenField){\n hiddenField.value = selectedValues.join(',');\n }\n if (placeholder) {\n placeholder.value = selectedValues.length > 0 ? `You selected ${selectedValues.length} goal${selectedValues.length > 1 ? 's': ''}` : 'Select Goals';\n }\n };\n}\n\nfunction setInactive(element) {\n element.disabled = true;\n element.style.background = \"lightgray\";\n element.style.color = \"#a6a6a6\";\n}\n\nfunction setActive(element) {\n element.disabled = false;\n element.style.background = \"\";\n element.style.color = \"\";\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"minutesLimit\", \"navigation\", \"questionOrder\",\n \"examTitle\",\n \"administrationYear\", \"minRosteringsCount\", \"blackBackground\",\n \"examCourse\", \"examForm\", \"examVersion\",\n \"detectionNotice\"]\n\n initialize() {\n this.generateTitle()\n this.updateDetectionNotice()\n }\n\n availableVersions() {\n let url = this.examVersionTarget.dataset.url && new URL(this.examVersionTarget.dataset.url)\n\n let required_fields_completed =\n this.navigationTarget.value != \"\" &&\n this.questionOrderTarget.value != \"\" &&\n this.administrationYearTarget.value != \"\" &&\n this.minutesLimitTarget.vaue != \"\"\n\n if (url && required_fields_completed) {\n // Exam Params\n url.searchParams.append('minutes_limit', this.minutesLimitTarget.value)\n url.searchParams.append('navigation', this.navigationTarget.value)\n url.searchParams.append('question_order', this.questionOrderTarget.value)\n url.searchParams.append('administration_year', this.administrationYearTarget.value)\n url.searchParams.append('black_background', this.blackBackgroundTarget.checked)\n url.searchParams.append('form', this.examFormTarget.value)\n url.searchParams.append('title', this.examTitleTarget.value)\n url.searchParams.append('version', this.examVersionTarget.value)\n\n fetch(url)\n .then(response => response.text())\n .then(html => {\n document.getElementById(\"version-select\").innerHTML = html\n this.generateTitle()\n })\n }\n }\n\n generateTitle() {\n let url = this.administrationYearTarget.dataset.url && new URL(this.administrationYearTarget.dataset.url)\n\n if (url) {\n url.searchParams.append('administration_year', this.administrationYearTarget.value)\n url.searchParams.append('form', this.examFormTarget.value)\n url.searchParams.append('version', this.examVersionTarget.value)\n }\n\n fetch(url)\n .then(response => response.text())\n .then(html => {\n this.examTitleTarget.outerHTML = html\n })\n }\n\n updateDetectionNotice() {\n let url = this.detectionNoticeTarget.dataset.url && new URL(this.detectionNoticeTarget.dataset.url)\n\n if (url) {\n url.searchParams.append('administration_year', this.administrationYearTarget.value)\n }\n\n fetch(url)\n .then(response => response.text())\n .then(html => {\n this.detectionNoticeTarget.innerHTML = html\n })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = ['selectCourse', 'selectCase', 'questionSetCourse', 'projectName', 'questionSetModal', 'courseNameModal', 'projectNameModal', 'questionSetId', 'questionSetName', 'addQuestionSet', 'addQuestionSetButtonDiv']\n\n connect(){\n $(\"table\").tableDnD({\n onDragClass: \"myDragClass\",\n dragHandle: \".drag-me-only\"\n })\n }\n\n findDocuments(ev){\n if(this.selectCourseTarget.selectedOptions[0].value != \"\") {\n let url = this.selectCourseTarget.selectedOptions[0].dataset.documentsUrl;\n let result;\n $.ajax({\n url: url,\n type: 'GET',\n async: false,\n dataType: 'json',\n success: function (response) {\n result = response;\n }\n });\n this.selectCaseTarget.disabled = false\n this.selectCaseTarget.options.length = 0;\n let option = window.document.createElement('option');\n option.value = -1;\n option.innerHTML = 'Select Case';\n this.selectCaseTarget.appendChild(option);\n result.documents.forEach((doc) => {\n let option = window.document.createElement('option');\n option.value = doc.id;\n option.innerHTML = doc.title;\n this.selectCaseTarget.appendChild(option);\n });\n }\n else{\n this.selectCaseTarget.disabled = true\n }\n }\n\n validateSelectCase(ev){\n if(document.getElementById('addQuestionSetButton')){\n let questionSetName= this.questionSetNameTarget.innerHTML\n if(questionSetName==\"\"){\n alert(\"Please select Question Set\")\n ev.preventDefault()\n }\n }else if(document.getElementById('reviewable_id')){\n let documentId = this.selectCaseTarget.selectedOptions[0].value;\n this.selectCaseTarget.setCustomValidity(\n documentId == -1 ? \"Please select case\" : \"\"\n );\n }\n }\n\n validateCourseProjectName(ev){\n let url = ev.target.closest('button').dataset.url\n let projectName = this.projectNameTarget.value\n let course = this.questionSetCourseTarget.selectedOptions[0].value;\n if(projectName.trim()==\"\"){\n alert(\"Please enter Project Name\")\n ev.preventDefault()\n }\n if(course==\"\"){\n alert(\"Please select Course\")\n ev.preventDefault()\n }\n if(projectName.trim()!=\"\" && course!=\"\"){\n let result;\n $.ajax({\n url: url,\n type: 'GET',\n async: false,\n dataType: 'json',\n data: { projectName: projectName, course: course },\n success: function (response) {\n result = response;\n }\n });\n let questionSetTable = window.ProjectQuestionSetTable;\n let questionSetTableRows = questionSetTable.state.rows;\n questionSetTableRows.length = 0;\n result.question_sets.forEach((question_set) => {\n let row = {};\n row.id = question_set.id;\n row.title = question_set.title;\n row.created_at = question_set.created_at;\n row.show_question_set_path=question_set.show_question_set_path\n questionSetTableRows.push(row);\n });\n questionSetTable.setState({ questionSetTableRows });\n this.courseNameModalTarget.textContent=result.course;\n this.projectNameModalTarget.textContent=this.projectNameTarget.value\n $(this.questionSetModalTarget).show();\n }\n }\n\n questionSetModalClose(){\n $(this.questionSetModalTarget).hide();\n }\n\n questionSetModalSave(){\n let selQuestionSet = document.querySelector('input[name=\"question_set[id]\"]:checked').value\n let questionSetTable = window.ProjectQuestionSetTable;\n let questionSetTableRows = questionSetTable.state.rows;\n let questionSetName = questionSetTableRows.find(row=> row.id==selQuestionSet).title\n this.questionSetNameTarget.innerHTML=questionSetName\n this.addQuestionSetButtonDivTarget.style.textAlign=\"right\"\n $(this.questionSetModalTarget).hide();\n $(\"#questionSetSelection\").show();\n }\n\n activateReorderingOfRows(ev){\n $(\"table\").tableDnD({\n onDragClass: \"myDragClass\",\n dragHandle: \".drag-me-only\"\n })\n }\n\n addRow(ev){\n let projectTeamTable = window.ProjectTeamTable;\n let rows = projectTeamTable.state.rows\n let lastRow = rows[rows.length-1]\n let newRow= {\n id: rows.length>0 ? lastRow.id+1 : 1,\n role: rows.length>0 ? lastRow.role : \"editor_in_chief\",\n last_name: \"\",\n first_name: \"\",\n email: \"\"\n }\n rows.push(newRow)\n projectTeamTable.setState({ rows })\n this.activateReorderingOfRows(ev)\n }\n\n deleteRow(ev){\n let row = ev.target.closest('tr')\n row.remove()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"notifyProgramModal\"];\n\n openNotifyProgramModal(e) {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.notifyProgramModalTarget.classList.remove(\"hidden\");\n }\n\n hideNotifyProgramModal(e) {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.notifyProgramModalTarget.classList.add(\"hidden\");\n }\n}","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n hideModal() {\n document.getElementById('openQuestionContainer').classList.add(\"hidden\");\n }\n\n openSaveQuizTodoModal(event) {\n this.hideModal();\n document.getElementById('todoURLButton').click();\n event.stopPropagation();\n }\n}\n","import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n static targets = ['container', 'startIndicator', 'endIndicator', 'observable'];\n\n get container() {\n return this.hasContainerTarget ? this.containerTarget : this.element;\n }\n\n connect() {\n this.handleStartIntersect = this.handleStartIntersect.bind(this);\n this.handleEndIntersect = this.handleEndIntersect.bind(this);\n const startIntersectionObs = new IntersectionObserver(this.handleStartIntersect, { root: this.container, threshold: [0, 0.9] });\n const endIntersectionObs = new IntersectionObserver(this.handleEndIntersect, { root: this.container, threshold: [0, 0.9] });\n if (this.hasObservableTarget) {\n startIntersectionObs.observe(this.observableTargets[0]);\n endIntersectionObs.observe(this.observableTargets?.[this.observableTargets.length - 1]);\n } else {\n if (this.container.firstElementChild !== this.startIndicatorTarget) {\n startIntersectionObs.observe(this.container.firstElementChild);\n }\n if (this.container.lastElementChild !== this.endIndicatorTarget) {\n endIntersectionObs.observe(this.container.lastElementChild);\n }\n }\n }\n\n handleStartIntersect([e]) {\n if (this.hasStartIndicatorTarget) {\n if (e.intersectionRatio > 0.5) {\n this.startIndicatorTarget.classList.add('hidden');\n } else {\n this.startIndicatorTarget.classList.remove('hidden');\n }\n }\n }\n\n handleEndIntersect([e]) {\n if (this.hasEndIndicatorTarget) {\n if (e.intersectionRatio > 0.5) {\n this.endIndicatorTarget.classList.add('hidden');\n } else {\n this.endIndicatorTarget.classList.remove('hidden');\n }\n }\n }\n\n scrollLeft() {\n const scrollIncrement = this.container.dataset.scrollIncrement || this.container.offsetWidth;\n\n this.container.scroll({\n left: this.container.scrollLeft - parseInt(scrollIncrement),\n behavior: 'smooth',\n });\n }\n\n scrollRight() {\n const scrollIncrement = this.container.dataset.scrollIncrement || this.container.offsetWidth;\n\n this.container.scroll({\n left: this.container.scrollLeft + parseInt(scrollIncrement),\n behavior: 'smooth',\n });\n }\n\n scrollUp() {\n const scrollIncrement = this.container.dataset.scrollIncrement || this.container.scrollHeight;\n\n this.container.scroll({\n top: this.container.scrollHeight - parseInt(scrollIncrement),\n behavior: 'smooth',\n });\n }\n\n scrollDown() {\n const scrollIncrement = this.container.dataset.scrollIncrement || this.container.offsetHeight;\n\n this.container.scroll({\n top: this.container.scrollHeight + parseInt(scrollIncrement),\n behavior: 'smooth',\n });\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"div\", \"element\"];\n static values = {\n ssm: Boolean\n }\n\n connect() {\n const enableOverlay = this.ssmValue;\n\n if (enableOverlay) {\n if (this.hasDivTarget) {\n this.applyDivOverlay(this.divTarget);\n }\n if (this.hasElementTarget) {\n this.applyElementOverlay(this.elementTarget);\n }\n }\n }\n\n applyDivOverlay(div) {\n const overlay = document.createElement(\"div\");\n overlay.classList.add(\"overlay-disabled-div\");\n div.appendChild(overlay);\n\n div.addEventListener(\"click\", (event) => {\n const popup = div.dataset.overlayPopup;\n const trackInfo = div.dataset.overlayTrackInfo ? JSON.parse(div.dataset.overlayTrackInfo) : null;\n\n if (this.shouldTrackAnalytics(trackInfo)) {\n const { eventName, page, source, metaAttributes } = trackInfo;\n this.trackAnalytics(eventName, page, source, metaAttributes);\n }\n\n if (popup) {\n this.showPopup(event, popup);\n } else {\n event.preventDefault();\n }\n });\n\n div.querySelectorAll(\"a, button, input, textarea, select, [tabindex]\").forEach((innerElement) => {\n const innerElementPopup = innerElement.dataset.overlayPopup;\n\n if (!innerElementPopup) {\n innerElement.setAttribute(\"tabindex\", \"-1\");\n innerElement.setAttribute(\"aria-hidden\", \"true\");\n innerElement.addEventListener(\"click\", (event) => event.preventDefault());\n } else {\n innerElement.addEventListener(\"click\", (event) => {\n if (innerElementPopup) {\n this.showPopup(event, innerElementPopup);\n }\n });\n }\n });\n }\n\n applyElementOverlay(element) {\n const popup = element.dataset.overlayPopup;\n const trackInfo = element.dataset.overlayTrackInfo ? JSON.parse(element.dataset.overlayTrackInfo) : null;\n element.classList.add(\"overlay-disabled-element\");\n element.setAttribute(\"tabindex\", \"-1\");\n element.setAttribute(\"aria-hidden\", \"true\");\n\n if (element.dataset.next) {\n element.dataset.next = \"\";\n }\n\n if (this.shouldTrackAnalytics(trackInfo)) {\n const { eventName, page, source, metaAttributes } = trackInfo;\n this.trackAnalytics(eventName, page, source, metaAttributes);\n }\n\n if (popup) {\n element.addEventListener(\"click\", (event) => this.showPopup(event, popup));\n } else {\n element.addEventListener(\"click\", (event) => event.preventDefault());\n }\n element.addEventListener(\"contextmenu\", (event) => event.preventDefault());\n element.querySelectorAll(\"a, button, input, textarea, select, [tabindex]\").forEach((child) => {\n child.setAttribute(\"tabindex\", \"-1\");\n child.setAttribute(\"aria-hidden\", \"true\");\n child.addEventListener(\"click\", (event) => event.preventDefault());\n });\n }\n\n showPopup(event, popup) {\n event.preventDefault();\n\n const popupElement = document.getElementById(\"commonModal\");\n if (!popupElement) {\n console.error(\"Popup element not found.\");\n return;\n }\n\n const modalController = this.application.getControllerForElementAndIdentifier(popupElement, \"popup\");\n if (modalController) {\n modalController.fetchAndOpen(popup);\n } else {\n console.error(\"Controller not found.\");\n }\n }\n\n shouldTrackAnalytics(trackInfo) {\n if (!trackInfo) return false;\n\n const { eventName, page, source } = trackInfo;\n return eventName && page && source;\n }\n\n trackAnalytics(eventName, page, source, metaAttributes) {\n analytics.track(eventName, {\n page: page,\n source: source,\n ...metaAttributes\n });\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n fetchAndOpen(modal) {\n fetch(`/fetch_modal_content/${modal}`)\n .then(response => response.text())\n .then(html => {\n if (html) {\n this.updateModal(html);\n this.open();\n } else {\n console.error(\"No content received from the server.\");\n }\n })\n .catch(error => {\n console.error(\"Error fetching modal content:\", error);\n });\n }\n\n updateModal(html) {\n const modalElement = this.element.querySelector(\".async-modal-content\");\n\n if (modalElement) {\n modalElement.innerHTML = html;\n }\n }\n\n open() {\n const modal = document.querySelector(\".async-modal-dialog-small\");\n const scrollY = window.scrollY || window.pageYOffset;\n modal.style.top = `${scrollY + 50}px`;\n\n this.element.classList.add(\"modal-active\");\n document.body.classList.add(\"modal-active\");\n }\n\n close() {\n this.element.classList.remove(\"modal-active\");\n document.body.classList.remove(\"modal-active\");\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n window.print();\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = ['casesDiv', 'filterCourses', 'caseProjectDetailsModal', 'assessmentProjectDetailsModal', 'projectName', 'courseName', 'caseName', 'priority', 'projectMemberDetails', 'modalTitle', 'assessmentProjectName', 'assessmentCourseName', 'assessmentModalTitle', 'assessmentProjectMemberDetails', 'assessmentPriority', 'startDate', 'assessmentStartDate', 'questionSetTitle', 'projectId', 'questionSetHtml', 'workflowStatus', 'editorTable'];\n\n connect() {\n if(this.hasCaseProjectDetailsModalTarget) {\n $(this.caseProjectDetailsModalTarget).hide();\n }\n if(this.hasAssessmentProjectDetailsModalTarget) {\n $(this.assessmentProjectDetailsModalTarget).hide();\n }\n }\n\n populateSelectCases(ev) {\n let url = ev.target.closest('select').dataset.url;\n let course_id = this.filterCoursesTarget.selectedOptions[0].value;\n let course_name = this.filterCoursesTarget.selectedOptions[0].text;\n let cciProjectTable = window.CCIProjectTable;\n let flaggedItemProjectTable = window.FlaggedItemProjectTable;\n let newItemProjectTable = window.NewItemProjectTable\n let result;\n $.ajax({\n url: url,\n type: 'GET',\n async: false,\n dataType: 'json',\n data: { course_id: course_id, course_name: course_name },\n success: function (response) {\n result = response;\n }\n });\n if(cciProjectTable) {\n this.updateCaseProjectTables(cciProjectTable, result.case_projects);\n }\n if(flaggedItemProjectTable) {\n this.updateAssessmentProjectTables(flaggedItemProjectTable, result.flagged_assessment_projects);\n }\n if(newItemProjectTable) {\n this.updateAssessmentProjectTables(newItemProjectTable, result.new_assessment_projects);\n }\n }\n\n updateCaseProjectTables(projectTable, projects) {\n let tableRows = projectTable.state.rows;\n tableRows.length = 0;\n projects.forEach((project, index) => {\n let row = {};\n row.id = projects[index].id;\n row.name = projects[index].name;\n row.priority = projects[index].priority;\n row.start_date = projects[index].start_date;\n row.status = projects[index].status;\n row.aet_path = projects[index].aet_path;\n row.edit_path = projects[index].edit_path;\n row.details_url= projects[index].details_path;\n row.workflow_status=projects[index].workflow_status;\n row.workflow_status_path=projects[index].workflow_status_path,\n row.report_option=projects[index].report_option,\n row.project_status_report_path=projects[index].project_status_report_path,\n row.project_workflow_report_path=projects[index].project_workflow_report_path,\n row.summary_of_edits_report_path=projects[index].summary_of_edits_report_path,\n row.cases_content_report_path=projects[index].cases_content_report_path,\n row.project_editors_report_path=projects[index].project_editors_report_path,\n row.comments_report_path=projects[index].comments_report_path,\n tableRows.push(row);\n });\n projectTable.setState({ tableRows });\n }\n\n updateAssessmentProjectTables(projectTable, projects) {\n let tableRows = projectTable.state.rows;\n tableRows.length = 0;\n projects.forEach((project, index) => {\n let row = {};\n row.id = projects[index].id;\n row.name = projects[index].name;\n row.priority = projects[index].priority;\n row.start_date = projects[index].start_date;\n row.status = projects[index].status;\n row.aet_path = projects[index].aet_path;\n row.edit_path = projects[index].edit_path;\n row.details_url= projects[index].details_path;\n row.workflow_status=projects[index].workflow_status;\n row.workflow_status_path=projects[index].workflow_status_path,\n row.report_option=projects[index].report_option,\n row.project_status_report_path=projects[index].project_status_report_path,\n row.project_workflow_report_path=projects[index].project_workflow_report_path,\n row.summary_of_edits_report_path=projects[index].summary_of_edits_report_path,\n row.project_editors_report_path=projects[index].project_editors_report_path,\n tableRows.push(row);\n });\n projectTable.setState({ tableRows });\n }\n\n projectsDetails(ev) {\n let get_details_url = ev.target.closest('a').dataset.url;\n let projectRoles = {\n 'production_associate': 'Production Associate',\n 'reviewer': 'Reviewer',\n 'case_editor': 'Case Editor',\n 'associate_editor': 'Associate Editor',\n 'assessment_lead': 'Assessment Lead',\n 'editor_in_chief': 'Editor-in-Chief',\n 'primary_editor': 'Primary Editor',\n 'dyad_reviewer': 'Dyad Reviewer',\n 'group_reviewer': 'Group Reviewer',\n 'copy_editor': 'Copy Editor',\n 'asynchronous_group_reviewer': 'Asynchronous Group Reviewer',\n 'synchronous_group_reviewer': 'Synchronous Group Reviewer',\n 'author': 'Author'\n };\n let result;\n $.ajax({\n url: get_details_url,\n type: 'GET',\n async: false,\n dataType: 'json',\n success: function (response) {\n result = response;\n }\n });\n if(result.project_type==\"CCI Project Details\"){\n this.showCaseProjectModal(projectRoles, result)\n }\n else{\n this.showAssessmentProjectModal(projectRoles, result)\n }\n }\n\n showCaseProjectModal(projectRoles, result){\n this.projectNameTarget.textContent = result.project.name;\n this.courseNameTarget.textContent = result.course_name;\n this.caseNameTarget.textContent = result.case_name;\n this.priorityTarget.textContent = result.project.priority;\n this.startDateTarget.textContent = result.start_date\n this.modalTitleTarget.textContent = result.project_type;\n this.workflowStatusTarget.textContent = result.workflow_status\n let innerHtml = '';\n result.project_members.forEach(function (member) {\n innerHtml = innerHtml + `
`;\n });\n $(this.projectMemberDetailsTarget).html(innerHtml);\n $(this.caseProjectDetailsModalTarget).show();\n }\n\n showAssessmentProjectModal(projectRoles, result){\n this.assessmentProjectNameTarget.textContent = result.project.name;\n this.assessmentCourseNameTarget.textContent = result.course_name;\n this.assessmentPriorityTarget.textContent = result.project.priority;\n this.assessmentStartDateTarget.textContent = result.start_date\n this.assessmentModalTitleTarget.textContent = result.project_type;\n this.projectIdTarget.textContent = result.project.id;\n let innerHtml = '';\n result.project_members.forEach(function (member) {\n innerHtml = innerHtml + `
`;\n });\n\n this.questionSetHtmlTarget.href = result.question_set_url;\n this.questionSetHtmlTarget.innerHTML= result.question_set_title;\n $(this.assessmentProjectMemberDetailsTarget).html(innerHtml);\n let editorHtml = '';\n result.editors_leaderboard.forEach(function (editor) {\n editorHtml = editorHtml + `${editor.name}${editor.percentage_assigned_questions_completed}%${editor.percentage_total_questions_completed}%`\n });\n $(this.editorTableTarget).html(editorHtml);\n $(this.assessmentProjectDetailsModalTarget).show();\n }\n\n workflowStatus(ev){\n let url = ev.target.closest('a').dataset.url;\n let result;\n let project_id = this.projectIdTarget.value\n $.ajax({\n url: url,\n type: 'GET',\n async: false,\n dataType: 'json',\n data: { project_id: project_id },\n success: function (response) {\n result = response;\n }\n });\n }\n\n projectDetailsModalClose() {\n $(this.caseProjectDetailsModalTarget).hide();\n $(this.assessmentProjectDetailsModalTarget).hide();\n }\n\n reportAction(ev){\n let selectElem = ev.target;\n let selectedReport = selectElem.value\n let projectStatusReportUrl = selectElem.closest('td').dataset.projectStatusReportUrl\n let projectWorkflowReportUrl = selectElem.closest('td').dataset.projectWorkflowReportUrl\n let summaryOfEditsReportUrl = selectElem.closest('td').dataset.summaryOfEditsReportUrl\n let casesContentReportUrl=selectElem.closest('td').dataset.casesContentReportUrl\n let projectEditorsReportUrl=selectElem.closest('td').dataset.projectEditorsReportUrl\n let commentsReportUrl=selectElem.closest('td').dataset.commentsReportUrl\n\n if(selectedReport===\"project_status_report\"){\n window.open(projectStatusReportUrl)\n }\n if(selectedReport===\"project_workflow_report\"){\n window.open(projectWorkflowReportUrl)\n }\n if(selectedReport===\"summary_of_edits_report\"){\n window.open(summaryOfEditsReportUrl)\n }\n if(selectedReport===\"cases_content_report\"){\n window.open(casesContentReportUrl)\n }\n if(selectedReport===\"project_editors_report\"){\n window.open(projectEditorsReportUrl)\n }\n if(selectedReport===\"comments_report\"){\n window.open(commentsReportUrl)\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = ['filterCourses', 'filterStatus'];\n\n populateSelectCases(ev) {\n let url = ev.target.closest('select').dataset.url;\n let course_id = this.filterCoursesTarget.selectedOptions[0].value;\n let result;\n $.ajax({\n url: url,\n type: 'GET',\n async: false,\n dataType: 'json',\n data: { course_id: course_id },\n success: function (response) {\n result = response;\n }\n });\n this.refreshCSVURL()\n this.updateProjectTables(result.projects);\n }\n\n filterProjectStatus(ev) {\n let url = ev.target.closest('select').dataset.url;\n let course_id = document.getElementById(\"courses\").selectedOptions[0].value;\n let status = this.filterStatusTarget.selectedOptions[0].value;\n let result;\n $.ajax({\n url: url,\n type: 'GET',\n async: false,\n dataType: 'json',\n data: { course_id: course_id, statuses: status },\n success: function (response) {\n result = response;\n }\n });\n this.refreshCSVURL()\n this.updateProjectTables(result.projects);\n }\n\n refreshCSVURL() {\n let course_id = document.getElementById(\"courses\").selectedOptions[0].value;\n let status = document.getElementById(\"status\").selectedOptions[0].value;\n let csv_url = document.getElementById(\"csv-url\")\n csv_url.href = csv_url.href + \"?course_ids=\"+course_id+\"&statuses=\"+status\n }\n\n updateProjectTables(projects) {\n let projectStatusesTable = window.ProjectStatusesTable;\n let projectStatusesRows = projectStatusesTable.state.rows;\n projectStatusesRows.length = 0;\n projects.forEach((project, index) => {\n let row = {};\n row.course_name = projects[index].course_name;\n row.case_number_and_title = projects[index].case_number_and_title;\n row.review_status = projects[index].review_status;\n row.date_last_updated = projects[index].date_last_updated;\n row.project_team = projects[index].project_team;\n row.project_name = projects[index].project_name;\n row.workflow_report_link = projects[index].workflow_report_link;\n projectStatusesRows.push(row);\n });\n projectStatusesTable.setState({ projectStatusesRows });\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"pdiffAvg\", \"rpbAvg\", \"scoredQuestions\", \"unscoredQuestions\" ]\n\n connect() {\n this.updateStats()\n }\n\n updateStats() {\n setTimeout(() => {\n // The update computation must be delayed (via setTimeout) to allow the row state to settle.\n const aqueductTable = window.AqueductTable\n const rows = aqueductTable.state.rows\n const rowsOfInterest = rows.filter(row => row.selected && row.scored)\n\n this.pdiffAvgTarget.innerHTML = this.computeAverageText(rowsOfInterest.map(row => row.item_difficulty), 4)\n this.rpbAvgTarget.innerHTML = this.computeAverageText(rowsOfInterest.map(row => row.discrimination ), 2)\n\n this.scoredQuestionsTarget.textContent = rowsOfInterest.length\n this.unscoredQuestionsTarget.textContent = rows.filter(row => !row.scored && row.selected).length\n\n if (aqueductTable){\n aqueductTable.setState({query: {}});\n }\n },500)\n }\n\n computeAverageText(rawValues, precision) {\n const values = rawValues.filter(value => Number.isFinite(value))\n const sum = values.reduce((val, sum) => sum + val, 0)\n const count = values.length\n\n return count == 0 ? ' ' : (sum / count).toFixed(precision)\n }\n}\n","// app/javascript/controllers/quiz_form_controller.js\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"allDisciplines\", \"allBodySystems\", \"allClinicalFocuses\", \"allDiagnoses\", \"diagnosisCheckboxes\", \"allClinicalExcellenceTopics\", \"allClinicalLocations\", \"numberOfItems\", \"allCustomCourses\", \"customCoursesCheckboxes\", \"searchInput\", \"checkbox\", \"clickable\", \"collapsibleContent\", \"includePreviouslyCompletedField\"];\n\n connect() {\n this.formTarget.children[0].addEventListener(\"change\", this.handleFormChange.bind(this));\n document.addEventListener('keydown', this.closeModalOnEscape.bind(this));\n window.addEventListener('resize', this.updateActions.bind(this));\n this.updateActions();\n this.updateClasses();\n }\n\n disconnect() {\n window.removeEventListener('resize', this.updateActions.bind(this));\n }\n\n get formTarget() {\n return this.targets.find(\"form\");\n }\n\n handleFormChange() {\n const form = this.formTarget.children[0];\n const formData = new FormData(form);\n\n const quizData = {};\n formData.forEach((value, key) => {\n if(key.split('[]').length == 1) {\n const formattedKey = key.replace(/^quiz\\[(.*)]$/, '$1');\n quizData[formattedKey] = value;\n } else {\n const formattedKey = key.split('[]')[0].replace(/^quiz\\[(.*)]$/, '$1');\n quizData[formattedKey] ||= [];\n quizData[formattedKey].push(value);\n }\n });\n\n const payload = { quiz: quizData };\n\n fetch(this.formTarget.dataset.fetchcount, { \n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(payload),\n })\n .then (response => response.text())\n .then(html => Turbo.renderStreamMessage(html)); \n }\n\n toggleCollapse(event) {\n const card = document.getElementById(event.currentTarget.dataset.target);\n const icon = document.getElementById(event.currentTarget.dataset.icon);\n\n if (card.classList.contains(\"collapse\")) {\n card.classList.remove('collapse');\n card.classList.add('expanded');\n icon.classList.add('expanded');\n if(event.currentTarget.dataset.target == \"quickCardContent\") {\n document.getElementById('quickStartContent').classList.remove('collapse');\n }\n } else {\n icon.classList.remove('expanded');\n card.classList.remove('expanded');\n card.classList.add('collapse');\n if(event.currentTarget.dataset.target == \"quickCardContent\") {\n document.getElementById('quickStartContent').classList.add('collapse');\n }\n }\n }\n\n toggleAllDisciplines() {\n const checked = this.allDisciplinesTarget.checked;\n document.querySelectorAll(\"[name='quiz[clinical_disciplines][]']\").forEach(checkbox => {\n checkbox.checked = checked;\n });\n }\n\n toggleAllBodySystems() {\n const checked = this.allBodySystemsTarget.checked;\n document.querySelectorAll(\"[name='quiz[body_systems][]']\").forEach(checkbox => {\n checkbox.checked = checked;\n });\n }\n\n toggleAllClinicalFocuses() {\n const checked = this.allClinicalFocusesTarget.checked;\n document.querySelectorAll(\"[name='quiz[clinical_focuses][]']\").forEach(checkbox => {\n checkbox.checked = checked;\n });\n }\n\n toggleAllDiagnoses() {\n const checked = this.allDiagnosesTarget.checked;\n document.querySelectorAll(\"input[type='checkbox'][name='quiz[final_diagnoses][]']:not([style*='display: none'])\").forEach(checkbox => {\n checkbox.checked = checked;\n });\n }\n\n toggleDiagnosisCheckboxes(event) {\n const diagnosisCheckboxes = this.diagnosisCheckboxesTarget;\n diagnosisCheckboxes.classList.toggle('hidden');\n\n const element = document.getElementById(event.currentTarget.dataset.target);\n\n if(diagnosisCheckboxes.classList.contains('hidden')) {\n element.classList.remove('expanded');\n } else {\n element.classList.add('expanded');\n }\n }\n\n toggleAllClinicalExcellenceTopics() {\n const checked = this.allClinicalExcellenceTopicsTarget.checked;\n document.querySelectorAll(\"[name='quiz[clinical_excellence][]']\").forEach(checkbox => {\n checkbox.checked = checked;\n });\n }\n\n toggleAllClinicalLocations() {\n const checked = this.allClinicalLocationsTarget.checked;\n document.querySelectorAll(\"[name='quiz[clinical_locations][]']\").forEach(checkbox => {\n checkbox.checked = checked;\n });\n }\n\n toggleCustomCoursesCheckboxes(event) {\n const checkboxes = this.customCoursesCheckboxesTarget;\n checkboxes.classList.toggle('hidden');\n const element = document.getElementById(event.currentTarget.dataset.target);\n\n if(checkboxes.classList.contains('hidden')) {\n element.classList.remove('expanded');\n } else {\n element.classList.add('expanded');\n }\n }\n\n toggleAllCustomCourses() {\n const checked = this.allCustomCoursesTarget.checked;\n document.querySelectorAll(\"[name='quiz[custom_courses][]']\").forEach(checkbox => {\n checkbox.checked = checked;\n });\n }\n\n openModal() {\n const numberOfItemsField = this.numberOfItemsTarget;\n const isValid = numberOfItemsField.checkValidity();\n\n if (isValid) {\n $('#quizNameModal').modal('show');\n $('#quizNameModal').on('shown.bs.modal', function () {\n document.getElementById('quizName').focus();\n });\n } else {\n numberOfItemsField.reportValidity();\n }\n }\n\n closeModal() {\n $('#quizNameModal').modal('hide');\n }\n\n filterCheckboxes() {\n const searchQuery = this.searchInputTarget.value.toLowerCase();\n\n this.checkboxTargets.forEach(checkbox => {\n const label = checkbox.nextElementSibling;\n\n if (label.textContent.toLowerCase().includes(searchQuery)) {\n checkbox.style.display = \"inline\";\n label.style.display = \"inline\";\n } else {\n checkbox.style.display = \"none\";\n label.style.display = \"none\";\n }\n });\n }\n\n closeModalOnEscape(event) {\n if (event.key === 'Escape' || event.key === 'Esc' || event.keyCode === 27) {\n this.closeModal();\n }\n }\n\n updateActions() {\n if (window.matchMedia(\"(max-width: 500px)\").matches) {\n this.clickableTargets.forEach(element => element.setAttribute('data-action', 'click->quiz-form#toggleCollapse'));\n } else {\n this.clickableTargets.forEach(element => element.removeAttribute('data-action'));\n }\n }\n\n updateClasses() {\n if (window.innerWidth <= 500) {\n this.collapsibleContentTargets.forEach(element => element.classList.add(\"collapse\"));\n document.getElementById('quickCardContent').classList.remove('container');\n } else {\n this.collapsibleContentTargets.forEach(element => element.classList.remove(\"collapse\"));\n document.getElementById('quickCardContent').classList.add('container');\n }\n }\n\n handleKeypressCheckbox(event) {\n if (event.keyCode === 13) { // 13 is the key code for Enter\n event.preventDefault(); // Prevent the default action (form submission)\n event.target.click(); \n }\n }\n\n handleKeypressToggleCustomCoursesCheckboxes(event) {\n if (event.keyCode === 13) { // 13 is the key code for Enter\n event.preventDefault(); // Prevent the default action (form submission)\n this.toggleCustomCoursesCheckboxes(event);\n }\n }\n\n handleKeypressToggleCollapse(event) {\n if (event.keyCode === 13) { // 13 is the key code for Enter\n event.preventDefault(); // Prevent the default action (form submission)\n this.toggleCollapse(event);\n }\n }\n\n handleKeypressToggleDiagnosisCheckboxes(event) {\n if (event.keyCode === 13) { // 13 is the key code for Enter\n event.preventDefault(); // Prevent the default action (form submission)\n this.toggleDiagnosisCheckboxes(event);\n }\n }\n\n customCourseSelected(event) {\n if(event.currentTarget.checked) {\n document.querySelectorAll(\"[name='quiz[clinical_disciplines][]']\").forEach(checkbox => {\n checkbox.checked = false;\n });\n if(this.hasAllDisciplinesTarget) {\n this.allDisciplinesTarget.checked = false;\n }\n }\n }\n\n clinicalDisciplineSelected(event) {\n if(event.currentTarget.checked) {\n document.querySelectorAll(\"[name='quiz[custom_courses][]']\").forEach(checkbox => {\n checkbox.checked = false;\n });\n if(this.hasAllCustomCoursesTarget) {\n this.allCustomCoursesTarget.checked = false;\n }\n }\n }\n\n togglePreviousQuestionField(event) {\n if(event.currentTarget.dataset.hide == 'true') {\n this.includePreviouslyCompletedFieldTarget.classList.add('hidden');\n } else {\n this.includePreviouslyCompletedFieldTarget.classList.remove('hidden'); \n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport React from \"react\";\n\nexport default class extends Controller {\n static targets = [\"alignment\"];\n\n showAlignment() {\n this.alignmentTarget.style.display = 'grid';\n }\n\n hideAlignment() {\n this.alignmentTarget.style.display = 'none';\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport React from \"react\";\n\nexport default class extends Controller {\n static targets = [\"resetModal\", \"welcomeModal\", \"successBanner\"];\n\n connect() {\n if (this.hasWelcomeModalTarget){\n this.welcomeModalTarget.classList.remove(\"hidden\")\n }\n this.element.addEventListener(\"click\", this.showBanner);\n\n }\n\n hideWelcomeModal(){\n this.welcomeModalTarget.classList.add(\"hidden\");\n }\n\n openWelcomeModal(){\n this.welcomeModalTarget.classList.remove(\"hidden\");\n }\n\n hideResetModal(){\n this.resetModalTarget.classList.add(\"hidden\");\n }\n\n openResetModal(){\n window.renderAllChildReactOnRailsComponents?.(this.element);\n this.resetModalTarget.classList.remove(\"hidden\");\n }\n\n disconnect() {\n this.element.removeEventListener(\"click\", this.showBanner);\n }\n\n showBanner = (event) => {\n\n const banner = document.getElementById(\"success-banner\");\n banner.style.display = \"block\";\n\n setTimeout(() => {\n banner.style.display = \"none\";\n }, 3000);\n };\n}\n","// app/javascript/controllers/quiz_form_controller.js\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"startButton\"]\n\n // connect() {\n // this.updateButtonHref();\n // }\n\n updateButtonHref(event) {\n if(document.getElementById(\"studyMode\").checked){\n this.startButtonTarget.href = this.startButtonTarget.href.replace(/mode=.*?(&|$)/, 'mode=study' + '$1');\n } else if(document.getElementById(\"quizMode\").checked) {\n this.startButtonTarget.href = this.startButtonTarget.href.replace(/mode=.*?(&|$)/, 'mode=quiz' + '$1');\n } else {\n event.preventDefault();\n document.getElementById('modeMsg').innerText = \"Please select one mode to continue\"\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n static targets = [\"reset\"];\n\n connect() {\n document.addEventListener(\"click\", this.handleClickOutside.bind(this));\n this.handleKeydown = this.handleKeydown.bind(this);\n document.addEventListener('keydown', this.handleKeydown);\n this.setupEventListeners();\n }\n\n openResetModal() {\n this.resetTarget.classList.remove('hidden');\n }\n\n hideResetModal() {\n this.resetTarget.classList.add('hidden');\n }\n\n toggleDropdown() {\n if (window.innerWidth < 991) {\n const sidebar = document.querySelector('.quiz-sidebar')\n sidebar.classList.toggle('active')\n document.querySelector('.mobile-chevron')?.classList.toggle('rotate')\n }\n }\n\n keyPressToggleDropdown(event) {\n if (event.key === \"Enter\") {\n this.toggleDropdown()\n }\n }\n\n handleClickOutside(event) { \n const sidebar = document.querySelector('.quiz-sidebar');\n const chevron = document.querySelector('.mobile-chevron');\n\n if(sidebar && sidebar.classList.contains('active') && event.target != chevron && !sidebar.contains(event.target)) {\n sidebar.classList.toggle('active')\n chevron?.classList.toggle('rotate')\n }\n }\n\n handleModalKeydown(event, modal, hideModalMethod) {\n let submitButton = modal.querySelector('input[type=\"submit\"]');\n let cancelButton = modal.querySelector('.cancel-button-class');\n\n if (event.key === 'Enter') {\n // Trigger the submit button click event\n var resetLink = document.getElementById('reset-link');\n if (resetLink) {\n // Trigger the link click event\n resetLink.click();\n }\n } else if (event.key === 'Escape') {\n // Trigger the cancel button click event\n this[hideModalMethod](event);\n }\n }\n\n handleKeydown(event) {\n if (this.hasResetTarget && !this.resetTarget.classList.contains('hidden')) {\n this.handleModalKeydown(event, this.resetTarget, 'hideResetModal');\n }\n }\n\n setupEventListeners() {\n const reportButtons = document.querySelectorAll(\".report-issue\");\n const modalContainer = document.querySelector(\".report-modal-container\");\n const form = document.getElementById(\"reportIssueForm\");\n const modalCloseButtons = document.querySelectorAll(\".ri-close\");\n\n reportButtons.forEach(button => {\n button.addEventListener(\"click\", () => {\n if (modalContainer) {\n form.reset(); // reset the form\n modalContainer.style.display = \"block\";\n }\n });\n });\n\n modalCloseButtons.forEach(button => {\n button.addEventListener(\"click\", () => {\n if (modalContainer) {\n modalContainer.style.display = \"none\";\n }\n });\n });\n\n document.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Escape\" && modalContainer && modalContainer.style.display === \"block\") {\n modalContainer.style.display = \"none\";\n }\n });\n }\n}\n","import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n static targets = ['urlTo'];\n\n connect() {\n if (this.hasUrlToTarget) {\n setTimeout(window.location.replace(this.urlToTarget.dataset.urlTo), 5000);\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"countLabel\" ]\n\n removeItem(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n\n let documentItemTarget = ev.target.closest('[data-target=\"reducible-list.documentItem\"]')\n documentItemTarget.remove()\n\n this.updateCountLabel(-1)\n }\n\n updateCountLabel(adjustment) {\n let currentHTML = this.countLabelTarget.innerHTML\n let adjustedHTML = this.adjustLabelCount(currentHTML, adjustment);\n\n this.countLabelTarget.innerHTML = adjustedHTML\n }\n\n adjustLabelCount(html, adjustment) {\n let matches = html.match(/(\\d+) Item/)\n if (!Array.isArray(matches)) return html\n\n let textToAdjust = matches[0]\n let countToAdjust = matches[1] && Number(matches[1])\n let newCount = countToAdjust && (countToAdjust + adjustment)\n let adjustedText = textToAdjust.replace(/\\d+/, `${newCount}`)\n let adjustedHTML = html.replace(/(\\d+) Item/, adjustedText)\n\n return adjustedHTML;\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = []\n\n initialize() {\n $('.reports-start-date-picker').datepicker({\n dateFormat: 'yy-mm-dd',\n }).on('keypress', function(e){ e.preventDefault();});\n\n $('.reports-end-date-picker').datepicker({\n dateFormat: 'yy-mm-dd',\n }).on('keypress', function(e){ e.preventDefault();});\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class ReportsDashboard extends Controller {\n static targets = ['bookmarkURLName', 'filterReportType', 'bookmarkModal', 'filterEditors', 'filterStatus', 'filterReviewable', 'startDate', 'endDate', 'reportType', 'filterProjects', 'CasesTarget', 'casesDiv', 'filterCourses', 'caseProjectDetailsModal', 'assessmentProjectDetailsModal', 'projectName', 'courseName', 'caseName', 'priority', 'projectMemberDetails', 'modalTitle', 'assessmentProjectName', 'assessmentCourseName', 'assessmentModalTitle', 'assessmentProjectMemberDetails', 'assessmentPriority', 'startDate', 'assessmentStartDate', 'questionSetTitle', 'projectId', 'questionSetHtml', 'workflowStatus', 'editorTable', 'selectQuestion'];\n\n populateDashboard(ev) {\n let url = ev.target.dataset.url;\n let projects_type = ev.target.selectedOptions[0].value;\n $.ajax({\n url: url,\n type: 'GET',\n async: false,\n dataType: 'script',\n data: { projects_type: projects_type },\n success: function (response) {\n $('.report-dashboard-datepicker1').datepicker({\n dateFormat: \"M d, yy\",\n onSelect: function() {\n $(\"#date_changed\").click();\n }\n });\n $('.report-dashboard-datepicker2').datepicker({\n dateFormat: \"M d, yy\",\n onSelect: function() {\n $(\"#date_changed\").click();\n }\n });\n }\n });\n }\n\n bookmarkPopupShow(ev) {\n this.bookmarkModalTarget.style.display = \"block\";\n }\n\n bookmarkPopupClose(ev) {\n this.bookmarkModalTarget.style.display = \"none\";\n }\n\n bookmarkURL(ev) {\n let url = ev.target.dataset.url;\n\n let bookmarkURLName = this.bookmarkURLNameTarget.value;\n\n let projects_type = this.filterReportTypeTarget.selectedOptions[0].value;\n\n let report_type = this.reportTypeTarget.selectedOptions[0].value;\n\n let course_ids = []\n Array.from(this.filterCoursesTarget.selectedOptions).forEach(function(element){\n course_ids.push(element.value)\n });\n\n let reviewable_ids = []\n Array.from(this.filterReviewableTarget.selectedOptions).forEach(function(element){\n reviewable_ids.push(element.value)\n });\n\n let statuses = []\n Array.from(this.filterStatusTarget.selectedOptions).forEach(function(element){\n statuses.push(element.value)\n });\n\n let project_ids = []\n Array.from(this.filterProjectsTarget.selectedOptions).forEach(function(element){\n project_ids.push(element.value)\n });\n\n let editor_ids = []\n Array.from(this.filterEditorsTarget.selectedOptions).forEach(function(element){\n editor_ids.push(element.value)\n });\n\n let startDate = this.startDateTarget.value\n let endDate = this.endDateTarget.value\n\n $.ajax({\n url: url,\n type: 'POST',\n async: false,\n dataType: 'script',\n data: { projects_type: projects_type,\n course_ids: course_ids,\n reviewable_ids: reviewable_ids,\n statuses: statuses,\n project_ids: project_ids,\n editor_ids: editor_ids,\n report_type: report_type,\n start_date: startDate,\n end_date: endDate,\n bookmark_url_name: bookmarkURLName\n }\n });\n }\n\n showReport(ev) {\n let url = ev.target.dataset.url;\n let requestType = ev.target.dataset.type;\n let course_ids = []\n Array.from(this.filterCoursesTarget.selectedOptions).forEach(function(element){\n course_ids.push(element.value)\n });\n\n let reviewable_ids = []\n Array.from(this.filterReviewableTarget.selectedOptions).forEach(function(element){\n reviewable_ids.push(element.value)\n });\n\n let statuses = []\n Array.from(this.filterStatusTarget.selectedOptions).forEach(function(element){\n statuses.push(element.value)\n });\n\n let project_ids = []\n Array.from(this.filterProjectsTarget.selectedOptions).forEach(function(element){\n project_ids.push(element.value)\n });\n\n let editor_ids = []\n Array.from(this.filterEditorsTarget.selectedOptions).forEach(function(element){\n editor_ids.push(element.value)\n });\n\n let startDate = this.startDateTarget.value\n let endDate = this.endDateTarget.value\n\n let report_type = this.reportTypeTarget.selectedOptions[0].value;\n\n if(project_ids.length == 0) {\n alert(\"Please select atleast one project.\");\n return 0;\n }\n\n if(report_type == \"\") {\n alert(\"Please select a Report type.\");\n return 0;\n }\n\n let question_id = \"\"\n if(document.getElementById(\"question\")!=null) {\n question_id = this.selectQuestionTarget.selectedOptions[0].value;\n if(report_type == \"Comments Report (single project)\" && question_id == \"\") {\n alert(\"Please select a Question.\");\n return 0;\n }\n }\n\n $.ajax({\n url: url,\n type: 'POST',\n async: false,\n dataType: 'json',\n data: { course_ids: course_ids,\n reviewable_ids: reviewable_ids,\n statuses: statuses,\n project_ids: project_ids,\n editor_ids: editor_ids,\n report_type: report_type,\n start_date: startDate,\n end_date: endDate,\n question_id: question_id,\n request_type: requestType },\n success: function (response) {\n if(response.error === undefined){\n window.open(response.url, '_blank');\n }\n }\n });\n }\n\n filterEditors(ev) {\n let url = ev.target.closest('select').dataset.url;\n let project_ids = []\n Array.from(this.filterProjectsTarget.selectedOptions).forEach(function(element){\n project_ids.push(element.value)\n });\n\n $.ajax({\n url: url,\n type: 'GET',\n async: false,\n dataType: 'script',\n data: { project_ids: project_ids }\n });\n }\n\n populateSelectCases(ev) {\n let url = ev.target.closest('select').dataset.url;\n let course_ids = []\n Array.from(this.filterCoursesTarget.selectedOptions).forEach(function(element){\n course_ids.push(element.value)\n });\n let result;\n $.ajax({\n url: url,\n type: 'POST',\n async: false,\n dataType: 'script',\n data: { course_ids: course_ids, is_course_changed: true }\n });\n }\n\n filterProjects(ev) {\n let course_ids = []\n Array.from(this.filterCoursesTarget.selectedOptions).forEach(function(element){\n course_ids.push(element.value)\n });\n\n let reviewable_ids = []\n Array.from(this.filterReviewableTarget.selectedOptions).forEach(function(element){\n reviewable_ids.push(element.value)\n });\n\n let statuses = []\n Array.from(this.filterStatusTarget.selectedOptions).forEach(function(element){\n statuses.push(element.value)\n });\n\n let startDate = this.startDateTarget.value\n let endDate = this.endDateTarget.value\n\n let url = this.filterReviewableTarget.closest('select').dataset.url;\n\n let result;\n $.ajax({\n url: url,\n type: 'POST',\n async: false,\n dataType: 'script',\n data: { course_ids: course_ids, reviewable_ids: reviewable_ids, statuses: statuses, start_date: startDate, end_date: endDate }\n });\n }\n\n populateSelectQuestions(ev){\n let url = ev.target.closest('select').dataset.url;\n let report_type =this.reportTypeTarget.selectedOptions[0].value\n let project_id=\"\"\n if(report_type=='Comments Report (single project)'){\n project_id = this.filterProjectsTarget.selectedOptions[0].value\n let result;\n $.ajax({\n url: url,\n type: 'GET',\n async: false,\n dataType: 'script',\n data: { assessment_project_id: project_id},\n });\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = []\n\n connect() {}\n\n change(event) {\n const frame = document.querySelector('turbo-frame#report')\n frame.src = event.target.value;\n frame.reload();\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"resetModal\"]\n\n openModal(){\n $(this.resetModalTarget).show();\n }\n\n hideModal(){\n $(this.resetModalTarget).hide();\n }\n}","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"updateButton\" ]\n\n updateRowOrder() {\n let aqueductTable = window.AqueductTable;\n let rows = aqueductTable.state.rows;\n\n rows = rows.\n sort(this.compareRows).\n map((row, idx) => {\n row.position = `${idx+1}.0`\n row.position_integer = idx+1 // MUST be the integer equivalent of the position!!\n return row\n })\n\n // Reset any column sorting that the user may have been using.\n let sortingColumns = undefined\n\n aqueductTable.setState({ rows, sortingColumns });\n }\n\n // The sorting criteria used in this function must exactly match\n // the Ruby code for the Assessment::ExamItem::SortableItem#key method.\n // If you make a change here, you must update the Ruby code to match.\n compareRows(rowA, rowB) {\n // Selected rows are always lower position than unselected rows.\n let aSelected = rowA.selected ? -1 : 1\n let bSelected = rowB.selected ? -1 : 1\n if (aSelected != bSelected) {\n return aSelected - bSelected\n }\n\n // If this point is reached, both rows have the same selected status.\n // Now we use the position number to compare.\n let aPosition = parseFloat(rowA.position)\n if (isNaN(aPosition)) {\n aPosition = 99999999999\n } else if (rowA.position.trim().match(/^\\d+$/)) {\n // Make integers sort into just above or just below the equivalent float value.\n if (aPosition <= rowA.position_integer) {\n aPosition -= 0.000001\n } else {\n aPosition += 0.000001\n }\n }\n\n let bPosition = parseFloat(rowB.position)\n if (isNaN(bPosition)) {\n bPosition = 99999999999\n } else if (rowB.position.trim().match(/^\\d+$/)) {\n // Make integers sort into just above or just below the equivalent float value.\n if (bPosition <= rowB.position_integer) {\n bPosition -= 0.000001\n } else {\n bPosition += 0.000001\n }\n }\n\n if (aPosition != bPosition) {\n return aPosition - bPosition\n }\n\n // If this point is reached, both rows have the same selected status\n // and the same position value.\n // Fall back to using the question ID to compare.\n let aQuestionId = parseInt(rowA.question_id)\n if (isNaN(aQuestionId)) { aQuestionId = 99999999999 }\n let bQuestionId = parseInt(rowB.question_id)\n if (isNaN(bQuestionId)) { bQuestionId = 99999999999 }\n return aQuestionId - bQuestionId\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [ \"row\", \"rowIdsCsv\" ];\n\n get defaultType() {\n return \"input.select-box[type='checkbox']\";\n }\n\n selectedRows(type) {\n return this.rowTargets.filter(row => row.querySelector(type)?.checked); //type = \"input.select-box[type='checkbox']\"\n }\n\n enabledSelectedRows(type) {\n return this.selectedRows(type).filter(row => !row.querySelector(type).disabled);\n }\n\n selectAllRows(type) {\n if (typeof(type) != 'string') {\n type = this.defaultType;\n }\n for(const row of this.rowTargets) {\n const rowRep = row.querySelector(type);\n if(!rowRep) continue;\n if(!rowRep.disabled) {\n rowRep.checked = true;\n }\n }\n }\n\n deselectAllRows(type) {\n if (typeof(type) != 'string') {\n type = this.defaultType;\n }\n for(const row of this.rowTargets) {\n const rowRep = row.querySelector(type);\n if(!rowRep) continue;\n if(!rowRep.disabled) {\n rowRep.checked = false;\n }\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"createQuizModal\", \"createQuizModalError\",\"createQuizModalMobile\", \"createQuizModalErrorMobile\", \"resetQuestionModal\", \"resetQuestionMobileModal\", \"teachingPointModal\"]\n\n connect(){\n const filtersDiv = document.getElementById('saq-mobile-filters-div');\n if(filtersDiv){\n filtersDiv.style.display = sessionStorage.getItem('saqMobileFiltersDivDisplay') || \"none\";\n }\n }\n\n select_all() {\n const checkboxesArray = document.getElementsByName(\"saq_response_checkboxes\");\n const selectAllCheckbox = document.getElementById('select_all');\n checkboxesArray.forEach((checkbox) => {\n checkbox.checked = selectAllCheckbox.checked;\n });\n this.updateLink();\n }\n\n updateLink() {\n // Gather all selected checkbox values\n const checkboxesArray = document.getElementsByName(\"saq_response_checkboxes\");\n const checkboxValues = Array.from(checkboxesArray).filter(checkbox => checkbox.checked).map(checkbox => checkbox.value).join(',');\n\n // Update the hidden field with the checkbox values\n if(document.getElementById('quiz_checkbox_values')){\n document.getElementById('quiz_checkbox_values').value = checkboxValues;\n }\n\n if(document.getElementById('quiz_checkbox_values_mobile')){\n document.getElementById('quiz_checkbox_values_mobile').value = checkboxValues;\n }\n\n // Check if the reset_link target is available\n const resetLink = document.getElementById('reset_link');\n if (resetLink) {\n // Update the reset_link URL with the checkbox values\n const restUrl = resetLink.getAttribute('href').replace(/(checkbox_values=)[^\\&]*/, `$1${checkboxValues}`);\n resetLink.setAttribute('href', restUrl);\n }\n\n const resetLinkMobile = document.getElementById('reset_link_mobile');\n if (resetLinkMobile) {\n const restUrlMobile = resetLinkMobile.getAttribute('href').replace(/(checkbox_values=)[^\\&]*/, `$1${checkboxValues}`);\n resetLinkMobile.setAttribute('href', restUrlMobile);\n }\n }\n\n openModal(e){\n e.preventDefault();\n e.stopImmediatePropagation();\n if(document.getElementById(\"quiz_checkbox_values\").value == \"\"){\n this.createQuizModalErrorTarget.textContent = \"Please select at least one checkbox to create quiz\";\n }\n else{\n this.createQuizModalErrorTarget.textContent = \"\";\n }\n this.createQuizModalTarget.classList.remove(\"hidden\");\n }\n\n closeModal(e){\n this.createQuizModalTarget.classList.add(\"hidden\");\n }\t\t\n\n saveModal(e){\n if(document.getElementById(\"quiz_checkbox_values\").value == \"\"){\n e.preventDefault();\n e.stopImmediatePropagation();\n this.createQuizModalErrorTarget.textContent = \"Please select at least one checkbox to create quiz\";\n }\n else{\n this.createQuizModalErrorTarget.textContent = \"\";\n if (document.getElementById(\"title\").value!==\"\"){\n this.createQuizModalTarget.classList.add(\"hidden\");\n }else{\n e.preventDefault();\n e.stopImmediatePropagation();\n this.createQuizModalErrorTarget.textContent = \"Please enter a name of the quiz\";\n }\n }\n }\n\n toggleMobileFilters(e){\n e.preventDefault();\n const filtersDiv = document.getElementById('saq-mobile-filters-div');\n if(filtersDiv){\n filtersDiv.style.display = filtersDiv.style.display === \"none\" ? \"block\" : \"none\";\n sessionStorage.setItem('saqMobileFiltersDivDisplay', filtersDiv.style.display);\n }\n }\n\n\n openModalMobile(e){\n e.preventDefault();\n e.stopImmediatePropagation();\n if(document.getElementById(\"quiz_checkbox_values_mobile\").value == \"\"){\n this.createQuizModalErrorMobileTarget.textContent = \"Please select at least one checkbox to create quiz\";\n }\n else{\n this.createQuizModalErrorMobileTarget.textContent = \"\";\n }\n this.createQuizModalMobileTarget.classList.remove(\"hidden\");\n }\n\n closeModalMobile(e){\n this.createQuizModalMobileTarget.classList.add(\"hidden\");\n }\t\t\n\n saveModalMobile(e){\n if(document.getElementById(\"quiz_checkbox_values_mobile\").value == \"\"){\n e.preventDefault();\n e.stopImmediatePropagation();\n this.createQuizModalErrorMobileTarget.textContent = \"Please select at least one checkbox to create quiz\";\n }\n else{\n this.createQuizModalErrorMobileTarget.textContent = \"\";\n if (document.getElementById(\"title\").value!==\"\"){\n this.createQuizModalMobileTarget.classList.add(\"hidden\");\n }else{\n e.preventDefault();\n e.stopImmediatePropagation();\n this.createQuizModalErrorMobileTarget.textContent = \"Please enter a name of the quiz\";\n }\n }\n }\n\n select_all_mobile(){\n const checkboxesArray = document.getElementsByName(\"saq_response_checkboxes\");\n const selectAllCheckbox = document.getElementById('select_all_mobile');\n checkboxesArray.forEach((checkbox) => {\n checkbox.checked = selectAllCheckbox.checked;\n });\n this.updateLink();\n }\n\n openResetQuestionModal(e){\n e.preventDefault();\n e.stopImmediatePropagation();\n this.resetQuestionModalTarget.classList.remove(\"hidden\");\n }\n\n closeResetQuestionModal(e){\n this.resetQuestionModalTarget.classList.add(\"hidden\");\n }\n\n openResetQuestionMobileModal(e){\n e.preventDefault();\n e.stopImmediatePropagation();\n this.resetQuestionMobileModalTarget.classList.remove(\"hidden\");\n }\n\n closeResetQuestionMobileModal(e){\n this.resetQuestionMobileModalTarget.classList.add(\"hidden\");\n }\n\n toggleQuestionDetails(e){\n e.preventDefault();\n let saqId = e.target.dataset.saqId;\n const questionDetails = document.getElementById('saq-response-question-details-' + saqId);\n if(questionDetails){\n questionDetails.style.display = questionDetails.style.display === \"none\" ? \"block\" : \"none\";\n }\n const questionDetailsArrow = document.getElementById('saq-question-details-arrow-' + saqId);\n if(questionDetailsArrow){\n questionDetailsArrow.classList.toggle(\"rotated\");\n }\n const questionDetailsArrowMobile = document.getElementById('saq-question-details-arrow-mobile-' + saqId);\n if(questionDetailsArrowMobile){\n questionDetailsArrowMobile.classList.toggle(\"rotated\");\n }\n }\n\n hideTeachingPointModal(e){\n const saqResponseId = e.target.dataset.saqResponseId;\n const modal = this.teachingPointModalTargets.find(target => target.id === `tp_modal_${saqResponseId}`);\n if (modal) {\n modal.classList.add(\"hidden\");\n }\n }\n\n openTeachingPointModal(e){\n window.renderAllChildReactOnRailsComponents?.(this.element);\n const saqResponseId = e.target.dataset.saqResponseId;\n const modal = this.teachingPointModalTargets.find(target => target.id === `tp_modal_${saqResponseId}`);\n if (modal) {\n modal.classList.remove(\"hidden\");\n }\n }\n\n openTodoModal(e) {\n fetch(e.target.dataset.url)\n .then (response => response.text())\n .then(html => Turbo.renderStreamMessage(html))\n .then(document.getElementById('todo_form_container').classList.remove(\"hidden\"));\n }\n\n checkEnterFilterKey(event) {\n if (event.keyCode === 13) { // 13 is the key code for Enter\n event.preventDefault(); // Prevent the default action (form submission)\n const checkboxId = event.target.getAttribute('for'); // Get the id of the checkbox associated with the label\n const checkbox = document.getElementById(checkboxId); // Get the checkbox element\n checkbox.click();\n }\n }\n\n checkEnterKeySelectAll(event) {\n if (event.keyCode === 13) { // 13 is the key code for Enter\n event.preventDefault(); // Prevent the default action (form submission)\n event.target.click(); \n }\n }\n\n checkEnterKeyToggleQuestionDetails(event) { \n if (event.keyCode === 13) { // 13 is the key code for Enter\n event.preventDefault(); // Prevent the default action (form submission)\n this.toggleQuestionDetails(event); // Call the toggleQuestionDetails method\n }\n }\n\n checkEnterKeyCheckbox(event) {\n if (event.keyCode === 13) { // 13 is the key code for Enter\n event.preventDefault(); // Prevent the default action (form submission)\n event.target.click(); // Click the checkbox\n }\n }\n\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nimport debounce from \"debounce\";\n\n// Connects to data-controller=\"form\"\nexport default class extends Controller {\n initialize() {\n this.submit = debounce(this.submit.bind(this), 1000)\n }\n\n submit() {\n this.element.requestSubmit();\n this.updateDisplayCount('Loading...');\n const formData = new FormData(this.element);\n const cardName = formData.get(\"card_name\");\n if(cardName && cardName == \"snapshots_and_trends\"){\n this.showSnapshotsLoader();\n }\n else{\n this.showLoader();\n this.showLoaderContentUsageLog();\n }\n }\n\n static targets = [\"form\", \"checkbox\", \"userTypesCheckbox\", \"userTypesHiddenField\",\n \"programTypesCheckbox\", \"programTypesHiddenField\",\n \"subscriptionTypesCheckbox\", \"subscriptionTypesHiddenField\"]\n\n updateHiddenField(event) {\n const checkbox = event.target;\n const hiddenFieldId = `${checkbox.id}_hidden`;\n const hiddenField = document.getElementById(hiddenFieldId);\n if (hiddenField) {\n hiddenField.value = checkbox.checked ? \"true\" : \"false\";\n } clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n this.formTarget.requestSubmit();\n }, 200);\n }\n\n search() {\n clearTimeout(this.timeout)\n this.timeout = setTimeout(() => {\n this.formTarget.requestSubmit()\n }, 200)\n }\n\n updateDisplayCount(message) {\n const displayCount = document.getElementById('count');\n if (displayCount) {\n displayCount.innerHTML = message;\n }\n }\n\n showLoader() {\n const desktopLoader = document.getElementById('content-summary-loader');\n const mobileLoader = document.getElementById('content-summary-loader-mobile');\n const mobileContent = document.querySelector('.card-mobile');\n let computedStyle = null;\n if (mobileContent) {\n computedStyle = window.getComputedStyle(mobileContent);\n }\n\n if (desktopLoader && computedStyle && computedStyle.getPropertyValue('display') === 'none') {\n desktopLoader.style.display = 'block';\n } else if (mobileLoader && computedStyle && computedStyle.getPropertyValue('display') === 'block') {\n mobileLoader.style.display = 'block';\n }\n }\n\n showLoaderContentUsageLog() {\n const loader = document.getElementById('content-summary-loader');\n if (loader) {\n loader.style.display = 'block';\n }\n }\n\n showSnapshotsLoader() {\n const loader = document.getElementById('snapshots-and-trends-loader');\n if (loader) {\n loader.style.display = 'block';\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport aquiferLogoExpandedImg from '../../assets/images/Aquifer-powered-by-Aqueduct.png';\nimport aquiferLogoCollapsedImg from '../../assets/images/Aquifer_logo_swoosh_white.svg';\n\nexport default class extends Controller {\n static targets = [\"navigation\", \"sideNavigation\"];\n\n connect() {\n this.toggleSideNavigation(); // Initial state on page load\n window.addEventListener(\"resize\", this.toggleSideNavigation.bind(this));\n const navState = sessionStorage.getItem('sideNavState');\n const resourceMenuState = sessionStorage.getItem('resourceMenuState');\n const defaultState = this.data.get('default-state')\n const featureFlagEnabled = this.data.get(\"featureFlagEnabled\") === \"true\";\n const todoMenuState = sessionStorage.getItem('todoMenuState');\n const quizMenuState = sessionStorage.getItem('quizMenuState');\n\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\n if (isSafari) {\n document.documentElement.classList.add('safari');\n }\n\n if (featureFlagEnabled) {\n if (defaultState ==='collapsed' || navState === 'collapsed') {\n this.collapseNavigation();\n }\n else {\n this.expandNavigation()\n }\n }\n if (defaultState !== 'collapsed') {\n if (resourceMenuState === null || resourceMenuState === 'collapsed') {\n this.collapseResourceMenu();\n }\n else {\n this.expandResourceMenu()\n }\n if (todoMenuState === null || todoMenuState === 'collapsed') {\n this.collapseTodoMenu();\n }\n else {\n this.expandTodoMenu()\n }\n if (quizMenuState === null || quizMenuState === 'collapsed') {\n this.collapseQuizMenu();\n }\n else{\n this.expandQuizMenu();\n }\n\n }\n let cookies = document.cookie.split('; ');\n let cookie = cookies.find(row => row.startsWith('programMenuState='));\n if (cookie === undefined || cookie.split('=')[1] === 'collapsed') {\n this.collapseProgramsMenu();\n }\n else {\n this.expandProgramsMenu()\n }\n }\n\n toggleNavigation() {\n const sideNavDiv = document.getElementById(\"side-nav-div\");\n\n if (sideNavDiv.classList.contains(\"collapsed\")) {\n this.expandNavigation();\n } else {\n this.collapseNavigation();\n }\n }\n\n expandNavigation() {\n const sideNavDiv = document.getElementById(\"side-nav-div\");\n const sideNavMainContent = document.getElementById(\"side-nav-main-content\");\n const aquiferLogoImage = document.getElementById(\"aquifer-logo-img\");\n const collapseImg = document.getElementById(\"collapse-img\");\n\n sideNavDiv.classList.remove(\"collapsed\");\n document.getElementById(\"panel-sticky\")?.classList?.remove(\"smaller-sticky-info\");\n\n if(sideNavMainContent){\n sideNavMainContent.classList.remove(\"collapsed\");\n }\n if(document.getElementById(\"side-navigation-profile-icon\")){\n document.getElementById(\"side-navigation-profile-icon\").classList.remove(\"collapsed\");\n }\n if(document.getElementById(\"log-out-div\")){\n document.getElementById(\"log-out-div\").classList.remove(\"collapsed\");\n }\n if (document.getElementById(\"resources-menu-img\")) {\n document.getElementById(\"resources-menu-img\").classList.remove(\"collapsed\");\n }\n if (document.getElementById(\"programs-menu-img\")) {\n document.getElementById(\"programs-menu-img\").classList.remove(\"collapsed\");\n }\n if (document.getElementById(\"todo-menu-img\")) {\n document.getElementById(\"todo-menu-img\").classList.remove(\"collapsed\");\n }\n if (document.getElementById(\"quiz-menu-img\")) {\n document.getElementById(\"quiz-menu-img\").classList.remove(\"collapsed\");\n }\n document.querySelectorAll(\".st-accordion__list\").forEach(element => {\n element.classList.remove(\"collapsed\");\n });\n document.querySelectorAll(\".side-navigation-icon-container\").forEach(element => {\n element.removeAttribute(\"title\");\n });\n aquiferLogoImage.src = aquiferLogoExpandedImg;\n aquiferLogoImage.style.marginLeft = \"13px\";\n collapseImg.classList.remove('right');\n collapseImg.classList.add('left');\n sessionStorage.setItem('sideNavState', 'expanded');\n }\n\n collapseNavigation() {\n const sideNavDiv = document.getElementById(\"side-nav-div\");\n const sideNavMainContent = document.getElementById(\"side-nav-main-content\");\n const aquiferLogoImage = document.getElementById(\"aquifer-logo-img\");\n const collapseImg = document.getElementById(\"collapse-img\");\n sideNavDiv.classList.add(\"collapsed\");\n if (sideNavMainContent) {\n sideNavMainContent.classList.add(\"collapsed\");\n }\n if(document.getElementById(\"side-navigation-profile-icon\")){\n document.getElementById(\"side-navigation-profile-icon\").classList.add(\"collapsed\");\n }\n if(document.getElementById(\"log-out-div\")){\n document.getElementById(\"log-out-div\").classList.add(\"collapsed\");\n }\n document.getElementById(\"panel-sticky\")?.classList?.add(\"smaller-sticky-info\");\n if (document.getElementById(\"resources-menu-img\")) {\n document.getElementById(\"resources-menu-img\").classList.add(\"collapsed\");\n }\n if (document.getElementById(\"programs-menu-img\")) {\n document.getElementById(\"programs-menu-img\").classList.add(\"collapsed\");\n }\n document.querySelectorAll(\".st-accordion__list\").forEach(element => {\n element.classList.add(\"collapsed\");\n });\n document.querySelectorAll(\".side-navigation-icon-container\").forEach(element => {\n const divTitle=element.querySelector(\"span\").innerHTML\n element.setAttribute(\"title\", divTitle);\n });\n if (document.getElementById(\"todo-menu-img\")) {\n document.getElementById(\"todo-menu-img\").classList.add(\"collapsed\");\n }\n if (document.getElementById(\"quiz-menu-img\")) {\n document.getElementById(\"quiz-menu-img\").classList.add(\"collapsed\");\n }\n\n aquiferLogoImage.src = aquiferLogoCollapsedImg;\n aquiferLogoImage.style.marginLeft = \"0px\";\n collapseImg.classList.remove('left');\n collapseImg.classList.add('right');\n this.collapseResourceMenu()\n this.collapseProgramsMenu()\n this.collapseTodoMenu()\n this.collapseQuizMenu()\n sessionStorage.setItem('sideNavState', 'collapsed');\n }\n\n toggleResourcesMenu() {\n if (sessionStorage.getItem('sideNavState')!== 'collapsed') {\n const resourcesMenuElements = document.getElementsByClassName(\"resources_content\")\n const resourceArray = Array.from(resourcesMenuElements);\n const hasCollapsed = resourceArray.some(element => element.classList.contains(\"collapsed\"));\n if (hasCollapsed) {\n this.expandResourceMenu();\n } else {\n this.collapseResourceMenu();\n }\n }else{\n this.expandNavigation()\n this.expandResourceMenu()\n }\n }\n\n expandResourceMenu() {\n const resourcesMenuElements = document.getElementsByClassName(\"resources_content\")\n const resourceArray = Array.from(resourcesMenuElements);\n const resourcesMenuImages = document.getElementsByClassName(\"resources-menu-img\")\n const resourcesMenuImagesArray = Array.from(resourcesMenuImages);\n if (resourceArray && resourceArray.length > 0) {\n resourceArray.forEach(element => {\n element.classList.remove(\"collapsed\");\n });\n }\n\n if (resourcesMenuImagesArray && resourcesMenuImagesArray.length > 0) {\n resourcesMenuImagesArray.forEach(element => {\n element.classList.add(\"expanded\");\n });\n }\n sessionStorage.setItem('resourceMenuState', 'expanded');\n }\n\n collapseResourceMenu() {\n const resourcesMenuElements = document.getElementsByClassName(\"resources_content\")\n const resourceArray = Array.from(resourcesMenuElements);\n const resourcesMenuImages = document.getElementsByClassName(\"resources-menu-img\")\n const resourcesMenuImagesArray = Array.from(resourcesMenuImages);\n if (resourceArray && resourceArray.length > 0) {\n resourceArray.forEach(element => {\n element.classList.add(\"collapsed\")\n });\n }\n if (resourcesMenuImagesArray && resourcesMenuImagesArray.length > 0) {\n resourcesMenuImagesArray.forEach(element => {\n element.classList.remove(\"expanded\");\n });\n }\n sessionStorage.setItem('resourceMenuState', 'collapsed');\n }\n\n toggleProgramsMenu() {\n if (sessionStorage.getItem('sideNavState')!== 'collapsed') {\n const programMenuElements = document.getElementsByClassName(\"program_content\")\n const programArray = Array.from(programMenuElements);\n const hasCollapsed = programArray.some(element => element.classList.contains(\"collapsed\"));\n if (hasCollapsed) {\n this.expandProgramsMenu();\n } else {\n this.collapseProgramsMenu();\n }\n }else{\n this.expandNavigation()\n this.expandProgramsMenu()\n }\n }\n\n expandProgramsMenu() {\n const programMenuElements = document.getElementsByClassName(\"program_content\")\n const programArray = Array.from(programMenuElements);\n const programMenuImages = document.getElementsByClassName(\"programs-menu-img\")\n const programMenuImagesArray = Array.from(programMenuImages);\n if (programArray && programArray.length > 0) {\n programArray.forEach(element => {\n element.classList.remove(\"collapsed\");\n });\n }\n if (programMenuImagesArray && programMenuImagesArray.length > 0) {\n programMenuImagesArray.forEach(element => {\n element.classList.add(\"expanded\");\n });\n }\n //sessionStorage.setItem('programMenuState', 'expanded');\n document.cookie = \"programMenuState=expanded; path=/\";\n }\n\n collapseProgramsMenu() {\n const programMenuElements = document.getElementsByClassName(\"program_content\")\n const programArray = Array.from(programMenuElements);\n const programMenuImages = document.getElementsByClassName(\"programs-menu-img\")\n const programMenuImagesArray = Array.from(programMenuImages);\n if (programArray && programArray.length > 0) {\n programArray.forEach(element => {\n element.classList.add(\"collapsed\");\n });\n }\n if (programMenuImagesArray && programMenuImagesArray.length > 0) {\n programMenuImagesArray.forEach(element => {\n element.classList.remove(\"expanded\");\n });\n }\n //sessionStorage.setItem('programMenuState', 'collapsed');\n document.cookie = \"programMenuState=collapsed; path=/\";\n }\n\n toggleSideNavigation() {\n const screenWidth = document.documentElement.clientWidth || document.body.clientWidth || window.innerWidth;\n const featureFlagEnabled = this.data.get(\"featureFlagEnabled\") === \"true\";\n const hideSidebar = this.data.get(\"hideSidebar\") === \"true\";\n const sideNavMainContent = document.getElementById(\"side-nav-main-content\");\n\n if (featureFlagEnabled && !hideSidebar && screenWidth >= 834) {\n this.navigationTarget.style.display = \"none\";\n this.sideNavigationTarget.style.display = \"block\";\n if (sideNavMainContent) {\n sideNavMainContent.classList.remove(\"top-navigation\");\n }\n } else {\n this.navigationTarget.style.display = \"block\";\n this.sideNavigationTarget.style.display = \"none\";\n if (sideNavMainContent) {\n sideNavMainContent.classList.add(\"top-navigation\");\n }\n }\n }\n\n toggleSadndwichBarNavigation(){\n const sideNavDiv = document.getElementById(\"sandwitch-bar-nav-div\");\n sideNavDiv.classList.toggle(\"show\");\n }\n\n toggleQuizMenu() {\n if (sessionStorage.getItem('sideNavState')!== 'collapsed') {\n const elements = document.getElementsByClassName(\"quiz_content\")\n const array = Array.from(elements);\n const hasCollapsed = array.some(e => e.classList.contains(\"collapsed\"));\n if (hasCollapsed) {\n this.expandQuizMenu();\n } else {\n this.collapseQuizMenu();\n }\n }else{\n this.expandNavigation()\n this.expandQuizMenu()\n }\n }\n\n expandQuizMenu() {\n const elements = document.getElementsByClassName(\"quiz_content\")\n const array = Array.from(elements);\n const images = document.getElementsByClassName(\"quiz-menu-img\")\n const imagesArray = Array.from(images);\n if (array && array.length > 0) {\n array.forEach(e => {\n e.classList.remove(\"collapsed\");\n });\n }\n if (imagesArray && imagesArray.length > 0) {\n imagesArray.forEach(e => {\n e.classList.add(\"expanded\");\n });\n }\n sessionStorage.setItem('quizMenuState', 'expanded');\n }\n\n collapseQuizMenu() {\n const elements = document.getElementsByClassName(\"quiz_content\")\n const array = Array.from(elements);\n const images = document.getElementsByClassName(\"quiz-menu-img\")\n const imagesArray = Array.from(images);\n if (array && array.length > 0) {\n array.forEach(e => {\n e.classList.add(\"collapsed\");\n });\n }\n if (imagesArray && imagesArray.length > 0) {\n imagesArray.forEach(e => {\n e.classList.remove(\"expanded\");\n });\n }\n sessionStorage.setItem('quizMenuState', 'collapsed');\n }\n\n toggleTodoMenu(){\n if (sessionStorage.getItem('sideNavState')!== 'collapsed') {\n const todoMenuElements = document.getElementsByClassName(\"todo_content\")\n const todoArray = Array.from(todoMenuElements);\n const hasCollapsed = todoArray.some(element => element.classList.contains(\"collapsed\"));\n if (hasCollapsed) {\n this.expandTodoMenu();\n } else {\n this.collapseTodoMenu();\n }\n }else{\n this.expandNavigation()\n this.expandTodoMenu()\n }\n }\n\n expandTodoMenu() {\n const todoMenuElements = document.getElementsByClassName(\"todo_content\")\n const todoArray = Array.from(todoMenuElements);\n const todoMenuImages = document.getElementsByClassName(\"todo-menu-img\")\n const todoMenuImagesArray = Array.from(todoMenuImages);\n if (todoArray && todoArray.length > 0) {\n todoArray.forEach(element => {\n element.classList.remove(\"collapsed\");\n });\n }\n\n if (todoMenuImagesArray && todoMenuImagesArray.length > 0) {\n todoMenuImagesArray.forEach(element => {\n element.classList.add(\"expanded\");\n });\n }\n sessionStorage.setItem('todoMenuState', 'expanded');\n }\n\n collapseTodoMenu() {\n const todoMenuElements = document.getElementsByClassName(\"todo_content\")\n const todoArray = Array.from(todoMenuElements);\n const todoMenuImages = document.getElementsByClassName(\"todo-menu-img\")\n const todoMenuImagesArray = Array.from(todoMenuImages);\n if (todoArray && todoArray.length > 0) {\n todoArray.forEach(element => {\n element.classList.add(\"collapsed\")\n });\n }\n if (todoMenuImagesArray && todoMenuImagesArray.length > 0) {\n todoMenuImagesArray.forEach(element => {\n element.classList.remove(\"expanded\");\n });\n }\n sessionStorage.setItem('todoMenuState', 'collapsed');\n }\n\n handleKeypressToggleNavigation(event){\n if (event.keyCode === 13) {\n event.preventDefault(); // Prevent the default action\n this.toggleNavigation(); // Call the same method as the click action\n }\n }\n\n handleKeypressToggleTodoMenu(event){\n if (event.keyCode === 13) {\n event.preventDefault(); // Prevent the default action\n this.toggleTodoMenu(); // Call the same method as the click action\n }\n }\n\n handleKeypressToggleQuizMenu(event){\n if (event.keyCode === 13) {\n event.preventDefault(); // Prevent the default action\n this.toggleQuizMenu(); // Call the same method as the click action\n }\n }\n\n handleKeypressToggleResourcesMenu(event){\n if (event.keyCode === 13) {\n event.preventDefault(); // Prevent the default action\n this.toggleResourcesMenu(); // Call the same method as the click action\n }\n }\n\n handleKeypressToggleProgramsMenu(event){\n if (event.keyCode === 13) {\n event.preventDefault(); // Prevent the default action\n this.toggleProgramsMenu(); // Call the same method as the click action\n }\n }\n\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport createChannel from '../cable';\n\n// Connects to data-controller=\"single-cohort-report\"\nexport default class extends Controller {\n static targets = ['report', 'reportProgress', 'reportProgressBar', 'thankYouMessage', 'hours', 'minutes', 'seconds'];\n\n connect() {\n this.startTimer();\n\n var requestId = this.data.get('request');\n if (!window.location.search.includes('request_id=')) {\n var newUrl = window.location.href + (window.location.search ? '&' : '?') + 'request_id=' + requestId;\n window.history.replaceState({}, '', newUrl);\n }\n\n var jobId = this.data.get('job');\n if (!window.location.search.includes('job_id=')) {\n var newUrl = window.location.href + (window.location.search ? '&' : '?') + 'job_id=' + jobId;\n window.history.replaceState({}, '', newUrl);\n }\n\n let thisController = this;\n\n const progressChannel = createChannel({ channel: 'ReportProgressNotifierChannel', request_id: this.data.get('request') }, {\n received({ progress }) {\n console.log(\"Received data in ReportProgressNotifierChannel\");\n\n if (progress === 100) {\n if (thisController.hasReportProgressBarTarget) {\n thisController.reportProgressBarTarget.style.display = 'none';\n }\n\n if (thisController.hasThankYouMessageTarget) {\n thisController.thankYouMessageTarget.style.display = 'block';\n thisController.thankYouMessageTarget.innerHTML = \"Thank you! Report generation completed.\";\n }\n\n const generatingMessage = document.querySelector('.mt-3');\n if (generatingMessage) {\n generatingMessage.style.display = 'none';\n }\n\n const progressBar = document.querySelector('.progress-outer');\n if (progressBar) {\n progressBar.style.display = 'none';\n }\n \n } else {\n if (thisController.hasReportProgressBarTarget) {\n thisController.reportProgressBarTarget.style.width = `${progress}%`;\n thisController.reportProgressBarTarget.setAttribute('aria-valuenow', progress);\n thisController.reportProgressBarTarget.innerHTML = `${progress}%`;\n } else {\n console.error(\"Report progress bar target is not defined.\");\n }\n }\n }\n });\n\n const cohortChannel = createChannel({ channel: 'CohortReportChannel', request_id: this.data.get('request') }, {\n received({ report, complete }) {\n console.log(\"Received data from CohortReportChannel\");\n thisController.reportTarget.innerHTML = report;\n\n if (complete) {\n thisController.removeIdsFromUrl();\n cohortChannel.unsubscribe();\n progressChannel.unsubscribe();\n \n thisController.disconnectChannels(cohortChannel, progressChannel);\n console.log(\"Report generation complete. Unsubscribing and disconnecting from channels.\");\n }\n },\n });\n }\n\n startTimer() {\n let totalSeconds = 0;\n this.timerInterval = setInterval(() => {\n totalSeconds++;\n this.updateTimer(totalSeconds);\n }, 1000);\n }\n\n updateTimer(totalSeconds) {\n const hours = Math.floor(totalSeconds / 3600);\n const minutes = Math.floor((totalSeconds % 3600) / 60);\n const seconds = totalSeconds % 60;\n\n this.hoursTarget.innerHTML = this.pad(hours);\n this.minutesTarget.innerHTML = this.pad(minutes);\n this.secondsTarget.innerHTML = this.pad(seconds);\n }\n\n pad(val) {\n return val.toString().padStart(2, '0');\n }\n\n removeIdsFromUrl() {\n const currentUrl = new URL(window.location.href);\n currentUrl.searchParams.delete('job_id');\n currentUrl.searchParams.delete('request_id');\n window.history.replaceState({}, '', currentUrl.toString());\n }\n\n disconnectChannels(cohortChannel, progressChannel) {\n cohortChannel.consumer.disconnect();\n progressChannel.consumer.disconnect();\n clearInterval(this.timerInterval);\n }\n}\n","import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n static targets = ['slide'];\n\n get maxIndex() {\n if (this.hasSlideTarget) {\n return this.slideTargets.length - 1;\n }\n return 0;\n }\n\n scrollToNext() {\n if (this.maxIndex === 0) {\n return;\n }\n for (const slide of this.slideTargets) {\n if (slide.dataset.position === 'current') {\n slide.dataset.position = '';\n }\n if (slide.dataset.position === 'next') {\n slide.dataset.position = 'current';\n slide.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'center',\n });\n const current = parseInt(slide.dataset.index);\n if (current === this.maxIndex) {\n this.slideTargets.find((st) => {\n return parseInt(st.dataset.index) === 0;\n }).dataset.position = 'next';\n } else {\n this.slideTargets.find((st) => {\n return parseInt(st.dataset.index) === current + 1;\n }).dataset.position = 'next';\n }\n break;\n }\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"form\"\nexport default class extends Controller {\n static targets = [ \"sort-columns\" ]\n\n showLoader() {\n const loader = document.getElementById('content-summary-loader');\n if (loader) {\n loader.style.display = 'block';\n }\n const loaderMobile = document.getElementById('content-summary-loader-mobile');\n if (loaderMobile) {\n loaderMobile.style.display = 'block';\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"form\", \"error\", \"checkbox\", \"submit\", \"othersCheckbox\", \"othersTextField\"]\n\n submit(event) {\n const isChecked = this.checkboxTargets.some(checkbox => checkbox.checked);\n\n if (!isChecked && !this.othersCheckboxTarget.checked) {\n event.preventDefault();\n this.errorTarget.classList.remove('hidden');\n this.submitTarget.disabled = true; // Disable the submit button\n } else {\n this.errorTarget.classList.add('hidden');\n // Add \"Others:\" prefix if the others checkbox is checked\n if (this.othersCheckboxTarget.checked) {\n this.othersTextFieldTarget.value = `Others: ${this.othersTextFieldTarget.value}`;\n }\n }\n }\n\n change() {\n const isChecked = this.checkboxTargets.some(checkbox => checkbox.checked);\n\n if (isChecked || this.othersCheckboxTarget.checked) {\n this.errorTarget.classList.add('hidden');\n this.submitTarget.disabled = false; // Enable the submit button\n }\n\n // Enable or disable the others text field\n if (this.othersCheckboxTarget.checked) {\n this.othersTextFieldTarget.disabled = false;\n } else {\n this.othersTextFieldTarget.disabled = true;\n this.othersTextFieldTarget.value = ''; // Clear the text field when disabled\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"topBar\", \"navWrapper\"];\n\n get navWrapperHeight() {\n const nav = document.querySelector(\"#top-navigation-bar\");\n const screenWidth = document.documentElement.clientWidth || document.body.clientWidth || window.innerWidth;\n\n if ( window.devicePixelRatio >= 2 && screenWidth <= 767) {\n return 0\n }\n\n return nav?.offsetHeight || 0;\n }\n\n get topBarHeight() { return this.topBarTarget.offsetHeight; }\n\n get docBodyWrapper() { return document.querySelector(\"#doc-body-wrapper\"); }\n\n connect() {\n this.lastScrollTop = 0;\n this.delta = 5;\n\n new ResizeObserver(() => {\n this.handleResize();\n }).observe(document.body);\n\n window.addEventListener(\"scroll\", this.handleScroll.bind(this));\n }\n\n handleScroll() {\n const currentScroll = window.scrollY;\n\n // Check scroll direction\n if (Math.abs(this.lastScrollTop - currentScroll) <= this.delta) return;\n\n if (currentScroll > this.lastScrollTop) {\n // Scrolling down\n if (currentScroll > this.topBarHeight) {\n this.topBarTarget.style.top = `-${this.topBarHeight}px`;\n }\n } else {\n // Scrolling up\n this.topBarTarget.style.transition = \"top 0.3s ease-in-out\";\n this.topBarTarget.style.top = `${this.navWrapperHeight}px`;\n }\n\n this.lastScrollTop = currentScroll;\n }\n\n handleResize() {\n this.topBarTarget.style.top = `${this.navWrapperHeight}px`;\n }\n}","import { Controller } from \"@hotwired/stimulus\"\nimport * as React from 'react'\nimport { createRoot } from \"react-dom/client\";\nimport StudentLearningProgressTable from \"../src/react/components/Assessment/Reports/StudentLearningProgressTable\";\n\n// Connects to data-controller=\"student-learning-progress-table\"\nexport default class extends Controller {\n static targets = [\"progressTable\"];\n\n connect() {\n let reportData = JSON.parse(this.element.dataset.reportData);\n createRoot(this.progressTableTarget).render();\n }\n}\n","import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n static targets = [\"div\"];\n\n connect() {\n setTimeout(() => {\n this.fadeOut();\n }, 3000);\n }\n\n fadeOut() {\n this.divTarget.style.transition = \"opacity 1s\";\n this.divTarget.style.opacity = \"0\";\n setTimeout(() => {\n this.divTarget.style.display = \"none\";\n }, 1000);\n }\n}","import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n static targets = [\"text\", \"button\", \"checkbox\", \"label\", \"field\", \"confidence\", \"submit\", \"reset\"];\n\n connect() {\n let targetedNode = this.element.getElementsByClassName(\"text-highlight\");\n if (targetedNode.length > 0 && targetedNode[0]) {\n targetedNode[0].addEventListener(\n \"mouseup\",\n this.highlightSelectedText.bind(this)\n );\n }\n }\n\n toggleCheckbox(event) {\n const button = event.currentTarget;\n const checkbox = this.checkboxTargets.find(checkbox => checkbox.value == button.dataset.index);\n const label = this.textTargets.find(text => text.dataset.id == button.dataset.index);\n\n if (checkbox) {\n checkbox.checked = !checkbox.checked;\n\n // Add or remove the strikethrough class from the label\n if (checkbox.checked) {\n label.classList.add('strikethrough');\n } else {\n label.classList.remove('strikethrough');\n }\n }\n }\n\n strikeThrough(e) {\n const targetId =\n e.target.dataset.targetId || e.target.parentElement.dataset.targetId;\n const textTarget = this.textTargets.find((d) => {\n return d.dataset.id == targetId;\n });\n\n textTarget.classList.toggle(\"strike-through\");\n if (e.target.nodeName == \"BUTTON\") {\n e.target.classList.toggle(\"struck\");\n } else {\n e.target.parentElement.classList.toggle(\"struck\");\n }\n this.toggleCheckbox(e);\n }\n\n highlightText(range, className, color) {\n var commonAncestor = range.commonAncestorContainer;\n if (commonAncestor.nodeType !== 1) {\n commonAncestor = commonAncestor.parentNode;\n }\n if (commonAncestor.classList.contains(className)) {\n var span = document.createElement(\"span\");\n span.style.backgroundColor = color; // Use quotes for color names\n span.appendChild(range.extractContents());\n range.insertNode(span);\n } else {\n // Ensure that only text within the selected range is highlighted\n var startContainer = range.startContainer;\n var endContainer = range.endContainer;\n // If the range is within a single text node\n if (startContainer === endContainer && startContainer.nodeType === Node.TEXT_NODE) {\n // Create a new span to apply the highlight\n var highlightSpan = document.createElement(\"span\");\n highlightSpan.className = className;\n var selectedText = range.extractContents();\n highlightSpan.appendChild(selectedText);\n range.insertNode(highlightSpan);\n } else {\n // If the selection spans multiple nodes, we need to handle each node individually\n var nodes = [];\n\n // Get all text nodes within the selected range\n var iterator = document.createNodeIterator(range.commonAncestorContainer, NodeFilter.SHOW_TEXT, {\n acceptNode: function (node) {\n var nodeRange = document.createRange();\n nodeRange.selectNodeContents(node);\n return (range.compareBoundaryPoints(Range.END_TO_START, nodeRange) < 0 &&\n range.compareBoundaryPoints(Range.START_TO_END, nodeRange) > 0) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n }\n });\n\n // Iterate through all the selected nodes and apply highlight\n var currentNode;\n while (currentNode = iterator.nextNode()) {\n nodes.push(currentNode);\n }\n\n nodes.forEach(function (node) {\n var span = document.createElement(\"span\");\n span.className = className;\n\n // Extract only the part of the node that falls within the selected range\n var textRange = document.createRange();\n textRange.selectNodeContents(node);\n\n // Constrain the range to the selected boundaries\n if (node === startContainer) {\n textRange.setStart(node, range.startOffset);\n }\n if (node === endContainer) {\n textRange.setEnd(node, range.endOffset);\n }\n\n span.appendChild(textRange.extractContents());\n textRange.insertNode(span);\n });\n\n // Adjust the range to prevent extending beyond the selected text\n if (nodes.length > 1) {\n range.setStartBefore(nodes[1]);\n } else {\n range.setStartBefore(nodes[0]);\n }\n range.setEndAfter(nodes[nodes.length - 1]);\n }\n }\n }\n\n highlightSelectedText() {\n var selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n var range = selection.getRangeAt(0);\n var selectedText = range.toString();\n if (selectedText !== \"\") {\n if (document.body.contains(document.querySelector(\".dark\"))) {\n this.highlightText(range, \"highlighted-black\", \"#002462\");\n } else {\n this.highlightText(range, \"highlighted\", \"white\");\n }\n }\n }\n }\n\n openTodoModal(e) {\n fetch(e.target.dataset.url)\n .then (response => response.text())\n .then(html => Turbo.renderStreamMessage(html))\n .then(document.getElementById('todo_form_container').classList.remove(\"hidden\"));\n }\n\n openResetModal() {\n this.resetTarget.classList.remove('hidden');\n }\n\n hideResetModal() {\n this.resetTarget.classList.add('hidden');\n }\n\n toggleDropdown() {\n if (window.innerWidth < 991) {\n const sidebar = document.querySelector('.quiz-sidebar')\n sidebar.classList.toggle('active')\n document.querySelector('.mobile-chevron')?.classList.toggle('rotate')\n }\n }\n\n keyPressToggleDropdown(event){\n if(event.key === \"Enter\") {\n this.toggleDropdown()\n }\n }\n\n openSaveQuizTodoModal(event){\n event.preventDefault();\n document.getElementById(\"save_quiz_todo_modal\").classList.remove(\"hidden\");\n document.getElementById(\"quiz_id\").value = event.currentTarget.dataset.quizId;\n let selectElement = document.getElementsByClassName(\"select-list-save-quiz-todo-modal\")[0];\n selectElement.focus();\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [ \"trigger\", \"modalsContainer\"];\n\n open(e) {\n e.preventDefault();\n e.stopImmediatePropagation();\n const modal = this.modalsContainerTarget.querySelector(`#${e.target.id.replace('to_do_trigger_', 'to_do_modal_')}`);\n modal.classList.remove(\"hidden\");\n }\n\n openTodoModal(e) {\n fetch(e.currentTarget.dataset.url)\n .then (response => response.text())\n .then(html => Turbo.renderStreamMessage(html))\n .then(document.getElementById('todo_form_container').classList.remove(\"hidden\"));\n }\n\n close(e) {\n e.target.closest(\".gen-modal.to-do-modal\").classList.add(\"hidden\");\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"todoListCheckboxes\", \"checkbox\", \"heading\", \"selectLists\", \"formSubmit\", \"errorContainer\", \"noCheckbox\"];\n\n connect() {\n if(this.noCheckboxTarget.dataset.persisted != 'true') {\n const checkbox = document.getElementById('todoListCheckboxes-0').querySelector(\"label[for='My To-Dos']\").previousElementSibling\n checkbox.checked = true;\n }\n\n this.updateCheckboxes('todo-form.listCheckboxes-0', 'heading-0');\n this.updateCheckboxes('todo-form.listCheckboxes-1', 'heading-1');\n this.updateCheckboxes('todo-form.listCheckboxes-2', 'heading-2');\n document.addEventListener(\"click\", this.handleClickOutside.bind(this));\n document.addEventListener('keydown', this.listenKeyTaps.bind(this));\n document.getElementById(\"todo-input-fields-0\").focus();\n\n [0, 1, 2].forEach(index => {\n const checkboxElement = this.targets.find('item-checkbox-' + index);\n\n if (checkboxElement && !checkboxElement.children[1].checked) {\n const elements = document.getElementsByClassName(checkboxElement.children[1].dataset.target);\n Array.from(elements).forEach ( element => element.classList.add('disabled') );\n }\n });\n }\n\n toggleTodoListCheckboxes(event) {\n event.preventDefault();\n event.stopPropagation();\n\n const todoListCheckboxes = document.getElementById(event.currentTarget.dataset.target);\n todoListCheckboxes.classList.toggle('hidden');\n\n const element = document.getElementById(event.currentTarget.dataset.icon);\n\n if(todoListCheckboxes.classList.contains('hidden')) {\n element.classList.remove('expanded');\n } else {\n element.classList.add('expanded');\n }\n } \n\n updateSelectedLists(event) {\n this.updateCheckboxes(event.target.dataset.target, event.currentTarget.dataset.heading, event.currentTarget.dataset.dropdown, event)\n }\n\n toggleInputFields(event) {\n const elements = document.getElementsByClassName(event.target.dataset.target);\n\n if(event.target.checked) {\n Array.from(elements).forEach ( element => element.classList.remove('disabled') );\n } else {\n Array.from(elements).forEach ( element => element.classList.add('disabled') );\n }\n\n if(event.target.checked && this.targets.find(event.target.dataset.heading).textContent == 'Select list') {\n const myTodoCheckbox = document.getElementById(event.target.dataset.checkboxContainer).querySelector(\"label[for='My To-Dos']\")?.previousElementSibling\n if(myTodoCheckbox) {\n myTodoCheckbox.checked = true;\n this.updateCheckboxes(myTodoCheckbox.dataset.target, event.currentTarget.dataset.heading, event.currentTarget.dataset.dropdown);\n }\n }\n }\n\n updateCheckboxes(checkboxSelector, headingSelector, dropdownSelector, event) {\n const checkboxes = document.querySelectorAll(`[data-target=\"${checkboxSelector}\"]`);\n\n if(checkboxes.length > 0) {\n let selectedNames = Array.from(checkboxes).filter(checkbox => checkbox.checked)\n .map(checkbox => checkbox.nextElementSibling.textContent.trim())\n .join(\", \");\n selectedNames = selectedNames.replace(\", Create new list\", '')\n\n if(event && event.target.id.includes(\"new_todo_list_name\")) {\n selectedNames = selectedNames + event.target.value;\n }\n\n if(selectedNames.length >= 0 && dropdownSelector) {\n this.targets.find(dropdownSelector).classList.remove('dropdown-error');\n }\n\n this.targets.find(headingSelector).textContent = selectedNames || \"Select list\";\n }\n }\n\n hideTodoModal(e) {\n document.getElementById('todo_form_container').classList.add(\"hidden\");\n document.getElementById('todoURLButton')?.focus();\n }\n\n handleClickOutside(event) {\n [0, 1, 2].forEach(index => {\n const element = document.getElementById('todoListCheckboxes-' + index);\n if (element && !element.classList.contains(\"hidden\") && !element.contains(event.target)) {\n element.classList.add(\"hidden\");\n }\n });\n }\n\n submitTodoForm(e) {\n this.errorContainerTarget.classList.add('hidden');\n let errors = false;\n let checked = false;\n\n [0, 1, 2].forEach(index => {\n const element = this.targets.find('item-checkbox-' + index);\n const dropdown = this.targets.find('dropdown-' + index);\n\n if(element && element.children[1].checked) {\n checked = true;\n\n if(this.targets.find('heading-' + index).textContent == 'Select list') {\n errors = true;\n dropdown.classList.add('dropdown-error');\n }\n }\n })\n\n if(errors || !checked) {\n e.preventDefault();\n if(!checked) {\n this.errorContainerTarget.classList.remove('hidden');\n this.errorContainerTarget.innerHTML = \"Select at least one to-do item to proceed.\";\n }\n } else {\n this.hideTodoModal();\n }\n }\n\n listenKeyTaps(event) {\n if (event.key === 'Escape' || event.key === 'Esc' || event.keyCode === 27) {\n this.hideTodoModal();\n }\n if (event.key === 'Enter' || event.keyCode === 13) {\n this.formSubmitTarget.click();\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [ \"dropdownImage\", \"createListModal\", \"createListModalError\", \"resetTodoModal\", \"removeFromListTodoModal\"]\n\n connect() {\n this.handleKeydown = this.handleKeydown.bind(this);\n document.addEventListener('keydown', this.handleKeydown);\n }\n\n disconnect() {\n document.removeEventListener('keydown', this.handleKeydown);\n }\n\n handleKeydown(event) {\n if (this.hasResetTodoModalTarget && !this.resetTodoModalTarget.classList.contains('hidden')) {\n this.handleModalKeydown(event, this.resetTodoModalTarget, 'hideResetTodoModal');\n }\n if (this.hasRemoveFromListTodoModalTarget && !this.removeFromListTodoModalTarget.classList.contains('hidden')) {\n this.handleModalKeydown(event, this.removeFromListTodoModalTarget, 'hideRemoveFromListTodoModal');\n }\n if (this.hasCreateListModalTarget && !this.createListModalTarget.classList.contains('hidden')) {\n this.handleModalKeydown(event, this.createListModalTarget, 'hideCreateListModal');\n }\n }\n\n handleModalKeydown(event, modal, hideModalMethod) {\n let submitButton = modal.querySelector('input[type=\"submit\"]');\n let cancelButton = modal.querySelector('.cancel-button-class');\n\n if (event.key === 'Enter') {\n // Trigger the submit button click event\n submitButton.click();\n } else if (event.key === 'Escape') {\n // Trigger the cancel button click event\n this[hideModalMethod](event);\n }\n }\n\n toggleTodoListDropdown(){\n const todoListDropdownDiv = document.getElementById(\"todo-list-dropdown-div\");\n todoListDropdownDiv.classList.toggle(\"show\");\n this.dropdownImageTarget.classList.toggle(\"rotated\");\n }\n\n openCreateListModal(e){\n e.preventDefault();\n e.stopImmediatePropagation();\n\n this.createListModalTarget.classList.remove(\"hidden\");\n document.getElementById('title').focus();\n }\n\n submitCreateListModal(e){\n if (document.getElementById(\"title\").value!==\"\"){\n this.createListModalTarget.classList.add(\"hidden\");\n }else{\n e.preventDefault();\n e.stopImmediatePropagation();\n this.createListModalErrorTarget.textContent = \"Please enter a name of the list\";\n }\n }\n\n hideCreateListModal(e){\n this.createListModalTarget.classList.add(\"hidden\");\n }\n\n openResetTodoModal(e){\n e.preventDefault();\n e.stopImmediatePropagation();\n this.resetTodoModalTarget.classList.remove(\"hidden\");\n }\n\n hideResetTodoModal(e){\n this.resetTodoModalTarget.classList.add(\"hidden\");\n }\n\n updateMoreActionDetails(event) {\n const checkboxesArray = document.getElementsByName(\"todo_checkboxes\");\n const checkedCheckboxes = Array.from(checkboxesArray).filter(checkbox => checkbox.checked);\n \n const todoIds = checkedCheckboxes.map(checkbox => checkbox.dataset.todoId).join(',');\n const documentTitles = checkedCheckboxes.map(checkbox => checkbox.dataset.documentTitle);\n\n \n if(document.getElementById('todo-items-name-reset-modal')){\n let todoItems= document.getElementById('todo-items-name-reset-modal');\n todoItems.innerHTML = '';\n documentTitles.forEach(title => {\n let li = document.createElement('li');\n li.textContent = title;\n li.style.listStyleType = 'disc';\n todoItems.appendChild(li);\n });\n }\n\n if(document.getElementById('todo_items_checkbox_values')){\n document.getElementById('todo_items_checkbox_values').value = todoIds;\n }\n\n if(document.getElementById('todo_items_remove_checkbox_values')){\n document.getElementById('todo_items_remove_checkbox_values').value = todoIds;\n }\n \n if(document.getElementById('todo_items_move_to_another_list_values')){\n document.getElementById('todo_items_move_to_another_list_values').value = todoIds;\n }\n\n if(document.getElementById('todo-items-name-remove-from-list-modal')){\n let todoItemsRemove= document.getElementById('todo-items-name-remove-from-list-modal');\n todoItemsRemove.innerHTML = '';\n documentTitles.forEach(title => {\n let liTodoItem = document.createElement('li');\n liTodoItem.textContent = title;\n liTodoItem.style.listStyleType = 'disc';\n todoItemsRemove.appendChild(liTodoItem);\n });\n }\n }\n\n openRemoveFromListTodoModal(e){\n e.preventDefault();\n e.stopImmediatePropagation();\n this.removeFromListTodoModalTarget.classList.remove(\"hidden\");\n }\n\n hideRemoveFromListTodoModal(e){\n this.removeFromListTodoModalTarget.classList.add(\"hidden\");\n }\n\n handleKeypressToggleTodoListDropdown(event) {\n // Check if the key pressed is Enter\n if (event.keyCode === 13) {\n event.preventDefault(); // Prevent the default action\n this.toggleTodoListDropdown();\n }\n }\n\n checkEnterFilterKey(event) {\n if (event.keyCode === 13) { // 13 is the key code for Enter\n event.preventDefault(); // Prevent the default action (form submission)\n const checkboxId = event.target.getAttribute('for'); // Get the id of the checkbox associated with the label\n const checkbox = document.getElementById(checkboxId); // Get the checkbox element\n checkbox.click();\n }\n }\n\n handleKeypressCheckbox(event) {\n if (event.keyCode === 13) { // 13 is the key code for Enter\n event.preventDefault(); // Prevent the default action (form submission)\n event.target.click(); \n }\n }\n\n toggleTodoListFiltersAccordion(event) {\n let cookies = document.cookie.split('; ');\n let cookie = cookies.find(row => row.startsWith('todoListFiltersAccordion='));\n \n if(cookie === undefined || cookie.split('=')[1] === \"false\") {\n document.cookie = \"todoListFiltersAccordion=true; path=/\";\n }else{\n document.cookie = \"todoListFiltersAccordion=false; path=/\";\n }\n }\n}","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n\n get csrfToken() {\n return document.querySelector('meta[name=\"csrf-token\"]').content;\n }\n\n request(e) {\n e.preventDefault();\n if (!e.currentTarget.dataset.url) return;\n fetch(e.currentTarget.dataset.url, {\n headers: {\n Accept: \"text/vnd.turbo-stream.html\",\n \"X-CSRF-Token\": this.csrfToken\n }\n }).then(response => response.text())\n .then(html => Turbo.renderStreamMessage(html));\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n showNextDropdown(ev){\n let selectedOption = ev.target.selectedOptions[0].value\n if(ev.params.npWorkflow || [\"Resident\", \"Fellowship\", \"Practicing clinician\"].includes(selectedOption)){\n this.showSpecialityDropdown()\n this.hideClerkshipRotationCourseDropdown()\n if (ev.params.npWorkflow && ![\"Resident\", \"Fellowship\", \"Practicing clinician\"].includes(selectedOption)){\n this.showDateFields()\n }else{\n this.hideDateFields()\n }\n }else{\n this.hideSpecialityDropdown()\n this.showClerkshipRotationCourseDropdown()\n this.showDateFields()\n }\n this.showOtherTextBox(ev)\n }\n\n showOtherTextBox(ev){\n let selectedOption = ev.target.selectedOptions[0].value\n if([\"Basic Science\",\"Pre-clerkship/didactic course\",\"Sub-I/Advanced Internship\",\"Elective\",\"Other\"].includes(selectedOption)){\n document.getElementById(ev.params.otherTextbox).style.display = 'block'\n document.getElementById(ev.params.otherTextbox).setAttribute(\"required\", \"true\")\n }else{\n document.getElementById(ev.params.otherTextbox).style.display = 'none'\n document.getElementById(ev.params.otherTextbox).removeAttribute(\"required\", \"true\")\n }\n }\n\n showDateFields(){\n document.getElementById(\"start-date-div\").style.display = 'block';\n document.getElementById(\"end-date-div\").style.display = 'block';\n document.getElementById(\"graduation-day-div\").style.display = 'block';\n document.getElementById(\"start-date-label\").classList.add(\"required\");\n document.getElementById(\"end-date-label\").classList.add(\"required\");\n document.getElementById(\"graduation-day-label\").classList.add(\"required\");\n document.getElementById(\"registration_form_start_date\").setAttribute(\"required\", \"true\")\n document.getElementById(\"registration_form_end_date\").setAttribute(\"required\", \"true\")\n document.getElementById(\"registration_form_graduation_day\").setAttribute(\"required\", \"true\")\n document.getElementById(\"learning-journey-div\").classList.add(\"learning-journey\")\n document.getElementById(\"divider\").style.display = 'block'\n }\n\n hideDateFields(){\n document.getElementById(\"start-date-div\").style.display = 'none';\n document.getElementById(\"end-date-div\").style.display = 'none';\n document.getElementById(\"graduation-day-div\").style.display = 'none';\n document.getElementById(\"registration_form_start_date\").removeAttribute(\"required\", \"true\")\n document.getElementById(\"registration_form_end_date\").removeAttribute(\"required\", \"true\")\n document.getElementById(\"registration_form_graduation_day\").removeAttribute(\"required\", \"true\")\n document.getElementById(\"registration_form_start_date\").value=\"\"\n document.getElementById(\"registration_form_end_date\").value=\"\"\n document.getElementById(\"learning-journey-div\").classList.remove(\"learning-journey\")\n document.getElementById(\"divider\").style.display = 'none'\n }\n\n showSpecialityDropdown(){\n document.getElementById(\"speciality-div\").style.display = 'block';\n document.getElementById(\"speciality-label\").classList.add(\"required\");\n document.getElementById(\"registration_form_specialty_main\").setAttribute(\"required\", \"required\")\n }\n\n hideSpecialityDropdown() {\n document.getElementById(\"speciality-div\").style.display = 'none';\n document.getElementById(\"registration_form_specialty_main\").removeAttribute(\"required\", \"required\")\n document.getElementById(\"registration_form_specialty_main\").value=\"\"\n document.getElementById(\"specialty-other-box\").value=\"\"\n }\n\n showClerkshipRotationCourseDropdown(){\n document.getElementById(\"clerkship-rotation-course-div\").style.display = 'block';\n document.getElementById(\"clerkship-rotation-course-label\").classList.add(\"required\");\n document.getElementById(\"registration_form_clerkship_rotation_course_main\").setAttribute(\"required\", \"required\")\n }\n\n hideClerkshipRotationCourseDropdown(){\n document.getElementById(\"clerkship-rotation-course-div\").style.display = 'none';\n document.getElementById(\"registration_form_clerkship_rotation_course_main\").removeAttribute(\"required\", \"required\")\n document.getElementById(\"registration_form_clerkship_rotation_course_main\").value=\"\"\n document.getElementById(\"clerkship-rotation-course-other-box\").value=\"\"\n }\n\n validateDateFields(event){\n if(document.getElementById(\"educator-field-div\").style.display == 'block') {\n this.validateCheckboxes()\n }\n let startDate = document.getElementById(\"registration_form_start_date\").value;\n if (startDate) {\n if (!this.isValidDate(startDate)) {\n alert(\"Please enter a valid start date in the format MM-DD-YYYY.\");\n event.preventDefault();\n return;\n }\n }\n\n let endDate = document.getElementById(\"registration_form_end_date\").value;\n if (endDate) {\n if (!this.isValidDate(endDate)) {\n alert(\"Please enter a valid end date in the format MM-DD-YYYY.\");\n event.preventDefault();\n return;\n }\n }\n\n if (startDate && endDate) {\n let start = new Date(startDate);\n let end = new Date(endDate);\n \n if (end <= start) {\n alert(\"Please select an end date that is after the start date.\");\n event.preventDefault();\n return;\n }\n }\n\n let graduationDate = document.getElementById(\"registration_form_graduation_day\");\n if (graduationDate && graduationDate.value) {\n if (!this.isValidDate(graduationDate.value)) {\n alert(\"Please enter a valid graduation date in the format MM-DD-YYYY.\");\n event.preventDefault();\n }\n }\n }\n\n isValidDate(dateString) {\n let regex = /^\\d{2}-\\d{2}-\\d{4}$/;\n\n if (!regex.test(dateString)) {\n return false;\n }\n\n let parts = dateString.split('-');\n let year = parseInt(parts[2], 10);\n let month = parseInt(parts[0], 10);\n let day = parseInt(parts[1], 10);\n if (year < 1000 || year > 9999 || month < 1 || month > 12 || day < 1 || day > 31){\n return false; // Invalid year, month, or day\n }\n return true;\n }\n\n showProgramNameDropdown(ev){\n this.showOtherTextBox(ev)\n let selectedOption = ev.target.selectedOptions[0].value\n let newOptions = []\n const dropdown = document.getElementById(\"registration_form_program_name_main\")\n dropdown.innerHTML = ''\n if(selectedOption == \"MD\") {\n newOptions = ev.params.mdPrograms\n }else if(selectedOption == \"DO\"){\n newOptions = ev.params.doPrograms\n }else if(selectedOption == \"PA\"){\n newOptions = ev.params.paPrograms\n }else if(selectedOption == \"NP/DNP/Nursing\") {\n newOptions = ev.params.npPrograms\n }else{\n newOptions = ev.params.allPrograms\n }\n newOptions.forEach(optionData => {\n const option = document.createElement(\"option\")\n option.value = optionData\n option.textContent = optionData\n dropdown.appendChild(option)\n });\n document.getElementById(\"program-name-div\").style.display = 'block';\n document.getElementById(\"program-name-label\").classList.add(\"required\");\n document.getElementById(\"registration_form_program_name_main\").setAttribute(\"required\", \"required\")\n if(ev.params.indSubWorkflow) {\n this.indSubWorkflow(ev)\n }\n }\n\n changedProfileRole(ev){\n if(ev.params.indSubWorkflow) {\n this.indSubWorkflow(ev)\n }\n document.getElementById(\"profile-role-title-box\").value=\"\"\n }\n\n showLearningStageDropdown(){\n document.getElementById(\"learning-stage-div\").style.display = 'block';\n document.getElementById(\"learning-stage-label\").classList.add(\"required\");\n document.getElementById(\"registration_form_learning_stage_main\").setAttribute(\"required\", \"required\")\n }\n\n hideLearningStageDropdown() {\n document.getElementById(\"learning-stage-div\").style.display = 'none';\n document.getElementById(\"registration_form_learning_stage_main\").removeAttribute(\"required\", \"required\")\n document.getElementById(\"registration_form_learning_stage_main\").value=\"\"\n document.getElementById(\"learning-stage-other-box\").value=\"\"\n }\n\n showEducatorFields(){\n document.getElementById(\"educator-field-div\").style.display = 'block';\n }\n\n hideEducatorFields(){\n document.getElementById(\"educator-field-div\").style.display = 'none';\n document.getElementById(\"work-with-learners-in\").\n querySelectorAll('input[type=checkbox]').forEach(function(checkbox) {\n checkbox.checked = false;\n });\n\n document.getElementById(\"work-with-students-in\").\n querySelectorAll('input[type=checkbox]').forEach(function (checkbox) {\n checkbox.checked = false;\n });\n\n document.getElementById(\"primary-clinical-discipline\").\n querySelectorAll('input[type=checkbox]').forEach(function (checkbox) {\n checkbox.checked = false;\n });\n\n document.getElementById(\"interests\").\n querySelectorAll('input[type=checkbox]').forEach(function (checkbox) {\n checkbox.checked = false;\n });\n }\n\n indSubWorkflow(ev){\n this.hideDateFields()\n this.hideClerkshipRotationCourseDropdown()\n let selectedRoleEl = document.getElementById(\"registration_form_profile_role\")\n let selectedRole = selectedRoleEl && selectedRoleEl.selectedOptions[0].value\n let selectedProgramType = document.getElementById(\"registration_form_program_type_main\").selectedOptions[0].value\n if(selectedRole && selectedProgramType) {\n if (selectedRole == \"Student\") {\n this.showLearningStageDropdown()\n this.hideSpecialityDropdown()\n this.hideEducatorFields()\n const learningStageDropdown = document.getElementById(\"registration_form_learning_stage_main\")\n learningStageDropdown.innerHTML = ''\n let newOptions = []\n if ([\"MD\", \"DO\", \"Other\"].includes(selectedProgramType)) {\n newOptions = ev.params.mdLsOptions\n } else if (selectedProgramType == \"PA\") {\n newOptions = ev.params.paLsOptions\n } else if (selectedProgramType == \"NP/DNP/Nursing\") {\n newOptions = ev.params.npLsOptions\n } else {\n this.hideLearningStageDropdown()\n this.showSpecialityDropdown()\n }\n if (newOptions.length > 0) {\n newOptions.unshift(\"\")\n newOptions.forEach(optionData => {\n const option = document.createElement(\"option\")\n option.value = optionData\n option.textContent = optionData\n learningStageDropdown.appendChild(option)\n });\n }\n } else if (selectedRole == \"Resident/Chief Resident/Fellow\") {\n this.hideLearningStageDropdown()\n this.showSpecialityDropdown()\n this.hideEducatorFields()\n } else {\n this.showEducatorFields()\n this.hideLearningStageDropdown()\n this.hideSpecialityDropdown()\n }\n }\n }\n\n updateCheckboxState(event){\n if((event.target.scrollTop + event.target.clientHeight) > (event.target.scrollHeight - 500)) {\n document.getElementById(\"user-agreement-checkbox\").disabled=false\n document.getElementById(\"user-agreement-label\").classList.remove(\"grayed-out-text\")\n }\n }\n\n validateCheckboxes(){\n let checkboxArray1 = document.getElementById(\"work-with-learners-in\").querySelectorAll('input[type=checkbox]')\n let checkboxCheck1 = Array.from(checkboxArray1).find((element) => element.checked === true);\n if (!checkboxCheck1) {\n alert(\"Please answer the question `I WORK WITH LEARNERS IN`\")\n event.preventDefault();\n }\n\n if(document.getElementById(\"work-with-students-in\").style.display != 'none') {\n let checkboxArray2 = document.getElementById(\"work-with-students-in\").querySelectorAll('input[type=checkbox]')\n let checkboxCheck2 = Array.from(checkboxArray2).find((element) => element.checked === true);\n if (!checkboxCheck2) {\n alert(\"Please answer the question `I WORK WITH LEARNERS IN THE FOLLOWING DISCIPLINES`\")\n event.preventDefault();\n }\n }\n\n let checkboxArray3 = document.getElementById(\"primary-clinical-discipline\").querySelectorAll('input[type=checkbox]')\n let checkboxCheck3 = Array.from(checkboxArray3).find((element) => element.checked === true);\n if (!checkboxCheck3) {\n alert(\"Please answer the question `MY PRIMARY CLINICAL DISCIPLINE IS`\")\n event.preventDefault();\n }\n }\n\n validateDateFieldsPopupForm(event){\n let startDate = document.getElementById(\"course-reminder-start-date\").value;\n let endDate = document.getElementById(\"course-reminder-end-date\").value;\n if (startDate && endDate) {\n let start = new Date(startDate);\n let end = new Date(endDate);\n \n if (end <= start) {\n alert(\"Please select an end date that is after the start date.\");\n event.preventDefault();\n return;\n }\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport AssessmentDashboardModal from \"../src/react/components/Assessment/Dashboard/assessment_dashboard_modal\";\n\nexport default class extends Controller {\n static targets = [\"modalContainer\"];\n \n connect() {\n this.root = null;\n }\n\n showModal(event) {\n if (!event.target.closest('.modal-body')) {\n const modalContainer = this.modalContainerTarget;\n modalContainer.classList.remove(\"hidden\");\n\n const props = event.currentTarget.dataset.props\n ? JSON.parse(event.currentTarget.dataset.props)\n : {};\n\n if (!this.root) {\n this.root = createRoot(modalContainer);\n }\n\n this.root.render(\n this.closeModal()}\n onSave={(options) => console.log(\"Save options:\", options)}\n />\n );\n }\n }\n\n closeModal() {\n this.unmountRoot();\n this.modalContainerTarget.classList.add(\"hidden\");\n }\n\n disconnect() {\n this.unmountRoot();\n }\n\n unmountRoot() {\n if (this.root) {\n this.root.unmount();\n this.root = null;\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"alphabetical\", \"chronological\", \"toggle\", \"toggleText\", \"alphabeticalExport\", \"chronologicalExport\"]\n\n connect() {\n this.alphabeticalTarget.style.display = 'table'\n this.chronologicalTarget.style.display = 'none'\n this.updateView();\n }\n\n toggle(event) {\n if (event.target.checked) {\n this.alphabeticalTarget.style.display = 'none'\n this.chronologicalTarget.style.display = 'table'\n } else {\n this.alphabeticalTarget.style.display = 'table'\n this.chronologicalTarget.style.display = 'none'\n }\n this.updateView();\n }\n\n updateView() {\n if (this.toggleTarget.checked) {\n this.showChronologicalView();\n } else {\n this.showAlphabeticalView();\n }\n }\n\n showChronologicalView() {\n this.alphabeticalTarget.style.display = \"none\";\n this.chronologicalTarget.style.display = \"table\";\n\n this.alphabeticalExportTarget.style.display = \"none\";\n this.chronologicalExportTarget.style.display = \"inline-block\";\n\n this.toggleTextTarget.textContent = \"Show data in alphabetical order by assessment\";\n }\n\n showAlphabeticalView() {\n this.alphabeticalTarget.style.display = \"table\";\n this.chronologicalTarget.style.display = \"none\";\n\n this.alphabeticalExportTarget.style.display = \"inline-block\";\n this.chronologicalExportTarget.style.display = \"none\";\n\n this.toggleTextTarget.textContent = \"Show data in chronological order\";\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"searchInput\", \"studentList\", \"checkbox\", \"viewResultsButton\", \"tableWrapper\"];\n\n connect() {\n this.selectedStudents = [];\n this.updateTableWrapper();\n this.setupSearchInputBehavior();\n this.element.addEventListener(\"students:selected\", (event) => {\n this.selectedStudents = [...new Set(this.selectedStudents)];\n this.updateViewResultsButton();\n });\n }\n\n filterStudents() {\n const searchTerm = this.searchInputTarget.value.toLowerCase();\n this.studentListTarget.querySelectorAll(\"tr\").forEach((row) => {\n const email = row.children[1].textContent.toLowerCase();\n const firstName = row.children[2].textContent.toLowerCase();\n const lastName = row.children[3].textContent.toLowerCase();\n const matches = email.includes(searchTerm) || firstName.includes(searchTerm) || lastName.includes(searchTerm);\n row.style.display = matches ? \"\" : \"none\";\n });\n this.updateTableWrapper();\n }\n\n toggleSelection(event) {\n const checkbox = event.target;\n const studentId = checkbox.closest(\"tr\").dataset.studentId;\n if (checkbox.checked) {\n if (!this.selectedStudents.includes(studentId)) {\n this.selectedStudents.push(studentId);\n }\n } else {\n this.selectedStudents = this.selectedStudents.filter(id => id !== studentId);\n }\n this.updateViewResultsButton();\n this.dispatchSelectedStudentsEvent();\n }\n\n updateViewResultsButton() {\n const button = this.viewResultsButtonTarget;\n if (this.selectedStudents.length === 0) {\n button.classList.add(\"disabled\");\n button.style.pointerEvents = \"none\";\n } else {\n button.classList.remove(\"disabled\");\n button.style.pointerEvents = \"auto\";\n this.updateViewResultsHref();\n }\n\n const rows = Array.from(this.studentListTarget.children);\n const checkedRows = rows.filter(row => row.querySelector('input[type=\"checkbox\"]')?.checked);\n const uncheckedRows = rows.filter(row => !row.querySelector('input[type=\"checkbox\"]')?.checked);\n\n [...checkedRows, ...uncheckedRows].forEach(row => this.studentListTarget.appendChild(row));\n }\n\n updateViewResultsHref() {\n const baseUrl = this.data.get(\"reportPath\");\n const params = new URLSearchParams();\n this.selectedStudents.forEach((id) => {\n params.append(\"ids[]\", id);\n });\n this.viewResultsButtonTarget.href = `${baseUrl}?${params.toString()}`;\n }\n\n viewResults(event) {\n if (this.selectedStudents.length === 0) {\n event.preventDefault();\n } else {\n analytics.track(\"open_calibrate_student_summary\", {\n page: window.location.href,\n source: 'Assessment Dashboard',\n program: this.data.get(\"programValue\"),\n userId: this.data.get(\"userIdValue\"),\n userRole: this.data.get(\"userRoleValue\"),\n programType: this.data.get(\"programTypeValue\")\n });\n }\n }\n\n updateTableWrapper() {\n if (this.hasTableWrapperTarget) {\n const visibleRows = Array.from(this.studentListTarget.children).filter(row => row.style.display !== 'none');\n \n if (visibleRows.length > 25) {\n this.tableWrapperTarget.classList.add(\"scrollable\");\n } else {\n this.tableWrapperTarget.classList.remove(\"scrollable\");\n }\n }\n } \n\n sort(event) {\n const column = event.target.dataset.sortColumn;\n const order = event.target.dataset.sortOrder;\n this.sortTable(column, order)\n this.updateSortIndicators(column, order);\n }\n\n sortTable(column, order) {\n const currentTable = event.target.closest('table');\n const tbody = currentTable.querySelector('[data-student-performance-target=\"studentList\"]');\n \n if (!tbody) {\n console.warn(\"Could not find studentList target in the current table\");\n return;\n }\n \n const rows = Array.from(tbody.querySelectorAll('tr'));\n \n rows.sort((a, b) => {\n const aCell = a.querySelector(`td[data-column=\"${column}\"]`);\n const bCell = b.querySelector(`td[data-column=\"${column}\"]`);\n \n if (!aCell || !bCell) {\n console.warn(`Column \"${column}\" not found in one of the rows.`);\n return 0;\n }\n \n const aValue = aCell.dataset.value.toLowerCase();\n const bValue = bCell.dataset.value.toLowerCase();\n \n if (aValue < bValue) {\n return order === 'asc' ? -1 : 1;\n }\n if (aValue > bValue) {\n return order === 'asc' ? 1 : -1;\n }\n return 0;\n });\n \n rows.forEach(row => tbody.appendChild(row));\n }\n\n updateSortIndicators(column, order) {\n const currentTable = event.target.closest('table');\n currentTable.querySelectorAll('.sort-icon').forEach(icon => {\n icon.classList.remove('active-asc', 'active-desc');\n });\n \n const activeIcon = currentTable.querySelector(`.sort-icon[data-sort-column=\"${column}\"][data-sort-order=\"${order}\"]`);\n if (activeIcon) {\n activeIcon.classList.add(order === 'asc' ? 'active-asc' : 'active-desc');\n }\n }\n\n toggleSort(event) {\n const column = event.currentTarget.dataset.sortColumn;\n const currentTable = event.currentTarget.closest('table');\n \n const currentAscIcon = currentTable.querySelector(`.sort-icon[data-sort-column=\"${column}\"][data-sort-order=\"asc\"]`);\n const currentDescIcon = currentTable.querySelector(`.sort-icon[data-sort-column=\"${column}\"][data-sort-order=\"desc\"]`);\n \n if (!currentAscIcon || !currentDescIcon) {\n console.warn(\"Sort icons not found for column:\", column);\n return;\n }\n \n const isAscActive = currentAscIcon.classList.contains('active-asc');\n const isDescActive = currentDescIcon.classList.contains('active-desc');\n \n let newOrder;\n if (isAscActive) {\n newOrder = 'desc';\n } else if (isDescActive) {\n newOrder = 'asc';\n } else {\n newOrder = 'asc';\n }\n \n this.sortTable(column, newOrder);\n this.updateSortIndicators(column, newOrder);\n }\n\n setupSearchInputBehavior() {\n const searchInput = this.searchInputTarget;\n \n this.updateSearchIconVisibility(searchInput);\n \n searchInput.addEventListener('focus', () => {\n searchInput.classList.add('no-icon');\n });\n \n searchInput.addEventListener('blur', () => {\n this.updateSearchIconVisibility(searchInput);\n });\n \n searchInput.addEventListener('input', () => {\n this.updateSearchIconVisibility(searchInput);\n });\n }\n \n updateSearchIconVisibility(input) {\n if (input.value.trim().length > 0) {\n input.classList.add('no-icon');\n } else if (!input.matches(':focus')) {\n input.classList.remove('no-icon');\n }\n }\n\n dispatchSelectedStudentsEvent() {\n this.element.dispatchEvent(new CustomEvent(\"students:selected\", {\n detail: { selectedStudents: this.selectedStudents },\n bubbles: true\n }));\n } \n}\n","// This file is auto-generated by ./bin/rails stimulus:manifest:update\n// Run that command whenever you add a new controller or create them with\n// ./bin/rails generate stimulus controllerName\n\nimport { application } from \"./application\"\n\n// Keep this manually:\nimport AccordionController from '@kanety/stimulus-accordion';\napplication.register('accordion', AccordionController);\n\nimport AdminPreviewController from \"./admin_preview_controller\"\napplication.register(\"admin-preview\", AdminPreviewController)\n\nimport BarGraphController from \"./bar_graph_controller\"\napplication.register(\"bar-graph\", BarGraphController)\n\nimport BasketController from \"./basket_controller\"\napplication.register(\"basket\", BasketController)\n\nimport BatchAddController from \"./batch_add_controller\"\napplication.register(\"batch-add\", BatchAddController)\n\nimport CalibrateOrientationController from \"./calibrate_orientation_controller\"\napplication.register(\"calibrate-orientation\", CalibrateOrientationController)\n\nimport ChartController from \"./chart_controller\"\napplication.register(\"chart\", ChartController)\n\nimport CohortProgressesDeliveriesTableController from \"./cohort_progresses_deliveries_table_controller\"\napplication.register(\"cohort-progresses-deliveries-table\", CohortProgressesDeliveriesTableController)\n\nimport CohortReportController from \"./cohort_report_controller\"\napplication.register(\"cohort-report\", CohortReportController)\n\nimport ColumnSelectorController from \"./column_selector_controller\"\napplication.register(\"column-selector\", ColumnSelectorController)\n\nimport ConcertinaController from \"./concertina_controller\"\napplication.register(\"concertina\", ConcertinaController)\n\nimport ContentLibraryModalController from \"./content_library_modal_controller\"\napplication.register(\"content-library-modal\", ContentLibraryModalController)\n\nimport CopyBackupCodesController from \"./copy_backup_codes_controller\"\napplication.register(\"copy-backup-codes\", CopyBackupCodesController)\n\nimport CountdownTimerController from \"./countdown_timer_controller\"\napplication.register(\"countdown-timer\", CountdownTimerController)\n\nimport CourseSelectorController from \"./course_selector_controller\"\napplication.register(\"course-selector\", CourseSelectorController)\n\nimport CurrentUseSelectorController from \"./current_use_selector_controller\"\napplication.register(\"current-use-selector\", CurrentUseSelectorController)\n\nimport CurricularSummaryTabController from \"./curricular_summary_tab_controller\"\napplication.register(\"curricular-summary-tab\", CurricularSummaryTabController)\n\nimport Dashboard__CardContentController from \"./dashboard/card_content_controller\"\napplication.register(\"dashboard--card-content\", Dashboard__CardContentController)\n\nimport Dashboard__Student__CaseLearningTimeChartController from \"./dashboard/student/case_learning_time_chart_controller\"\napplication.register(\"dashboard--student--case-learning-time-chart\", Dashboard__Student__CaseLearningTimeChartController)\n\nimport Dashboard__Student__CompletedAvailableCasesChartController from \"./dashboard/student/completed_available_cases_chart_controller\"\napplication.register(\"dashboard--student--completed-available-cases-chart\", Dashboard__Student__CompletedAvailableCasesChartController)\n\nimport DashboardController from \"./dashboard_controller\"\napplication.register(\"dashboard\", DashboardController)\n\nimport DocumentModalController from \"./document_modal_controller\"\napplication.register(\"document-modal\", DocumentModalController)\n\nimport DropdownController from \"./dropdown_controller\"\napplication.register(\"dropdown\", DropdownController)\n\nimport EditDeliveryController from \"./edit_delivery_controller\"\napplication.register(\"edit-delivery\", EditDeliveryController)\n\nimport EducatorDashboardCardContentController from \"./educator_dashboard_card_content_controller\"\napplication.register(\"educator-dashboard-card-content\", EducatorDashboardCardContentController)\n\nimport ElementCollapserController from \"./element_collapser_controller\"\napplication.register(\"element-collapser\", ElementCollapserController)\n\nimport EnumSelectorController from \"./enum_selector_controller\"\napplication.register(\"enum-selector\", EnumSelectorController)\n\nimport ExamCourseSchedulingController from \"./exam_course_scheduling_controller\"\napplication.register(\"exam-course-scheduling\", ExamCourseSchedulingController)\n\nimport FilterController from \"./filter_controller\"\napplication.register(\"filter\", FilterController)\n\nimport FilterSearchController from \"./filter_search_controller\"\napplication.register(\"filter-search\", FilterSearchController)\n\nimport GridListViewController from \"./grid_list_view_controller\"\napplication.register(\"grid-list-view\", GridListViewController)\n\nimport GroupSelectionController from \"./group_selection_controller\"\napplication.register(\"group-selection\", GroupSelectionController)\n\nimport HelpController from \"./help_controller\"\napplication.register(\"help\", HelpController)\n\nimport HighlightFocusController from \"./highlight_focus_controller\"\napplication.register(\"highlight-focus\", HighlightFocusController)\n\nimport HovercardController from \"./hovercard_controller\"\napplication.register(\"hovercard\", HovercardController)\n\nimport ImageGalleryController from \"./image_gallery_controller\"\napplication.register(\"image-gallery\", ImageGalleryController)\n\nimport ImagePreviewController from \"./image_preview_controller\"\napplication.register(\"image-preview\", ImagePreviewController)\n\nimport ImportNewQuestionsController from \"./import_new_questions_controller\"\napplication.register(\"import-new-questions\", ImportNewQuestionsController)\n\nimport MfaSendOtpController from \"./mfa_send_otp_controller\"\napplication.register(\"mfa-send-otp\", MfaSendOtpController)\n\nimport ModalController from \"./modal_controller\"\napplication.register(\"modal\", ModalController)\n\nimport MountReactOnRailsController from \"./mount_react_on_rails_controller\"\napplication.register(\"mount-react-on-rails\", MountReactOnRailsController)\n\nimport MultiCohortCurricularSummaryTabController from \"./multi_cohort_curricular_summary_tab_controller\"\napplication.register(\"multi-cohort-curricular-summary-tab\", MultiCohortCurricularSummaryTabController)\n\nimport NewDeliveryController from \"./new_delivery_controller\"\napplication.register(\"new-delivery\", NewDeliveryController)\n\nimport NewExamVariationController from \"./new_exam_variation_controller\"\napplication.register(\"new-exam-variation\", NewExamVariationController)\n\nimport NewProjectController from \"./new_project_controller\"\napplication.register(\"new-project\", NewProjectController)\n\nimport NotifyProgramController from \"./notify_program_controller\"\napplication.register(\"notify-program\", NotifyProgramController)\n\nimport OpenQuestionsController from \"./open_questions_controller\"\napplication.register(\"open-questions\", OpenQuestionsController)\n\nimport OverflowDetectorController from \"./overflow_detector_controller\"\napplication.register(\"overflow-detector\", OverflowDetectorController)\n\nimport OverlayController from \"./overlay_controller\"\napplication.register(\"overlay\", OverlayController)\n\nimport PopupController from \"./popup_controller\"\napplication.register(\"popup\", PopupController)\n\nimport PrintDocumentController from \"./print_document_controller\"\napplication.register(\"print-document\", PrintDocumentController)\n\nimport ProjectDashboardController from \"./project_dashboard_controller\"\napplication.register(\"project-dashboard\", ProjectDashboardController)\n\nimport ProjectsReportsController from \"./projects_reports_controller\"\napplication.register(\"projects-reports\", ProjectsReportsController)\n\nimport QuestionStatsController from \"./question_stats_controller\"\napplication.register(\"question-stats\", QuestionStatsController)\n\nimport QuizFormController from \"./quiz_form_controller\"\napplication.register(\"quiz-form\", QuizFormController)\n\nimport QuizHoverController from \"./quiz_hover_controller\"\napplication.register(\"quiz-hover\", QuizHoverController)\n\nimport QuizModalController from \"./quiz_modal_controller\"\napplication.register(\"quiz-modal\", QuizModalController)\n\nimport QuizModeController from \"./quiz_mode_controller\"\napplication.register(\"quiz-mode\", QuizModeController)\n\nimport QuizPlayerAuxController from \"./quiz_player_aux_controller\"\napplication.register(\"quiz-player-aux\", QuizPlayerAuxController)\n\nimport RedirectController from \"./redirect_controller\"\napplication.register(\"redirect\", RedirectController)\n\nimport ReducibleListController from \"./reducible_list_controller\"\napplication.register(\"reducible-list\", ReducibleListController)\n\nimport ReportDateRangesController from \"./report_date_ranges_controller\"\napplication.register(\"report-date-ranges\", ReportDateRangesController)\n\nimport ReportsDashboardController from \"./reports_dashboard_controller\"\napplication.register(\"reports-dashboard\", ReportsDashboardController)\n\nimport ReportsSelectController from \"./reports_select_controller\"\napplication.register(\"reports-select\", ReportsSelectController)\n\nimport ResetPopupConfirmationController from \"./reset_popup_confirmation_controller\"\napplication.register(\"reset-popup-confirmation\", ResetPopupConfirmationController)\n\nimport RowOrderingController from \"./row_ordering_controller\"\napplication.register(\"row-ordering\", RowOrderingController)\n\nimport RowSelectorController from \"./row_selector_controller\"\napplication.register(\"row-selector\", RowSelectorController)\n\nimport SaqController from \"./saq_controller\"\napplication.register(\"saq\", SaqController)\n\nimport SearchFormController from \"./search_form_controller\"\napplication.register(\"search-form\", SearchFormController)\n\nimport SideNavigationPageController from \"./side_navigation_page_controller\"\napplication.register(\"side-navigation-page\", SideNavigationPageController)\n\nimport SingleCohortReportController from \"./single_cohort_report_controller\"\napplication.register(\"single-cohort-report\", SingleCohortReportController)\n\nimport SlideRightController from \"./slide_right_controller\"\napplication.register(\"slide-right\", SlideRightController)\n\nimport SortColumnsController from \"./sort_columns_controller\"\napplication.register(\"sort-columns\", SortColumnsController)\n\nimport SsmOptoutController from \"./ssm_optout_controller\"\napplication.register(\"ssm-optout\", SsmOptoutController)\n\nimport StickyInfoController from \"./sticky_info_controller\"\napplication.register(\"sticky-info\", StickyInfoController)\n\nimport StudentLearningProgressTableController from \"./student_learning_progress_table_controller\"\napplication.register(\"student-learning-progress-table\", StudentLearningProgressTableController)\n\nimport SuccessBannerController from \"./success_banner_controller\"\napplication.register(\"success-banner\", SuccessBannerController)\n\nimport TextDecorationController from \"./text_decoration_controller\"\napplication.register(\"text-decoration\", TextDecorationController)\n\nimport ToDoModalController from \"./to_do_modal_controller\"\napplication.register(\"to-do-modal\", ToDoModalController)\n\nimport TodoFormController from \"./todo_form_controller\"\napplication.register(\"todo-form\", TodoFormController)\n\nimport TodoListPageController from \"./todo_list_page_controller\"\napplication.register(\"todo-list-page\", TodoListPageController)\n\nimport TurboRequestController from \"./turbo_request_controller\"\napplication.register(\"turbo-request\", TurboRequestController)\n\nimport UpdateUserProfileController from \"./update_user_profile_controller\"\napplication.register(\"update-user-profile\", UpdateUserProfileController)\n\nimport OpenReactModalController from \"./open_react_modal_controller\"\napplication.register(\"open-react-modal\", OpenReactModalController)\n\nimport ViewToggleController from \"./view_toggle_controller\"\napplication.register(\"view-toggle\", ViewToggleController)\n\nimport StudentPerformanceController from \"./student_performance_controller\"\napplication.register(\"student-performance\", StudentPerformanceController)\n"],"names":["application","Application","start","debug","window","Stimulus","Controller","submit","ev","rowIds","AqueductTable","state","rows","filter","row","selected","map","url","URL","target","href","searchParams","append","preventDefault","_class","percentages","JSON","parse","this","graphTarget","dataset","barKeys","Object","keys","gridType","hasTypeTarget","typeTarget","type","initialize","setGraphSections","children","chunks","totals","key","chunk","bar","barKey","chunkKey","classList","add","newTotal","Math","ceil","style","setProperty","targets","questionSetColumns","item","attributes","content","selectable_id","selectable_type","description","selection_basket_id","id","documentSetColumns","checkAndDisableItems","currentSelectableIds","basketTarget","rowSelecter","getControllerForElementAndIdentifier","element","itemClass","itemTargets","Number","parseInt","selectableId","basketId","listTarget","open","modalTarget","remove","close","showViewButton","viewButtonTarget","hideViewButton","clearAddCount","hasAddCountTarget","setCountTargets","addCountTargets","setAddCount","count","enabledSelectedRows","length","setViewCount","hasViewCountTarget","viewCountTargets","setTotalCount","newCount","hasTotalCountTarget","currentNum","totalCountTarget","newNum","viewCountTarget","innerHTML","match","totalCountTargets","forEach","ct","replace","addItem","event","stopImmediatePropagation","data","selection_basket_items","selectable_class","itemId","axios","method","withCredentials","headers","then","response","list","c","removeChild","constructBasket","basket","errors","alert","join","uncheckSelectAll","catch","error","console","log","addAllItems","getCsrfToken","document","querySelector","addItemsToContentLibraryBasket","csrfToken","allDocuments","selectionBasketItems","formData","FormData","documentId","basketItem","fetch","selectionBasketId","body","text","html","Turbo","renderStreamMessage","addItems","items","removeAllItems","origin","removeItem","toggleAll","hasAllTarget","allTarget","value","selectAll","setAttribute","deselectAll","checked","selectAllRows","deselectAllRows","formatColumn","column","el","createElement","_ref","entries","_ref2","_slicedToArray","k","v","child","appendChild","formatRow","columns","col","basketJson","constructDocumentSetBasket","constructQuestionSetBasket","i","rowTargets","rowRep","includes","disabled","constructor","args","handleKeydown","closeAdd","closeUnknown","connect","selectedStudents","addEventListener","disconnect","removeEventListener","openAdd","addModalTarget","focus","clearTextarea","openUnknown","unknownModalTarget","selectRows","prop","aqueductTable","newRows","foundItems","push","unshift","setState","unknownItems","unknownTarget","hasAddTarget","addTarget","toLowerCase","split","a","e","hasSummaryTableTarget","selectSummaryTableRows","$","show","copy","hasUnknownTarget","select","setSelectionRange","execCommand","tbody","getElementById","Array","from","isArray","newlySelected","studentInfo","getAttribute","cellValue","studentId","toString","checkbox","dispatchEvent","Event","bubbles","prepend","querySelectorAll","dispatchSelectedStudentsEvent","allFoundItems","find","r","Boolean","CustomEvent","detail","currentCardIndex","cardTargets","goToNextCard","goToPreviousCard","skipAssessment","card","toggleDropdown","todoDropdownTarget","toggle","honorSubmit","toggleMultiSelect","updateSelectedLists","selectedIds","newListName","trim","toggleNewListInput","trackAutoAddToDoSelection","autoAddTodos","rosteringId","analytics","track","page","location","source","enabled_auto_todos","rostering_id","renderPieChart","registrationValuesValue","registrationColorsValue","values","colors","total","reduce","acc","val","gradient","accumulatedPercentage","index","startPercentage","endPercentage","slice","background","registrationValues","registrationColors","reportData","createRoot","cohortProgressTableTarget","render","React","CohortProgressesDeliveriesTable","consumer","createChannel","createConsumer","subscriptions","create","startTimer","requestId","get","search","newUrl","history","replaceState","jobId","totalReports","thisController","progressChannel","channel","request_id","received","progress","report_done","hasReportProgressBarTarget","reportProgressBarTarget","display","hasThankYouMessageTarget","thankYouMessageTarget","generatingMessage","progressBar","width","hasReportProgressTarget","reportProgressTarget","cohortChannel","report","complete","reportTarget","initChart","initBarChart","removeIdsFromUrl","unsubscribe","disconnectChannels","totalSeconds","timerInterval","setInterval","updateTimer","hours","floor","minutes","seconds","hoursTarget","pad","minutesTarget","secondsTarget","padStart","currentUrl","delete","clearInterval","google","charts","load","setOnLoadCallback","chartDataElement","graphData","dataRows","dataTable","visualization","DataTable","addColumn","role","addRows","container","chart","PieChart","clearSelection","contains","srcElement","setSelection","events","addListener","draw","legend","pieSliceTextStyle","fontName","fontSize","pieSliceText","tooltip","isHtml","trigger","backgroundColor","fill","fillOpacity","chartArea","height","barChartData","parsedData","arrayToDataTable","options","groupWidth","vAxis","title","titleTextStyle","italic","hAxis","textStyle","isStacked","ColumnChart","pageMaskTarget","hide","toggleColumn","selection_map_json","selection_map","set","stringify","toggleAllColumns","do_select_all","columnCheckboxTargets","cb","save","columnsToHide","pair","idx","params","URLSearchParams","pop","scrollIntoView","concertinaExpandDefault","expand","play","hasToggleTarget","toggleTargets","toggleArrow","handleKeypress","keyCode","hasArrowTarget","arrowTarget","bind","hasQuizModalTarget","quizModalTarget","hasSaveQuizTodoModalTarget","saveQuizTodoModalTarget","handleModalKeydown","hasSynopsisModalTarget","synopsisModalTarget","hasLearningObjectivesModalTarget","learningObjectivesModalTarget","hasMODMapModalTarget","MODMapModalTarget","modal","hideModalMethod","submitButton","click","openSynopsisModal","documentTitleTarget","documentSynopsisTarget","synopsis","documentIntegrationTarget","documentKind","finalDiagnosis","final_diagnosis","clinicalExcellence","obj","basicScienceDiscipline","basicScienceDisciplines","replaceAll","hideSynopsisModal","openBasketModal","basketModalTarget","hideBasketModal","openLearningObjectivesModal","documentTitleLOModalTarget","searchText","renderedLearningObjectives","lo","regex","RegExp","documentLOTarget","hideLearningObjectivesModal","openModMapModal","documentTitleMMModalTarget","modMapTarget","mm","hideModMapModal","openAddCourseModal","addCourseModalTarget","hideAddCourseModal","openAddTodoModal","addTodoModalTarget","hideAddTodoModal","openPrereqTodoModal","documentTitle","prerequisiteTitle","modalSubservientSubtitleTarget","modalPrerequisiteSubtitleTarget","subservientIdInputTarget","clearSubNoteFieldTarget","clearSubDateFieldTarget","clearPreNoteFieldTarget","clearPreDateFieldTarget","prereqTodoModalTarget","hidePrereqTodoModal","openTodoModal","todoModalTarget","hideTodoModal","openQuizModal","currentTarget","documentTitleQuizModalTarget","questionsAnsweredQuizModalTarget","questionsAnswered","percentCorrect","percentageCorrect","percentCorrectQuizModalTarget","openQuestionLink","newOnClick","quizId","resetOpenQuestionLink","hasQuizIdTarget","quizIdTarget","hasQuizNameTarget","quizNameTarget","quizName","newSaveTodoOnClick","openQuestionButton","case_name","hideQuizModal","openSaveQuizTodoModal","getElementsByClassName","hideSaveQuizTodoModal","redirectTo","openResetModal","resetModalId","resetModalTargets","hideResetModal","table","codes","j","cells","stringCodes","x","undefined","navigator","clipboard","writeText","res","err","hideModal","hasDisplayTarget","hasPauseTimeTarget","examSeconds","warningSeconds","pauseRemaining","startExamCountdown","startWarningCountdown","pauseTimer","pausesExam","showModal","setupEventListeners","examEndTime","Date","getTime","examInterval","displayTarget","now","timeLeft","onExpired","remaining","countdown","HOURS","MINUTES","SECONDS","updateDisplay","warningEndTime","warningInterval","displayWarning","displayWarningModal","modals","pauseRationale","warning","pauseExpiration","pause","expiration","addClickHandler","pauseRationaleModalClosed","selector","autosubmittedModalClosed","pauseModalClosed","handler","addEscapeKeyListener","button","showPauseRationaleModal","reasonInput","hidePausebtn","pauseButton","setTimeout","errorMessage","pauseReason","pauseUrl","rostering","pause_reason","token","pauseSeconds","pauseEndTime","pauseInterval","submitExam","displayPauseTimer","examTimer","resume","pause_interval","resumeUrl","timedout","pauseTime","timer","redirectUrl","autosubmitted","autoSubmitUrl","modalId","overflow","updateCourseSelectionVisibility","changeRole","needsCourseSelections","roleSelectorTarget","selectedRoleName","selectedIndex","label","rolesRequiringResponsibilities","courseSelectionsTarget","hidden","submitForm","checkboxes","haltClickThrough","persist","patchUrl","newVal","redirect","assessment_question","current_use","CurricularPerformanceSummaryTarget","CurricularSummarySystem","CurricularSummaryFocus","hasCardLoaderTarget","hasCardContentTarget","loadCardContent","cardName","cardLoader","cardLoaderTarget","cardContent","cardContentTarget","message","finally","opacity","chartContainer","statsData","statsValue","labels","delayed","Chart","datasets","aspectRatio","responsive","barThickness","plugins","callbacks","tooltipItems","context","parsed","y","animation","onComplete","delay","mode","dataIndex","datasetIndex","scales","grid","ticks","minRotation","font","weight","stats","completedCasesData","completed_cases","availableCasesData","available_cases","startedCasesData","started_cases","subscribedCasesData","subscribed","maintainAspectRatio","stacked","color","family","boxWidth","padding","changeExamVariationStatus","changeEvent","selectElem","newStatus","closest","examVariationUrl","ajax","async","dataType","assessment_exam_variation","status","hideTeachingPointModal","teachingPointModalTarget","openTeachingPointModal","renderAllChildReactOnRailsComponents","hideTeachingPointModalItemResponse","itemResponseId","teachingPointModalTargets","openTeachingPointModalItemResponse","closeDropdowns","menuTarget","hasSubmenuTarget","submenuTarget","localStorage","shownMenuId","getItem","shownMenu","removeAttribute","changeBackground","isChecked","some","currentMenu","menu","hasAttribute","setItem","toggleSubmenu","submenu","sub","toggleOnEnter","toggleEducatorDashboardSort","courseSchedulingFeatureFlag","schedulingFormFlag","hasExamCourseTarget","setSelectedExamCourse","startDateTarget","datepicker","numberOfMonths","dateFormat","minDate","onSelect","availability_ends_at","setDate","getDate","endDateTarget","resetEndTimeAndDateFieldsEdit","checkDateInput","reloadExamCourses","on","inputValue","checkMinDate","startDateElem","startMinDate","startMaxDate","maxDate","findMaxDate","needs_subset","rebuildEndTimeSelectOptionsEdit","closeDropdownOnClickOutside","hasAcademicStartDateTarget","formatDateInput","academicStartDateTarget","hasAcademicEndDateTarget","academicEndDateTarget","hasStartDateTarget","delayedCheckHighlightedRows","checkHighlightedRows","alertForHighlightedRow","showHighlightedRowInfo","changeDefaultForm","selectEl","default_exam_form","default_form_name","elem","innerText","exam_form","row_class","forms_already_taken","changeRosteringForm","grdu_id","getGrduId","defaultExamFormTarget","selectedOptions","getExamForm","highlightedRowsInfoTarget","explainStatus","result","success","examNameTarget","textContent","exam_name","studentNameTarget","student_name","pauseDateTarget","pause_date","pauseTimeTarget","pause_start_time","pause_end_time","timezone","pauseReasonTarget","pauseModalTarget","pauseClose","displayRestart","grduTarget","restartCommitTarget","restartModalTarget","closeRestart","restartExam","rowIdx","findIndex","assessment_rostering","reason_for_restart","reasonTarget","can_restart","highlightedRowsAlertTarget","closehighlightedRowsAlert","start_time_select","end_time_select","start_time","new_end_time_inner_html","indexOf","examCourseTarget","preserveAssessment","startDate","tempContainer","newSelect","replaceWith","selectedCourse","selectedOption","option","min_date","hasDropdownTarget","isHidden","dropdownTarget","firstCheckbox","handleDropdownKeydown","updateSelectedGoals","selectedValues","hasHiddenFieldTarget","hiddenFieldTarget","hasPlaceholderTarget","placeholderTarget","checkCustomValidation","isValidDate","setCustomValidity","dateString","test","parts","year","month","day","input","formattedValue","substring","errorMsg","inputDate","oneYearLater","setFullYear","getFullYear","warningModalTarget","hideWarningModal","resetDates","setMinScheduleDate","courseSchedules","courseSchedulesTarget","parseDate","UTC","getUTCFullYear","getUTCMonth","getUTCDate","dateToUse","formatDate","availabilityEndsAt","date","String","endDate","start_date","end_date","openQuestionModal","questionModalTarget","closeQuestionModal","updateDate","startDateInput","endDateInput","previousStartDate","previousValue","previousEndDate","formatDateForInput","requestSubmit","isNaN","getMonth","toggleCollapse","collapserControlTarget","collapsibleElementTarget","initializeDatePickers","handlePreselectedCourses","closeButton","reloadForm","checkboxTargets","dateField","dateFieldTargets","field","toggleSelection","confirmSubmission","newCoursesWithDates","isNew","name","word","charAt","toUpperCase","courseDetails","course","confirm","form","reset","submitFilter","selectFilterTarget","lowerCaseFilterTerm","sourceTarget","filterableTargets","filterableKey","view","Cookies","identifier","setView","gridTarget","containerTarget","expires","switchToGrid","switchToList","fetchStudents","selectedCustomCourses","selectedAssessmentDeliveries","currentCustomCourses","currentAssessmentDeliveries","hasDocumentSetIdTarget","fetchStudentsForDocumentSet","selectedStudentsByGroup","customCourseId","documentSetIdTarget","customCoursesData","groupSelectionCustomCourses","findCourseById","updateHiddenInput","_objectSpread","updateSelectedGroups","courseId","addSelectedGroupTarget","filterData","getFilterData","selectedGroupsBlock","sendPostRequest","ok","Error","updateSelectedGroupInForm","grduIds","json","grdus","grdu","groupIds","custom_courses","deliveryIds","assessment_deliveries","groupId","deliveryId","filterDropdownTarget","unselectAllRows","unselectSummaryTableRows","updateCustomCourses","updateSelection","updateAssessmentDeliveries","selectedItems","displayText","parentElement","fromEntries","hiddenCustomCourseField","selectedGroupsTarget","generateSelectedGroupsHTML","customCourses","assessmentDeliveries","isForm","generateHTML","removeGroup","_event$target$dataset","parsedId","unselectStudentsByGroup","selectedGroupsList","openGroupSelectionModal","selectAlreadySelected","customCoursesTargets","assessmentDeliveriesTargets","groupKey","deliveryKey","uncheckedCheckboxes","pendingRemovalGroups","pendingRemovalDeliveries","belongsToGroup","belongsToDelivery","openHelpModal","helpModalTarget","hideHelpModal","handleKeyUp","activeElement","focusedElement","tagName","hasCardTarget","cardTarget","urlValue","fragment","createRange","createContextualFragment","dots","slideContainer","indicator","slides","hasGalleryContainerTarget","galleryContainerTarget","hasModalContentImageTarget","modalContentImageTarget","onclick","closeModalImage","currentIndex","observer","IntersectionObserver","activated","max","entry","intersectionRatio","updateIndicator","root","threshold","slide","observe","dot","scrollToImage","hasPrevArrowTarget","prevArrowTarget","scrollToPrevious","hasNextArrowTarget","nextArrowTarget","scrollToNext","handleKeyDown","expandImage","modalImageTarget","src","expandImageIcon","firstElementChild","hasModalImageTarget","updatePositions","current","previous","behavior","block","inline","position","newPrev","scrollToLast","next","newNext","scrollToFirst","lastIndex","last","first","refId","inputTarget","previewImage","file","files","reader","FileReader","onload","imagePreview","image","maxWidth","newImageText","fontWeight","fontFamily","previewTarget","readAsDataURL","handleFileChange","importQuestions","confirmModalTarget","openModal","closeModal","send","email","hasAssessmentWithoutFormTarget","alertForAssessmentWithoutForm","closeAlert","query","setFocusOnFirstElement","subscriberForm","focusableElements","assessmentWithoutFormTarget","css","CurricularPerformancesSummaryTarget","CurricularSummaryDiscipline","_rebuildEndTimeSelectOptions","_classPrivateFieldLooseKey","defineProperty","_rebuildEndTimeSelectOptions2","hasEmailTarget","emailTarget","urlParams","preserveDates","schedulingFormFeature","shouldReloadExamCourses","datepickerOptions","startDateSelected","endDateSelected","hasEndDateTarget","ready","keydown","isDemo","demo","timeDiff","toLocaleDateString","windowStartDate","_classPrivateFieldLooseBase","windowEndDate","startTimeSelected","checkRosteringPresence","checkCustomValidities","validity","valueMissing","hasPhoneTarget","phoneTarget","startTimeTarget","endTimeTarget","programTypeTarget","purposeTarget","hiddenField","placeholder","diff","optionsArray","appendEndTimeOptions","startIndex","endIndex","appendSelectOption","min","optionEl","generateTitle","updateDetectionNotice","availableVersions","examVersionTarget","required_fields_completed","navigationTarget","questionOrderTarget","administrationYearTarget","minutesLimitTarget","vaue","blackBackgroundTarget","examFormTarget","examTitleTarget","outerHTML","detectionNoticeTarget","tableDnD","onDragClass","dragHandle","findDocuments","selectCourseTarget","documentsUrl","selectCaseTarget","documents","doc","validateSelectCase","questionSetNameTarget","validateCourseProjectName","projectName","projectNameTarget","questionSetCourseTarget","questionSetTable","ProjectQuestionSetTable","questionSetTableRows","question_sets","question_set","created_at","show_question_set_path","courseNameModalTarget","projectNameModalTarget","questionSetModalTarget","questionSetModalClose","questionSetModalSave","selQuestionSet","questionSetName","addQuestionSetButtonDivTarget","textAlign","activateReorderingOfRows","addRow","projectTeamTable","ProjectTeamTable","lastRow","newRow","last_name","first_name","deleteRow","openNotifyProgramModal","notifyProgramModalTarget","hideNotifyProgramModal","stopPropagation","hasContainerTarget","handleStartIntersect","handleEndIntersect","startIntersectionObs","endIntersectionObs","hasObservableTarget","observableTargets","startIndicatorTarget","lastElementChild","endIndicatorTarget","hasStartIndicatorTarget","hasEndIndicatorTarget","scrollLeft","scrollIncrement","offsetWidth","scroll","left","scrollRight","scrollUp","scrollHeight","top","scrollDown","offsetHeight","ssmValue","hasDivTarget","applyDivOverlay","divTarget","hasElementTarget","applyElementOverlay","elementTarget","div","overlay","popup","overlayPopup","trackInfo","overlayTrackInfo","shouldTrackAnalytics","eventName","metaAttributes","trackAnalytics","showPopup","innerElement","innerElementPopup","popupElement","modalController","fetchAndOpen","ssm","updateModal","modalElement","scrollY","pageYOffset","print","hasCaseProjectDetailsModalTarget","caseProjectDetailsModalTarget","hasAssessmentProjectDetailsModalTarget","assessmentProjectDetailsModalTarget","populateSelectCases","course_id","filterCoursesTarget","course_name","cciProjectTable","CCIProjectTable","flaggedItemProjectTable","FlaggedItemProjectTable","newItemProjectTable","NewItemProjectTable","updateCaseProjectTables","case_projects","updateAssessmentProjectTables","flagged_assessment_projects","new_assessment_projects","projectTable","projects","tableRows","project","priority","aet_path","edit_path","details_url","details_path","workflow_status","workflow_status_path","report_option","project_status_report_path","project_workflow_report_path","summary_of_edits_report_path","cases_content_report_path","project_editors_report_path","comments_report_path","projectsDetails","get_details_url","projectRoles","project_type","showCaseProjectModal","showAssessmentProjectModal","courseNameTarget","caseNameTarget","priorityTarget","modalTitleTarget","workflowStatusTarget","innerHtml","project_members","member","projectMemberDetailsTarget","assessmentProjectNameTarget","assessmentCourseNameTarget","assessmentPriorityTarget","assessmentStartDateTarget","assessmentModalTitleTarget","projectIdTarget","questionSetHtmlTarget","question_set_url","question_set_title","assessmentProjectMemberDetailsTarget","editorHtml","editors_leaderboard","editor","percentage_assigned_questions_completed","percentage_total_questions_completed","editorTableTarget","workflowStatus","project_id","projectDetailsModalClose","reportAction","selectedReport","projectStatusReportUrl","projectWorkflowReportUrl","summaryOfEditsReportUrl","casesContentReportUrl","projectEditorsReportUrl","commentsReportUrl","refreshCSVURL","updateProjectTables","filterProjectStatus","filterStatusTarget","statuses","csv_url","projectStatusesTable","ProjectStatusesTable","projectStatusesRows","case_number_and_title","review_status","date_last_updated","project_team","project_name","workflow_report_link","updateStats","rowsOfInterest","scored","pdiffAvgTarget","computeAverageText","item_difficulty","rpbAvgTarget","discrimination","scoredQuestionsTarget","unscoredQuestionsTarget","rawValues","precision","isFinite","sum","toFixed","formTarget","handleFormChange","closeModalOnEscape","updateActions","updateClasses","quizData","formattedKey","payload","quiz","fetchcount","icon","toggleAllDisciplines","allDisciplinesTarget","toggleAllBodySystems","allBodySystemsTarget","toggleAllClinicalFocuses","allClinicalFocusesTarget","toggleAllDiagnoses","allDiagnosesTarget","toggleDiagnosisCheckboxes","diagnosisCheckboxes","diagnosisCheckboxesTarget","toggleAllClinicalExcellenceTopics","allClinicalExcellenceTopicsTarget","toggleAllClinicalLocations","allClinicalLocationsTarget","toggleCustomCoursesCheckboxes","customCoursesCheckboxesTarget","toggleAllCustomCourses","allCustomCoursesTarget","numberOfItemsField","numberOfItemsTarget","checkValidity","reportValidity","filterCheckboxes","searchQuery","searchInputTarget","nextElementSibling","matchMedia","matches","clickableTargets","innerWidth","collapsibleContentTargets","handleKeypressCheckbox","handleKeypressToggleCustomCoursesCheckboxes","handleKeypressToggleCollapse","handleKeypressToggleDiagnosisCheckboxes","customCourseSelected","hasAllDisciplinesTarget","clinicalDisciplineSelected","hasAllCustomCoursesTarget","togglePreviousQuestionField","includePreviouslyCompletedFieldTarget","showAlignment","alignmentTarget","hideAlignment","showBanner","banner","hasWelcomeModalTarget","welcomeModalTarget","hideWelcomeModal","openWelcomeModal","resetModalTarget","updateButtonHref","startButtonTarget","handleClickOutside","resetTarget","keyPressToggleDropdown","sidebar","chevron","resetLink","hasResetTarget","reportButtons","modalContainer","modalCloseButtons","hasUrlToTarget","urlToTarget","urlTo","updateCountLabel","adjustment","currentHTML","countLabelTarget","adjustedHTML","adjustLabelCount","textToAdjust","countToAdjust","adjustedText","ReportsDashboard","populateDashboard","projects_type","bookmarkPopupShow","bookmarkModalTarget","bookmarkPopupClose","bookmarkURL","bookmarkURLName","bookmarkURLNameTarget","filterReportTypeTarget","report_type","reportTypeTarget","course_ids","reviewable_ids","filterReviewableTarget","project_ids","filterProjectsTarget","editor_ids","filterEditorsTarget","bookmark_url_name","showReport","requestType","question_id","selectQuestionTarget","request_type","filterEditors","is_course_changed","filterProjects","populateSelectQuestions","assessment_project_id","change","frame","reload","updateRowOrder","sortingColumns","sort","compareRows","position_integer","rowA","rowB","aSelected","bSelected","aPosition","parseFloat","bPosition","aQuestionId","bQuestionId","defaultType","selectedRows","filtersDiv","sessionStorage","select_all","checkboxesArray","getElementsByName","selectAllCheckbox","updateLink","checkboxValues","restUrl","resetLinkMobile","restUrlMobile","createQuizModalErrorTarget","createQuizModalTarget","saveModal","toggleMobileFilters","openModalMobile","createQuizModalErrorMobileTarget","createQuizModalMobileTarget","closeModalMobile","saveModalMobile","select_all_mobile","openResetQuestionModal","resetQuestionModalTarget","closeResetQuestionModal","openResetQuestionMobileModal","resetQuestionMobileModalTarget","closeResetQuestionMobileModal","toggleQuestionDetails","saqId","questionDetails","questionDetailsArrow","questionDetailsArrowMobile","saqResponseId","checkEnterFilterKey","checkboxId","checkEnterKeySelectAll","checkEnterKeyToggleQuestionDetails","checkEnterKeyCheckbox","debounce","updateDisplayCount","showSnapshotsLoader","showLoader","showLoaderContentUsageLog","updateHiddenField","hiddenFieldId","clearTimeout","timeout","displayCount","desktopLoader","mobileLoader","mobileContent","computedStyle","getComputedStyle","getPropertyValue","loader","toggleSideNavigation","navState","resourceMenuState","defaultState","featureFlagEnabled","todoMenuState","quizMenuState","userAgent","documentElement","collapseNavigation","expandNavigation","collapseResourceMenu","expandResourceMenu","collapseTodoMenu","expandTodoMenu","collapseQuizMenu","expandQuizMenu","cookie","startsWith","collapseProgramsMenu","expandProgramsMenu","toggleNavigation","sideNavDiv","sideNavMainContent","aquiferLogoImage","collapseImg","aquiferLogoExpandedImg","marginLeft","divTitle","aquiferLogoCollapsedImg","toggleResourcesMenu","resourcesMenuElements","resourceArray","resourcesMenuImages","resourcesMenuImagesArray","toggleProgramsMenu","programMenuElements","programArray","programMenuImages","programMenuImagesArray","screenWidth","clientWidth","hideSidebar","sideNavigationTarget","toggleSadndwichBarNavigation","toggleQuizMenu","elements","array","images","imagesArray","toggleTodoMenu","todoMenuElements","todoArray","todoMenuImages","todoMenuImagesArray","handleKeypressToggleNavigation","handleKeypressToggleTodoMenu","handleKeypressToggleQuizMenu","handleKeypressToggleResourcesMenu","handleKeypressToggleProgramsMenu","maxIndex","hasSlideTarget","slideTargets","st","loaderMobile","othersCheckboxTarget","errorTarget","othersTextFieldTarget","submitTarget","navWrapperHeight","nav","devicePixelRatio","topBarHeight","topBarTarget","docBodyWrapper","lastScrollTop","delta","ResizeObserver","handleResize","handleScroll","currentScroll","abs","transition","progressTableTarget","StudentLearningProgressTable","fadeOut","targetedNode","highlightSelectedText","toggleCheckbox","textTargets","strikeThrough","targetId","d","nodeName","highlightText","range","className","commonAncestor","commonAncestorContainer","nodeType","parentNode","span","extractContents","insertNode","startContainer","endContainer","Node","TEXT_NODE","highlightSpan","selectedText","currentNode","nodes","iterator","createNodeIterator","NodeFilter","SHOW_TEXT","acceptNode","node","nodeRange","selectNodeContents","compareBoundaryPoints","Range","END_TO_START","START_TO_END","FILTER_ACCEPT","FILTER_REJECT","nextNode","textRange","setStart","startOffset","setEnd","endOffset","setStartBefore","setEndAfter","selection","getSelection","rangeCount","getRangeAt","modalsContainerTarget","noCheckboxTarget","persisted","previousElementSibling","updateCheckboxes","listenKeyTaps","checkboxElement","toggleTodoListCheckboxes","todoListCheckboxes","heading","dropdown","toggleInputFields","myTodoCheckbox","checkboxContainer","checkboxSelector","headingSelector","dropdownSelector","selectedNames","submitTodoForm","errorContainerTarget","formSubmitTarget","hasResetTodoModalTarget","resetTodoModalTarget","hasRemoveFromListTodoModalTarget","removeFromListTodoModalTarget","hasCreateListModalTarget","createListModalTarget","toggleTodoListDropdown","dropdownImageTarget","openCreateListModal","submitCreateListModal","createListModalErrorTarget","hideCreateListModal","openResetTodoModal","hideResetTodoModal","updateMoreActionDetails","checkedCheckboxes","todoIds","todoId","documentTitles","todoItems","li","listStyleType","todoItemsRemove","liTodoItem","openRemoveFromListTodoModal","hideRemoveFromListTodoModal","handleKeypressToggleTodoListDropdown","toggleTodoListFiltersAccordion","request","Accept","showNextDropdown","npWorkflow","showSpecialityDropdown","hideClerkshipRotationCourseDropdown","showDateFields","hideDateFields","hideSpecialityDropdown","showClerkshipRotationCourseDropdown","showOtherTextBox","otherTextbox","validateDateFields","validateCheckboxes","graduationDate","showProgramNameDropdown","newOptions","mdPrograms","doPrograms","paPrograms","npPrograms","allPrograms","optionData","indSubWorkflow","changedProfileRole","showLearningStageDropdown","hideLearningStageDropdown","showEducatorFields","hideEducatorFields","selectedRoleEl","selectedRole","selectedProgramType","learningStageDropdown","mdLsOptions","paLsOptions","npLsOptions","updateCheckboxState","scrollTop","clientHeight","checkboxArray1","checkboxArray2","checkboxArray3","validateDateFieldsPopupForm","modalContainerTarget","props","AssessmentDashboardModal","assign","isOpen","onClose","onSave","unmountRoot","unmount","alphabeticalTarget","chronologicalTarget","updateView","toggleTarget","showChronologicalView","showAlphabeticalView","alphabeticalExportTarget","chronologicalExportTarget","toggleTextTarget","updateTableWrapper","setupSearchInputBehavior","Set","updateViewResultsButton","filterStudents","searchTerm","studentListTarget","firstName","lastName","viewResultsButtonTarget","pointerEvents","updateViewResultsHref","baseUrl","viewResults","program","userId","userRole","programType","hasTableWrapperTarget","tableWrapperTarget","sortColumn","order","sortOrder","sortTable","updateSortIndicators","warn","b","aCell","bCell","aValue","bValue","currentTable","activeIcon","toggleSort","currentAscIcon","currentDescIcon","isAscActive","newOrder","searchInput","updateSearchIconVisibility","register","AccordionController","AdminPreviewController","BarGraphController","BasketController","BatchAddController","CalibrateOrientationController","ChartController","CohortProgressesDeliveriesTableController","CohortReportController","ColumnSelectorController","ConcertinaController","ContentLibraryModalController","CopyBackupCodesController","CountdownTimerController","CourseSelectorController","CurrentUseSelectorController","CurricularSummaryTabController","Dashboard__CardContentController","Dashboard__Student__CaseLearningTimeChartController","Dashboard__Student__CompletedAvailableCasesChartController","DashboardController","DocumentModalController","DropdownController","EditDeliveryController","EducatorDashboardCardContentController","ElementCollapserController","EnumSelectorController","ExamCourseSchedulingController","FilterController","FilterSearchController","GridListViewController","GroupSelectionController","HelpController","HighlightFocusController","HovercardController","ImageGalleryController","ImagePreviewController","ImportNewQuestionsController","MfaSendOtpController","ModalController","MountReactOnRailsController","MultiCohortCurricularSummaryTabController","NewDeliveryController","NewExamVariationController","NewProjectController","NotifyProgramController","OpenQuestionsController","OverflowDetectorController","OverlayController","PopupController","PrintDocumentController","ProjectDashboardController","ProjectsReportsController","QuestionStatsController","QuizFormController","QuizHoverController","QuizModalController","QuizModeController","QuizPlayerAuxController","RedirectController","ReducibleListController","ReportDateRangesController","ReportsDashboardController","ReportsSelectController","ResetPopupConfirmationController","RowOrderingController","RowSelectorController","SaqController","SearchFormController","SideNavigationPageController","SingleCohortReportController","SlideRightController","SortColumnsController","SsmOptoutController","StickyInfoController","StudentLearningProgressTableController","SuccessBannerController","TextDecorationController","ToDoModalController","TodoFormController","TodoListPageController","TurboRequestController","UpdateUserProfileController","OpenReactModalController","ViewToggleController","StudentPerformanceController"],"sourceRoot":""}