| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- /**
- * 驾驶舱图标语义注册表。
- *
- * 图标文件由统一运行时资产解析层登记和解析;组件仍只消费语义 key,
- * 因此蓝湖文件改名或发布版本切换不会牵动引用点。
- *
- * 切图素材由维护者按中文语义命名导入(public/cockpit/assets/icons/*.png),
- * manifest 的 source.layer 记录原文件名,语义以维护者命名为准。
- */
- import { resolveAsset } from './runtimeAssets.js'
- const ICON_SPECS = {
- brand: 'icon.brand',
- // 票 17 第六轮:品牌区装饰(标题下光带 + 顶栏底部光路),见 manifest icon.brand.glow*
- brandGlow: 'icon.brand.glow',
- brandGlowPath: 'icon.brand.glow.path',
- // 票 17 第七轮:模式按钮选中态底板(CSS background 消费,非 <img>),见 manifest icon.nav.active-bg
- navActiveBg: 'icon.nav.active-bg',
- // 票 18(批次 5):品牌标题后方光池(CSS background 消费,非 <img>),见 manifest icon.brand.pool
- brandPool: 'icon.brand.pool',
- layers: 'icon.layers',
- points: 'icon.points',
- event: 'icon.event',
- resource: 'icon.resource',
- blank: 'icon.blank',
- // 行业筛选
- gas: 'icon.industry.gas',
- water: 'icon.industry.water',
- drainage: 'icon.industry.drainage',
- manhole: 'icon.manhole',
- // 面板小标题(第三轮:I/Pipe/Q 系列去色染主蓝统一风格,见 manifest icon.panel.*)
- panelSituation: 'icon.panel.situation',
- panelMonitoring: 'icon.panel.monitoring',
- panelAlert: 'icon.panel.alert',
- panelArchive: 'icon.panel.archive',
- panelEmergency: 'icon.panel.emergency',
- panelDistribution: 'icon.panel.distribution',
- panelLedger: 'icon.panel.ledger',
- panelCurrent: 'icon.panel.emergency',
- panelHistory: 'icon.panel.history',
- panelEfficiency: 'icon.panel.efficiency',
- panelAnalysis: 'icon.panel.analysis',
- // 状态标识(地图图例行,各状态语义色染色,见 manifest icon.status.*)
- statusAlarm: 'icon.status.alarm',
- statusWarning: 'icon.status.warning',
- statusWorkOrder: 'icon.status.workOrder',
- statusNormal: 'icon.status.normal',
- statusOffline: 'icon.status.offline',
- statusEmpty: 'icon.status.empty',
- statusUnknown: 'icon.status.unknown',
- statusUnassociated: 'icon.status.unassociated',
- // KPI 数据卡片图标(票 37 走查扩展;manifest icon.kpi.*,白剪影 + mask 染语义色)
- kpiFacilityCount: 'icon.kpi.facilityCount',
- kpiSmartDeviceCount: 'icon.kpi.smartDeviceCount',
- kpiDeviceCount: 'icon.kpi.deviceCount',
- kpiMonitoringPointCount: 'icon.kpi.monitoringPointCount',
- kpiFacility: 'icon.kpi.facility',
- kpiIndustryCount: 'icon.kpi.industryCount',
- kpiOnlineRate: 'icon.kpi.onlineRate',
- kpiOffline: 'icon.kpi.offline',
- kpiStale: 'icon.kpi.stale',
- kpiUnknownOrMissing: 'icon.kpi.unknownOrMissing',
- kpiWarning: 'icon.kpi.warning',
- kpiAlarm: 'icon.kpi.alarm',
- kpiAbnormalCount: 'icon.kpi.abnormalCount',
- kpiResolved: 'icon.kpi.resolved',
- kpiEfficiency: 'icon.kpi.efficiency',
- kpiTime: 'icon.kpi.time',
- kpiScale: 'icon.kpi.scale',
- kpiShield: 'icon.kpi.shield',
- }
- export const ICON_NAMES = Object.keys(ICON_SPECS)
- export function isKnownIcon(name) {
- return Object.prototype.hasOwnProperty.call(ICON_SPECS, name)
- }
- export function iconFor(name, options = {}) {
- const assetKey = ICON_SPECS[name]
- if (!assetKey) return null
- const asset = resolveAsset(assetKey, options)
- if (!asset.url) return null
- // 票 37:KPI 图标走 mask(渲染层按 KPI_ICON_COLORS 染语义色);其余按 manifest 原样。
- if (assetKey.startsWith('icon.kpi.')) return { name, ...asset, renderMode: 'mask' }
- return { name, ...asset }
- }
|