Reload tree after sync
This commit is contained in:
parent
02a8e10d11
commit
0bd5d08edf
3 changed files with 36 additions and 6 deletions
|
@ -109,6 +109,9 @@ export class NodeStore {
|
||||||
getRequest.onerror = (event) => reject(event.target.error)
|
getRequest.onerror = (event) => reject(event.target.error)
|
||||||
})
|
})
|
||||||
}//}}}
|
}//}}}
|
||||||
|
purgeCache() {//{{{
|
||||||
|
this.nodes = {}
|
||||||
|
}//}}}
|
||||||
|
|
||||||
node(uuid, dataIfUndefined, newLevel) {//{{{
|
node(uuid, dataIfUndefined, newLevel) {//{{{
|
||||||
let n = this.nodes[uuid]
|
let n = this.nodes[uuid]
|
||||||
|
@ -229,7 +232,6 @@ export class NodeStore {
|
||||||
const nodeData = event.target.result[i]
|
const nodeData = event.target.result[i]
|
||||||
const node = this.node(nodeData.UUID, nodeData, newLevel)
|
const node = this.node(nodeData.UUID, nodeData, newLevel)
|
||||||
nodes.push(node)
|
nodes.push(node)
|
||||||
|
|
||||||
}
|
}
|
||||||
resolve(nodes)
|
resolve(nodes)
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ export class Notes2 extends Component {
|
||||||
constructor() {//{{{
|
constructor() {//{{{
|
||||||
super()
|
super()
|
||||||
this.nodeUI = createRef()
|
this.nodeUI = createRef()
|
||||||
|
this.reloadTree = signal(0)
|
||||||
this.state = {
|
this.state = {
|
||||||
startNode: null,
|
startNode: null,
|
||||||
}
|
}
|
||||||
|
@ -19,11 +20,15 @@ export class Notes2 extends Component {
|
||||||
this.getStartNode()
|
this.getStartNode()
|
||||||
}//}}}
|
}//}}}
|
||||||
render(_props, { startNode }) {//{{{
|
render(_props, { startNode }) {//{{{
|
||||||
|
console.log('notes2 render')
|
||||||
|
const treeKey = `tree-${this.reloadTree}`
|
||||||
|
console.log('treeKey', treeKey)
|
||||||
|
|
||||||
if (startNode === null)
|
if (startNode === null)
|
||||||
return
|
return
|
||||||
|
|
||||||
return html`
|
return html`
|
||||||
<${Tree} app=${this} startNode=${startNode} />
|
<${Tree} app=${this} key=${treeKey} startNode=${startNode} />
|
||||||
|
|
||||||
<div id="nodeui">
|
<div id="nodeui">
|
||||||
<${NodeUI} app=${this} ref=${this.nodeUI} startNode=${startNode} />
|
<${NodeUI} app=${this} ref=${this.nodeUI} startNode=${startNode} />
|
||||||
|
@ -69,6 +74,7 @@ export class Notes2 extends Component {
|
||||||
class Tree extends Component {
|
class Tree extends Component {
|
||||||
constructor(props) {//{{{
|
constructor(props) {//{{{
|
||||||
super(props)
|
super(props)
|
||||||
|
console.log('new tree')
|
||||||
this.treeNodeComponents = {}
|
this.treeNodeComponents = {}
|
||||||
this.treeTrunk = []
|
this.treeTrunk = []
|
||||||
this.selectedNode = null
|
this.selectedNode = null
|
||||||
|
@ -89,6 +95,14 @@ class Tree extends Component {
|
||||||
${renderedTreeTrunk}
|
${renderedTreeTrunk}
|
||||||
</div>`
|
</div>`
|
||||||
}//}}}
|
}//}}}
|
||||||
|
componentDidMount() {//{{{
|
||||||
|
// This will show and select the treenode that is selected in the node UI.
|
||||||
|
const node = _notes2.current?.nodeUI.current?.node.value
|
||||||
|
if (node === null)
|
||||||
|
return
|
||||||
|
_notes2.current.tree.expandToTrunk(node)
|
||||||
|
this.setSelected(node)
|
||||||
|
}//}}}
|
||||||
|
|
||||||
populateFirstLevel(callback = null) {//{{{
|
populateFirstLevel(callback = null) {//{{{
|
||||||
nodeStore.getTreeNodes('', 0)
|
nodeStore.getTreeNodes('', 0)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { API } from 'api'
|
import { API } from 'api'
|
||||||
import { Node } from 'node'
|
import { Node } from 'node'
|
||||||
import { h, Component, createRef } from 'preact'
|
import { h, Component } from 'preact'
|
||||||
import htm from 'htm'
|
import htm from 'htm'
|
||||||
const html = htm.bind(h)
|
const html = htm.bind(h)
|
||||||
|
|
||||||
|
@ -171,14 +171,16 @@ export class Sync {
|
||||||
export class SyncProgress extends Component {
|
export class SyncProgress extends Component {
|
||||||
constructor() {//{{{
|
constructor() {//{{{
|
||||||
super()
|
super()
|
||||||
|
this.reset()
|
||||||
|
}//}}}
|
||||||
|
reset() {//{{{
|
||||||
this.forceUpdateRequest = null
|
this.forceUpdateRequest = null
|
||||||
|
|
||||||
this.state = {
|
this.state = {
|
||||||
nodesToSync: 0,
|
nodesToSync: 0,
|
||||||
nodesSynced: 0,
|
nodesSynced: 0,
|
||||||
syncedDone: false,
|
syncedDone: false,
|
||||||
}
|
}
|
||||||
|
document.getElementById('sync-progress')?.classList.remove('hidden')
|
||||||
}//}}}
|
}//}}}
|
||||||
componentDidMount() {//{{{
|
componentDidMount() {//{{{
|
||||||
window._sync.addListener(msg => this.progressHandler(msg), true)
|
window._sync.addListener(msg => this.progressHandler(msg), true)
|
||||||
|
@ -210,9 +212,19 @@ export class SyncProgress extends Component {
|
||||||
this.state.nodesSynced += msg.count
|
this.state.nodesSynced += msg.count
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
||||||
case SYNC_DONE:
|
case SYNC_DONE:
|
||||||
|
// Hides the progress bar.
|
||||||
this.setState({ syncedDone: true })
|
this.setState({ syncedDone: true })
|
||||||
|
|
||||||
|
// Don't update anything if nothing was synced.
|
||||||
|
if (this.state.nodesSynced === 0)
|
||||||
|
break
|
||||||
|
|
||||||
|
// Reload the tree nodes to reflect the new/updated nodes.
|
||||||
|
if (window._notes2?.current?.reloadTree.value !== null) {
|
||||||
|
nodeStore.purgeCache()
|
||||||
|
window._notes2.current.reloadTree.value = window._notes2.current.reloadTree.value + 1
|
||||||
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}//}}}
|
}//}}}
|
||||||
|
@ -228,3 +240,5 @@ export class SyncProgress extends Component {
|
||||||
`
|
`
|
||||||
}//}}}
|
}//}}}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// vim: foldmethod=marker
|
||||||
|
|
Loading…
Add table
Reference in a new issue