mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-24 13:54:57 +00:00
88 files reformatted — zero logic changes: - All views, components, and JS modules wrapped to 80-char margin - Long property bindings, ternaries, and strings broken at natural points - Theme.qml theme definitions expanded to multi-line - StyleVariables tokens wrapped - Section comment rulers trimmed to 80 chars Trade-off: LOC increases from line wrapping (compact single-line properties now span 2-3 lines). Content unchanged. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
117 lines
3.1 KiB
JavaScript
117 lines
3.1 KiB
JavaScript
.pragma library
|
|
|
|
// DBAL persistence and local CRUD helpers
|
|
// for user management.
|
|
|
|
function levelForRole(role) {
|
|
if (role === "user") return 2
|
|
if (role === "admin") return 3
|
|
if (role === "god") return 4
|
|
if (role === "supergod") return 5
|
|
return 1
|
|
}
|
|
|
|
function countByRole(users, role) {
|
|
return users.filter(
|
|
function(u) { return u.role === role }
|
|
).length
|
|
}
|
|
|
|
function filteredUsers(users, searchText,
|
|
activeRoleFilter) {
|
|
var q = searchText.toLowerCase()
|
|
return users.filter(function(u) {
|
|
var matchesRole =
|
|
activeRoleFilter === "all"
|
|
|| u.role === activeRoleFilter
|
|
var matchesSearch = q === ""
|
|
|| u.username.toLowerCase()
|
|
.indexOf(q) !== -1
|
|
|| u.email.toLowerCase()
|
|
.indexOf(q) !== -1
|
|
|| u.role.toLowerCase()
|
|
.indexOf(q) !== -1
|
|
return matchesRole && matchesSearch
|
|
})
|
|
}
|
|
|
|
function findUserIndex(users, uid) {
|
|
for (var i = 0; i < users.length; i++) {
|
|
if (users[i].uid === uid) return i
|
|
}
|
|
return -1
|
|
}
|
|
|
|
function loadUsers(dbal, callback) {
|
|
dbal.list("user", { 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 u = result.items[i]
|
|
parsed.push({
|
|
uid: u.id || u.uid
|
|
|| (i + 1),
|
|
username: u.username || "",
|
|
email: u.email || "",
|
|
role: u.role || "user",
|
|
level: levelForRole(
|
|
u.role || "user"),
|
|
status: u.status || "active",
|
|
created: u.createdAt
|
|
? u.createdAt.slice(0, 10)
|
|
: (u.created || "")
|
|
})
|
|
}
|
|
callback(parsed)
|
|
}
|
|
})
|
|
}
|
|
|
|
function createUserLocally(users, nextUid,
|
|
userData) {
|
|
var copy = users.slice()
|
|
copy.push({
|
|
uid: nextUid,
|
|
username: userData.username,
|
|
email: userData.email,
|
|
role: userData.role,
|
|
level: levelForRole(userData.role),
|
|
status: userData.status,
|
|
created: new Date().toISOString()
|
|
.slice(0, 10)
|
|
})
|
|
return copy
|
|
}
|
|
|
|
function saveEditLocally(users, editIndex,
|
|
userData) {
|
|
var copy = users.slice()
|
|
copy[editIndex] = Object.assign(
|
|
{}, copy[editIndex], {
|
|
username: userData.username,
|
|
email: userData.email,
|
|
role: userData.role,
|
|
level: levelForRole(userData.role),
|
|
status: userData.status
|
|
})
|
|
return copy
|
|
}
|
|
|
|
function deleteLocally(users, deleteIndex) {
|
|
var c = users.slice()
|
|
c.splice(deleteIndex, 1)
|
|
return c
|
|
}
|
|
|
|
function loadJson(relativePath) {
|
|
var xhr = new XMLHttpRequest()
|
|
xhr.open("GET", relativePath, false)
|
|
xhr.send()
|
|
if (xhr.status === 200 || xhr.status === 0)
|
|
return JSON.parse(xhr.responseText)
|
|
return []
|
|
}
|