import React from 'react' const Develop = (props) => { // Methods const renderAttributes = (attr) => { let list = [] for (let a in attr.list) list.push( <li key={a}> <b>{a}</b>: {renderAttributeValue(attr.list[a])} </li> ) return list } const renderAttributeValue = (val) => { if (Array.isArray(val)) { if (val.length === 1) return val.pop() let list = [] for (let v of val) list.push(<li key={v}>{v}</li>) return <ul>{list}</ul> } return val } const round = (val) => Math.round(val * 10) / 10 if (!props.develop || props.focus === null || Object.keys(props.focus).length < 1) return null let info = [] for (let part of Object.keys(props.focus)) { let points = [] let paths = [] for (let i in props.focus[part].paths) { let name = props.focus[part].paths[i] let path = props.parts[part].paths[name] paths.push( <details key={'patitle-' + name} className={'path c' + (i % 8)}> <summary> <span>path.<b>{name}</b></span> <button className="px-2 py-1 rounded text-secondary border-secondary border text-sm ml-4" onClick={() => console.log(`parts.${part}.paths.${name}:`, path)} > console.log </button> </summary> {path.attributes.length > 0 && ( <ul key={'ops-' + name}> <li> <b>attributes</b>: {renderAttributes(path.attributes)} </li> </ul> )} </details> ) } for (let i in props.focus[part].points) { let name = props.focus[part].points[i] let point = props.parts[part].points[name] points.push( <details key={'potitle-' + name} className={'point c' + (i % 8)}> <summary> <span>point.<b>{name}</b></span> <button className="px-2 py-1 rounded text-secondary border-secondary border text-sm hover:bold ml-4" onClick={() => console.log(`parts.${part}.points.${name}:`, point)} > console.log </button> </summary> <ul key={'pdata-' + name} className="text-sm"> <li> <b>x</b>: {round(point.x)} </li> <li> <b>y</b>: {round(point.y)} </li> {point.attributes.length > 0 && ( <li> <b>attributes</b>: {renderAttributes(point.attributes)} </li> )} </ul> </details> ) } info.push( <details key={'part-' + part} open> <summary className="flex flex-row justify-between py-2 mr-2"> <span>parts.<b>{part}</b></span> <button className="px-2 rounded text-secondary border-secondary border text-sm" onClick={() => props.raiseEvent('part', part)} > isolate </button> </summary> {points.length > 0 && <ul>{points}</ul>} {paths.length > 0 && <ul>{paths}</ul>} </details> ) } return <div className="develop">{info}</div> } export default Develop