react-planner-viewer
Version:
react-planner-viewer is a React Component for view plans builded with react-planner in 2D mode
66 lines (58 loc) • 7.51 kB
JavaScript
import { select, unselectAll, showHeatMap } from '../utils/layer-operations';
import { SELECT_AREA, SHOW_HEAT_MAP_AREAS } from '../constants';
import { Vertex } from '../models';
export default function (state, action) {
switch (action.type) {
case SELECT_AREA:
return selectArea(state, action.layerID, action.areaID);
case SHOW_HEAT_MAP_AREAS:
return showHeatMapAreas(state, action.layerID, action.heatMapValues, action.colors);
default:
return state;
}
}
function selectArea(state, layerID, areaID) {
var scene = state.scene;
scene = scene.merge({
layers: scene.layers.map(unselectAll),
selectedLayer: layerID
});
scene = scene.updateIn(['layers', layerID], function (layer) {
return layer.withMutations(function (layer) {
var area = layer.getIn(['areas', areaID]);
select(layer, 'areas', areaID);
var areaVertices = area.vertices;
var areaLinesIds = [];
var allLines = layer.lines.forEach(function (line) {
var lineVertices = line.get('vertices');
var lineBelongsToArea = lineVertices.every(function (vert) {
return areaVertices.includes(vert);
});
if (lineBelongsToArea) {
select(layer, 'lines', line.get('id'));
}
});
});
});
return state.merge({
scene: scene,
sceneHistory: state.sceneHistory.push(scene)
});
}
function showHeatMapAreas(state, layerID, heatMapValues, colors) {
var scene = state.scene;
scene = scene.merge({
layers: scene.layers.map(unselectAll),
selectedLayer: layerID
});
scene = scene.updateIn(['layers', layerID], function (layer) {
return layer.withMutations(function (layer) {
showHeatMap(layer, heatMapValues, colors);
});
});
return state.merge({
scene: scene,
sceneHistory: state.sceneHistory.push(scene)
});
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWR1Y2Vycy9hcmVhcy1yZWR1Y2VyLmpzIl0sIm5hbWVzIjpbInNlbGVjdCIsInVuc2VsZWN0QWxsIiwic2hvd0hlYXRNYXAiLCJTRUxFQ1RfQVJFQSIsIlNIT1dfSEVBVF9NQVBfQVJFQVMiLCJWZXJ0ZXgiLCJzdGF0ZSIsImFjdGlvbiIsInR5cGUiLCJzZWxlY3RBcmVhIiwibGF5ZXJJRCIsImFyZWFJRCIsInNob3dIZWF0TWFwQXJlYXMiLCJoZWF0TWFwVmFsdWVzIiwiY29sb3JzIiwic2NlbmUiLCJtZXJnZSIsImxheWVycyIsIm1hcCIsInNlbGVjdGVkTGF5ZXIiLCJ1cGRhdGVJbiIsImxheWVyIiwid2l0aE11dGF0aW9ucyIsImFyZWEiLCJnZXRJbiIsImFyZWFWZXJ0aWNlcyIsInZlcnRpY2VzIiwiYXJlYUxpbmVzSWRzIiwiYWxsTGluZXMiLCJsaW5lcyIsImZvckVhY2giLCJsaW5lVmVydGljZXMiLCJsaW5lIiwiZ2V0IiwibGluZUJlbG9uZ3NUb0FyZWEiLCJldmVyeSIsImluY2x1ZGVzIiwidmVydCIsInNjZW5lSGlzdG9yeSIsInB1c2giXSwibWFwcGluZ3MiOiJBQUFBLFNBQ0VBLE1BREYsRUFFRUMsV0FGRixFQUdFQyxXQUhGLFFBSU8sMkJBSlA7O0FBTUEsU0FBU0MsV0FBVCxFQUFzQkMsbUJBQXRCLFFBQWlELGNBQWpEO0FBQ0EsU0FBU0MsTUFBVCxRQUF1QixXQUF2Qjs7QUFFQSxlQUFlLFVBQVVDLEtBQVYsRUFBaUJDLE1BQWpCLEVBQXlCOztBQUV0QyxVQUFRQSxPQUFPQyxJQUFmO0FBQ0UsU0FBS0wsV0FBTDtBQUNFLGFBQU9NLFdBQVdILEtBQVgsRUFBa0JDLE9BQU9HLE9BQXpCLEVBQWtDSCxPQUFPSSxNQUF6QyxDQUFQO0FBQ0YsU0FBS1AsbUJBQUw7QUFDRSxhQUFPUSxpQkFBaUJOLEtBQWpCLEVBQXdCQyxPQUFPRyxPQUEvQixFQUF3Q0gsT0FBT00sYUFBL0MsRUFBOEROLE9BQU9PLE1BQXJFLENBQVA7QUFDRjtBQUNFLGFBQU9SLEtBQVA7QUFOSjtBQVFEOztBQUdELFNBQVNHLFVBQVQsQ0FBb0JILEtBQXBCLEVBQTJCSSxPQUEzQixFQUFvQ0MsTUFBcEMsRUFBNEM7QUFDMUMsTUFBSUksUUFBUVQsTUFBTVMsS0FBbEI7O0FBRUFBLFVBQVFBLE1BQU1DLEtBQU4sQ0FBWTtBQUNsQkMsWUFBUUYsTUFBTUUsTUFBTixDQUFhQyxHQUFiLENBQWlCakIsV0FBakIsQ0FEVTtBQUVsQmtCLG1CQUFlVDtBQUZHLEdBQVosQ0FBUjs7QUFLQUssVUFBUUEsTUFBTUssUUFBTixDQUFlLENBQUMsUUFBRCxFQUFXVixPQUFYLENBQWYsRUFBb0M7QUFBQSxXQUFTVyxNQUFNQyxhQUFOLENBQW9CLGlCQUFTO0FBQ2hGLFVBQUlDLE9BQU9GLE1BQU1HLEtBQU4sQ0FBWSxDQUFDLE9BQUQsRUFBVWIsTUFBVixDQUFaLENBQVg7QUFDQVgsYUFBT3FCLEtBQVAsRUFBYyxPQUFkLEVBQXVCVixNQUF2QjtBQUNBLFVBQU1jLGVBQWVGLEtBQUtHLFFBQTFCO0FBQ0EsVUFBTUMsZUFBZSxFQUFyQjtBQUNBLFVBQU1DLFdBQVdQLE1BQU1RLEtBQU4sQ0FBWUMsT0FBWixDQUFvQixnQkFBUTtBQUMzQyxZQUFNQyxlQUFlQyxLQUFLQyxHQUFMLENBQVMsVUFBVCxDQUFyQjtBQUNBLFlBQU1DLG9CQUFvQkgsYUFBYUksS0FBYixDQUFtQjtBQUFBLGlCQUFRVixhQUFhVyxRQUFiLENBQXNCQyxJQUF0QixDQUFSO0FBQUEsU0FBbkIsQ0FBMUI7QUFDQSxZQUFHSCxpQkFBSCxFQUFxQjtBQUNwQmxDLGlCQUFPcUIsS0FBUCxFQUFjLE9BQWQsRUFBdUJXLEtBQUtDLEdBQUwsQ0FBUyxJQUFULENBQXZCO0FBQ0E7QUFDRixPQU5nQixDQUFqQjtBQVFELEtBYm9ELENBQVQ7QUFBQSxHQUFwQyxDQUFSOztBQWdCQSxTQUFPM0IsTUFBTVUsS0FBTixDQUFZO0FBQ2pCRCxnQkFEaUI7QUFFakJ1QixrQkFBY2hDLE1BQU1nQyxZQUFOLENBQW1CQyxJQUFuQixDQUF3QnhCLEtBQXhCO0FBRkcsR0FBWixDQUFQO0FBSUQ7QUFDRCxTQUFTSCxnQkFBVCxDQUEwQk4sS0FBMUIsRUFBaUNJLE9BQWpDLEVBQTBDRyxhQUExQyxFQUF5REMsTUFBekQsRUFBaUU7QUFDL0QsTUFBSUMsUUFBUVQsTUFBTVMsS0FBbEI7QUFDQUEsVUFBUUEsTUFBTUMsS0FBTixDQUFZO0FBQ2xCQyxZQUFRRixNQUFNRSxNQUFOLENBQWFDLEdBQWIsQ0FBaUJqQixXQUFqQixDQURVO0FBRWxCa0IsbUJBQWVUO0FBRkcsR0FBWixDQUFSO0FBSUFLLFVBQVFBLE1BQU1LLFFBQU4sQ0FBZSxDQUFDLFFBQUQsRUFBV1YsT0FBWCxDQUFmLEVBQW9DO0FBQUEsV0FBU1csTUFBTUMsYUFBTixDQUFvQixpQkFBUztBQUNoRnBCLGtCQUFZbUIsS0FBWixFQUFtQlIsYUFBbkIsRUFBa0NDLE1BQWxDO0FBQ0QsS0FGb0QsQ0FBVDtBQUFBLEdBQXBDLENBQVI7O0FBS0EsU0FBT1IsTUFBTVUsS0FBTixDQUFZO0FBQ2pCRCxnQkFEaUI7QUFFakJ1QixrQkFBY2hDLE1BQU1nQyxZQUFOLENBQW1CQyxJQUFuQixDQUF3QnhCLEtBQXhCO0FBRkcsR0FBWixDQUFQO0FBSUQiLCJmaWxlIjoiYXJlYXMtcmVkdWNlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHNlbGVjdCxcbiAgdW5zZWxlY3RBbGwsXG4gIHNob3dIZWF0TWFwLFxufSBmcm9tICcuLi91dGlscy9sYXllci1vcGVyYXRpb25zJztcblxuaW1wb3J0IHsgU0VMRUNUX0FSRUEsIFNIT1dfSEVBVF9NQVBfQVJFQVMgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVmVydGV4IH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHN0YXRlLCBhY3Rpb24pIHtcblxuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSBTRUxFQ1RfQVJFQTpcbiAgICAgIHJldHVybiBzZWxlY3RBcmVhKHN0YXRlLCBhY3Rpb24ubGF5ZXJJRCwgYWN0aW9uLmFyZWFJRCk7XG4gICAgY2FzZSBTSE9XX0hFQVRfTUFQX0FSRUFTOlxuICAgICAgcmV0dXJuIHNob3dIZWF0TWFwQXJlYXMoc3RhdGUsIGFjdGlvbi5sYXllcklELCBhY3Rpb24uaGVhdE1hcFZhbHVlcywgYWN0aW9uLmNvbG9ycyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIHNlbGVjdEFyZWEoc3RhdGUsIGxheWVySUQsIGFyZWFJRCkge1xuICBsZXQgc2NlbmUgPSBzdGF0ZS5zY2VuZTtcblxuICBzY2VuZSA9IHNjZW5lLm1lcmdlKHtcbiAgICBsYXllcnM6IHNjZW5lLmxheWVycy5tYXAodW5zZWxlY3RBbGwpLFxuICAgIHNlbGVjdGVkTGF5ZXI6IGxheWVySURcbiAgfSk7XG5cbiAgc2NlbmUgPSBzY2VuZS51cGRhdGVJbihbJ2xheWVycycsIGxheWVySURdLCBsYXllciA9PiBsYXllci53aXRoTXV0YXRpb25zKGxheWVyID0+IHtcbiAgICBsZXQgYXJlYSA9IGxheWVyLmdldEluKFsnYXJlYXMnLCBhcmVhSURdKTtcbiAgICBzZWxlY3QobGF5ZXIsICdhcmVhcycsIGFyZWFJRCk7XG4gICAgY29uc3QgYXJlYVZlcnRpY2VzID0gYXJlYS52ZXJ0aWNlcztcbiAgICBjb25zdCBhcmVhTGluZXNJZHMgPSBbXTtcbiAgICBjb25zdCBhbGxMaW5lcyA9IGxheWVyLmxpbmVzLmZvckVhY2gobGluZSA9PiB7XG4gICAgICBjb25zdCBsaW5lVmVydGljZXMgPSBsaW5lLmdldCgndmVydGljZXMnKTtcbiAgICAgIGNvbnN0IGxpbmVCZWxvbmdzVG9BcmVhID0gbGluZVZlcnRpY2VzLmV2ZXJ5KHZlcnQgPT4gYXJlYVZlcnRpY2VzLmluY2x1ZGVzKHZlcnQpKTtcbiAgICAgIGlmKGxpbmVCZWxvbmdzVG9BcmVhKXtcbiAgICAgICBzZWxlY3QobGF5ZXIsICdsaW5lcycsIGxpbmUuZ2V0KCdpZCcpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgfSlcbik7XG5cbiAgcmV0dXJuIHN0YXRlLm1lcmdlKHtcbiAgICBzY2VuZSxcbiAgICBzY2VuZUhpc3Rvcnk6IHN0YXRlLnNjZW5lSGlzdG9yeS5wdXNoKHNjZW5lKVxuICB9KVxufVxuZnVuY3Rpb24gc2hvd0hlYXRNYXBBcmVhcyhzdGF0ZSwgbGF5ZXJJRCwgaGVhdE1hcFZhbHVlcywgY29sb3JzKSB7XG4gIGxldCBzY2VuZSA9IHN0YXRlLnNjZW5lO1xuICBzY2VuZSA9IHNjZW5lLm1lcmdlKHtcbiAgICBsYXllcnM6IHNjZW5lLmxheWVycy5tYXAodW5zZWxlY3RBbGwpLFxuICAgIHNlbGVjdGVkTGF5ZXI6IGxheWVySURcbiAgfSk7XG4gIHNjZW5lID0gc2NlbmUudXBkYXRlSW4oWydsYXllcnMnLCBsYXllcklEXSwgbGF5ZXIgPT4gbGF5ZXIud2l0aE11dGF0aW9ucyhsYXllciA9PiB7XG4gICAgc2hvd0hlYXRNYXAobGF5ZXIsIGhlYXRNYXBWYWx1ZXMsIGNvbG9ycyk7XG4gIH0pXG4gICk7XG5cbiAgcmV0dXJuIHN0YXRlLm1lcmdlKHtcbiAgICBzY2VuZSxcbiAgICBzY2VuZUhpc3Rvcnk6IHN0YXRlLnNjZW5lSGlzdG9yeS5wdXNoKHNjZW5lKVxuICB9KVxufSJdfQ==