{"version":3,"file":"js/application-627335b7759e916713c5.js","mappings":"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","sources":["webpack://app/./app/javascript/bundles/Reports/components/components/ReportsTable.jsx","webpack://app/./app/javascript/bundles/Reports/components/Reports.jsx","webpack://app/./app/javascript/bundles/components/Navbar.jsx","webpack://app/./app/javascript/bundles/components/Pagination.jsx","webpack://app/./app/javascript/bundles/components/RichTextComponent.jsx","webpack://app/./app/javascript/bundles/Forms/TableStrategies/TableFactory.jsx","webpack://app/./app/javascript/bundles/Forms/TableStrategies/TemplateOne.jsx","webpack://app/./app/javascript/bundles/Forms/TableStrategies/TemplateTwo.jsx","webpack://app/./app/javascript/bundles/Forms/TableStrategies/TemplateThree.jsx","webpack://app/./app/javascript/bundles/Forms/TableStrategies/TemplateFour.jsx","webpack://app/./app/javascript/bundles/Forms/DynamicTable.jsx","webpack://app/./app/javascript/bundles/Forms/Form.jsx","webpack://app/./app/javascript/bundles/Login/components/Login.jsx","webpack://app/./app/javascript/bundles/Forms/FormNew.jsx","webpack://app/./app/javascript/bundles/Forms/DynamicTableEdit.jsx","webpack://app/./app/javascript/bundles/Forms/ReportEdit.jsx","webpack://app/./app/javascript/bundles/Forms/FormEdit.jsx","webpack://app/./app/javascript/bundles/Settings/components/PersonalForm.jsx","webpack://app/./app/javascript/bundles/Reports/components/Mixing.jsx","webpack://app/./app/javascript/bundles/Forms/Forms.jsx","webpack://app/./app/javascript/bundles/Divisions/DisionsTable.jsx","webpack://app/./app/javascript/bundles/Periods/PeriodsManager.jsx","webpack://app/./app/javascript/bundles/Settings/components/ReportsTable.jsx","webpack://app/./app/javascript/bundles/components/OnboardingStepper.jsx","webpack://app/./app/javascript/bundles/Settings/components/CreateUserForm.jsx","webpack://app/./app/javascript/packs/application.js","webpack://app/./app/javascript/bundles/Settings/Personal.jsx","webpack://app/./app/javascript/bundles/Divisions/Divisions.jsx","webpack://app/./app/javascript/bundles/Settings/Invite.jsx","webpack://app/./app/javascript/bundles/Periods/Periods.jsx","webpack://app/./app/javascript/bundles/Settings/SettingsReports.jsx","webpack://app/./app/javascript/bundles/Settings/CreateUser.jsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faPlus,\n faMinus,\n faPenToSquare,\n faTrashAlt,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport Select from \"react-select\";\n\nexport default function ReportsTable({ reports, forms }) {\n // 1. Локальный стейт, чтобы после удаления отчёта\n // сразу перерисовать таблицу\n const [tableReports, setTableReports] = useState(reports);\n\n // Стейт для развёртывания рядов\n const [expandedRows, setExpandedRows] = useState({});\n\n // Стейт для модалки выбора формы\n const [isModalOpen, setIsModalOpen] = useState(false);\n\n // Стейт для выбранной формы в Select\n const [selectedForm, setSelectedForm] = useState(null);\n\n // Стейт для ID периода, к которому добавляем форму\n const [activePeriodId, setActivePeriodId] = useState(null);\n\n // ** Новый стейт для модалки удаления отчёта **\n const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false);\n const [reportIdToDelete, setReportIdToDelete] = useState(null);\n\n // Открыть/закрыть ряд\n const toggleExpand = (rowKey) => {\n setExpandedRows((prevState) => ({\n ...prevState,\n [rowKey]: !prevState[rowKey],\n }));\n };\n\n // Открытие модалки выбора формы\n const handleOpenModal = (periodId) => {\n setActivePeriodId(periodId);\n setIsModalOpen(true);\n };\n\n // Закрытие модалки выбора формы\n const handleCloseModal = () => {\n setIsModalOpen(false);\n setSelectedForm(null);\n };\n\n // Переход к редактированию или созданию формы\n const handleNavigate = () => {\n if (selectedForm) {\n // Проверяем, существует ли форма в текущем периоде\n const existingReport = tableReports\n .find((period) => period.period_id === activePeriodId)\n ?.reports.find((report) =>\n report.sub.some((form) => form.form_id === selectedForm.value)\n );\n\n if (existingReport) {\n // Если форма уже есть, переходим на редактирование\n window.location.href = `/reports/${existingReport.report_id}/edit`;\n } else {\n // Иначе создаём новую\n window.location.href = `/forms/${selectedForm.value}?period_id=${activePeriodId}`;\n }\n }\n };\n\n // 4. Удаление отчёта целиком (функция, которая вызывается при подтверждении)\n const handleDeleteReport = async () => {\n if (!reportIdToDelete) return;\n\n try {\n // Пример запроса на сервер (DELETE):\n await fetch(`/reports/${reportIdToDelete}`, {\n method: \"DELETE\",\n });\n\n // После успешного удаления на бэке — убираем отчёт из локального стейта\n setTableReports((prev) =>\n prev.map((period) => ({\n ...period,\n reports: period.reports.filter(\n (report) => report.report_id !== reportIdToDelete\n ),\n }))\n );\n\n // Закрываем модалку после удаления\n setIsDeleteModalOpen(false);\n setReportIdToDelete(null);\n } catch (error) {\n console.error(\"Ошибка при удалении отчёта:\", error);\n // Можно показать уведомление об ошибке\n }\n };\n\n // Открыть модалку удаления отчёта\n const handleOpenDeleteModal = (reportId) => {\n setReportIdToDelete(reportId);\n setIsDeleteModalOpen(true);\n };\n\n // Закрыть модалку удаления (без удаления)\n const handleCloseDeleteModal = () => {\n setIsDeleteModalOpen(false);\n setReportIdToDelete(null);\n };\n\n // Формируем варианты для селекта\n const formOptions = forms.map((form) => ({\n value: form.id,\n label: form.short_name,\n }));\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n {tableReports.map((period) => (\n \n {/* Основная строка */}\n \n \n \n \n \n \n {/* Развёрнутый контент */}\n {expandedRows[period.period_id] && (\n \n \n \n \n )}\n \n ))}\n \n
ПериодТип периода
\n {period.reports.some((report) => report.sub.length > 0) && (\n toggleExpand(period.period_id)}\n className=\"text-blue-600 hover:text-blue-800 transition\"\n >\n \n \n )}\n \n {period.period_date}\n \n \n \n {period.period_status}\n \n \n {period.period_status !== \"Закрыт\" && (\n
\n handleOpenModal(period.period_id)}\n >\n \n \n
\n )}\n
\n
\n {period.reports.map((report) => (\n
\n
\n
\n Отчёт #{report.report_id}\n
\n
\n {/* Список форм внутри отчёта */}\n {report.sub &&\n report.sub.map((form) => (\n \n
\n \n {form.short_name}\n \n {/* Кнопка удалить отчёт */}\n \n handleOpenDeleteModal(report.report_id)\n }\n >\n \n \n
\n
\n ))}\n
\n ))}\n \n
\n\n {/* Модальное окно выбора формы */}\n {isModalOpen && (\n
\n
\n

\n Выбор формы\n

\n \n
\n \n Отмена\n \n \n Перейти\n \n
\n
\n
\n )}\n\n {/* Модальное окно подтверждения удаления отчёта */}\n {isDeleteModalOpen && (\n
\n
\n

\n Удалить отчёт?\n

\n

\n Вы действительно хотите удалить отчёт #{reportIdToDelete}? Данное\n действие необратимо.\n

\n
\n \n Отмена\n \n \n Удалить\n \n
\n
\n
\n )}\n
\n );\n}\n","import React, { useState } from \"react\";\nimport ReportsTable from \"./components/ReportsTable\";\nimport Navbar from \"../../components/Navbar\";\nimport Pagination from \"../../components/Pagination\";\n\nexport default function Reports(props) {\n return (\n
\n
\n \n\n {/* Заголовок */}\n
\n
\n

\n Отчеты\n

\n
\n
\n
\n\n {/* Основной контент */}\n
\n
\n
\n \n
\n \n
\n
\n
\n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSignOutAlt } from \"@fortawesome/free-solid-svg-icons\";\nimport logo from \"./logo.png\";\n\nconst Navbar = ({ props }) => {\n const [userName, setUserName] = useState(props.username);\n const role = props.user_role; // Роль пользователя\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n const [isLoggedIn, setIsLoggedIn] = useState(true);\n const [currentPath, setCurrentPath] = useState(window.location.pathname);\n\n const handleLogout = async () => {\n try {\n const response = await fetch(\"/session\", { method: \"DELETE\" });\n if (response.ok) {\n setIsLoggedIn(false);\n window.location.href = \"/\";\n } else {\n console.error(\"Ошибка при выходе из системы.\");\n }\n } catch (error) {\n console.error(\"Ошибка при выходе из системы:\", error);\n }\n };\n\n const menuItems = [\n { label: \"Отчеты\", path: \"/reports\" },\n { label: \"Сводные отчеты\", path: \"/reports/mixing\" },\n {\n label: \"Настройки\",\n dropdown: [\n { label: \"Подразделения\", path: \"/settings/divisions\", roles: [8] },\n { label: \"Периоды\", path: \"/settings/periods\", roles: [2, 4, 8] },\n {\n label: \"Подавшие отчеты\",\n path: \"/settings/reports\",\n roles: [2, 4, 8],\n },\n { label: \"Личные данные\", path: \"/settings/personal\" },\n {\n label: \"Приглашение для регистрации\",\n path: \"/settings/invite\",\n roles: [2, 4, 8],\n },\n { label: \"Все формы\", path: \"/forms\", roles: [8] },\n { label: \"Добавить форму\", path: \"/forms/new\", roles: [8] },\n { label: \"Добавить пользователя\", path: \"/settings/add_user\", roles: [8] },\n\n ],\n },\n ];\n\n // Фильтруем меню на основе роли пользователя\n const filteredMenuItems = menuItems.map((item) => {\n if (item.dropdown) {\n const filteredDropdown = item.dropdown.filter(\n (dropdownItem) =>\n !dropdownItem.roles || dropdownItem.roles.includes(role)\n );\n return { ...item, dropdown: filteredDropdown };\n }\n return item;\n });\n\n // Обновляем текущий путь при изменении маршрута\n useEffect(() => {\n const handleRouteChange = () => {\n setCurrentPath(window.location.pathname);\n };\n window.addEventListener(\"popstate\", handleRouteChange);\n return () => {\n window.removeEventListener(\"popstate\", handleRouteChange);\n };\n }, []);\n\n return (\n
\n
\n {/* Верхняя строка */}\n
\n
{userName}
\n
\n\n {/* Логотип и менеджер */}\n
\n
\n \n
\n

\n Алматинская Городская Коллегия Адвокатов\n

\n

Отчетность

\n
\n
\n
\n\n {/* Основное меню */}\n
\n setIsMenuOpen(!isMenuOpen)}\n >\n {isMenuOpen ? \"Закрыть меню\" : \"Меню\"}\n \n \n {filteredMenuItems.map((item, index) => (\n
\n {\n if (item.dropdown) {\n e.preventDefault();\n setIsDropdownOpen(!isDropdownOpen);\n }\n }}\n >\n {item.label}\n \n\n {item.dropdown && isDropdownOpen && (\n setIsDropdownOpen(false)}\n >\n {item.dropdown.map((dropdownItem, idx) => (\n \n {dropdownItem.label}\n \n ))}\n
\n )}\n
\n ))}\n {/* Кнопка \"Выйти\" */}\n {isLoggedIn && (\n
\n \n \n Выйти\n \n
\n )}\n
\n
\n \n \n );\n};\n\nexport default Navbar;\n","import React from \"react\";\n\nfunction Pagination({ currentPage, totalPages, basePath }) {\n const handlePageChange = (page) => {\n // Перенаправление на новую страницу\n window.location.href = `${basePath}?page=${page}`;\n };\n\n return (\n
\n handlePageChange(currentPage - 1)}\n disabled={currentPage === 1}\n className=\"px-4 py-2 bg-gray-300 text-gray-700 rounded-lg hover:bg-gray-400 disabled:opacity-50\"\n >\n Назад\n \n \n {currentPage} / {totalPages}\n \n handlePageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n className=\"px-4 py-2 bg-gray-300 text-gray-700 rounded-lg hover:bg-gray-400 disabled:opacity-50\"\n >\n Вперед\n \n
\n );\n}\n\nexport default Pagination;\n","import React from \"react\";\n\nconst RichTextComponent = ({ richText }) => {\n return (\n \n );\n};\n\nexport default RichTextComponent;","import TemplateOne from \"./TemplateOne\";\nimport TemplateTwo from \"./TemplateTwo\";\nimport TemplateThree from \"./TemplateThree\";\nimport TemplateFour from \"./TemplateFour\";\n\nconst TableFactory = {\n TemplateOne: TemplateOne,\n TemplateTwo: TemplateTwo,\n TemplateThree: TemplateThree,\n TemplateFour: TemplateFour\n};\n\nexport const getTemplate = (type) => {\n return TableFactory[type] || null;\n};\n","import React from \"react\";\n\nconst TemplateOne = ({\n title,\n headers,\n rows,\n inputValues,\n disabledInputs,\n onChange,\n}) => (\n \n \n \n \n {title}\n \n \n \n {headers[0].map((header, index) => (\n \n {header.text}\n \n ))}\n \n \n \n {rows.map((row, rowIndex) => (\n \n {row.rowNumber}\n {row.description}\n {row.values.map((name, valueIndex) => (\n \n onChange(name, e.target.value)}\n disabled={disabledInputs[name] || false}\n style={{\n width: \"100%\",\n padding: \"4px\",\n boxSizing: \"border-box\",\n backgroundColor: disabledInputs[name] ? \"#f0f0f0\" : \"white\",\n }}\n />\n \n ))}\n \n ))}\n \n \n);\n\nexport default TemplateOne;\n","import React from \"react\";\n\nconst TemplateTwo = ({ title, headers, rows, inputValues, disabledInputs, onChange }) => (\n \n \n \n \n \n {headers.map((row, rowIndex) => (\n \n {row.map((header, headerIndex) => (\n \n ))}\n \n ))}\n \n \n {rows.map((row, rowIndex) => (\n \n \n \n {row.values.map((name, valueIndex) => (\n \n ))}\n \n ))}\n \n
{title}
\n {header.text}\n
{row.rowNumber}{row.description}\n onChange(name, e.target.value)}\n disabled={disabledInputs[name] || false}\n style={{\n width: \"100%\",\n padding: \"4px\",\n boxSizing: \"border-box\",\n backgroundColor: disabledInputs[name] ? \"#f0f0f0\" : \"white\",\n }}\n />\n
\n);\n\nexport default TemplateTwo;\n","import React from \"react\";\nimport RichTextComponent from \"../../components/RichTextComponent\";\n\nconst TemplateThree = ({ title, headers, rows, inputValues, disabledInputs, onChange }) => (\n \n \n \n {headers.map((row, rowIndex) => (\n \n {row.map((header, headerIndex) => (\n \n ))}\n \n ))}\n \n \n {rows.map((row, rowIndex) => (\n \n \n \n {row.values.map((name, valueIndex) => (\n \n ))}\n \n ))}\n \n
\n \n
{row.rowNumber}{row.description}\n onChange(name, e.target.value)}\n disabled={disabledInputs[name] || false}\n style={{\n width: \"100%\",\n height: \"100%\",\n backgroundColor: disabledInputs[name] ? \"#f0f0f0\" : \"white\",\n }}\n />\n
\n);\n\nexport default TemplateThree;\n","import React from \"react\";\n\nconst TemplateFour = ({ title, headers, rows, inputValues, disabledInputs, onChange }) => (\n \n \n \n {headers.map((row, rowIndex) => (\n \n {row.map((header, headerIndex) => (\n \n ))}\n \n ))}\n \n \n {rows.map((row, rowIndex) => (\n \n \n \n {row.values.map((name, valueIndex) => (\n \n ))}\n \n ))}\n \n
\n {header.text}\n
{row.rowNumber}{row.description}\n onChange(name, e.target.value)}\n disabled={disabledInputs[name] || false}\n style={{\n width: \"100%\",\n padding: \"4px\",\n boxSizing: \"border-box\",\n backgroundColor: disabledInputs[name] ? \"#f0f0f0\" : \"white\",\n }}\n />\n
\n);\n\nexport default TemplateFour;\n","import React, { useState, useEffect } from \"react\";\nimport { getTemplate } from \"./TableStrategies/TableFactory\";\nimport { ToastContainer, toast } from \"react-toastify\";\nimport \"react-toastify/dist/ReactToastify.css\";\n\nconst DynamicTable = ({ sections, onSubmit }) => {\n const initializeState = (sections) => {\n const state = {};\n sections.forEach((section) => {\n section.rows.forEach((row) => {\n row.values.forEach((name) => {\n state[name] = \"\"; // Начальное значение для каждого инпута\n });\n });\n });\n return state;\n };\n\n const [inputValues, setInputValues] = useState(initializeState(sections));\n const [disabledInputs, setDisabledInputs] = useState({});\n\n // Функция для применения правил\n const applyRules = (rules) => {\n const newDisabledInputs = { ...disabledInputs };\n\n if (rules) {\n rules.forEach((rule) => {\n if (rule.type === \"sum\") {\n const sum = rule.sources.reduce(\n (acc, source) => acc + (parseFloat(inputValues[source]) || 0),\n 0\n );\n setInputValues((prevState) => ({\n ...prevState,\n [rule.target]: sum.toString(),\n }));\n }\n\n if (rule.type === \"gte\") {\n const sum = rule.sources.reduce(\n (acc, source) => acc + (parseFloat(inputValues[source]) || 0),\n 0\n );\n if (parseFloat(inputValues[rule.target]) < sum) {\n toast.error(\"Значение может быть только больше или равно\");\n setInputValues((prevState) => ({\n ...prevState,\n [rule.target]: sum.toString(),\n }));\n }\n }\n\n if (rule.type === \"disabled\") {\n newDisabledInputs[rule.target] = true;\n }\n });\n\n setDisabledInputs(newDisabledInputs);\n }\n };\n\n // Применяем правила при изменении inputValues\n useEffect(() => {\n sections.forEach((section) => {\n if (section.rules) {\n applyRules(section.rules);\n }\n });\n }, [inputValues, sections]);\n\n const handleInputChange = (name, newValue) => {\n setInputValues((prevState) => ({\n ...prevState,\n [name]: newValue,\n }));\n };\n const handleSubmit = () => {\n // Фильтруем только незаблокированные значения\n const validInputs = Object.keys(inputValues).reduce((acc, key) => {\n if (!disabledInputs[key]) {\n acc[key] = inputValues[key];\n }\n return acc;\n }, {});\n\n if (onSubmit) {\n onSubmit(validInputs); // Передаем данные в функцию-обработчик\n }\n };\n\n return (\n
\n \n {sections.map((section, sectionIndex) => {\n const Template = getTemplate(section.type);\n return Template ? (\n \n ) : null;\n })}\n\n \n Отправить\n \n
\n );\n};\n\nexport default DynamicTable;\n","import React from \"react\";\nimport DynamicTable from \"./DynamicTable\";\nimport Navbar from \"../components/Navbar\";\nimport { toast, ToastContainer } from \"react-toastify\";\nimport RichTextComponent from \"../components/RichTextComponent\";\n\nconst tableData = [\n {\n type: \"TemplateOne\",\n title: \"Раздел 1. Сведения о количестве граждан\",\n headers: [\n { text: \"№ строки\", rowSpan: 1, colSpan: 1 },\n { text: \"Содержание\", rowSpan: 1, colSpan: 1 },\n { text: \"Всего граждан\", rowSpan: 1, colSpan: 1 },\n { text: \"Из них граждан сельских районов\", rowSpan: 1, colSpan: 1 },\n ],\n rows: [\n {\n rowNumber: 1,\n description: \"Описание 1\",\n values: [\"sr5_1_3\", \"sr5_1_4\"],\n },\n ],\n rules: [{ type: \"disabled\", target: \"sr5_1_3\" }],\n },\n {\n type: \"TemplateTwo\",\n title: \"Раздел ОТД\",\n headers: [\n [\n { text: \"№ строки\", rowSpan: 2, colSpan: 1 },\n { text: \"Средства защиты\", rowSpan: 2, colSpan: 1 },\n { text: \"Заявлено\", rowSpan: 1, colSpan: 2 },\n { text: \"Удовлетворено\", rowSpan: 1, colSpan: 2 },\n ],\n [\n { text: \"Всего\", rowSpan: 1, colSpan: 1 },\n { text: \"Сельские районы\", rowSpan: 1, colSpan: 1 },\n { text: \"Всего\", rowSpan: 1, colSpan: 1 },\n { text: \"Сельские районы\", rowSpan: 1, colSpan: 1 },\n ],\n ],\n rows: [\n {\n rowNumber: 22,\n description: \"Запросы о предоставлении сведений\",\n values: [\"sr5_22_3\", \"sr5_22_4\", \"sr5_22_5\", \"sr5_22_6\"],\n },\n ],\n rules: [\n { type: \"sum\", target: \"sr5_22_3\", sources: [\"sr5_22_4\", \"sr5_22_5\"] },\n ],\n },\n {\n type: \"TemplateThree\",\n title: \"Раздел I. Юридическая помощь\",\n headers: [\n [\n { text: \"№ строки\", rowSpan: 2, colSpan: 1 },\n { text: \"Содержание\", rowSpan: 2, colSpan: 1 },\n { text: \"Всего\", rowSpan: 2, colSpan: 1 },\n { text: \"В том числе\", rowSpan: 1, colSpan: 3 },\n ],\n [\n { text: \"ЖК\", rowSpan: 1, colSpan: 1 },\n { text: \"ЛК\", rowSpan: 1, colSpan: 1 },\n { text: \"СД\", rowSpan: 1, colSpan: 1 },\n ],\n ],\n rows: [\n {\n rowNumber: 1,\n description: \"Юридическая помощь\",\n values: [\"sr1_1\", \"sr1_2\", \"sr1_3\", \"sr1_4\"],\n },\n ],\n rules: [{ type: \"gte\", target: \"sr1_1\", sources: [\"sr1_2\", \"sr1_3\"] }],\n },\n];\n\nconst Form = (props) => {\n const period_id = props.period_id;\n const form_id = props.form.id;\n const table = props.table;\n const form = props.form;\n const handleSubmit = (formData) => {\n // Преобразуем formData в массив объектов\n const transformedData = Object.keys(formData).map((key) => ({\n [key]: formData[key],\n }));\n\n // Подмешиваем period_id и form_id\n const dataToSend = {\n period_id: period_id, // Добавляем period_id\n form_id: form_id, // Добавляем form_id\n data: transformedData, // Передаем массив объектов\n };\n\n console.log(\"Отправка данных:\", dataToSend);\n\n fetch(\"/reports\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(dataToSend),\n })\n .then(async (response) => {\n if (response.ok) {\n toast.success(\"Форма успешно отправлена!\");\n } else {\n const errorData = await response.json();\n toast.error(\n `Ошибка при отправке формы: ${\n errorData.error || \"Неизвестная ошибка\"\n }`\n );\n }\n })\n .catch((error) => {\n console.error(\"Ошибка сети:\", error);\n toast.error(\"Ошибка сети. Попробуйте снова.\");\n });\n };\n\n return (\n
\n \n
\n \n\n \n
\n\n {/* Основной контент */}\n
\n
\n
\n
\n
\n

\n
\n
\n \n
\n
\n
\n

\n {form.form_name}\n

\n
\n \n
\n
\n \n
\n
\n
\n
\n );\n};\n\nexport default Form;\n","import React, { useState } from 'react';\nimport { ToastContainer, toast } from 'react-toastify';\nimport Modal from 'react-modal';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faEye, faEyeSlash } from '@fortawesome/free-solid-svg-icons';\nimport 'react-toastify/dist/ReactToastify.css';\n\nModal.setAppElement('#root'); // Установка root элемента для модального окна\n\nconst LoginForm = () => {\n const [username, setUsername] = useState('');\n const [password, setPassword] = useState('');\n const [loading, setLoading] = useState(false);\n const [showPassword, setShowPassword] = useState(false);\n const [isForgotModalOpen, setIsForgotModalOpen] = useState(false); // Состояние модального окна\n const [email, setEmail] = useState(''); // Состояние для email в модалке\n\n // Обработчик формы входа\n const handleSubmit = async (e) => {\n e.preventDefault();\n setLoading(true);\n\n const response = await fetch('/session', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ username, password }),\n });\n\n const data = await response.json();\n setLoading(false);\n\n if (data.success) {\n toast.success(data.message, { position: 'top-center' });\n window.location.href = '/reports'; // Перенаправление на страницу\n } else {\n toast.error(data.message, { position: 'top-center' });\n }\n };\n\n // Обработчик отправки email для сброса пароля\n const handleForgotPassword = async (e) => {\n e.preventDefault();\n setLoading(true);\n\n try {\n const response = await fetch('/session/forgot_password', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ email }),\n });\n\n const data = await response.json();\n setLoading(false);\n\n if (data.success) {\n toast.success('Инструкции по сбросу пароля отправлены на ваш email.', { position: 'top-center' });\n setIsForgotModalOpen(false); // Закрываем модалку после успешной отправки\n } else {\n toast.error(data.message, { position: 'top-center' });\n }\n } catch (error) {\n setLoading(false);\n toast.error('Ошибка при отправке запроса. Попробуйте снова.', { position: 'top-center' });\n }\n };\n\n return (\n
\n \n
\n

Авторизация

\n

\n Введите свои учетные данные для доступа к системе.\n

\n
\n\n
\n setUsername(e.target.value)}\n />\n\n
\n setPassword(e.target.value)}\n />\n setShowPassword(!showPassword)}\n className=\"absolute right-4 top-3 text-gray-500\"\n >\n \n \n
\n
\n\n
\n \n Войти\n \n

\n setIsForgotModalOpen(true)}\n >\n Забыли пароль?\n \n

\n
\n \n\n {/* Модальное окно для \"Забыли пароль?\" */}\n setIsForgotModalOpen(false)}\n className=\"bg-white p-6 rounded shadow-md max-w-md mx-auto mt-20\"\n overlayClassName=\"fixed inset-0 bg-gray-500 bg-opacity-75\"\n >\n

Сброс пароля

\n

\n Введите ваш email, чтобы получить инструкции по сбросу пароля.\n

\n
\n
\n setEmail(e.target.value)}\n />\n
\n
\n setIsForgotModalOpen(false)}\n className=\"mr-2 rounded bg-gray-300 px-4 py-2\"\n >\n Отмена\n \n \n Отправить\n \n
\n
\n \n\n \n
\n );\n};\n\nexport default LoginForm;\n","import React, { useState } from \"react\";\nimport {\n materialRenderers,\n materialCells,\n} from \"@jsonforms/material-renderers\";\nimport { JsonForms } from \"@jsonforms/react\";\nimport Navbar from \"../components/Navbar\";\nimport { ToastContainer, toast } from \"react-toastify\";\nimport \"react-toastify/dist/ReactToastify.css\";\nimport \"react-quill/dist/quill.snow.css\"; // Стили для редактора\nimport ReactQuill from \"react-quill\";\n\nconst schema = {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n title: \"Generated schema for Root\",\n type: \"object\",\n properties: {\n table: {\n type: \"array\",\n items: {\n type: \"object\",\n oneOf: [\n {\n title: \"TemplateOne\",\n properties: {\n type: { type: \"string\", const: \"TemplateOne\" },\n title: {\n type: \"string\",\n const: \"Раздел 1. Сведения о количестве граждан\",\n },\n headers: {\n type: \"array\",\n items: {\n type: \"array\",\n\n items: {\n type: \"object\",\n properties: {\n text: { type: \"string\" },\n rowSpan: { type: \"integer\" },\n colSpan: { type: \"integer\" },\n },\n required: [\"text\", \"rowSpan\", \"colSpan\"],\n },\n },\n },\n rows: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n rowNumber: { type: \"integer\" },\n description: { type: \"string\" },\n values: { type: \"array\", items: { type: \"string\" } },\n },\n required: [\"rowNumber\", \"description\", \"values\"],\n },\n },\n rules: {\n type: \"array\",\n items: {\n type: \"object\",\n type: \"object\",\n properties: {\n type: {\n type: \"string\",\n enum: [\"disabled\", \"sum\", \"gte\", \"mixing\"],\n },\n },\n oneOf: [\n {\n title: \"Disabled Rule\",\n properties: {\n type: { const: \"disabled\" },\n target: { type: \"string\" },\n },\n required: [\"type\", \"target\"],\n },\n {\n title: \"Sum Rule\",\n properties: {\n type: { const: \"sum\" },\n target: { type: \"string\" },\n sources: { type: \"array\", items: { type: \"string\" } },\n },\n required: [\"type\", \"target\", \"sources\"],\n },\n {\n title: \"GTE Rule\",\n properties: {\n type: { const: \"gte\" },\n target: { type: \"string\" },\n sources: { type: \"array\", items: { type: \"string\" } },\n },\n required: [\"type\", \"target\", \"sources\"],\n },\n {\n title: \"Mixing Rule\",\n properties: {\n type: { const: \"mixing\" },\n target: { type: \"string\" },\n source: { type: \"string\" },\n },\n required: [\"type\", \"target\", \"source\"],\n },\n ],\n },\n },\n },\n required: [\"type\", \"title\", \"headers\", \"rows\"],\n },\n {\n title: \"TemplateTwo\",\n properties: {\n type: { type: \"string\", const: \"TemplateTwo\" },\n\n title: { type: \"string\", const: \"Раздел ОТД\" },\n headers: {\n type: \"array\",\n items: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n text: { type: \"string\" },\n rowSpan: { type: \"integer\" },\n colSpan: { type: \"integer\" },\n },\n required: [\"text\", \"rowSpan\", \"colSpan\"],\n },\n },\n },\n rows: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n rowNumber: { type: \"integer\" },\n description: { type: \"string\" },\n values: { type: \"array\", items: { type: \"string\" } },\n },\n required: [\"rowNumber\", \"description\", \"values\"],\n },\n },\n rules: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n type: {\n type: \"string\",\n enum: [\"disabled\", \"sum\", \"gte\", \"mixing\"],\n },\n },\n oneOf: [\n {\n title: \"Disabled Rule\",\n properties: {\n type: { const: \"disabled\" },\n target: { type: \"string\" },\n },\n required: [\"type\", \"target\"],\n },\n {\n title: \"Sum Rule\",\n properties: {\n type: { const: \"sum\" },\n target: { type: \"string\" },\n sources: { type: \"array\", items: { type: \"string\" } },\n },\n required: [\"type\", \"target\", \"sources\"],\n },\n {\n title: \"GTE Rule\",\n properties: {\n type: { const: \"gte\" },\n target: { type: \"string\" },\n sources: { type: \"array\", items: { type: \"string\" } },\n },\n required: [\"type\", \"target\", \"sources\"],\n },\n {\n title: \"Mixing Rule\",\n properties: {\n type: { const: \"mixing\" },\n target: { type: \"string\" },\n source: { type: \"string\" },\n },\n required: [\"type\", \"target\", \"source\"],\n },\n ],\n },\n },\n },\n required: [\"type\", \"title\", \"headers\", \"rows\"],\n },\n {\n title: \"TemplateThree\",\n properties: {\n type: { type: \"string\", const: \"TemplateThree\" },\n\n title: { type: \"string\", const: \"Раздел I. Юридическая помощь\" },\n headers: {\n type: \"array\",\n items: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n text: { type: \"string\" },\n rowSpan: { type: \"integer\" },\n colSpan: { type: \"integer\" },\n },\n required: [\"text\", \"rowSpan\", \"colSpan\"],\n },\n },\n },\n rows: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n rowNumber: { type: \"integer\" },\n description: { type: \"string\" },\n values: { type: \"array\", items: { type: \"string\" } },\n },\n required: [\"rowNumber\", \"description\", \"values\"],\n },\n },\n rules: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n type: {\n type: \"string\",\n enum: [\"disabled\", \"sum\", \"gte\", \"mixing\"],\n },\n },\n oneOf: [\n {\n title: \"Disabled Rule\",\n properties: {\n type: { const: \"disabled\" },\n target: { type: \"string\" },\n },\n required: [\"type\", \"target\"],\n },\n {\n title: \"Sum Rule\",\n properties: {\n type: { const: \"sum\" },\n target: { type: \"string\" },\n sources: { type: \"array\", items: { type: \"string\" } },\n },\n required: [\"type\", \"target\", \"sources\"],\n },\n {\n title: \"GTE Rule\",\n properties: {\n type: { const: \"gte\" },\n target: { type: \"string\" },\n sources: { type: \"array\", items: { type: \"string\" } },\n },\n required: [\"type\", \"target\", \"sources\"],\n },\n {\n title: \"Mixing Rule\",\n properties: {\n type: { const: \"mixing\" },\n target: { type: \"string\" },\n source: { type: \"string\" },\n },\n required: [\"type\", \"target\", \"source\"],\n },\n ],\n },\n },\n },\n required: [\"type\", \"title\", \"headers\", \"rows\"],\n },\n {\n title: \"TemplateFour\",\n properties: {\n type: { type: \"string\", const: \"TemplateFour\" },\n\n headers: {\n type: \"array\",\n items: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n text: { type: \"string\" },\n rowSpan: { type: \"integer\" },\n colSpan: { type: \"integer\" },\n },\n required: [\"text\", \"rowSpan\", \"colSpan\"],\n },\n },\n },\n rows: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n rowNumber: { type: \"integer\" },\n description: { type: \"string\" },\n values: { type: \"array\", items: { type: \"string\" } },\n },\n required: [\"rowNumber\", \"description\", \"values\"],\n },\n },\n rules: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n type: {\n type: \"string\",\n enum: [\"disabled\", \"sum\", \"gte\", \"mixing\"],\n },\n },\n oneOf: [\n {\n title: \"Disabled Rule\",\n properties: {\n type: { const: \"disabled\" },\n target: { type: \"string\" },\n },\n required: [\"type\", \"target\"],\n },\n {\n title: \"Sum Rule\",\n properties: {\n type: { const: \"sum\" },\n target: { type: \"string\" },\n sources: { type: \"array\", items: { type: \"string\" } },\n },\n required: [\"type\", \"target\", \"sources\"],\n },\n {\n title: \"GTE Rule\",\n properties: {\n type: { const: \"gte\" },\n target: { type: \"string\" },\n sources: { type: \"array\", items: { type: \"string\" } },\n },\n required: [\"type\", \"target\", \"sources\"],\n },\n {\n title: \"Mixing Rule\",\n properties: {\n type: { const: \"mixing\" },\n target: { type: \"string\" },\n source: { type: \"string\" },\n },\n required: [\"type\", \"target\", \"source\"],\n },\n ],\n },\n },\n },\n required: [\"type\", \"headers\", \"rows\"],\n },\n ],\n },\n },\n },\n};\n\nconst initialData = {};\n\nfunction FormNew(props) {\n const [data, setData] = useState(initialData);\n const [formName, setFormName] = useState(\"\");\n const [shortFormName, setShortFormName] = useState(\"\")\n const [information, setInformation] = useState(\"\");\n const [header, setHeader] = useState(\"\");\n const [isVisible, setIsVisible] = useState(true);\n const [isCanceled, setIsCanceled] = useState(false);\n const [formType, setFormType] = useState(\"main_report\"); // 'main_report' или 'summary_report'\n\n const handleSubmit = async (event) => {\n event.preventDefault();\n try {\n const combinedData = {\n form_name: formName,\n short_name: shortFormName,\n information,\n header,\n isVisible,\n isCanceled,\n formType,\n ...data,\n };\n\n const response = await fetch(\"/forms\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(combinedData),\n });\n\n if (!response.ok) {\n const errorData = await response.json();\n throw new Error(errorData.message || \"Ошибка при отправке данных\");\n }\n toast.success(\"Форма успешно отправлена\");\n } catch (error) {\n toast.error(error.message);\n }\n };\n\n return (\n <>\n \n
\n
\n \n\n {/* Заголовок */}\n
\n
\n

\n Новая форма\n

\n
\n
\n
\n\n {/* Основной контент */}\n
\n
\n
\n
\n {/* Существующие поля */}\n
\n \n setFormName(e.target.value)}\n className=\"block w-full mt-1 border-gray-300 rounded-md shadow-sm focus:ring-blue-500 focus:border-blue-500\"\n />\n
\n
\n \n setShortFormName(e.target.value)}\n className=\"block w-full mt-1 border-gray-300 rounded-md shadow-sm focus:ring-blue-500 focus:border-blue-500\"\n />\n
\n
\n \n \n
\n
\n \n \n
\n\n {/* Новые поля */}\n
\n \n setIsVisible(e.target.checked)}\n className=\"mt-1\"\n />\n
\n
\n \n setIsCanceled(e.target.checked)}\n className=\"mt-1\"\n />\n
\n
\n \n setFormType(e.target.value)}\n className=\"block w-full mt-1 border-gray-300 rounded-md shadow-sm focus:ring-blue-500 focus:border-blue-500\"\n >\n \n \n \n
\n \n \n Отправить\n \n \n
\n
\n
\n
\n \n );\n}\n\nexport default FormNew;\n","import React, { useState, useEffect } from \"react\";\nimport { getTemplate } from \"./TableStrategies/TableFactory\";\nimport { ToastContainer, toast } from \"react-toastify\";\nimport \"react-toastify/dist/ReactToastify.css\";\n\nconst DynamicTable = ({ sections, onSubmit, initialValues = {} }) => {\n const initializeState = (sections, initialValues) => {\n const state = {};\n sections.forEach((section) => {\n section.rows.forEach((row) => {\n row.values.forEach((name) => {\n state[name] = initialValues[name] || \"\"; // Используем начальное значение, если оно есть\n });\n });\n });\n return state;\n };\n\n const [inputValues, setInputValues] = useState(\n initializeState(sections, initialValues)\n );\n const [disabledInputs, setDisabledInputs] = useState({});\n\n // Функция для применения правил\n const applyRules = (rules) => {\n const newDisabledInputs = { ...disabledInputs };\n\n if (rules) {\n rules.forEach((rule) => {\n if (rule.type === \"sum\") {\n const sum = rule.sources.reduce(\n (acc, source) => acc + (parseFloat(inputValues[source]) || 0),\n 0\n );\n setInputValues((prevState) => ({\n ...prevState,\n [rule.target]: sum.toString(),\n }));\n }\n\n if (rule.type === \"gte\") {\n const sum = rule.sources.reduce(\n (acc, source) => acc + (parseFloat(inputValues[source]) || 0),\n 0\n );\n if (parseFloat(inputValues[rule.target]) < sum) {\n toast.error(\"Значение может быть только больше или равно\");\n setInputValues((prevState) => ({\n ...prevState,\n [rule.target]: sum.toString(),\n }));\n }\n }\n\n if (rule.type === \"lte\") {\n const sum = rule.sources.reduce(\n (acc, source) => acc + (parseFloat(inputValues[source]) || 0),\n 0\n );\n if (parseFloat(inputValues[rule.target]) > sum) {\n toast.error(\"Значение может быть только меньше или равно\");\n setInputValues((prevState) => ({\n ...prevState,\n [rule.target]: sum.toString(),\n }));\n }\n }\n\n if (rule.type === \"disabled\") {\n newDisabledInputs[rule.target] = true;\n }\n });\n\n setDisabledInputs(newDisabledInputs);\n }\n };\n\n // Применяем правила при изменении inputValues\n useEffect(() => {\n sections.forEach((section) => {\n if (section.rules) {\n applyRules(section.rules);\n }\n });\n }, [inputValues, sections]);\n\n const handleInputChange = (name, newValue) => {\n setInputValues((prevState) => ({\n ...prevState,\n [name]: newValue,\n }));\n };\n const handleSubmit = () => {\n // Фильтруем только незаблокированные значения\n const validInputs = Object.keys(inputValues).reduce((acc, key) => {\n if (!disabledInputs[key]) {\n acc[key] = inputValues[key];\n }\n return acc;\n }, {});\n\n if (onSubmit) {\n onSubmit(validInputs); // Передаем данные в функцию-обработчик\n }\n };\n\n return (\n
\n \n {sections.map((section, sectionIndex) => {\n const Template = getTemplate(section.type);\n return Template ? (\n \n ) : null;\n })}\n\n \n Отправить\n \n
\n );\n};\n\nexport default DynamicTable;\n","import React from \"react\";\nimport DynamicTable from \"./DynamicTableEdit\";\nimport Navbar from \"../components/Navbar\";\nimport { toast, ToastContainer } from \"react-toastify\";\nimport RichTextComponent from \"../components/RichTextComponent\";\nimport { jsPDF } from \"jspdf\";\nimport html2canvas from \"html2canvas\";\n\nconst EditForm = (props) => {\n const { report, table, data, form, opened } = props;\n\n const initialValues = data.reduce((acc, item) => {\n const [key, value] = Object.entries(item)[0];\n acc[key] = value;\n return acc;\n }, {});\n\n const handleSubmit = (formData) => {\n const transformedData = Object.keys(formData).map((key) => ({\n [key]: formData[key],\n }));\n\n const dataToSend = {\n report_id: report.id,\n data: transformedData,\n };\n\n fetch(`/reports/${report.id}`, {\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(dataToSend),\n })\n .then(async (response) => {\n if (response.ok) {\n toast.success(\"Форма успешно обновлена!\");\n } else {\n const errorData = await response.json();\n toast.error(\n `Ошибка при обновлении формы: ${\n errorData.error || \"Неизвестная ошибка\"\n }`\n );\n }\n })\n .catch((error) => {\n console.error(\"Ошибка сети:\", error);\n toast.error(\"Ошибка сети. Попробуйте снова.\");\n });\n };\n const exportToPDF = async () => {\n const content = document.getElementById(\"pdf-content\");\n \n // Создаем клон содержимого\n const clone = content.cloneNode(true);\n \n // Заменяем все инпуты на p-теги в клоне\n const inputs = clone.querySelectorAll(\"input\");\n inputs.forEach((input) => {\n const p = document.createElement(\"p\");\n p.textContent = input.value;\n input.parentNode.replaceChild(p, input);\n });\n \n // Временно добавляем клон в документ для корректного рендера\n const offScreenDiv = document.createElement(\"div\");\n offScreenDiv.style.position = \"fixed\";\n offScreenDiv.style.top = \"-9999px\";\n offScreenDiv.style.left = \"-9999px\";\n offScreenDiv.appendChild(clone);\n document.body.appendChild(offScreenDiv);\n \n // Используем html2canvas для рендеринга содержимого в канвас\n const canvas = await html2canvas(clone, {\n scale: 2, // Увеличиваем качество\n ignoreElements: (element) => element.classList.contains(\"no-print\"),\n });\n \n // Удаляем временный контейнер\n document.body.removeChild(offScreenDiv);\n \n const pdf = new jsPDF(\"p\", \"mm\", \"a4\");\n \n const pdfWidth = pdf.internal.pageSize.getWidth();\n const pdfHeight = pdf.internal.pageSize.getHeight();\n \n const canvasWidth = canvas.width;\n const canvasHeight = canvas.height;\n \n const imgData = canvas.toDataURL(\"image/png\");\n \n const scaleFactor = pdfWidth / canvasWidth;\n const scaledHeight = canvasHeight * scaleFactor;\n \n let yPosition = 0;\n \n // Разбиваем содержимое на страницы\n while (yPosition < scaledHeight) {\n const nextHeight = Math.min(scaledHeight - yPosition, pdfHeight);\n \n // Вырезаем часть изображения\n const croppedCanvas = document.createElement(\"canvas\");\n croppedCanvas.width = canvas.width;\n croppedCanvas.height = Math.floor(nextHeight / scaleFactor);\n \n const ctx = croppedCanvas.getContext(\"2d\");\n ctx.drawImage(\n canvas,\n 0,\n yPosition / scaleFactor,\n canvas.width,\n croppedCanvas.height,\n 0,\n 0,\n canvas.width,\n croppedCanvas.height\n );\n \n const croppedImgData = croppedCanvas.toDataURL(\"image/png\");\n \n // Добавляем изображение в PDF\n pdf.addImage(\n croppedImgData,\n \"PNG\",\n 0,\n 0,\n pdfWidth,\n (croppedCanvas.height * pdfWidth) / croppedCanvas.width\n );\n \n yPosition += nextHeight;\n \n if (yPosition < scaledHeight) {\n pdf.addPage();\n }\n }\n \n pdf.save(\"report.pdf\");\n };\n \n \n \n \n return (\n
\n \n
\n \n
\n\n {/* Основной контент */}\n
\n
\n
\n
\n \n Экспорт в PDF\n \n
\n
\n \n
\n
\n
\n

\n {form.form_name}\n

\n
\n \n
\n
\n \n\n
\n
\n
\n );\n};\n\nexport default EditForm;\n","import React, { useEffect, useState } from \"react\";\nimport {\n materialRenderers,\n materialCells,\n} from \"@jsonforms/material-renderers\";\nimport { JsonForms } from \"@jsonforms/react\";\nimport { ToastContainer, toast } from \"react-toastify\";\nimport ReactQuill from \"react-quill\";\nimport \"react-toastify/dist/ReactToastify.css\";\nimport \"react-quill/dist/quill.snow.css\"; // Стили для редактора\nimport Navbar from \"../components/Navbar\";\n\nconst schema = {\n type: \"object\",\n properties: {\n form: {\n title: \"\",\n type: \"object\",\n properties: {\n form_name: { type: \"string\", title: \"Название формы\" },\n short_name: { type: \"string\", title: \"Короткое название формы\" },\n is_visible: { type: \"boolean\", title: \"Видимость\" },\n canceled: { type: \"boolean\", title: \"Отменено\" },\n summary_form_id: {\n type: \"number\",\n title: \"Id формы которую суммируем\",\n },\n form_type: {\n type: \"string\",\n enum: [\"summary_report\", \"main_report\"],\n title: \"Тип формы\",\n },\n created_at: { type: \"string\", format: \"date-time\", title: \"Создано\" },\n updated_at: { type: \"string\", format: \"date-time\", title: \"Обновлено\" },\n },\n required: [\"form_name\", \"form_type\"],\n },\n table: {\n type: \"array\",\n title: \"Таблицы\",\n items: {\n type: \"object\",\n properties: {\n title: { type: \"string\", title: \"Название таблицы\" },\n type: {\n type: \"string\",\n title: \"Тип таблицы\",\n default: \"TemplateThree\",\n },\n rows: {\n type: \"array\",\n title: \"Строки\",\n items: {\n type: \"object\",\n properties: {\n rowNumber: { type: \"string\", title: \"Номер строки\" },\n description: { type: \"string\", title: \"Описание строки\" },\n values: {\n type: \"array\",\n title: \"Значения\",\n items: { type: \"string\" },\n },\n },\n },\n },\n rules: {\n type: \"array\",\n title: \"Правила\",\n items: {\n type: \"object\",\n properties: {\n type: { type: \"string\", title: \"Тип правила\" },\n target: { type: \"string\", title: \"Цель\" },\n sources: {\n type: \"array\",\n title: \"Источники\",\n items: { type: \"string\" },\n },\n },\n },\n },\n headers: {\n type: \"array\",\n title: \"Заголовки\",\n items: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n text: { type: \"string\", title: \"Текст\" },\n colSpan: { type: \"number\", title: \"Кол-во столбцов\" },\n rowSpan: { type: \"number\", title: \"Кол-во строк\" },\n },\n },\n },\n },\n },\n },\n },\n },\n};\n\nconst uischema = {\n type: \"VerticalLayout\",\n elements: [\n { type: \"Control\", scope: \"#/properties/form\" },\n { type: \"Control\", scope: \"#/properties/table\" },\n ],\n};\n\nconst FormEdit = (props) => {\n const [data, setData] = useState(props);\n\n const handleSave = async () => {\n try {\n const response = await fetch(`/forms/${data.form.id}`, {\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n });\n\n if (response.ok) {\n toast.success(\"Данные успешно сохранены!\");\n } else {\n const error = await response.json();\n toast.error(`Ошибка: ${error.message}`);\n }\n } catch (error) {\n toast.error(`Ошибка: ${error.message}`);\n }\n };\n\n const handleRichTextChange = (key, value) => {\n setData((prevData) => ({\n ...prevData,\n form: {\n ...prevData.form,\n [key]: value,\n },\n }));\n };\n\n return (\n <>\n \n
\n
\n \n\n {/* Заголовок */}\n
\n
\n

\n Редактирование формы\n

\n
\n
\n
\n\n {/* Основной контент */}\n
\n
\n
\n {/* Rich Text Editor */}\n
\n
\n
\n \n handleRichTextChange(\"header\", value)}\n className=\"mt-2\"\n />\n
\n\n
\n \n \n handleRichTextChange(\"information\", value)\n }\n className=\"mt-2\"\n />\n
\n
\n
\n {/* JSON Forms */}\n setData(data)}\n />\n\n \n Сохранить\n \n
\n
\n
\n
\n \n );\n};\n\nexport default FormEdit;\n","import React, { useState, useEffect } from \"react\";\nimport { toast } from \"react-toastify\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faEye, faEyeSlash } from \"@fortawesome/free-solid-svg-icons\";\n\nexport default function PersonalForm({ current_user }) {\n const [formData, setFormData] = useState({\n full_name: \"\",\n email: \"\",\n login: \"\",\n password: \"\",\n confirmPassword: \"\",\n });\n const [showPassword, setShowPassword] = useState(false);\n const [showConfirmPassword, setShowConfirmPassword] = useState(false);\n\n useEffect(() => {\n // Устанавливаем дефолтные значения из текущего пользователя\n if (current_user) {\n setFormData({\n full_name: current_user.realname || \"\",\n email: current_user.email || \"\",\n login: current_user.username || \"\",\n password: \"\", // Оставляем пароли пустыми для безопасности\n confirmPassword: \"\",\n });\n }\n }, [current_user]);\n\n const handleChange = (e) => {\n const { name, value } = e.target;\n setFormData({ ...formData, [name]: value });\n };\n\n const togglePasswordVisibility = () => {\n setShowPassword((prev) => !prev);\n };\n\n const toggleConfirmPasswordVisibility = () => {\n setShowConfirmPassword((prev) => !prev);\n };\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n\n if (formData.password !== formData.confirmPassword) {\n toast.error(\"Пароли не совпадают\");\n return;\n }\n\n try {\n const response = await fetch(\"/settings/personal\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(formData),\n });\n\n if (response.ok) {\n toast.success(\"Данные успешно сохранены\");\n } else {\n toast.error(\"Ошибка при сохранении данных\");\n }\n } catch (error) {\n toast.error(\"Произошла ошибка сети\");\n }\n };\n\n return (\n
\n

Настройки пользователя

\n
\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n
\n \n \n \n \n
\n
\n\n
\n \n
\n \n \n \n \n
\n
\n\n \n Сохранить\n \n \n
\n );\n}\n","import React, { useState } from \"react\";\nimport Navbar from \"../../components/Navbar\";\nimport Modal from \"react-modal\";\nimport { toast, ToastContainer } from \"react-toastify\";\nimport Pagination from \"../../components/Pagination\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPenToSquare, faTrashAlt } from \"@fortawesome/free-solid-svg-icons\";\n\nModal.setAppElement(\"#root\");\n\nexport default function Mixing(props) {\n const [reports, setReports] = useState(props.reports);\n const [divisions, setDivisions] = useState(props.divisions);\n const [forms, setForms] = useState(props.forms);\n const [periods, setPeriods] = useState(props.periods);\n const [isModalOpen, setIsModalOpen] = useState(false);\n\n const [selectedReportName, setSelectedReportName] = useState(\"\");\n const [selectedPeriodStart, setSelectedPeriodStart] = useState(\"\");\n const [selectedPeriodEnd, setSelectedPeriodEnd] = useState(\"\");\n const [selectedForm, setSelectedForm] = useState(forms[0].id);\n const [selectedDivisions, setSelectedDivisions] = useState([]);\n const [expandedDivisions, setExpandedDivisions] = useState({}); // Хранит состояние раскрытых подразделений\n const userRole = props.user_role;\n const userId = props.user_id;\n const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false);\n const [reportToDelete, setReportToDelete] = useState(null);\n // Функция для открытия модального окна\n const openModal = () => setIsModalOpen(true);\n\n // Функция для закрытия модального окна\n const closeModal = () => {\n setIsModalOpen(false);\n setSelectedPeriodStart(\"\");\n setSelectedPeriodEnd(\"\");\n };\n \n\n // Функция для отправки формы\n const handleSubmit = async (e) => {\n e.preventDefault();\n\n // Проверка: все обязательные поля заполнены\n if (!selectedReportName) {\n toast.error(\"Название отчета обязательно.\");\n return;\n }\n\n if (!selectedPeriodStart || !selectedPeriodEnd) {\n toast.error(\"Необходимо выбрать период.\");\n return;\n }\n\n \n\n if (!selectedForm) {\n toast.error(\"Необходимо выбрать форму.\");\n return;\n }\n\n // Проверка: хотя бы один пользователь должен быть выбран\n let users_ids;\n if (userRole === 1) {\n // Если роль пользователя 1, отправляем только его ID\n users_ids = [userId];\n } else {\n if (selectedDivisions.length === 0) {\n toast.error(\n \"Необходимо выбрать хотя бы одного пользователя из подразделений.\"\n );\n return;\n }\n // Маппируем selectedDivisions, чтобы отправить только user_id\n users_ids = selectedDivisions.map(\n (divisionUser) => divisionUser.split(\"-\")[1]\n );\n }\n\n // Подготовка данных для отправки\n const data = {\n report_name: selectedReportName,\n period_start: selectedPeriodStart,\n period_end: selectedPeriodEnd,\n form_id: selectedForm,\n users_ids, // Передаем только user_ids\n };\n\n try {\n const response = await fetch(\"/reports\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n });\n\n if (response.ok) {\n const responseData = await response.json(); // Парсим JSON-ответ\n window.location.href = responseData.link; // Переходим по полученному линку // Можно добавить логику для обновления списка отчетов или перезагрузки данных\n } else {\n if (response.status === 400) {\n toast.error(\"Дата окончания периода не может быть раньше даты начала периода\");\n } else {\n toast.error(\"Ошибка при создании отчета. Попробуйте снова.\");\n }\n }\n } catch (error) {\n toast.error(\"Ошибка при соединении с сервером.\");\n }\n };\n\n // Функция для переключения состояния раскрытия подразделения\n const toggleDivision = (divisionId) => {\n setExpandedDivisions((prev) => ({\n ...prev,\n [divisionId]: !prev[divisionId],\n }));\n };\n\n // Функция для обработки выбора подразделения или пользователя\n const handleDivisionSelection = (divisionId, userId = null) => {\n setSelectedDivisions((prev) => {\n if (userId === null) {\n // Если выбран только division, добавляем всех пользователей из этого подразделения\n const divisionUsers =\n divisions\n .find((d) => d.id === divisionId)\n ?.users.map((u) => `${divisionId}-${u.id}`) || [];\n\n if (prev.some((id) => id.startsWith(`${divisionId}-`))) {\n // Если подразделение уже выбрано, удаляем всех пользователей из этого подразделения\n return prev.filter((id) => !id.startsWith(`${divisionId}-`));\n } else {\n // Добавляем всех пользователей из подразделения\n return [...prev, ...divisionUsers];\n }\n } else {\n // Для конкретного пользователя (userId)\n const userKey = `${divisionId}-${userId}`;\n if (prev.includes(userKey)) {\n return prev.filter((id) => id !== userKey);\n } else {\n return [...prev, userKey];\n }\n }\n });\n };\n\n // Функция для обработки выбора всех пользователей из всех подразделений\n const handleSelectAll = () => {\n const allUsers = divisions.flatMap((division) =>\n division.users.map((user) => `${division.id}-${user.id}`)\n );\n setSelectedDivisions(allUsers);\n };\n\n // Функция для отмены выбора всех пользователей из всех подразделений\n const handleDeselectAll = () => {\n setSelectedDivisions([]);\n };\n\n // Функция для получения доступных периодов\n const getAvailablePeriods = () =>\n periods.map((period) => ({\n id: period.id, // Используем ID\n displayValue: period.period,\n }));\n\n const openDeleteModal = (reportId) => {\n setReportToDelete(reportId);\n setIsDeleteModalOpen(true);\n };\n\n // Функция закрытия модального окна\n const closeDeleteModal = () => {\n setIsDeleteModalOpen(false);\n setReportToDelete(null);\n };\n\n // Функция подтверждения удаления\n const confirmDeleteReport = async () => {\n try {\n const response = await fetch(`/reports/${reportToDelete}`, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n if (response.ok) {\n toast.success(\"Отчет успешно удален!\");\n setReports(reports.filter((report) => report.id !== reportToDelete));\n closeDeleteModal();\n } else {\n toast.error(\"Ошибка при удалении отчета. Попробуйте снова.\");\n }\n } catch (error) {\n toast.error(\"Ошибка при соединении с сервером.\");\n }\n };\n return (\n
\n \n
\n \n\n {/* Заголовок */}\n
\n
\n

\n Отчеты\n

\n \n Создать новый отчет\n \n
\n
\n
\n\n {/* Основной контент */}\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n {reports.map((report) => (\n \n \n \n \n \n \n ))}\n \n
\n Наименование\n \n Форма\n \n Дата создания\n \n Действия\n
\n \n {report.name}\n \n \n {report.short_name}\n \n {new Date(report.date_created).toLocaleDateString()}\n \n \n \n \n openDeleteModal(report.id)}\n className=\"text-red-600 hover:text-red-900\"\n title=\"Удалить\"\n >\n \n \n
\n
\n \n
\n
\n\n {/* Модальное окно */}\n \n

Создать новый отчет

\n
\n
\n \n setSelectedReportName(e.target.value)}\n className=\"mt-1 block w-full border-gray-300 rounded-md shadow-sm focus:border-blue-500 focus:ring focus:ring-blue-200\"\n />\n
\n
\n \n
\n setSelectedPeriodStart(e.target.value)}\n className=\"mt-1 block w-1/2 border-gray-300 rounded-md shadow-sm focus:border-blue-500 focus:ring focus:ring-blue-200\"\n >\n \n {getAvailablePeriods().map((period) => (\n \n ))}\n \n setSelectedPeriodEnd(e.target.value)}\n className=\"mt-1 block w-1/2 border-gray-300 rounded-md shadow-sm focus:border-blue-500 focus:ring focus:ring-blue-200\"\n >\n \n {getAvailablePeriods().map((period) => (\n \n ))}\n \n
\n
\n\n
\n \n setSelectedForm(e.target.value)}\n className=\"mt-1 block w-full border-gray-300 rounded-md shadow-sm focus:border-blue-500 focus:ring focus:ring-blue-200\"\n >\n {forms.map((form) => (\n \n ))}\n \n
\n\n {/* Блок подразделений не отображается для userRole === 1 */}\n {userRole !== 1 && (\n
\n \n
\n {/* Кнопки для выбора всех или отмены выбора всех */}\n
\n \n Выбрать всех\n \n \n Отменить всех\n \n
\n {divisions.map((division) => (\n
\n {/* Раздел */}\n
\n \n id.startsWith(`${division.id}-`)\n )}\n onChange={() => handleDivisionSelection(division.id)}\n className=\"mr-2\"\n />\n toggleDivision(division.id)}\n >\n {division.name.trim()}\n \n
\n\n {/* Пользователи подразделения */}\n {expandedDivisions[division.id] &&\n division.users.map((user) => (\n
\n \n handleDivisionSelection(division.id, user.id)\n }\n className=\"mr-2\"\n />\n {user.realname}\n
\n ))}\n
\n ))}\n
\n
\n )}\n\n {/* Кнопки */}\n
\n \n Отмена\n \n \n Сохранить\n \n
\n
\n \n\n \n

Подтверждение удаления

\n

\n Вы уверены, что хотите удалить этот отчет? Это действие необратимо.\n

\n
\n \n Отмена\n \n \n Удалить\n \n
\n \n
\n );\n}\n","import React, { useState } from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPenToSquare, faTrashAlt } from \"@fortawesome/free-solid-svg-icons\";\nimport Modal from \"react-modal\";\nimport { toast } from \"react-toastify\";\nimport Navbar from \"../components/Navbar\";\n\nModal.setAppElement(\"#root\");\n\nexport default function Reports(props) {\n const [forms, setForms] = useState(props.forms);\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [formToDelete, setFormToDelete] = useState(null);\n\n const handleDelete = async (formId) => {\n try {\n const response = await fetch(`/forms/${formId}`, {\n method: \"DELETE\",\n });\n if (response.ok) {\n setForms(forms.filter((form) => form.id !== formId));\n setIsModalOpen(false);\n toast.success(\"Форма успешно удалена!\");\n } else {\n toast.error(\"Ошибка при удалении формы.\");\n }\n } catch (error) {\n console.error(\"Ошибка при запросе\", error);\n toast.error(\"Произошла ошибка при запросе.\");\n }\n };\n\n const openDeleteModal = (formId) => {\n setFormToDelete(formId);\n setIsModalOpen(true);\n };\n\n const closeDeleteModal = () => {\n setIsModalOpen(false);\n setFormToDelete(null);\n };\n\n const getFormType = (type) => {\n switch (type) {\n case \"main_report\":\n return \"Отчет\";\n case \"summary_report\":\n return \"Сводный отчет\";\n default:\n return type;\n }\n };\n\n return (\n
\n
\n \n\n {/* Заголовок */}\n
\n
\n

\n Отчеты\n

\n
\n
\n
\n\n {/* Основной контент */}\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n {forms.map((form) => (\n \n \n \n \n \n \n \n ))}\n \n
Название формыТип формыВидима?Отменена?Действия
\n {form.short_name}\n \n {getFormType(form.form_type)}\n \n {form.is_visible ? \"Да\" : \"Нет\"}\n \n {form.canceled ? \"Да\" : \"Нет\"}\n \n \n (window.location.href = `/forms/${form.id}/edit`)\n }\n >\n \n \n openDeleteModal(form.id)}\n >\n \n \n
\n
\n
\n
\n\n {isModalOpen && (\n
\n
\n

\n Вы уверены, что хотите удалить эту форму?\n

\n
\n \n Отмена\n \n handleDelete(formToDelete)}\n className=\"px-4 py-2 bg-red-600 text-white rounded-lg hover:bg-red-700\"\n >\n Удалить\n \n
\n
\n
\n )}\n
\n );\n}\n","import React, { useState } from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faPenToSquare,\n faTrashAlt,\n faChevronDown,\n faChevronRight,\n faCheck,\n faTimes,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport Modal from \"react-modal\";\nimport { ToastContainer, toast } from \"react-toastify\";\n\nModal.setAppElement(\"#root\");\n\nconst roles = {\n 8: \"Администратор\",\n 4: \"Сводящий\",\n 2: \"Заведующий\",\n 1: \"Адвокат\",\n};\n\nexport default function DivisionsTable({ divisions, users }) {\n const [divisionList, setDivisionList] = useState(divisions);\n const [newDivision, setNewDivision] = useState({ name: \"\", manager_id: \"\" });\n const [editingId, setEditingId] = useState(null);\n const [editingBackup, setEditingBackup] = useState(null);\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false);\n const [userToEdit, setUserToEdit] = useState(null);\n const [divisionToDelete, setDivisionToDelete] = useState(null);\n const [expandedDivisions, setExpandedDivisions] = useState([]);\n const [isDeleteUserModalOpen, setIsDeleteUserModalOpen] = useState(false);\n const [userToDelete, setUserToDelete] = useState(null);\n\n const toggleDivision = (id) => {\n setExpandedDivisions((prev) =>\n prev.includes(id) ? prev.filter((d) => d !== id) : [...prev, id]\n );\n };\n\n const handleInputChange = (e, id) => {\n const { name, value } = e.target;\n const updatedDivisions = divisionList.map((division) =>\n division.id === id ? { ...division, [name]: value } : division\n );\n setDivisionList(updatedDivisions);\n };\n\n const handleAddDivision = async () => {\n const response = await fetch(\"/settings/add_divisions\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(newDivision),\n });\n if (response.ok) {\n const addedDivision = await response.json();\n setDivisionList([...divisionList, addedDivision]);\n setNewDivision({ name: \"\", manager_id: \"\" });\n toast.success(\"Подразделение успешно добавлено!\");\n } else {\n toast.error(\"Ошибка при добавлении подразделения.\");\n }\n };\n\n const handleEditDivision = async (division) => {\n const response = await fetch(\"/settings/update_divisions\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(division),\n });\n\n if (response.ok) {\n const updatedDivision = await response.json();\n\n const updatedDivisionList = divisionList.map((d) =>\n d.id === updatedDivision.id\n ? {\n ...updatedDivision,\n users: d.users || [],\n }\n : d\n );\n\n setDivisionList(updatedDivisionList);\n setEditingId(null);\n setEditingBackup(null);\n toast.success(\"Изменения сохранены!\");\n } else {\n toast.error(\"Ошибка при сохранении изменений.\");\n }\n };\n\n const handleCancelEdit = () => {\n if (editingBackup) {\n const restoredDivisions = divisionList.map((division) =>\n division.id === editingBackup.id ? editingBackup : division\n );\n setDivisionList(restoredDivisions);\n }\n setEditingId(null);\n setEditingBackup(null);\n };\n\n const startEditing = (division) => {\n setEditingId(division.id);\n setEditingBackup({ ...division });\n };\n\n const openDeleteModal = (id) => {\n setDivisionToDelete(id);\n setIsDeleteModalOpen(true);\n };\n\n const closeDeleteModal = () => {\n setIsDeleteModalOpen(false);\n setDivisionToDelete(null);\n };\n\n const handleDeleteDivision = async () => {\n const response = await fetch(\"/settings/delete_divisions\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ id: divisionToDelete }),\n });\n\n if (response.ok) {\n setDivisionList(divisionList.filter((d) => d.id !== divisionToDelete));\n closeDeleteModal();\n toast.success(\"Подразделение удалено!\");\n } else {\n toast.error(\"Ошибка при удалении подразделения.\");\n }\n };\n\n const openEditUserModal = (user) => {\n setUserToEdit({ ...user });\n setIsModalOpen(true);\n };\n\n const handleEditUser = async () => {\n const response = await fetch(\"/settings/update_user\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(userToEdit),\n });\n\n if (response.ok) {\n const updatedUser = await response.json();\n\n setDivisionList((prev) =>\n prev.map((division) =>\n division.id === updatedUser.division_id\n ? {\n ...division,\n users: division.users.map((user) =>\n user.id === updatedUser.id ? updatedUser : user\n ),\n }\n : division\n )\n );\n toast.success(\"Пользователь обновлен!\");\n setIsModalOpen(false);\n } else {\n toast.error(\"Ошибка при обновлении пользователя.\");\n }\n };\n\n const openDeleteUserModal = (userId) => {\n setUserToDelete(userId);\n setIsDeleteUserModalOpen(true);\n };\n\n // Закрыть модалку\n const closeDeleteUserModal = () => {\n setIsDeleteUserModalOpen(false);\n setUserToDelete(null);\n };\n\n // Подтверждение удаления пользователя\n const confirmDeleteUser = async () => {\n const response = await fetch(\"/settings/delete_user\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ id: userToDelete }),\n });\n\n if (response.ok) {\n setDivisionList((prev) =>\n prev.map((division) => ({\n ...division,\n users: division.users.filter((user) => user.id !== userToDelete),\n }))\n );\n toast.success(\"Пользователь удален!\");\n } else {\n toast.error(\"Ошибка при удалении пользователя.\");\n }\n\n closeDeleteUserModal();\n };\n\n const handleDeleteUser = async (userId) => {\n const response = await fetch(\"/settings/delete_user\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ id: userId }),\n });\n\n if (response.ok) {\n setDivisionList((prev) =>\n prev.map((division) => ({\n ...division,\n users: division.users.filter((user) => user.id !== userId),\n }))\n );\n toast.success(\"Пользователь удален!\");\n } else {\n toast.error(\"Ошибка при удалении пользователя.\");\n }\n };\n\n return (\n
\n \n
\n
\n
\n

\n Подразделения\n

\n
\n
\n
\n\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n {/* Форма для добавления подразделения */}\n \n \n \n \n \n \n \n\n {divisionList.map((division) => (\n <>\n \n \n \n \n \n \n \n {expandedDivisions.includes(division.id) &&\n division.users.map((user) => (\n \n \n \n \n \n \n \n ))}\n \n ))}\n \n
IDНаименованиеРуководительДействия
-\n \n setNewDivision({ ...newDivision, name: e.target.value })\n }\n className=\"w-full p-1 border rounded\"\n />\n \n \n setNewDivision({\n ...newDivision,\n manager_id: e.target.value,\n })\n }\n className=\"w-full p-1 border rounded\"\n >\n \n {users.map((user) => (\n \n ))}\n \n \n \n Добавить\n \n
\n \n {division.id}\n {editingId === division.id ? (\n handleInputChange(e, division.id)}\n className=\"w-full p-1 border rounded\"\n />\n ) : (\n division.name.trim()\n )}\n \n {editingId === division.id ? (\n handleInputChange(e, division.id)}\n className=\"w-full p-1 border rounded\"\n >\n \n {users.map((user) => (\n \n ))}\n \n ) : (\n division.manager?.realname || \"Нет руководителя\"\n )}\n \n {editingId === division.id ? (\n <>\n handleEditDivision(division)}\n >\n \n \n \n \n \n \n ) : (\n <>\n startEditing(division)}\n >\n \n \n openDeleteModal(division.id)}\n >\n \n \n \n )}\n
{user.realname}\n openEditUserModal(user)}\n >\n Редактировать\n \n \n openDeleteUserModal(user.id)}\n >\n Удалить\n \n
\n
\n
\n
\n\n {/* Модальное окно для удаления подразделения */}\n {isDeleteModalOpen && (\n \n
\n

\n Вы уверены, что хотите удалить это подразделение?\n

\n
\n \n Отмена\n \n \n Удалить\n \n
\n
\n \n )}\n\n {/* Модальное окно для редактирования пользователя */}\n {isModalOpen && userToEdit && (\n setIsModalOpen(false)}\n className=\"fixed inset-0 flex items-center justify-center bg-black bg-opacity-50\"\n overlayClassName=\"fixed inset-0 bg-black bg-opacity-50\"\n >\n
\n

\n Редактирование пользователя\n

\n
\n
\n \n \n setUserToEdit((prev) => ({\n ...prev,\n realname: e.target.value,\n }))\n }\n className=\"w-full p-2 border rounded\"\n />\n
\n
\n \n \n setUserToEdit((prev) => ({\n ...prev,\n username: e.target.value,\n }))\n }\n className=\"w-full p-2 border rounded\"\n />\n
\n
\n \n \n setUserToEdit((prev) => ({\n ...prev,\n email: e.target.value,\n }))\n }\n className=\"w-full p-2 border rounded\"\n />\n
\n
\n \n \n setUserToEdit((prev) => ({\n ...prev,\n password: e.target.value,\n }))\n }\n className=\"w-full p-2 border rounded\"\n />\n
\n
\n \n \n setUserToEdit((prev) => ({\n ...prev,\n confirm_password: e.target.value,\n }))\n }\n className=\"w-full p-2 border rounded\"\n />\n
\n
\n \n \n setUserToEdit((prev) => ({ ...prev, role: e.target.value }))\n }\n className=\"w-full p-2 border rounded\"\n >\n {Object.entries(roles).map(([key, value]) => (\n \n ))}\n \n
\n
\n \n \n setUserToEdit((prev) => ({\n ...prev,\n division_id: e.target.value,\n }))\n }\n className=\"w-full p-2 border rounded\"\n >\n {divisionList.map((division) => (\n \n ))}\n \n
\n
\n
\n \n Сохранить\n \n setIsModalOpen(false)}\n className=\"bg-gray-300 text-gray-700 px-4 py-2 rounded hover:bg-gray-400\"\n >\n Отмена\n \n
\n
\n \n )}\n\n {/* Модальное окно для подтверждения удаления пользователя */}\n {isDeleteUserModalOpen && (\n \n
\n

\n Вы уверены, что хотите удалить этого пользователя?\n

\n
\n \n Отмена\n \n \n Удалить\n \n
\n
\n \n )}\n
\n );\n}\n","import React, { useState } from \"react\";\nimport { ToastContainer, toast } from \"react-toastify\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faChevronDown,\n faChevronRight,\n faTrash,\n} from \"@fortawesome/free-solid-svg-icons\";\n\nexport default function PeriodsManager({ periods, divisions }) {\n const [periodList, setPeriodList] = useState(periods);\n const [newPeriod, setNewPeriod] = useState(\"\");\n const [expandedPeriods, setExpandedPeriods] = useState([]);\n const [expandedDivisions, setExpandedDivisions] = useState([]);\n\n // Состояние для модалки подтверждения удаления\n const [showDeleteModal, setShowDeleteModal] = useState(false);\n const [periodToDelete, setPeriodToDelete] = useState(null);\n\n const handleAddPeriod = async () => {\n if (!newPeriod) {\n toast.error(\"Введите дату периода\");\n return;\n }\n\n const response = await fetch(\"/settings/add_period\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ period: newPeriod }),\n });\n\n if (response.ok) {\n const addedPeriod = await response.json();\n setPeriodList([...periodList, addedPeriod]);\n setNewPeriod(\"\");\n toast.success(\"Период успешно добавлен!\");\n } else {\n toast.error(\"Ошибка при добавлении периода.\");\n }\n };\n\n const handleDeletePeriod = async (periodId) => {\n const response = await fetch(`/settings/delete_period/${periodId}`, {\n method: \"DELETE\",\n });\n\n if (response.ok) {\n setPeriodList((prev) => prev.filter((p) => p.id !== periodId));\n toast.success(\"Период успешно удалён!\");\n } else {\n toast.error(\"Ошибка при удалении периода.\");\n }\n };\n\n const openDeleteConfirmation = (periodId) => {\n setPeriodToDelete(periodId);\n setShowDeleteModal(true);\n };\n\n const confirmDelete = () => {\n if (periodToDelete) {\n handleDeletePeriod(periodToDelete);\n }\n setShowDeleteModal(false);\n setPeriodToDelete(null);\n };\n\n const cancelDelete = () => {\n setShowDeleteModal(false);\n setPeriodToDelete(null);\n };\n\n const togglePeriod = (id) => {\n setExpandedPeriods((prev) =>\n prev.includes(id) ? prev.filter((p) => p !== id) : [...prev, id]\n );\n };\n\n const toggleDivision = (id) => {\n setExpandedDivisions((prev) =>\n prev.includes(id) ? prev.filter((d) => d !== id) : [...prev, id]\n );\n };\n\n const updateUsersForPeriod = async (periodId, userIds) => {\n try {\n const response = await fetch(\"/settings/update_users_for_period\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ period_id: periodId, user_ids: userIds }),\n });\n\n if (response.ok) {\n const updatedPeriod = await response.json();\n setPeriodList((prev) =>\n prev.map((p) => (p.id === updatedPeriod.id ? updatedPeriod : p))\n );\n toast.success(\"Пользователи успешно обновлены!\");\n } else {\n toast.error(\"Ошибка при обновлении пользователей.\");\n }\n } catch (error) {\n console.error(error);\n toast.error(\"Ошибка при отправке запроса.\");\n }\n };\n\n const toggleUser = (periodId, userId) => {\n const period = periodList.find((p) => p.id === periodId);\n const isSelected = period.opened_periods.some(\n (op) => op.user_id === userId\n );\n\n const updatedUserIds = isSelected\n ? period.opened_periods\n .filter((op) => op.user_id !== userId)\n .map((op) => op.user_id)\n : [...period.opened_periods.map((op) => op.user_id), userId];\n\n updateUsersForPeriod(periodId, updatedUserIds);\n };\n\n const selectAllUsers = (periodId) => {\n const allUsers = divisions\n .flatMap((division) => division.users)\n .map((user) => user.id);\n updateUsersForPeriod(periodId, allUsers);\n };\n\n const deselectAllUsers = (periodId) => {\n updateUsersForPeriod(periodId, []);\n };\n\n const selectDivisionUsers = (periodId, division) => {\n const period = periodList.find((p) => p.id === periodId);\n const divisionUserIds = division.users.map((user) => user.id);\n const currentUserIds = period.opened_periods.map((op) => op.user_id);\n\n const updatedUserIds = Array.from(\n new Set([...currentUserIds, ...divisionUserIds])\n );\n updateUsersForPeriod(periodId, updatedUserIds);\n };\n\n const deselectDivisionUsers = (periodId, division) => {\n const period = periodList.find((p) => p.id === periodId);\n const divisionUserIds = division.users.map((user) => user.id);\n\n const updatedUserIds = period.opened_periods\n .filter((op) => !divisionUserIds.includes(op.user_id))\n .map((op) => op.user_id);\n updateUsersForPeriod(periodId, updatedUserIds);\n };\n\n return (\n
\n \n {showDeleteModal && (\n
\n
\n

Подтверждение удаления

\n

\n Вы действительно хотите удалить этот период? Данное действие\n необратимо.\n

\n
\n \n Отмена\n \n \n Удалить\n \n
\n
\n
\n )}\n
\n

Управление периодами

\n\n
\n setNewPeriod(e.target.value)}\n className=\"p-2 border rounded mr-4 w-64\"\n />\n \n Добавить период\n \n
\n\n
\n {periodList.map((period) => (\n \n togglePeriod(period.id)}\n >\n

{period.period}

\n
\n {\n e.stopPropagation();\n selectAllUsers(period.id);\n }}\n >\n Выбрать всех\n \n {\n e.stopPropagation();\n deselectAllUsers(period.id);\n }}\n >\n Снять всех\n \n {\n e.stopPropagation();\n openDeleteConfirmation(period.id);\n }}\n >\n \n \n \n
\n
\n\n {expandedPeriods.includes(period.id) && (\n
\n {divisions.map((division) => (\n \n toggleDivision(division.id)}\n >\n

\n {division.name.trim()}\n

\n
\n {\n e.stopPropagation();\n selectDivisionUsers(period.id, division);\n }}\n >\n Выбрать всех\n \n {\n e.stopPropagation();\n deselectDivisionUsers(period.id, division);\n }}\n >\n Снять всех\n \n
\n
\n\n {expandedDivisions.includes(division.id) && (\n
\n {division.users.map((user) => (\n \n {user.realname}\n p.id === period.id)\n .opened_periods.some(\n (op) => op.user_id === user.id\n )}\n onChange={() => toggleUser(period.id, user.id)}\n className=\"form-checkbox text-blue-600\"\n />\n \n ))}\n
\n )}\n
\n ))}\n
\n )}\n \n ))}\n \n \n \n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport axios from \"axios\";\n\nexport default function ReportsTable({ props }) {\n const [filters, setFilters] = useState({\n period: \"\",\n form: \"\",\n division: \"\",\n });\n\n const [data, setData] = useState([]);\n const [filteredData, setFilteredData] = useState([]);\n const periods = props.periods;\n const forms = props.forms;\n const divisions = props.divisions;\n const [summary, setSummary] = useState({ total: 0, submitted_count: 0 });\n const [showOnlySubmitted, setShowOnlySubmitted] = useState(false);\n const [showOnlyNotSubmitted, setShowOnlyNotSubmitted] = useState(false);\n\n const fetchData = async () => {\n const response = await axios.get(\"/settings/all_reports\", {\n params: filters,\n });\n setData(response.data.users);\n setSummary({\n total: response.data.total,\n submitted_count: response.data.submitted_count,\n });\n };\n\n useEffect(() => {\n let filtered = data;\n\n // Фильтрация: показывать только сдавших\n if (showOnlySubmitted) {\n filtered = data.filter((user) => user.submitted);\n }\n\n // Фильтрация: показывать только несдавших\n if (showOnlyNotSubmitted) {\n filtered = data.filter((user) => !user.submitted);\n }\n\n setFilteredData(filtered);\n }, [data, showOnlySubmitted, showOnlyNotSubmitted]);\n\n return (\n
\n {/* Фильтры */}\n
\n setFilters({ ...filters, period: e.target.value })}\n >\n \n {periods.map((period) => (\n \n ))}\n \n\n setFilters({ ...filters, form: e.target.value })}\n >\n \n {forms.map((form) => (\n \n ))}\n \n\n setFilters({ ...filters, division: e.target.value })}\n >\n \n {divisions.map((division) => (\n \n ))}\n \n\n \n Показать\n \n
\n\n {/* Переключатели */}\n
\n \n\n \n
\n\n {/* Сводка */}\n

\n Количество сдавших: {summary.submitted_count} из {summary.total}\n

\n\n {/* Таблица */}\n \n \n \n \n \n \n \n \n \n \n {filteredData.map((user, index) => (\n \n \n \n \n \n \n ))}\n \n
№ п/пПользовательНаименование отчетаДата изменения
{index + 1}{user.name}\n {user.report_id ? (\n \n {user.report_name}\n \n ) : (\n {user.report_name}\n )}\n {user.date_created}
\n
\n );\n}\n","import React, { useState } from \"react\";\nimport { ToastContainer, toast } from \"react-toastify\";\nimport \"react-toastify/dist/ReactToastify.css\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faEye, faEyeSlash } from \"@fortawesome/free-solid-svg-icons\"; // Иконки глазика\nimport axios from \"axios\";\nconst OnboardingStepper = ({ divisions, email }) => {\n const [step, setStep] = useState(1);\n const [formData, setFormData] = useState({\n fullname: \"\",\n email: email || \"\",\n username: \"\",\n password: \"\",\n confirmPassword: \"\",\n division: \"\",\n });\n\n const [showPassword, setShowPassword] = useState(false); // Управление показом пароля\n const [showConfirmPassword, setShowConfirmPassword] = useState(false); // Для подтверждения пароля\n\n const handleChange = (e) => {\n const { name, value } = e.target;\n setFormData({ ...formData, [name]: value });\n };\n\n const togglePasswordVisibility = (field) => {\n if (field === \"password\") {\n setShowPassword(!showPassword);\n } else if (field === \"confirmPassword\") {\n setShowConfirmPassword(!showConfirmPassword);\n }\n };\n\n const validateStep = () => {\n switch (step) {\n case 1:\n return formData.fullname && formData.email;\n case 2:\n debugger;\n return (\n formData.username && formData.password === formData.confirmPassword\n );\n case 3:\n return formData.division;\n default:\n return false;\n }\n };\n\n const handleNext = () => {\n if (validateStep()) {\n setStep(step + 1);\n } else {\n toast.error(\"Заполните все поля корректно!\");\n }\n };\n\n const handleSubmit = async () => {\n try {\n const response = await axios.post(\"/session/sign_up\", {\n user: {\n fullname: formData.fullname,\n email: formData.email,\n username: formData.username,\n password: formData.password,\n division: formData.division,\n confirm_password: formData.confirmPassword,\n },\n });\n \n if (response.status === 201 || response.status === 200) {\n toast.success(\"Пользователь успешно зарегистрирован!\");\n setTimeout(() => {\n window.location.href = \"/reports\";\n }, 1000); // Задержка для показа уведомления\n } else {\n toast.error(\"Ошибка при регистрации. Попробуйте снова.\");\n }\n } catch (error) {\n if (error.response && error.response.data && error.response.data.errors) {\n // Отображаем ошибки с сервера\n error.response.data.errors.forEach((err) => toast.error(err));\n } else {\n // Если ошибки с сервера нет, показываем общее сообщение\n toast.error(\"Ошибка при регистрации. Попробуйте снова.\");\n }\n console.error(\"Ошибка при отправке данных:\", error);\n }\n };\n \n const progressBarWidth = `${(step / 3) * 100}%`;\n\n return (\n
\n
\n

\n Регистрация\n

\n\n {/* Прогресс-бар */}\n
\n \n
\n\n {/* Шаги формы */}\n {step === 1 && (\n <>\n \n\n \n \n )}\n\n {step === 2 && (\n <>\n \n \n \n \n )}\n\n {step === 3 && (\n \n )}\n\n {/* Кнопки управления */}\n
\n {step > 1 && (\n setStep(step - 1)}\n >\n Назад\n \n )}\n {step < 3 ? (\n \n Далее\n \n ) : (\n \n Завершить\n \n )}\n
\n
\n \n
\n );\n};\n\nexport default OnboardingStepper;\n","import React, { useState } from \"react\";\nimport axios from \"axios\";\n\nexport default function CreateUserForm({ divisions }) {\n const roles = {\n 8: \"Администратор\",\n 4: \"Сводящий\",\n 2: \"Заведующий\",\n 1: \"Адвокат\",\n };\n\n const [formData, setFormData] = useState({\n realname: \"\",\n username: \"\",\n email: \"\",\n password: \"\",\n division_id: \"\",\n role_id: \"\", // Добавляем поле для выбора роли\n });\n\n const [error, setError] = useState(null);\n const [success, setSuccess] = useState(null);\n\n // Обработчик изменения полей формы\n const handleChange = (e) => {\n const { name, value } = e.target;\n setFormData({ ...formData, [name]: value });\n };\n\n // Обработчик отправки формы\n const handleSubmit = async (e) => {\n e.preventDefault();\n\n try {\n const response = await axios.post(\"/settings/create_user\", formData);\n setSuccess(\"Пользователь успешно создан!\");\n setError(null);\n // Очистить форму\n setFormData({\n realname: \"\",\n username: \"\",\n email: \"\",\n password: \"\",\n division_id: \"\",\n role_id: \"\",\n });\n } catch (err) {\n if (err.response && err.response.data.errors) {\n // Берём ошибки из ответа сервера\n setError(err.response.data.errors.join(\", \"));\n } else {\n setError(\"Ошибка при создании пользователя. Попробуйте снова.\");\n }\n setSuccess(null);\n }\n };\n\n return (\n
\n

Создать пользователя

\n\n \n\n {error &&
{error}
}\n {success &&
{success}
}\n\n {/* Полное имя */}\n
\n \n \n
\n\n {/* Имя пользователя */}\n
\n \n \n
\n\n {/* Email */}\n
\n \n \n
\n\n {/* Пароль */}\n
\n \n \n
\n\n {/* Селект для выбора отдела */}\n
\n \n \n \n {divisions.map((division) => (\n \n ))}\n \n
\n\n {/* Селект для выбора роли */}\n
\n \n \n \n {Object.entries(roles).map(([key, value]) => (\n \n ))}\n \n
\n\n {/* Кнопка отправки */}\n \n Создать пользователя\n \n \n
\n );\n}\n","import ReactOnRails from 'react-on-rails';\nimport Form from '../bundles/Forms/Form';\nimport Reports from '../bundles/Reports/components/Reports';\nimport Login from '../bundles/Login/components/Login';\nimport FormNew from '../bundles/Forms/FormNew'\nimport ReportEdit from '../bundles/Forms/ReportEdit';\nimport FormEdit from '../bundles/Forms/FormEdit';\nimport Mixing from '../bundles/Reports/components/Mixing';\nimport Forms from '../bundles/Forms/Forms'\nimport Personal from '../bundles/Settings/Personal'\nimport Divisions from '../bundles/Divisions/Divisions'\nimport Invite from '../bundles/Settings/Invite'\nimport Periods from '../bundles/Periods/Periods'\nimport SettingsReports from '../bundles/Settings/SettingsReports'\nimport OnboardingStepper from '../bundles/components/OnboardingStepper'\nimport CreateUser from '../bundles/Settings/CreateUser'\n\nReactOnRails.register({\n Reports,\n Login,\n Forms,\n Form,\n FormNew,\n ReportEdit,\n FormEdit,\n Mixing,\n Personal,\n Divisions,\n Invite,\n Periods,\n SettingsReports,\n OnboardingStepper,\n CreateUser\n});\n","import React, { useState } from \"react\";\nimport Navbar from \"../components/Navbar\";\nimport PersonalForm from \"./components/PersonalForm\";\n\nexport default function Personal(props) {\n const current_user = props.current_user\n\n return (\n
\n
\n \n\n
\n\n {/* Основной контент */}\n
\n
\n \n
\n
\n
\n );\n}\n","import React, { useState } from \"react\";\nimport Navbar from \"../components/Navbar\";\nimport DivisionsTable from \"./DisionsTable\";\n\nexport default function Divisions(props) {\n\n return (\n
\n
\n \n\n
\n\n {/* Основной контент */}\n
\n
\n \n
\n
\n
\n );\n}\n","import React, { useState } from \"react\";\nimport { ToastContainer, toast } from \"react-toastify\";\nimport \"react-toastify/dist/ReactToastify.css\";\nimport Navbar from \"../components/Navbar\";\n\nexport default function Invite(props) {\n const [email, setEmail] = useState(\"\");\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n\n try {\n const response = await fetch(\"/settings/send_invite\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ email }),\n });\n\n if (response.ok) {\n toast.success(\"Приглашение отправлено успешно!\");\n setEmail(\"\");\n } else {\n toast.error(\"Не удалось отправить приглашение.\");\n }\n } catch (error) {\n toast.error(\"Произошла ошибка. Попробуйте снова.\");\n }\n };\n\n return (\n
\n \n
\n \n
\n\n {/* Основной контент */}\n
\n
\n

\n Отправить приглашение\n

\n
\n \n setEmail(e.target.value)}\n placeholder=\"example@domain.com\"\n required\n className=\"w-full px-4 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none\"\n />\n
\n \n Отослать\n \n
\n \n
\n
\n
\n );\n}\n","import React, { useState } from \"react\";\nimport Navbar from \"../components/Navbar\";\nimport PeriodsManager from \"./PeriodsManager\";\n\nexport default function Divisions(props) {\n\n return (\n
\n
\n \n\n
\n\n {/* Основной контент */}\n
\n
\n \n
\n
\n
\n );\n}\n","import React, { useState } from \"react\";\nimport Navbar from \"../components/Navbar\";\nimport ReportsTable from \"./components/ReportsTable\";\n\nexport default function SettingsReports(props) {\n \n return (\n
\n
\n \n\n
\n\n {/* Основной контент */}\n
\n
\n \n
\n
\n
\n );\n}\n","import React from \"react\";\nimport Navbar from \"../components/Navbar\";\nimport CreateUserForm from \"./components/CreateUserForm\";\n\nexport default function CreateUser(props) {\n const current_user = props.current_user;\n\n return (\n
\n
\n \n
\n\n {/* Основной контент */}\n
\n
\n \n
\n
\n
\n );\n}\n"],"names":["ReportsTable","reports","forms","tableReports","setTableReports","useState","expandedRows","setExpandedRows","isModalOpen","setIsModalOpen","selectedForm","setSelectedForm","activePeriodId","setActivePeriodId","isDeleteModalOpen","setIsDeleteModalOpen","reportIdToDelete","setReportIdToDelete","formOptions","map","form","value","id","label","short_name","React","className","period","key","period_id","some","report","sub","length","onClick","toggleExpand","rowKey","prevState","FontAwesomeIcon","icon","faMinus","faPlus","size","period_date","period_status","handleOpenModal","periodId","faPenToSquare","colSpan","report_id","form_id","href","handleOpenDeleteModal","reportId","faTrashAlt","Select","options","placeholder","onChange","handleCloseModal","handleNavigate","existingReport","find","window","location","disabled","handleCloseDeleteModal","async","fetch","method","prev","filter","error","console","Reports","props","Navbar","periods","Pagination","currentPage","current_page","totalPages","total_pages","basePath","userName","setUserName","username","role","user_role","isDropdownOpen","setIsDropdownOpen","isMenuOpen","setIsMenuOpen","isLoggedIn","setIsLoggedIn","currentPath","setCurrentPath","pathname","filteredMenuItems","path","dropdown","roles","item","filteredDropdown","dropdownItem","includes","useEffect","handleRouteChange","addEventListener","removeEventListener","src","logo","alt","index","e","preventDefault","onMouseLeave","idx","ok","faSignOutAlt","handlePageChange","page","RichTextComponent","richText","dangerouslySetInnerHTML","__html","TableFactory","TemplateOne","title","headers","rows","inputValues","disabledInputs","style","borderCollapse","width","marginBottom","textAlign","fontWeight","header","rowSpan","text","row","rowIndex","rowNumber","description","values","name","valueIndex","backgroundColor","type","target","padding","boxSizing","TemplateTwo","headerIndex","TemplateThree","height","TemplateFour","getTemplate","DynamicTable","sections","onSubmit","setInputValues","state","forEach","section","initializeState","setDisabledInputs","rules","newDisabledInputs","rule","sum","sources","reduce","acc","source","parseFloat","toString","toast","applyRules","handleInputChange","newValue","ToastContainer","sectionIndex","Template","Object","assign","handleSubmit","validInputs","keys","marginTop","color","border","borderRadius","cursor","table","form_name","information","formData","transformedData","dataToSend","data","log","body","JSON","stringify","then","response","success","errorData","json","catch","Modal","LoginForm","setUsername","password","setPassword","loading","setLoading","showPassword","setShowPassword","isForgotModalOpen","setIsForgotModalOpen","email","setEmail","message","position","faEyeSlash","faEye","isOpen","onRequestClose","overlayClassName","initialData","setData","formName","setFormName","shortFormName","setShortFormName","setInformation","setHeader","isVisible","setIsVisible","isCanceled","setIsCanceled","formType","setFormType","event","combinedData","Error","ReactQuill","checked","initialValues","opened","entries","clone","document","getElementById","cloneNode","querySelectorAll","input","p","createElement","textContent","parentNode","replaceChild","offScreenDiv","top","left","appendChild","canvas","html2canvas","scale","ignoreElements","element","classList","contains","removeChild","pdf","jsPDF","pdfWidth","internal","pageSize","getWidth","pdfHeight","getHeight","canvasWidth","canvasHeight","scaleFactor","toDataURL","scaledHeight","yPosition","nextHeight","Math","min","croppedCanvas","floor","getContext","drawImage","croppedImgData","addImage","addPage","save","schema","properties","is_visible","canceled","summary_form_id","form_type","enum","created_at","format","updated_at","required","items","default","uischema","elements","scope","handleRichTextChange","prevData","JsonForms","renderers","materialRenderers","cells","materialCells","PersonalForm","current_user","setFormData","full_name","login","confirmPassword","showConfirmPassword","setShowConfirmPassword","realname","handleChange","htmlFor","togglePasswordVisibility","toggleConfirmPasswordVisibility","DivisionsTable","divisions","users","divisionList","setDivisionList","newDivision","setNewDivision","manager_id","editingId","setEditingId","editingBackup","setEditingBackup","userToEdit","setUserToEdit","divisionToDelete","setDivisionToDelete","expandedDivisions","setExpandedDivisions","isDeleteUserModalOpen","setIsDeleteUserModalOpen","userToDelete","setUserToDelete","updatedDivisions","division","handleCancelEdit","restoredDivisions","closeDeleteModal","closeDeleteUserModal","user","addedDivision","toggleDivision","d","faChevronDown","faChevronRight","trim","manager","updatedDivision","updatedDivisionList","handleEditDivision","faCheck","faTimes","startEditing","openDeleteModal","openEditUserModal","openDeleteUserModal","userId","confirm_password","division_id","updatedUser","PeriodsManager","periodList","setPeriodList","newPeriod","setNewPeriod","expandedPeriods","setExpandedPeriods","showDeleteModal","setShowDeleteModal","periodToDelete","setPeriodToDelete","updateUsersForPeriod","userIds","user_ids","updatedPeriod","cancelDelete","confirmDelete","handleDeletePeriod","addedPeriod","togglePeriod","stopPropagation","allUsers","flatMap","selectAllUsers","faTrash","selectDivisionUsers","divisionUserIds","currentUserIds","opened_periods","op","user_id","updatedUserIds","Array","from","Set","deselectDivisionUsers","toggleUser","filters","setFilters","filteredData","setFilteredData","summary","setSummary","total","submitted_count","showOnlySubmitted","setShowOnlySubmitted","showOnlyNotSubmitted","setShowOnlyNotSubmitted","filtered","submitted","axios","get","params","report_name","date_created","OnboardingStepper","step","setStep","fullname","field","progressBarWidth","readOnly","div","handleNext","validateStep","post","status","setTimeout","errors","err","CreateUserForm","role_id","setError","setSuccess","join","ReactOnRails","Login","Forms","setForms","formToDelete","setFormToDelete","getFormType","formId","handleDelete","Form","FormNew","ReportEdit","FormEdit","Mixing","setReports","setDivisions","setPeriods","selectedReportName","setSelectedReportName","selectedPeriodStart","setSelectedPeriodStart","selectedPeriodEnd","setSelectedPeriodEnd","selectedDivisions","setSelectedDivisions","userRole","reportToDelete","setReportToDelete","closeModal","handleDivisionSelection","divisionId","divisionUsers","u","startsWith","userKey","getAvailablePeriods","displayValue","openModal","Date","toLocaleDateString","users_ids","divisionUser","split","period_start","period_end","responseData","link","handleSelectAll","handleDeselectAll","Personal","Divisions","Invite","Periods","SettingsReports","CreateUser"],"sourceRoot":""}