refactor: 提取收视颜色函数到公共 utils
This commit is contained in:
@@ -14,39 +14,10 @@ import useAuthStore from '../../stores/authStore'
|
||||
import { listEpisodes } from '../../services/episodeService'
|
||||
import { listTargets } from '../../services/yearlyTargetService'
|
||||
import { getCurrentCover, getUpcomingSchedules } from '../../services/dashboardService'
|
||||
import { getShareColor, getColorLabel } from '../../utils/ratingColors'
|
||||
import ChangeCoverModal from './ChangeCoverModal'
|
||||
import './Dashboard.css'
|
||||
|
||||
/**
|
||||
* 收视份额颜色判定(极易写反,禁止凭直觉):
|
||||
* audience_share > stretch_target → 🔴 红(优秀)
|
||||
* base_target ≤ audience_share ≤ stretch_target → 🔵 蓝(达标)
|
||||
* audience_share < base_target → 🟢 绿(待提升)
|
||||
* 判色取该期 air_date 所属年份的 yearly_targets 行(不是当前年)。
|
||||
*/
|
||||
function getShareColor(share, targets, airYear) {
|
||||
const n = Number(share)
|
||||
const target = (targets || []).find(t => Number(t.year) === Number(airYear))
|
||||
if (!target) return '#999'
|
||||
if (isNaN(n)) return '#999'
|
||||
const stretch = Number(target.stretch_target)
|
||||
const base = Number(target.base_target)
|
||||
if (n > stretch) return '#c0584f' // 红=超过摸高目标(优秀)
|
||||
if (n >= base) return '#5b8db8' // 蓝=未达摸高目标(达标)
|
||||
return '#7aa874' // 绿=未达基础目标(待提升)
|
||||
}
|
||||
|
||||
function getColorLabel(share, targets, airYear) {
|
||||
const n = Number(share)
|
||||
const target = (targets || []).find(t => Number(t.year) === Number(airYear))
|
||||
if (!target) return '未知'
|
||||
const stretch = Number(target.stretch_target)
|
||||
const base = Number(target.base_target)
|
||||
if (n > stretch) return '优秀'
|
||||
if (n >= base) return '达标'
|
||||
return '待提升'
|
||||
}
|
||||
|
||||
function getBarHeight(share) {
|
||||
return Math.round((Number(share) / 1.0) * 160)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
/**
|
||||
* 收视份额颜色判定(极易写反,禁止凭直觉):
|
||||
* audience_share > stretch_target → 🔴 红(优秀)
|
||||
* base_target ≤ audience_share ≤ stretch_target → 🔵 蓝(达标)
|
||||
* audience_share < base_target → 🟢 绿(待提升)
|
||||
* 判色取该期 air_date 所属年份的 yearly_targets 行(不是当前年)。
|
||||
*/
|
||||
|
||||
/**
|
||||
* 根据收视份额和年度目标返回对应的颜色代码
|
||||
* @param {number|null} share - 收视份额
|
||||
* @param {Array} targets - 年度目标数组
|
||||
* @param {number} airYear - 播出年份
|
||||
* @returns {string} 颜色代码
|
||||
*/
|
||||
export function getShareColor(share, targets, airYear) {
|
||||
const n = Number(share)
|
||||
const target = (targets || []).find(t => Number(t.year) === Number(airYear))
|
||||
if (!target) return '#999'
|
||||
if (isNaN(n)) return '#999'
|
||||
const stretch = Number(target.stretch_target)
|
||||
const base = Number(target.base_target)
|
||||
if (n > stretch) return '#c0584f' // 红=超过摸高目标(优秀)
|
||||
if (n >= base) return '#5b8db8' // 蓝=未达摸高目标(达标)
|
||||
return '#7aa874' // 绿=未达基础目标(待提升)
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据收视份额和年度目标返回颜色标签
|
||||
* @param {number|null} share - 收视份额
|
||||
* @param {Array} targets - 年度目标数组
|
||||
* @param {number} airYear - 播出年份
|
||||
* @returns {string} 颜色标签
|
||||
*/
|
||||
export function getColorLabel(share, targets, airYear) {
|
||||
const n = Number(share)
|
||||
const target = (targets || []).find(t => Number(t.year) === Number(airYear))
|
||||
if (!target) return '未知'
|
||||
const stretch = Number(target.stretch_target)
|
||||
const base = Number(target.base_target)
|
||||
if (n > stretch) return '优秀'
|
||||
if (n >= base) return '达标'
|
||||
return '待提升'
|
||||
}
|
||||
Reference in New Issue
Block a user