2024-06-03 17:38:30 +03:00
|
|
|
import { AccessPolicy, LibraryItemType, LocationHead } from '@/models/library';
|
2024-06-02 23:41:46 +03:00
|
|
|
import { CstMatchMode, DependencyMode } from '@/models/miscellaneous';
|
|
|
|
|
|
|
|
import {
|
|
|
|
IconAlias,
|
|
|
|
IconBusiness,
|
|
|
|
IconFilter,
|
|
|
|
IconFollow,
|
|
|
|
IconFollowOff,
|
|
|
|
IconFormula,
|
|
|
|
IconGraphCollapse,
|
|
|
|
IconGraphExpand,
|
|
|
|
IconGraphInputs,
|
|
|
|
IconGraphOutputs,
|
|
|
|
IconHide,
|
2024-06-03 17:38:30 +03:00
|
|
|
IconOSS,
|
2024-06-02 23:41:46 +03:00
|
|
|
IconPrivate,
|
|
|
|
IconProps,
|
|
|
|
IconProtected,
|
|
|
|
IconPublic,
|
2024-06-03 17:38:30 +03:00
|
|
|
IconRSForm,
|
2024-06-02 23:41:46 +03:00
|
|
|
IconSettings,
|
|
|
|
IconShow,
|
|
|
|
IconTemplates,
|
|
|
|
IconTerm,
|
|
|
|
IconText,
|
|
|
|
IconUser
|
|
|
|
} from './Icons';
|
|
|
|
|
|
|
|
export interface DomIconProps<RequestData> extends IconProps {
|
|
|
|
value: RequestData;
|
|
|
|
}
|
|
|
|
|
2024-06-03 17:38:30 +03:00
|
|
|
export function ItemTypeIcon({ value, size = '1.25rem', className }: DomIconProps<LibraryItemType>) {
|
|
|
|
switch (value) {
|
|
|
|
case LibraryItemType.RSFORM:
|
|
|
|
return <IconRSForm size={size} className={className ?? 'clr-text-primary'} />;
|
|
|
|
case LibraryItemType.OSS:
|
|
|
|
return <IconOSS size={size} className={className ?? 'clr-text-green'} />;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-06-02 23:41:46 +03:00
|
|
|
export function PolicyIcon({ value, size = '1.25rem', className }: DomIconProps<AccessPolicy>) {
|
|
|
|
switch (value) {
|
|
|
|
case AccessPolicy.PRIVATE:
|
|
|
|
return <IconPrivate size={size} className={className ?? 'clr-text-red'} />;
|
|
|
|
case AccessPolicy.PROTECTED:
|
|
|
|
return <IconProtected size={size} className={className ?? 'clr-text-primary'} />;
|
|
|
|
case AccessPolicy.PUBLIC:
|
|
|
|
return <IconPublic size={size} className={className ?? 'clr-text-green'} />;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export function VisibilityIcon({ value, size = '1.25rem', className }: DomIconProps<boolean>) {
|
|
|
|
if (value) {
|
|
|
|
return <IconShow size={size} className={className ?? 'clr-text-green'} />;
|
|
|
|
} else {
|
|
|
|
return <IconHide size={size} className={className ?? 'clr-text-red'} />;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export function SubscribeIcon({ value, size = '1.25rem', className }: DomIconProps<boolean>) {
|
|
|
|
if (value) {
|
|
|
|
return <IconFollow size={size} className={className ?? 'clr-text-green'} />;
|
|
|
|
} else {
|
|
|
|
return <IconFollowOff size={size} className={className ?? 'clr-text-red'} />;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-06-04 11:19:21 +03:00
|
|
|
export function LocationIcon({ value, size = '1.25rem', className }: DomIconProps<string>) {
|
|
|
|
switch (value.substring(0, 2) as LocationHead) {
|
2024-06-02 23:41:46 +03:00
|
|
|
case LocationHead.COMMON:
|
|
|
|
return <IconPublic size={size} className={className ?? 'clr-text-primary'} />;
|
|
|
|
case LocationHead.LIBRARY:
|
2024-06-04 11:19:21 +03:00
|
|
|
return <IconTemplates size={size} className={className ?? 'clr-text-red'} />;
|
2024-06-02 23:41:46 +03:00
|
|
|
case LocationHead.PROJECTS:
|
|
|
|
return <IconBusiness size={size} className={className ?? 'clr-text-primary'} />;
|
|
|
|
case LocationHead.USER:
|
2024-06-04 11:19:21 +03:00
|
|
|
return <IconUser size={size} className={className ?? 'clr-text-green'} />;
|
2024-06-02 23:41:46 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export function DependencyIcon(mode: DependencyMode, size: string, color?: string) {
|
|
|
|
switch (mode) {
|
|
|
|
case DependencyMode.ALL:
|
|
|
|
return <IconSettings size={size} className={color} />;
|
|
|
|
case DependencyMode.EXPRESSION:
|
|
|
|
return <IconText size={size} className={color} />;
|
|
|
|
case DependencyMode.OUTPUTS:
|
|
|
|
return <IconGraphOutputs size={size} className={color} />;
|
|
|
|
case DependencyMode.INPUTS:
|
|
|
|
return <IconGraphInputs size={size} className={color} />;
|
|
|
|
case DependencyMode.EXPAND_OUTPUTS:
|
|
|
|
return <IconGraphExpand size={size} className={color} />;
|
|
|
|
case DependencyMode.EXPAND_INPUTS:
|
|
|
|
return <IconGraphCollapse size={size} className={color} />;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export function MatchModeIcon(mode: CstMatchMode, size: string, color?: string) {
|
|
|
|
switch (mode) {
|
|
|
|
case CstMatchMode.ALL:
|
|
|
|
return <IconFilter size={size} className={color} />;
|
|
|
|
case CstMatchMode.TEXT:
|
|
|
|
return <IconText size={size} className={color} />;
|
|
|
|
case CstMatchMode.EXPR:
|
|
|
|
return <IconFormula size={size} className={color} />;
|
|
|
|
case CstMatchMode.TERM:
|
|
|
|
return <IconTerm size={size} className={color} />;
|
|
|
|
case CstMatchMode.NAME:
|
|
|
|
return <IconAlias size={size} className={color} />;
|
|
|
|
}
|
|
|
|
}
|