-
Notifications
You must be signed in to change notification settings - Fork 634
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow a variety of data series for statement of assets #3754
base: master
Are you sure you want to change the base?
Changes from all commits
517443f
c7c857b
d161eee
f8f0275
0fa55ec
1e8f550
56758c6
9566b57
d53fef3
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -35,8 +35,8 @@ public DataSeriesSet(Client client, IPreferenceStore preferences, DataSeries.Use | |
switch (useCase) | ||
{ | ||
case STATEMENT_OF_ASSETS: | ||
buildStatementOfAssetsDataSeries(); | ||
break; | ||
buildStatementOfAssetsDataSeries(client, preferences, wheel); | ||
return; | ||
Comment on lines
+38
to
+39
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This return statement prevents existing "common" series to be added. Let's discuss in the comments of the pull request how to achieve backwards compatibility. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Perhaps we can add a DataSeries property for whether it's "visible"? And then for the returned DataSeriesSet for Statement of Assets, set it to false so the old ones don't show? |
||
case PERFORMANCE: | ||
buildPerformanceDataSeries(client, preferences, wheel); | ||
break; | ||
|
@@ -68,89 +68,81 @@ public DataSeries lookup(String uuid) | |
return availableSeries.stream().filter(d -> d.getUUID().equals(uuid)).findAny().orElse(null); | ||
} | ||
|
||
private void buildStatementOfAssetsDataSeries() | ||
private void buildStatementOfAssetsDataSeries(Client client, IPreferenceStore preferences, ColorWheel wheel) | ||
{ | ||
availableSeries.add(new DataSeries(DataSeries.Type.CLIENT, ClientDataSeries.TOTALS, Messages.LabelTotalSum, | ||
Colors.TOTALS.getRGB())); | ||
|
||
DataSeries series = new DataSeries(DataSeries.Type.CLIENT, ClientDataSeries.TRANSFERALS, | ||
Messages.LabelTransferals, Display.getDefault().getSystemColor(SWT.COLOR_DARK_GRAY).getRGB()); | ||
series.setLineChart(false); | ||
availableSeries.add(series); | ||
for (var entry : DataSeries.statementOfAssetsDataSeriesLabels.entrySet()) | ||
{ | ||
// Common folder | ||
availableSeries.add(new DataSeries(DataSeries.Type.CLIENT, entry.getKey(), entry.getValue(), wheel.next())); | ||
|
||
for (Portfolio portfolio : client.getPortfolios()) | ||
{ | ||
var instance = new GroupedDataSeries(portfolio, entry.getKey(), DataSeries.Type.PORTFOLIO_PLUS_ACCOUNT); | ||
instance.setIsPortfolioPlusReferenceAccount(true); | ||
|
||
series = new DataSeries(DataSeries.Type.CLIENT, ClientDataSeries.INVESTED_CAPITAL, | ||
Messages.LabelInvestedCapital, Display.getDefault().getSystemColor(SWT.COLOR_GRAY).getRGB()); | ||
series.setShowArea(true); | ||
availableSeries.add(series); | ||
var name = portfolio.getName() + " + " + portfolio.getReferenceAccount().getName(); //$NON-NLS-1$ | ||
|
||
series = new DataSeries(DataSeries.Type.CLIENT, ClientDataSeries.ABSOLUTE_INVESTED_CAPITAL, | ||
Messages.LabelAbsoluteInvestedCapital, | ||
Display.getDefault().getSystemColor(SWT.COLOR_GRAY).getRGB()); | ||
series.setShowArea(true); | ||
availableSeries.add(series); | ||
var dataSeries = new DataSeries(DataSeries.Type.TYPE_PARENT, name, instance, entry.getValue(), | ||
wheel.next()); | ||
|
||
series = new DataSeries(DataSeries.Type.CLIENT, ClientDataSeries.ABSOLUTE_DELTA, Messages.LabelDelta, | ||
Display.getDefault().getSystemColor(SWT.COLOR_GRAY).getRGB()); | ||
availableSeries.add(series); | ||
availableSeries.add(dataSeries); | ||
} | ||
|
||
for (Portfolio portfolio : client.getPortfolios()) | ||
{ | ||
var instance = new GroupedDataSeries(portfolio, entry.getKey(), DataSeries.Type.PORTFOLIO); | ||
|
||
series = new DataSeries(DataSeries.Type.CLIENT, ClientDataSeries.ABSOLUTE_DELTA_ALL_RECORDS, | ||
Messages.LabelAbsoluteDelta, Display.getDefault().getSystemColor(SWT.COLOR_GRAY).getRGB()); | ||
availableSeries.add(series); | ||
var dataSeries = new DataSeries(DataSeries.Type.TYPE_PARENT, portfolio.getName(), instance, | ||
entry.getValue(), wheel.next()); | ||
|
||
series = new DataSeries(DataSeries.Type.CLIENT, ClientDataSeries.TAXES, Messages.ColumnTaxes, | ||
Display.getDefault().getSystemColor(SWT.COLOR_RED).getRGB()); | ||
series.setLineChart(false); | ||
availableSeries.add(series); | ||
availableSeries.add(dataSeries); | ||
} | ||
|
||
series = new DataSeries(DataSeries.Type.CLIENT, ClientDataSeries.TAXES_ACCUMULATED, | ||
Messages.LabelAccumulatedTaxes, Display.getDefault().getSystemColor(SWT.COLOR_RED).getRGB()); | ||
availableSeries.add(series); | ||
for (Account account : client.getAccounts()) | ||
{ | ||
var instance = new GroupedDataSeries(account, entry.getKey(), DataSeries.Type.ACCOUNT); | ||
|
||
series = new DataSeries(DataSeries.Type.CLIENT, ClientDataSeries.DIVIDENDS, Messages.LabelDividends, | ||
Display.getDefault().getSystemColor(SWT.COLOR_DARK_MAGENTA).getRGB()); | ||
series.setLineChart(false); | ||
availableSeries.add(series); | ||
var dataSeries = new DataSeries(DataSeries.Type.TYPE_PARENT, account.getName(), instance, | ||
entry.getValue(), wheel.next()); | ||
|
||
series = new DataSeries(DataSeries.Type.CLIENT, ClientDataSeries.DIVIDENDS_ACCUMULATED, | ||
Messages.LabelAccumulatedDividends, | ||
Display.getDefault().getSystemColor(SWT.COLOR_DARK_MAGENTA).getRGB()); | ||
availableSeries.add(series); | ||
availableSeries.add(dataSeries); | ||
} | ||
|
||
series = new DataSeries(DataSeries.Type.CLIENT, ClientDataSeries.INTEREST, Messages.LabelInterest, | ||
Colors.DARK_GREEN.getRGB()); | ||
series.setLineChart(false); | ||
availableSeries.add(series); | ||
for (Taxonomy taxonomy : client.getTaxonomies()) | ||
{ | ||
taxonomy.foreach(new Taxonomy.Visitor() | ||
{ | ||
@Override | ||
public void visit(Classification classification) | ||
{ | ||
if (classification.getParent() == null) | ||
return; | ||
|
||
series = new DataSeries(DataSeries.Type.CLIENT, ClientDataSeries.INTEREST_ACCUMULATED, | ||
Messages.LabelAccumulatedInterest, Colors.DARK_GREEN.getRGB()); | ||
availableSeries.add(series); | ||
Object[] groups = { taxonomy, classification.getPathName(false) }; | ||
|
||
series = new DataSeries(DataSeries.Type.CLIENT, ClientDataSeries.INTEREST_CHARGE, Messages.LabelInterestCharge, | ||
Colors.DARK_GREEN.getRGB()); | ||
series.setLineChart(false); | ||
availableSeries.add(series); | ||
var instance = new GroupedDataSeries(classification, entry.getKey(), | ||
DataSeries.Type.CLASSIFICATION); | ||
|
||
series = new DataSeries(DataSeries.Type.CLIENT, ClientDataSeries.INTEREST_CHARGE_ACCUMULATED, | ||
Messages.LabelAccumulatedInterestCharge, Colors.DARK_GREEN.getRGB()); | ||
availableSeries.add(series); | ||
var dataSeries = new DataSeries(DataSeries.Type.TYPE_PARENT, groups, instance, entry.getValue(), | ||
wheel.next()); | ||
|
||
series = new DataSeries(DataSeries.Type.CLIENT, ClientDataSeries.EARNINGS, Messages.LabelEarnings, | ||
Colors.DARK_GREEN.getRGB()); | ||
series.setLineChart(false); | ||
availableSeries.add(series); | ||
availableSeries.add(dataSeries); | ||
} | ||
}); | ||
} | ||
|
||
ClientFilterMenu menu = new ClientFilterMenu(client, preferences); | ||
|
||
series = new DataSeries(DataSeries.Type.CLIENT, ClientDataSeries.EARNINGS_ACCUMULATED, | ||
Messages.LabelAccumulatedEarnings, Colors.DARK_GREEN.getRGB()); | ||
availableSeries.add(series); | ||
for (ClientFilterMenu.Item item : menu.getCustomItems()) | ||
{ | ||
var instance = new GroupedDataSeries(item, entry.getKey(), DataSeries.Type.CLIENT_FILTER); | ||
|
||
series = new DataSeries(DataSeries.Type.CLIENT, ClientDataSeries.FEES, Messages.LabelFees, | ||
Colors.GRAY.getRGB()); | ||
series.setLineChart(false); | ||
availableSeries.add(series); | ||
var dataSeries = new DataSeries(DataSeries.Type.TYPE_PARENT, item.getLabel(), instance, | ||
entry.getValue(), wheel.next()); | ||
|
||
series = new DataSeries(DataSeries.Type.CLIENT, ClientDataSeries.FEES_ACCUMULATED, | ||
Messages.LabelFeesAccumulated, Colors.GRAY.getRGB()); | ||
availableSeries.add(series); | ||
availableSeries.add(dataSeries); | ||
} | ||
} | ||
} | ||
|
||
private void buildPerformanceDataSeries(Client client, IPreferenceStore preferences, ColorWheel wheel) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This PR is using the "group" essentially as second label.
I understand that we need two labels (in the selection dialog the full label does not make sense, in the chart legend it is required to understand the data series).
I think we should make it then explicit and not the logic that the last element in the object array is a label.