mirror of
https://github.com/bakhirev/assayo.git
synced 2025-09-01 10:09:39 +00:00
update
This commit is contained in:
parent
96e92e7e8d
commit
ccc41b7dc3
19 changed files with 117 additions and 57 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -2,7 +2,7 @@ import React, { ReactNode } from 'react';
|
||||||
|
|
||||||
import Button from 'ts/components/UiKit/components/Button';
|
import Button from 'ts/components/UiKit/components/Button';
|
||||||
import notificationsStore from 'ts/components/Notifications/store';
|
import notificationsStore from 'ts/components/Notifications/store';
|
||||||
import localization from 'ts/helpers/Localization';
|
import { t } from 'ts/helpers/Localization';
|
||||||
import copyInBuffer from 'ts/helpers/copyInBuffer';
|
import copyInBuffer from 'ts/helpers/copyInBuffer';
|
||||||
|
|
||||||
import style from './index.module.scss';
|
import style from './index.module.scss';
|
||||||
|
@ -30,10 +30,10 @@ function Console({ className, textForCopy, children }: IConsoleProps) {
|
||||||
className={`${style.console_copy}`}
|
className={`${style.console_copy}`}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
copyInBuffer(textForCopy);
|
copyInBuffer(textForCopy);
|
||||||
notificationsStore.show(localization.get('uiKit.console.notification'));
|
notificationsStore.show(t('uiKit.console.notification'));
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{localization.get('uiKit.console.button')}
|
{t('uiKit.console.button')}
|
||||||
</Button>
|
</Button>
|
||||||
) : null}
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,18 +1,20 @@
|
||||||
@import 'src/styles/variables';
|
@import 'src/styles/variables';
|
||||||
|
|
||||||
.infinite_scroll_border_top,
|
.infinite_scroll_border {
|
||||||
.infinite_scroll_border_bottom {
|
&_top,
|
||||||
position: sticky;
|
&_bottom {
|
||||||
z-index: 3;
|
position: sticky;
|
||||||
background-color: var(--color-white);
|
z-index: 3;
|
||||||
}
|
background-color: var(--color-white);
|
||||||
|
}
|
||||||
|
|
||||||
.infinite_scroll_border_top {
|
&_top {
|
||||||
top: 0;
|
top: 0;
|
||||||
height: var(--space-s);
|
height: var(--space-s);
|
||||||
}
|
}
|
||||||
|
|
||||||
.infinite_scroll_border_bottom {
|
&_bottom {
|
||||||
bottom: -2px;
|
bottom: -2px;
|
||||||
height: var(--space-s);
|
height: var(--space-s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 300px;
|
height: 300px;
|
||||||
margin: var(--space-xxl) auto 0;
|
margin: 0 auto;
|
||||||
|
|
||||||
user-select: none;
|
user-select: none;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
import React from 'react';
|
import React, { useState } from 'react';
|
||||||
|
|
||||||
|
import { getRandom } from 'ts/helpers/random';
|
||||||
|
|
||||||
import IAnswer from '../interfaces/Answer';
|
import IAnswer from '../interfaces/Answer';
|
||||||
import style from '../styles/answer.module.scss';
|
import style from '../styles/answer.module.scss';
|
||||||
|
@ -14,6 +16,7 @@ function Answer({
|
||||||
mode,
|
mode,
|
||||||
onClick,
|
onClick,
|
||||||
}: IAnswerProps): React.ReactElement | null {
|
}: IAnswerProps): React.ReactElement | null {
|
||||||
|
const [iconIndex] = useState(getRandom(5));
|
||||||
const className = [style.quize_answer_wrapper];
|
const className = [style.quize_answer_wrapper];
|
||||||
const textClasName = [style.quize_answer_text];
|
const textClasName = [style.quize_answer_text];
|
||||||
|
|
||||||
|
@ -32,7 +35,7 @@ function Answer({
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
className={style.quize_answer_icon}
|
className={style.quize_answer_icon}
|
||||||
src="./assets/games/quize/balloon.png"
|
src={`./assets/games/quize/balloon_${iconIndex}.png`}
|
||||||
/>
|
/>
|
||||||
<figcaption className={textClasName.join(' ')}>
|
<figcaption className={textClasName.join(' ')}>
|
||||||
{answer.title}
|
{answer.title}
|
||||||
|
|
|
@ -69,7 +69,10 @@ function Question({
|
||||||
return (
|
return (
|
||||||
<div className={stylePage.quize_question}>
|
<div className={stylePage.quize_question}>
|
||||||
<div className={stylePage.quize_question_body}>
|
<div className={stylePage.quize_question_body}>
|
||||||
<div className={style.quize_title}>
|
<div
|
||||||
|
className={style.quize_title}
|
||||||
|
style={{ backgroundImage: 'url(./assets/games/quize/cloud_big.png)' }}
|
||||||
|
>
|
||||||
{question.title}
|
{question.title}
|
||||||
</div>
|
</div>
|
||||||
<div className={style.quize_question_answer}>
|
<div className={style.quize_question_answer}>
|
||||||
|
|
|
@ -114,8 +114,16 @@ function QuizePage({
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={style.quize_container}
|
className={style.quize_container}
|
||||||
style={{ backgroundImage: 'url(./assets/games/quize/air.jpg)' }}
|
style={{ backgroundImage: 'url(./assets/games/quize/cloud_bg.png)' }}
|
||||||
>
|
>
|
||||||
|
<div
|
||||||
|
className={style.quize_cloud_bg}
|
||||||
|
style={{ backgroundImage: 'url(./assets/games/quize/cloud_bg.png)' }}
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
className={style.quize_cloud}
|
||||||
|
style={{ backgroundImage: 'url(./assets/games/quize/cloud.png)' }}
|
||||||
|
/>
|
||||||
<div className={className}>
|
<div className={className}>
|
||||||
{page}
|
{page}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -46,17 +46,21 @@
|
||||||
|
|
||||||
&_text {
|
&_text {
|
||||||
--temp-bg: var(--color-white);
|
--temp-bg: var(--color-white);
|
||||||
|
--temp-text: var(--color-black);
|
||||||
|
|
||||||
&_selected {
|
&_selected {
|
||||||
--temp-bg: var(--color-13);
|
--temp-bg: #5F9C92;
|
||||||
|
--temp-text: var(--color-white);
|
||||||
}
|
}
|
||||||
|
|
||||||
&_correct {
|
&_correct {
|
||||||
--temp-bg: var(--color-23);
|
--temp-bg: #267A05;
|
||||||
|
--temp-text: var(--color-white);
|
||||||
}
|
}
|
||||||
|
|
||||||
&_error {
|
&_error {
|
||||||
--temp-bg: var(--color-12);
|
--temp-bg: #DD5F00;
|
||||||
|
--temp-text: var(--color-white);
|
||||||
}
|
}
|
||||||
|
|
||||||
font-size: var(--font-m);
|
font-size: var(--font-m);
|
||||||
|
@ -71,8 +75,9 @@
|
||||||
margin: var(--space-xxs) auto 0;
|
margin: var(--space-xxs) auto 0;
|
||||||
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
border: 2px solid #6E605E;
|
||||||
border-radius: var(--border-radius-m);
|
border-radius: var(--border-radius-m);
|
||||||
color: var(--color-black);
|
color: var(--temp-text);
|
||||||
background-color: var(--temp-bg);
|
background-color: var(--temp-bg);
|
||||||
|
|
||||||
&:before {
|
&:before {
|
||||||
|
|
|
@ -17,6 +17,35 @@
|
||||||
background-repeat: repeat;
|
background-repeat: repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&_cloud,
|
||||||
|
&_cloud_bg {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
|
background-position: 0 0;
|
||||||
|
background-size: auto 100%;
|
||||||
|
background-repeat: repeat;
|
||||||
|
|
||||||
|
animation-name: quize_cloud;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-fill-mode: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&_cloud_bg {
|
||||||
|
animation-duration: 170s;
|
||||||
|
}
|
||||||
|
|
||||||
|
&_cloud {
|
||||||
|
animation-duration: 70s;
|
||||||
|
}
|
||||||
|
|
||||||
&_slider {
|
&_slider {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
display: block;
|
display: block;
|
||||||
|
@ -50,23 +79,28 @@
|
||||||
font-weight: 100;
|
font-weight: 100;
|
||||||
|
|
||||||
display: block;
|
display: block;
|
||||||
width: 500px;
|
width: 433px;
|
||||||
padding: var(--space-xxl) 64px;
|
padding: var(--space-xxl) 64px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
|
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
text-shadow: 0 0 5px var(--color-white), 0 0 5px var(--color-white), 0 0 5px var(--color-white);
|
||||||
|
|
||||||
color: var(--color-black);
|
color: var(--color-black);
|
||||||
background-color: var(--color-white);
|
// background-color: var(--color-white);
|
||||||
|
|
||||||
|
background-position: center left;
|
||||||
|
background-size: auto 80%;
|
||||||
|
background-repeat: repeat-x;
|
||||||
}
|
}
|
||||||
|
|
||||||
&_title {
|
&_title {
|
||||||
font-size: var(--font-l);
|
font-size: var(--font-l);
|
||||||
margin: 0 auto var(--space-xxl);
|
margin: 0 auto var(--space-xxl);
|
||||||
border-radius: var(--border-radius-m);
|
border-radius: 0 0 var(--border-radius-l) var(--border-radius-l);
|
||||||
background: radial-gradient(ellipse farthest-corner at 50% 50%, rgba(255, 255, 255, 1) 0%, rgba(240, 174, 122, 0.5) 100%);
|
// background: radial-gradient(ellipse farthest-corner at 50% 50%, rgba(255, 255, 255, 1) 10%, rgba(240, 174, 122, 0.5) 100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
&_description {
|
&_description {
|
||||||
|
@ -111,3 +145,11 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@keyframes quize_cloud {
|
||||||
|
from {
|
||||||
|
background-position: 0 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
background-position: -200px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import Title from 'ts/components/Title';
|
import Title from 'ts/components/Title';
|
||||||
import localization from 'ts/helpers/Localization';
|
import { t } from 'ts/helpers/Localization';
|
||||||
import Banner from 'ts/components/Banner';
|
import Banner from 'ts/components/Banner';
|
||||||
|
|
||||||
import Card from './components/Card';
|
import Card from './components/Card';
|
||||||
|
@ -50,7 +50,7 @@ function Recommendations({
|
||||||
cards = addBannerInRandomIndex(cards);
|
cards = addBannerInRandomIndex(cards);
|
||||||
}
|
}
|
||||||
|
|
||||||
const title = localization.get('recommendations.title');
|
const title = t('recommendations.title');
|
||||||
const className = mode === 'print'
|
const className = mode === 'print'
|
||||||
? `${style.recommendations_container} scroll_x ${style.recommendations_container_for_print}`
|
? `${style.recommendations_container} scroll_x ${style.recommendations_container_for_print}`
|
||||||
: `${style.recommendations_container} scroll_x`;
|
: `${style.recommendations_container} scroll_x`;
|
||||||
|
|
|
@ -85,3 +85,7 @@ const localization = new Localization();
|
||||||
window.localization = localization;
|
window.localization = localization;
|
||||||
|
|
||||||
export default localization;
|
export default localization;
|
||||||
|
|
||||||
|
export function t(code: string): string {
|
||||||
|
return localization.get(code);
|
||||||
|
}
|
||||||
|
|
|
@ -9,11 +9,6 @@ export interface IPagination<TYPE> {
|
||||||
content: TYPE[];
|
content: TYPE[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IPaginationProps {
|
|
||||||
pageNumber: number;
|
|
||||||
pageSize: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface IPaginationRequest {
|
export interface IPaginationRequest {
|
||||||
page?: number;
|
page?: number;
|
||||||
size?: number;
|
size?: number;
|
||||||
|
|
|
@ -6,7 +6,7 @@ import ICommonPageProps from 'ts/components/Page/interfaces/CommonPageProps';
|
||||||
import Extension from './Extension';
|
import Extension from './Extension';
|
||||||
import Type from './Type';
|
import Type from './Type';
|
||||||
|
|
||||||
const FileAnalitics = observer(({
|
const FileAnalytics = observer(({
|
||||||
mode,
|
mode,
|
||||||
}: ICommonPageProps): React.ReactElement | null => {
|
}: ICommonPageProps): React.ReactElement | null => {
|
||||||
return (
|
return (
|
||||||
|
@ -17,4 +17,4 @@ const FileAnalitics = observer(({
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
export default FileAnalitics;
|
export default FileAnalytics;
|
|
@ -33,10 +33,8 @@ const TeamBuilding = observer((): React.ReactElement => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|
||||||
<Title title="Квиз"/>
|
|
||||||
<Quize />
|
<Quize />
|
||||||
<Title title="Скорость закрытия задач"/>
|
{/*<Title title="Скорость закрытия задач"/>*/}
|
||||||
<Races tracks={tracks} />
|
<Races tracks={tracks} />
|
||||||
<Title title="Максимальная длинна подписи коммита"/>
|
<Title title="Максимальная длинна подписи коммита"/>
|
||||||
<SwimmingPool tracks={maxMessageLength}/>
|
<SwimmingPool tracks={maxMessageLength}/>
|
||||||
|
|
|
@ -13,7 +13,7 @@ import Scope from './components/Scope';
|
||||||
import Tempo from './components/Tempo';
|
import Tempo from './components/Tempo';
|
||||||
import Total from './components/Total';
|
import Total from './components/Total';
|
||||||
import Files from './components/Files';
|
import Files from './components/Files';
|
||||||
import FileAnalitics from './components/FileAnalitics';
|
import FileAnalytics from './components/FileAnalytics';
|
||||||
import Type from './components/Type';
|
import Type from './components/Type';
|
||||||
import Week from './components/Week';
|
import Week from './components/Week';
|
||||||
import Month from './components/Month';
|
import Month from './components/Month';
|
||||||
|
@ -36,7 +36,7 @@ function getViewById(page?: string) {
|
||||||
if (page === 'hours') return <Hours mode={mode}/>;
|
if (page === 'hours') return <Hours mode={mode}/>;
|
||||||
if (page === 'files') return <Files/>;
|
if (page === 'files') return <Files/>;
|
||||||
if (page === 'removedFiles') return <Files type="removed" />;
|
if (page === 'removedFiles') return <Files type="removed" />;
|
||||||
if (page === 'extension') return <FileAnalitics mode={mode}/>;
|
if (page === 'extension') return <FileAnalytics mode={mode}/>;
|
||||||
if (page === 'release') return <Release mode={mode}/>;
|
if (page === 'release') return <Release mode={mode}/>;
|
||||||
if (page === 'commits') return <Commits/>;
|
if (page === 'commits') return <Commits/>;
|
||||||
if (page === 'changes') return <Changes/>;
|
if (page === 'changes') return <Changes/>;
|
||||||
|
|
|
@ -6,7 +6,7 @@ import {
|
||||||
getStringFromFileList,
|
getStringFromFileList,
|
||||||
getStringsForParser,
|
getStringsForParser,
|
||||||
} from 'ts/components/DropZone/helpers';
|
} from 'ts/components/DropZone/helpers';
|
||||||
import localization from 'ts/helpers/Localization';
|
import { t } from 'ts/helpers/Localization';
|
||||||
import dataGripStore from 'ts/store/DataGrip';
|
import dataGripStore from 'ts/store/DataGrip';
|
||||||
|
|
||||||
import style from './styles/index.module.scss';
|
import style from './styles/index.module.scss';
|
||||||
|
@ -15,11 +15,11 @@ function WarningInfo() {
|
||||||
return (
|
return (
|
||||||
<h4 className={style.welcome_warning}>
|
<h4 className={style.welcome_warning}>
|
||||||
<Description
|
<Description
|
||||||
text={localization.get('page.welcome.warning1')}
|
text={t('page.welcome.warning1')}
|
||||||
className={style.welcome_warning_text}
|
className={style.welcome_warning_text}
|
||||||
/>
|
/>
|
||||||
<Description
|
<Description
|
||||||
text={localization.get('page.welcome.warning2')}
|
text={t('page.welcome.warning2')}
|
||||||
className={style.welcome_warning_text}
|
className={style.welcome_warning_text}
|
||||||
/>
|
/>
|
||||||
</h4>
|
</h4>
|
||||||
|
@ -36,22 +36,22 @@ function Welcome() {
|
||||||
<section className={style.welcome}>
|
<section className={style.welcome}>
|
||||||
<div className={style.welcome_row}>
|
<div className={style.welcome_row}>
|
||||||
<h2 className={style.welcome_first_title}>
|
<h2 className={style.welcome_first_title}>
|
||||||
{localization.get('page.welcome.step1')}
|
{t('page.welcome.step1')}
|
||||||
</h2>
|
</h2>
|
||||||
<Console
|
<Console
|
||||||
className={style.welcome_console}
|
className={style.welcome_console}
|
||||||
textForCopy={command}
|
textForCopy={command}
|
||||||
/>
|
/>
|
||||||
<Description
|
<Description
|
||||||
text={localization.get('page.welcome.description')}
|
text={t('page.welcome.description')}
|
||||||
className={`${style.welcome_description}`}
|
className={`${style.welcome_description}`}
|
||||||
/>
|
/>
|
||||||
<h2 className={style.welcome_last_title}>
|
<h2 className={style.welcome_last_title}>
|
||||||
{localization.get('page.welcome.step2') === 'page.welcome.step2'
|
{t('page.welcome.step2') === 'page.welcome.step2'
|
||||||
? ''
|
? ''
|
||||||
: localization.get('page.welcome.step2')}
|
: t('page.welcome.step2')}
|
||||||
<label className={style.welcome_title_link}>
|
<label className={style.welcome_title_link}>
|
||||||
{localization.get('page.welcome.step3')}
|
{t('page.welcome.step3')}
|
||||||
<input
|
<input
|
||||||
multiple
|
multiple
|
||||||
type="file"
|
type="file"
|
||||||
|
@ -64,7 +64,7 @@ function Welcome() {
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</label>
|
</label>
|
||||||
{localization.get('page.welcome.step4')}
|
{t('page.welcome.step4')}
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
Loading…
Add table
Reference in a new issue