press-plus
Version:
99 lines (82 loc) • 2.49 kB
text/typescript
import { timeStampFormat } from 't-comm/es/time/time';
import { t } from '../../locale';
import {
START_BATTLE_CODE_MAP,
START_BATTLE_TITLE_MAP,
SCHEDULE_STATUS_MAP,
SCHEDULE_CUSTOM_STATUS_MAP,
} from '../config';
export function isSchEnd(scheGroup: Record<string, any>) {
const { rawState } = scheGroup.nodeItem || {};
if (rawState === SCHEDULE_STATUS_MAP.ENDED) {
return true;
}
return [
SCHEDULE_STATUS_MAP.ENDED,
SCHEDULE_CUSTOM_STATUS_MAP.EMPTY,
].includes(scheGroup.realStatus);
}
export function isSchPlaying(realStatus: number, isNotStart: boolean) {
return [SCHEDULE_STATUS_MAP.PLAYING].includes(realStatus as 100) && !isNotStart;
}
export function isScheNotStart(realStatus: number) {
return realJudgeScheNotStart(realStatus);
}
function realJudgeScheNotStart(realStatus: number) {
return [
undefined,
SCHEDULE_STATUS_MAP.NOT_START,
SCHEDULE_STATUS_MAP.STARTED,
SCHEDULE_CUSTOM_STATUS_MAP.PENDING,
].includes(realStatus as any);
}
/**
* 获取未开始的不同文案
*
* 未开始=人满开赛
* 未开始=待管理员开赛+上场中
* 未开始=10/30 19:00开赛+上场中
*
* 人满开赛=上场中=已开赛、10人未准备
*
* 区分点就是,开赛前/开赛后
*
*/
export function getReadyInfoDesc({
roundInfo = {},
scheGroup = {},
}) {
const {
latest_ready_time: latestReadyTime,
start_battle_type: startBattleType,
} = roundInfo as Record<string, any>;
const { realStatus } = scheGroup as Record<string, any>;
const startBattleTypeDesc = getStartBattleTypeDesc(roundInfo);
const curBo = (scheGroup as Record<string, any>)?.nodeItem?.sch_score?.cur_bo || 0;
if (curBo > 1) {
return t('scheduleTree.joining');
}
if (startBattleType == START_BATTLE_CODE_MAP.AUTO) {
return startBattleTypeDesc;
}
if (realStatus == SCHEDULE_STATUS_MAP.STARTED) {
if (!latestReadyTime) {
return t('scheduleTree.joining');
}
return t('scheduleTree.joiningAndTimeoutAutoQuit');
}
return startBattleTypeDesc;
}
/**
* 获取开赛方式描述
*/
export function getStartBattleTypeDesc(roundInfo: Record<string, any>) {
const {
show_stime: startTime,
start_battle_type: startBattleType,
} = roundInfo || {};
if (startBattleType === START_BATTLE_CODE_MAP.ON_TIME) {
return timeStampFormat(startTime, t('scheduleTree.startMatchOnTime'));
}
return START_BATTLE_TITLE_MAP[startBattleType as keyof typeof START_BATTLE_TITLE_MAP];
}