1
0
Fork 0

feat: added log view to editor

This commit is contained in:
joostdecock 2025-03-01 15:55:50 +01:00
parent d9351ddaad
commit 0dba8dcac0
2 changed files with 68 additions and 0 deletions

View file

@ -0,0 +1,66 @@
// Dependencies
import { linkClasses, horFlexClasses, patternUrlFromState } from '@freesewing/utils'
import { exportTypes, handleExport } from '../../lib/export/index.mjs'
import { draft } from '../../lib/index.mjs'
// Hooks
import React, { useState } from 'react'
// Components
import Markdown from 'react-markdown'
import { H1, H3 } from '@freesewing/react/components/Heading'
import { HeaderMenu } from '../HeaderMenu.mjs'
import { Tabs, Tab } from '@freesewing/react/components/Tab'
// The log levels
const levels = ['error', 'warn', 'info', 'debug']
/**
* This is the log view, it shows the pattern logs
*
* @param {Object} props - All the props
* @param {Function} props.config - The editor configuration
* @param {Object} props.state - The editor state object
* @param {Object} props.update - Helper object for updating the editor state
*/
export const LogView = (props) => {
const { state, config, update } = props
const { pattern } = draft(props.Design, state.settings)
return (
<>
<HeaderMenu state={state} {...{ config, update }} />
<div className="tw-m-auto tw-mt-8 tw-max-w-2xl tw-px-4 tw-mb-8">
<H1>Pattern Logs</H1>
<Tabs tabs="Set 0 Logs, Pattern Logs">
<Tab tabId="Set 0 Logs">
{levels.map((level) => (
<div key={level}>
{pattern.setStores[0].logs[level].length > 0 ? (
<>
<H3>{level}</H3>
{pattern.setStores[0].logs[level].map((line, i) => (
<Markdown key={i}>{line}</Markdown>
))}
</>
) : null}
</div>
))}
</Tab>
<Tab tabId="Pattern Logs">
{levels.map((level) => (
<div key={level}>
{pattern.store.logs[level].length > 0 ? (
<>
<H3>{level}</H3>
{pattern.store.logs[level].map((line, i) => (
<Markdown key={i}>{line}</Markdown>
))}
</>
) : null}
</div>
))}
</Tab>
</Tabs>
</div>
</>
)
}

View file

@ -9,6 +9,7 @@ import { ExportView } from './ExportView.mjs'
import { UndosView } from './UndosView.mjs'
import { LayoutView } from './LayoutView.mjs'
import { DocsView } from './DocsView.mjs'
import { LogView } from './LogView.mjs'
import { EditSettingsView } from './EditSettingsView.mjs'
import { ErrorIcon } from '@freesewing/react/components/Icon'
import {
@ -65,6 +66,7 @@ export const View = (props) => {
if (view === 'docs') return <DocsView {...props} />
if (view === 'editSettings') return <EditSettingsView {...props} />
if (view === 'inspect') return <InspectView {...props} />
if (view === 'logs') return <LogView {...props} />
return <h1 className="tw-ext-center tw-my-12">No view component for view {props.view}</h1>
}