From c24a5de7dddb99e2e1cfa628a278275521bcb98e Mon Sep 17 00:00:00 2001 From: Pavel Gnedov Date: Sat, 24 Jun 2023 10:58:32 +0700 Subject: [PATCH] =?UTF-8?q?=D0=92=20=D0=BC=D0=B5=D0=BD=D1=8E=20=D0=B4?= =?UTF-8?q?=D0=BE=D1=81=D0=BA=D0=B8=20=D1=81=D0=BE=20=D1=81=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D0=BE=D0=BC=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=BA=D0=BD?= =?UTF-8?q?=D0=BE=D0=BF=D0=BA=D0=B8=20=D0=BE=D0=B1=D1=81=D0=BB=D1=83=D0=B6?= =?UTF-8?q?=D0=B8=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20backend-=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../issues-list-board/issues-list-boards.tsx | 3 +++ frontend/src/kanban-board/kanban-boards.tsx | 22 +++---------------- .../src/utils/service-actions-buttons.tsx | 14 ++++++++++++ frontend/src/utils/service-actions.ts | 21 ++++++++++++++++++ 4 files changed, 41 insertions(+), 19 deletions(-) create mode 100644 frontend/src/utils/service-actions-buttons.tsx create mode 100644 frontend/src/utils/service-actions.ts diff --git a/frontend/src/issues-list-board/issues-list-boards.tsx b/frontend/src/issues-list-board/issues-list-boards.tsx index c404685..c9250bb 100644 --- a/frontend/src/issues-list-board/issues-list-boards.tsx +++ b/frontend/src/issues-list-board/issues-list-boards.tsx @@ -4,6 +4,7 @@ import * as IssuesListBoardStore from './store'; import * as IssuesListBoardNs from './issues-list-board'; import * as TopRightMenuNs from '../misc-components/top-right-menu'; import { SetIssuesReadingTimestamp } from '../utils/unreaded-provider'; +import * as ServiceActionsButtons from '../utils/service-actions-buttons'; export type Props = { store: IssuesListBoardStore.IPageStore @@ -31,6 +32,8 @@ export const IssuesListBoards = observer((props: Props): JSX.Element => { <> + + {list} diff --git a/frontend/src/kanban-board/kanban-boards.tsx b/frontend/src/kanban-board/kanban-boards.tsx index a4a9634..aa2448b 100644 --- a/frontend/src/kanban-board/kanban-boards.tsx +++ b/frontend/src/kanban-board/kanban-boards.tsx @@ -5,6 +5,7 @@ import { observer } from 'mobx-react-lite'; import * as TopRightMenuNs from '../misc-components/top-right-menu'; import { SetIssuesReadingTimestamp } from '../utils/unreaded-provider'; import axios from 'axios'; +import * as ServiceActionsButtons from '../utils/service-actions-buttons'; export type Props = { store: IPageStore @@ -37,30 +38,13 @@ export const KanbanBoards = observer((props: Props) => { } treeRefreshMenuItem = ; } - const onIssuesRefreshClick = (e: React.MouseEvent) => { - if (e.target !== e.currentTarget) return; - e.stopPropagation(); - const rawInput = prompt("Force issues refresh (delimiters - space, comma, semicolon, tab or new line)", ""); - if (!rawInput) return; - const list = rawInput.split(/[ ,;\t\n\r]/).map(item => Number(item)).filter(item => (Number.isFinite(item) && item > 0)); - if (!list) return; - axios.post(`/redmine-event-emitter/append-issues`, list); - }; - const onGetIssuesQueueSizeClick = async (e: React.MouseEvent): Promise => { - if (e.target !== e.currentTarget) return; - e.stopPropagation(); - const resp = await axios.get(`/redmine-event-emitter/get-issues-queue-size`); - console.debug(`resp -`, resp); // DEBUG - if (!resp || typeof resp.data !== 'number') return; - alert(`Issues queue size - ${resp.data}`); - }; return ( <> {treeRefreshMenuItem} - - + + {list} diff --git a/frontend/src/utils/service-actions-buttons.tsx b/frontend/src/utils/service-actions-buttons.tsx new file mode 100644 index 0000000..16c1706 --- /dev/null +++ b/frontend/src/utils/service-actions-buttons.tsx @@ -0,0 +1,14 @@ +import React from 'react'; +import { onGetIssuesQueueSizeClick, onIssuesRefreshClick } from './service-actions'; + +export const IssuesForceRefreshButton = (): JSX.Element => { + return ( + + ); +}; + +export const GetIssuesQueueSizeButton = (): JSX.Element => { + return ( + + ); +}; diff --git a/frontend/src/utils/service-actions.ts b/frontend/src/utils/service-actions.ts new file mode 100644 index 0000000..0c96ed0 --- /dev/null +++ b/frontend/src/utils/service-actions.ts @@ -0,0 +1,21 @@ +import axios from "axios"; +import React from 'react'; + +export const onIssuesRefreshClick = (e: React.MouseEvent) => { + if (e.target !== e.currentTarget) return; + e.stopPropagation(); + const rawInput = prompt("Force issues refresh (delimiters - space, comma, semicolon or tab)", ""); + if (!rawInput) return; + const list = rawInput.split(" ,;\t").map(item => Number(item)).filter(item => Number.isFinite(item)); + if (!list) return; + axios.post(`/redmine-event-emitter/append-issues`, list); +}; + +export const onGetIssuesQueueSizeClick = async (e: React.MouseEvent): Promise => { + if (e.target !== e.currentTarget) return; + e.stopPropagation(); + const resp = await axios.get(`/redmine-event-emitter/get-issues-queue-size`); + console.debug(`resp -`, resp); // DEBUG + if (!resp || typeof resp.data !== 'number') return; + alert(`Issues queue size - ${resp.data}`); +};