Skip to content

Commit 14af9e8

Browse files
committed
feat(OperationRating): 增加点赞数提示
1 parent 954a8ec commit 14af9e8

File tree

1 file changed

+27
-6
lines changed

1 file changed

+27
-6
lines changed

src/components/viewer/OperationRating.tsx

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Icon, IconSize } from '@blueprintjs/core'
2+
import { Popover2InteractionKind, Tooltip2 } from '@blueprintjs/popover2'
23

34
import clsx from 'clsx'
45
import { FC } from 'react'
@@ -7,8 +8,21 @@ import Rating from 'react-rating'
78
import { Operation } from 'models/operation'
89
import { ratingLevelToString } from 'models/rating'
910

11+
type PickedOperation = Pick<
12+
Operation,
13+
'notEnoughRating' | 'ratingRatio' | 'ratingLevel' | 'like' | 'dislike'
14+
>
15+
16+
const GetLevelDescription = (operation: PickedOperation) => {
17+
return `有${Math.round(
18+
(operation.like / (operation.like + operation.dislike)) * 100,
19+
)}%的人对本作业点了个赞(${operation.like}/${
20+
operation.like + operation.dislike
21+
})`
22+
}
23+
1024
export const OperationRating: FC<{
11-
operation: Pick<Operation, 'notEnoughRating' | 'ratingRatio' | 'ratingLevel'>
25+
operation: PickedOperation
1226
layout?: 'horizontal' | 'vertical'
1327
className?: string
1428
}> = ({ operation, layout = 'vertical', className }) => {
@@ -60,11 +74,18 @@ export const OperationRating: FC<{
6074
layout === 'horizontal' && !operation.notEnoughRating && 'mr-1.5',
6175
)}
6276
>
63-
{operation.notEnoughRating
64-
? layout === 'vertical'
65-
? '还没有足够的评分'
66-
: '评分不足'
67-
: ratingLevelToString(operation.ratingLevel)}
77+
<Tooltip2
78+
className="!inline-block !mt-0"
79+
interactionKind={Popover2InteractionKind.HOVER}
80+
content={GetLevelDescription(operation)}
81+
position="bottom-left"
82+
>
83+
{operation.notEnoughRating
84+
? layout === 'vertical'
85+
? '还没有足够的评分'
86+
: '评分不足'
87+
: ratingLevelToString(operation.ratingLevel)}
88+
</Tooltip2>
6889
</div>
6990
</div>
7091
)

0 commit comments

Comments
 (0)