Skip to content

Commit 73cf824

Browse files
committed
rebase, use DialogActions on front, correct style
1 parent b82419a commit 73cf824

File tree

5 files changed

+155
-129
lines changed

5 files changed

+155
-129
lines changed

HwProj.APIGateway/HwProj.APIGateway.API/TableGenerators/ExcelGenerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ private static void AddHomeworksHeaders(ExcelWorksheet worksheet, CourseDTO cour
149149

150150
var title = course.Homeworks[i].Title;
151151
var publicationDate = course.Homeworks[i].PublicationDate;
152-
var tags = course.Homeworks[i].Tags.Where(t => !string.IsNullOrWhiteSpace(t));
152+
var tags = course.Homeworks[i].Tags;
153153
var isTest = tags.Contains(HomeworkTags.Test);
154154
var tagsToShow = tags.Where(t => t != HomeworkTags.Test).ToList();
155155
var tagsStr = $" ({tagsToShow.Select(GetTagLabel).Join(", ")})";

hwproj.front/src/components/Courses/StatsMenu.tsx

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ import {
77
ListItemText,
88
Dialog,
99
DialogTitle,
10-
DialogContent}
11-
from "@mui/material";
10+
} from "@mui/material";
1211
import { NestedMenuItem } from "mui-nested-menu";
1312
import { Download, ShowChart } from "@mui/icons-material";
1413
import { useNavigate } from "react-router-dom";
@@ -109,11 +108,11 @@ const StatsMenu: FC<StatsMenuProps> = props => {
109108
const getActionTitle = (action: SaveStatsAction | null) => {
110109
switch (action) {
111110
case SaveStatsAction.Download:
112-
return "Сохранить на диск"
111+
return "Сохранить таблицу на диск"
113112
case SaveStatsAction.ShareWithGoogle:
114-
return "Отправить в Google Docs"
113+
return "Выгрузить таблицу в Google Docs"
115114
case SaveStatsAction.ShareWithYandex:
116-
return "Отправить на Яндекс Диск"
115+
return "Выгрузить таблицу на Яндекс Диск"
117116
default:
118117
return ""
119118
}
@@ -202,9 +201,7 @@ const StatsMenu: FC<StatsMenuProps> = props => {
202201
<DialogTitle>
203202
{getActionTitle(saveStatsAction)}
204203
</DialogTitle>
205-
<DialogContent style={{ minWidth: 540 }}>
206-
{getActionContent(saveStatsAction)}
207-
</DialogContent>
204+
{getActionContent(saveStatsAction)}
208205
</Dialog>
209206
</div>
210207
)

hwproj.front/src/components/Solutions/DownloadStats.tsx

Lines changed: 34 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { FC, useState } from "react";
2-
import { Button, Grid, TextField } from "@mui/material";
2+
import { Button, DialogActions, DialogContent, Grid, TextField } from "@mui/material";
33
import apiSingleton from "../../api/ApiSingleton";
44
import { LoadingButton } from "@mui/lab";
55

@@ -30,37 +30,39 @@ const DownloadStats: FC<DownloadStatsProps> = (props: DownloadStatsProps) => {
3030
}
3131

3232
return (
33-
<Grid container direction="row" marginTop="1px" spacing={1} width="100%"
34-
justifyContent="space-between" alignItems="center">
35-
<Grid item xs={6}>
36-
<TextField
37-
fullWidth
38-
size="small"
39-
label="Название файла"
40-
value={fileName}
41-
onChange={event => {
42-
event.persist();
43-
setFileName(event.target.value);
44-
}}
45-
/>
46-
</Grid>
47-
<Grid item>
48-
<LoadingButton
49-
variant="text"
50-
color="primary"
51-
type="button"
52-
loading={loading}
53-
onClick={handleFileDownloading}
54-
style={{ marginRight: 8 }}
55-
>
56-
Загрузить
57-
</LoadingButton>
58-
<Button variant="text" color="inherit" type="button"
59-
onClick={props.onCancellation}>
60-
Отмена
61-
</Button>
62-
</Grid>
63-
</Grid>
33+
<DialogContent>
34+
<DialogActions>
35+
<Grid item>
36+
<TextField
37+
fullWidth
38+
size="small"
39+
label="Название файла"
40+
value={fileName}
41+
onChange={event => {
42+
event.persist();
43+
setFileName(event.target.value);
44+
}}
45+
/>
46+
</Grid>
47+
<Grid>
48+
<LoadingButton
49+
variant="text"
50+
color="primary"
51+
type="button"
52+
loading={loading}
53+
onClick={handleFileDownloading}
54+
>
55+
Загрузить
56+
</LoadingButton>
57+
</Grid>
58+
<Grid>
59+
<Button variant="text" color="inherit" type="button"
60+
onClick={props.onCancellation}>
61+
Отмена
62+
</Button>
63+
</Grid>
64+
</DialogActions>
65+
</DialogContent>
6466
)
6567
}
6668

hwproj.front/src/components/Solutions/ExportToGoogle.tsx

Lines changed: 59 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
import { FC, useState } from "react";
2-
import { Alert, Button, Grid, MenuItem, Select, TextField } from "@mui/material";
2+
import {
3+
Alert,
4+
Button,
5+
DialogActions,
6+
DialogContent,
7+
DialogContentText,
8+
Grid,
9+
MenuItem,
10+
Select,
11+
TextField,
12+
} from "@mui/material";
313
import apiSingleton from "../../api/ApiSingleton";
414
import { green, red } from "@material-ui/core/colors";
515
import { StringArrayResult } from "@/api";
@@ -62,58 +72,60 @@ const ExportToGoogle: FC<ExportToGoogleProps> = (props: ExportToGoogleProps) =>
6272
};
6373

6474
return (
65-
<Grid container direction="column" spacing={1} width="100%">
66-
<Grid item xs={12}>
67-
{(googleSheetTitles && !googleSheetTitles.succeeded &&
68-
<Alert severity="error">
69-
{googleSheetTitles!.errors![0]}
70-
</Alert>)
71-
||
72-
(loadingStatus === LoadingStatus.Error &&
75+
<DialogContent>
76+
<DialogContentText>
77+
<Grid item>
78+
{(googleSheetTitles && !googleSheetTitles.succeeded &&
79+
<Alert severity="error">
80+
{googleSheetTitles!.errors![0]}
81+
</Alert>
82+
) || (loadingStatus === LoadingStatus.Error &&
7383
<Alert severity="error">
7484
{error}
75-
</Alert>)
76-
||
77-
(<Alert severity="info" variant="standard">
78-
Для загрузки таблицы необходимо разрешить доступ на редактирование по ссылке для Google Sheets
79-
</Alert>)
80-
}
81-
</Grid>
82-
<Grid container item direction="row" spacing={1} width="100%"
83-
justifyContent="space-between" alignItems="center">
84-
<Grid item xs={5}>
85-
<TextField
86-
fullWidth
87-
size="small"
88-
label="Ссылка на Google Sheets"
89-
value={url}
90-
onChange={event => {
91-
event.persist()
92-
handleGoogleDocUrlChange(event.target.value)
93-
}}
94-
/>
85+
</Alert>
86+
) || (
87+
<Alert severity="info" variant="standard">
88+
Для загрузки таблицы необходимо разрешить доступ
89+
на редактирование по ссылке для Google Sheets
90+
</Alert>
91+
)}
9592
</Grid>
96-
{googleSheetTitles && googleSheetTitles.value && googleSheetTitles.value.length > 0 &&
93+
</DialogContentText>
94+
<DialogActions>
95+
<Grid item container spacing={1} style={{ marginRight: "auto" }}>
9796
<Grid item>
98-
<Select
97+
<TextField
98+
fullWidth
9999
size="small"
100-
id="demo-simple-select"
101-
label="Лист"
102-
value={selectedSheet}
103-
onChange={v => setState(prevState => ({ ...prevState, selectedSheet: +v.target.value }))}
104-
>
105-
{googleSheetTitles.value.map((title, i) => <MenuItem value={i}>{title}</MenuItem>)}
106-
</Select>
100+
label="Ссылка на Google Sheets"
101+
value={url}
102+
onChange={event => {
103+
event.persist()
104+
handleGoogleDocUrlChange(event.target.value)
105+
}}
106+
/>
107107
</Grid>
108-
}
109-
<Grid item>
110-
{googleSheetTitles && googleSheetTitles.succeeded &&
108+
{googleSheetTitles && googleSheetTitles.value && googleSheetTitles.value.length > 0 &&
109+
<Grid item>
110+
<Select
111+
size="small"
112+
id="demo-simple-select"
113+
label="Лист"
114+
value={selectedSheet}
115+
onChange={v => setState(prevState => ({ ...prevState, selectedSheet: +v.target.value }))}
116+
>
117+
{googleSheetTitles.value.map((title, i) => <MenuItem value={i}>{title}</MenuItem>)}
118+
</Select>
119+
</Grid>
120+
}
121+
</Grid>
122+
{googleSheetTitles && googleSheetTitles.succeeded &&
123+
<Grid item>
111124
<LoadingButton
112125
variant="text"
113126
color="primary"
114127
type="button"
115128
sx={buttonSx}
116-
style={{ marginRight: 8 }}
117129
loading={loadingStatus === LoadingStatus.Loading}
118130
onClick={async () => {
119131
setState((prevState) => ({...prevState, loadingStatus: LoadingStatus.Loading}))
@@ -134,14 +146,16 @@ const ExportToGoogle: FC<ExportToGoogleProps> = (props: ExportToGoogleProps) =>
134146
>
135147
Сохранить
136148
</LoadingButton>
137-
}
149+
</Grid>
150+
}
151+
<Grid item>
138152
<Button variant="text" color="inherit" type="button"
139153
onClick={props.onCancellation}>
140154
Отмена
141155
</Button>
142156
</Grid>
143-
</Grid>
144-
</Grid>
157+
</DialogActions>
158+
</DialogContent>
145159
)
146160
}
147161

hwproj.front/src/components/Solutions/ExportToYandex.tsx

Lines changed: 56 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
1-
import { FC, useState } from "react";
2-
import { useEffect } from 'react';
3-
import { Alert, Button, Grid, Link, TextField } from "@mui/material";
1+
import { FC, useState, useEffect } from "react";
2+
import {
3+
Alert,
4+
Button,
5+
DialogActions,
6+
DialogContent,
7+
DialogContentText,
8+
Grid,
9+
Link,
10+
TextField,
11+
} from "@mui/material";
412
import apiSingleton from "../../api/ApiSingleton";
513
import { green, red } from "@material-ui/core/colors";
614
import { LoadingButton } from "@mui/lab";
@@ -129,43 +137,47 @@ const ExportToYandex: FC<ExportToYandexProps> = (props: ExportToYandexProps) =>
129137
};
130138

131139
return userToken === null ? (
132-
<Grid container direction="column" spacing={1} width="100%">
133-
<Grid item xs={12}>
134-
{!isAuthorizationError &&
135-
<Alert severity="info" variant="standard">
136-
Для загрузки таблицы необходимо пройти{" "}
137-
<Link href={yacRequestLink}>
138-
авторизацию
139-
</Link>
140-
</Alert>
141-
}
142-
{isAuthorizationError &&
143-
<Alert severity="error" variant="standard">
144-
Авторизация не пройдена. Попробуйте{" "}
145-
<Link href={yacRequestLink}>
146-
еще раз
147-
</Link>
148-
</Alert>
149-
}
150-
</Grid>
151-
<Grid item marginLeft="auto">
152-
<Button variant="text" color="inherit" type="button"
153-
onClick={props.onCancellation}>
154-
Отмена
155-
</Button>
156-
</Grid>
157-
</Grid>
140+
<DialogContent>
141+
<DialogContentText>
142+
<Grid item>
143+
{isAuthorizationError ? (
144+
<Alert severity="error" variant="standard">
145+
Авторизация не пройдена. Попробуйте{" "}
146+
<Link href={yacRequestLink}>
147+
еще раз
148+
</Link>
149+
</Alert>
150+
) : (
151+
<Alert severity="info" variant="standard">
152+
Для загрузки таблицы необходимо пройти{" "}
153+
<Link href={yacRequestLink}>
154+
авторизацию
155+
</Link>
156+
</Alert>
157+
)}
158+
</Grid>
159+
</DialogContentText>
160+
<DialogActions>
161+
<Grid item>
162+
<Button variant="text" color="inherit" type="button"
163+
onClick={props.onCancellation}>
164+
Отмена
165+
</Button>
166+
</Grid>
167+
</DialogActions>
168+
</DialogContent>
158169
) : (
159-
<Grid container direction="column" spacing={1} width="100%">
160-
<Grid item xs={12}>
161-
<Alert severity="success" variant="standard">
162-
Авторизация успешно пройдена. Файл будет загружен на диск по адресу
163-
"Приложения/{import.meta.env.VITE_YANDEX_APPLICATION_NAME}/{fileName}.xlsx"
164-
</Alert>
165-
</Grid>
166-
<Grid container item direction="row" spacing={1} width="100%"
167-
justifyContent="space-between" alignItems="center">
168-
<Grid item xs={6}>
170+
<DialogContent>
171+
<DialogContentText>
172+
<Grid item>
173+
<Alert severity="success" variant="standard">
174+
Авторизация успешно пройдена. Файл будет загружен на диск по адресу
175+
"Приложения/{import.meta.env.VITE_YANDEX_APPLICATION_NAME}/{fileName}.xlsx"
176+
</Alert>
177+
</Grid>
178+
</DialogContentText>
179+
<DialogActions>
180+
<Grid item style={{ marginRight: "auto" }}>
169181
<TextField
170182
fullWidth
171183
size="small"
@@ -184,8 +196,7 @@ const ExportToYandex: FC<ExportToYandexProps> = (props: ExportToYandexProps) =>
184196
variant="text"
185197
color="primary"
186198
type="button"
187-
sx={buttonSx}
188-
style={{ marginRight: 8 }}
199+
sx={buttonSx}
189200
loading={loadingStatus === LoadingStatus.Loading}
190201
onClick={() => {
191202
setState((prevState) => ({...prevState, loadingStatus: LoadingStatus.Loading}))
@@ -194,13 +205,15 @@ const ExportToYandex: FC<ExportToYandexProps> = (props: ExportToYandexProps) =>
194205
>
195206
Сохранить
196207
</LoadingButton>
208+
</Grid>
209+
<Grid item>
197210
<Button variant="text" color="inherit" type="button"
198211
onClick={props.onCancellation}>
199212
Отмена
200213
</Button>
201214
</Grid>
202-
</Grid>
203-
</Grid>
215+
</DialogActions>
216+
</DialogContent>
204217
)
205218
}
206219

0 commit comments

Comments
 (0)