mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-05 03:43:52 +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;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.core.client.Scheduler;
|
||||
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.Style.Display;
|
||||
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.UiField;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.common.client.SharedResources;
|
||||
@@ -29,6 +36,9 @@ public class MultiRegattaListSteps extends Composite {
|
||||
@UiField DivElement leaderboardButtonContainerUi;
|
||||
@UiField AnchorElement leaderboardButtonUi;
|
||||
|
||||
private HandlerRegistration windowResizeHandlerRegistration;
|
||||
private final List<MultiRegattaListStepsBody> allMultiregattaSteps = new ArrayList<MultiRegattaListStepsBody>();
|
||||
|
||||
public MultiRegattaListSteps(RegattaProgressDTO regattaProgress) {
|
||||
MultiRegattaListResources.INSTANCE.css().ensureInjected();
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
@@ -41,9 +51,28 @@ public class MultiRegattaListSteps extends Composite {
|
||||
double parts = Math.pow(seriesProgress.getTotalRaceCount(), 0.4);
|
||||
double percentage = 100.0 * parts / sumParts;
|
||||
MultiRegattaListStepsBody stepsBody = new MultiRegattaListStepsBody(seriesProgress);
|
||||
allMultiregattaSteps.add(stepsBody);
|
||||
stepsBody.getElement().getStyle().setWidth(percentage, Unit.PCT);
|
||||
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) {
|
||||
|
||||
+38
-3
@@ -6,17 +6,22 @@ import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
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.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.UiField;
|
||||
import com.google.gwt.user.client.ui.RequiresResize;
|
||||
import com.google.gwt.user.client.ui.UIObject;
|
||||
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.RegattaProgressSeriesDTO;
|
||||
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 MultiRegattaListStepsBodyUiBinder uiBinder = GWT.create(MultiRegattaListStepsBodyUiBinder.class);
|
||||
@@ -29,18 +34,29 @@ public class MultiRegattaListStepsBody extends UIObject {
|
||||
@UiField DivElement progressUi;
|
||||
@UiField DivElement fleetsContainerUi;
|
||||
|
||||
private final String seriesName;
|
||||
|
||||
public MultiRegattaListStepsBody(RegattaProgressSeriesDTO seriesProgress) {
|
||||
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()) {
|
||||
progressUi.setInnerText(String.valueOf(seriesProgress.getTotalRaceCount()));
|
||||
} else {
|
||||
checkUi.removeFromParent();
|
||||
checkUi.getStyle().setDisplay(Display.NONE);
|
||||
progressUi.setInnerText(I18N.currentOfTotal(
|
||||
seriesProgress.getProgressRaceCount(), seriesProgress.getTotalRaceCount()));
|
||||
}
|
||||
addFleetProgresses(seriesProgress.getFleetState(), seriesProgress.getTotalRaceCount());
|
||||
}
|
||||
|
||||
|
||||
private void addFleetProgresses(Map<FleetMetadataDTO, RegattaProgressFleetDTO> fleetStates, int totalRaceCount) {
|
||||
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