/*
* Copyright 2016 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.kie.workbench.common.screens.contributors.client.screens;
import org.dashbuilder.dataset.filter.FilterFactory;
import org.dashbuilder.displayer.DisplayerSettings;
import org.dashbuilder.displayer.DisplayerSettingsFactory;
import org.dashbuilder.renderer.client.DefaultRenderer;
import org.kie.workbench.common.screens.contributors.client.resources.i18n.ContributorsI18n;
import static org.dashbuilder.dataset.date.DayOfWeek.SUNDAY;
import static org.dashbuilder.dataset.group.AggregateFunctionType.*;
import static org.dashbuilder.dataset.group.DateIntervalType.*;
import static org.dashbuilder.dataset.sort.SortOrder.*;
import static org.dashbuilder.displayer.Position.RIGHT;
import static org.kie.workbench.common.screens.contributors.model.ContributorsDataSetColumns.*;
import static org.kie.workbench.common.screens.contributors.model.ContributorsDataSets.GIT_CONTRIB;
public class ContributorsKPIs {
public static DisplayerSettings getCommitsEvolution(ContributorsI18n i18n) {
return DisplayerSettingsFactory.newAreaChartSettings()
.dataset(GIT_CONTRIB)
.filter(COLUMN_DATE, FilterFactory.notNull())
.group(COLUMN_DATE).dynamic(80, MONTH, true)
.column(COLUMN_DATE, i18n.date())
.column(COUNT, "#commits").format(i18n.numberOfCommits(), "#,##0")
.title(i18n.numberOfCommitsEvolution())
.titleVisible(true)
.width(500).height(200)
.margins(10, 60, 50, 0)
.filterOff(true)
.buildSettings();
}
public static DisplayerSettings getCommitsPerOrganization(ContributorsI18n i18n) {
return DisplayerSettingsFactory.newBubbleChartSettings()
.dataset(GIT_CONTRIB)
.group(COLUMN_ORG)
.column(COLUMN_ORG, i18n.organizationalUnit())
.column(COLUMN_REPO, DISTINCT).format(i18n.numberOfRepositories(), "#,##0")
.column(COUNT, "#commits").format(i18n.numberOfCommits(), "#,##0")
.column(COLUMN_ORG, i18n.organizationalUnit())
.column(COLUMN_AUTHOR, DISTINCT).format(i18n.numberOfContributors(), "#,##0")
.title(i18n.commitsPerOrganization())
.titleVisible(true)
.width(400).height(200)
.margins(10, 50, 50, 0)
.filterOn(false, true, true)
.buildSettings();
}
public static DisplayerSettings getYears(ContributorsI18n i18n) {
return DisplayerSettingsFactory.newPieChartSettings()
.dataset(GIT_CONTRIB)
.filter(COLUMN_DATE, FilterFactory.notNull())
.group(COLUMN_DATE).dynamic(YEAR, false)
.column(COLUMN_DATE)
.column(COUNT, "#commits").format(i18n.numberOfCommits(), "#,##0")
.sort(COLUMN_DATE, ASCENDING)
.title(i18n.years())
.titleVisible(false)
.width(230).height(170)
.margins(0, 0, 10, 5)
.legendOn(RIGHT)
.filterOn(false, true, false)
.buildSettings();
}
public static DisplayerSettings getQuarters(ContributorsI18n i18n) {
return DisplayerSettingsFactory.newPieChartSettings()
.dataset(GIT_CONTRIB)
.filter(COLUMN_DATE, FilterFactory.notNull())
.group(COLUMN_DATE).fixed(QUARTER, false)
.column(COLUMN_DATE)
.column(COUNT, "#commits").format(i18n.numberOfCommits(), "#,##0")
.title(i18n.quarters())
.titleVisible(false)
.width(230).height(170)
.margins(0, 0, 5, 5)
.legendOn(RIGHT)
.filterOn(false, true, false)
.buildSettings();
}
public static DisplayerSettings getDaysOfWeek(ContributorsI18n i18n) {
return DisplayerSettingsFactory.newBarChartSettings()
.dataset(GIT_CONTRIB)
.filter(COLUMN_DATE, FilterFactory.notNull())
.group(COLUMN_DATE).fixed(DAY_OF_WEEK, true).firstDay(SUNDAY)
.column(COLUMN_DATE)
.column(COUNT, "#commits").format(i18n.numberOfCommits(), "#,##0")
.title(i18n.dayOfWeek())
.titleVisible(false)
.width(230).height(170)
.margins(0, 10, 70, 0)
.subType_Bar()
.filterOn(false, true, true)
.buildSettings();
}
public static DisplayerSettings getAllCommits(ContributorsI18n i18n) {
return DisplayerSettingsFactory.newTableSettings()
.dataset(GIT_CONTRIB)
.column(COLUMN_AUTHOR, i18n.author())
.column(COLUMN_REPO, i18n.repository())
.column(COLUMN_DATE, i18n.date())
.column(COLUMN_MSG, i18n.commit())
.title(i18n.commits())
.titleVisible(false)
.tablePageSize(5)
.tableWidth(950)
.tableOrderEnabled(true)
.renderer(DefaultRenderer.UUID)
.filterOn(true, true, true)
.buildSettings();
}
public static DisplayerSettings getOrgUnitSelector(ContributorsI18n i18n) {
return DisplayerSettingsFactory.newSelectorSettings()
.dataset(GIT_CONTRIB)
.group(COLUMN_ORG)
.column(COLUMN_ORG, i18n.organizationalUnit())
.column(COUNT, "#commits").format(i18n.numberOfCommits(), "#,##0")
.title(i18n.organizationalUnit())
.sort(COLUMN_ORG, ASCENDING)
.filterOn(false, true, true)
.buildSettings();
}
public static DisplayerSettings getRepoSelector(ContributorsI18n i18n) {
return DisplayerSettingsFactory.newSelectorSettings()
.dataset(GIT_CONTRIB)
.group(COLUMN_REPO)
.column(COLUMN_REPO, i18n.repository())
.column(COUNT, "#commits").format(i18n.numberOfCommits(), "#,##0")
.sort(COLUMN_REPO, ASCENDING)
.title(i18n.repository())
.filterOn(false, true, true)
.buildSettings();
}
public static DisplayerSettings getAuthorSelector(ContributorsI18n i18n) {
return DisplayerSettingsFactory.newSelectorSettings()
.dataset(GIT_CONTRIB)
.group(COLUMN_AUTHOR)
.column(COLUMN_AUTHOR, i18n.author())
.column(COUNT, "#commits").format(i18n.numberOfCommits(), "#,##0")
.sort(COLUMN_AUTHOR, ASCENDING)
.title(i18n.author())
.filterOn(false, true, true)
.buildSettings();
}
public static DisplayerSettings getTopAuthorSelector(ContributorsI18n i18n) {
return DisplayerSettingsFactory.newSelectorSettings()
.dataset(GIT_CONTRIB)
.group(COLUMN_AUTHOR)
.column(COLUMN_AUTHOR, i18n.topContributor())
.column(COUNT, "#commits").format(i18n.numberOfCommits(), "#,##0")
.sort("#commits", DESCENDING)
.title(i18n.topContributor())
.filterOn(false, true, true)
.buildSettings();
}
}