4.16.0: Добавлен выбор цвета для проектов
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 2m9s
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 2m9s
This commit is contained in:
@@ -1,5 +1,40 @@
|
||||
// Утилиты для работы с проектами - обеспечивают единую сортировку и цвета
|
||||
|
||||
// Палитра из 30 контрастных цветов для проектов (HEX формат)
|
||||
// Должна быть синхронизирована с backend (main.go)
|
||||
export const PROJECT_COLORS_PALETTE = [
|
||||
'#EF4444', // Красный
|
||||
'#F97316', // Оранжевый
|
||||
'#F59E0B', // Янтарный
|
||||
'#EAB308', // Желтый
|
||||
'#84CC16', // Лайм
|
||||
'#22C55E', // Зеленый
|
||||
'#10B981', // Изумрудный
|
||||
'#14B8A6', // Бирюзовый
|
||||
'#06B6D4', // Голубой
|
||||
'#0EA5E9', // Небесный
|
||||
'#3B82F6', // Синий
|
||||
'#6366F1', // Индиго
|
||||
'#8B5CF6', // Фиолетовый
|
||||
'#A855F7', // Пурпурный
|
||||
'#D946EF', // Фуксия
|
||||
'#EC4899', // Розовый
|
||||
'#F43F5E', // Розово-красный
|
||||
'#DC2626', // Темно-красный
|
||||
'#EA580C', // Темно-оранжевый
|
||||
'#CA8A04', // Темно-желтый
|
||||
'#65A30D', // Темно-лайм
|
||||
'#16A34A', // Темно-зеленый
|
||||
'#059669', // Темно-изумрудный
|
||||
'#0D9488', // Темно-бирюзовый
|
||||
'#0891B2', // Темно-голубой
|
||||
'#0284C7', // Темно-небесный
|
||||
'#2563EB', // Темно-синий
|
||||
'#4F46E5', // Темно-индиго
|
||||
'#7C3AED', // Темно-фиолетовый
|
||||
'#9333EA', // Темно-пурпурный
|
||||
]
|
||||
|
||||
// Функция для генерации цвета проекта на основе его индекса в отсортированном списке
|
||||
export function getProjectColorByIndex(index) {
|
||||
const hue = (index * 137.508) % 360 // Золотой угол для равномерного распределения цветов
|
||||
@@ -39,13 +74,20 @@ export function getAllProjectsSorted(allProjectsData, currentWeekData = null) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Получает цвет проекта на основе его названия
|
||||
* Получает цвет проекта на основе его названия или цвета из БД
|
||||
*
|
||||
* @param {string} projectName - название проекта
|
||||
* @param {Array} allProjectsSorted - отсортированный список всех проектов
|
||||
* @returns {string} цвет в формате HSL
|
||||
* @param {string|null} projectColorFromDB - цвет проекта из базы данных (HEX формат)
|
||||
* @returns {string} цвет в формате HEX или HSL (fallback)
|
||||
*/
|
||||
export function getProjectColor(projectName, allProjectsSorted) {
|
||||
export function getProjectColor(projectName, allProjectsSorted, projectColorFromDB = null) {
|
||||
// Если передан цвет из БД и он не пустой - использовать его
|
||||
if (projectColorFromDB && projectColorFromDB.trim() !== '') {
|
||||
return projectColorFromDB
|
||||
}
|
||||
|
||||
// Иначе использовать вычисляемый цвет (текущая логика) - это fallback для обратной совместимости
|
||||
const projectIndex = allProjectsSorted.indexOf(projectName)
|
||||
return projectIndex >= 0 ? getProjectColorByIndex(projectIndex) : '#9CA3AF'
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user