diff --git a/jira-macro/jira-macro-charts/src/main/java/org/xwiki/contrib/jira/charts/JiraFieldParameterDisplayer.java b/jira-macro/jira-macro-charts/src/main/java/org/xwiki/contrib/jira/charts/JiraFieldParameterDisplayer.java new file mode 100644 index 0000000..8a2d92c --- /dev/null +++ b/jira-macro/jira-macro-charts/src/main/java/org/xwiki/contrib/jira/charts/JiraFieldParameterDisplayer.java @@ -0,0 +1,24 @@ +/* + * See the NOTICE file distributed with this work for additional + * information regarding copyright ownership. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.xwiki.contrib.jira.charts; + +public class JiraFieldParameterDisplayer +{ +} diff --git a/jira-macro/jira-macro-charts/src/main/java/org/xwiki/contrib/jira/charts/bidimensionalgrid/JIRABiDimensionalGridChartMacroParameter.java b/jira-macro/jira-macro-charts/src/main/java/org/xwiki/contrib/jira/charts/bidimensionalgrid/JIRABiDimensionalGridChartMacroParameter.java index 00225e6..f651710 100644 --- a/jira-macro/jira-macro-charts/src/main/java/org/xwiki/contrib/jira/charts/bidimensionalgrid/JIRABiDimensionalGridChartMacroParameter.java +++ b/jira-macro/jira-macro-charts/src/main/java/org/xwiki/contrib/jira/charts/bidimensionalgrid/JIRABiDimensionalGridChartMacroParameter.java @@ -20,7 +20,9 @@ package org.xwiki.contrib.jira.charts.bidimensionalgrid; import org.xwiki.contrib.jira.charts.AbstractChartMacroParameters; +import org.xwiki.contrib.jira.charts.JiraFieldParameterDisplayer; import org.xwiki.properties.annotation.PropertyDescription; +import org.xwiki.properties.annotation.PropertyDisplayType; import org.xwiki.properties.annotation.PropertyMandatory; import org.xwiki.stability.Unstable; @@ -33,8 +35,8 @@ @Unstable public class JIRABiDimensionalGridChartMacroParameter extends AbstractChartMacroParameters { - private JIRAField xAxisField; - private JIRAField yAxisField; + private String xAxisField; + private String yAxisField; private int numberOfResults; private boolean isSortAscending; private boolean isSortNatural; @@ -52,7 +54,7 @@ public JIRABiDimensionalGridChartMacroParameter() /** * @return represents the field information to be displayed in each column. */ - public JIRAField getxAxisField() + public String getxAxisField() { return xAxisField; } @@ -62,7 +64,8 @@ public JIRAField getxAxisField() */ @PropertyDescription("The field information to be displayed in each column.") @PropertyMandatory - public void setxAxisField(JIRAField xAxisField) + @PropertyDisplayType(JiraFieldParameterDisplayer.class) + public void setxAxisField(String xAxisField) { this.xAxisField = xAxisField; } @@ -70,7 +73,7 @@ public void setxAxisField(JIRAField xAxisField) /** * @return represents the field information to be displayed in each row. */ - public JIRAField getyAxisField() + public String getyAxisField() { return yAxisField; } @@ -80,7 +83,7 @@ public JIRAField getyAxisField() */ @PropertyDescription("The field information to be displayed in each row.") @PropertyMandatory - public void setyAxisField(JIRAField yAxisField) + public void setyAxisField(String yAxisField) { this.yAxisField = yAxisField; } diff --git a/jira-macro/jira-macro-charts/src/main/java/org/xwiki/contrib/jira/charts/internal/bidimensionalgrid/JIRABiDimensionalGridChartDataFetcher.java b/jira-macro/jira-macro-charts/src/main/java/org/xwiki/contrib/jira/charts/internal/bidimensionalgrid/JIRABiDimensionalGridChartDataFetcher.java index c27d8c2..2516129 100644 --- a/jira-macro/jira-macro-charts/src/main/java/org/xwiki/contrib/jira/charts/internal/bidimensionalgrid/JIRABiDimensionalGridChartDataFetcher.java +++ b/jira-macro/jira-macro-charts/src/main/java/org/xwiki/contrib/jira/charts/internal/bidimensionalgrid/JIRABiDimensionalGridChartDataFetcher.java @@ -56,8 +56,8 @@ public JIRAURLHelper.GadgetType getGadgetType() public List getCustomQueryParameters(JIRABiDimensionalGridChartMacroParameter parameters) { List result = new ArrayList<>(); - result.add(new BasicNameValuePair("xstattype", parameters.getxAxisField().getQueryName())); - result.add(new BasicNameValuePair("ystattype", parameters.getyAxisField().getQueryName())); + result.add(new BasicNameValuePair("xstattype", parameters.getxAxisField())); + result.add(new BasicNameValuePair("ystattype", parameters.getyAxisField())); String sortDirection = (parameters.isSortAscending()) ? "asc" : "desc"; result.add(new BasicNameValuePair("sortDirection", sortDirection)); String sortBy = (parameters.isSortNatural()) ? "natural" : "total"; diff --git a/jira-macro/jira-macro-charts/src/main/java/org/xwiki/contrib/jira/charts/internal/piechart/JIRAPieChartDataFetcher.java b/jira-macro/jira-macro-charts/src/main/java/org/xwiki/contrib/jira/charts/internal/piechart/JIRAPieChartDataFetcher.java index 85fec36..5c4952e 100644 --- a/jira-macro/jira-macro-charts/src/main/java/org/xwiki/contrib/jira/charts/internal/piechart/JIRAPieChartDataFetcher.java +++ b/jira-macro/jira-macro-charts/src/main/java/org/xwiki/contrib/jira/charts/internal/piechart/JIRAPieChartDataFetcher.java @@ -27,7 +27,6 @@ import org.apache.http.message.BasicNameValuePair; import org.xwiki.component.annotation.Component; import org.xwiki.contrib.jira.charts.internal.AbstractJIRAChartDataFetcher; -import org.xwiki.contrib.jira.charts.piechart.StatisticType; import org.xwiki.contrib.jira.charts.internal.piechart.source.JIRAPieChartDataSource; import org.xwiki.contrib.jira.charts.piechart.JIRAPieChartMacroParameters; import org.xwiki.contrib.jira.macro.internal.JIRAURLHelper; @@ -46,9 +45,7 @@ public class JIRAPieChartDataFetcher @Override public List getCustomQueryParameters(JIRAPieChartMacroParameters parameters) { - StatisticType type = parameters.getType(); - String statType = type.getQueryName(); - return List.of(new BasicNameValuePair("statType", statType)); + return List.of(new BasicNameValuePair("statType", parameters.getType())); } @Override diff --git a/jira-macro/jira-macro-charts/src/main/java/org/xwiki/contrib/jira/charts/piechart/JIRAPieChartMacroParameters.java b/jira-macro/jira-macro-charts/src/main/java/org/xwiki/contrib/jira/charts/piechart/JIRAPieChartMacroParameters.java index cad2e2e..ee7cf0f 100644 --- a/jira-macro/jira-macro-charts/src/main/java/org/xwiki/contrib/jira/charts/piechart/JIRAPieChartMacroParameters.java +++ b/jira-macro/jira-macro-charts/src/main/java/org/xwiki/contrib/jira/charts/piechart/JIRAPieChartMacroParameters.java @@ -20,8 +20,10 @@ package org.xwiki.contrib.jira.charts.piechart; import org.xwiki.contrib.jira.charts.AbstractChartMacroParameters; +import org.xwiki.contrib.jira.charts.JiraFieldParameterDisplayer; import org.xwiki.properties.annotation.PropertyAdvanced; import org.xwiki.properties.annotation.PropertyDescription; +import org.xwiki.properties.annotation.PropertyDisplayType; import org.xwiki.properties.annotation.PropertyMandatory; import org.xwiki.stability.Unstable; @@ -34,7 +36,7 @@ @Unstable public class JIRAPieChartMacroParameters extends AbstractChartMacroParameters { - private StatisticType type; + private String type; private int maxData; /** @@ -48,7 +50,7 @@ public JIRAPieChartMacroParameters() /** * @return the type of statistics to display in the pie chart. */ - public StatisticType getType() + public String getType() { return type; } @@ -58,7 +60,8 @@ public StatisticType getType() */ @PropertyDescription("The type of statistics to display in the pie chart.") @PropertyMandatory - public void setType(StatisticType type) + @PropertyDisplayType(JiraFieldParameterDisplayer.class) + public void setType(String type) { this.type = type; } diff --git a/jira-macro/jira-macro-charts/src/main/resources/ApplicationResources.properties b/jira-macro/jira-macro-charts/src/main/resources/ApplicationResources.properties index 185e288..8a5fcb1 100644 --- a/jira-macro/jira-macro-charts/src/main/resources/ApplicationResources.properties +++ b/jira-macro/jira-macro-charts/src/main/resources/ApplicationResources.properties @@ -78,4 +78,13 @@ rendering.macro.jiraPieChart.parameter.type.description=The type of statistics t rendering.macro.jiraPieChart.parameter.maxData.name=Data size rendering.macro.jiraPieChart.parameter.maxData.description=The maximum number of data to display in the pie chart: if there's more data they will be displayed aggregated. -rendering.macro.jiraPieChart.labels.otherData=Other data \ No newline at end of file +rendering.macro.jiraPieChart.labels.otherData=Other data + +rendering.macro.charts.JiraFieldDisplayer.placeholder=Chose a JIRA field +rendering.macro.charts.JiraFieldDisplayer.field.assignee=Assignee +rendering.macro.charts.JiraFieldDisplayer.field.reporter=Reporter +rendering.macro.charts.JiraFieldDisplayer.field.status=Status +rendering.macro.charts.JiraFieldDisplayer.field.fixversion=Fix Version +rendering.macro.charts.JiraFieldDisplayer.field.component=Component +rendering.macro.charts.JiraFieldDisplayer.field.priority=Priority +rendering.macro.charts.JiraFieldDisplayer.field.type=Type \ No newline at end of file diff --git a/jira-macro/jira-macro-charts/src/main/resources/templates/html_displayer/jirafieldparameterdisplayer/edit.vm b/jira-macro/jira-macro-charts/src/main/resources/templates/html_displayer/jirafieldparameterdisplayer/edit.vm new file mode 100644 index 0000000..8878821 --- /dev/null +++ b/jira-macro/jira-macro-charts/src/main/resources/templates/html_displayer/jirafieldparameterdisplayer/edit.vm @@ -0,0 +1,50 @@ +## --------------------------------------------------------------------------- +## See the NOTICE file distributed with this work for additional +## information regarding copyright ownership. +## +## This is free software; you can redistribute it and/or modify it +## under the terms of the GNU Lesser General Public License as +## published by the Free Software Foundation; either version 2.1 of +## the License, or (at your option) any later version. +## +## This software is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this software; if not, write to the Free +## Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +## 02110-1301 USA, or see the FSF site: http://www.fsf.org. +## --------------------------------------------------------------------------- +#set ($knownJiraFields = [ +{'name': 'assignee', 'value': 'assignees'}, +{'name': 'reporter', 'value': 'reporter'}, +{'name': 'status', 'value': 'statuses'}, +{'name': 'fixversion', 'value': 'allFixfor'}, +{'name': 'component', 'value': 'components'}, +{'name': 'priority', 'value': 'priorities'}, +{'name': 'type', 'value': 'issuetype'} +]) + +#macro (jiraFieldPicker_displayOptions $selectedValues) + #foreach ($field in $knownJiraFields) + + #end +#end + +#set ($discard = $xwiki.jsfx.use('uicomponents/suggest/xwiki.selectize.js', true)) +## See https://github.com/selectize/selectize.js/blob/master/docs/usage.md#configuration +#set ($selectizeSettings = {}) +#set ($suggestInputAttributes = { + 'name': 'jiraField', + 'class': 'xwiki-selectize', + 'data-xwiki-selectize': $selectizeSettings, + 'value': 'issuetype', + 'placeholder': $services.localization.render('rendering.macro.charts.JiraFieldDisplayer.placeholder'), + 'create': true +}) +#picker_import +#suggestInput($suggestInputAttributes 'jiraFieldPicker_displayOptions') \ No newline at end of file diff --git a/jira-macro/jira-macro-charts/src/test/java/org/xwiki/contrib/jira/charts/internal/bidimensionalgrid/JIRABiDimensionalGridChartDataFetcherTest.java b/jira-macro/jira-macro-charts/src/test/java/org/xwiki/contrib/jira/charts/internal/bidimensionalgrid/JIRABiDimensionalGridChartDataFetcherTest.java index 4c3164d..2d39e91 100644 --- a/jira-macro/jira-macro-charts/src/test/java/org/xwiki/contrib/jira/charts/internal/bidimensionalgrid/JIRABiDimensionalGridChartDataFetcherTest.java +++ b/jira-macro/jira-macro-charts/src/test/java/org/xwiki/contrib/jira/charts/internal/bidimensionalgrid/JIRABiDimensionalGridChartDataFetcherTest.java @@ -71,8 +71,8 @@ void fetch() throws Exception JIRABiDimensionalGridChartMacroParameter parameters = new JIRABiDimensionalGridChartMacroParameter(); parameters.setId("myjira"); parameters.setFilterId("43434"); - parameters.setxAxisField(JIRAField.STATUS); - parameters.setyAxisField(JIRAField.ASSIGNEE); + parameters.setxAxisField("statuses"); + parameters.setyAxisField("assignees"); parameters.setSortNatural(true); parameters.setNumberOfResults(21); parameters.setSortAscending(false);