diff --git a/package-lock.json b/package-lock.json index c7110b7..84cdacd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "weflow", - "version": "1.5.4", + "version": "2.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "weflow", - "version": "1.5.4", + "version": "2.0.1", "hasInstallScript": true, "dependencies": { "better-sqlite3": "^12.5.0", diff --git a/package.json b/package.json index 282c41c..155eeb1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "weflow", - "version": "1.5.4", + "version": "2.0.1", "description": "WeFlow", "main": "dist-electron/main.js", "author": "cc", diff --git a/src/pages/AnalyticsPage.scss b/src/pages/AnalyticsPage.scss index c45c74e..81102df 100644 --- a/src/pages/AnalyticsPage.scss +++ b/src/pages/AnalyticsPage.scss @@ -482,13 +482,43 @@ margin-top: 16px; } + .exclude-footer-left { + display: flex; + align-items: center; + gap: 12px; + } + .exclude-count { font-size: 12px; color: var(--text-tertiary); } + .btn-text { + display: inline-flex; + align-items: center; + gap: 4px; + background: none; + border: none; + cursor: pointer; + font-size: 12px; + color: var(--text-secondary); + padding: 4px 8px; + border-radius: 6px; + transition: all 0.15s; + + &:hover { + color: var(--primary); + background: var(--primary-light); + } + + &:disabled { + opacity: 0.5; + cursor: not-allowed; + } + } + .exclude-actions { display: flex; gap: 8px; } -} +} \ No newline at end of file diff --git a/src/pages/AnalyticsPage.tsx b/src/pages/AnalyticsPage.tsx index 9e56515..df8a6c7 100644 --- a/src/pages/AnalyticsPage.tsx +++ b/src/pages/AnalyticsPage.tsx @@ -146,6 +146,17 @@ function AnalyticsPage() { }) } + const toggleInvertSelection = () => { + setDraftExcluded((prev) => { + const allUsernames = new Set(excludeCandidates.map(c => normalizeUsername(c.username))) + const inverted = new Set() + for (const u of allUsernames) { + if (!prev.has(u)) inverted.add(u) + } + return inverted + }) + } + const handleApplyExcluded = async () => { const payload = Array.from(draftExcluded) setIsExcludeDialogOpen(false) @@ -493,7 +504,12 @@ function AnalyticsPage() { )}
- 已排除 {draftExcluded.size} 人 +
+ 已排除 {draftExcluded.size} 人 + +