List of usage examples for org.jfree.data.gantt TaskSeries TaskSeries
public TaskSeries(String name)
From source file:pisco.batch.visu.BatchingChartFactory.java
public static XYDataset createLatenessDataset(Batch[] batches) { final TaskSeriesCollection coll = new TaskSeriesCollection(); for (int i = 0; i < batches.length; i++) { TaskSeries series = new TaskSeries(String.valueOf(i)); final int dd = batches[i].getDueDate(); final int compl = batches[i].getCompletionTime(); TimePeriod p = dd < compl ? new SimpleTimePeriod(dd, compl) : new SimpleTimePeriod(compl, dd); series.add(new Task("B" + i, p)); coll.add(series);/*from ww w . jav a 2 s. c om*/ } final XYTaskDataset dataset = new XYTaskDataset(coll); dataset.setTransposed(true); return dataset; }
From source file:oscar.oscarEncounter.oscarMeasurements.pageUtil.MeasurementGraphAction2.java
private static XYTaskDataset getDrugDataSet(String demographic, String[] dins) { TaskSeriesCollection datasetDrug = new TaskSeriesCollection(); oscar.oscarRx.data.RxPrescriptionData prescriptData = new oscar.oscarRx.data.RxPrescriptionData(); for (String din : dins) { oscar.oscarRx.data.RxPrescriptionData.Prescription[] arr = prescriptData .getPrescriptionScriptsByPatientRegionalIdentifier(Integer.parseInt(demographic), din); TaskSeries ts = new TaskSeries(arr[0].getBrandName()); for (oscar.oscarRx.data.RxPrescriptionData.Prescription pres : arr) { ts.add(new Task(pres.getBrandName(), pres.getRxDate(), pres.getEndDate())); }/*from w ww . j av a2s . c o m*/ datasetDrug.add(ts); } XYTaskDataset dataset = new XYTaskDataset(datasetDrug); dataset.setTransposed(true); dataset.setSeriesWidth(0.6); return dataset; }
From source file:com.opendoorlogistics.components.gantt.GanttChartComponent.java
@Override public void execute(final ComponentExecutionApi api, int mode, Object configuration, ODLDatastore<? extends ODLTable> ioDs, ODLDatastoreAlterable<? extends ODLTableAlterable> outputDs) { // Get items and sort by resource then date final StringConventions sc = api.getApi().stringConventions(); List<GanttItem> items = GanttItem.beanMapping.getTableMapping(0).readObjectsFromTable(ioDs.getTableAt(0)); // Rounding doubles to longs can create small errors where a start time is 1 millisecond after an end. // Set all start times to be <= end time for (GanttItem item : items) { if (item.getStart() == null || item.getEnd() == null) { throw new RuntimeException("Found Gannt item with null start or end time."); }/*from w w w. jav a 2 s. c om*/ if (item.getStart().getValue() > item.getEnd().getValue()) { item.setStart(item.getEnd()); } } Collections.sort(items, new Comparator<GanttItem>() { @Override public int compare(GanttItem o1, GanttItem o2) { int diff = sc.compareStandardised(o1.getResourceId(), o2.getResourceId()); if (diff == 0) { diff = o1.getStart().compareTo(o2.getStart()); } if (diff == 0) { diff = o1.getEnd().compareTo(o2.getEnd()); } if (diff == 0) { diff = sc.compareStandardised(o1.getActivityId(), o2.getActivityId()); } if (diff == 0) { diff = Colours.compare(o1.getColor(), o2.getColor()); } return diff; } }); // Filter any zero duration items Iterator<GanttItem> it = items.iterator(); while (it.hasNext()) { GanttItem item = it.next(); if (item.getStart().compareTo(item.getEnd()) == 0) { it.remove(); } } // Get average colour for each activity type Map<String, CalculateAverageColour> calcColourMap = api.getApi().stringConventions() .createStandardisedMap(); for (GanttItem item : items) { CalculateAverageColour calc = calcColourMap.get(item.getActivityId()); if (calc == null) { calc = new CalculateAverageColour(); calcColourMap.put(item.getActivityId(), calc); } calc.add(item.getColor()); } // Put into colour map Map<String, Color> colourMap = api.getApi().stringConventions().createStandardisedMap(); for (Map.Entry<String, CalculateAverageColour> entry : calcColourMap.entrySet()) { colourMap.put(entry.getKey(), entry.getValue().getAverage()); } // Split items by resource ArrayList<ArrayList<GanttItem>> splitByResource = new ArrayList<>(); ArrayList<GanttItem> current = null; for (GanttItem item : items) { if (current == null || sc.compareStandardised(current.get(0).getResourceId(), item.getResourceId()) != 0) { current = new ArrayList<>(); splitByResource.add(current); } current.add(item); } // put into jfreechart's task data structure TaskSeries ts = new TaskSeries("Resources"); for (ArrayList<GanttItem> resource : splitByResource) { // get earliest and latest time (last time may not be in the last item) ODLTime earliest = resource.get(0).getStart(); ODLTime latest = null; for (GanttItem item : resource) { if (latest == null || latest.compareTo(item.getEnd()) < 0) { latest = item.getEnd(); } } Task task = new Task(resource.get(0).getResourceId(), new Date(earliest.getTotalMilliseconds()), new Date(latest.getTotalMilliseconds())); // add all items as subtasks for (GanttItem item : resource) { task.addSubtask(new MySubtask(item, new Date(item.getStart().getTotalMilliseconds()), new Date(item.getEnd().getTotalMilliseconds()))); } ts.add(task); } TaskSeriesCollection collection = new TaskSeriesCollection(); collection.add(ts); // Create the plot CategoryAxis categoryAxis = new CategoryAxis(null); DateAxis dateAxis = new DateAxis("Time"); CategoryItemRenderer renderer = new MyRenderer(collection, colourMap); final CategoryPlot plot = new CategoryPlot(collection, categoryAxis, dateAxis, renderer); plot.setOrientation(PlotOrientation.HORIZONTAL); plot.getDomainAxis().setLabel(null); ((DateAxis) plot.getRangeAxis()).setDateFormatOverride(new DateFormat() { @Override public Date parse(String source, ParsePosition pos) { // TODO Auto-generated method stub return null; } @Override public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) { toAppendTo.append(new ODLTime(date.getTime()).toString()); return toAppendTo; } }); // Create the chart and apply the standard theme without shadows to it api.submitControlLauncher(new ControlLauncherCallback() { @Override public void launchControls(ComponentControlLauncherApi launcherApi) { JFreeChart chart = new JFreeChart(null, JFreeChart.DEFAULT_TITLE_FONT, plot, true); StandardChartTheme theme = new StandardChartTheme("standard theme", false); theme.setBarPainter(new StandardBarPainter()); theme.apply(chart); class MyPanel extends ChartPanel implements Disposable { public MyPanel(JFreeChart chart) { super(chart); } @Override public void dispose() { // TODO Auto-generated method stub } } MyPanel chartPanel = new MyPanel(chart); launcherApi.registerPanel("Resource Gantt", null, chartPanel, true); } }); }
From source file:de.fhbingen.wbs.wpOverview.tabs.APCalendarPanel.java
/** * Convert work packages to tasks.//from www .jav a 2s . co m * @param userWp * list with work packages. * @return IntervalCategoryDataset: tasks of the work packages. */ public final IntervalCategoryDataset createDataset(final List<Workpackage> userWp) { final TaskSeries s1 = new TaskSeries(LocalizedStrings.getGeneralStrings().overview()); colorList = new ArrayList<Integer>(); for (Workpackage actualPackage : userWp) { if (actualPackage.getEndDateCalc() != null && actualPackage.getStartDateCalc() != null) { if (actualPackage.getlastRelevantIndex() <= showLevels) { Date endDateCalc = null; Date start = null; endDateCalc = actualPackage.getEndDateCalc(); start = actualPackage.getStartDateCalc(); String indent = ""; for (int i = 0; i < actualPackage.getlastRelevantIndex(); i++) { indent += " "; } if (!endDateCalc.before(start)) { Task t = new Task(indent + actualPackage.toString(), new SimpleTimePeriod(start, endDateCalc)); t.setPercentComplete(0.01 * WpManager.calcPercentComplete(actualPackage.getBac(), actualPackage.getEtc(), actualPackage.getAc())); s1.add(t); colorList.add(actualPackage.getlastRelevantIndex()); } } } } final TaskSeriesCollection collection = new TaskSeriesCollection(); collection.add(s1); return collection; }
From source file:org.jfree.data.gantt.TaskSeriesCollectionTest.java
/** * A check for a null task duration./*from ww w.ja va2 s.c o m*/ */ @Test public void testGetStartValue3() { TaskSeriesCollection c = new TaskSeriesCollection(); TaskSeries s = new TaskSeries("Series 1"); s.add(new Task("Task with null duration", null)); c.add(s); Number millis = c.getStartValue("Series 1", "Task with null duration"); assertTrue(millis == null); }
From source file:de.fhbingen.wbs.wpOverview.tabs.AvailabilityGraph.java
/** * Creates a data set.//from www . j a va2s. com * @return The created data set */ public final IntervalCategoryDataset createDataset() { if (WPOverview.getUser().getProjLeiter()) { workers = WorkerService.getRealWorkers(); } else { workers = new ArrayList<Worker>(); Worker user = WPOverview.getUser(); workers.add(new Worker(user.getLogin(), user.getVorname(), user.getName(), 1, 100)); } gui.pnlGraph.setMinimumDrawHeight(100 + 50 * workers.size() + 1); gui.pnlGraph.setMaximumDrawHeight(100 + 50 * workers.size() + 1); gui.pnlGraph.setPreferredSize( new Dimension((int) gui.pnlGraph.getPreferredSize().getWidth(), 100 + 50 * workers.size() + 1)); final TaskSeries stdTasks = new TaskSeries(LocalizedStrings.getGeneralStrings().availability()); final TaskSeries manualTasks = new TaskSeries(LocalizedStrings.getGeneralStrings().available()); final TaskSeries notTasks = new TaskSeries(LocalizedStrings.getGeneralStrings().notAvailable()); TreeSet<Availability> projectAvailability = CalendarService .getRealProjectAvailability(actualStart.getTime(), actualEnd.getTime()); stdTasks.add(createProjectTask(projectAvailability)); if (showManualAv) { notTasks.add(createProjectTask(CalendarService.getProjectAvailability(false))); manualTasks.add(createProjectTask(CalendarService.getProjectAvailability(true))); } for (Worker worker : workers) { stdTasks.add(createWorkerTask(worker, CalendarService.getRealWorkerAvailability(worker.getId(), actualStart.getTime(), actualEnd.getTime()))); if (showManualAv) { notTasks.add( createWorkerTask(worker, CalendarService.getAllWorkerAvailability(worker.getId(), false))); manualTasks.add( createWorkerTask(worker, CalendarService.getAllWorkerAvailability(worker.getId(), true))); } } workers.add(0, AvailabilityGraph.PROJECT_WORKER); final TaskSeriesCollection collection = new TaskSeriesCollection(); collection.add(stdTasks); if (showManualAv) { collection.add(manualTasks); collection.add(notTasks); } return collection; }
From source file:org.jfree.data.gantt.TaskSeriesCollectionTest.java
/** * A check for a null task duration./*from w ww .jav a2 s .c o m*/ */ @Test public void testGetEndValue3() { TaskSeriesCollection c = new TaskSeriesCollection(); TaskSeries s = new TaskSeries("Series 1"); s.add(new Task("Task with null duration", null)); c.add(s); Number millis = c.getEndValue("Series 1", "Task with null duration"); assertTrue(millis == null); }
From source file:org.jfree.data.gantt.TaskSeriesCollectionTest.java
/** * Confirm that the equals method can distinguish all the required fields. *//*w w w .ja va 2 s.c o m*/ @Test public void testEquals() { TaskSeries s1 = new TaskSeries("S"); s1.add(new Task("T1", new Date(1), new Date(2))); s1.add(new Task("T2", new Date(11), new Date(22))); TaskSeries s2 = new TaskSeries("S"); s2.add(new Task("T1", new Date(1), new Date(2))); s2.add(new Task("T2", new Date(11), new Date(22))); TaskSeriesCollection c1 = new TaskSeriesCollection(); c1.add(s1); c1.add(s2); TaskSeries s1b = new TaskSeries("S"); s1b.add(new Task("T1", new Date(1), new Date(2))); s1b.add(new Task("T2", new Date(11), new Date(22))); TaskSeries s2b = new TaskSeries("S"); s2b.add(new Task("T1", new Date(1), new Date(2))); s2b.add(new Task("T2", new Date(11), new Date(22))); TaskSeriesCollection c2 = new TaskSeriesCollection(); c2.add(s1b); c2.add(s2b); assertTrue(c1.equals(c2)); assertTrue(c2.equals(c1)); }
From source file:org.jfree.data.gantt.TaskSeriesCollectionTest.java
/** * Confirm that cloning works./* w ww .j a v a2s . c o m*/ */ @Test public void testCloning() throws CloneNotSupportedException { TaskSeries s1 = new TaskSeries("S1"); s1.add(new Task("T1", new Date(1), new Date(2))); s1.add(new Task("T2", new Date(11), new Date(22))); TaskSeries s2 = new TaskSeries("S2"); s2.add(new Task("T1", new Date(33), new Date(44))); s2.add(new Task("T2", new Date(55), new Date(66))); TaskSeriesCollection c1 = new TaskSeriesCollection(); c1.add(s1); c1.add(s2); TaskSeriesCollection c2 = (TaskSeriesCollection) c1.clone(); assertTrue(c1 != c2); assertTrue(c1.getClass() == c2.getClass()); assertTrue(c1.equals(c2)); // basic check for independence s1.add(new Task("T3", new Date(21), new Date(33))); assertFalse(c1.equals(c2)); TaskSeries series = c2.getSeries("S1"); series.add(new Task("T3", new Date(21), new Date(33))); assertTrue(c1.equals(c2)); }
From source file:oscar.oscarEncounter.oscarMeasurements.pageUtil.MeasurementGraphAction2.java
JFreeChart rxAndLabChart(String demographicNo, String typeIdName, String typeIdName2, String patientName, String chartTitle) {/* ww w .j a v a 2 s . c om*/ org.jfree.data.time.TimeSeriesCollection dataset = new org.jfree.data.time.TimeSeriesCollection(); ArrayList<EctMeasurementsDataBean> list = getList(demographicNo, typeIdName); String typeYAxisName = ""; if (typeIdName.equals("BP")) { log.debug("Using BP LOGIC FOR type 1 "); EctMeasurementsDataBean sampleLine = list.get(0); typeYAxisName = sampleLine.getTypeDescription(); TimeSeries systolic = new TimeSeries("Systolic", Day.class); TimeSeries diastolic = new TimeSeries("Diastolic", Day.class); for (EctMeasurementsDataBean mdb : list) { // dataVector) { String[] str = mdb.getDataField().split("/"); systolic.addOrUpdate(new Day(mdb.getDateObservedAsDate()), Double.parseDouble(str[0])); diastolic.addOrUpdate(new Day(mdb.getDateObservedAsDate()), Double.parseDouble(str[1])); } dataset.addSeries(diastolic); dataset.addSeries(systolic); } else { log.debug("Not Using BP LOGIC FOR type 1 "); // get the name from the TimeSeries EctMeasurementsDataBean sampleLine = list.get(0); String typeLegendName = sampleLine.getTypeDisplayName(); typeYAxisName = sampleLine.getTypeDescription(); // this should be the type of measurement TimeSeries newSeries = new TimeSeries(typeLegendName, Day.class); for (EctMeasurementsDataBean mdb : list) { //dataVector) { newSeries.addOrUpdate(new Day(mdb.getDateObservedAsDate()), Double.parseDouble(mdb.getDataField())); } dataset.addSeries(newSeries); } JFreeChart chart = ChartFactory.createTimeSeriesChart(chartTitle, "Days", typeYAxisName, dataset, true, true, true); chart.setBackgroundPaint(Color.decode("#ccccff")); XYPlot plot = chart.getXYPlot(); plot.getDomainAxis().setAutoRange(true); log.debug("LEN " + plot.getDomainAxis().getLowerBound() + " ddd " + plot.getDomainAxis().getUpperMargin() + " eee " + plot.getDomainAxis().getLowerMargin()); //plot.getDomainAxis().setUpperMargin(plot.getDomainAxis().getUpperMargin()*6); //plot.getDomainAxis().setLowerMargin(plot.getDomainAxis().getLowerMargin()*6); // plot.getRangeAxis().setUpperMargin(plot.getRangeAxis().getUpperMargin()*1.7); plot.getDomainAxis().setUpperMargin(0.9); plot.getDomainAxis().setLowerMargin(0.9); plot.getRangeAxis().setUpperMargin(plot.getRangeAxis().getUpperMargin() * 4); ValueAxis va = plot.getRangeAxis(); va.setAutoRange(true); XYItemRenderer renderer = plot.getRenderer(); //DateFormat.getInstance() XYItemLabelGenerator generator = new StandardXYItemLabelGenerator("{1} \n {2}", new SimpleDateFormat("yyyy.MM.dd"), new DecimalFormat("0.00")); renderer.setSeriesItemLabelGenerator(0, generator);//setLabelGenerator(generator); renderer.setBaseItemLabelsVisible(true); plot.setBackgroundPaint(Color.WHITE); plot.setDomainCrosshairPaint(Color.GRAY); if (renderer instanceof XYLineAndShapeRenderer) { XYLineAndShapeRenderer rend = (XYLineAndShapeRenderer) renderer; rend.setBaseShapesVisible(true); rend.setBaseShapesFilled(true); } plot.setRenderer(renderer); /////// TaskSeriesCollection datasetDrug = new TaskSeriesCollection(); TaskSeries s1 = new TaskSeries("WARFARIN"); TaskSeries s2 = new TaskSeries("ALLOPUINOL"); TaskSeries s3 = new TaskSeries("LIPITOR"); s1.add(new Task("WARFARIN", UtilDateUtilities.StringToDate("2007-01-01"), UtilDateUtilities.StringToDate("2009-01-01"))); s2.add(new Task("ALLOPUINOL", UtilDateUtilities.StringToDate("2008-01-01"), new Date())); s3.add(new Task("LIPITOR", UtilDateUtilities.StringToDate("2007-01-01"), UtilDateUtilities.StringToDate("2008-01-01"))); datasetDrug.add(s1); datasetDrug.add(s2); datasetDrug.add(s3); XYTaskDataset dataset2 = new XYTaskDataset(datasetDrug); dataset2.setTransposed(true); dataset2.setSeriesWidth(0.6); DateAxis xAxis = new DateAxis("Date/Time"); SymbolAxis yAxis = new SymbolAxis("Meds", new String[] { "WARFARIN", "ALLOPURINOL", "LIPITOR" }); yAxis.setGridBandsVisible(false); XYBarRenderer xyrenderer = new XYBarRenderer(); xyrenderer.setUseYInterval(true); xyrenderer.setBarPainter(new StandardXYBarPainter()); xyrenderer.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator("HAPPY{1} \n {2}", new SimpleDateFormat("yyyy.MM.dd"), new DecimalFormat("0.00"))); XYPlot xyplot = new XYPlot(dataset2, xAxis, yAxis, xyrenderer); xyplot.getDomainAxis().setUpperMargin(0.9); xyplot.getDomainAxis().setLowerMargin(0.9); CombinedDomainXYPlot cplot = new CombinedDomainXYPlot(new DateAxis("Date/Time")); cplot.add(plot); cplot.add(xyplot); /////// chart = new JFreeChart("MED + LAB CHART", cplot); chart.setBackgroundPaint(Color.white); return chart; }