diff --git a/dist/favicon.ico b/dist/favicon.ico index adce3f3..75198a1 100644 Binary files a/dist/favicon.ico and b/dist/favicon.ico differ diff --git a/dist/index.html b/dist/index.html index c1a816c..6193ba1 100644 --- a/dist/index.html +++ b/dist/index.html @@ -2,7 +2,6 @@ - PostNet by Spatial diff --git a/index.html b/index.html index 1f3988b..f4f4a73 100644 --- a/index.html +++ b/index.html @@ -2,7 +2,6 @@ - PostNet by Spatial diff --git a/public/favicon.ico b/public/favicon.ico index adce3f3..75198a1 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/src/Map/Layers/layers-config.js b/src/Map/Layers/layers-config.js index e87863a..2b2e1d9 100644 --- a/src/Map/Layers/layers-config.js +++ b/src/Map/Layers/layers-config.js @@ -79,7 +79,14 @@ export const unmatchInitialPointLayer = getPointConfig( UNMATCHED_COLOR, UNMATCH_POINT_SIZE ); -export const approvePointLayer = getPointConfig(APPROVE_COLOR); +export const approvePointLayer = { + ...getPointConfig(APPROVE_COLOR), + paint: { + ...getPointConfig(APPROVE_COLOR).paint, + "circle-stroke-width": 1, + "circle-stroke-color": "#252525", + }, +}; export const workingPointSymbolLayer = { type: "symbol", diff --git a/src/Map/Legend.jsx b/src/Map/Legend.jsx index 2cd4d06..c85c879 100644 --- a/src/Map/Legend.jsx +++ b/src/Map/Legend.jsx @@ -13,7 +13,7 @@ import React from "react"; const LegendPointItem = ({color, imageSrc, name, hideImage, border}) => { return (
- {imageSrc && } + {imageSrc && } {color && !imageSrc && ( { /> )} {!imageSrc && !color && !hideImage && ( - + )} {name} @@ -109,6 +109,7 @@ export function Legend({ postGroups, otherGroups }) { { }); }; +const TASK_STATUSES = { + finished: "Завершено" +} export const useCanEdit = () => { const { data } = useGetPermissions(); + const { data: statusData } = useLastMLRun(); + + const hasFinishedUpdate = useMemo(() => { + return statusData?.task_status === TASK_STATUSES.finished + }, [statusData]) - return data === "editor"; + return data === "editor" && hasFinishedUpdate; }; export const useUpdatePostamatId = () => { diff --git a/src/modules/ImportMode/PointsFileUploadModal.jsx b/src/modules/ImportMode/PointsFileUploadModal.jsx index 465a7f5..6637d44 100644 --- a/src/modules/ImportMode/PointsFileUploadModal.jsx +++ b/src/modules/ImportMode/PointsFileUploadModal.jsx @@ -8,6 +8,7 @@ import { CloseCircleOutlined, LoadingOutlined } from "@ant-design/icons"; +import { useUpdateLayerCounter } from "../../stores/useUpdateLayerCounter.js"; export const PointsFileUploadModal = ({onClose, isOpened}) => { const [fileId, setFileId] = useState(); @@ -15,12 +16,14 @@ export const PointsFileUploadModal = ({onClose, isOpened}) => { const [isImporting, setIsImporting] = useState(false); const [isReportStage, setIsReportStage] = useState(false); const [isError, setIsError] = useState(false); + const { toggleUpdateCounter } = useUpdateLayerCounter(); const onImportPoints = async () => { setIsImporting(true); try { const { message } = await importPoints(fileId); setReport(message); + toggleUpdateCounter(); } catch (e) { setIsError(true); } finally { diff --git a/src/modules/ImportMode/ReportStage.jsx b/src/modules/ImportMode/ReportStage.jsx index 4a26383..16f19c1 100644 --- a/src/modules/ImportMode/ReportStage.jsx +++ b/src/modules/ImportMode/ReportStage.jsx @@ -5,28 +5,28 @@ export const ReportStage = ({ report }) => { return ( <> - + Всего точек: - {report.total} + {report.total} Совпадений: - {report.matched} + {report.matched} Проблемные: - {report.error} + {report.error} Новые: - {report.unmatched} + {report.unmatched} diff --git a/src/modules/Sidebar/PendingPointsFilters/SelectedLocations.jsx b/src/modules/Sidebar/PendingPointsFilters/SelectedLocations.jsx index 0e67cfb..c1e6921 100644 --- a/src/modules/Sidebar/PendingPointsFilters/SelectedLocations.jsx +++ b/src/modules/Sidebar/PendingPointsFilters/SelectedLocations.jsx @@ -9,7 +9,7 @@ import { useEffect } from "react"; export const SelectedLocations = ({ onSelectedChange }) => { const { data: totalCount, isInitialLoading: isTotalLoading } = useGetTotalInitialPointsCount(); - const { data: filteredCount, isInitialLoading: isFilteredLoading } = + const { data: filteredCount, isInitialLoading: isFilteredLoading, isFetching: isFilteredFetching } = useGetFilteredPendingPointsCount(); const { @@ -21,7 +21,7 @@ export const SelectedLocations = ({ onSelectedChange }) => { [filteredCount, excluded] ); - const showSpinner = isTotalLoading || isFilteredLoading; + const showSpinner = isTotalLoading || isFilteredLoading || isFilteredFetching; return (
diff --git a/src/modules/Sidebar/PendingPointsFilters/TakeToWorkButton.jsx b/src/modules/Sidebar/PendingPointsFilters/TakeToWorkButton.jsx index 3c61b58..64bf172 100644 --- a/src/modules/Sidebar/PendingPointsFilters/TakeToWorkButton.jsx +++ b/src/modules/Sidebar/PendingPointsFilters/TakeToWorkButton.jsx @@ -2,16 +2,11 @@ import { Alert, Button, Modal, Spin } from "antd"; import { useQueryClient } from "@tanstack/react-query"; import { usePointSelection } from "../../../stores/usePointSelection"; import { STATUSES } from "../../../config"; -import { useMemo, useState } from "react"; +import { useState } from "react"; import { useUpdateStatus } from "../../../hooks/useUpdateStatus"; import { ArrowRightOutlined } from "@ant-design/icons"; import { Title } from "../../../components/Title"; import { usePendingPointsFilters } from "../../../stores/usePendingPointsFilters"; -import { useLastMLRun } from "../../../api.js"; - -const TASK_STATUSES = { - finished: "Завершено" -} export const TakeToWorkButton = ({ disabled }) => { const { filters } = usePendingPointsFilters(); @@ -19,11 +14,6 @@ export const TakeToWorkButton = ({ disabled }) => { const { selection } = usePointSelection(); const queryClient = useQueryClient(); const [isModalOpened, setIsModalOpened] = useState(false); - const { data: statusData } = useLastMLRun(); - - const disableButton = useMemo(() => { - return statusData?.task_status !== TASK_STATUSES.finished - }, [statusData]) const { mutate: updateStatus, @@ -89,7 +79,7 @@ export const TakeToWorkButton = ({ disabled }) => { block className={"mt-2"} onClick={() => setIsModalOpened(true)} - disabled={disabled || disableButton} + disabled={disabled} > Взять в работу diff --git a/src/modules/Table/PendingTable/usePendingTableFields.jsx b/src/modules/Table/PendingTable/usePendingTableFields.jsx index 5a14e7c..3e31073 100644 --- a/src/modules/Table/PendingTable/usePendingTableFields.jsx +++ b/src/modules/Table/PendingTable/usePendingTableFields.jsx @@ -11,7 +11,7 @@ const MATCHING_STATUS = { color: 'import_status_new' }, Error: { - name: 'Ошибка', + name: 'Ошибка геокодирования', color: 'import_status_error' }, Matched: {