mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-24 13:54:57 +00:00
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>
76 lines
2.3 KiB
JavaScript
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()
|
|
}
|