create-gojs-kit
Version:
A CLI for downloading GoJS samples, extensions, and docs
43 lines (42 loc) • 1.97 kB
JavaScript
/*
* Copyright 1998-2025 by Northwoods Software Corporation
* All Rights Reserved.
*
* FloorplanPalette Class
* A FloorplanPalette is a Palette with special rules
*/
import * as go from 'gojs';
export class FloorplanPalette extends go.Palette {
constructor(div, floorplan /*, nodeDataArray: Array<any>*/) {
super(div);
const $ = go.GraphObject.make;
this.contentAlignment = go.Spot.Center;
this.nodeTemplateMap = floorplan.nodeTemplateMap;
// palette also contains "floor" nodes -- nodes of particular floor types that can be dragged and dropped into wall-enclosed areas to create Room Nodes
this.nodeTemplateMap.add('FloorNode', $(go.Node, 'Auto', $(go.Shape, { fill: makeFloorBrush(null), desiredSize: new go.Size(100, 100) }, new go.Binding('fill', 'floorImage', function (src) {
return makeFloorBrush(src);
})), $(go.TextBlock, 'Drag me out to a wall-enclosed space to create a room', { desiredSize: new go.Size(90, NaN) }, new go.Binding('visible', '', function (node) {
if (node.diagram instanceof go.Palette) {
return true;
}
return false;
}).ofObject())));
this.toolManager.contextMenuTool.isEnabled = false;
// add this new FloorplanPalette to the "palettes" field of its associated Floorplan
floorplan.palettes.push(this);
} // end FloorplanPalette constructor
}
/**
* Make a Pattern brush for floor nodes
* @param src The relative path of the image to use for the pattern brush. If this is not specified, a default path is tried
*/
function makeFloorBrush(src) {
const $ = go.GraphObject.make;
if (src === null || src === undefined) {
src = 'images/textures/floor1.jpg';
}
const floorImage = new Image();
floorImage.src = src;
return $(go.Brush, 'Pattern', { pattern: floorImage });
}
// export = FloorplanPalette;