- Tr069TraceService: in-memory Map O(1) lookup, Promise-queue per device for sequential file writes, 10MB rotation (5 files kept) - config/tr069-trace.json: persisted list of traced devices (atomic write) - CwmpLoggerMiddleware: buffers request+response, writes to device log file after next() once ctx.cwmpDeviceId is set by controller - CwmpController: sets ctx.cwmpDeviceId on all code paths (Inform + others) - StateMachineManager: getHashIdForRemote() for non-Inform messages - REST API: GET/POST/DELETE /api/v1/tr069-trace - UI: Tr069Trace Vue page with device search, add/remove tracing - 8 new unit tests (192 total, all passing) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
33 lines
822 B
Vue
33 lines
822 B
Vue
<script setup lang="ts">
|
|
import { useI18n } from 'vue-i18n'
|
|
|
|
const { t } = useI18n()
|
|
|
|
type SectionKey = 'devices' | 'configurations' | 'commands' | 'device' | 'firmware' | 'trace'
|
|
|
|
const { section, subtitle } = defineProps<{
|
|
section: SectionKey
|
|
subtitle?: string
|
|
}>()
|
|
|
|
const sectionColors: Record<SectionKey, string> = {
|
|
devices: 'blue',
|
|
configurations: 'yellow',
|
|
commands: 'orange',
|
|
device: 'green',
|
|
firmware: 'purple',
|
|
trace: 'orange',
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<div :class="['bg-supporting-' + sectionColors[section]]" data-bs-theme="light">
|
|
<div class="container-xxl py-3">
|
|
<h1 class="display-1 mb-0" style="letter-spacing: normal">
|
|
{{ t(`titles.${section}`) }}
|
|
<span v-if="subtitle" class="fs-5 fw-bold ms-2">{{ subtitle }}</span>
|
|
</h1>
|
|
</div>
|
|
</div>
|
|
</template>
|