@Override public List<String> getAdditionalFields() { return getModel().getAdditionalFields(); }
@Override public DataSet getDataSet(String id) { return getModel().getDataSet(id); }
@Override public List<DataSet> getDataSets() { return getModel().getDataSets(); }
protected void setupPaths(StockChartGroup chart) { if (chart.getPath() != null && !chart.getPath().isEmpty()) { return; } if (chart.getPath() == null || chart.getPath().isEmpty()) { EnhancedUI ui = ((EnhancedUI) getUI()); String amchartsPath = ui.getWebJarPath("amcharts", "amcharts.js"); String path = ui.translateToWebPath(amchartsPath.substring(0, amchartsPath.lastIndexOf("/"))) + "/"; chart.setPath(path); } }
@Override public String serialize(StockChartGroup chart) { JsonElement jsonTree = chartGson.toJsonTree(chart); if (CollectionUtils.isNotEmpty(chart.getDataSets())) { ChartJsonSerializationContext context = createChartJsonSerializationContext(chart); JsonArray jsonDataSets = (JsonArray) jsonTree.getAsJsonObject().get("dataSets"); for (JsonElement dataSetElement : jsonDataSets) { JsonObject dataSetObject = (JsonObject) dataSetElement; String dataSetId = dataSetObject.get("id").getAsString(); DataSet dataSet = chart.getDataSet(dataSetId); if (dataSet != null && dataSet.getDataProvider() != null) { JsonArray dataProviderElement = itemsSerializer.serialize(dataSet.getDataProvider().getItems(), context); // Prevent errors on client for empty data provider if (dataProviderElement.size() == 0) { dataProviderElement.add(new JsonObject()); } dataSetObject.add("dataProvider", dataProviderElement); } } } return chartGson.toJson(jsonTree); }
@Override public StockChart setPath(String path) { getModel().setPath(path); return this; }
@Override public String getPath() { return getModel().getPath(); }
public void drawChart(StockChartGroup chart) { this.chart = chart; chart.addDataSetDataProviderChangeListener(event -> { forceStateChange(); forgetChangedItems(); }); chart.addDataSetsChangeListener(event -> { forceStateChange(); forgetChangedItems(); }); forceStateChange(); }
protected StockChartGroup createConfiguration() { return new StockChartGroup(); }
@Override public StockChart addColors(Color... colors) { getModel().addColors(colors); return this; }
@Override public StockChart addComparedDataSets(String... comparedDataSets) { getModel().addComparedDataSets(comparedDataSets); return this; }
@Override public StockChart addDataSets(DataSet... dataSets) { getModel().addDataSets(dataSets); return this; }
protected StockEvent getStockEvent(String stockEventId) { UUID eventId = UUID.fromString(stockEventId); for (DataSet dataSet : component.getChart().getDataSets()) { for (StockEvent stockEvent : dataSet.getStockEvents()) { if (stockEvent.getId().equals(eventId)) { return stockEvent; } } } return null; }
@Override public List<String> getWiredFields() { List<String> wiredFields = new ArrayList<>(); if (CollectionUtils.isNotEmpty(getAdditionalFields())) { wiredFields.addAll(getAdditionalFields()); } if (CollectionUtils.isNotEmpty(panels)) { for (StockPanel panel : panels) { wiredFields.addAll(panel.getWiredFields()); } } if (CollectionUtils.isNotEmpty(dataSets)) { for (DataSet dataSet : dataSets) { if (dataSet.getDataProvider() != null) { wiredFields.addAll(dataSet.getWiredFields()); } } } return wiredFields; }
@Nullable protected DataItem getDataItemByKey(String graphId, String itemKey) { if (itemKey != null) { Object dataItemId = dataItemKeys.get(itemKey); DataSet dataSet = getChart().getDataSet(graphId); if (dataSet != null) { DataProvider dataProvider = dataSet.getDataProvider(); if (dataProvider != null) { return dataProvider.getItem(dataItemId); } } } return null; } }
protected Entity getEventItem(String itemIdString) { if (StringUtils.isNotEmpty(itemIdString)) { for (DataSet dataSet : component.getChart().getDataSets()) { CollectionDatasource ds = getDataSetDatasource(dataSet.getId()); if (ds != null) { //noinspection unchecked Entity item = ds.getItem(getItemId(ds, itemIdString)); if (item != null) { return item; } } } } return null; }
if (chart.getDataSets() != null) { for (DataSet dataSet : chart.getDataSets()) { if (dataSet.getDataProvider() != null) { dataSet.getDataProvider().addChangeListener(new ProxyChangeForwarder(this, dataSet));