react-planner-viewer
Version:
react-planner-viewer is a React Component for view plans builded with react-planner in 2D mode
80 lines (64 loc) • 1.71 kB
JSX
import React from 'react';
export default function AreaFactory(name, info, textures) {
let areaElement = {
name,
prototype: 'areas',
info: {
...info,
visibility: {
catalog: false,
layerElementsVisible: false
}
},
properties: {
patternColor: {
label: 'Color',
type: 'color',
defaultValue: '#f5f4f4'
},
name: {
label: 'Name',
type: 'string',
defaultValue: '',
},
},
render2D: function (element, layer, scene) {
let path = '';
///print area path
element.vertices.forEach((vertexID, ind) => {
let vertex = layer.vertices.get(vertexID);
path += ( ind ? 'L' : 'M' ) + vertex.x + ' ' + vertex.y + ' ';
});
//add holes
element.holes.forEach(areaID => {
let area = layer.areas.get( areaID );
area.vertices.reverse().forEach((vertexID, ind) => {
let vertex = layer.vertices.get(vertexID);
path += ( ind ? 'L' : 'M' ) + vertex.x + ' ' + vertex.y + ' ';
});
});
let fill;
if(element.showHeatMap && element.heatMapColor){
fill = element.heatMapColor;
}else {
fill = element.properties.get('patternColor')
}
return (<path d={path} fill={fill}/>);
},
};
if (textures && textures !== {}) {
let textureValues = {
'none': 'None'
};
for (let textureName in textures) {
textureValues[textureName] = textures[textureName].name
}
areaElement.properties.texture = {
label: 'Floor',
type: 'enum',
defaultValue: 'none',
values: textureValues
};
}
return areaElement
}