UNPKG

awv3

Version:
75 lines (66 loc) 2.49 kB
import { actions as connectionActions } from '../../session/store/connections' import Plugin from '../../session/plugin' import { buildFeaturePath } from '../../session/helpers' import { Spacer, Group, Button, Input, Label, Selection, Checkbox, Dropdown } from '../../session/elements' import React, { Component, connect } from '../../session/renderer' const resources = ['isometric'].reduce( (prev, item) => ({ ...prev, [item]: require('!!url-loader!awv3-icons/32x32/' + item + '.png') }), {}, ) class Member extends Component { constructor(props) { super(props) const item = props.items[props.key] this.state = { value: undefined } } update = event => { if (event.key === 'Enter') { this.plugin.connection.execute( `_C.CADApplication.SetExpressions(${this.props.id}, ["${this.props.key}"], [${this.state.value}], 1);`, ) } } render({ id, items, key }, { value }, set) { const item = items[key] return ( <Input name={key} format={Input.Format.Number} value={value === undefined ? item.expression || item.value : value} onValue={value => set({ value })} onLastEvent={this.update} /> ) } } @connect((state, { id, connection }) => ({ members: state.connections[connection] ? state.connections[connection].tree[id].members : [], })) class Members extends Component { render({ id, members, filter }) { let keys = Object.keys(members).filter(member => !filter.length || filter.indexOf(member) != -1) return keys.map(key => <Member key={id} id={id} items={members} key={key} />) } } @connect((state, props) => { const plugin = state.plugins[props.id] || {} const connection = plugin.connection || state.globals.activeConnection return { connection, feature: plugin.feature } }) class Root extends Component { render({ connection, filter, feature }) { return feature ? <Group format={Group.Format.Table}> <Members id={feature} connection={connection} filter={filter} /> </Group> : null } } export default class extends Plugin { constructor(session, args) { super(session, { type: 'Members', icon: 'feature', filter: [], resources, ...args }) } render() { return <Root id={this.id} filter={this.filter} /> } }