Files
metabuilder/qml/MetaBuilder/WorkflowDBAL.js
johndoe6345789 311fb4db38 refactor(qt6): deep split round — targeting 200 LOC views, 100 LOC components
SuperGodPanel (604→~200): CTenantTab, CGodUsersTab, CTransferTab, CSystemTab, CSuperGodDialogs
WorkflowEditor (443→325): WorkflowMutations.js + WorkflowDBAL.js pure modules
ThemeLivePreview (256→87): ThemePreviewCard, ThemePreviewForm
CNodePropertiesPanel (238→143): CNodeParameterList, CNodePortsDisplay
MediaTvTab, WorkflowNode, CssPropertyEditor split to ~100 each
+ mid-size view trims (MediaService, Admin, PackageMgr, Storybook, GodPanel)

113→120+ components, avg component LOC approaching 90.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 14:42:51 +00:00

76 lines
2.3 KiB
JavaScript

.pragma library
// DBAL persistence helpers for workflow entities.
// Each function takes a dbal provider instance and callbacks
// so the caller can update QML state on completion.
function loadWorkflows(dbal, mockWorkflows, callback) {
dbal.list("workflow", { take: 50 }, function(result, error) {
if (!error && result && result.items && result.items.length > 0) {
var parsed = []
for (var i = 0; i < result.items.length; i++) {
var w = result.items[i]
parsed.push({
id: w.id || "",
name: w.name || "unnamed_workflow",
active: w.active !== undefined ? w.active : true,
settings: w.settings || {},
tags: w.tags || [],
meta: w.meta || {},
variables: w.variables || {},
nodes: w.nodes || [],
connections: w.connections || {}
})
}
callback(parsed)
} else {
callback(JSON.parse(JSON.stringify(mockWorkflows)))
}
})
}
function saveWorkflow(dbal, wf, onSaved) {
if (wf.id) {
dbal.update("workflow", wf.id, wf, function(result, error) {
if (onSaved) onSaved(result, error)
})
} else {
dbal.create("workflow", wf, function(result, error) {
if (onSaved) onSaved(result, error)
})
}
}
function deleteWorkflow(dbal, wf, onDeleted, onFallback) {
if (wf.id) {
dbal.remove("workflow", wf.id, function(result, error) {
if (!error) {
if (onDeleted) onDeleted()
} else {
if (onFallback) onFallback()
}
})
} else {
if (onFallback) onFallback()
}
}
function loadMockData(url, callback) {
var xhr = new XMLHttpRequest()
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
var data = []
if (xhr.status === 200 || xhr.status === 0) {
try {
data = JSON.parse(xhr.responseText)
} catch (e) {
console.warn("WorkflowDBAL: failed to parse mock data:", e)
}
}
callback(data)
}
}
xhr.open("GET", url)
xhr.send()
}