Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2025-09-30 21:33:06 +08:00
commit 01c3412aaa
5 changed files with 37 additions and 7 deletions

View file

@ -1,14 +1,13 @@
import {escapeAriaLabel, escapeGreat, escapeHtml} from "../../util/escape"; import {escapeAriaLabel, escapeGreat, escapeHtml} from "../../util/escape";
import {Tab} from "../Tab"; import {Tab} from "../Tab";
import {Model} from "../Model"; import {Model} from "../Model";
import {getInstanceById, setPanelFocus} from "../util"; import {setPanelFocus} from "../util";
import {getDockByType} from "../tabUtil"; import {getDockByType} from "../tabUtil";
import {Constants} from "../../constants"; import {Constants} from "../../constants";
import {getDisplayName, pathPosix, setNoteBook} from "../../util/pathName"; import {getDisplayName, pathPosix, setNoteBook} from "../../util/pathName";
import {newFile} from "../../util/newFile"; import {newFile} from "../../util/newFile";
import {initFileMenu, initNavigationMenu, sortMenu} from "../../menus/navigation"; import {initFileMenu, initNavigationMenu, sortMenu} from "../../menus/navigation";
import {MenuItem} from "../../menus/Menu"; import {MenuItem} from "../../menus/Menu";
import {Editor} from "../../editor";
import {showMessage} from "../../dialog/message"; import {showMessage} from "../../dialog/message";
import {fetchPost, fetchSyncPost} from "../../util/fetch"; import {fetchPost, fetchSyncPost} from "../../util/fetch";
import {openEmojiPanel, unicode2Emoji} from "../../emoji"; import {openEmojiPanel, unicode2Emoji} from "../../emoji";

View file

@ -2,7 +2,8 @@ import {
hasClosestBlock, hasClosestBlock,
hasClosestByClassName, hasClosestByClassName,
hasClosestByTag, hasClosestByTag,
hasTopClosestByClassName, isInAVBlock, hasTopClosestByClassName,
isInAVBlock,
isInEmbedBlock isInEmbedBlock
} from "../util/hasClosest"; } from "../util/hasClosest";
import {getIconByType} from "../../editor/getIcon"; import {getIconByType} from "../../editor/getIcon";
@ -60,7 +61,6 @@ import {processClonePHElement} from "../render/util";
import {openFileById} from "../../editor/util"; import {openFileById} from "../../editor/util";
/// #endif /// #endif
import {checkFold} from "../../util/noRelyPCFunction"; import {checkFold} from "../../util/noRelyPCFunction";
import {copyTextByType} from "../toolbar/util";
import {clearSelect} from "../util/clearSelect"; import {clearSelect} from "../util/clearSelect";
export class Gutter { export class Gutter {

View file

@ -225,7 +225,24 @@ func getAttributeViewKeysByAvID(c *gin.Context) {
return return
} }
avID := arg["avID"].(string) avID := arg["avID"].(string)
ret.Data = model.GetAttributeViewKeysByAvID(avID) ret.Data = model.GetAttributeViewKeysByID(avID)
}
func getAttributeViewKeysByID(c *gin.Context) {
ret := gulu.Ret.NewResult()
defer c.JSON(http.StatusOK, ret)
arg, ok := util.JsonArg(c, ret)
if !ok {
return
}
avID := arg["avID"].(string)
keyIDsArg := arg["keyIDs"].([]interface{})
var keyIDs []string
for _, v := range keyIDsArg {
keyIDs = append(keyIDs, v.(string
}
ret.Data = model.GetAttributeViewKeysByID(avID, keyIDs...)
} }
func getMirrorDatabaseBlocks(c *gin.Context) { func getMirrorDatabaseBlocks(c *gin.Context) {

View file

@ -461,6 +461,7 @@ func ServeAPI(ginServer *gin.Engine) {
ginServer.Handle("POST", "/api/av/setDatabaseBlockView", model.CheckAuth, model.CheckAdminRole, model.CheckReadonly, setDatabaseBlockView) ginServer.Handle("POST", "/api/av/setDatabaseBlockView", model.CheckAuth, model.CheckAdminRole, model.CheckReadonly, setDatabaseBlockView)
ginServer.Handle("POST", "/api/av/getMirrorDatabaseBlocks", model.CheckAuth, model.CheckAdminRole, model.CheckReadonly, getMirrorDatabaseBlocks) ginServer.Handle("POST", "/api/av/getMirrorDatabaseBlocks", model.CheckAuth, model.CheckAdminRole, model.CheckReadonly, getMirrorDatabaseBlocks)
ginServer.Handle("POST", "/api/av/getAttributeViewKeysByAvID", model.CheckAuth, model.CheckAdminRole, model.CheckReadonly, getAttributeViewKeysByAvID) ginServer.Handle("POST", "/api/av/getAttributeViewKeysByAvID", model.CheckAuth, model.CheckAdminRole, model.CheckReadonly, getAttributeViewKeysByAvID)
ginServer.Handle("POST", "/api/av/getAttributeViewKeysByID", model.CheckAuth, getAttributeViewKeysByID)
ginServer.Handle("POST", "/api/av/duplicateAttributeViewBlock", model.CheckAuth, model.CheckAdminRole, model.CheckReadonly, duplicateAttributeViewBlock) ginServer.Handle("POST", "/api/av/duplicateAttributeViewBlock", model.CheckAuth, model.CheckAdminRole, model.CheckReadonly, duplicateAttributeViewBlock)
ginServer.Handle("POST", "/api/av/appendAttributeViewDetachedBlocksWithValues", model.CheckAuth, model.CheckAdminRole, model.CheckReadonly, appendAttributeViewDetachedBlocksWithValues) ginServer.Handle("POST", "/api/av/appendAttributeViewDetachedBlocksWithValues", model.CheckAuth, model.CheckAdminRole, model.CheckReadonly, appendAttributeViewDetachedBlocksWithValues)
ginServer.Handle("POST", "/api/av/getCurrentAttrViewImages", model.CheckAuth, getCurrentAttrViewImages) ginServer.Handle("POST", "/api/av/getCurrentAttrViewImages", model.CheckAuth, getCurrentAttrViewImages)

View file

@ -1116,6 +1116,7 @@ func AppendAttributeViewDetachedBlocksWithValues(avID string, blocksValues [][]*
} }
} }
regenAttrViewGroups(attrView)
if err = av.SaveAttributeView(attrView); err != nil { if err = av.SaveAttributeView(attrView); err != nil {
logging.LogErrorf("save attribute view [%s] failed: %s", avID, err) logging.LogErrorf("save attribute view [%s] failed: %s", avID, err)
return return
@ -1178,7 +1179,7 @@ func DuplicateDatabaseBlock(avID string) (newAvID, newBlockID string, err error)
return return
} }
func GetAttributeViewKeysByAvID(avID string) (ret []*av.Key) { func GetAttributeViewKeysByID(avID string, keyIDs ...string) (ret []*av.Key) {
ret = []*av.Key{} ret = []*av.Key{}
attrView, err := av.ParseAttributeView(avID) attrView, err := av.ParseAttributeView(avID)
@ -1187,9 +1188,21 @@ func GetAttributeViewKeysByAvID(avID string) (ret []*av.Key) {
return return
} }
if 1 > len(keyIDs) {
for _, keyValues := range attrView.KeyValues {
key := keyValues.Key
ret = append(ret, key)
}
return
}
for _, keyValues := range attrView.KeyValues { for _, keyValues := range attrView.KeyValues {
key := keyValues.Key key := keyValues.Key
ret = append(ret, key) for _, keyID := range keyIDs {
if key.ID == keyID {
ret = append(ret, key)
}
}
} }
return ret return ret
} }