Skip to content

Commit f7fc03b

Browse files
committed
Refactor Scoreboard component styles and enhance layout functionality
- Adjusted SCSS styles for improved layout consistency, including spacing and positioning of elements. - Updated Scoreboard.tsx to utilize Textfit for dynamic text resizing, ensuring player names fit within designated areas. - Modified layout settings in AdminPanel to allow for more flexible header and player card heights. - Improved README documentation for clarity on component structure and functionality.
1 parent 801467f commit f7fc03b

File tree

7 files changed

+76
-70
lines changed

7 files changed

+76
-70
lines changed

src/components/OBS_Components/Scoreboard/AdminPanel/LayoutCard.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ const LayoutCard: React.FC = () => {
134134
<Form.Group className="mb-3">
135135
<Form.Label>Высота заголовка (px)</Form.Label>
136136
<Form.Range
137-
min="40"
137+
min="10"
138138
max="120"
139139
value={layout.headerHeight}
140140
onChange={e =>
@@ -164,7 +164,7 @@ const LayoutCard: React.FC = () => {
164164
<Form.Group className="mb-3">
165165
<Form.Label>Высота карточки игрока (px)</Form.Label>
166166
<Form.Range
167-
min="60"
167+
min="10"
168168
max="150"
169169
value={layout.playerBarHeight}
170170
onChange={e =>

src/components/OBS_Components/Scoreboard/AdminPanel/MetaPanel/README.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@
66

77
## Функциональность
88

9-
### Основные возможности:
9+
### Основные возможности
1010

1111
- **Название турнира**: Текстовое поле для ввода названия турнира
1212
- **Режим драки**: Выбор из предустановленных вариантов или кастомный ввод
1313
- **Синхронизация**: Автоматическая синхронизация с другими клиентами
1414
- **Компактный дизайн**: Оптимизирован для размещения в один ряд с VisibilityCard
1515
- **Вертикальная компоновка**: Элементы расположены в столбик для компактности
1616

17-
### Режимы драки:
17+
### Режимы драки
1818

1919
#### **Предустановленные варианты:**
2020

@@ -29,7 +29,7 @@
2929
- **None** - Без режима драки (отдельный ряд)
3030
- **Custom** - Кастомный режим с текстовым вводом
3131

32-
### Состояния кнопок:
32+
### Состояния кнопок
3333

3434
- **Активный режим**: Синяя кнопка с белым текстом
3535
- **Неактивный режим**: Прозрачная кнопка с синей рамкой
@@ -72,7 +72,7 @@ const AdminPanel = () => {
7272
- **Компактность**: Уменьшенные размеры для размещения в один ряд
7373
- **Выравнивание**: Высота 100% для выравнивания с VisibilityCard
7474

75-
### Размеры:
75+
### Размеры
7676

7777
- **Иконки**: 20px
7878
- **Заголовок**: 14px
@@ -81,7 +81,7 @@ const AdminPanel = () => {
8181
- **Кнопки режимов**: 12px
8282
- **Кастомное поле**: 12px
8383

84-
### Цвета:
84+
### Цвета
8585

8686
- **Основной**: Фиолетовый (#6f42c1)
8787
- **Кнопки режимов**: Синий (#0d6efd)
@@ -91,7 +91,7 @@ const AdminPanel = () => {
9191

9292
## Структура компонента
9393

94-
### Компоновка:
94+
### Компоновка
9595

9696
1. **Заголовок**: Иконка и текст "Meta Panel" (верх)
9797
2. **Название турнира**: Текстовое поле (центр)
@@ -100,7 +100,7 @@ const AdminPanel = () => {
100100
- Кнопка "None" в отдельном ряду
101101
- Кнопка "Custom" с текстовым полем (при необходимости)
102102

103-
### Логика работы:
103+
### Логика работы
104104

105105
#### **Обработка выбора режима:**
106106

@@ -134,27 +134,27 @@ const handleFightRuleChange = (rule: string) => {
134134

135135
## Интеграция с бекендом
136136

137-
### SignalR методы:
137+
### SignalR методы
138138

139139
- `UpdateMeta(MetaInfo meta)` - обновление мета-информации
140140
- `ReceiveState` - получение обновленного состояния от сервера
141141

142-
### Сохранение состояния:
142+
### Сохранение состояния
143143

144144
- Состояние сохраняется в `config.ini` в секции `[Scoreboard]`
145145
- Ключи: `Title`, `FightRule`
146146
- Автоматическая загрузка при старте приложения
147147

148148
## Особенности дизайна
149149

150-
### Кнопка "None":
150+
### Кнопка "None"
151151

152152
- **Расположение**: Отдельный ряд под предустановленными вариантами
153153
- **Цвет**: Серый (#6c757d) для визуального отличия
154154
- **Функция**: Отключает режим драки
155155
- **Ширина**: Полная ширина контейнера
156156

157-
### Кастомное поле:
157+
### Кастомное поле
158158

159159
- **Отображение**: Только при выборе "Custom" или вводе нестандартного значения
160160
- **Цвет**: Желтый (#ffc107) для выделения

src/components/OBS_Components/Scoreboard/AdminPanel/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
## Структура файлов
66

7-
```
7+
```text
88
src/AdminPanel/
99
├── index.ts # Экспорты всех компонентов
1010
├── types.ts # TypeScript типы

src/components/OBS_Components/Scoreboard/AdminPanel/VisibilityCard/README.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
## Функциональность
88

9-
### Основные возможности:
9+
### Основные возможности
1010

1111
- **Включение/выключение панели**: Компактная кнопка для переключения видимости панели скорборда
1212
- **Анимация затухания**: Плавная анимация при переключении состояния (500ms)
@@ -17,13 +17,13 @@
1717
- **Информация о времени**: Отображение времени последнего обновления и времени открытия страницы (только JavaScript)
1818
- **Реальное время**: Время открытия страницы обновляется каждую секунду
1919

20-
### Состояния кнопки:
20+
### Состояния кнопки
2121

2222
- **Видимая панель**: Красная кнопка "Скрыть" с иконкой EyeSlash
2323
- **Скрытая панель**: Зеленая кнопка "Показать" с иконкой Eye
2424
- **Анимация**: Полупрозрачная кнопка с спиннером и текстом "Скрываем..." или "Показываем..."
2525

26-
### Информация о времени (JavaScript):
26+
### Информация о времени (JavaScript)
2727

2828
- **Время последнего обновления**: Отображается в формате ЧЧ:ММ:СС с иконкой Clock
2929
- **Время открытия страницы**: Отображается в формате "Xч Yм Zс" или "Xм Yс" или "Zs" с иконкой PlayCircle
@@ -67,7 +67,7 @@ const AdminPanel = () => {
6767
- **Выравнивание**: Высота 100% для выравнивания с соседними кардами
6868
- **Центрирование**: Вся информация о времени размещена по центру карда
6969

70-
### Размеры:
70+
### Размеры
7171

7272
- **Иконки**: 20px (уменьшены с 22px)
7373
- **Заголовок**: 14px (уменьшен с 18px)
@@ -77,26 +77,26 @@ const AdminPanel = () => {
7777
- **Иконки времени**: 14px (увеличены с 12px)
7878
- **Статус панели**: 12px с жирным шрифтом
7979

80-
### Цвета времени:
80+
### Цвета времени
8181

8282
- **Текст времени**: Белый (#ffffff) с жирным шрифтом
8383
- **Иконки времени**: Красный (#dc3545) для контраста
8484
- **Статус панели**: Зеленый (#28a745) для видимой, красный (#dc3545) для скрытой
8585

8686
## Интеграция с бекендом
8787

88-
### SignalR методы:
88+
### SignalR методы
8989

9090
- `UpdateVisibility(bool isVisible)` - обновление состояния видимости
9191
- `ReceiveState` - получение обновленного состояния от сервера
9292

93-
### Сохранение состояния:
93+
### Сохранение состояния
9494

9595
- Состояние сохраняется в `config.ini` в секции `[Scoreboard]`
9696
- Ключ: `IsVisible` (true/false)
9797
- Автоматическая загрузка при старте приложения
9898

99-
### Время (только JavaScript):
99+
### Время (только JavaScript)
100100

101101
- **Время последнего обновления**: Обновляется при изменении видимости
102102
- **Время открытия страницы**: Отсчитывается с момента загрузки компонента
@@ -125,7 +125,7 @@ const AdminPanel = () => {
125125

126126
## Форматирование времени (JavaScript)
127127

128-
### Время последнего обновления:
128+
### Время последнего обновления
129129

130130
```typescript
131131
const formatTime = (timestamp: number) => {
@@ -138,7 +138,7 @@ const formatTime = (timestamp: number) => {
138138
};
139139
```
140140

141-
### Время открытия страницы:
141+
### Время открытия страницы
142142

143143
```typescript
144144
const formatPageOpenTime = () => {
@@ -157,7 +157,7 @@ const formatPageOpenTime = () => {
157157
};
158158
```
159159

160-
### Хуки для обновления времени:
160+
### Хуки для обновления времени
161161

162162
```typescript
163163
// Состояние для времени
@@ -191,29 +191,29 @@ useEffect(() => {
191191

192192
## Компоновка
193193

194-
### Структура карда:
194+
### Структура карда
195195

196196
1. **Заголовок**: Иконка и текст "Видимость" (верх)
197197
2. **Кнопка управления**: Кнопка включения/выключения (центр)
198198
3. **Информация о времени**: Время обновления и открытия (центр)
199199
4. **Статус панели**: Текущий статус видимости (центр)
200200

201-
### Выравнивание:
201+
### Выравнивание
202202

203203
- **Вертикальное**: `justify-content-center` для центрирования всего содержимого
204204
- **Горизонтальное**: `align-items-center` для центрирования элементов времени
205205
- **Отступы**: Увеличенные отступы между секциями для лучшей читаемости
206206

207207
## Технические детали
208208

209-
### Состояния компонента:
209+
### Состояния компонента
210210

211211
- `isTransitioning`: Блокировка повторных нажатий во время анимации
212212
- `pageOpenTime`: Время загрузки компонента (неизменное)
213213
- `lastUpdateTime`: Время последнего изменения видимости
214214
- `currentTime`: Текущее время (обновляется каждую секунду)
215215

216-
### Интервалы и очистка:
216+
### Интервалы и очистка
217217

218218
- **Интервал обновления**: 1000ms (1 секунда)
219219
- **Автоматическая очистка**: `clearInterval` при размонтировании компонента

src/components/OBS_Components/Scoreboard/Scoreboard.module.scss

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ $font-size-small: 14px;
7878
letter-spacing: 1px;
7979
opacity: 0.9;
8080
}
81-
> .headerLeftBorder {
81+
82+
>.headerLeftBorder {
8283
position: absolute;
8384
top: -2px;
8485
left: 3px;
@@ -88,7 +89,8 @@ $font-size-small: 14px;
8889
transform: rotate(148deg);
8990
border: 11px solid $border-color;
9091
}
91-
> .headerRightBorder {
92+
93+
>.headerRightBorder {
9294
position: absolute;
9395
top: -2px;
9496
right: 3px;
@@ -180,7 +182,7 @@ $font-size-small: 14px;
180182
font-weight: 600;
181183
color: $secondary-color;
182184
line-height: 1.2;
183-
height: 15px;
185+
height: auto;
184186
}
185187

186188
.playerTag {
@@ -216,23 +218,19 @@ $font-size-small: 14px;
216218
// Срез для левого счета
217219
.playerLeft .score {
218220
margin-left: calc(var(--banner-skew) * -3);
219-
clip-path: polygon(
220-
0 0,
221-
calc(100% - var(--banner-skew)) 0,
222-
100% 100%,
223-
var(--banner-skew) 100%
224-
);
221+
clip-path: polygon(0 0,
222+
calc(100% - var(--banner-skew)) 0,
223+
100% 100%,
224+
var(--banner-skew) 100%);
225225
}
226226

227227
// Срез для правого счета
228228
.playerRight .score {
229229
margin-right: calc(var(--banner-skew) * -3);
230-
clip-path: polygon(
231-
var(--banner-skew) 0,
232-
100% 0,
233-
calc(100% - var(--banner-skew)) 100%,
234-
0 100%
235-
);
230+
clip-path: polygon(var(--banner-skew) 0,
231+
100% 0,
232+
calc(100% - var(--banner-skew)) 100%,
233+
0 100%);
236234
}
237235

238236
// Флаг
@@ -274,17 +272,20 @@ $font-size-small: 14px;
274272
opacity: 0;
275273
transform: translateY(20px);
276274
}
275+
277276
to {
278277
opacity: 1;
279278
transform: translateY(0);
280279
}
281280
}
282281

283282
@keyframes pulse {
283+
284284
0%,
285285
100% {
286286
transform: scale(1);
287287
}
288+
288289
50% {
289290
transform: scale(1.05);
290291
}
@@ -328,4 +329,4 @@ $font-size-small: 14px;
328329
.score h3 {
329330
font-size: $font-size-medium;
330331
}
331-
}
332+
}

0 commit comments

Comments
 (0)