【问题标题】:How to query from the database using gojs如何使用gojs从数据库中查询
【发布时间】:2016-08-16 03:10:05
【问题描述】:

我想从数据库中获取特定员工的姓名、职位和图片,并使用 Gojs 将其显示在图表中。我是 Gojs 的新手,我只知道静态方面。我不知道该把查询放在哪里。

<script>
var $ = go.GraphObject.make;

var myDiagram =
$(go.Diagram, "myDiagramDiv",
{
  initialContentAlignment: go.Spot.Center, // center Diagram contents
  "undoManager.isEnabled": true, // enable Ctrl-Z to undo and Ctrl-Y to redo
  layout: $(go.TreeLayout, // specify a Diagram.layout that arranges trees
            { angle: 90, layerSpacing: 40 })
});

// the template we defined earlier
myDiagram.nodeTemplate =
$(go.Node, "Vertical",
{ background: "#44CCFF" },
$(go.Picture,
  { margin: 10, width: 100, height: 100, background: "red" },
  new go.Binding("source")),
$(go.TextBlock, "Default Text",
  { margin: 12, stroke: "white", font: "bold 13px sans-serif" },
  new go.Binding("text", "name")),
$(go.TextBlock, "Default Text",
  { margin: 12, stroke: "white", font: "bold 13px sans-serif" },
  new go.Binding("text", "position"))
);

// define a Link template that routes orthogonally, with no arrowhead
myDiagram.linkTemplate =
$(go.Link,
{ routing: go.Link.Orthogonal, corner: 5 },
$(go.Shape, { strokeWidth: 3, stroke: "#555" })); // the link shape

var model = $(go.TreeModel);
model.nodeDataArray =
[
 { key: "1",              name: "JAMES BRYAN B. JUVENTUD", position: " (Regional Director)",  source: "james.jpg" },
{ key: "2", parent: "1", name: "VERGIL H. MEDIDAS", position: "OIC",   source:   "vergil.jpg" }

];
myDiagram.model = model;
</script>

【问题讨论】:

  • GoJS 仅提供表示层功能——这通常意味着仅在 Web 浏览器中。在您的机器上本地运行时,您上面显示的代码是否有效? GoJS 库无法知道如何连接到您的组织数据库,也无法知道它使用什么模式。您有责任以一种或另一种方式将数据发送到 Web 浏览器,无论是通过使用某些 Web 服务或 Web API,甚至是由 Web 服务器嵌入到页面中。
  • 好的,先生。 @WalterNorthwoods :) 感谢您提供信息。

标签: gojs


【解决方案1】:

在 java web 应用程序中,您可以使用会话 Beans 从数据库中提取所有节点并将它们转换为 JSON 格式并将结果(通过 javascript 和 CDI Beans)放在您的 .xhtml 页面中,我的意思是最终显示的页面你的图表。 此外,最好将所有与 GOJS 相关的代码(绘制图形的 gojs 命令)放在单独的 .js 文件中,并将其添加到 .xhtml 文件中,如下例所述。

例如,在您的 .xhtml 页面的头部放置如下内容:

<script type="text/javascript" > 
   ....
   var yournodeDataArray = JSON.parse('#{yourCDIBean.extractNodeArray()}');
   ....
</script>
 ..........
<script src="yourGojsDiagram.js"></script>
 ...........

在你的 CDIBean 中你必须有类似下面的代码:

@Named ("yourCDIBean")
@SessionScoped
public class YourCDIBean implements Serializable {
    ......
    //inject your SessionBeans 
    @EJB
    private yoursessionBeanPackage.yourSessionBean  abean ;
    ..............

    public String extractNodeArray() {

       //accessing database by abean that is a SessionBean
       //converting result to jsonArray and then converting it to a string 
       //returning result
    }

对于具有 linkDataArray 的图表,您也可以使用这种方式,然后在您的 GojsDiagram.js 文件中使用以下简单命令定义您的模型:

yourDiagram.model = new go.GraphLinksModel(yourNodedataarray, yourLinkdataarray);

希望对大家有所帮助。

【讨论】:

    猜你喜欢
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多