MCPcopy
hub / github.com/sansan0/TrendRadar / renderFrequencyPanel

Function renderFrequencyPanel

docs/assets/script.js:1718–2071  ·  view source on GitHub ↗
(data)

Source from the content-addressed store, hash-verified

1716}
1717
1718function renderFrequencyPanel(data) {
1719 if (!data) {
1720 data = parseFrequencyText(currentFrequency);
1721 }
1722
1723 const panel = document.getElementById('frequency-panel');
1724
1725 // 辅助函数:根据关键词类型返回样式类
1726 function getKeywordClass(keyword) {
1727 if (keyword.startsWith('+')) return 'bg-green-500';
1728 if (keyword.startsWith('!')) return 'bg-red-500';
1729 if (keyword.startsWith('@')) return 'bg-purple-500';
1730 if (keyword.startsWith('/') || keyword.includes('=>')) return 'bg-indigo-500';
1731 return 'bg-blue-500';
1732 }
1733
1734 // 辅助函数:为关键词添加标签
1735 function getKeywordLabel(keyword) {
1736 if (keyword.startsWith('+')) return '必须';
1737 if (keyword.startsWith('!')) return '排除';
1738 if (keyword.startsWith('@')) return '限制';
1739 if (keyword.startsWith('/')) return '正则';
1740 if (keyword.includes('=>')) return '别名';
1741 return '';
1742 }
1743
1744 // 渲染词组卡片
1745 function renderGroupCard(group, idx) {
1746 const jumpIcon = `<i class="fa-solid fa-grip-vertical text-gray-400 text-xs mr-2" title="拖动调整顺序"></i>`;
1747
1748 // 序号标记
1749 const indexBadge = `<span class="text-xs bg-gray-700 text-white px-2.5 py-1 rounded-full font-bold mr-2" title="词组序号">#${idx + 1}</span>`;
1750
1751 // 相关组标记
1752 const relatedGroupBadge = group.isRelatedGroup
1753 ? `<span class="text-[10px] bg-gradient-to-r from-blue-500 to-indigo-500 text-white px-2 py-0.5 rounded font-bold ml-2" title="此组与相邻组相关(无空行分隔)">
1754 <i class="fa-solid fa-link mr-1"></i>相关组 ${group.relatedGroupIndex + 1}/${group.relatedGroupTotal}
1755 </span>`
1756 : '';
1757
1758 // 相关组边框样式
1759 const relatedGroupStyle = group.isRelatedGroup
1760 ? 'border-l-4 border-l-blue-500 shadow-lg'
1761 : '';
1762
1763 if (group.type === 'group-name') {
1764 // 组别名类型
1765 return `
1766 <div class="word-group-card border-2 border-orange-200 bg-orange-50 group ${relatedGroupStyle} cursor-move" data-group-index="${idx}" onclick="scrollToWordGroupInEditor(${idx})">
1767 <div class="flex items-center justify-between mb-3">
1768 <div class="flex items-center flex-1 gap-2">
1769 ${jumpIcon}
1770 ${indexBadge}
1771 <span class="text-[10px] bg-orange-500 text-white px-2 py-0.5 rounded font-bold">组别名</span>
1772 ${relatedGroupBadge}
1773 <input type="text" value="${group.name || ''}" placeholder="组别名(如:东亚)"
1774 class="text-sm font-bold border-0 border-b-2 border-orange-300 focus:border-orange-500 outline-none px-2 py-1 flex-1 bg-transparent"
1775 onclick="event.stopPropagation()"

Callers 3

script.jsFile · 0.85
syncFrequencyToUIFunction · 0.85
saveEditFunction · 0.85

Calls 5

parseFrequencyTextFunction · 0.85
getKeywordClassFunction · 0.85
renderGroupCardFunction · 0.85
buildFrequencyTextFunction · 0.85
updateBackdropFunction · 0.85

Tested by

no test coverage detected