mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-05-17 01:21:14 +08:00
Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
aa5acf39cf
6
.github/CONTRIBUTING.md
vendored
6
.github/CONTRIBUTING.md
vendored
@ -16,10 +16,10 @@ Install pnpm: `npm install -g pnpm`
|
|||||||
|
|
||||||
Set the Electron mirror environment variable and install Electron:
|
Set the Electron mirror environment variable and install Electron:
|
||||||
|
|
||||||
* macOS/Linux: `ELECTRON_MIRROR=https://cnpmjs.org/mirrors/electron/ pnpm install electron@25.9.0 -D`
|
* macOS/Linux: `ELECTRON_MIRROR=https://cnpmjs.org/mirrors/electron/ pnpm install electron@26.3.0 -D`
|
||||||
* Windows:
|
* Windows:
|
||||||
* `SET ELECTRON_MIRROR=https://cnpmjs.org/mirrors/electron/`
|
* `SET ELECTRON_MIRROR=https://cnpmjs.org/mirrors/electron/`
|
||||||
* `pnpm install electron@25.9.0 -D`
|
* `pnpm install electron@26.3.0 -D`
|
||||||
|
|
||||||
NPM mirror:
|
NPM mirror:
|
||||||
|
|
||||||
@ -30,7 +30,7 @@ NPM mirror:
|
|||||||
|
|
||||||
On the desktop, go to the app folder to run:
|
On the desktop, go to the app folder to run:
|
||||||
|
|
||||||
* `pnpm install electron@25.9.0 -D`
|
* `pnpm install electron@26.3.0 -D`
|
||||||
* `pnpm run dev`
|
* `pnpm run dev`
|
||||||
* `pnpm run start`
|
* `pnpm run start`
|
||||||
|
|
||||||
|
6
.github/CONTRIBUTING_zh_CN.md
vendored
6
.github/CONTRIBUTING_zh_CN.md
vendored
@ -18,11 +18,11 @@
|
|||||||
|
|
||||||
* macOS/Linux:
|
* macOS/Linux:
|
||||||
```
|
```
|
||||||
ELECTRON_MIRROR=https://cnpmjs.org/mirrors/electron/ pnpm install electron@25.9.0 -D
|
ELECTRON_MIRROR=https://cnpmjs.org/mirrors/electron/ pnpm install electron@26.3.0 -D
|
||||||
```
|
```
|
||||||
* Windows:
|
* Windows:
|
||||||
* `SET ELECTRON_MIRROR=https://cnpmjs.org/mirrors/electron/`
|
* `SET ELECTRON_MIRROR=https://cnpmjs.org/mirrors/electron/`
|
||||||
* `pnpm install electron@25.9.0 -D`
|
* `pnpm install electron@26.3.0 -D`
|
||||||
|
|
||||||
NPM 镜像:
|
NPM 镜像:
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ NPM 镜像:
|
|||||||
|
|
||||||
桌面端进入 app 文件夹运行:
|
桌面端进入 app 文件夹运行:
|
||||||
|
|
||||||
* `pnpm install electron@25.9.0 -D`
|
* `pnpm install electron@26.3.0 -D`
|
||||||
* `pnpm run dev`
|
* `pnpm run dev`
|
||||||
* `pnpm run start`
|
* `pnpm run start`
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
"clean-webpack-plugin": "^4.0.0",
|
"clean-webpack-plugin": "^4.0.0",
|
||||||
"css-loader": "^6.7.1",
|
"css-loader": "^6.7.1",
|
||||||
"dayjs": "^1.11.5",
|
"dayjs": "^1.11.5",
|
||||||
"electron": "25.9.0",
|
"electron": "26.3.0",
|
||||||
"electron-builder": "^24.6.3",
|
"electron-builder": "^24.6.3",
|
||||||
"encoding": "^0.1.13",
|
"encoding": "^0.1.13",
|
||||||
"esbuild-loader": "^3.0.1",
|
"esbuild-loader": "^3.0.1",
|
||||||
|
@ -7,7 +7,7 @@ settings:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@electron/remote':
|
'@electron/remote':
|
||||||
specifier: ^2.0.11
|
specifier: ^2.0.11
|
||||||
version: 2.0.11(electron@25.9.0)
|
version: 2.0.11(electron@26.3.0)
|
||||||
|
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/node':
|
'@types/node':
|
||||||
@ -32,8 +32,8 @@ devDependencies:
|
|||||||
specifier: ^1.11.5
|
specifier: ^1.11.5
|
||||||
version: 1.11.5
|
version: 1.11.5
|
||||||
electron:
|
electron:
|
||||||
specifier: 25.9.0
|
specifier: 26.3.0
|
||||||
version: 25.9.0
|
version: 26.3.0
|
||||||
electron-builder:
|
electron-builder:
|
||||||
specifier: ^24.6.3
|
specifier: ^24.6.3
|
||||||
version: 24.6.3
|
version: 24.6.3
|
||||||
@ -160,12 +160,12 @@ packages:
|
|||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@electron/remote@2.0.11(electron@25.9.0):
|
/@electron/remote@2.0.11(electron@26.3.0):
|
||||||
resolution: {integrity: sha512-PYEs7W3GrQNuhgiMHjFEvL5MbAL6C7m1AwSAHGqC+xc33IdP7rcGtJSdTP2eg1ssyB3oI00KwTsiSlsQbAoXpA==}
|
resolution: {integrity: sha512-PYEs7W3GrQNuhgiMHjFEvL5MbAL6C7m1AwSAHGqC+xc33IdP7rcGtJSdTP2eg1ssyB3oI00KwTsiSlsQbAoXpA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
electron: '>= 13.0.0'
|
electron: '>= 13.0.0'
|
||||||
dependencies:
|
dependencies:
|
||||||
electron: 25.9.0
|
electron: 26.3.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@electron/universal@1.3.4:
|
/@electron/universal@1.3.4:
|
||||||
@ -1669,8 +1669,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-YoVeFrGd/7ROjz4R9uPoND1K/hSRC/xADy9639ZmIZeJSaBnKdYx3I6LMPsY7CXLpK7JFgKQVzeZ/dk2br6Eaw==}
|
resolution: {integrity: sha512-YoVeFrGd/7ROjz4R9uPoND1K/hSRC/xADy9639ZmIZeJSaBnKdYx3I6LMPsY7CXLpK7JFgKQVzeZ/dk2br6Eaw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/electron@25.9.0:
|
/electron@26.3.0:
|
||||||
resolution: {integrity: sha512-wgscxf2ORHL/8mAQfy7l9rVDG//wrG9RUQndG508kCCMHRq9deFyZ4psOMzySheBRSfGMcFoRFYSlkAeZr8cFg==}
|
resolution: {integrity: sha512-7ZpvSHu+jmqialSvywTZnOQZZGLqlyj+yV5HGDrEzFnMiFaXBRpbByHgoUhaExJ/8t/0xKQjKlMRAY65w+zNZQ==}
|
||||||
engines: {node: '>= 12.20.55'}
|
engines: {node: '>= 12.20.55'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"sort"
|
"sort"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
@ -390,7 +391,7 @@ func GetNotebookDueFlashcards(boxID string, reviewedCardIDs []string) (ret []*Fl
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, treeBlockIDs)
|
cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, treeBlockIDs, Conf.Flashcard.NewCardLimit, Conf.Flashcard.ReviewCardLimit)
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
for _, card := range cards {
|
for _, card := range cards {
|
||||||
blockID := card.BlockID()
|
blockID := card.BlockID()
|
||||||
@ -415,7 +416,26 @@ func GetTreeDueFlashcards(rootID string, reviewedCardIDs []string) (ret []*Flash
|
|||||||
}
|
}
|
||||||
|
|
||||||
_, treeBlockIDs := getTreeSubTreeChildBlocks(rootID)
|
_, treeBlockIDs := getTreeSubTreeChildBlocks(rootID)
|
||||||
cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, treeBlockIDs)
|
newCardLimit := Conf.Flashcard.NewCardLimit
|
||||||
|
reviewCardLimit := Conf.Flashcard.ReviewCardLimit
|
||||||
|
// 文档级新卡/复习卡上限控制 Document-level new card/review card limit control https://github.com/siyuan-note/siyuan/issues/9365
|
||||||
|
ial := GetBlockAttrs(rootID)
|
||||||
|
if newCardLimitStr := ial["custom-riff-new-card-limit"]; "" != newCardLimitStr {
|
||||||
|
var convertErr error
|
||||||
|
newCardLimit, convertErr = strconv.Atoi(newCardLimitStr)
|
||||||
|
if nil != convertErr {
|
||||||
|
logging.LogWarnf("invalid new card limit [%s]: %s", newCardLimitStr, convertErr)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if reviewCardLimitStr := ial["custom-riff-review-card-limit"]; "" != reviewCardLimitStr {
|
||||||
|
var convertErr error
|
||||||
|
reviewCardLimit, convertErr = strconv.Atoi(reviewCardLimitStr)
|
||||||
|
if nil != convertErr {
|
||||||
|
logging.LogWarnf("invalid review card limit [%s]: %s", reviewCardLimitStr, convertErr)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, treeBlockIDs, newCardLimit, reviewCardLimit)
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
for _, card := range cards {
|
for _, card := range cards {
|
||||||
blockID := card.BlockID()
|
blockID := card.BlockID()
|
||||||
@ -485,7 +505,7 @@ func getDueFlashcards(deckID string, reviewedCardIDs []string) (ret []*Flashcard
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, nil)
|
cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, nil, Conf.Flashcard.NewCardLimit, Conf.Flashcard.ReviewCardLimit)
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
for _, card := range cards {
|
for _, card := range cards {
|
||||||
blockID := card.BlockID()
|
blockID := card.BlockID()
|
||||||
@ -506,7 +526,7 @@ func getDueFlashcards(deckID string, reviewedCardIDs []string) (ret []*Flashcard
|
|||||||
func getAllDueFlashcards(reviewedCardIDs []string) (ret []*Flashcard, unreviewedCount int) {
|
func getAllDueFlashcards(reviewedCardIDs []string) (ret []*Flashcard, unreviewedCount int) {
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
for _, deck := range Decks {
|
for _, deck := range Decks {
|
||||||
cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, nil)
|
cards, unreviewedCnt := getDeckDueCards(deck, reviewedCardIDs, nil, Conf.Flashcard.NewCardLimit, Conf.Flashcard.ReviewCardLimit)
|
||||||
unreviewedCount += unreviewedCnt
|
unreviewedCount += unreviewedCnt
|
||||||
for _, card := range cards {
|
for _, card := range cards {
|
||||||
blockID := card.BlockID()
|
blockID := card.BlockID()
|
||||||
@ -874,7 +894,7 @@ func getDeckIDs() (deckIDs []string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func getDeckDueCards(deck *riff.Deck, reviewedCardIDs, blockIDs []string) (ret []riff.Card, unreviewedCount int) {
|
func getDeckDueCards(deck *riff.Deck, reviewedCardIDs, blockIDs []string, newCardLimit, reviewCardLimit int) (ret []riff.Card, unreviewedCount int) {
|
||||||
ret = []riff.Card{}
|
ret = []riff.Card{}
|
||||||
dues := deck.Dues()
|
dues := deck.Dues()
|
||||||
|
|
||||||
@ -911,12 +931,12 @@ func getDeckDueCards(deck *riff.Deck, reviewedCardIDs, blockIDs []string) (ret [
|
|||||||
fsrsCard := c.Impl().(*fsrs.Card)
|
fsrsCard := c.Impl().(*fsrs.Card)
|
||||||
if fsrs.New == fsrsCard.State {
|
if fsrs.New == fsrsCard.State {
|
||||||
newCount++
|
newCount++
|
||||||
if newCount > Conf.Flashcard.NewCardLimit {
|
if newCount > newCardLimit {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
reviewCount++
|
reviewCount++
|
||||||
if reviewCount > Conf.Flashcard.ReviewCardLimit {
|
if reviewCount > reviewCardLimit {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user