mirror of
https://github.com/muerwre/vault-frontend.git
synced 2025-05-05 17:46:41 +07:00
removed boris reducer
This commit is contained in:
parent
77af1ab05a
commit
120bf8954c
72 changed files with 225 additions and 298 deletions
|
@ -5,16 +5,17 @@ import { BorisContacts } from '~/components/boris/BorisContacts';
|
|||
import { BorisStats } from '~/components/boris/BorisStats';
|
||||
import { Group } from '~/components/containers/Group';
|
||||
import { IUser } from '~/redux/auth/types';
|
||||
import { BorisUsageStats } from '~/redux/boris/reducer';
|
||||
import { BorisUsageStats } from '~/types/boris';
|
||||
|
||||
interface Props {
|
||||
user: IUser;
|
||||
isTester: boolean;
|
||||
stats: BorisUsageStats;
|
||||
setBetaTester: (val: boolean) => void;
|
||||
isLoading: boolean;
|
||||
}
|
||||
|
||||
const BorisSidebar: FC<Props> = ({ user, stats, isTester, setBetaTester }) => (
|
||||
const BorisSidebar: FC<Props> = ({ user, stats, isLoading, isTester, setBetaTester }) => (
|
||||
<Group className={styles.stats__container}>
|
||||
<div className={styles.super_powers}>
|
||||
{user.is_user && <BorisSuperpowers active={isTester} onChange={setBetaTester} />}
|
||||
|
@ -23,7 +24,7 @@ const BorisSidebar: FC<Props> = ({ user, stats, isTester, setBetaTester }) => (
|
|||
<BorisContacts />
|
||||
|
||||
<div className={styles.stats__wrap}>
|
||||
<BorisStats stats={stats} />
|
||||
<BorisStats stats={stats} isLoading={isLoading} />
|
||||
</div>
|
||||
</Group>
|
||||
);
|
||||
|
|
|
@ -1,17 +1,18 @@
|
|||
import React, { FC } from 'react';
|
||||
import { BorisUsageStats } from '~/redux/boris/reducer';
|
||||
import { BorisUsageStats } from '~/types/boris';
|
||||
import { BorisStatsGit } from '../BorisStatsGit';
|
||||
import { BorisStatsBackend } from '../BorisStatsBackend';
|
||||
|
||||
interface IProps {
|
||||
stats: BorisUsageStats;
|
||||
isLoading: boolean;
|
||||
}
|
||||
|
||||
const BorisStats: FC<IProps> = ({ stats }) => {
|
||||
const BorisStats: FC<IProps> = ({ stats, isLoading }) => {
|
||||
return (
|
||||
<>
|
||||
<BorisStatsBackend stats={stats} />
|
||||
<BorisStatsGit stats={stats} />
|
||||
<BorisStatsBackend stats={stats.backend} isLoading={isLoading} />
|
||||
<BorisStatsGit issues={stats.issues} isLoading={isLoading} />
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -1,72 +1,73 @@
|
|||
import React, { FC } from 'react';
|
||||
import { IBorisState } from '~/redux/boris/reducer';
|
||||
import { StatBackend } from '~/types/boris';
|
||||
import styles from './styles.module.scss';
|
||||
import { sizeOf } from '~/utils/dom';
|
||||
import { StatsRow } from '~/components/common/StatsRow';
|
||||
import { SubTitle } from '~/components/common/SubTitle';
|
||||
|
||||
interface IProps {
|
||||
stats: IBorisState['stats'];
|
||||
stats: StatBackend;
|
||||
isLoading: boolean;
|
||||
}
|
||||
|
||||
const BorisStatsBackend: FC<IProps> = ({ stats: { is_loading, backend } }) => {
|
||||
if (!backend && !is_loading) {
|
||||
const BorisStatsBackend: FC<IProps> = ({ isLoading, stats }) => {
|
||||
if (!stats && !isLoading) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<div className={styles.wrap}>
|
||||
<SubTitle isLoading={is_loading} className={styles.title}>
|
||||
<SubTitle isLoading={isLoading} className={styles.title}>
|
||||
Юнитс
|
||||
</SubTitle>
|
||||
|
||||
<ul>
|
||||
<StatsRow isLoading={is_loading} label="В сознании">
|
||||
{backend.users.alive}
|
||||
<StatsRow isLoading={isLoading} label="В сознании">
|
||||
{stats.users.alive}
|
||||
</StatsRow>
|
||||
|
||||
<StatsRow isLoading={is_loading} label="Криокамера">
|
||||
{backend.users.total - backend.users.alive}
|
||||
<StatsRow isLoading={isLoading} label="Криокамера">
|
||||
{stats.users.total - stats.users.alive}
|
||||
</StatsRow>
|
||||
</ul>
|
||||
|
||||
<SubTitle isLoading={is_loading} className={styles.title}>
|
||||
<SubTitle isLoading={isLoading} className={styles.title}>
|
||||
Контент
|
||||
</SubTitle>
|
||||
|
||||
<ul>
|
||||
<StatsRow isLoading={is_loading} label="Фотографии">
|
||||
{backend.nodes.images}
|
||||
<StatsRow isLoading={isLoading} label="Фотографии">
|
||||
{stats.nodes.images}
|
||||
</StatsRow>
|
||||
|
||||
<StatsRow isLoading={is_loading} label="Письма">
|
||||
{backend.nodes.texts}
|
||||
<StatsRow isLoading={isLoading} label="Письма">
|
||||
{stats.nodes.texts}
|
||||
</StatsRow>
|
||||
|
||||
<StatsRow isLoading={is_loading} label="Видеозаписи">
|
||||
{backend.nodes.videos}
|
||||
<StatsRow isLoading={isLoading} label="Видеозаписи">
|
||||
{stats.nodes.videos}
|
||||
</StatsRow>
|
||||
|
||||
<StatsRow isLoading={is_loading} label="Аудиозаписи">
|
||||
{backend.nodes.audios}
|
||||
<StatsRow isLoading={isLoading} label="Аудиозаписи">
|
||||
{stats.nodes.audios}
|
||||
</StatsRow>
|
||||
|
||||
<StatsRow isLoading={is_loading} label="Комментарии">
|
||||
{backend.comments.total}
|
||||
<StatsRow isLoading={isLoading} label="Комментарии">
|
||||
{stats.comments.total}
|
||||
</StatsRow>
|
||||
</ul>
|
||||
|
||||
<SubTitle isLoading={is_loading} className={styles.title}>
|
||||
<SubTitle isLoading={isLoading} className={styles.title}>
|
||||
Сторедж
|
||||
</SubTitle>
|
||||
|
||||
<ul>
|
||||
<StatsRow isLoading={is_loading} label="Файлы">
|
||||
{backend.files.count}
|
||||
<StatsRow isLoading={isLoading} label="Файлы">
|
||||
{stats.files.count}
|
||||
</StatsRow>
|
||||
|
||||
<StatsRow isLoading={is_loading} label="На диске">
|
||||
{sizeOf(backend.files.size)}
|
||||
<StatsRow isLoading={isLoading} label="На диске">
|
||||
{sizeOf(stats.files.size)}
|
||||
</StatsRow>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
@ -1,27 +1,28 @@
|
|||
import React, { FC, useMemo } from 'react';
|
||||
import { IBorisState } from '~/redux/boris/reducer';
|
||||
import { GithubIssue } from '~/types/boris';
|
||||
import styles from './styles.module.scss';
|
||||
import { Placeholder } from '~/components/placeholders/Placeholder';
|
||||
import { BorisStatsGitCard } from '../BorisStatsGitCard';
|
||||
|
||||
interface IProps {
|
||||
stats: IBorisState['stats'];
|
||||
issues: GithubIssue[];
|
||||
isLoading: boolean;
|
||||
}
|
||||
|
||||
const BorisStatsGit: FC<IProps> = ({ stats }) => {
|
||||
const BorisStatsGit: FC<IProps> = ({ issues, isLoading }) => {
|
||||
const open = useMemo(
|
||||
() => stats.issues.filter(el => !el.pull_request && el.state === 'open').slice(0, 5),
|
||||
[stats.issues]
|
||||
() => issues.filter(el => !el.pull_request && el.state === 'open').slice(0, 5),
|
||||
[issues]
|
||||
);
|
||||
|
||||
const closed = useMemo(
|
||||
() => stats.issues.filter(el => !el.pull_request && el.state === 'closed').slice(0, 5),
|
||||
[stats.issues]
|
||||
() => issues.filter(el => !el.pull_request && el.state === 'closed').slice(0, 5),
|
||||
[issues]
|
||||
);
|
||||
|
||||
if (!stats.issues.length) return null;
|
||||
if (!issues.length) return null;
|
||||
|
||||
if (stats.is_loading) {
|
||||
if (isLoading) {
|
||||
return (
|
||||
<>
|
||||
<div className={styles.stats__title}>
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
import React, { FC, useMemo } from 'react';
|
||||
import styles from './styles.module.scss';
|
||||
import { getPrettyDate } from '~/utils/dom';
|
||||
import { IGithubIssue } from '~/redux/boris/types';
|
||||
import { GithubIssue } from '~/types/boris';
|
||||
import classNames from 'classnames';
|
||||
|
||||
interface IProps {
|
||||
data: IGithubIssue;
|
||||
data: GithubIssue;
|
||||
}
|
||||
|
||||
const stateLabels: Record<IGithubIssue['state'], string> = {
|
||||
const stateLabels: Record<GithubIssue['state'], string> = {
|
||||
open: 'Ожидает',
|
||||
closed: 'Сделано',
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue