{"version":3,"file":"oem_operation_forms.ts-DWgg0AtT.js","sources":["../../../../../app/javascript/entries/controllers/oem_operation_forms.ts"],"sourcesContent":["// @ts-nocheck\nimport { t } from \"i18next\";\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n const checkbox = document.getElementById(\"js-oem_operation_form_use_openai\");\n const openaiInstructionField = document.getElementById(\"js-oem_operation_form_openai_instruction\");\n\n if (checkbox !== null) {\n checkbox.addEventListener(\"click\", function () {\n if (checkbox.checked) {\n openaiInstructionField.style.display = \"block\";\n } else {\n openaiInstructionField.style.display = \"none\";\n }\n });\n }\n\n // OEMオペレーションフォーム作成画面で同一のブランを複数選択できないようにバリデーションを設定する\n // https://github.com/Atsushi-Ishii/yoom/issues/7591\n setOemPlanValidationField();\n setAddOemNewElementField();\n});\n\n// OEMオペレーションフォームに新しく要素が追加された場合にもバリデーションを設定するための関数\nfunction setAddOemNewElementField() {\n const cocoonFields = document.querySelector(\".add-oem-new-element-field\");\n // ネストされたフォームが挿入された後\n $(cocoonFields).on(\"cocoon:after-insert\", function () {\n setOemPlanValidationField();\n });\n // ネストされたフォームが削除された後\n $(cocoonFields).on(\"cocoon:after-remove\", function () {\n setOemPlanValidationField();\n });\n}\n\n// OEMオペレーションフォーム作成画面の「制約を追加する」で同一のブランを複数選択できないようにバリデーションを設定する関数\nfunction setOemPlanValidationField() {\n const cocoonFields = document.querySelectorAll(\".oem-plan-validation-field\");\n if (cocoonFields === null) return;\n\n cocoonFields.forEach(function (cocoonField, index) {\n // cocoonFieldsの全てのセレクトボックスに対してイベントリスナーを設定\n $(cocoonField)\n .find(\"select\")\n .on(\"change\", function () {\n validateField(cocoonField);\n });\n\n // ネストされたフォームが挿入された後\n $(cocoonField).on(\"cocoon:after-insert\", function (e, insertedItem) {\n // 新しく追加されたセレクトボックスに対してイベントリスナーを設定\n $(insertedItem)\n .find(\"select\")\n .on(\"change\", function () {\n validateField(cocoonField);\n });\n updateAddButtonVisibility(index);\n });\n // ネストされたフォームが削除された後\n $(cocoonField).on(\"cocoon:after-remove\", function (e, insertedItem) {\n // 新しく追加されたセレクトボックスに対してイベントリスナーを設定\n validateField(cocoonField);\n updateAddButtonVisibility(index);\n });\n });\n}\n\n// 追加ボタンの表示非表示を制御する関数\nfunction updateAddButtonVisibility(index) {\n const cocoonFields = document.querySelectorAll(\".oem-plan-validation-field\");\n if (cocoonFields === null) return;\n const nestedFields = cocoonFields[index].querySelectorAll(\".nested-fields\");\n\n // nestedFieldsが8つ以上ある場合は追加ボタンを無効化する\n if (nestedFields.length >= countAvailableAddField(nestedFields)) {\n const addFieldBtn = document.querySelectorAll(\".add-oem-validation-field\");\n addFieldBtn[index].style.display = \"none\";\n } else {\n const addFieldBtn = document.querySelectorAll(\".add-oem-validation-field\");\n addFieldBtn[index].style.display = \"block\";\n }\n}\n\n// 追加可能なフィールドの数を返す関数\nfunction countAvailableAddField(nestedFields) {\n const field = nestedFields[0];\n const selectBoxes = field.querySelectorAll(\"select\");\n // バリデーションタイプの空のoptionを除いた数がバリデーションタイプの数\n const validationTypeCount = selectBoxes[0].querySelectorAll(\"option\").length - 1;\n // 対象プランの空のoptionを除いた数がバリデーションタイプの数\n const planCount = selectBoxes[1].querySelectorAll(\"option\").length - 1;\n\n const availableFieldCount = validationTypeCount * planCount;\n return availableFieldCount;\n}\n\n/**\n * バリデーションフィールドのバリデーションを行う関数\n * バリデーションタイプが同じプランが複数選択されている場合はエラーメッセージを表示する\n */\nfunction validateField(cocoonField) {\n const nestedFields = cocoonField.querySelectorAll(\".nested-fields\");\n const selectedMaxLength = [];\n const selectedMaxFileSize = [];\n\n nestedFields.forEach(function (nestedField) {\n const selectBoxes = nestedField.querySelectorAll(\"select\");\n if (selectBoxes[0].value === \"max_length\") {\n selectedMaxLength.push(selectBoxes[1].value);\n } else if (selectBoxes[0].value === \"max_file_size\") {\n selectedMaxFileSize.push(selectBoxes[1].value);\n }\n });\n\n // 同じプランが複数選択されているかチェックする\n const maxLengthErrors = selectedMaxLength.filter((item, index, self) => {\n return self.indexOf(item) !== index && self.lastIndexOf(item) === index && item !== \"\";\n });\n const maxFileSizeErrors = selectedMaxFileSize.filter((item, index, self) => {\n return self.indexOf(item) !== index && self.lastIndexOf(item) === index && item !== \"\";\n });\n\n // 全てのプランが選択されているかチェックする\n if (\n selectedMaxLength.includes(\"all\") &&\n selectedMaxLength.filter((item) => item !== \"\").length > 1 &&\n !maxLengthErrors.includes(\"all\")\n ) {\n maxLengthErrors.push(\"all\");\n }\n if (\n selectedMaxFileSize.includes(\"all\") &&\n selectedMaxFileSize.filter((item) => item !== \"\").length > 1 &&\n !maxFileSizeErrors.includes(\"all\")\n ) {\n maxFileSizeErrors.push(\"all\");\n }\n\n displayError(maxLengthErrors, maxFileSizeErrors, cocoonField);\n}\n\n// エラーメッセージを表示非表示する関数\nfunction displayError(maxLengthErrors, maxFileSizeErrors, cocoonField) {\n const nestedFields = cocoonField.querySelectorAll(\".nested-fields\");\n\n // すでにエラーメッセージが表示されている場合は削除する\n nestedFields.forEach(function (nestedField) {\n const selectBoxes = nestedField.querySelectorAll(\"select\");\n const oldErrorMessage = selectBoxes[1].parentNode.querySelector(\".text-danger\");\n if (oldErrorMessage !== null) {\n oldErrorMessage.remove();\n selectBoxes[1].style.borderColor = \"\";\n // 次へボタンを有効化する\n const actionBtn = document.querySelector(\".actions\");\n actionBtn.querySelector(\"input[type=submit]\").disabled = false;\n }\n });\n\n if (maxLengthErrors.length > 0) {\n nestedFields.forEach(function (nestedField) {\n // バリデーションタイプ毎に対象プランのセレクトボックスの値を取得する\n const selectBoxes = nestedField.querySelectorAll(\"select\");\n if (selectBoxes[0].value === \"max_length\" && maxLengthErrors.includes(selectBoxes[1].value)) {\n // 対象プランのセレクトボックスの下にエラーメッセージを表示する\n const errorMessage = document.createElement(\"span\");\n errorMessage.className = \"text-danger\";\n errorMessage.textContent = t(\"OemOperationForms.同じプランが複数選択されています\");\n selectBoxes[1].parentNode.appendChild(errorMessage);\n selectBoxes[1].style.borderColor = \"red\";\n // 次へボタンを無効化する\n const actionBtn = document.querySelector(\".actions\");\n actionBtn.querySelector(\"input[type=submit]\").disabled = true;\n }\n });\n }\n\n if (maxFileSizeErrors.length > 0) {\n nestedFields.forEach(function (nestedField) {\n // バリデーションタイプ毎に対象プランのセレクトボックスの値を取得する\n const selectBoxes = nestedField.querySelectorAll(\"select\");\n if (selectBoxes[0].value === \"max_file_size\" && maxFileSizeErrors.includes(selectBoxes[1].value)) {\n // 対象プランのセレクトボックスの下にエラーメッセージを表示する\n const errorMessage = document.createElement(\"span\");\n errorMessage.className = \"text-danger\";\n errorMessage.textContent = t(\"OemOperationForms.同じプランが複数選択されています\");\n selectBoxes[1].parentNode.appendChild(errorMessage);\n selectBoxes[1].style.borderColor = \"red\";\n // 次へボタンを無効化する\n const actionBtn = document.querySelector(\".actions\");\n actionBtn.querySelector(\"input[type=submit]\").disabled = true;\n }\n });\n }\n}\n"],"names":["checkbox","openaiInstructionField","setOemPlanValidationField","setAddOemNewElementField","cocoonFields","cocoonField","index","validateField","e","insertedItem","updateAddButtonVisibility","nestedFields","countAvailableAddField","addFieldBtn","selectBoxes","validationTypeCount","planCount","selectedMaxLength","selectedMaxFileSize","nestedField","maxLengthErrors","item","self","maxFileSizeErrors","displayError","oldErrorMessage","actionBtn","errorMessage","t"],"mappings":"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"}