private static DiagramNodeDto BuildDiagramNodeDto(VertexControl vertexControl) { if (vertexControl == null) { throw new ArgumentNullException(nameof(vertexControl)); } var outputNodeDto = new DiagramNodeDto(); var node = vertexControl.Vertex as ArrowGraphVertex; if (node != null) { outputNodeDto.Id = Convert.ToInt32(node.ID); Point point = vertexControl.GetPosition(); outputNodeDto.X = point.X; outputNodeDto.Y = point.Y; outputNodeDto.Height = vertexControl.ActualHeight; outputNodeDto.Width = vertexControl.ActualWidth; Color fillColor = ((SolidColorBrush)vertexControl.Background).Color; outputNodeDto.FillColorHexCode = DtoConverter.HexConverter(fillColor.R, fillColor.G, fillColor.B); Color borderColor = ((SolidColorBrush)vertexControl.BorderBrush).Color; outputNodeDto.BorderColorHexCode = DtoConverter.HexConverter(borderColor.R, borderColor.G, borderColor.B); outputNodeDto.Text = node.ToString(); } return(outputNodeDto); }
public async Task <IActionResult> Diagram(long?id) { var powerPlant = await _dbContext.PowerPlants.Where(p => p.Id == id).FirstOrDefaultAsync(); var ppUnitList = await _dbContext.PowerPlantUnits.Where(p => p.PowerPlantId == id).ToListAsync(); var unitIds = ppUnitList.Select(e => e.Id).ToArray(); var electrometerList = await _dbContext.Electrometers.Where(e => unitIds.Contains(e.PowerPlantUnitId.Value)).ToListAsync(); var diagramData = new DiagramNodeDto() { name = powerPlant.Name, children = ppUnitList.Select(u => new DiagramNodeDto { name = u.Name, children = electrometerList.Where(e => e.PowerPlantUnitId == u.Id).Select(e => new DiagramNodeDto { name = e.Name }).ToList() }).ToList() }; return(View(diagramData)); }
private static graphmlGraphNode BuildArrowGraphNode(DiagramNodeDto diagramNodeDto) { if (diagramNodeDto == null) { throw new ArgumentNullException(nameof(diagramNodeDto)); } var outputNode = new graphmlGraphNode { id = FormatArrowGraphNodeId(diagramNodeDto.Id), data = new data { key = "d6", ShapeNode = new ShapeNode { Geometry = new ShapeNodeGeometry { height = diagramNodeDto.Height.ToString(CultureInfo.InvariantCulture), width = diagramNodeDto.Width.ToString(CultureInfo.InvariantCulture), x = diagramNodeDto.X.ToString(CultureInfo.InvariantCulture), y = diagramNodeDto.Y.ToString(CultureInfo.InvariantCulture) }, Fill = new ShapeNodeFill { color = diagramNodeDto.FillColorHexCode, hasColor = "true", transparent = "false" }, BorderStyle = new ShapeNodeBorderStyle { color = diagramNodeDto.BorderColorHexCode, type = "line", width = "1.0" }, Shape = new ShapeNodeShape { type = "roundrectangle" }, NodeLabel = new ShapeNodeNodeLabel { alignment = "center", autoSizePolicy = "content", fontFamily = "Dialog", fontSize = "12", fontStyle = "plain", hasBackgroundColor = "false", hasLineColor = "false", hasText = "true", height = "4.0", modelName = "custom", textColor = "#000000", visible = "true", width = "4.0", x = "13.0", y = "13.0", Text = diagramNodeDto.Text, LabelModel = new ShapeNodeNodeLabelLabelModel { SmartNodeLabelModel = new ShapeNodeNodeLabelLabelModelSmartNodeLabelModel { distance = "4.0" } }, ModelParameter = new ShapeNodeNodeLabelModelParameter { SmartNodeLabelModelParameter = new ShapeNodeNodeLabelModelParameterSmartNodeLabelModelParameter { labelRatioX = "0.0", labelRatioY = "0.0", nodeRatioX = "0.0", nodeRatioY = "0.0", offsetX = "0.0", offsetY = "0.0", upX = "0.0", upY = "-1.0" } } } } } }; return(outputNode); }