Integrate ZK with dhtmlxGantt"

From Documentation
Line 49: Line 49:
  
 
== Prepare data for Gantt Chart ==
 
== Prepare data for Gantt Chart ==
Normally, a Gantt Chart need GanttTask and GanttLink, and from dhtmlxGantt's [http://docs.dhtmlx.com/gantt/desktop__how_to_start.html#step4loaddatatotheganttchart online document], we can see that the properties needed for GanttTask and GanttLink. Threrfore, we need to create two Java Objects as follows:
+
Normally, a Gantt Chart need GanttTask and GanttLink, and from dhtmlxGantt's [http://docs.dhtmlx.com/gantt/desktop__how_to_start.html#step4loaddatatotheganttchart online document], we can see all the properties for GanttTask and GanttLink. Threrfore, we need to create two Java Objects as follows:
 
<source lang="java" high="1">
 
<source lang="java" high="1">
 
public class GanttTask implements JSONAware {
 
public class GanttTask implements JSONAware {

Revision as of 08:26, 2 October 2014




WarningTriangle-32x32.png This page is under construction, so we cannot guarantee the accuracy of the content!

DocumentationSmall Talks2014OctoberIntegrate ZK with dhtmlxGantt
Integrate ZK with dhtmlxGantt

Author
Vincent Jian, Engineer, Potix Corporation
Date
October 3, 2014
Version
ZK 7.0.3, dhtmlxGantt v.3.0.0 Standard

Introduction

dhtmlxGantt is an open source JavaScript Gantt chart that helps you visualize a project schedule in a nice-looking chart. It can show the dependencies between tasks as lines and allows you to set up different relationships between tasks (finish-to-start, start-to-start, end-to-end). This smalltalk will introduce how to integrate dhtmlxGantt into ZK web application.

Prerequisites

Since dhtmlxGantt is a javascript library, here I will use the technical described in the following articles to integrated with ZK:

It is suggested to read the above two articles to understand the life cycle of ZK client widget.

Step to integrate dhtmlxGantt

Create ZK Project and Prepare Necessary Libraries

1. Create a ZK project by maven, refer to our installation guide.

2. Download dhtmlxGantt library from its official site, here I download the version 3.0 standard edition (GNU GPL v2 license).

  • Extract the zip file and put dhtmlxgantt.js and dhtmlxgantt.css files under the project's "webapp/gantt" folder.

Load the library source and setup basic component

To load the dhtmlxgantt library, we can use script xml processing instruction like <?link?> and <?script?> on the zul page. From dhtmlxgantt online document, a simple div element is enough to initialize Gantt chart. Therefore, we add a div component on the zul page.

<?link rel="stylesheet" type="text/css" href="/gantt/dhtmlxgantt.css"?>
<?script type="text/javascript" src="/gantt/dhtmlxgantt.js"?>
<zk>
    <window title="Dhtml Gantt Integration" border="normal" vflex="1">
        <div id="gantt" />
    </window>
</zk>
  • Line 1,2: Load dhtmlxgantt library
  • Line 5: Add div component to generate Gantt Chart.

Prepare data for Gantt Chart

Normally, a Gantt Chart need GanttTask and GanttLink, and from dhtmlxGantt's online document, we can see all the properties for GanttTask and GanttLink. Threrfore, we need to create two Java Objects as follows:

public class GanttTask implements JSONAware {

    private long id;
    private Date startDate;
    private int duration;
    private String description;
    private double progress;
    private int sortOrder;
    private GanttTask parent;
    private boolean open;

    public String toJSONString() {
        DateFormat dft = new SimpleDateFormat("dd-MM-yyyy");
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("id", id);
        map.put("start_date", dft.format(startDate));
        map.put("duration", duration);
        map.put("text", description);
        map.put("progress", progress);
        map.put("sortorder", sortOrder);
        map.put("parent", parent == null ? 0 : parent.getId());
        map.put("open", open);
        return JSONObject.toJSONString(map);
    }

    /* getter and setter omitted */
}
public class GanttLink implements JSONAware {

    private long id;
    private GanttTask source;
    private GanttTask target;
    private int type;

    public String toJSONString() {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("id", id);
        map.put("source", source.getId());
        map.put("target", target.getId());
        map.put("type", type);
        return JSONObject.toJSONString(map);
    }

    /* getter and setter omitted */
}

As dhtmlxGantt support load JSON format objects, here we implement JSONAware.

Wrap dhtmlxgantt library with ZK Client Widget

Loading data from server to dhtmlxGantt library

Send dhtmlxGantt event back to server

Conclusion

Download

Comments



Copyright © Potix Corporation. This article is licensed under GNU Free Documentation License.