
If drafting a part fails, the logs store contains an array [message, stacktrace] instead of a simple string. Handle this in the LogView. Also display an error message in the DraftView when there were errors during drafting.  after clicking the button:  (could also display the stack traces, but they're quite unhelpful and you can find them in the browser console anyway, the code for that is commented out) Closes #163 Reviewed-on: https://codeberg.org/freesewing/freesewing/pulls/205 Reviewed-by: Joost De Cock <joostdecock@noreply.codeberg.org> Co-authored-by: Jonathan Haas <haasjona@gmail.com> Co-committed-by: Jonathan Haas <haasjona@gmail.com>
64 lines
2 KiB
JavaScript
64 lines
2 KiB
JavaScript
// Dependencies
|
|
import { draft } from '../../lib/index.mjs'
|
|
// Hooks
|
|
import React from 'react'
|
|
// Components
|
|
import { H1, H3 } from '@freesewing/react/components/Heading'
|
|
import { HeaderMenu } from '../HeaderMenu.mjs'
|
|
import { Tabs, Tab } from '@freesewing/react/components/Tab'
|
|
import { LogEntry } from './LogEntry.mjs'
|
|
|
|
// 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) => (
|
|
<LogEntry key={i} logEntry={line} />
|
|
))}
|
|
</>
|
|
) : 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) => (
|
|
<LogEntry key={i} logEntry={line} />
|
|
))}
|
|
</>
|
|
) : null}
|
|
</div>
|
|
))}
|
|
</Tab>
|
|
</Tabs>
|
|
</div>
|
|
</>
|
|
)
|
|
}
|