Parcourir la source

:art: 调整闪卡评分按钮 https://github.com/siyuan-note/siyuan/issues/7459

Liang Ding il y a 2 ans
Parent
commit
03f3cc6e2e
3 fichiers modifiés avec 42 ajouts et 31 suppressions
  1. 1 27
      kernel/model/file.go
  2. 3 4
      kernel/model/flashcard.go
  3. 38 0
      kernel/util/time.go

+ 1 - 27
kernel/model/file.go

@@ -19,7 +19,6 @@ package model
 import (
 	"errors"
 	"fmt"
-	"math"
 	"os"
 	"path"
 	"path/filepath"
@@ -93,35 +92,10 @@ func (box *Box) docFromFileInfo(fileInfo *FileInfo, ial map[string]string) (ret
 	}
 
 	ret.Mtime = mTime.Unix()
-	ret.HMtime = HumanizeTime(mTime)
+	ret.HMtime = util.HumanizeTime(mTime, Conf.Lang)
 	return
 }
 
-func HumanizeTime(then time.Time) string {
-	labels := util.TimeLangs[Conf.Lang]
-
-	defaultMagnitudes := []humanize.RelTimeMagnitude{
-		{time.Second, labels["now"].(string), time.Second},
-		{2 * time.Second, labels["1s"].(string), 1},
-		{time.Minute, labels["xs"].(string), time.Second},
-		{2 * time.Minute, labels["1m"].(string), 1},
-		{time.Hour, labels["xm"].(string), time.Minute},
-		{2 * time.Hour, labels["1h"].(string), 1},
-		{humanize.Day, labels["xh"].(string), time.Hour},
-		{2 * humanize.Day, labels["1d"].(string), 1},
-		{humanize.Week, labels["xd"].(string), humanize.Day},
-		{2 * humanize.Week, labels["1w"].(string), 1},
-		{humanize.Month, labels["xw"].(string), humanize.Week},
-		{2 * humanize.Month, labels["1M"].(string), 1},
-		{humanize.Year, labels["xM"].(string), humanize.Month},
-		{18 * humanize.Month, labels["1y"].(string), 1},
-		{2 * humanize.Year, labels["2y"].(string), 1},
-		{humanize.LongTime, labels["xy"].(string), humanize.Year},
-		{math.MaxInt64, labels["max"].(string), 1},
-	}
-	return humanize.CustomRelTime(then, time.Now(), labels["albl"].(string), labels["blbl"].(string), defaultMagnitudes)
-}
-
 func (box *Box) docIAL(p string) (ret map[string]string) {
 	name := strings.ToLower(filepath.Base(p))
 	if !strings.HasSuffix(name, ".sy") {

+ 3 - 4
kernel/model/flashcard.go

@@ -29,7 +29,6 @@ import (
 	"github.com/88250/gulu"
 	"github.com/88250/lute/ast"
 	"github.com/88250/lute/parse"
-	"github.com/dustin/go-humanize"
 	"github.com/siyuan-note/logging"
 	"github.com/siyuan-note/riff"
 	"github.com/siyuan-note/siyuan/kernel/cache"
@@ -207,7 +206,7 @@ func GetTreeDueFlashcards(rootID string) (ret []*Flashcard, err error) {
 
 		nextDues := map[riff.Rating]string{}
 		for rating, due := range card.NextDues() {
-			nextDues[rating] = strings.TrimSpace(humanize.RelTime(due, now, "", ""))
+			nextDues[rating] = strings.TrimSpace(util.HumanizeRelTime(due, now, Conf.Lang))
 		}
 
 		ret = append(ret, &Flashcard{
@@ -285,7 +284,7 @@ func GetDueFlashcards(deckID string) (ret []*Flashcard, err error) {
 
 		nextDues := map[riff.Rating]string{}
 		for rating, due := range card.NextDues() {
-			nextDues[rating] = strings.TrimSpace(humanize.RelTime(due, now, "", ""))
+			nextDues[rating] = strings.TrimSpace(util.HumanizeRelTime(due, now, Conf.Lang))
 		}
 
 		ret = append(ret, &Flashcard{
@@ -317,7 +316,7 @@ func getAllDueFlashcards() (ret []*Flashcard, err error) {
 
 			nextDues := map[riff.Rating]string{}
 			for rating, due := range card.NextDues() {
-				nextDues[rating] = strings.TrimSpace(humanize.RelTime(due, now, "", ""))
+				nextDues[rating] = strings.TrimSpace(util.HumanizeRelTime(due, now, Conf.Lang))
 			}
 
 			ret = append(ret, &Flashcard{

+ 38 - 0
kernel/util/time.go

@@ -17,7 +17,11 @@
 package util
 
 import (
+	"math"
+	"strings"
 	"time"
+
+	"github.com/dustin/go-humanize"
 )
 
 func Millisecond2Time(t int64) time.Time {
@@ -33,3 +37,37 @@ func CurrentTimeMillis() int64 {
 func CurrentTimeSecondsStr() string {
 	return time.Now().Format("20060102150405")
 }
+
+func HumanizeRelTime(a time.Time, b time.Time, lang string) string {
+	_, magnitudes := humanizeTimeMagnitudes(lang)
+	return strings.TrimSpace(humanize.CustomRelTime(a, b, "", "", magnitudes))
+}
+
+func HumanizeTime(then time.Time, lang string) string {
+	labels, magnitudes := humanizeTimeMagnitudes(lang)
+	return strings.TrimSpace(humanize.CustomRelTime(then, time.Now(), labels["albl"].(string), labels["blbl"].(string), magnitudes))
+}
+
+func humanizeTimeMagnitudes(lang string) (labels map[string]interface{}, magnitudes []humanize.RelTimeMagnitude) {
+	labels = TimeLangs[lang]
+	magnitudes = []humanize.RelTimeMagnitude{
+		{time.Second, labels["now"].(string), time.Second},
+		{2 * time.Second, labels["1s"].(string), 1},
+		{time.Minute, labels["xs"].(string), time.Second},
+		{2 * time.Minute, labels["1m"].(string), 1},
+		{time.Hour, labels["xm"].(string), time.Minute},
+		{2 * time.Hour, labels["1h"].(string), 1},
+		{humanize.Day, labels["xh"].(string), time.Hour},
+		{2 * humanize.Day, labels["1d"].(string), 1},
+		{humanize.Week, labels["xd"].(string), humanize.Day},
+		{2 * humanize.Week, labels["1w"].(string), 1},
+		{humanize.Month, labels["xw"].(string), humanize.Week},
+		{2 * humanize.Month, labels["1M"].(string), 1},
+		{humanize.Year, labels["xM"].(string), humanize.Month},
+		{18 * humanize.Month, labels["1y"].(string), 1},
+		{2 * humanize.Year, labels["2y"].(string), 1},
+		{humanize.LongTime, labels["xy"].(string), humanize.Year},
+		{math.MaxInt64, labels["max"].(string), 1},
+	}
+	return
+}