awv3
Version:
⚡ AWV3 embedded CAD
71 lines (62 loc) • 2.4 kB
JavaScript
import { actions as connectionActions } from '../../session/store/connections';
import Plugin from '../../session/plugin';
import Dimension from '../dimension/';
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: item.expression || item.value };
}
update = event => {
if (event.key === 'Enter') {
const path = buildFeaturePath(this.plugin.tree, this.plugin.feature);
const command = `${path}.OBJ_SetMemberExpr("${this.props.key}","${this.state
.value}");_C.GlobaleFunktionen.UseOnStartRecalc(_O);`;
console.log(command);
this.plugin.connection.execute(command);
}
};
render({ items, key }, { value }, set) {
const item = items[key];
return <Input name={key} value={value} onValue={value => set({ value })} onLastEvent={this.update} />;
}
}
((state, props) => {
let connection = state.connections[state.globals.activeConnection];
return { members: connection.tree[props.id].members };
})
class Members extends Component {
render({ members, filter }) {
let keys = Object.keys(members).filter(member => !filter.length || filter.indexOf(member) != -1);
return (
<Group format={Group.Format.Table}>
{keys.map(key => <Member items={members} key={key} />)}
</Group>
);
}
}
((state, props) => ({ feature: state.plugins[props.id].feature }))
class Base extends Component {
render({ filter, feature }) {
return (
<Group>
<Members id={feature} filter={filter} />
</Group>
);
}
}
export default class Feature extends Plugin {
constructor(session, args) {
super(session, { type: 'Feature', icon: 'feature', filter: [], resources, ...args });
}
render() {
return <Base id={this.id} filter={this.filter} />;
}
}