SQLite-база хранилища: свойства, ~sql-блоки, настройки хранилища
- Frontmatter: шапка --- ключ: значение (источник правды свойств) - VaultSettings: .flora/settings.json (журнал, sqlEnabled, sqlMaxRows) - Database: files/tags/file_tags/links/properties, только SELECT/WITH на read-only соединении (mode=ro + query_only + зонд), лимит строк - MdParser: ~sql-блоки таблицей (parseBlocks + Renderer), шапка скрыта в просмотре - Окно: per-window Database/VaultSettings, sync при сохранении, дебаунс reindex - QML: VaultSettingsDialog, FilePropertiesDialog, меню, автообновление ~sql - FileStore.journalDir, DocumentManager.reloadDocument - Тест flora_db_test (23/23 зелёных)
This commit is contained in:
@@ -44,6 +44,16 @@ Item {
|
||||
// contentItem.contentY = 0
|
||||
}
|
||||
|
||||
// База изменилась (переиндексация, правка свойств, вкл/выкл SQL) —
|
||||
// ~sql-блоки надо пересчитать. Дебаунс против шторма при reindex.
|
||||
Timer { id: dbDebounce; interval: 400; onTriggered: root.update() }
|
||||
Connections {
|
||||
target: vaultDatabase
|
||||
function onChanged() { dbDebounce.restart() }
|
||||
function onQueryEnabledChanged() { dbDebounce.restart() }
|
||||
function onMaxRowsChanged() { dbDebounce.restart() }
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: mdParser
|
||||
function onBlocksReady(reqId, blocks) {
|
||||
|
||||
@@ -181,7 +181,7 @@ Item {
|
||||
readonly property bool hasNote: {
|
||||
const _ = cal.currentMonth
|
||||
if (modelData <= 0 || !fileStore.ready) return false
|
||||
return fileStore.fileExists(fileStore.vault + "/Журнал/" + ds + ".md")
|
||||
return fileStore.fileExists(fileStore.vault + "/" + fileStore.journalDir + "/" + ds + ".md")
|
||||
}
|
||||
readonly property bool isSelected: false // можно подсветить выбранный день
|
||||
|
||||
|
||||
@@ -35,9 +35,8 @@ Item {
|
||||
function onActiveIndexChanged() { root.refreshLinksTags() }
|
||||
function onOpenTabsChanged() { root.refreshLinksTags() }
|
||||
function onContentChanged(i) { if (i === documentManager.activeIndex) { root.refreshLinksTags(); indexDebounce.restart() } }
|
||||
function onDocumentSaved(idx, path) {
|
||||
if (fileStore.ready && path && path.length > 0) vaultIndex.updateFile(path)
|
||||
}
|
||||
// Сохранение обрабатывает C++ (WindowController): сначала индекс, потом база.
|
||||
// Здесь не дублируем, иначе двойной парс файла.
|
||||
}
|
||||
Connections { target: vaultIndex; function onIndexChanged() { root.refreshLinksTags() } }
|
||||
// Правка активного файла: обновить только его (один парс), а не всё хранилище
|
||||
|
||||
Reference in New Issue
Block a user