Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Developing U++ » UppHub » GraphDraw/GraphCtrl
Re: GraphDraw/GraphCtrl [message #54051 is a reply to message #53959] Sun, 24 May 2020 13:07 Go to previous messageGo to previous message
Pradip is currently offline  Pradip
Messages: 109
Registered: February 2019
Location: India
Experienced Member
Hello Didier,
Need some help. Please see my implementation of CustomData and CustomDataSource, similar to your demo:
namespace Upp {
namespace GraphDraw_ns {

class GanttBar : public CustomData {
private:
	int row_num;
	const S_ACTIVITIES* act;
	RectGraph bar;
//	TypeScreenCoord bar_thk = 5;

public:
	GanttBar(int row, const S_ACTIVITIES* ac) : row_num(row), act(ac) {
		bar.left = act->START_DATE_PL.Get();
		bar.right = act->END_DATE_PL.Get();
		bar.top = row_num + 0.25;
		bar.bottom = row_num + 0.75;
	};
	
	virtual ~GanttBar() {};
	
	virtual bool Intersects(const RectGraph& graphView) const {
		return graphView.Intersects(bar);
	};
	
	virtual bool Contains(const PointGraph& pt) const {
		return bar.Contains(pt);
	};
	
	virtual void PaintDataPoint(BufferPainter& dw, int scale,
		const CoordinateConverter* xCoordConv, const CoordinateConverter* yCoordConv) {
		
		const TypeScreenCoord left = xCoordConv->toScreen(bar.left);
		const TypeScreenCoord right = xCoordConv->toScreen(bar.right);
		const TypeScreenCoord bottom = yCoordConv->toScreen(bar.top);
		const TypeScreenCoord top = yCoordConv->toScreen(bar.bottom);
		Rect r(left,top, right, bottom);
		
		ChPaint(dw, r, Yellow());
	};
	
	String ToString() const {
		return Format("Row num=%i\tActivity ID=%i\tBar=%s", row_num, act->ACT_ID, bar.ToString());
	};
};

class GanttBarSeries : public CustomDataSource {
private:
	const ArrayCtrl* array;
	Array<GanttBar> gantt_bars;
	
public:
	GanttBarSeries() {};
	
	void Link(const ArrayCtrl* ar) {
		array = ar;
	};
	
	void RefreshBars() {
		if(!gantt_bars.IsEmpty()) gantt_bars.Clear();
		int n = array->GetCount();
		for(int i = 0; i < n; i++) {
			GanttBar gb(i, &ActById(array->Get(i, ACT_ID)));
			gantt_bars.Add(gb);
		}
		DUMP(gantt_bars);
	};
	
	virtual ~GanttBarSeries() {};
	virtual unsigned int GetCount() const {return gantt_bars.GetCount();};
	virtual const CustomData& Get(unsigned int dataIndex) const {return gantt_bars[dataIndex];};
	virtual CustomData& Get(unsigned int dataIndex) {return gantt_bars[dataIndex];};
};


};
};

You will see that I'm trying to link the Gantt with an ArrayCtrl. The DUMP is showing this:
gantt_bars = [Row num=0	Activity ID=10	Bar=[737830, 0.25] - [737947, 0.75] : (117, 0.5), Row num=1	Activity ID=28	Bar=[737832, 1.25] - [737854, 1.75] : (22, 0.5), Row num=2	Activity ID=29	Bar=[737854, 2.25] - [737856, 2.75] : (2, 0.5), Row num=3	Activity ID=118	Bar=[737856, 3.25] - [737898, 3.75] : (42, 0.5), Row num=4	Activity ID=126	Bar=[737856, 4.25] - [737859, 4.75] : (3, 0.5), Row num=5	Activity ID=127	Bar=[737859, 5.25] - [737862, 5.75] : (3, 0.5), Row num=6	Activity ID=128	Bar=[737862, 6.25] - [737867, 6.75] : (5, 0.5), Row num=7	Activity ID=129	Bar=[737867, 7.25] - [737870, 7.75] : (3, 0.5), Row num=8	Activity ID=130	Bar=[737870, 8.25] - [737881, 8.75] : (11, 0.5), Row num=9	Activity ID=131	Bar=[737870, 9.25] - [737873, 9.75] : (3, 0.5), Row num=10	Activity ID=133	Bar=[737873, 10.25] - [737875, 10.75] : (2, 0.5), Row num=11	Activity ID=134	Bar=[737875, 11.25] - [737879, 11.75] : (4, 0.5), Row num=12	Activity ID=388	Bar=[737879, 12.25] - [737881, 12.75] : (2, 0.5), Row num=13	Activity ID=136	Bar=[737881, 13.25] - [737886, 13.75] : (5, 0.5), Row num=14	Activity ID=137	Bar=[737881, 14.25] - [737883, 14.75] : (2, 0.5), Row num=15	Activity ID=138	Bar=[737883, 15.25] - [737884, 15.75] : (1, 0.5), Row num=16	Activity ID=139	Bar=[737883, 16.25] - [737890, 16.75] : (7, 0.5), Row num=17	Activity ID=140	Bar=[737890, 17.25] - [737895, 17.75] : (5, 0.5), Row num=18	Activity ID=141	Bar=[737895, 18.25] - [737898, 18.75] : (3, 0.5), Row num=19	Activity ID=121	Bar=[737898, 19.25] - [737931, 19.75] : (33, 0.5), Row num=20	Activity ID=143	Bar=[737898, 20.25] - [737901, 20.75] : (3, 0.5), Row num=21	Activity ID=144	Bar=[737901, 21.25] - [737909, 21.75] : (8, 0.5), Row num=22	Activity ID=145	Bar=[737909, 22.25] - [737916, 22.75] : (7, 0.5), Row num=23	Activity ID=148	Bar=[737916, 23.25] - [737924, 23.75] : (8, 0.5), Row num=24	Activity ID=149	Bar=[737924, 24.25] - [737926, 24.75] : (2, 0.5), Row num=25	Activity ID=150	Bar=[737926, 25.25] - [737931, 25.75] : (5, 0.5), Row num=26	Activity ID=123	Bar=[737931, 26.25] - [737939, 26.75] : (8, 0.5), Row num=27	Activity ID=124	Bar=[737939, 27.25] - [737946, 27.75] : (7, 0.5), Row num=28	Activity ID=125	Bar=[737946, 28.25] - [737947, 28.75] : (1, 0.5)]

So the bars are being made alright. In my application (TopWindow) header:
	GraphDraw_ns::GanttCtrl gantt;
	Upp::GraphDraw_ns::GanttBarSeries ganttBarSeries;

In TopWindow constructor:
	ganttBarSeries.Link(&array);
	gantt.AddCustomSeries(ganttBarSeries);

And in a callback which refreshes the linked array:
	ganttBarSeries.RefreshBars();
	gantt.Refresh();


However the gantt chart is always empty, doing FitToData() is also not showing any bar. What am I missing here?


Regards,
Pradip
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message icon14.gif
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message icon14.gif
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Anboto/Surface updated
Next Topic: Added NetCDF library
Goto Forum:
  


Current Time: Sun Apr 28 17:56:26 CEST 2024

Total time taken to generate the page: 0.04816 seconds