# HG changeset patch # User gernotbelger # Date 1529658179 -7200 # Node ID f1be005f0c46340d222745433b21c4cd953b2c49 # Parent 9b2e46090099ef304bb8c45d4541ca5b84685eea tab titles from server diff -r 9b2e46090099 -r f1be005f0c46 artifacts/src/main/java/org/dive4elements/river/artifacts/common/ExportContextCSV.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/common/ExportContextCSV.java Thu Jun 21 14:32:11 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/common/ExportContextCSV.java Fri Jun 22 11:02:59 2018 +0200 @@ -11,6 +11,8 @@ import java.text.DateFormat; import java.text.NumberFormat; +import java.util.ArrayList; +import java.util.Collection; import java.util.Date; import java.util.Locale; @@ -231,4 +233,11 @@ return type.getPdfHeader(this.context.getMeta()); } + + public void writeTitleForTabs(final String tabTitleMsg, final int colSize) { + + final Collection title = new ArrayList<>(colSize); + title.add(msg("export_csv_title") + msg(tabTitleMsg)); + writeCSVLine(title.toArray(new String[colSize])); + } } \ No newline at end of file diff -r 9b2e46090099 -r f1be005f0c46 artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/CollisionCalcDetailResult.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/CollisionCalcDetailResult.java Thu Jun 21 14:32:11 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/CollisionCalcDetailResult.java Fri Jun 22 11:02:59 2018 +0200 @@ -36,17 +36,19 @@ @Override protected void writeCSVResultMetadata(final ExportContextCSV exportContextCSV, final CollisionCalculationResults results) { - // TODO Auto-generated method stub - // final WstInfo wst = result.getWst(); - // exportContext.writeCSVWaterlevelMetadata(writer, wst); - // if hasMetadata... + exportContextCSV.writeBlankLine(); } @Override public void writeCSVHeader(final ExportContextCSV exportContextCSV, final CollisionCalculationResults results, final RiverInfo river) { - final Collection header = new ArrayList<>(6); + final int colSize = 6; + exportContextCSV.writeTitleForTabs("sinfo.export.csv.title.collision.detail", 6); // Voraussetzung für Tabs ist, dass der Titel vor den Headern + // geschrieben wird. + // Das ist etwas doof. + + final Collection header = new ArrayList<>(colSize); header.add(exportContextCSV.formatCsvHeader(GeneralResultType.station)); header.add(exportContextCSV.formatCsvHeader(GeneralResultType.date)); @@ -55,7 +57,7 @@ header.add(exportContextCSV.formatCsvHeader(SInfoResultType.discharge)); header.add(exportContextCSV.formatCsvHeader(SInfoResultType.dischargeZone)); - exportContextCSV.writeCSVLine(header.toArray(new String[header.size()])); + exportContextCSV.writeCSVLine(header.toArray(new String[colSize])); } @Override diff -r 9b2e46090099 -r f1be005f0c46 artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/CollisionCalcOverviewResult.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/CollisionCalcOverviewResult.java Thu Jun 21 14:32:11 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/CollisionCalcOverviewResult.java Fri Jun 22 11:02:59 2018 +0200 @@ -40,18 +40,23 @@ // TODO Auto-generated method stub // final WstInfo wst = result.getWst(); // exportContext.writeCSVWaterlevelMetadata(writer, wst); + } @Override public void writeCSVHeader(final ExportContextCSV exportContextCSV, final CollisionCalculationResults results, final RiverInfo river) { + final int colSize = 3; + exportContextCSV.writeTitleForTabs("sinfo.export.csv.title.collison.overview", 3); // Voraussetzung für Tabs ist, dass der Titel vor den Headern + // geschrieben wird. + // Das ist etwas doof. - final Collection header = new ArrayList<>(3); + final Collection header = new ArrayList<>(colSize); header.add(exportContextCSV.formatCsvHeader(GeneralResultType.station)); header.add(exportContextCSV.formatCsvHeader(SInfoResultType.years)); header.add(exportContextCSV.formatCsvHeader(SInfoResultType.collisionCount)); - exportContextCSV.writeCSVLine(header.toArray(new String[header.size()])); + exportContextCSV.writeCSVLine(header.toArray(new String[colSize])); } @Override diff -r 9b2e46090099 -r f1be005f0c46 artifacts/src/main/resources/messages.properties --- a/artifacts/src/main/resources/messages.properties Thu Jun 21 14:32:11 2018 +0200 +++ b/artifacts/src/main/resources/messages.properties Fri Jun 22 11:02:59 2018 +0200 @@ -392,6 +392,7 @@ chart.beddifference.yaxis.label.heights = Absolute Height [m] chart.subtitle.radius = Width of sample window for moving average +export_csv_title = Title: export.csv.header.km = km export.csv.header.year = year @@ -1107,6 +1108,8 @@ sinfo.export.csv.header.infrastructure.height = Infrastrukturh\u00f6he infrastructure.height.title = Geod. H\u00f6he +sinfo.export.csv.title.collision.detail = Detail View +sinfo.export.csv.title.collison.overview = Overview sinfo.export.csv.header.collision.count = Anzahl der Grundber\u00fchrungen collision.count.title = Grundber\u00fchrungen {0} chart.collision_count.section.yaxis.label = H\u00e4ufigkeit diff -r 9b2e46090099 -r f1be005f0c46 artifacts/src/main/resources/messages_de.properties --- a/artifacts/src/main/resources/messages_de.properties Thu Jun 21 14:32:11 2018 +0200 +++ b/artifacts/src/main/resources/messages_de.properties Fri Jun 22 11:02:59 2018 +0200 @@ -392,6 +392,7 @@ chart.beddifference.yaxis.label.heights = Absolute H\u00f6he [{0}] chart.subtitle.radius = Fensterbreite f\u00fcr gleitenden Mittelwert +export_csv_title = Titel: export.csv.header.km = km export.csv.header.year = Jahr @@ -1107,6 +1108,8 @@ sinfo.export.csv.header.infrastructure.height = Infrastrukturh\u00f6he infrastructure.height.title = Geod. H\u00f6he +sinfo.export.csv.title.collision.detail = Detailansicht +sinfo.export.csv.title.collison.overview = \u00dcbersicht sinfo.export.csv.header.collision.count = Anzahl der Grundber\u00fchrungen collision.count.title = Grundber\u00fchrungen {0} chart.collision_count.section.yaxis.label = H\u00e4ufigkeit diff -r 9b2e46090099 -r f1be005f0c46 gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java Thu Jun 21 14:32:11 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java Fri Jun 22 11:02:59 2018 +0200 @@ -1540,4 +1540,6 @@ String sinfo_floodduration_export(); String sinfo_floodduration_report(); + + String export_csv_title(); } \ No newline at end of file diff -r 9b2e46090099 -r f1be005f0c46 gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties Thu Jun 21 14:32:11 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties Fri Jun 22 11:02:59 2018 +0200 @@ -827,4 +827,5 @@ bundu = Betrieb und Unterhaltung -chart_settings_export_metadata = Show Meta-Data \ No newline at end of file +chart_settings_export_metadata = Show Meta-Data +export_csv_title = Title: \ No newline at end of file diff -r 9b2e46090099 -r f1be005f0c46 gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties Thu Jun 21 14:32:11 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties Fri Jun 22 11:02:59 2018 +0200 @@ -827,4 +827,5 @@ bundu = Betrieb und Unterhaltung -chart_settings_export_metadata = Metadaten anzeigen \ No newline at end of file +chart_settings_export_metadata = Metadaten anzeigen +export_csv_title = Titel: \ No newline at end of file diff -r 9b2e46090099 -r f1be005f0c46 gwt-client/src/main/java/org/dive4elements/river/client/client/ui/TableDataPanel.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/TableDataPanel.java Thu Jun 21 14:32:11 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/TableDataPanel.java Fri Jun 22 11:02:59 2018 +0200 @@ -8,8 +8,9 @@ package org.dive4elements.river.client.client.ui; -import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.TreeMap; import org.dive4elements.river.client.client.Config; import org.dive4elements.river.client.client.FLYSConstants; @@ -134,20 +135,21 @@ } else { nf = NumberFormat.getFormat("#.##"); } - final List> tabData = getTabData(list); + final Map> tabData = getTabData(list); if (tabData.size() == 1) { - createTable(this.dataTable, tabData.get(0), nf, 0); + createTable(this.dataTable, tabData.get(tabData.keySet().iterator().next()), nf, 0); } else if (tabData.size() > 1) { - for (int i = 0; i < tabData.size(); i++) { - final List items = tabData.get(i); + final int index = 0; + for (final String key : tabData.keySet()) { + final List items = tabData.get(key); final ListGrid table = new ListGrid(); - createTable(table, items, nf, i); + createTable(table, items, nf, index); final Tab tab = new Tab(); - tab.setTitle("Ergebnis: " + i); // TODO: get Title from Server + tab.setTitle(key); tab.setPane(table); this.tabSet.addTab(tab); } @@ -197,7 +199,6 @@ f.setDisplayField(displayField[i]); f.setValueField(String.valueOf(i)); f.setSortByDisplayField(false); - } dataTableTab.setFields(fields); @@ -228,25 +229,51 @@ } } - private List> getTabData(final List raw) { - final List> tabs = new ArrayList>(); - String[] compare = raw.get(0); - int lastIndex = 0; + private Map> getTabData(final List raw) { + // Condition: tableTitle must be first + final Map> tabs = new TreeMap>(); // auto-sort - for (int i = 0; i < raw.size(); i++) { - final String[] row = raw.get(i); - if (compare.length != row.length) { - tabs.add(raw.subList(lastIndex, i)); - lastIndex = i; + if (raw.get(0)[0].startsWith(this.MESSAGES.export_csv_title())) { + // Bedingung für Tabs + int lastIndex = 0; + String lastTableTitle = ""; + + for (int i = 0; i < raw.size(); i++) { + + final String[] row = raw.get(i); + if (row[0].startsWith(this.MESSAGES.export_csv_title())) { + + if (i > 0) { + tabs.put(makeKeyTitle(lastTableTitle, tabs.size()), raw.subList((lastIndex + 1), (i))); // toIndex exclusive (without + // tabTitle-Line of the next tab, which is + // stored in the current row (raw.get(i)); + // fromIndex + // inclusive -> + // without tabTitle from the past tab -> + // lastindex+1 + } + lastTableTitle = row[0].replace(this.MESSAGES.export_csv_title(), ""); + lastIndex = i; + } + + if (i == (raw.size() - 1)) { + tabs.put(makeKeyTitle(lastTableTitle, tabs.size()), raw.subList((lastIndex + 1), i + 1)); + // last result-tab: + // toIndex exclusive -> last i + 1 + // fromIndex inclusive: lastInde +1 -> no title-line included + } + } - - if (i == (raw.size() - 1)) { - tabs.add(raw.subList(lastIndex, i + 1)); // toIndex exclusive, fromIndex inclusive - } - compare = row; + } else { + // plainOld Table, no TABS + tabs.put("", raw); } return tabs; } + + private String makeKeyTitle(final String title, final int index) { + return new StringBuilder().append("(").append((index + 1)).append(") ").append(title).toString(); + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :