phase 1
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, computed } from 'vue'
|
import { ref, computed } from 'vue'
|
||||||
import { SSEDataSource, Panel, ResizeHandle } from 'mpr-ui-framework'
|
import { SSEDataSource, Panel, ResizeHandle, matchTracks, renderTracksToImageData, imageDataToPngB64 } from 'mpr-ui-framework'
|
||||||
|
import type { FrameOverlay, FrameBBox } from 'mpr-ui-framework'
|
||||||
import 'mpr-ui-framework/src/tokens.css'
|
import 'mpr-ui-framework/src/tokens.css'
|
||||||
import LogPanel from './panels/LogPanel.vue'
|
import LogPanel from './panels/LogPanel.vue'
|
||||||
import FunnelPanel from './panels/FunnelPanel.vue'
|
import FunnelPanel from './panels/FunnelPanel.vue'
|
||||||
@@ -13,8 +14,6 @@ import SourceSelector from './panels/SourceSelector.vue'
|
|||||||
import StageConfigSliders from './components/StageConfigSliders.vue'
|
import StageConfigSliders from './components/StageConfigSliders.vue'
|
||||||
import FrameStrip from './components/FrameStrip.vue'
|
import FrameStrip from './components/FrameStrip.vue'
|
||||||
import type { StatsUpdate, RunContext } from './types/sse-contract'
|
import type { StatsUpdate, RunContext } from './types/sse-contract'
|
||||||
import type { FrameOverlay } from 'mpr-ui-framework/src/renderers/FrameRenderer.vue'
|
|
||||||
import { matchTracks, renderTracksToImageData, imageDataToPngB64 } from 'mpr-ui-framework/src/cv'
|
|
||||||
import { usePipelineStore } from './stores/pipeline'
|
import { usePipelineStore } from './stores/pipeline'
|
||||||
|
|
||||||
const pipeline = usePipelineStore()
|
const pipeline = usePipelineStore()
|
||||||
@@ -265,7 +264,7 @@ vueWatch(
|
|||||||
const editorOverlays = ref<FrameOverlay[]>([])
|
const editorOverlays = ref<FrameOverlay[]>([])
|
||||||
|
|
||||||
// Boxes from edge detection (local or server)
|
// Boxes from edge detection (local or server)
|
||||||
const editorBoxes = ref<import('mpr-ui-framework/src/renderers/FrameRenderer.vue').FrameBBox[]>([])
|
const editorBoxes = ref<FrameBBox[]>([])
|
||||||
|
|
||||||
function onReplayResult(result: {
|
function onReplayResult(result: {
|
||||||
regions_by_frame?: Record<string, unknown[]>
|
regions_by_frame?: Record<string, unknown[]>
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import {
|
|||||||
runEdgeDetectionDebug,
|
runEdgeDetectionDebug,
|
||||||
b64ToImageData,
|
b64ToImageData,
|
||||||
imageDataToB64,
|
imageDataToB64,
|
||||||
type EdgeDetectionParams,
|
} from 'mpr-ui-framework'
|
||||||
} from 'mpr-ui-framework/src/cv'
|
import type { EdgeDetectionParams } from 'mpr-ui-framework'
|
||||||
|
|
||||||
interface ConfigField {
|
interface ConfigField {
|
||||||
name: string
|
name: string
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
import { Panel } from 'mpr-ui-framework'
|
import { Panel, TableRenderer } from 'mpr-ui-framework'
|
||||||
import TableRenderer from 'mpr-ui-framework/src/renderers/TableRenderer.vue'
|
import type { TableColumn, DataSource } from 'mpr-ui-framework'
|
||||||
import type { TableColumn } from 'mpr-ui-framework/src/renderers/TableRenderer.vue'
|
|
||||||
import type { DataSource } from 'mpr-ui-framework'
|
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
source: DataSource
|
source: DataSource
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, computed, watch } from 'vue'
|
import { ref, computed, watch } from 'vue'
|
||||||
import { Panel } from 'mpr-ui-framework'
|
import { Panel, FrameRenderer } from 'mpr-ui-framework'
|
||||||
import FrameRenderer from 'mpr-ui-framework/src/renderers/FrameRenderer.vue'
|
import type { FrameBBox, FrameOverlay, DataSource } from 'mpr-ui-framework'
|
||||||
import type { FrameBBox, FrameOverlay } from 'mpr-ui-framework/src/renderers/FrameRenderer.vue'
|
|
||||||
import type { DataSource } from 'mpr-ui-framework'
|
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
source: DataSource
|
source: DataSource
|
||||||
@@ -13,7 +11,7 @@ const props = defineProps<{
|
|||||||
/** Frame image from checkpoint (scenario mode) — overrides SSE */
|
/** Frame image from checkpoint (scenario mode) — overrides SSE */
|
||||||
frameImage?: string | null
|
frameImage?: string | null
|
||||||
/** Boxes from editor (local CV or server) — merged with SSE boxes */
|
/** Boxes from editor (local CV or server) — merged with SSE boxes */
|
||||||
editorBoxes?: import('mpr-ui-framework/src/renderers/FrameRenderer.vue').FrameBBox[]
|
editorBoxes?: FrameBBox[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const imageSrc = ref(props.frameImage ?? '')
|
const imageSrc = ref(props.frameImage ?? '')
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, computed } from 'vue'
|
import { ref, computed } from 'vue'
|
||||||
import { Panel } from 'mpr-ui-framework'
|
import { Panel, TimeSeriesRenderer } from 'mpr-ui-framework'
|
||||||
import TimeSeriesRenderer from 'mpr-ui-framework/src/renderers/TimeSeriesRenderer.vue'
|
|
||||||
import type { DataSource } from 'mpr-ui-framework'
|
import type { DataSource } from 'mpr-ui-framework'
|
||||||
import type { StatsUpdate } from '../types/sse-contract'
|
import type { StatsUpdate } from '../types/sse-contract'
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
import { Panel } from 'mpr-ui-framework'
|
import { Panel, LogRenderer } from 'mpr-ui-framework'
|
||||||
import LogRenderer from 'mpr-ui-framework/src/renderers/LogRenderer.vue'
|
import type { LogEntry, DataSource } from 'mpr-ui-framework'
|
||||||
import type { LogEntry } from 'mpr-ui-framework/src/renderers/LogRenderer.vue'
|
|
||||||
import type { DataSource } from 'mpr-ui-framework'
|
|
||||||
import type { LogEvent } from '../types/sse-contract'
|
import type { LogEvent } from '../types/sse-contract'
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
import { Panel } from 'mpr-ui-framework'
|
import { Panel, GraphRenderer } from 'mpr-ui-framework'
|
||||||
import GraphRenderer from 'mpr-ui-framework/src/renderers/GraphRenderer.vue'
|
import type { GraphNode, DataSource } from 'mpr-ui-framework'
|
||||||
import type { GraphNode } from 'mpr-ui-framework/src/renderers/GraphRenderer.vue'
|
|
||||||
import type { DataSource } from 'mpr-ui-framework'
|
|
||||||
import { usePipelineStore } from '../stores/pipeline'
|
import { usePipelineStore } from '../stores/pipeline'
|
||||||
|
|
||||||
const PIPELINE_NODES = [
|
const PIPELINE_NODES = [
|
||||||
|
|||||||
@@ -16,9 +16,39 @@ export { default as GraphRenderer } from './renderers/GraphRenderer.vue'
|
|||||||
export { default as FrameRenderer } from './renderers/FrameRenderer.vue'
|
export { default as FrameRenderer } from './renderers/FrameRenderer.vue'
|
||||||
export { default as TableRenderer } from './renderers/TableRenderer.vue'
|
export { default as TableRenderer } from './renderers/TableRenderer.vue'
|
||||||
|
|
||||||
|
// Renderer types
|
||||||
|
export type { FrameBBox, FrameOverlay } from './renderers/FrameRenderer.vue'
|
||||||
|
export type { LogEntry } from './renderers/LogRenderer.vue'
|
||||||
|
export type { GraphNode } from './renderers/GraphRenderer.vue'
|
||||||
|
export type { TableColumn } from './renderers/TableRenderer.vue'
|
||||||
|
export type { TimeSeriesSeries } from './renderers/TimeSeriesRenderer.vue'
|
||||||
|
|
||||||
// Interaction plugins
|
// Interaction plugins
|
||||||
export type { InteractionPlugin, PluginContext } from './plugins/InteractionPlugin'
|
export type { InteractionPlugin, PluginContext } from './plugins/InteractionPlugin'
|
||||||
export { BBoxDrawPlugin } from './plugins/BBoxDrawPlugin'
|
export { BBoxDrawPlugin } from './plugins/BBoxDrawPlugin'
|
||||||
export type { BBoxResult, BBoxCallback } from './plugins/BBoxDrawPlugin'
|
export type { BBoxResult, BBoxCallback } from './plugins/BBoxDrawPlugin'
|
||||||
export { CrosshairPlugin } from './plugins/CrosshairPlugin'
|
export { CrosshairPlugin } from './plugins/CrosshairPlugin'
|
||||||
export type { CrosshairCallback } from './plugins/CrosshairPlugin'
|
export type { CrosshairCallback } from './plugins/CrosshairPlugin'
|
||||||
|
|
||||||
|
// CV utilities
|
||||||
|
export {
|
||||||
|
runEdgeDetection,
|
||||||
|
runEdgeDetectionDebug,
|
||||||
|
matchTracks,
|
||||||
|
renderTracksToImageData,
|
||||||
|
b64ToImageData,
|
||||||
|
imageDataToPngB64,
|
||||||
|
imageDataToB64,
|
||||||
|
} from './cv'
|
||||||
|
export type {
|
||||||
|
EdgeRegion,
|
||||||
|
EdgeDetectionParams,
|
||||||
|
EdgeDetectionResult,
|
||||||
|
EdgeDetectionDebugResult,
|
||||||
|
Track,
|
||||||
|
TrackPoint,
|
||||||
|
} from './cv'
|
||||||
|
|
||||||
|
// Design tokens (CSS import)
|
||||||
|
// Usage: import 'mpr-ui-framework/tokens.css'
|
||||||
|
// Re-exported at package level via package.json exports
|
||||||
|
|||||||
Reference in New Issue
Block a user