🎨 Support modifying the primary key value of the binding block https://github.com/siyuan-note/siyuan/issues/9892
This commit is contained in:
parent
963ac96550
commit
56ec92ff88
1 changed files with 16 additions and 11 deletions
|
@ -1782,6 +1782,7 @@ func UpdateAttributeViewCell(tx *Transaction, avID, keyID, rowID, cellID string,
|
|||
break
|
||||
}
|
||||
|
||||
isUpdatingBlockKey := av.KeyTypeBlock == val.Type
|
||||
oldBoundBlockID := val.BlockID
|
||||
data, err := gulu.JSON.MarshalJSON(valueData)
|
||||
if nil != err {
|
||||
|
@ -1791,22 +1792,24 @@ func UpdateAttributeViewCell(tx *Transaction, avID, keyID, rowID, cellID string,
|
|||
return
|
||||
}
|
||||
|
||||
// val.IsDetached 只有更新主键的时候才会传入,所以下面需要结合 isUpdatingBlockKey 来判断
|
||||
|
||||
if oldIsDetached { // 之前是游离行
|
||||
if !val.IsDetached { // 现在绑定了块
|
||||
// 将游离行绑定到新建的块上
|
||||
bindBlockAv(tx, avID, rowID)
|
||||
}
|
||||
} else { // 之前绑定了块
|
||||
if val.IsDetached { // 现在是游离行
|
||||
// 将绑定的块从属性视图中移除
|
||||
unbindBlockAv(tx, avID, rowID)
|
||||
} else { // 现在绑定了块
|
||||
if oldBoundBlockID != val.BlockID { // 之前绑定的块和现在绑定的块不一样
|
||||
// 换绑块
|
||||
unbindBlockAv(tx, avID, oldBoundBlockID)
|
||||
bindBlockAv(tx, avID, val.BlockID)
|
||||
} else { // 之前绑定的块和现在绑定的块一样
|
||||
if av.KeyTypeBlock == val.Type && nil != val.Block {
|
||||
if isUpdatingBlockKey { // 正在更新主键
|
||||
if val.IsDetached { // 现在是游离行
|
||||
// 将绑定的块从属性视图中移除
|
||||
unbindBlockAv(tx, avID, rowID)
|
||||
} else { // 现在绑定了块
|
||||
if oldBoundBlockID != val.BlockID { // 之前绑定的块和现在绑定的块不一样
|
||||
// 换绑块
|
||||
unbindBlockAv(tx, avID, oldBoundBlockID)
|
||||
bindBlockAv(tx, avID, val.BlockID)
|
||||
} else { // 之前绑定的块和现在绑定的块一样
|
||||
// 直接返回,因为锚文本不允许更改
|
||||
return
|
||||
}
|
||||
|
@ -1817,7 +1820,9 @@ func UpdateAttributeViewCell(tx *Transaction, avID, keyID, rowID, cellID string,
|
|||
if nil != blockVal {
|
||||
blockVal.Block.Updated = time.Now().UnixMilli()
|
||||
blockVal.IsInitialized = true
|
||||
blockVal.IsDetached = val.IsDetached
|
||||
if isUpdatingBlockKey {
|
||||
blockVal.IsDetached = val.IsDetached
|
||||
}
|
||||
}
|
||||
|
||||
if err = av.SaveAttributeView(attrView); nil != err {
|
||||
|
|
Loading…
Add table
Reference in a new issue