This commit is contained in:
Liang Ding 2022-10-01 12:03:22 +08:00
parent ae8ce006ba
commit a772b47287
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
6 changed files with 36 additions and 11 deletions

View file

@ -9,6 +9,7 @@ import {hideMessage, showMessage} from "./message";
import {Dialog} from "./index"; import {Dialog} from "./index";
import {isMobile} from "../util/functions"; import {isMobile} from "../util/functions";
import {confirmDialog} from "./confirmDialog"; import {confirmDialog} from "./confirmDialog";
import {renderStatusbarCounter} from "../layout/status";
export const lockFile = (id: string) => { export const lockFile = (id: string) => {
const html = `<div class="b3-dialog__scrim"></div> const html = `<div class="b3-dialog__scrim"></div>
@ -187,6 +188,10 @@ export const progressStatus = (data: IWebSocketData) => {
document.querySelector("#status .status__msg").innerHTML = data.msg; document.querySelector("#status .status__msg").innerHTML = data.msg;
}; };
export const handleStatusbarCounter = (data: IWebSocketData) => {
renderStatusbarCounter(data.data.runeCount, data.data.wordCount);
};
export const progressLoading = (data: IWebSocketData) => { export const progressLoading = (data: IWebSocketData) => {
let progressElement = document.getElementById("progress"); let progressElement = document.getElementById("progress");
if (!progressElement) { if (!progressElement) {

View file

@ -12,7 +12,7 @@ import {addBaseURL, setNoteBook} from "./util/pathName";
import {openFileById} from "./editor/util"; import {openFileById} from "./editor/util";
import { import {
bootSync, bootSync,
downloadProgress, downloadProgress, handleStatusbarCounter,
progressLoading, progressLoading,
progressStatus, progressStatus,
setTitle, setTitle,
@ -48,6 +48,8 @@ class App {
case"statusbar": case"statusbar":
progressStatus(data); progressStatus(data);
break; break;
case"statusbarCounter":
handleStatusbarCounter(data)
case"downloadProgress": case"downloadProgress":
downloadProgress(data.data); downloadProgress(data.data);
break; break;

View file

@ -137,11 +137,7 @@ export const countSelectWord = (range: Range) => {
const selectText = range.toString(); const selectText = range.toString();
if (selectText) { if (selectText) {
fetchPost("/api/block/getContentWordCount", {"content": range.toString()}, (response) => { fetchPost("/api/block/getContentWordCount", {"content": range.toString()}, (response) => {
document.querySelector("#status .status__counter").innerHTML = `<span class="ft__on-surface">${window.siyuan.languages.runeCount}</span> renderStatusbarCounter(response.data.runeCount, response.data.wordCount);
&nbsp;${response.data.runeCount}
<span class="fn__space"></span>
<span class="ft__on-surface">${window.siyuan.languages.wordCount}</span>
&nbsp;${response.data.wordCount}<span class="fn__space"></span>`;
}); });
} else { } else {
document.querySelector("#status .status__counter").innerHTML = ""; document.querySelector("#status .status__counter").innerHTML = "";
@ -156,11 +152,7 @@ export const countBlockWord = (ids: string[]) => {
} }
if (ids.length > 0) { if (ids.length > 0) {
fetchPost("/api/block/getBlocksWordCount", {ids}, (response) => { fetchPost("/api/block/getBlocksWordCount", {ids}, (response) => {
document.querySelector("#status .status__counter").innerHTML = `<span class="ft__on-surface">${window.siyuan.languages.runeCount}</span> renderStatusbarCounter(response.data.runeCount, response.data.wordCount);
&nbsp;${response.data.runeCount}
<span class="fn__space"></span>
<span class="ft__on-surface">${window.siyuan.languages.wordCount}</span>
&nbsp;${response.data.wordCount}<span class="fn__space"></span>`;
}); });
} else { } else {
document.querySelector("#status .status__counter").innerHTML = ""; document.querySelector("#status .status__counter").innerHTML = "";
@ -168,3 +160,10 @@ export const countBlockWord = (ids: string[]) => {
/// #endif /// #endif
}; };
export const renderStatusbarCounter = (runeCount: number, wordCount: number) => {
document.querySelector("#status .status__counter").innerHTML = `<span class="ft__on-surface">${window.siyuan.languages.runeCount}</span>
&nbsp;${runeCount}
<span class="fn__space"></span>
<span class="ft__on-surface">${window.siyuan.languages.wordCount}</span>
&nbsp;${wordCount}<span class="fn__space"></span>`;
}

View file

@ -997,6 +997,8 @@ func (tx *Transaction) begin() (err error) {
func (tx *Transaction) commit() (err error) { func (tx *Transaction) commit() (err error) {
for _, tree := range tx.trees { for _, tree := range tx.trees {
go pushTreeStat(tree)
if err = writeJSONQueue(tree); nil != err { if err = writeJSONQueue(tree); nil != err {
return return
} }
@ -1007,6 +1009,11 @@ func (tx *Transaction) commit() (err error) {
return return
} }
func pushTreeStat(tree *parse.Tree) {
runeCount, wordCount := treenode.TreeStat(tree)
util.PushStatusBarCounter(runeCount, wordCount)
}
func (tx *Transaction) rollback() { func (tx *Transaction) rollback() {
tx.trees, tx.nodes = nil, nil tx.trees, tx.nodes = nil, nil
return return

View file

@ -31,6 +31,11 @@ import (
"github.com/siyuan-note/siyuan/kernel/util" "github.com/siyuan-note/siyuan/kernel/util"
) )
func TreeStat(tree *parse.Tree) (runeCount, wordCount int) {
runeCount, wordCount = tree.Root.ContentLen()
return
}
func NodeHash(node *ast.Node, tree *parse.Tree, luteEngine *lute.Lute) string { func NodeHash(node *ast.Node, tree *parse.Tree, luteEngine *lute.Lute) string {
ialArray := node.KramdownIAL ialArray := node.KramdownIAL
sort.Slice(ialArray, func(i, j int) bool { sort.Slice(ialArray, func(i, j int) bool {

View file

@ -151,6 +151,13 @@ func PushStatusBar(msg string) {
BroadcastByType("main", "statusbar", 0, msg, nil) BroadcastByType("main", "statusbar", 0, msg, nil)
} }
func PushStatusBarCounter(runeCount, wordCount int) {
BroadcastByType("main", "statusbarCounter", 0, "", map[string]interface{}{
"runeCount": runeCount,
"wordCount": wordCount},
)
}
func ContextPushMsg(context map[string]interface{}, msg string) { func ContextPushMsg(context map[string]interface{}, msg string) {
switch context[eventbus.CtxPushMsg].(int) { switch context[eventbus.CtxPushMsg].(int) {
case eventbus.CtxPushMsgToProgress: case eventbus.CtxPushMsgToProgress: