diff --git a/README.md b/README.md index 2bf70c2..ef1a8e6 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,7 @@ Run `npm ci` Run `npm run dev` -## Testing the API - -This program fetch the data structure from others application, allowing it to assemble them later. +## Testing Install `bun` diff --git a/src/App.tsx b/src/App.tsx index 8a0893d..f1e94dd 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,8 +1,8 @@ import React from 'react'; import './App.scss'; import Sidebar from './Components/Sidebar/Sidebar'; -import { AvailableContainer } from './Interfaces/AvailableContainer'; -import { Configuration } from './Interfaces/Configuration'; +import { IAvailableContainerModel } from './Interfaces/IAvailableContainerModel'; +import { IConfigurationResponseModel } from './Interfaces/IConfigurationResponseModel'; import { SVG } from './SVG/SVG'; interface IAppProps { @@ -10,7 +10,7 @@ interface IAppProps { interface IAppState { isSidebarOpen: boolean, - configuration: Configuration + configuration: IConfigurationResponseModel } class App extends React.Component { @@ -23,13 +23,13 @@ class App extends React.Component { configuration: { AvailableContainers: [], AvailableSymbols: [], - MainContainer: {} as AvailableContainer + MainContainer: {} as IAvailableContainerModel } }; } componentDidMount() { - fetchConfiguration().then((configuration: Configuration) => { + fetchConfiguration().then((configuration: IConfigurationResponseModel) => { this.setState({ isSidebarOpen: this.state.isSidebarOpen, configuration @@ -48,14 +48,14 @@ class App extends React.Component { return (
this.ToggleMenu()} /> - +
); } } -async function fetchConfiguration(): Promise { +async function fetchConfiguration(): Promise { const url = `${import.meta.env.VITE_API_URL}`; const myHeaders = new Headers({ 'Content-Type': 'application/json' @@ -69,7 +69,7 @@ async function fetchConfiguration(): Promise { return await fetch(url, myInit) .then((response) => response.json() - ) as Configuration; + ) as IConfigurationResponseModel; } export default App; diff --git a/src/Components/Sidebar/Sidebar.tsx b/src/Components/Sidebar/Sidebar.tsx index c8fd740..8ca7e16 100644 --- a/src/Components/Sidebar/Sidebar.tsx +++ b/src/Components/Sidebar/Sidebar.tsx @@ -1,8 +1,8 @@ import * as React from 'react'; -import { AvailableContainer } from '../../Interfaces/AvailableContainer'; +import { IAvailableContainerModel } from '../../Interfaces/IAvailableContainerModel'; interface ISidebarProps { - componentOptions: AvailableContainer[] + componentOptions: IAvailableContainerModel[] isOpen: boolean; onClick: () => void; } diff --git a/src/Interfaces/ActionContainerModel.ts b/src/Interfaces/ActionContainerModel.ts new file mode 100644 index 0000000..1f398b0 --- /dev/null +++ b/src/Interfaces/ActionContainerModel.ts @@ -0,0 +1,11 @@ +import { AddingBehavior } from '../Enums/AddingBehavior'; +import { IImageModel } from './IImageModel'; + +export interface IActionContainerModel { + Id: string + CustomLogo: IImageModel + Label: string + Description: string + Action: string + AddingBehavior: AddingBehavior +} diff --git a/src/Interfaces/AvailableContainer.ts b/src/Interfaces/AvailableContainer.ts deleted file mode 100644 index d7bb22f..0000000 --- a/src/Interfaces/AvailableContainer.ts +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react'; - -/** Model of available container used in application configuration */ -export interface AvailableContainer { - Type: string - Width: number - Height: number - Style: React.CSSProperties -} diff --git a/src/Interfaces/Configuration.ts b/src/Interfaces/Configuration.ts deleted file mode 100644 index 2127299..0000000 --- a/src/Interfaces/Configuration.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { AvailableContainer } from './AvailableContainer'; -import { AvailableSymbolModel } from './AvailableSymbol'; - -/** Model of configuration for the application to configure it */ -export interface Configuration { - AvailableContainers: AvailableContainer[]; - AvailableSymbols: AvailableSymbolModel[]; - MainContainer: AvailableContainer; -} diff --git a/src/Interfaces/IAvailableContainerModel.ts b/src/Interfaces/IAvailableContainerModel.ts new file mode 100644 index 0000000..1a1c1fe --- /dev/null +++ b/src/Interfaces/IAvailableContainerModel.ts @@ -0,0 +1,28 @@ +import { IActionContainerModel } from './ActionContainerModel' +import { IAvailableDefaultContainerModel } from './IAvailableDefaultContainerModel' + +/** Model of available container used in application configuration */ +export interface IAvailableContainerModel { + Type: string + BodyColor: string + BorderColor: string + BorderWidth: number + Width: number + Height: number + Padding: number + MinWidth: number + MaxWidth: number + MinHeight: number + MaxHeight: number + IsWidthFixed: boolean + IsPositionFixed: boolean + + ShowCotation: boolean + + /** Default Type container to add with this container (Priority on DefaultChildrenContainers property) */ + TypeChildContainerDefault: string + + /** Default children container to add with this container */ + DefaultChildrenContainers: IAvailableDefaultContainerModel[] + ContainerActions: IActionContainerModel[] +} diff --git a/src/Interfaces/IAvailableDefaultContainerModel.ts b/src/Interfaces/IAvailableDefaultContainerModel.ts new file mode 100644 index 0000000..097fff2 --- /dev/null +++ b/src/Interfaces/IAvailableDefaultContainerModel.ts @@ -0,0 +1,4 @@ +export interface IAvailableDefaultContainerModel { + Type: string + DefaultChildrenContainers: IAvailableDefaultContainerModel[] +} diff --git a/src/Interfaces/AvailableSymbol.ts b/src/Interfaces/IAvailableSymbolModel.ts similarity index 67% rename from src/Interfaces/AvailableSymbol.ts rename to src/Interfaces/IAvailableSymbolModel.ts index e1d518d..865d49f 100644 --- a/src/Interfaces/AvailableSymbol.ts +++ b/src/Interfaces/IAvailableSymbolModel.ts @@ -1,12 +1,12 @@ import { XPositionReference } from '../Enums/XPositionReference'; -import { Image } from './Image'; +import { IImageModel } from './IImageModel'; /** * Model of available symbol to configure the application */ -export interface AvailableSymbolModel { +export interface IAvailableSymbolModel { Name: string XPositionReference: XPositionReference - Image: Image + Image: IImageModel Width: number Height: number } diff --git a/src/Interfaces/IConfigurationResponseModel.ts b/src/Interfaces/IConfigurationResponseModel.ts new file mode 100644 index 0000000..1f92dc7 --- /dev/null +++ b/src/Interfaces/IConfigurationResponseModel.ts @@ -0,0 +1,9 @@ +import { IAvailableContainerModel } from './IAvailableContainerModel'; +import { IAvailableSymbolModel } from './IAvailableSymbolModel'; + +/** Model of configuration for the application to configure it */ +export interface IConfigurationResponseModel { + AvailableContainers: IAvailableContainerModel[]; + AvailableSymbols: IAvailableSymbolModel[]; + MainContainer: IAvailableContainerModel; +} diff --git a/src/Interfaces/Image.ts b/src/Interfaces/IImageModel.ts similarity index 80% rename from src/Interfaces/Image.ts rename to src/Interfaces/IImageModel.ts index 723d04b..58598cb 100644 --- a/src/Interfaces/Image.ts +++ b/src/Interfaces/IImageModel.ts @@ -1,5 +1,5 @@ /** Model of an image with multiple source */ -export interface Image { +export interface IImageModel { Name: string; Url: string; Base64Image: string; diff --git a/src/SVG/SVG.tsx b/src/SVG/SVG.tsx index ff83c9e..ac6181c 100644 --- a/src/SVG/SVG.tsx +++ b/src/SVG/SVG.tsx @@ -1,9 +1,9 @@ import * as React from 'react'; -import { AvailableContainer } from '../Interfaces/AvailableContainer'; +import { IAvailableContainerModel } from '../Interfaces/IAvailableContainerModel'; import { MainContainer } from './Elements/MainContainer'; interface ISVGProps { - MainContainer: AvailableContainer + MainContainer: IAvailableContainerModel } export class SVG extends React.Component {