From 5b4acf8f44455f486bb1394dfde7c5d68c669ff8 Mon Sep 17 00:00:00 2001 From: Robin Kuck Date: Wed, 20 Dec 2017 11:49:24 +0100 Subject: [PATCH] bug3484 pl print view style added + checkboxes fix in dialog --- .../PairingListCreationDialog.java | 45 +++++-------- .../PairingListCreationSetupDialog.java | 56 ++++++++++------- .../ui/pairinglist/PairingListEntryPoint.java | 63 +++++++++++-------- .../sse/pairinglist/impl/PairingListImpl.java | 15 +++-- 4 files changed, 94 insertions(+), 85 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/PairingListCreationDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/PairingListCreationDialog.java index 50b26a812d0..dcd92956d50 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/PairingListCreationDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/PairingListCreationDialog.java @@ -8,10 +8,10 @@ import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.CaptionPanel; import com.google.gwt.user.client.ui.Grid; -import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.ScrollPanel; @@ -31,9 +31,9 @@ public class PairingListCreationDialog extends DataEntryDialog() { + template.getFlightMultiplier(), template.getSelectedFlightNames(), template, + new AsyncCallback() { @Override - public void onSuccess(Void result) { /*TODO: log successfull*/} + public void onSuccess(Void result) { + /* TODO: log successfull */} + @Override public void onFailure(Throwable caught) { caught.printStackTrace(); @@ -153,34 +159,15 @@ public class PairingListCreationDialog extends DataEntryDialog() { @Override public void onValueChange(ValueChangeEvent event) { - if(event.getValue()) { - disableSelectedSeriesCheckBoxes(leaderboardDTO); - if (flightMultiplierCheckBox.getValue()) { - if (Util.size(getCheckedSelectedCheckBoxes()) > 0) { - enableOrDisableAllSelectedSeriesCheckBoxes(false, true); - } - } else { - if (Util.size(getCheckedSelectedCheckBoxes()) > 1) { - flightMultiplierCheckBox.setEnabled(false); - } else { - flightMultiplierCheckBox.setEnabled(true); - } - } - } else { - if(Util.size(getCheckedSelectedCheckBoxes()) > 0) { - - } else { - enableOrDisableAllSelectedSeriesCheckBoxes(true, false); - } - if(Util.size(getCheckedSelectedCheckBoxes()) < 2) { - flightMultiplierCheckBox.setEnabled(true); - } - } + validateCheckboxes(event.getValue()); } }); current.ensureDebugId("SelectedFlightsCheckbox: " + seriesName); checkboxes.add(current); } selectedSeriesCheckboxes = checkboxes; + Util.get(selectedSeriesCheckboxes, 0).setValue(true); + validateCheckboxes(true); } @Override @@ -172,6 +153,32 @@ public class PairingListCreationSetupDialog extends AbstractPairingListCreationS this.validateAndUpdate(); } } + + private void validateCheckboxes(boolean enabled) { + if(enabled) { + disableSelectedSeriesCheckBoxes(leaderboardDTO); + if (flightMultiplierCheckBox.getValue()) { + if (Util.size(getCheckedSelectedCheckBoxes()) > 0) { + enableOrDisableAllSelectedSeriesCheckBoxes(false, true); + } + } else { + if (Util.size(getCheckedSelectedCheckBoxes()) > 1) { + flightMultiplierCheckBox.setEnabled(false); + } else { + flightMultiplierCheckBox.setEnabled(true); + } + } + } else { + if(Util.size(getCheckedSelectedCheckBoxes()) > 0) { + + } else { + enableOrDisableAllSelectedSeriesCheckBoxes(true, false); + } + if(Util.size(getCheckedSelectedCheckBoxes()) < 2) { + flightMultiplierCheckBox.setEnabled(true); + } + } + } private Iterable getSeriesNamesFromAllRaces(final Iterable raceColumns) { List result = new ArrayList<>(); @@ -245,6 +252,9 @@ public class PairingListCreationSetupDialog extends AbstractPairingListCreationS box.setEnabled(enabled); } } else { + if(Util.size(getCheckedSelectedCheckBoxes())>0) { + return; + } for (CheckBox box : selectedSeriesCheckboxes) { box.setEnabled(enabled); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/pairinglist/PairingListEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/pairinglist/PairingListEntryPoint.java index 8758d08e945..149dad6ee58 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/pairinglist/PairingListEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/pairinglist/PairingListEntryPoint.java @@ -8,6 +8,7 @@ import com.google.gwt.dom.client.Style.TextAlign; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.DockLayoutPanel; @@ -34,7 +35,7 @@ public class PairingListEntryPoint extends AbstractSailingEntryPoint { private PairingListContextDefinition pairingListContextDefinition; private StringMessages stringmessages = StringMessages.INSTANCE; - + @Override protected void doOnModuleLoad() { super.doOnModuleLoad(); @@ -59,7 +60,7 @@ public class PairingListEntryPoint extends AbstractSailingEntryPoint { mainPanel.addNorth(header, 75); Button btn = new Button("Print"); - + VerticalPanel contentPanel = new VerticalPanel(); contentPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); contentPanel.add(btn); @@ -67,20 +68,24 @@ public class PairingListEntryPoint extends AbstractSailingEntryPoint { contentPanel.getElement().getStyle().setProperty("marginTop", "15px"); contentPanel.getElement().getStyle().setProperty("marginBottom", "15px"); scrollPanel.add(contentPanel); - + sailingService.getPairingListFromRaceLogs(pairingListContextDefinition.getLeaderboardName(), new AsyncCallback() { @Override public void onSuccess(PairingListDTO result) { VerticalPanel pairingListPanel = createPairingListPanel(result); - contentPanel.add(pairingListPanel); + contentPanel.add(pairingListPanel); + btn.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { - //TODO use safe html encoding - printPairingListGrid("

" + pairingListContextDefinition.getLeaderboardName() - + "

" + pairingListPanel.asWidget().getElement().getInnerHTML()); + printPairingListGrid("
" + + "" + + SafeHtmlUtils.fromString(pairingListContextDefinition.getLeaderboardName()) + .asString() + + "
" + pairingListPanel.asWidget().getElement().getInnerHTML()); + } }); } @@ -180,6 +185,7 @@ public class PairingListEntryPoint extends AbstractSailingEntryPoint { flightIndexInGrid++; } + VerticalPanel pairingListPanel = new VerticalPanel(); pairingListPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); pairingListPanel.add(pairingListGrid); @@ -187,40 +193,47 @@ public class PairingListEntryPoint extends AbstractSailingEntryPoint { pairingListPanel.ensureDebugId("PairingListPanel"); pairingListPanel.getElement().getStyle().setProperty("marginTop", "15px"); - ScrollPanel result = new ScrollPanel(); - result.add(pairingListPanel); - return pairingListPanel; } //TODO search for gwt API (Window, Document) private native void printPairingListGrid(String pageHTMLContent) /*-{ - - var frame = $doc.getElementById('__gwt_historyFrame'); + var frameID = '__gwt_historyFrame'; + var frame = $doc.getElementById(frameID); + if (!frame) { + $wnd.alert("Error: Can not find frame '" + frameID + "'"); + return; + } frame = frame.contentWindow; - var doc = frame.document; - doc.open(); - doc.write(pageHTMLContent); + var document = frame.document; + document.open(); + document.write(pageHTMLContent); //adding style to doc var css = "body { background: #fff; font-family: 'Open Sans', Arial, Verdana, sans-serif;" - + "line-height: 1; font-weight: 400; border: 0}" - + "h2 { text-align: center }" - + "table { border-collapse: collapse; border: 1px solid black; margin: auto}" - + "td { font-size: 15px; }" - head = doc.head || doc.getElementsByTagName('head')[0], style = doc - .createElement('style'); + + "line-height: 1; font-weight: 400; border: 0 }" + + ".title { font-size: 18px; text-align: center; float: right; color: #f6f9fc; margin-bottom: 0.466666666666667em; margin-right: 0.466666666666667em }" + + "img { max-height: 2em; float:left; margin-top: 0.466666666666667em; margin-left: 0.466666666666667em }" + + ".printHeader { font-size: 1rem; background: #333; border-bottom: 0.333333333333333em solid #f0ab00;" + + "height: 3.333333333333333em; line-height: 3em; width: 100%; overflow: hidden;}" + + "table { border-collapse: collapse; border: 1px solid black; margin: auto; width: 100%}" + + "td { font-size: 1em; }" + head = document.head || document.getElementsByTagName('head')[0]; + style = document.createElement('style'); style.type = 'text/css'; if (style.styleSheet) { style.styleSheet.cssText = css; } else { - style.appendChild(doc.createTextNode(css)); + style.appendChild(document.createTextNode(css)); } head.appendChild(style); - doc.close(); - frame.focus(); - frame.print(); + document.close(); + + setTimeout(function() { + frame.focus(); + frame.print(); + }, 500); }-*/; } diff --git a/java/com.sap.sse/src/com/sap/sse/pairinglist/impl/PairingListImpl.java b/java/com.sap.sse/src/com/sap/sse/pairinglist/impl/PairingListImpl.java index 18e616ea4bf..a7610c7ab67 100644 --- a/java/com.sap.sse/src/com/sap/sse/pairinglist/impl/PairingListImpl.java +++ b/java/com.sap.sse/src/com/sap/sse/pairinglist/impl/PairingListImpl.java @@ -33,17 +33,16 @@ public class PairingListImpl implements PairingL final int groupIndex = Util.indexOf(competitionFormat.getGroups(flight), group); final int groupCount =Util.size(competitionFormat.getGroups(flight)); final ArrayList competitorIndicesInRace = new ArrayList<>(); - for (Integer integer : competitorIndices[flightIndex*groupCount+groupIndex]) { competitorIndicesInRace.add(integer); } - - final List> result = new ArrayList<>(); - for(int slot=0;slot=0){ - result.add(new Pair(competitors.get(competitorIndicesInRace.get(slot)), boats.get(slot))); - }else{ - result.add(new Pair(null, boats.get(slot))); + final List> result = new ArrayList<>(); + for (int boatSlotInRace = 0; boatSlotInRace < competitorIndicesInRace.size(); boatSlotInRace++) { + if (competitorIndicesInRace.get(boatSlotInRace) >= 0) { + result.add(new Pair(competitors.get(competitorIndicesInRace.get(boatSlotInRace)), + boats.get(boatSlotInRace))); + } else { + result.add(new Pair(null, boats.get(boatSlotInRace))); } } return result;