diff --git a/src/pages/ProgramSettingsPage.vue b/src/pages/ProgramSettingsPage.vue index f44b1ed..62263d4 100644 --- a/src/pages/ProgramSettingsPage.vue +++ b/src/pages/ProgramSettingsPage.vue @@ -38,7 +38,7 @@ import { normalizeSettingRow, resolveSettingFieldType, } from '@/config/khanegiSettingCatalog' -import { isSuperAdminSystemSettingKey } from '@/config/superAdminSettingKeys' +import { isSuperAdminSystemSettingKey, SUPERADMIN_SYSTEM_SETTING_KEYS } from '@/config/superAdminSettingKeys' import type { KhanegiSettingRow } from '@/config/khanegiSettingRow' import { useAuthStore } from '@/stores/auth' @@ -306,8 +306,28 @@ function errText(e: any) { return Array.isArray(msg) ? msg.join('، ') : msg || 'خطا' } +function mergeSystemCatalogRows(rows: KhanegiSettingRow[]): KhanegiSettingRow[] { + const byKey = new Map(rows.map((row) => [rowKey(row), row])) + return [...SUPERADMIN_SYSTEM_SETTING_KEYS] + .sort((a, b) => a.localeCompare(b)) + .map((key) => { + const found = byKey.get(key) + if (found) return normalizeSettingRow(found) + return normalizeSettingRow({ + key, + value: '', + title_fa: '', + description: '', + type: '', + is_active: 1, + can_edit: 0, + }) + }) +} + function applyItems(raw: unknown[]) { - items.value = raw.map((row) => asRow((row || {}) as Record)) + const rows = raw.map((row) => asRow((row || {}) as Record)) + items.value = mergeSystemCatalogRows(rows) } async function load() {