diff --git a/web/src/components/IdeConsole/IdeConsole.js b/web/src/components/IdeConsole/IdeConsole.js index 0b62f9c..f375687 100644 --- a/web/src/components/IdeConsole/IdeConsole.js +++ b/web/src/components/IdeConsole/IdeConsole.js @@ -1,17 +1,35 @@ -import { useContext } from 'react' +import { useContext, useEffect } from 'react' import { IdeContext } from 'src/components/IdeToolbarNew' const IdeConsole = () => { const { state } = useContext(IdeContext) + useEffect(() => { + const element = document.querySelector('.console-tile .mosaic-window-body') + if (element) { + element.scrollTop = element.scrollHeight - element.clientHeight + } + }, [state.consoleMessages]) + const matchEditorVsDarkThemeBg = { backgroundColor: 'rgb(30,30,30)' } + const matchEditorVsDarkThemeText = { color: 'rgb(212,212,212)' } + const matchEditorVsDarkThemeTextBrown = { color: 'rgb(206,144,120)' } return ( -
+
- {state.consoleMessages?.map(({ type, message }, index) => ( + {state.consoleMessages?.map(({ type, message, time }, index) => (
-            {message}
+            
+ {time?.toLocaleString()} +
+
+ {message} +
))}
diff --git a/web/src/components/IdeContainer/IdeContainer.js b/web/src/components/IdeContainer/IdeContainer.js index 6f852aa..06d427b 100644 --- a/web/src/components/IdeContainer/IdeContainer.js +++ b/web/src/components/IdeContainer/IdeContainer.js @@ -58,15 +58,22 @@ const IdeContainer = () => { }, []) return ( -
+
{ - const title = id === 'Editor' ? `${id} (${state.ideType})` : id return ( ( +
+ {id} + {id === 'Editor' && ` (${state.ideType})`} +
+ )} + className={`${id.toLowerCase()} ${id.toLowerCase()}-tile`} > {id === 'Viewer' ? (
diff --git a/web/src/components/IdeEditor/IdeEditor.js b/web/src/components/IdeEditor/IdeEditor.js index 498ba9d..6d1723d 100644 --- a/web/src/components/IdeEditor/IdeEditor.js +++ b/web/src/components/IdeEditor/IdeEditor.js @@ -1,5 +1,4 @@ -import { useContext, useEffect, Suspense, lazy } from 'react' -import { isBrowser } from '@redwoodjs/prerender/browserUtils' +import { useContext, Suspense, lazy } from 'react' import { IdeContext } from 'src/components/IdeToolbarNew' import { codeStorageKey } from 'src/helpers/hooks/useIdeState' import { requestRender } from 'src/helpers/hooks/useIdeState' @@ -34,15 +33,27 @@ const IdeEditor = () => { localStorage.setItem(codeStorageKey, state.code) } } + const loading = ( +
+
+ . . . loading +
+
+ ) return (
- . . . loading
}> + { status: 'error', message: { type: 'error', - message: addDateToLog(cleanedErrorMessage), + message: cleanedErrorMessage, + time: new Date(), }, } } @@ -37,7 +38,8 @@ export const render = async ({ code }) => { }, message: { type: 'message', - message: addDateToLog(data.result), + message: data.result || 'Successful Render', + time: new Date(), }, } } catch (e) { @@ -49,7 +51,8 @@ export const render = async ({ code }) => { status: 'error', message: { type: 'error', - message: addDateToLog('network issue'), + message: 'network issue', + time: new Date(), }, } } @@ -61,8 +64,3 @@ const openScad = { } export default openScad - -function addDateToLog(message) { - return `-> ${new Date().toLocaleString()} -${message}` -} diff --git a/web/src/helpers/cadPackages/openScadController.js b/web/src/helpers/cadPackages/openScadController.js index 1eb3c26..da4697a 100644 --- a/web/src/helpers/cadPackages/openScadController.js +++ b/web/src/helpers/cadPackages/openScadController.js @@ -34,7 +34,8 @@ export const render = async ({ code, settings }) => { status: 'error', message: { type: 'error', - message: addDateToLog(cleanedErrorMessage), + message: cleanedErrorMessage, + time: new Date(), }, } } @@ -47,7 +48,8 @@ export const render = async ({ code, settings }) => { }, message: { type: 'message', - message: addDateToLog(data.result), + message: data.result, + time: new Date(), }, } } catch (e) { @@ -59,7 +61,8 @@ export const render = async ({ code, settings }) => { status: 'error', message: { type: 'error', - message: addDateToLog('network issue'), + message: 'network issue', + time: new Date(), }, } } @@ -71,8 +74,3 @@ const openScad = { } export default openScad - -function addDateToLog(message) { - return `-> ${new Date().toLocaleString()} -${message}` -} diff --git a/web/src/helpers/hooks/useIdeState.js b/web/src/helpers/hooks/useIdeState.js index 3fc0056..bf96ef5 100644 --- a/web/src/helpers/hooks/useIdeState.js +++ b/web/src/helpers/hooks/useIdeState.js @@ -46,7 +46,9 @@ export const useIdeState = () => { const code = localStorage.getItem(codeStorageKey) || initCodeMap.openscad const initialState = { ideType: 'INIT', - consoleMessages: [{ type: 'message', message: 'Initialising' }], + consoleMessages: [ + { type: 'message', message: 'Initialising', time: new Date() }, + ], code, objectData: { type: 'stl', diff --git a/web/src/index.css b/web/src/index.css index 650d409..b66a0a6 100644 --- a/web/src/index.css +++ b/web/src/index.css @@ -44,6 +44,11 @@ @apply list-disc; } +.mosaic-toolbar-overrides .mosaic-window .mosaic-window-toolbar { + /* makes the height of the toolbar based off the content inside instead of hardcoded to 30px */ + height: unset; +} + /* Used for LandingSection.js, if it's gone or these class isn't used there you can probably delete it */ .svg-shadow { @@ -100,4 +105,4 @@ input.error, textarea.error { /* used in IdeContainer component */ #cadhub-ide .mosaic-window.console .mosaic-window-body { overflow-y: auto; -} \ No newline at end of file +}