/
45case
/
ptable
Обзор
Документация
Войти
/
45case
/
ptable
Код
Запросы
3
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
dev
src/entities/element/model/category.ts
60 строк
2 KB
Olya
feat: интерактивная подсветка элементов по сериям и агрегатным состояниям
15 июл 2026, 18:34
15 июл 2026, 18:34
681598d
Код
Авторство
О чём код?
import type { PeriodicElement } from "./elements"; export type ElementCategory = | "actinide" | "alkali-metal" | "alkaline-earth-metal" | "halogen" | "lanthanide" | "metalloid" | "noble-gas" | "nonmetal" | "post-transition-metal" | "transition-metal" | "unknown"; export const elementCategoryOptions: readonly ElementCategory[] = [ "alkali-metal", "alkaline-earth-metal", "transition-metal", "post-transition-metal", "metalloid", "nonmetal", "halogen", "noble-gas", "lanthanide", "actinide", "unknown", ]; export const elementCategoryLabels: Record<ElementCategory, string> = { "alkali-metal": "Щелочной металл", "alkaline-earth-metal": "Щёлочноземельный металл", "transition-metal": "Переходный металл", "post-transition-metal": "Постпереходный металл", metalloid: "Металлоид", nonmetal: "Неметалл", halogen: "Галоген", "noble-gas": "Благородный газ", lanthanide: "Лантаноид", actinide: "Актиноид", unknown: "Неизвестно", }; type ElementCategorySource = Pick<PeriodicElement, "group" | "series">; export function resolveElementCategory(element: ElementCategorySource): ElementCategory { if (element.series === "nonmetal" && element.group === 17) { return "halogen"; } if (element.series === "unknown") { return "unknown"; } return element.series as ElementCategory; } export function getElementCategoryLabel(category: ElementCategory): string { return elementCategoryLabels[category]; }