diff --git a/public/images/arrow-down.svg b/public/images/arrow-down.svg new file mode 100644 index 0000000..b15f9a9 --- /dev/null +++ b/public/images/arrow-down.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/Components/SVG/Elements/Symbol.tsx b/src/Components/SVG/Elements/Symbol.tsx index 6a971de..f63f66a 100644 --- a/src/Components/SVG/Elements/Symbol.tsx +++ b/src/Components/SVG/Elements/Symbol.tsx @@ -1,7 +1,7 @@ import { Interweave } from 'interweave'; import * as React from 'react'; import { ISymbolModel } from '../../../Interfaces/ISymbolModel'; -import { DIMENSION_MARGIN } from '../../../utils/default'; +import { DIMENSION_MARGIN, SYMBOL_MARGIN } from '../../../utils/default'; interface ISymbolProps { model: ISymbolModel @@ -30,8 +30,14 @@ export function Symbol(props: ISymbolProps): JSX.Element { return ( ); diff --git a/src/Components/SymbolProperties/SymbolForm.tsx b/src/Components/SymbolProperties/SymbolForm.tsx index 31c8315..a747af3 100644 --- a/src/Components/SymbolProperties/SymbolForm.tsx +++ b/src/Components/SymbolProperties/SymbolForm.tsx @@ -2,6 +2,8 @@ import * as React from 'react'; import { ISymbolModel } from '../../Interfaces/ISymbolModel'; import { RestoreX, TransformX } from '../../utils/svg'; import { InputGroup } from '../InputGroup/InputGroup'; +import { TextInputGroup } from '../InputGroup/TextInputGroup'; +import { PositionReferenceSelector } from '../RadioGroupButtons/PositionReferenceSelector'; interface ISymbolFormProps { symbol: ISymbolModel @@ -20,15 +22,17 @@ export function SymbolForm(props: ISymbolFormProps): JSX.Element { type='string' value={props.symbol.id.toString()} isDisabled={true} /> - props.onChange('x', RestoreX(Number(event.target.value), props.symbol.width, props.symbol.config.XPositionReference))} /> - props.onChange('x', RestoreX(Number(value), props.symbol.width, props.symbol.config.PositionReference))} /> + props.onChange('height', Number(event.target.value))} /> - props.onChange('height', Number(value))} /> + props.onChange('width', Number(event.target.value))} /> + onChange={(value) => props.onChange('width', Number(value))} /> ); } diff --git a/src/Interfaces/IAvailableSymbol.ts b/src/Interfaces/IAvailableSymbol.ts index 064a8f1..a9adf92 100644 --- a/src/Interfaces/IAvailableSymbol.ts +++ b/src/Interfaces/IAvailableSymbol.ts @@ -9,5 +9,5 @@ export interface IAvailableSymbol { Image: IImage Width?: number Height?: number - XPositionReference?: PositionReference + PositionReference?: PositionReference } diff --git a/src/utils/default.ts b/src/utils/default.ts index 6c351b9..5ffb68c 100644 --- a/src/utils/default.ts +++ b/src/utils/default.ts @@ -63,6 +63,7 @@ export const SHOW_CHILDREN_DIMENSIONS = true; export const SHOW_BORROWER_DIMENSIONS = true; export const SHOW_DIMENSIONS_PER_DEPTH = false; export const DIMENSION_MARGIN = 50; +export const SYMBOL_MARGIN = 25; export const NOTCHES_LENGTH = 10; /// SYMBOL DEFAULTS /// diff --git a/test-server/http.js b/test-server/http.js index b5cc6bc..90da3f5 100644 --- a/test-server/http.js +++ b/test-server/http.js @@ -241,6 +241,18 @@ const GetSVGLayoutConfiguration = () => { Name: 'Poteau structure', PositionReference: 1 }, + { + Width: 32, + Height: 32, + Image: { + Base64Image: null, + Name: 'Arrow', + Svg: null, + Url: './images/arrow-down.svg' + }, + Name: 'Arrow', + PositionReference: 1 + }, { Width: 32, Height: 32,