UNPKG

react-floorplanner

Version:

react-floorplanner is a React Component for plans design. Draw a 2D floorplan and navigate it in 3D mode.

104 lines (97 loc) 3.24 kB
import React, {Component} from 'react'; import PropTypes from 'prop-types'; import { FormNumberInput, FormTextInput } from '../../../style/export'; import { PropertyLengthMeasure } from '../../../../catalog/properties/export'; const tableStyle = { width: '100%' }; const firstTdStyle = { width: '6em' }; const inputStyle = { textAlign: 'left' }; export default function LineAttributesEditor({element, onUpdate, attributeFormData, state, ...rest}, {translator}) { let name = attributeFormData.has('name') ? attributeFormData.get('name') : element.name; let vertexOne = attributeFormData.has('vertexOne') ? attributeFormData.get('vertexOne') : null; let vertexTwo = attributeFormData.has('vertexTwo') ? attributeFormData.get('vertexTwo') : null; let lineLength = attributeFormData.has('lineLength') ? attributeFormData.get('lineLength') : null; return <div> <table style={tableStyle}> <tbody> <tr> <td style={firstTdStyle}>{translator.t('Name')}</td> <td> <FormTextInput value={name} onChange={event => onUpdate('name', event.target.value)} style={inputStyle} /> </td> </tr> <tr> <td style={firstTdStyle}>X1</td> <td> <FormNumberInput value={vertexOne.get('x')} onChange={event => onUpdate('vertexOne', {'x': event.target.value})} style={inputStyle} state={state} configs={{precision: 2}} {...rest} /> </td> </tr> <tr> <td style={firstTdStyle}>Y1</td> <td> <FormNumberInput value={vertexOne.get('y')} onChange={event => onUpdate('vertexOne', {'y': event.target.value})} style={inputStyle} state={state} configs={{precision: 2}} {...rest} /> </td> </tr> <tr> <td style={firstTdStyle}>X2</td> <td> <FormNumberInput value={vertexTwo.get('x')} onChange={event => onUpdate('vertexTwo', {'x': event.target.value})} style={inputStyle} state={state} configs={{precision: 2}} {...rest} /> </td> </tr> <tr> <td style={firstTdStyle}>Y2</td> <td> <FormNumberInput value={vertexTwo.get('y')} onChange={event => onUpdate('vertexTwo', {'y': event.target.value})} style={inputStyle} state={state} configs={{precision: 2}} {...rest} /> </td> </tr> </tbody> </table> <PropertyLengthMeasure value={ lineLength } onUpdate={mapped => onUpdate('lineLength', mapped)} configs={{label: translator.t('Length'), min: 0, max: Infinity, precision: 2}} state={state} /> </div>; } LineAttributesEditor.propTypes = { element: PropTypes.object.isRequired, onUpdate: PropTypes.func.isRequired, onValid: PropTypes.func, attributeFormData: PropTypes.object.isRequired, state: PropTypes.object.isRequired }; LineAttributesEditor.contextTypes = { translator: PropTypes.object.isRequired, };