All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.dashbuilder.renderer.lienzo.client.LienzoDisplayer Maven / Gradle / Ivy

There is a newer version: 7.34.0.Final
Show newest version
/*
 * Copyright 2014 Red Hat, Inc. and/or its affiliates.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.dashbuilder.renderer.lienzo.client;

import org.dashbuilder.dataset.ColumnType;
import org.dashbuilder.dataset.DataColumn;
import org.dashbuilder.dataset.group.Interval;
import org.dashbuilder.displayer.ColumnSettings;
import org.dashbuilder.displayer.DisplayerSubType;
import org.dashbuilder.displayer.client.AbstractGwtDisplayer;

import java.util.Date;
import java.util.List;
import java.util.Set;

public abstract class LienzoDisplayer extends AbstractGwtDisplayer {

    public interface View

extends AbstractGwtDisplayer.View

{ void showTitle(String title); void setWidth(int width); void setHeight(int height); void setMarginTop(int marginTop); void setMarginBottom(int marginBottom); void setMarginRight(int marginRight); void setMarginLeft(int marginLeft); void setSubType(DisplayerSubType subType); void setFilterEnabled(boolean enabled); void setResizeEnabled(boolean enabled); void setFontFamily(String font); void setFontStyle(String style); void setFontSize(int size); String getGroupsTitle(); String getColumnsTitle(); void dataClear(); void dataAddColumn(String columnId, String columnName, ColumnType columnType); void dataAddValue(String columnId, Date value); void dataAddValue(String columnId, Number value); void dataAddValue(String columnId, String value); void clearFilterStatus(); void addFilterValue(String value); void addFilterReset(); void nodata(); void drawChart(); void reloadChart(); } @Override protected void createVisualization() { if (displayerSettings.isTitleVisible()) { getView().showTitle(displayerSettings.getTitle()); } getView().setSubType(displayerSettings.getSubtype()); getView().setWidth(getChartWidth()); getView().setHeight(getChartHeight()); getView().setMarginLeft(displayerSettings.getChartMarginLeft()); getView().setMarginRight(displayerSettings.getChartMarginRight()); getView().setMarginTop(displayerSettings.getChartMarginTop()); getView().setMarginBottom(displayerSettings.getChartMarginBottom()); getView().setFontFamily("Verdana"); getView().setFontStyle("bold"); getView().setFontSize(8); //getView().setLegendPosition(LegendPosition.RIGHT); // TODO: Custom displayer parameter. //getView().setCategoriesAxisLabelsPosition(LabelsPosition.LEFT); // TODO: Custom displayer parameter. //getView().setValuesAxisLabelsPosition(LabelsPosition.BOTTOM); // TODO: Custom displayer parameter. getView().setResizeEnabled(displayerSettings.isResizable()); getView().setFilterEnabled(displayerSettings.isFilterEnabled()); // TODO: Category and Number types? if (dataSet.getRowCount() == 0) { getView().nodata(); } else { pushDataToView(); getView().drawChart(); } } @Override protected void updateVisualization() { updateFilterStatus(); if (dataSet.getRowCount() == 0) { getView().nodata(); } else { pushDataToView(); getView().reloadChart(); } } protected void updateFilterStatus() { getView().clearFilterStatus(); Set columnFilters = filterColumns(); if (displayerSettings.isFilterEnabled() && !columnFilters.isEmpty()) { for (String columnId : columnFilters) { List selectedValues = filterIntervals(columnId); DataColumn column = dataSet.getColumnById(columnId); for (Interval interval : selectedValues) { String formattedValue = formatInterval(interval, column); getView().addFilterValue(formattedValue); } } getView().addFilterReset(); } } protected void pushDataToView() { getView().dataClear(); List columns = dataSet.getColumns(); if (columns != null && !columns.isEmpty()) { for (int i = 0; i < columns.size(); i++) { DataColumn dataColumn = columns.get(i); List columnValues = dataColumn.getValues(); ColumnType columnType = dataColumn.getColumnType(); String columnId = dataColumn.getId(); ColumnSettings columnSettings = displayerSettings.getColumnSettings(dataColumn); String columnName = columnSettings.getColumnName(); getView().dataAddColumn(columnId, columnName, dataColumn.getColumnType()); for (int j = 0; j < columnValues.size(); j++) { Object value = columnValues.get(j); if (ColumnType.LABEL.equals(columnType)) { value = super.formatValue(j, i); } if (ColumnType.DATE.equals(columnType)) { getView().dataAddValue(columnId, value == null ? new Date() : (Date) value); } else if (ColumnType.NUMBER.equals(columnType)) { getView().dataAddValue(columnId, value == null ? 0d : Double.parseDouble(value.toString())); } else { getView().dataAddValue(columnId, value.toString()); } } } } } public int getChartWidth() { return displayerSettings.getChartWidth(); } public int getChartHeight() { return displayerSettings.getChartHeight(); } public int getWidth() { int width = displayerSettings.isResizable() ? displayerSettings.getChartMaxWidth() : displayerSettings.getChartWidth(); int left = displayerSettings.getChartMarginLeft(); int right = displayerSettings.getChartMarginRight(); return displayerSettings.getChartWidth()+right+left; } public int getHeight() { int height = displayerSettings.isResizable() ? displayerSettings.getChartMaxHeight() : displayerSettings.getChartHeight(); int top = displayerSettings.getChartMarginTop(); int bottom = displayerSettings.getChartMarginBottom(); return displayerSettings.getChartHeight()+top+bottom; } // View notifications void onCategorySelected(String columnId, int row) { Integer maxSelections = displayerSettings.isFilterSelfApplyEnabled() ? null : dataSet.getRowCount(); filterUpdate(columnId, row, maxSelections); // Update the displayer in order to reflect the current selection // (only if not has already been redrawn in the previous filterUpdate() call) if (!displayerSettings.isFilterSelfApplyEnabled()) { updateVisualization(); } } void onFilterResetClicked() { filterReset(); // Update the displayer view in order to reflect the current selection // (only if not has already been redrawn in the previous filterUpdate() call) if (!displayerSettings.isFilterSelfApplyEnabled()) { updateVisualization(); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy