use of io.jmix.charts.model.period.PeriodSelector in project jmix by jmix-framework.
the class StockChartLoader method loadPeriodSelector.
protected void loadPeriodSelector(StockChart chart, Element element) {
Element periodSelectorElement = element.element("periodSelector");
if (periodSelectorElement != null) {
PeriodSelector periodSelector = new PeriodSelector();
loadPeriods(periodSelector, periodSelectorElement);
String dateFormat = periodSelectorElement.attributeValue("dateFormat");
if (StringUtils.isNotEmpty(dateFormat)) {
periodSelector.setDateFormat(dateFormat);
}
String fromText = periodSelectorElement.attributeValue("fromText");
if (StringUtils.isNotEmpty(fromText)) {
periodSelector.setFromText(fromText);
}
String hideOutOfScopePeriods = periodSelectorElement.attributeValue("hideOutOfScopePeriods");
if (StringUtils.isNotEmpty(hideOutOfScopePeriods)) {
periodSelector.setHideOutOfScopePeriods(Boolean.valueOf(hideOutOfScopePeriods));
}
String inputFieldsEnabled = periodSelectorElement.attributeValue("inputFieldsEnabled");
if (StringUtils.isNotEmpty(inputFieldsEnabled)) {
periodSelector.setInputFieldsEnabled(Boolean.valueOf(inputFieldsEnabled));
}
String inputFieldWidth = periodSelectorElement.attributeValue("inputFieldWidth");
if (StringUtils.isNotEmpty(inputFieldWidth)) {
periodSelector.setInputFieldWidth(Integer.valueOf(inputFieldWidth));
}
String periodsText = periodSelectorElement.attributeValue("periodsText");
if (StringUtils.isNotEmpty(periodsText)) {
periodSelector.setPeriodsText(periodsText);
}
String position = periodSelectorElement.attributeValue("position");
if (StringUtils.isNotEmpty(position)) {
periodSelector.setPosition(Position.valueOf(position));
}
String selectFromStart = periodSelectorElement.attributeValue("selectFromStart");
if (StringUtils.isNotEmpty(selectFromStart)) {
periodSelector.setSelectFromStart(Boolean.valueOf(selectFromStart));
}
String toText = periodSelectorElement.attributeValue("toText");
if (StringUtils.isNotEmpty(toText)) {
periodSelector.setToText(toText);
}
String width = periodSelectorElement.attributeValue("width");
if (StringUtils.isNotEmpty(width)) {
periodSelector.setWidth(Integer.valueOf(width));
}
chart.setPeriodSelector(periodSelector);
}
}
use of io.jmix.charts.model.period.PeriodSelector in project jmix by jmix-framework.
the class StockChartSerializationTest method testStockChartWithIntradayDatas.
@Test
public void testStockChartWithIntradayDatas() throws ParseException, IOException, URISyntaxException {
ListDataProvider chartData = new ListDataProvider();
populateStockDatasourceWithTime(chartData, 40L, 100L);
StockChartGroup stockChart = new StockChartGroup().setCategoryAxesSettings(new CategoryAxesSettings().setMinPeriod("mm")).addDataSets(new DataSet().setId("dataSet").setDataProvider(chartData).setColor(Color.valueOf("#b0de09")).setCategoryField("date").addFieldMappings(new FieldMapping().setFromField("value").setToField("value"), new FieldMapping().setFromField("volume").setToField("volume"))).addPanels(new StockPanel().setId("p1").setTitle("Value").setPercentHeight(70).setShowCategoryAxis(false).addStockGraphs(new StockGraph().setId("sg4").setValueField("value").setLineThickness(2).setType(GraphType.SMOOTHED_LINE).setBullet(BulletType.ROUND)).setStockLegend(new StockLegend().setValueTextRegular(" ").setMarkerType(MarkerType.NONE)), new StockPanel().setId("p2").setTitle("Volume").setPercentHeight(30).addStockGraphs(new StockGraph().setValueField("volume").setCornerRadiusTop(2).setType(GraphType.COLUMN).setFillAlphas(1.0)).setStockLegend(new StockLegend().setValueTextRegular(" ").setMarkerType(MarkerType.NONE))).setChartScrollbarSettings(new ChartScrollbarSettings().setGraph("sg4").setUsePeriod("10mm").setPosition(ChartScrollbarPosition.TOP)).setChartCursorSettings(new ChartCursorSettings().setValueLineBalloonEnabled(true)).setPeriodSelector(new PeriodSelector().setPosition(Position.TOP).setInputFieldWidth(150).addPeriods(new Period().setPeriod(PeriodType.HOURS).setCount(1).setLabel("1 hour").setSelected(true), new Period().setPeriod(PeriodType.HOURS).setCount(2).setLabel("2 hours"), new Period().setPeriod(PeriodType.HOURS).setCount(5).setLabel("5 hours"), new Period().setPeriod(PeriodType.HOURS).setCount(12).setLabel("12 hours"), new Period().setPeriod(PeriodType.MAX).setLabel("MAX"))).setPanelsSettings(new PanelsSettings().setUsePrefixes(true)).setExport(new Export().setPosition(ExportPosition.BOTTOM_RIGHT));
StockChartSerializer serializer = getTestSerializer();
String json = serializer.serialize(stockChart);
String expected = readFile("StockChartWithIntradayDatas.json");
assertEquals(prettyJson(expected), prettyJson(json));
}
use of io.jmix.charts.model.period.PeriodSelector in project jmix by jmix-framework.
the class StockChartSerializationTest method testStockChartWithMultipleDataSets.
@Test
public void testStockChartWithMultipleDataSets() throws ParseException, IOException, URISyntaxException {
ListDataProvider chartData1 = new ListDataProvider();
populateDataProvider(chartData1, 40L, 100L, 1000L, 500L, 2L);
ListDataProvider chartData2 = new ListDataProvider();
populateDataProvider(chartData2, 100L, 200L, 1000L, 600L, 2L);
ListDataProvider chartData3 = new ListDataProvider();
populateDataProvider(chartData3, 100L, 200L, 1000L, 600L, 2L);
ListDataProvider chartData4 = new ListDataProvider();
populateDataProvider(chartData4, 100L, 200L, 100L, 600L, 1L);
StockChartGroup stockChart = new StockChartGroup().addDataSets(new DataSet().setId("dataSet1").setTitle("first data set").setDataProvider(chartData1).setCategoryField("date").addFieldMappings(new FieldMapping().setFromField("value").setToField("value"), new FieldMapping().setFromField("volume").setToField("volume")), new DataSet().setId("dataSet2").setTitle("second data set").setDataProvider(chartData2).setCategoryField("date").addFieldMappings(new FieldMapping().setFromField("value").setToField("value"), new FieldMapping().setFromField("volume").setToField("volume")), new DataSet().setId("dataSet3").setTitle("third data set").setDataProvider(chartData3).setCategoryField("date").addFieldMappings(new FieldMapping().setFromField("value").setToField("value"), new FieldMapping().setFromField("volume").setToField("volume")), new DataSet().setId("dataSet4").setTitle("forth data set").setDataProvider(chartData4).setCategoryField("date").addFieldMappings(new FieldMapping().setFromField("value").setToField("value"), new FieldMapping().setFromField("volume").setToField("volume"))).addPanels(new StockPanel().setId("panel1").setShowCategoryAxis(false).setTitle("Value").setPercentHeight(70).addStockGraphs(new StockGraph().setId("sg1").setValueField("value").setComparable(true).setCompareField("value").setBalloonText("[[title]]:<b>[[value]]</b>").setCompareGraphBalloonText("[[title]]:<b>[[value]]</b>")).setStockLegend(new StockLegend().setPeriodValueTextComparing("[[percents.value.close]]%").setPeriodValueTextRegular("[[value.close]]")), new StockPanel().setId("panel2").setTitle("Volume").setPercentHeight(30).addStockGraphs(new StockGraph().setValueField("volume").setType(GraphType.COLUMN).setShowBalloon(false).setFillAlphas(1.0)).setStockLegend(new StockLegend().setPeriodValueTextRegular("[[value.close]]"))).setChartScrollbarSettings(new ChartScrollbarSettings().setGraph("sg1")).setChartCursorSettings(new ChartCursorSettings().setValueBalloonsEnabled(true).setValueLineAlpha(0.5).setCursorAlpha(0.1).setValueBalloonsEnabled(true).setValueLineEnabled(true).setFullWidth(true)).setPeriodSelector(new PeriodSelector().addPeriods(new Period().setPeriod(PeriodType.MONTHS).setSelected(true).setCount(1).setLabel("1 month"), new Period().setPeriod(PeriodType.YEARS).setCount(1).setLabel("1 year"), new Period().setPeriod(PeriodType.YTD).setLabel("YTD"), new Period().setPeriod(PeriodType.MAX).setLabel("MAX"))).setDataSetSelector(new DataSetSelector().setPosition(Position.LEFT)).setExport(new Export());
StockChartSerializer serializer = getTestSerializer();
String json = serializer.serialize(stockChart);
String expected = readFile("StockChartWithMultipleDataSets.json");
assertEquals(prettyJson(expected), prettyJson(json));
}
Aggregations