mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-06 12:23:55 +00:00
Use initials when there is no space for the whole name
This commit is contained in:
1 parent
2df661e3a4
commit
6d081df701
2 files changed
+67
-3
No files matched your search
+29
@@ -1,5 +1,8 @@
|
|||||||
package com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList;
|
package com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import com.google.gwt.core.client.GWT;
|
import com.google.gwt.core.client.GWT;
|
||||||
import com.google.gwt.core.client.Scheduler;
|
import com.google.gwt.core.client.Scheduler;
|
||||||
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
|
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
|
||||||
@@ -7,8 +10,12 @@ import com.google.gwt.dom.client.AnchorElement;
|
|||||||
import com.google.gwt.dom.client.DivElement;
|
import com.google.gwt.dom.client.DivElement;
|
||||||
import com.google.gwt.dom.client.Style.Display;
|
import com.google.gwt.dom.client.Style.Display;
|
||||||
import com.google.gwt.dom.client.Style.Unit;
|
import com.google.gwt.dom.client.Style.Unit;
|
||||||
|
import com.google.gwt.event.logical.shared.ResizeEvent;
|
||||||
|
import com.google.gwt.event.logical.shared.ResizeHandler;
|
||||||
|
import com.google.gwt.event.shared.HandlerRegistration;
|
||||||
import com.google.gwt.uibinder.client.UiBinder;
|
import com.google.gwt.uibinder.client.UiBinder;
|
||||||
import com.google.gwt.uibinder.client.UiField;
|
import com.google.gwt.uibinder.client.UiField;
|
||||||
|
import com.google.gwt.user.client.Window;
|
||||||
import com.google.gwt.user.client.ui.Composite;
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
import com.sap.sailing.gwt.common.client.SharedResources;
|
import com.sap.sailing.gwt.common.client.SharedResources;
|
||||||
@@ -29,6 +36,9 @@ public class MultiRegattaListSteps extends Composite {
|
|||||||
@UiField DivElement leaderboardButtonContainerUi;
|
@UiField DivElement leaderboardButtonContainerUi;
|
||||||
@UiField AnchorElement leaderboardButtonUi;
|
@UiField AnchorElement leaderboardButtonUi;
|
||||||
|
|
||||||
|
private HandlerRegistration windowResizeHandlerRegistration;
|
||||||
|
private final List<MultiRegattaListStepsBody> allMultiregattaSteps = new ArrayList<MultiRegattaListStepsBody>();
|
||||||
|
|
||||||
public MultiRegattaListSteps(RegattaProgressDTO regattaProgress) {
|
public MultiRegattaListSteps(RegattaProgressDTO regattaProgress) {
|
||||||
MultiRegattaListResources.INSTANCE.css().ensureInjected();
|
MultiRegattaListResources.INSTANCE.css().ensureInjected();
|
||||||
initWidget(uiBinder.createAndBindUi(this));
|
initWidget(uiBinder.createAndBindUi(this));
|
||||||
@@ -41,9 +51,28 @@ public class MultiRegattaListSteps extends Composite {
|
|||||||
double parts = Math.pow(seriesProgress.getTotalRaceCount(), 0.4);
|
double parts = Math.pow(seriesProgress.getTotalRaceCount(), 0.4);
|
||||||
double percentage = 100.0 * parts / sumParts;
|
double percentage = 100.0 * parts / sumParts;
|
||||||
MultiRegattaListStepsBody stepsBody = new MultiRegattaListStepsBody(seriesProgress);
|
MultiRegattaListStepsBody stepsBody = new MultiRegattaListStepsBody(seriesProgress);
|
||||||
|
allMultiregattaSteps.add(stepsBody);
|
||||||
stepsBody.getElement().getStyle().setWidth(percentage, Unit.PCT);
|
stepsBody.getElement().getStyle().setWidth(percentage, Unit.PCT);
|
||||||
stepsContainerUi.appendChild(stepsBody.getElement());
|
stepsContainerUi.appendChild(stepsBody.getElement());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onLoad() {
|
||||||
|
windowResizeHandlerRegistration = Window.addResizeHandler(new ResizeHandler() {
|
||||||
|
@Override
|
||||||
|
public void onResize(ResizeEvent event) {
|
||||||
|
for (MultiRegattaListStepsBody widget : allMultiregattaSteps) {
|
||||||
|
widget.onResize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onUnload() {
|
||||||
|
windowResizeHandlerRegistration.removeHandler();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setLeaderboardNavigation(RegattaState regattaState, PlaceNavigation<?> placeNavigation) {
|
void setLeaderboardNavigation(RegattaState regattaState, PlaceNavigation<?> placeNavigation) {
|
||||||
|
|||||||
+38
-3
@@ -6,17 +6,22 @@ import java.util.Map;
|
|||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import com.google.gwt.core.client.GWT;
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.core.client.Scheduler;
|
||||||
|
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
|
||||||
import com.google.gwt.dom.client.DivElement;
|
import com.google.gwt.dom.client.DivElement;
|
||||||
import com.google.gwt.dom.client.Element;
|
import com.google.gwt.dom.client.Element;
|
||||||
|
import com.google.gwt.dom.client.Style.Display;
|
||||||
|
import com.google.gwt.dom.client.Style.Visibility;
|
||||||
import com.google.gwt.uibinder.client.UiBinder;
|
import com.google.gwt.uibinder.client.UiBinder;
|
||||||
import com.google.gwt.uibinder.client.UiField;
|
import com.google.gwt.uibinder.client.UiField;
|
||||||
|
import com.google.gwt.user.client.ui.RequiresResize;
|
||||||
import com.google.gwt.user.client.ui.UIObject;
|
import com.google.gwt.user.client.ui.UIObject;
|
||||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||||
import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressFleetDTO;
|
import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressFleetDTO;
|
||||||
import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressSeriesDTO;
|
import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressSeriesDTO;
|
||||||
import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO;
|
import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO;
|
||||||
|
|
||||||
public class MultiRegattaListStepsBody extends UIObject {
|
public class MultiRegattaListStepsBody extends UIObject implements RequiresResize {
|
||||||
|
|
||||||
private static final StringMessages I18N = StringMessages.INSTANCE;
|
private static final StringMessages I18N = StringMessages.INSTANCE;
|
||||||
private static MultiRegattaListStepsBodyUiBinder uiBinder = GWT.create(MultiRegattaListStepsBodyUiBinder.class);
|
private static MultiRegattaListStepsBodyUiBinder uiBinder = GWT.create(MultiRegattaListStepsBodyUiBinder.class);
|
||||||
@@ -29,18 +34,29 @@ public class MultiRegattaListStepsBody extends UIObject {
|
|||||||
@UiField DivElement progressUi;
|
@UiField DivElement progressUi;
|
||||||
@UiField DivElement fleetsContainerUi;
|
@UiField DivElement fleetsContainerUi;
|
||||||
|
|
||||||
|
private final String seriesName;
|
||||||
|
|
||||||
public MultiRegattaListStepsBody(RegattaProgressSeriesDTO seriesProgress) {
|
public MultiRegattaListStepsBody(RegattaProgressSeriesDTO seriesProgress) {
|
||||||
setElement(uiBinder.createAndBindUi(this));
|
setElement(uiBinder.createAndBindUi(this));
|
||||||
nameUi.setInnerText(DEFAULT_SERIES_NAME.equals(seriesProgress.getName()) ? I18N.races() : seriesProgress.getName());
|
nameUi.getStyle().setVisibility(Visibility.HIDDEN);
|
||||||
|
seriesName = DEFAULT_SERIES_NAME.equals(seriesProgress.getName()) ? I18N.races() : seriesProgress.getName();
|
||||||
|
nameUi.setInnerText(seriesName);
|
||||||
|
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
||||||
|
@Override
|
||||||
|
public void execute() {
|
||||||
|
renderNames();
|
||||||
|
}
|
||||||
|
});
|
||||||
if (seriesProgress.isCompleted()) {
|
if (seriesProgress.isCompleted()) {
|
||||||
progressUi.setInnerText(String.valueOf(seriesProgress.getTotalRaceCount()));
|
progressUi.setInnerText(String.valueOf(seriesProgress.getTotalRaceCount()));
|
||||||
} else {
|
} else {
|
||||||
checkUi.removeFromParent();
|
checkUi.getStyle().setDisplay(Display.NONE);
|
||||||
progressUi.setInnerText(I18N.currentOfTotal(
|
progressUi.setInnerText(I18N.currentOfTotal(
|
||||||
seriesProgress.getProgressRaceCount(), seriesProgress.getTotalRaceCount()));
|
seriesProgress.getProgressRaceCount(), seriesProgress.getTotalRaceCount()));
|
||||||
}
|
}
|
||||||
addFleetProgresses(seriesProgress.getFleetState(), seriesProgress.getTotalRaceCount());
|
addFleetProgresses(seriesProgress.getFleetState(), seriesProgress.getTotalRaceCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void addFleetProgresses(Map<FleetMetadataDTO, RegattaProgressFleetDTO> fleetStates, int totalRaceCount) {
|
private void addFleetProgresses(Map<FleetMetadataDTO, RegattaProgressFleetDTO> fleetStates, int totalRaceCount) {
|
||||||
double height = fleetStates.isEmpty() ? 100.0 : 100.0 / fleetStates.size();
|
double height = fleetStates.isEmpty() ? 100.0 : 100.0 / fleetStates.size();
|
||||||
@@ -52,4 +68,23 @@ public class MultiRegattaListStepsBody extends UIObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void renderNames() {
|
||||||
|
|
||||||
|
if (getElement().getOffsetWidth() < nameUi.getOffsetWidth() + checkUi.getOffsetWidth()
|
||||||
|
+ progressUi.getOffsetWidth()) {
|
||||||
|
String[] tokens = seriesName.split(" ");
|
||||||
|
StringBuilder initials = new StringBuilder();
|
||||||
|
for (int i = 0; i < tokens.length; i++) {
|
||||||
|
initials.append(tokens[i].charAt(0));
|
||||||
|
}
|
||||||
|
nameUi.setInnerText(initials.toString());
|
||||||
|
}
|
||||||
|
nameUi.setTitle(seriesName + " " + nameUi.getOffsetWidth() + " / " + getElement().getOffsetWidth());
|
||||||
|
nameUi.getStyle().setVisibility(Visibility.VISIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResize() {
|
||||||
|
renderNames();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user