В меню доски со списом задач добавлены кнопки обслуживания backend-а

This commit is contained in:
Pavel Gnedov 2023-06-24 10:58:32 +07:00
parent 888a5184c7
commit c24a5de7dd
4 changed files with 41 additions and 19 deletions

View file

@ -4,6 +4,7 @@ import * as IssuesListBoardStore from './store';
import * as IssuesListBoardNs from './issues-list-board'; import * as IssuesListBoardNs from './issues-list-board';
import * as TopRightMenuNs from '../misc-components/top-right-menu'; import * as TopRightMenuNs from '../misc-components/top-right-menu';
import { SetIssuesReadingTimestamp } from '../utils/unreaded-provider'; import { SetIssuesReadingTimestamp } from '../utils/unreaded-provider';
import * as ServiceActionsButtons from '../utils/service-actions-buttons';
export type Props = { export type Props = {
store: IssuesListBoardStore.IPageStore store: IssuesListBoardStore.IPageStore
@ -31,6 +32,8 @@ export const IssuesListBoards = observer((props: Props): JSX.Element => {
<> <>
<TopRightMenuNs.TopRightMenu store={topRightMenuStore}> <TopRightMenuNs.TopRightMenu store={topRightMenuStore}>
<button onClick={onAllReadItemClick}>Прочитать всё</button> <button onClick={onAllReadItemClick}>Прочитать всё</button>
<ServiceActionsButtons.IssuesForceRefreshButton />
<ServiceActionsButtons.GetIssuesQueueSizeButton />
</TopRightMenuNs.TopRightMenu> </TopRightMenuNs.TopRightMenu>
{list} {list}
</> </>

View file

@ -5,6 +5,7 @@ import { observer } from 'mobx-react-lite';
import * as TopRightMenuNs from '../misc-components/top-right-menu'; import * as TopRightMenuNs from '../misc-components/top-right-menu';
import { SetIssuesReadingTimestamp } from '../utils/unreaded-provider'; import { SetIssuesReadingTimestamp } from '../utils/unreaded-provider';
import axios from 'axios'; import axios from 'axios';
import * as ServiceActionsButtons from '../utils/service-actions-buttons';
export type Props = { export type Props = {
store: IPageStore store: IPageStore
@ -37,30 +38,13 @@ export const KanbanBoards = observer((props: Props) => {
} }
treeRefreshMenuItem = <button onClick={onTreeRefreshClick}>Force tree refresh</button>; treeRefreshMenuItem = <button onClick={onTreeRefreshClick}>Force tree refresh</button>;
} }
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<void> => {
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 ( return (
<> <>
<TopRightMenuNs.TopRightMenu store={topRightMenuStore}> <TopRightMenuNs.TopRightMenu store={topRightMenuStore}>
<button onClick={onAllReadClick}>Всё прочитано</button> <button onClick={onAllReadClick}>Всё прочитано</button>
{treeRefreshMenuItem} {treeRefreshMenuItem}
<button onClick={onIssuesRefreshClick}>Force issues refresh</button> <ServiceActionsButtons.IssuesForceRefreshButton/>
<button onClick={onGetIssuesQueueSizeClick}>Get issues queue size</button> <ServiceActionsButtons.GetIssuesQueueSizeButton/>
</TopRightMenuNs.TopRightMenu> </TopRightMenuNs.TopRightMenu>
{list} {list}
</> </>

View file

@ -0,0 +1,14 @@
import React from 'react';
import { onGetIssuesQueueSizeClick, onIssuesRefreshClick } from './service-actions';
export const IssuesForceRefreshButton = (): JSX.Element => {
return (
<button onClick={onIssuesRefreshClick}>Force issues refresh</button>
);
};
export const GetIssuesQueueSizeButton = (): JSX.Element => {
return (
<button onClick={onGetIssuesQueueSizeClick}>Get issues queue size</button>
);
};

View file

@ -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<void> => {
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}`);
};