1
0
Fork 0
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:
Fedor Katurov 2022-01-02 21:28:31 +07:00
parent 77af1ab05a
commit 120bf8954c
72 changed files with 225 additions and 298 deletions
src/components/boris
BorisSidebar
BorisStats
BorisStatsBackend
BorisStatsGit
BorisStatsGitCard

View file

@ -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>
);

View file

@ -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} />
</>
);
};

View file

@ -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>

View file

@ -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}>

View file

@ -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: 'Сделано',
};