48

Присоединился
15.04.2025 г.
подписчиков
0 подписки
70
Рефакторинг редактора слотов и новый редактор сложности: очередной шаг вперёд
В этом обновлении я сосредоточился на улучшении архитектуры проекта и пользовательского интерфейса. Изменения затронули как логику работы с экипировкой, так и управление эффективности класса. Вот основные нововведения:
Новый useGearSlotEditor хук
Теперь управление состоянием предметов, сокетами и чарами в слотах происходит через кастомный хук useGearSlotEditor. Это позволило:
- Упростить компонент GearSlotEditorDialog;
- Централизовать всю бизнес-логику редактирования;
- Ввести ограничения на количество сокетов и чаров в зависимости от типа слота.
Дополнительно добавлены toast-уведомления — пользователи теперь получают обратную связь при сохранении изменений или ошибках.
🎚 Редактор эффективности класса
Добавлен совершенно новый компонент — Difficulty Bar Editor. Он включает:
- Хук useDifficultyEditor для управления рейтингом эффективности класса и его сохранением;
- Обновлённый GuideDifficultyBar, который теперь динамически реагирует на изменения;
- Интеграцию с новым API для обновления данных о эффективности.
🧼 Улучшение структуры GuideEditor
Компонент GuideEditor был переработан:
- Улучшено визуальное расположение элементов;
- Удалён устаревший и неиспользуемый код;
- Улучшена читаемость и поддерживаемость.
🌍 Локализация названий слотов
Теперь все названия слотов экипировки отображаются на русском языке:
- Добавлена локализация в slot-backgrounds.ts;
- Интерфейс стал более понятным и дружелюбным для русскоязычных пользователей.
🧩 Новый API для данных эффективности
Для управления рейтингом эффективности реализован серверный API:
- Обработка PATCH-запросов для обновления данных;
- Логика сохранения и обновления записей реализована на сервере.
Это обновление значительно упростило архитектуру и улучшило пользовательский опыт.
И теперь пару скринов
страница редактора, кнопки сохранения появляються если изменяются данные


Диалоговые окна для редактора гира


теперь у каждого слота свои условия, разделены предметы у которых могут быть сокет и у которых их нет, так же и с инчантом.
Для любопытных потыкать свежий билд Редактор или вот вам Страница билдов
Оставайтесь на связи — впереди ещё много интересного!

202
135
Финальный пост по фильтрам
Оптимизация и улучшения в работе с гайдами
В рамках последнего обновления я сосредоточился на повышении производительности и удобства взаимодействия с системой гайдов. Ниже кратко расскажу, что было сделано:
⚡ Кэширование данных
- Реализовано кэширование получения данных гайдов с использованием unstable_cache, с временем повторной валидации в 1 час. Это значительно снижает нагрузку на сервер при повторных запросах.
- Добавлено кэширование фильтров по режимам и специализациям, что улучшает скорость отклика интерфейса при выборе параметров.
💡 Обновление компонентов
- Компонент ClassGuidesPage был обновлён для использования закэшированных данных, что положительно сказалось на его производительности.
- Компонент отображения кнопки гайда (GuideButton) получил расширение: теперь он показывает больше информации о гайде, делая интерфейс более информативным и полезным.
🧼 Рефакторинг и улучшение читаемости
- Модальное окно создания гайда было переработано для улучшения читаемости и единообразия кода.
- Также улучшена общая структура кода и логика фильтрации — теперь за это отвечают кастомные хуки, что упростило поддержку и расширение функциональности.
📦 Новый API-роут
- Реализован новый маршрут API для фильтрации гайдов по различным критериям, включая класс, специализацию, роль и режим.
✅ Результат
В результате этих изменений проект стал:
- Быстрее
- Более читаемым и поддерживаемым
- Готовым к масштабированию и добавлению новых функций
Эти улучшения — шаг вперёд к стабильной и гибкой системе гайдов для WoW-сообщества.


Теперь перешел к реализации slug дальше планирую делать структуру страници гайдов
Для желающих покликать что я там накодил ссылка
173
Начал делать страницу гайдов class-guides
После пинка за то что у меня структура проекта ужасная, занялся уборкой в папках, так же помогли наладить структуру, теперь все выглядит получше.
Закончил делать функционал добавления гайда

Кнопка которая запускает генерацию гайда готова, спасибо Вампиратке за экшн который с апи близов тягает версии патчей, теперь патч автоматически определяется и записавыется в бд, я переделал рендер, теперь все данные генериреут сервер, а не подгружает клиен, это убрало проблему с подргузкой данных и на клиенте
Так же по мере надобности пополняю модели в схеме призмы, и приступаю к работе над рендером guides-page

немного подкрутил модели призмы и добавил туда новые поля для картинок фона класБГ режима и роли.
Теперь в планах сделать сид, чтоб можно было удобно все тестить и продолжить работу нам guides-page
Огромное спасибо, Overk1lls и LionBlackVMP за то, что вызвались помочь.
планов пока много, начали прощупывать апи близов, если все получиться то откажемся от тултипов вовхеда и в целом по минимуму будет использовать ембеты вовхеда

201
Небольшой отчет о проделанной работе
Я закончил серверную часть для табов, не без проблем но я их решил.
А вот где не ожидал подлянки так это на делое, деплой прошел очень тяжело, поел не мало мох нервов, но я справился, все протестировал, работает как задумано, без ошибок.
Но проделанной работой за сегодня я вполне доволен. И так что имеем на текущий момент.
Сирое создание гайда, кнопка которая по сути создает в бд пустую заглушку под гайд. Табы, добавление табов, редактирование названий, добавление картинки в таб, markdown редактор для контента, все сохраняется, удаляется и изменяется.


Сохранения работает через поиск уник ид которые присваиваются табам через heroTalentId, модель табов будет пере использоваться в других местах.
Сохранение я делаю через множественное обновление или создание записей в таблице Tab через Prisma, используя транзакцию (tx).
const upsertResults = await Promise.all(
tabs.map((tab) =>
tx.tab.upsert({
where: {
value_heroTalentsId: {
value: tab.value,
heroTalentsId: tab.heroTalentsId,
},
},
create: tab,
update: {
label: tab.label,
iconUrl: tab.iconUrl,
content: tab.content,
},
})
)
);
Линк на страницу с табами https://black-temple.vercel.app/havoc/1

223
Небольшой пост по проделанной работе
Закончил сегодня с версткой и логикой для компоненты табов, пришлось немного переделать дефолтные табы от shadcn, так же встроил в них react-md-editor с предпросмотром и возможностью развернуть на весь экран редактор.

Каждую табу можно отредактировать или удалить, после удаления переносит на ближайшую табу слева если такая есть, если нет то справа. Скрол всегда движется за активной вкладкой и появляется если табы не помещаются в блок

Все настроено для светой и темной темы, и мобильной версии

Один из компонентов готов, теперь нужно привести код в порядок и разбить его на подкомпоненты, после чего подготовить к подключению к бекенду и перейти к первым тестам.

226
Сейчас обсуждают
Загрузка комментариев...