m
This commit is contained in:
@@ -5,6 +5,8 @@ export interface Const {
|
|||||||
description?: string
|
description?: string
|
||||||
title_fa?: string
|
title_fa?: string
|
||||||
type?: string
|
type?: string
|
||||||
|
menu?: string
|
||||||
|
show_to_user?: boolean | number
|
||||||
is_active: boolean | number
|
is_active: boolean | number
|
||||||
can_edit?: number | boolean
|
can_edit?: number | boolean
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -206,7 +206,8 @@ import { applyBannerEnabledFromRows, applyTrackingSystemsEnabledFromRows, applyC
|
|||||||
import {
|
import {
|
||||||
EDITABLE_SETTING_GROUPS,
|
EDITABLE_SETTING_GROUPS,
|
||||||
SYSTEM_SETTING_GROUPS,
|
SYSTEM_SETTING_GROUPS,
|
||||||
getSettingGroupId,
|
resolveSettingMenu,
|
||||||
|
OTHER_PAGE_SETTING_MENUS,
|
||||||
type SettingGroupDef
|
type SettingGroupDef
|
||||||
} from './settingGroups'
|
} from './settingGroups'
|
||||||
import {
|
import {
|
||||||
@@ -311,7 +312,11 @@ const filteredRows = computed(() =>
|
|||||||
(baseData.value || []).filter((row) => {
|
(baseData.value || []).filter((row) => {
|
||||||
if (row.id == null || !matchesFilter(row)) return false
|
if (row.id == null || !matchesFilter(row)) return false
|
||||||
if (!isSettingVisible(row.key)) return false
|
if (!isSettingVisible(row.key)) return false
|
||||||
if (!isSystemMode.value && TRADING_HOURS_SETTING_KEY_SET.has(row.key || '')) return false
|
const menu = String(row.menu ?? '').trim()
|
||||||
|
if (OTHER_PAGE_SETTING_MENUS.has(menu)) return false
|
||||||
|
if (!menu && !isSystemMode.value && TRADING_HOURS_SETTING_KEY_SET.has(row.key || '')) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
if (isSystemMode.value) return true
|
if (isSystemMode.value) return true
|
||||||
return isEditable(row)
|
return isEditable(row)
|
||||||
})
|
})
|
||||||
@@ -330,15 +335,16 @@ const otherRows = computed(() =>
|
|||||||
// گروهبندی تنظیمات — اولین match برنده است؛ misc فقط برای باقیمانده
|
// گروهبندی تنظیمات — اولین match برنده است؛ misc فقط برای باقیمانده
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
|
|
||||||
function getGroupId(key: string): string {
|
function getGroupId(row: Const): string {
|
||||||
return getSettingGroupId(key, settingGroups.value)
|
return resolveSettingMenu(row, settingGroups.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
const groupedFiltered = computed(() => {
|
const groupedFiltered = computed(() => {
|
||||||
const map: Record<string, Const[]> = {}
|
const map: Record<string, Const[]> = {}
|
||||||
for (const g of settingGroups.value) map[g.id] = []
|
for (const g of settingGroups.value) map[g.id] = []
|
||||||
for (const row of filteredRows.value) {
|
for (const row of filteredRows.value) {
|
||||||
const gid = getGroupId(row.key || '')
|
const gid = getGroupId(row)
|
||||||
|
if (!map[gid]) map[gid] = []
|
||||||
map[gid].push(row)
|
map[gid].push(row)
|
||||||
}
|
}
|
||||||
Object.keys(map).forEach((k) => {
|
Object.keys(map).forEach((k) => {
|
||||||
|
|||||||
@@ -291,6 +291,19 @@ export function getSettingGroupId(key: string, groups: SettingGroupDef[]): strin
|
|||||||
return 'misc'
|
return 'misc'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** گروه از ستون menu اگر در همین صفحه تعریف شده باشد؛ وگرنه regex. */
|
||||||
|
export function resolveSettingMenu(
|
||||||
|
row: { key?: string; menu?: string | null },
|
||||||
|
groups: SettingGroupDef[]
|
||||||
|
): string {
|
||||||
|
const menu = String(row.menu ?? '').trim()
|
||||||
|
if (menu && groups.some((g) => g.id === menu)) return menu
|
||||||
|
return getSettingGroupId(row.key || '', groups)
|
||||||
|
}
|
||||||
|
|
||||||
|
/** این کلیدها صفحهٔ جدا دارند و در لیست تنظیمات عادی/پیشرفته نمیآیند */
|
||||||
|
export const OTHER_PAGE_SETTING_MENUS = new Set(['trading_hours', 'capture_sites'])
|
||||||
|
|
||||||
export function getSettingSubsectionId(
|
export function getSettingSubsectionId(
|
||||||
key: string,
|
key: string,
|
||||||
group: SettingGroupDef | undefined
|
group: SettingGroupDef | undefined
|
||||||
|
|||||||
@@ -110,7 +110,9 @@ export function useTradingHoursPage() {
|
|||||||
const map: Record<string, Const> = {}
|
const map: Record<string, Const> = {}
|
||||||
const draftMap: Record<string, string> = {}
|
const draftMap: Record<string, string> = {}
|
||||||
for (const row of rows || []) {
|
for (const row of rows || []) {
|
||||||
if (!row.key || !TRADING_HOURS_SETTING_KEY_SET.has(row.key)) continue
|
if (!row.key) continue
|
||||||
|
const fromMenu = String(row.menu ?? '').trim() === 'trading_hours'
|
||||||
|
if (!fromMenu && !TRADING_HOURS_SETTING_KEY_SET.has(row.key)) continue
|
||||||
map[row.key] = row
|
map[row.key] = row
|
||||||
if (row.id != null) draftMap[String(row.id)] = row.value ?? ''
|
if (row.id != null) draftMap[String(row.id)] = row.value ?? ''
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user