Merged PR 212: Optimize FindChildrenById from O(n) to O(1)
Optimize FindChildrenById from O(n) to O(1): - Deprecate FindContainerByIdDFS - Container: Replace Children to string[] - Add HashMap to IHistoryState that contains all containers To access a container by id now cost O(1) without any additional cost + Implement CICD for SVGLibs
This commit is contained in:
parent
466ef2b08b
commit
c256a76e01
45 changed files with 775 additions and 450 deletions
|
@ -18,6 +18,7 @@ import { Settings } from '../Settings/Settings';
|
|||
import { IMessage } from '../../Interfaces/IMessage';
|
||||
import { DISABLE_API } from '../../utils/default';
|
||||
import { UseWorker, UseAsync } from './UseWorker';
|
||||
import { FindContainerById } from '../../utils/itertools';
|
||||
|
||||
export interface IUIProps {
|
||||
selectedContainer: IContainerModel | undefined
|
||||
|
@ -89,6 +90,12 @@ export function UI(props: IUIProps): JSX.Element {
|
|||
let leftChildren: JSX.Element = (<></>);
|
||||
let rightChildren: JSX.Element = (<></>);
|
||||
|
||||
const mainContainer = FindContainerById(props.current.containers, props.current.mainContainer)
|
||||
|
||||
if (mainContainer === undefined) {
|
||||
throw new Error('Tried to initialized UI but there is no main container!');
|
||||
}
|
||||
|
||||
switch (selectedSidebar) {
|
||||
case SidebarType.Components:
|
||||
leftSidebarTitle = 'Components';
|
||||
|
@ -100,7 +107,8 @@ export function UI(props: IUIProps): JSX.Element {
|
|||
/>;
|
||||
rightSidebarTitle = 'Elements';
|
||||
rightChildren = <ElementsList
|
||||
mainContainer={props.current.mainContainer}
|
||||
containers={props.current.containers}
|
||||
mainContainer={mainContainer}
|
||||
symbols={props.current.symbols}
|
||||
selectedContainer={props.selectedContainer}
|
||||
onPropertyChange={props.onPropertyChange}
|
||||
|
|
|
@ -4,6 +4,7 @@ import { IGetFeedbackRequest } from '../../Interfaces/IGetFeedbackRequest';
|
|||
import { IGetFeedbackResponse } from '../../Interfaces/IGetFeedbackResponse';
|
||||
import { IMessage } from '../../Interfaces/IMessage';
|
||||
import { GetCircularReplacerKeepDataStructure } from '../../utils/saveload';
|
||||
import { API_GET_FEEDBACK_URL } from '../../../public/svgld-settings';
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
|
||||
const myWorker = window.Worker && new Worker('workers/message_worker.js');
|
||||
|
@ -15,7 +16,7 @@ export function UseWorker(
|
|||
// use webworker for the stringify to avoid freezing
|
||||
myWorker.postMessage({
|
||||
state,
|
||||
url: import.meta.env.VITE_API_GET_FEEDBACK_URL
|
||||
url: API_GET_FEEDBACK_URL
|
||||
});
|
||||
|
||||
return () => {
|
||||
|
@ -37,7 +38,7 @@ export function UseAsync(
|
|||
ApplicationState: state
|
||||
};
|
||||
const dataParsed = JSON.stringify(request, GetCircularReplacerKeepDataStructure());
|
||||
fetch(import.meta.env.VITE_API_GET_FEEDBACK_URL, {
|
||||
fetch(API_GET_FEEDBACK_URL, {
|
||||
method: 'POST',
|
||||
headers: new Headers({
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue