RadiantQ jQuery Gantt Package
How to render the multiple react gantt component in a single page?
Previous Topic  Next Topic 

Import the react libraries and the "GanttControl and FlexyGantt" component from its desired path and render both components into the MultiGantt Component like below,


import * as React from "react";

import * as ReactDOM from "react-dom";

import GanttControl from '../RQ_Components/GanttControl.jsx';

import FlexyGantt from '../RQ_Components/FlexyGantt.jsx';


// To get the name from the bounded list .

// Converter should be define globally using window

function initConverters() {

    window.nameConverter = function (flexyNodeData, value) {

        var data;

        // The grid calls this converter with flexyNodeData as a arg.

        if (flexyNodeData.Data)

            data = flexyNodeData.Data();

        // The grid calls this converter with flexyNodeData as a datacontext.

        else

            data = flexyNodeData;

        if (value == undefined) {

            if (data.Resource && data.Resource.ResourceName_M != undefined)

                return data.Resource.ResourceName_M();

            else

                return data["ActivityName"];

        }

        else {

            if (data.Resource && data.Resource.ResourceName_M != undefined)

                data.Resource.ResourceName_M(value);

            else

                data["ActivityName"] = value;

        }

        return;

    };


    // to get the short time format.

    var toolTipDateformat = Date.CultureInfo.formatPatterns.shortDate + '  ' + "HH:mm:ss";

    window.startTimeTooltipConverter = function (data) {

        if (data["PStartTime"])

            return data["PStartTime"].toString(toolTipDateformat);

        else if (data["StartTime"])

            return data["StartTime"].toString(toolTipDateformat);


        return null;

    }

    window.endTimeTooltipConverter = function (data) {

        if (data["PEndTime"])

            return data["PEndTime"].toString(toolTipDateformat);

        else if (data["EndTime"])

            return data["EndTime"].toString(toolTipDateformat);


        return null;

    }

}


// This samples renders the multiple react components in single page.

class MultiGantt extends React.Component {

     constructor() {

         super();

         this.anchorTime = new Date("2014-02-01T00:00:00-00:00");

         initConverters();

         this.columns = [{

            field: "Name",

            title: "Name",

            editor: RadiantQ.Default.Template.FlexyGanttExpandableTextBoxEditor("nameConverter"),

            template: RadiantQ.Default.Template.FlexyGanttExpandableTextBlockTemplate("nameConverter")

        }];


        this.TaskStartTimeProperty = "StartTime";

        this.ParentTaskStartTimeProperty = "PStartTime";

        this.TaskEndTimeProperty = "EndTime";

        this.ParentTaskEndTimeProperty = "PEndTime";

        this.TasksListProperty = "Tasks";

        this.pTemplate = "<div  class='rq-gc-parentBar'><div  class='rq-taskbar-dragThumb'></div><div class='rq-taskbar-resizeThumb'></div><div class='start-resizeThumb'></div><div class='rq-gc-parentBar-leftCue'></div><div class='rq-gc-parentBar-middle'></div><div class='rq-gc-parentBar-rightCue'></div></div>";

        // The template that defines the look for the task bars. "rq-gc-taskbar" is a built-in style that defines a default look for the task bars.

        this.tTemplate = "<div  class='rq-gc-taskbar'><div  class='rq-taskbar-dragThumb'></div><div class='rq-taskbar-resizeThumb'></div><div class='start-resizeThumb'></div></div>";

        this. TaskTooltipTemplate = "<div class='TaskTooltip'><div align='center'>Name: ${nameConverter(data)}</div><div><span>StartTime : ${startTimeTooltipConverter(data) }</span><br/><span>EndTime : ${endTimeTooltipConverter(data)}</span></div></div>";

    }

     GanttChartTemplateApplied(sender, args) {

        var $GanttChart = args.element;

        $GanttChart.GanttChart({ AnchorTime: this.anchorTime });

    }

     FlexyGanttChartTemplateApplied(sender, args) {

        var $FlexyGanttChart = args.element;

        $FlexyGanttChart.GanttChart({ AnchorTime: this.anchorTime });

     }

     render() {

        

        return (

          

               <div style={{ height: '600px' }}>        

                       <div style={{ height: '300px' }}>

                             <GanttControl

                               Url= './DataSource/GanttControlSkeleton.json'

                               ProjectStartDate={this.anchorTime}

                               TablePanelWidth={this.TablePanelWidth}

                               GanttChartTemplateApplied={(sender, args) => this.GanttChartTemplateApplied(sender, args)}

                           />

                     </div>

                      <div style={{ height: '250px' }}>

                             <FlexyGantt

                                Url='./DataSource/FlexyGanttSkeleton.json'

                               columns={this.columns}

                               resolverFunction={(data) => this.resolverFunction(data)}

                               GanttChartTemplateApplied={(sender, args) => this.FlexyGanttChartTemplateApplied(sender, args)}

                               TaskStartTimeProperty={this.TaskStartTimeProperty}

                               ParentTaskStartTimeProperty={this.ParentTaskStartTimeProperty}

                               TaskEndTimeProperty={this.TaskEndTimeProperty}

                               ParentTaskEndTimeProperty={this.ParentTaskEndTimeProperty}

                               TasksListProperty={this.TasksListProperty}

                               ParentTaskItemTemplate={this.pTemplate}

                               TaskItemTemplate={this.tTemplate}

                               TablePanelWidth={this.TablePanelWidth}

                               TaskTooltipTemplate={this.TaskTooltipTemplate}

                                       />

                               </div>

                       </div>

           );

    }

}

ReactDOM.render(<MultiGantt />, document.getElementById('container'));


                                                                

This is illustrated in this samples:


In React                : .\Samples\ResourceLoadView\ResourceLoadView.jsx


© RadiantQ 2022. All Rights Reserved.