mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-25 21:43:49 +00:00
New page objects and corresponding debug-ids added as well as some
refactoring of old ones for better maintainability.
This commit is contained in:
1 parent
218a7b28d7
commit
818de01c3f
53 files changed
+2201
-397
No files matched your search
+4
-1
@@ -23,11 +23,14 @@ public abstract class AbstractEventManagementPanel extends AbstractRegattaPanel
|
|||||||
ErrorReporter errorReporter, RaceSelectionProvider raceSelectionProvider, StringMessages stringMessages) {
|
ErrorReporter errorReporter, RaceSelectionProvider raceSelectionProvider, StringMessages stringMessages) {
|
||||||
super(sailingService, regattaRefresher, errorReporter, stringMessages);
|
super(sailingService, regattaRefresher, errorReporter, stringMessages);
|
||||||
this.availableRegattas = new ArrayList<RegattaDTO>();
|
this.availableRegattas = new ArrayList<RegattaDTO>();
|
||||||
|
|
||||||
this.availableRegattasListBox = new ListBox();
|
this.availableRegattasListBox = new ListBox();
|
||||||
this.availableRegattasListBox.ensureDebugId("AvailableRegattas");
|
this.availableRegattasListBox.ensureDebugId("AvailableRegattasListBox");
|
||||||
|
|
||||||
// TrackedEventsComposite should exist in every *ManagementPanel.
|
// TrackedEventsComposite should exist in every *ManagementPanel.
|
||||||
trackedRacesListComposite = new TrackedRacesListComposite(sailingService, errorReporter, regattaRefresher,
|
trackedRacesListComposite = new TrackedRacesListComposite(sailingService, errorReporter, regattaRefresher,
|
||||||
raceSelectionProvider, stringMessages, /* multiselection */ true);
|
raceSelectionProvider, stringMessages, /* multiselection */ true);
|
||||||
|
trackedRacesListComposite.ensureDebugId("TrackedRacesListComposite");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+3
-2
@@ -126,7 +126,7 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel impl
|
|||||||
|
|
||||||
AdminConsoleTableResources tableRes = GWT.create(AdminConsoleTableResources.class);
|
AdminConsoleTableResources tableRes = GWT.create(AdminConsoleTableResources.class);
|
||||||
raceTable = new CellTable<RaceDTO>(/* pageSize */10000, tableRes);
|
raceTable = new CellTable<RaceDTO>(/* pageSize */10000, tableRes);
|
||||||
raceTable.ensureDebugId("TrackedRaces");
|
raceTable.ensureDebugId("TrackedRacesCellTable");
|
||||||
ListHandler<RaceDTO> columnSortHandler = setupTableColumns(stringMessages);
|
ListHandler<RaceDTO> columnSortHandler = setupTableColumns(stringMessages);
|
||||||
raceTable.setWidth("300px");
|
raceTable.setWidth("300px");
|
||||||
raceTable.setSelectionModel(selectionModel);
|
raceTable.setSelectionModel(selectionModel);
|
||||||
@@ -163,13 +163,14 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel impl
|
|||||||
return strings;
|
return strings;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
filterablePanelRaces.getTextBox().ensureDebugId("TrackedRacesFilterTextBox");
|
||||||
filterPanel.add(filterablePanelRaces);
|
filterPanel.add(filterablePanelRaces);
|
||||||
HorizontalPanel trackedRacesButtonPanel = new HorizontalPanel();
|
HorizontalPanel trackedRacesButtonPanel = new HorizontalPanel();
|
||||||
trackedRacesButtonPanel.setSpacing(10);
|
trackedRacesButtonPanel.setSpacing(10);
|
||||||
panel.add(trackedRacesButtonPanel);
|
panel.add(trackedRacesButtonPanel);
|
||||||
|
|
||||||
btnRefresh = new Button(stringMessages.refresh());
|
btnRefresh = new Button(stringMessages.refresh());
|
||||||
btnRefresh.ensureDebugId("Refresh");
|
btnRefresh.ensureDebugId("RefreshButton");
|
||||||
btnRefresh.addClickHandler(new ClickHandler() {
|
btnRefresh.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
|
|||||||
+3
-3
@@ -62,7 +62,7 @@ public class AdminConsoleEntryPoint extends AbstractEntryPoint implements Regatt
|
|||||||
|
|
||||||
RegattaStructureManagementPanel eventStructureManagementPanel = new RegattaStructureManagementPanel(
|
RegattaStructureManagementPanel eventStructureManagementPanel = new RegattaStructureManagementPanel(
|
||||||
sailingService, this, stringMessages, this);
|
sailingService, this, stringMessages, this);
|
||||||
// eventStructureManagementPanel.ensureDebugId("RegattaStructureManagement");
|
eventStructureManagementPanel.ensureDebugId("RegattaStructureManagement");
|
||||||
eventStructureManagementPanel.setSize("90%", "90%");
|
eventStructureManagementPanel.setSize("90%", "90%");
|
||||||
addScrollableTab(tabPanel, eventStructureManagementPanel, stringMessages.regattas());
|
addScrollableTab(tabPanel, eventStructureManagementPanel, stringMessages.regattas());
|
||||||
regattaDisplayers.add(eventStructureManagementPanel);
|
regattaDisplayers.add(eventStructureManagementPanel);
|
||||||
@@ -100,7 +100,7 @@ public class AdminConsoleEntryPoint extends AbstractEntryPoint implements Regatt
|
|||||||
|
|
||||||
TrackedRacesManagementPanel trackedRacesManagementPanel = new TrackedRacesManagementPanel(sailingService, this,
|
TrackedRacesManagementPanel trackedRacesManagementPanel = new TrackedRacesManagementPanel(sailingService, this,
|
||||||
this, stringMessages);
|
this, stringMessages);
|
||||||
// trackedRacesManagementPanel.ensureDebugId("TrackedRacesManagement");
|
trackedRacesManagementPanel.ensureDebugId("TrackedRacesManagement");
|
||||||
trackedRacesManagementPanel.setSize("90%", "90%");
|
trackedRacesManagementPanel.setSize("90%", "90%");
|
||||||
addScrollableTab(tabPanel, trackedRacesManagementPanel, stringMessages.trackedRaces());
|
addScrollableTab(tabPanel, trackedRacesManagementPanel, stringMessages.trackedRaces());
|
||||||
regattaDisplayers.add(trackedRacesManagementPanel);
|
regattaDisplayers.add(trackedRacesManagementPanel);
|
||||||
@@ -127,7 +127,7 @@ public class AdminConsoleEntryPoint extends AbstractEntryPoint implements Regatt
|
|||||||
|
|
||||||
final LeaderboardGroupConfigPanel leaderboardGroupConfigPanel = new LeaderboardGroupConfigPanel(sailingService,
|
final LeaderboardGroupConfigPanel leaderboardGroupConfigPanel = new LeaderboardGroupConfigPanel(sailingService,
|
||||||
this, this, stringMessages);
|
this, this, stringMessages);
|
||||||
// leaderboardGroupConfigPanel.ensureDebugId("LeaderboardGroupConfiguration");
|
leaderboardGroupConfigPanel.ensureDebugId("LeaderboardGroupConfiguration");
|
||||||
leaderboardGroupConfigPanel.setSize("90%", "90%");
|
leaderboardGroupConfigPanel.setSize("90%", "90%");
|
||||||
addScrollableTab(tabPanel, leaderboardGroupConfigPanel, stringMessages.leaderboardGroupConfiguration());
|
addScrollableTab(tabPanel, leaderboardGroupConfigPanel, stringMessages.leaderboardGroupConfiguration());
|
||||||
regattaDisplayers.add(leaderboardGroupConfigPanel);
|
regattaDisplayers.add(leaderboardGroupConfigPanel);
|
||||||
|
|||||||
+7
@@ -46,9 +46,16 @@ public class FleetListEditorComposite extends ListEditorComposite<FleetDTO> {
|
|||||||
panel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
|
panel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
|
||||||
|
|
||||||
final TextBox nameBox = createNameBox();
|
final TextBox nameBox = createNameBox();
|
||||||
|
nameBox.ensureDebugId("NameTextBox");
|
||||||
|
|
||||||
final IntegerBox orderNoBox = createOrderNoBox();
|
final IntegerBox orderNoBox = createOrderNoBox();
|
||||||
|
orderNoBox.ensureDebugId("OrderNoIntegerBox");
|
||||||
|
|
||||||
final ListBox colorListBox = createColorListBox(nameBox, orderNoBox);
|
final ListBox colorListBox = createColorListBox(nameBox, orderNoBox);
|
||||||
|
colorListBox.ensureDebugId("ColorListBox");
|
||||||
|
|
||||||
final Button addButton = new Button(stringMessages.add());
|
final Button addButton = new Button(stringMessages.add());
|
||||||
|
addButton.ensureDebugId("AddButton");
|
||||||
addButton.addClickHandler(new ClickHandler() {
|
addButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
|
|||||||
+4
-2
@@ -14,9 +14,11 @@ public class FlexibleLeaderboardCreateDialog extends FlexibleLeaderboardDialog {
|
|||||||
super(stringMessages.createFlexibleLeaderboard(), new LeaderboardDescriptor(), stringMessages, existingEvents,
|
super(stringMessages.createFlexibleLeaderboard(), new LeaderboardDescriptor(), stringMessages, existingEvents,
|
||||||
errorReporter, new FlexibleLeaderboardDialog.LeaderboardParameterValidator(stringMessages, existingLeaderboards), callback);
|
errorReporter, new FlexibleLeaderboardDialog.LeaderboardParameterValidator(stringMessages, existingLeaderboards), callback);
|
||||||
nameTextBox = createTextBox(null);
|
nameTextBox = createTextBox(null);
|
||||||
nameTextBox.ensureDebugId("LeaderboardNameField");
|
nameTextBox.ensureDebugId("NameTextBox");
|
||||||
displayNameTextBox = createTextBox(null);
|
|
||||||
nameTextBox.setVisibleLength(50);
|
nameTextBox.setVisibleLength(50);
|
||||||
|
|
||||||
|
displayNameTextBox = createTextBox(null);
|
||||||
|
displayNameTextBox.ensureDebugId("DisplayNameTextBox");
|
||||||
displayNameTextBox.setVisibleLength(50);
|
displayNameTextBox.setVisibleLength(50);
|
||||||
|
|
||||||
scoringSchemeListBox = createScoringSchemeListBox(this, stringMessages);
|
scoringSchemeListBox = createScoringSchemeListBox(this, stringMessages);
|
||||||
|
|||||||
+60
-47
@@ -197,6 +197,7 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
|
|
||||||
AdminConsoleTableResources tableRes = GWT.create(AdminConsoleTableResources.class);
|
AdminConsoleTableResources tableRes = GWT.create(AdminConsoleTableResources.class);
|
||||||
leaderboardTable = new CellTable<StrippedLeaderboardDTO>(/* pageSize */10000, tableRes);
|
leaderboardTable = new CellTable<StrippedLeaderboardDTO>(/* pageSize */10000, tableRes);
|
||||||
|
leaderboardTable.ensureDebugId("LeaderboardsCellTable");
|
||||||
filterLeaderboardPanel = new AbstractFilterablePanel<StrippedLeaderboardDTO>(lblFilterEvents, availableLeaderboardList, leaderboardTable, leaderboardList) {
|
filterLeaderboardPanel = new AbstractFilterablePanel<StrippedLeaderboardDTO>(lblFilterEvents, availableLeaderboardList, leaderboardTable, leaderboardList) {
|
||||||
@Override
|
@Override
|
||||||
public List<String> getSearchableStrings(StrippedLeaderboardDTO t) {
|
public List<String> getSearchableStrings(StrippedLeaderboardDTO t) {
|
||||||
@@ -206,7 +207,10 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
return strings;
|
return strings;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
filterLeaderboardPanel.getTextBox().ensureDebugId("LeaderboardsFilterTextBox");
|
||||||
|
|
||||||
leaderboardRemoveButton = new Button(stringMessages.remove());
|
leaderboardRemoveButton = new Button(stringMessages.remove());
|
||||||
|
leaderboardRemoveButton.ensureDebugId("LeaderboardsRemoveButton");
|
||||||
leaderboardRemoveButton.setEnabled(false);
|
leaderboardRemoveButton.setEnabled(false);
|
||||||
leaderboardRemoveButton.addClickHandler(new ClickHandler() {
|
leaderboardRemoveButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
@@ -219,7 +223,6 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
leaderboardConfigControlsPanel.add(filterLeaderboardPanel);
|
leaderboardConfigControlsPanel.add(filterLeaderboardPanel);
|
||||||
leaderboardConfigControlsPanel.add(leaderboardRemoveButton);
|
leaderboardConfigControlsPanel.add(leaderboardRemoveButton);
|
||||||
leaderboardsPanel.add(leaderboardConfigControlsPanel);
|
leaderboardsPanel.add(leaderboardConfigControlsPanel);
|
||||||
leaderboardTable.ensureDebugId("AvailableLeaderboardsTable");
|
|
||||||
ListHandler<StrippedLeaderboardDTO> leaderboardColumnListHandler = new ListHandler<StrippedLeaderboardDTO>(
|
ListHandler<StrippedLeaderboardDTO> leaderboardColumnListHandler = new ListHandler<StrippedLeaderboardDTO>(
|
||||||
leaderboardList.getList());
|
leaderboardList.getList());
|
||||||
|
|
||||||
@@ -384,6 +387,7 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
});
|
});
|
||||||
leaderboardList.addDataDisplay(leaderboardTable);
|
leaderboardList.addDataDisplay(leaderboardTable);
|
||||||
leaderboardsPanel.add(leaderboardTable);
|
leaderboardsPanel.add(leaderboardTable);
|
||||||
|
|
||||||
HorizontalPanel leaderboardButtonPanel = new HorizontalPanel();
|
HorizontalPanel leaderboardButtonPanel = new HorizontalPanel();
|
||||||
leaderboardButtonPanel.setSpacing(5);
|
leaderboardButtonPanel.setSpacing(5);
|
||||||
leaderboardsPanel.add(leaderboardButtonPanel);
|
leaderboardsPanel.add(leaderboardButtonPanel);
|
||||||
@@ -411,6 +415,7 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
|
|
||||||
// caption panels for the selected leaderboard and tracked races
|
// caption panels for the selected leaderboard and tracked races
|
||||||
HorizontalPanel splitPanel = new HorizontalPanel();
|
HorizontalPanel splitPanel = new HorizontalPanel();
|
||||||
|
splitPanel.ensureDebugId("LeaderboardDetailsPanel");
|
||||||
mainPanel.add(splitPanel);
|
mainPanel.add(splitPanel);
|
||||||
|
|
||||||
selectedLeaderBoardPanel = new CaptionPanel(stringMessages.leaderboard());
|
selectedLeaderBoardPanel = new CaptionPanel(stringMessages.leaderboard());
|
||||||
@@ -433,11 +438,13 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
raceSelectionProvider = new RaceSelectionModel();
|
raceSelectionProvider = new RaceSelectionModel();
|
||||||
trackedRacesListComposite = new TrackedRacesListComposite(sailingService, errorReporter, adminConsole,
|
trackedRacesListComposite = new TrackedRacesListComposite(sailingService, errorReporter, adminConsole,
|
||||||
raceSelectionProvider, stringMessages, /* multiselection */false);
|
raceSelectionProvider, stringMessages, /* multiselection */false);
|
||||||
|
trackedRacesListComposite.ensureDebugId("TrackedRacesListComposite");
|
||||||
trackedRacesPanel.add(trackedRacesListComposite);
|
trackedRacesPanel.add(trackedRacesListComposite);
|
||||||
trackedRacesListComposite.addTrackedRaceChangeListener(this);
|
trackedRacesListComposite.addTrackedRaceChangeListener(this);
|
||||||
raceSelectionProvider.addRaceSelectionChangeListener(this);
|
raceSelectionProvider.addRaceSelectionChangeListener(this);
|
||||||
|
|
||||||
Button reloadAllRaceLogs = new Button(stringMessages.reloadAllRaceLogs());
|
Button reloadAllRaceLogs = new Button(stringMessages.reloadAllRaceLogs());
|
||||||
|
reloadAllRaceLogs.ensureDebugId("ReloadAllRaceLogsButton");
|
||||||
reloadAllRaceLogs.addClickHandler(new ClickHandler() {
|
reloadAllRaceLogs.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
@@ -537,6 +544,7 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
Label lblRaceNamesIn = new Label(stringMessages.races());
|
Label lblRaceNamesIn = new Label(stringMessages.races());
|
||||||
vPanel.add(lblRaceNamesIn);
|
vPanel.add(lblRaceNamesIn);
|
||||||
raceColumnTable = new CellTable<RaceColumnDTOAndFleetDTOWithNameBasedEquality>(/* pageSize */200, tableRes);
|
raceColumnTable = new CellTable<RaceColumnDTOAndFleetDTOWithNameBasedEquality>(/* pageSize */200, tableRes);
|
||||||
|
raceColumnTable.ensureDebugId("RacesCellTable");
|
||||||
raceColumnTable.addColumn(raceLinkColumn, stringMessages.name());
|
raceColumnTable.addColumn(raceLinkColumn, stringMessages.name());
|
||||||
raceColumnTable.addColumn(fleetNameColumn, stringMessages.fleet());
|
raceColumnTable.addColumn(fleetNameColumn, stringMessages.fleet());
|
||||||
raceColumnTable.addColumn(isMedalRaceCheckboxColumn, stringMessages.medalRace());
|
raceColumnTable.addColumn(isMedalRaceCheckboxColumn, stringMessages.medalRace());
|
||||||
@@ -559,7 +567,7 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
vPanel.add(selectedLeaderboardRaceButtonPanel);
|
vPanel.add(selectedLeaderboardRaceButtonPanel);
|
||||||
|
|
||||||
addRaceColumnsButton = new Button(stringMessages.actionAddRaces() + "...");
|
addRaceColumnsButton = new Button(stringMessages.actionAddRaces() + "...");
|
||||||
selectedLeaderboardRaceButtonPanel.add(addRaceColumnsButton);
|
addRaceColumnsButton.ensureDebugId("AddRacesButton");
|
||||||
addRaceColumnsButton.addClickHandler(new ClickHandler() {
|
addRaceColumnsButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
@@ -570,23 +578,27 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
selectedLeaderboardRaceButtonPanel.add(addRaceColumnsButton);
|
||||||
|
|
||||||
columnMoveUpButton = new Button(stringMessages.columnMoveUp());
|
columnMoveUpButton = new Button(stringMessages.columnMoveUp());
|
||||||
selectedLeaderboardRaceButtonPanel.add(columnMoveUpButton);
|
columnMoveUpButton.ensureDebugId("MoveRaceUpButton");
|
||||||
columnMoveUpButton.addClickHandler(new ClickHandler() {
|
columnMoveUpButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
moveSelectedRaceColumnUp();
|
moveSelectedRaceColumnUp();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
selectedLeaderboardRaceButtonPanel.add(columnMoveUpButton);
|
||||||
|
|
||||||
columnMoveDownButton = new Button(stringMessages.columnMoveDown());
|
columnMoveDownButton = new Button(stringMessages.columnMoveDown());
|
||||||
selectedLeaderboardRaceButtonPanel.add(columnMoveDownButton);
|
columnMoveDownButton.ensureDebugId("MoveRaceDownButton");
|
||||||
columnMoveDownButton.addClickHandler(new ClickHandler() {
|
columnMoveDownButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
moveSelectedRaceColumnDown();
|
moveSelectedRaceColumnDown();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
selectedLeaderboardRaceButtonPanel.add(columnMoveDownButton);
|
||||||
|
|
||||||
loadLeaderboards();
|
loadLeaderboards();
|
||||||
}
|
}
|
||||||
@@ -637,9 +649,9 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void loadLeaderboards() {
|
public void loadLeaderboards() {
|
||||||
sailingService.getLeaderboards(new AsyncCallback<List<StrippedLeaderboardDTO>>() {
|
sailingService.getLeaderboards(new MarkedAsyncCallback<List<StrippedLeaderboardDTO>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(List<StrippedLeaderboardDTO> leaderboards) {
|
public void handleSuccess(List<StrippedLeaderboardDTO> leaderboards) {
|
||||||
leaderboardList.getList().clear();
|
leaderboardList.getList().clear();
|
||||||
availableLeaderboardList.clear();
|
availableLeaderboardList.clear();
|
||||||
leaderboardList.getList().addAll(leaderboards);
|
leaderboardList.getList().addAll(leaderboards);
|
||||||
@@ -650,7 +662,7 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void handleFailure(Throwable t) {
|
||||||
LeaderboardConfigPanel.this.errorReporter.reportError("Error trying to obtain list of leaderboards: "
|
LeaderboardConfigPanel.this.errorReporter.reportError("Error trying to obtain list of leaderboards: "
|
||||||
+ t.getMessage());
|
+ t.getMessage());
|
||||||
}
|
}
|
||||||
@@ -663,9 +675,9 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
* after the refresh has successfully completed. See {@link #selectRaceColumn(String)}.
|
* after the refresh has successfully completed. See {@link #selectRaceColumn(String)}.
|
||||||
*/
|
*/
|
||||||
public void loadAndRefreshLeaderboard(final String leaderboardName, final String nameOfRaceColumnToSelect) {
|
public void loadAndRefreshLeaderboard(final String leaderboardName, final String nameOfRaceColumnToSelect) {
|
||||||
sailingService.getLeaderboard(leaderboardName, new AsyncCallback<StrippedLeaderboardDTO>() {
|
sailingService.getLeaderboard(leaderboardName, new MarkedAsyncCallback<StrippedLeaderboardDTO>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(StrippedLeaderboardDTO leaderboard) {
|
public void handleSuccess(StrippedLeaderboardDTO leaderboard) {
|
||||||
for (StrippedLeaderboardDTO leaderboardDTO : leaderboardSelectionModel.getSelectedSet()) {
|
for (StrippedLeaderboardDTO leaderboardDTO : leaderboardSelectionModel.getSelectedSet()) {
|
||||||
if (leaderboardDTO.name.equals(leaderboardName)) {
|
if (leaderboardDTO.name.equals(leaderboardName)) {
|
||||||
leaderboardSelectionModel.setSelected(leaderboardDTO, false);
|
leaderboardSelectionModel.setSelected(leaderboardDTO, false);
|
||||||
@@ -683,7 +695,7 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void handleFailure(Throwable t) {
|
||||||
LeaderboardConfigPanel.this.errorReporter.reportError("Error trying to update leaderboard with name " + leaderboardName + " : "
|
LeaderboardConfigPanel.this.errorReporter.reportError("Error trying to update leaderboard with name " + leaderboardName + " : "
|
||||||
+ t.getMessage());
|
+ t.getMessage());
|
||||||
}
|
}
|
||||||
@@ -706,15 +718,15 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
private void unlinkRaceColumnFromTrackedRace(final String raceColumnName, final FleetDTO fleet) {
|
private void unlinkRaceColumnFromTrackedRace(final String raceColumnName, final FleetDTO fleet) {
|
||||||
final String selectedLeaderboardName = getSelectedLeaderboardName();
|
final String selectedLeaderboardName = getSelectedLeaderboardName();
|
||||||
sailingService.disconnectLeaderboardColumnFromTrackedRace(selectedLeaderboardName, raceColumnName, fleet.getName(),
|
sailingService.disconnectLeaderboardColumnFromTrackedRace(selectedLeaderboardName, raceColumnName, fleet.getName(),
|
||||||
new AsyncCallback<Void>() {
|
new MarkedAsyncCallback<Void>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void handleFailure(Throwable t) {
|
||||||
errorReporter.reportError("Error trying to unlink tracked race from column " + raceColumnName
|
errorReporter.reportError("Error trying to unlink tracked race from column " + raceColumnName
|
||||||
+ " from leaderboard " + selectedLeaderboardName + ": " + t.getMessage());
|
+ " from leaderboard " + selectedLeaderboardName + ": " + t.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Void arg0) {
|
public void handleSuccess(Void arg0) {
|
||||||
trackedRacesListComposite.clearSelection();
|
trackedRacesListComposite.clearSelection();
|
||||||
getSelectedRaceColumnWithFleet().getA().setRaceIdentifier(fleet, null);
|
getSelectedRaceColumnWithFleet().getA().setRaceIdentifier(fleet, null);
|
||||||
raceColumnAndFleetList.refresh();
|
raceColumnAndFleetList.refresh();
|
||||||
@@ -749,15 +761,15 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
|
|
||||||
private void refreshRaceLog(final RaceColumnDTO raceColumnDTO, final FleetDTO fleet, final boolean showAlerts) {
|
private void refreshRaceLog(final RaceColumnDTO raceColumnDTO, final FleetDTO fleet, final boolean showAlerts) {
|
||||||
final String selectedLeaderboardName = getSelectedLeaderboardName();
|
final String selectedLeaderboardName = getSelectedLeaderboardName();
|
||||||
sailingService.reloadRaceLog(selectedLeaderboardName, raceColumnDTO, fleet, new AsyncCallback<Void>() {
|
sailingService.reloadRaceLog(selectedLeaderboardName, raceColumnDTO, fleet, new MarkedAsyncCallback<Void>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void handleFailure(Throwable caught) {
|
||||||
if (showAlerts) {
|
if (showAlerts) {
|
||||||
errorReporter.reportError(caught.getMessage());
|
errorReporter.reportError(caught.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Void result) {
|
public void handleSuccess(Void result) {
|
||||||
if (showAlerts) {
|
if (showAlerts) {
|
||||||
Window.alert(stringMessages.raceLogReloaded());
|
Window.alert(stringMessages.raceLogReloaded());
|
||||||
}
|
}
|
||||||
@@ -769,15 +781,15 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
final String selectedLeaderboardName = getSelectedLeaderboardName();
|
final String selectedLeaderboardName = getSelectedLeaderboardName();
|
||||||
final String raceColumnString = raceColumnDTO.getRaceColumnName();
|
final String raceColumnString = raceColumnDTO.getRaceColumnName();
|
||||||
sailingService.removeLeaderboardColumn(getSelectedLeaderboardName(), raceColumnString,
|
sailingService.removeLeaderboardColumn(getSelectedLeaderboardName(), raceColumnString,
|
||||||
new AsyncCallback<Void>() {
|
new MarkedAsyncCallback<Void>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void handleFailure(Throwable t) {
|
||||||
errorReporter.reportError("Error trying to remove leaderboard race column " + raceColumnDTO
|
errorReporter.reportError("Error trying to remove leaderboard race column " + raceColumnDTO
|
||||||
+ " in leaderboard " + getSelectedLeaderboardName() + ": " + t.getMessage());
|
+ " in leaderboard " + getSelectedLeaderboardName() + ": " + t.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Void arg0) {
|
public void handleSuccess(Void arg0) {
|
||||||
loadAndRefreshLeaderboard(selectedLeaderboardName, /* raceColumnNameToSelect */ null);
|
loadAndRefreshLeaderboard(selectedLeaderboardName, /* raceColumnNameToSelect */ null);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -791,16 +803,16 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
final String selectedLeaderboardName = getSelectedLeaderboardName();
|
final String selectedLeaderboardName = getSelectedLeaderboardName();
|
||||||
final String selectedRaceColumnName = raceColumnTableSelectionModel.getSelectedObject().getA().getRaceColumnName();
|
final String selectedRaceColumnName = raceColumnTableSelectionModel.getSelectedObject().getA().getRaceColumnName();
|
||||||
sailingService.moveLeaderboardColumnDown(getSelectedLeaderboardName(), selectedRaceColumnName,
|
sailingService.moveLeaderboardColumnDown(getSelectedLeaderboardName(), selectedRaceColumnName,
|
||||||
new AsyncCallback<Void>() {
|
new MarkedAsyncCallback<Void>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void handleFailure(Throwable caught) {
|
||||||
errorReporter.reportError("Error trying to move leaderboard race column "
|
errorReporter.reportError("Error trying to move leaderboard race column "
|
||||||
+ selectedRaceColumnName + " in leaderboard " + getSelectedLeaderboardName()
|
+ selectedRaceColumnName + " in leaderboard " + getSelectedLeaderboardName()
|
||||||
+ " down: " + caught.getMessage());
|
+ " down: " + caught.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Void result) {
|
public void handleSuccess(Void result) {
|
||||||
loadAndRefreshLeaderboard(selectedLeaderboardName, selectedRaceColumnName);
|
loadAndRefreshLeaderboard(selectedLeaderboardName, selectedRaceColumnName);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -814,16 +826,16 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
final String selectedLeaderboardName = getSelectedLeaderboardName();
|
final String selectedLeaderboardName = getSelectedLeaderboardName();
|
||||||
final String selectedRaceColumnName = raceColumnTableSelectionModel.getSelectedObject().getA().getRaceColumnName();
|
final String selectedRaceColumnName = raceColumnTableSelectionModel.getSelectedObject().getA().getRaceColumnName();
|
||||||
sailingService.moveLeaderboardColumnUp(getSelectedLeaderboardName(), selectedRaceColumnName,
|
sailingService.moveLeaderboardColumnUp(getSelectedLeaderboardName(), selectedRaceColumnName,
|
||||||
new AsyncCallback<Void>() {
|
new MarkedAsyncCallback<Void>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void handleFailure(Throwable caught) {
|
||||||
errorReporter.reportError("Error trying to move leaderboard race column "
|
errorReporter.reportError("Error trying to move leaderboard race column "
|
||||||
+ selectedRaceColumnName + " in leaderboard " + getSelectedLeaderboardName() + " up: "
|
+ selectedRaceColumnName + " in leaderboard " + getSelectedLeaderboardName() + " up: "
|
||||||
+ caught.getMessage());
|
+ caught.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Void result) {
|
public void handleSuccess(Void result) {
|
||||||
loadAndRefreshLeaderboard(selectedLeaderboardName, selectedRaceColumnName);
|
loadAndRefreshLeaderboard(selectedLeaderboardName, selectedRaceColumnName);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -859,16 +871,16 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
final String selectedRaceColumnName = selectedRaceColumnAndFleetNameInLeaderboard.getA().getRaceColumnName();
|
final String selectedRaceColumnName = selectedRaceColumnAndFleetNameInLeaderboard.getA().getRaceColumnName();
|
||||||
final String selectedFleetName = selectedRaceColumnAndFleetNameInLeaderboard.getB().getName();
|
final String selectedFleetName = selectedRaceColumnAndFleetNameInLeaderboard.getB().getName();
|
||||||
sailingService.getRegattaAndRaceNameOfTrackedRaceConnectedToLeaderboardColumn(selectedLeaderboardName,
|
sailingService.getRegattaAndRaceNameOfTrackedRaceConnectedToLeaderboardColumn(selectedLeaderboardName,
|
||||||
selectedRaceColumnName, new AsyncCallback<Map<String, RegattaAndRaceIdentifier>>() {
|
selectedRaceColumnName, new MarkedAsyncCallback<Map<String, RegattaAndRaceIdentifier>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void handleFailure(Throwable t) {
|
||||||
errorReporter.reportError("Error trying to determine tracked race linked to race column "
|
errorReporter.reportError("Error trying to determine tracked race linked to race column "
|
||||||
+ selectedRaceColumnName + " in leaderboard " + selectedLeaderboardName + ": "
|
+ selectedRaceColumnName + " in leaderboard " + selectedLeaderboardName + ": "
|
||||||
+ t.getMessage());
|
+ t.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Map<String, RegattaAndRaceIdentifier> regattaAndRaceNamesPerFleet) {
|
public void handleSuccess(Map<String, RegattaAndRaceIdentifier> regattaAndRaceNamesPerFleet) {
|
||||||
if (regattaAndRaceNamesPerFleet != null && !regattaAndRaceNamesPerFleet.isEmpty()) {
|
if (regattaAndRaceNamesPerFleet != null && !regattaAndRaceNamesPerFleet.isEmpty()) {
|
||||||
RegattaAndRaceIdentifier raceIdentifier = regattaAndRaceNamesPerFleet
|
RegattaAndRaceIdentifier raceIdentifier = regattaAndRaceNamesPerFleet
|
||||||
.get(selectedFleetName);
|
.get(selectedFleetName);
|
||||||
@@ -962,14 +974,14 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
private void setIsMedalRace(String leaderboardName, final RaceColumnDTO raceInLeaderboard,
|
private void setIsMedalRace(String leaderboardName, final RaceColumnDTO raceInLeaderboard,
|
||||||
final boolean isMedalRace) {
|
final boolean isMedalRace) {
|
||||||
sailingService.updateIsMedalRace(leaderboardName, raceInLeaderboard.getRaceColumnName(), isMedalRace,
|
sailingService.updateIsMedalRace(leaderboardName, raceInLeaderboard.getRaceColumnName(), isMedalRace,
|
||||||
new AsyncCallback<Void>() {
|
new MarkedAsyncCallback<Void>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void handleFailure(Throwable caught) {
|
||||||
errorReporter.reportError(stringMessages.errorUpdatingIsMedalRace(caught.getMessage()));
|
errorReporter.reportError(stringMessages.errorUpdatingIsMedalRace(caught.getMessage()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Void result) {
|
public void handleSuccess(Void result) {
|
||||||
getSelectedLeaderboard().setIsMedalRace(raceInLeaderboard.getRaceColumnName(), isMedalRace);
|
getSelectedLeaderboard().setIsMedalRace(raceInLeaderboard.getRaceColumnName(), isMedalRace);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -1004,15 +1016,15 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sailingService.addColumnsToLeaderboard(leaderboardName, raceColumnsToAdd, new AsyncCallback<Void>() {
|
sailingService.addColumnsToLeaderboard(leaderboardName, raceColumnsToAdd, new MarkedAsyncCallback<Void>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void handleFailure(Throwable caught) {
|
||||||
errorReporter.reportError("Error trying to add race columns to leaderboard " + leaderboardName
|
errorReporter.reportError("Error trying to add race columns to leaderboard " + leaderboardName
|
||||||
+ ": " + caught.getMessage());
|
+ ": " + caught.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Void v) {
|
public void handleSuccess(Void v) {
|
||||||
loadAndRefreshLeaderboard(leaderboardName, /* nameOfRaceColumnToSelect */ null);
|
loadAndRefreshLeaderboard(leaderboardName, /* nameOfRaceColumnToSelect */ null);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -1120,7 +1132,7 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
dialog.ensureDebugId("CreateFlexibleLeaderboardDialog");
|
dialog.ensureDebugId("FlexibleLeaderboardCreateDialog");
|
||||||
dialog.show();
|
dialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1149,6 +1161,7 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
dialog.ensureDebugId("RegattaLeaderboardCreateDialog");
|
||||||
dialog.show();
|
dialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1161,15 +1174,15 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
|
|
||||||
private void updateLeaderboard(final String oldLeaderboardName, final LeaderboardDescriptor leaderboardToUpdate) {
|
private void updateLeaderboard(final String oldLeaderboardName, final LeaderboardDescriptor leaderboardToUpdate) {
|
||||||
sailingService.updateLeaderboard(oldLeaderboardName, leaderboardToUpdate.getName(), leaderboardToUpdate.getDisplayName(),
|
sailingService.updateLeaderboard(oldLeaderboardName, leaderboardToUpdate.getName(), leaderboardToUpdate.getDisplayName(),
|
||||||
leaderboardToUpdate.getDiscardThresholds(), leaderboardToUpdate.getCourseAreaIdAsString(), new AsyncCallback<StrippedLeaderboardDTO>() {
|
leaderboardToUpdate.getDiscardThresholds(), leaderboardToUpdate.getCourseAreaIdAsString(), new MarkedAsyncCallback<StrippedLeaderboardDTO>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void handleFailure(Throwable t) {
|
||||||
errorReporter.reportError("Error trying to update leaderboard " + oldLeaderboardName + ": "
|
errorReporter.reportError("Error trying to update leaderboard " + oldLeaderboardName + ": "
|
||||||
+ t.getMessage());
|
+ t.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(StrippedLeaderboardDTO updatedLeaderboard) {
|
public void handleSuccess(StrippedLeaderboardDTO updatedLeaderboard) {
|
||||||
int indexOfLeaderboard = 0;
|
int indexOfLeaderboard = 0;
|
||||||
for (int i = 0; i < leaderboardList.getList().size(); i++) {
|
for (int i = 0; i < leaderboardList.getList().size(); i++) {
|
||||||
StrippedLeaderboardDTO dao = leaderboardList.getList().get(i);
|
StrippedLeaderboardDTO dao = leaderboardList.getList().get(i);
|
||||||
@@ -1190,17 +1203,17 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
for (StrippedLeaderboardDTO leaderboard : leaderboards) {
|
for (StrippedLeaderboardDTO leaderboard : leaderboards) {
|
||||||
leaderboardNames.add(leaderboard.name);
|
leaderboardNames.add(leaderboard.name);
|
||||||
}
|
}
|
||||||
sailingService.removeLeaderboards(leaderboardNames, new AsyncCallback<Void>() {
|
sailingService.removeLeaderboards(leaderboardNames, new MarkedAsyncCallback<Void>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void handleFailure(Throwable caught) {
|
||||||
errorReporter.reportError("Error trying to remove the leaderboards:" + caught.getMessage());
|
errorReporter.reportError("Error trying to remove the leaderboards:" + caught.getMessage());
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Void result) {
|
public void handleSuccess(Void result) {
|
||||||
for (StrippedLeaderboardDTO leaderboard : leaderboards) {
|
for (StrippedLeaderboardDTO leaderboard : leaderboards) {
|
||||||
removeLeaderboardFromTable(leaderboard);
|
removeLeaderboardFromTable(leaderboard);
|
||||||
}
|
}
|
||||||
@@ -1210,15 +1223,15 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void removeLeaderboard(final StrippedLeaderboardDTO leaderBoard) {
|
private void removeLeaderboard(final StrippedLeaderboardDTO leaderBoard) {
|
||||||
sailingService.removeLeaderboard(leaderBoard.name, new AsyncCallback<Void>() {
|
sailingService.removeLeaderboard(leaderBoard.name, new MarkedAsyncCallback<Void>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void handleFailure(Throwable caught) {
|
||||||
errorReporter.reportError("Error trying to remove leaderboard " + leaderBoard.name + ": "
|
errorReporter.reportError("Error trying to remove leaderboard " + leaderBoard.name + ": "
|
||||||
+ caught.getMessage());
|
+ caught.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Void result) {
|
public void handleSuccess(Void result) {
|
||||||
removeLeaderboardFromTable(leaderBoard);
|
removeLeaderboardFromTable(leaderBoard);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -1250,9 +1263,9 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
final FleetDTO fleet, final RegattaAndRaceIdentifier selectedRace) {
|
final FleetDTO fleet, final RegattaAndRaceIdentifier selectedRace) {
|
||||||
sailingService.connectTrackedRaceToLeaderboardColumn(getSelectedLeaderboardName(), selectedRaceInLeaderboard
|
sailingService.connectTrackedRaceToLeaderboardColumn(getSelectedLeaderboardName(), selectedRaceInLeaderboard
|
||||||
.getRaceColumnName(), fleet.getName(), selectedRace,
|
.getRaceColumnName(), fleet.getName(), selectedRace,
|
||||||
new AsyncCallback<Boolean>() {
|
new MarkedAsyncCallback<Boolean>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void handleFailure(Throwable t) {
|
||||||
errorReporter.reportError("Error trying to link tracked race " + selectedRace + " to race column named "
|
errorReporter.reportError("Error trying to link tracked race " + selectedRace + " to race column named "
|
||||||
+ selectedRaceInLeaderboard.getRaceColumnName() + " of leaderboard "
|
+ selectedRaceInLeaderboard.getRaceColumnName() + " of leaderboard "
|
||||||
+ getSelectedLeaderboardName() + ": " + t.getMessage());
|
+ getSelectedLeaderboardName() + ": " + t.getMessage());
|
||||||
@@ -1260,7 +1273,7 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Boolean success) {
|
public void handleSuccess(Boolean success) {
|
||||||
if (success) {
|
if (success) {
|
||||||
// TODO consider enabling the Unlink button
|
// TODO consider enabling the Unlink button
|
||||||
selectedRaceInLeaderboard.setRaceIdentifier(fleet, selectedRace);
|
selectedRaceInLeaderboard.setRaceIdentifier(fleet, selectedRace);
|
||||||
|
|||||||
+47
-25
@@ -20,7 +20,6 @@ import com.google.gwt.user.cellview.client.Column;
|
|||||||
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
|
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
|
||||||
import com.google.gwt.user.cellview.client.TextColumn;
|
import com.google.gwt.user.cellview.client.TextColumn;
|
||||||
import com.google.gwt.user.client.Window;
|
import com.google.gwt.user.client.Window;
|
||||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
|
||||||
import com.google.gwt.user.client.ui.Button;
|
import com.google.gwt.user.client.ui.Button;
|
||||||
import com.google.gwt.user.client.ui.CaptionPanel;
|
import com.google.gwt.user.client.ui.CaptionPanel;
|
||||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||||
@@ -40,6 +39,7 @@ import com.sap.sailing.gwt.ui.client.AbstractRegattaPanel;
|
|||||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog.DialogCallback;
|
import com.sap.sailing.gwt.ui.client.DataEntryDialog.DialogCallback;
|
||||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||||
import com.sap.sailing.gwt.ui.client.LeaderboardGroupRefresher;
|
import com.sap.sailing.gwt.ui.client.LeaderboardGroupRefresher;
|
||||||
|
import com.sap.sailing.gwt.ui.client.MarkedAsyncCallback;
|
||||||
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
|
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
|
||||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||||
@@ -111,6 +111,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
mainPanel.add(createLeaderboardGroupsGUI(tableRes));
|
mainPanel.add(createLeaderboardGroupsGUI(tableRes));
|
||||||
|
|
||||||
splitPanel = new HorizontalPanel();
|
splitPanel = new HorizontalPanel();
|
||||||
|
splitPanel.ensureDebugId("LeaderboardGroupDetailsPanel");
|
||||||
splitPanel.setSpacing(5);
|
splitPanel.setSpacing(5);
|
||||||
splitPanel.setWidth("100%");
|
splitPanel.setWidth("100%");
|
||||||
splitPanel.setVisible(false);
|
splitPanel.setVisible(false);
|
||||||
@@ -132,6 +133,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
switchLeaderboardsPanel.setWidth("5%");
|
switchLeaderboardsPanel.setWidth("5%");
|
||||||
|
|
||||||
moveToGroupButton = new Button("<-");
|
moveToGroupButton = new Button("<-");
|
||||||
|
moveToGroupButton.ensureDebugId("AddLeaderboardButton");
|
||||||
moveToGroupButton.addClickHandler(new ClickHandler() {
|
moveToGroupButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
@@ -142,6 +144,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
switchLeaderboardsPanel.add(moveToGroupButton);
|
switchLeaderboardsPanel.add(moveToGroupButton);
|
||||||
|
|
||||||
moveToLeaderboardsButton = new Button("->");
|
moveToLeaderboardsButton = new Button("->");
|
||||||
|
moveToLeaderboardsButton.ensureDebugId("RemoveLeaderboardButton");
|
||||||
moveToLeaderboardsButton.addClickHandler(new ClickHandler() {
|
moveToLeaderboardsButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
@@ -167,10 +170,12 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
leaderboardsPanel.add(leaderboardsFunctionPanel);
|
leaderboardsPanel.add(leaderboardsFunctionPanel);
|
||||||
Label filterLeaderboardsLabel = new Label(stringMessages.filterLeaderboardsByName() + ":");
|
Label filterLeaderboardsLabel = new Label(stringMessages.filterLeaderboardsByName() + ":");
|
||||||
leaderboardsFunctionPanel.add(filterLeaderboardsLabel);
|
leaderboardsFunctionPanel.add(filterLeaderboardsLabel);
|
||||||
|
|
||||||
// Create leaderboards table
|
// Create leaderboards table
|
||||||
leaderboardsProvider = new ListDataProvider<StrippedLeaderboardDTO>();
|
leaderboardsProvider = new ListDataProvider<StrippedLeaderboardDTO>();
|
||||||
ListHandler<StrippedLeaderboardDTO> leaderboardsListHandler = new ListHandler<StrippedLeaderboardDTO>(leaderboardsProvider.getList());
|
ListHandler<StrippedLeaderboardDTO> leaderboardsListHandler = new ListHandler<StrippedLeaderboardDTO>(leaderboardsProvider.getList());
|
||||||
leaderboardsTable = new CellTable<StrippedLeaderboardDTO>(10000, tableRes);
|
leaderboardsTable = new CellTable<StrippedLeaderboardDTO>(10000, tableRes);
|
||||||
|
leaderboardsTable.ensureDebugId("LeaderboardsCellTable");
|
||||||
leaderboardsFilterablePanel = new AbstractFilterablePanel<StrippedLeaderboardDTO>(filterLeaderboardsLabel, availableLeaderboards, leaderboardsTable, leaderboardsProvider) {
|
leaderboardsFilterablePanel = new AbstractFilterablePanel<StrippedLeaderboardDTO>(filterLeaderboardsLabel, availableLeaderboards, leaderboardsTable, leaderboardsProvider) {
|
||||||
@Override
|
@Override
|
||||||
public Iterable<String> getSearchableStrings(StrippedLeaderboardDTO t) {
|
public Iterable<String> getSearchableStrings(StrippedLeaderboardDTO t) {
|
||||||
@@ -180,8 +185,11 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
return strings;
|
return strings;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
leaderboardsFilterablePanel.getTextBox().ensureDebugId("LeaderboardsFilterTextBox");
|
||||||
leaderboardsFunctionPanel.add(leaderboardsFilterablePanel);
|
leaderboardsFunctionPanel.add(leaderboardsFilterablePanel);
|
||||||
|
|
||||||
Button refreshLeaderboardsButton = new Button(stringMessages.refresh());
|
Button refreshLeaderboardsButton = new Button(stringMessages.refresh());
|
||||||
|
refreshLeaderboardsButton.ensureDebugId("RefreshLeaderboardsButton");
|
||||||
refreshLeaderboardsButton.addClickHandler(new ClickHandler() {
|
refreshLeaderboardsButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
@@ -189,6 +197,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
leaderboardsFunctionPanel.add(refreshLeaderboardsButton);
|
leaderboardsFunctionPanel.add(refreshLeaderboardsButton);
|
||||||
|
|
||||||
TextColumn<StrippedLeaderboardDTO> leaderboardsNameColumn = new TextColumn<StrippedLeaderboardDTO>() {
|
TextColumn<StrippedLeaderboardDTO> leaderboardsNameColumn = new TextColumn<StrippedLeaderboardDTO>() {
|
||||||
@Override
|
@Override
|
||||||
public String getValue(StrippedLeaderboardDTO leaderboard) {
|
public String getValue(StrippedLeaderboardDTO leaderboard) {
|
||||||
@@ -256,6 +265,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
descriptionCaptionPanel.add(descriptionPanel);
|
descriptionCaptionPanel.add(descriptionPanel);
|
||||||
|
|
||||||
descriptionTextArea = new TextArea();
|
descriptionTextArea = new TextArea();
|
||||||
|
descriptionTextArea.ensureDebugId("DescriptionTextArea");
|
||||||
descriptionTextArea.setCharacterWidth(60);
|
descriptionTextArea.setCharacterWidth(60);
|
||||||
descriptionTextArea.setVisibleLines(8);
|
descriptionTextArea.setVisibleLines(8);
|
||||||
descriptionTextArea.getElement().getStyle().setProperty("resize", "none");
|
descriptionTextArea.getElement().getStyle().setProperty("resize", "none");
|
||||||
@@ -267,6 +277,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
descriptionPanel.add(descriptionFunctionsPanel);
|
descriptionPanel.add(descriptionFunctionsPanel);
|
||||||
|
|
||||||
editDescriptionButton = new Button(stringMessages.edit());
|
editDescriptionButton = new Button(stringMessages.edit());
|
||||||
|
editDescriptionButton.ensureDebugId("EditDescriptionButton");
|
||||||
editDescriptionButton.addClickHandler(new ClickHandler() {
|
editDescriptionButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
@@ -276,6 +287,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
descriptionFunctionsPanel.add(editDescriptionButton);
|
descriptionFunctionsPanel.add(editDescriptionButton);
|
||||||
|
|
||||||
abortDescriptionButton = new Button(stringMessages.abort());
|
abortDescriptionButton = new Button(stringMessages.abort());
|
||||||
|
abortDescriptionButton.ensureDebugId("AbortButton");
|
||||||
abortDescriptionButton.addClickHandler(new ClickHandler() {
|
abortDescriptionButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
@@ -291,6 +303,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
descriptionFunctionsPanel.add(abortDescriptionButton);
|
descriptionFunctionsPanel.add(abortDescriptionButton);
|
||||||
|
|
||||||
saveDescriptionButton = new Button(stringMessages.save());
|
saveDescriptionButton = new Button(stringMessages.save());
|
||||||
|
saveDescriptionButton.ensureDebugId("SaveButton");
|
||||||
saveDescriptionButton.addClickHandler(new ClickHandler() {
|
saveDescriptionButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
@@ -326,6 +339,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
};
|
};
|
||||||
|
|
||||||
groupDetailsTable = new CellTable<StrippedLeaderboardDTO>(10000, tableRes);
|
groupDetailsTable = new CellTable<StrippedLeaderboardDTO>(10000, tableRes);
|
||||||
|
groupDetailsTable.ensureDebugId("LeaderboardGroupsCellTable");
|
||||||
groupDetailsTable.setWidth("100%");
|
groupDetailsTable.setWidth("100%");
|
||||||
groupDetailsTable.addColumn(groupDetailsNameColumn, stringMessages.leaderboardName());
|
groupDetailsTable.addColumn(groupDetailsNameColumn, stringMessages.leaderboardName());
|
||||||
groupDetailsTable.addColumn(groupDetailsRacesColumn, stringMessages.races());
|
groupDetailsTable.addColumn(groupDetailsRacesColumn, stringMessages.races());
|
||||||
@@ -352,6 +366,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
groupDetailsPanel.add(groupDetailsFunctionPanel);
|
groupDetailsPanel.add(groupDetailsFunctionPanel);
|
||||||
|
|
||||||
leaderboardUpButton = new Button(stringMessages.columnMoveUp());
|
leaderboardUpButton = new Button(stringMessages.columnMoveUp());
|
||||||
|
leaderboardUpButton.ensureDebugId("MoveLeaderboardGroupUpButton");
|
||||||
leaderboardUpButton.addClickHandler(new ClickHandler() {
|
leaderboardUpButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
@@ -362,6 +377,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
groupDetailsFunctionPanel.add(leaderboardUpButton);
|
groupDetailsFunctionPanel.add(leaderboardUpButton);
|
||||||
|
|
||||||
leaderboardDownButton = new Button(stringMessages.columnMoveDown());
|
leaderboardDownButton = new Button(stringMessages.columnMoveDown());
|
||||||
|
leaderboardDownButton.ensureDebugId("MoveLeaderboardGroupDownButton");
|
||||||
leaderboardDownButton.addClickHandler(new ClickHandler() {
|
leaderboardDownButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
@@ -392,6 +408,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
groupsProvider = new ListDataProvider<LeaderboardGroupDTO>();
|
groupsProvider = new ListDataProvider<LeaderboardGroupDTO>();
|
||||||
ListHandler<LeaderboardGroupDTO> leaderboardGroupsListHandler = new ListHandler<LeaderboardGroupDTO>(groupsProvider.getList());
|
ListHandler<LeaderboardGroupDTO> leaderboardGroupsListHandler = new ListHandler<LeaderboardGroupDTO>(groupsProvider.getList());
|
||||||
groupsTable = new CellTable<LeaderboardGroupDTO>(10000, tableRes);
|
groupsTable = new CellTable<LeaderboardGroupDTO>(10000, tableRes);
|
||||||
|
groupsTable.ensureDebugId("LeaderboardGroupsCellTable");
|
||||||
groupsFilterablePanel = new AbstractFilterablePanel<LeaderboardGroupDTO>(filterLeaderboardGroupsLbl, availableLeaderboardGroups, groupsTable, groupsProvider) {
|
groupsFilterablePanel = new AbstractFilterablePanel<LeaderboardGroupDTO>(filterLeaderboardGroupsLbl, availableLeaderboardGroups, groupsTable, groupsProvider) {
|
||||||
@Override
|
@Override
|
||||||
public Iterable<String> getSearchableStrings(LeaderboardGroupDTO t) {
|
public Iterable<String> getSearchableStrings(LeaderboardGroupDTO t) {
|
||||||
@@ -400,8 +417,11 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
groupsFilterablePanel.getTextBox().ensureDebugId("LeaderboardGroupsFilterTextBox");
|
||||||
leaderboardGroupsFunctionPanel.add(groupsFilterablePanel);
|
leaderboardGroupsFunctionPanel.add(groupsFilterablePanel);
|
||||||
|
|
||||||
Button createGroupButton = new Button(stringMessages.createNewLeaderboardGroup());
|
Button createGroupButton = new Button(stringMessages.createNewLeaderboardGroup());
|
||||||
|
createGroupButton.ensureDebugId("CreateLeaderboardGroupButton");
|
||||||
createGroupButton.addClickHandler(new ClickHandler() {
|
createGroupButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
@@ -411,6 +431,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
leaderboardGroupsFunctionPanel.add(createGroupButton);
|
leaderboardGroupsFunctionPanel.add(createGroupButton);
|
||||||
|
|
||||||
removeButton = new Button(stringMessages.remove());
|
removeButton = new Button(stringMessages.remove());
|
||||||
|
removeButton.ensureDebugId("RemoveLeaderboardButton");
|
||||||
removeButton.setEnabled(false);
|
removeButton.setEnabled(false);
|
||||||
removeButton.addClickHandler(new ClickHandler() {
|
removeButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
@@ -519,9 +540,9 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void fillLeaderboardGroups() {
|
public void fillLeaderboardGroups() {
|
||||||
sailingService.getLeaderboardGroups(false /*withGeoLocationData*/, new AsyncCallback<List<LeaderboardGroupDTO>>() {
|
sailingService.getLeaderboardGroups(false /*withGeoLocationData*/, new MarkedAsyncCallback<List<LeaderboardGroupDTO>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(List<LeaderboardGroupDTO> groups) {
|
public void handleSuccess(List<LeaderboardGroupDTO> groups) {
|
||||||
availableLeaderboardGroups.clear();
|
availableLeaderboardGroups.clear();
|
||||||
if (groups != null) {
|
if (groups != null) {
|
||||||
availableLeaderboardGroups.addAll(groups);
|
availableLeaderboardGroups.addAll(groups);
|
||||||
@@ -530,20 +551,20 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
groupsProvider.getList().addAll(availableLeaderboardGroups);
|
groupsProvider.getList().addAll(availableLeaderboardGroups);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void handleFailure(Throwable t) {
|
||||||
errorReporter.reportError("Error trying to obtain list of leaderboard groups: " + t.getMessage());
|
errorReporter.reportError("Error trying to obtain list of leaderboard groups: " + t.getMessage());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadLeaderboards() {
|
private void loadLeaderboards() {
|
||||||
sailingService.getLeaderboards(new AsyncCallback<List<StrippedLeaderboardDTO>>() {
|
sailingService.getLeaderboards(new MarkedAsyncCallback<List<StrippedLeaderboardDTO>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void handleFailure(Throwable t) {
|
||||||
errorReporter.reportError("Error trying to obtain list of leaderboards: " + t.getMessage());
|
errorReporter.reportError("Error trying to obtain list of leaderboards: " + t.getMessage());
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(List<StrippedLeaderboardDTO> leaderboards) {
|
public void handleSuccess(List<StrippedLeaderboardDTO> leaderboards) {
|
||||||
availableLeaderboards.clear();
|
availableLeaderboards.clear();
|
||||||
if (leaderboards != null) {
|
if (leaderboards != null) {
|
||||||
availableLeaderboards.addAll(leaderboards);
|
availableLeaderboards.addAll(leaderboards);
|
||||||
@@ -564,14 +585,14 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
final LeaderboardGroupDTO selectedGroup = getSelectedGroup();
|
final LeaderboardGroupDTO selectedGroup = getSelectedGroup();
|
||||||
final Set<StrippedLeaderboardDTO> selectedLeaderboards = leaderboardsSelectionModel.getSelectedSet();
|
final Set<StrippedLeaderboardDTO> selectedLeaderboards = leaderboardsSelectionModel.getSelectedSet();
|
||||||
if (isSingleGroupSelected && selectedGroup != null) {
|
if (isSingleGroupSelected && selectedGroup != null) {
|
||||||
sailingService.getLeaderboards(new AsyncCallback<List<StrippedLeaderboardDTO>>() {
|
sailingService.getLeaderboards(new MarkedAsyncCallback<List<StrippedLeaderboardDTO>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void handleFailure(Throwable t) {
|
||||||
errorReporter.reportError("Error trying to obtain list of leaderboards: " + t.getMessage());
|
errorReporter.reportError("Error trying to obtain list of leaderboards: " + t.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(List<StrippedLeaderboardDTO> leaderboards) {
|
public void handleSuccess(List<StrippedLeaderboardDTO> leaderboards) {
|
||||||
availableLeaderboards.clear();
|
availableLeaderboards.clear();
|
||||||
if (leaderboards != null) {
|
if (leaderboards != null) {
|
||||||
availableLeaderboards.addAll(leaderboards);
|
availableLeaderboards.addAll(leaderboards);
|
||||||
@@ -600,20 +621,21 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
createNewGroup(newGroup);
|
createNewGroup(newGroup);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
dialog.ensureDebugId("LeaderboardGroupCreateDialog");
|
||||||
dialog.show();
|
dialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createNewGroup(final LeaderboardGroupDescriptor newGroup) {
|
private void createNewGroup(final LeaderboardGroupDescriptor newGroup) {
|
||||||
sailingService.createLeaderboardGroup(newGroup.getName(), newGroup.getDescription(), newGroup.isDisplayLeaderboardsInReverseOrder(),
|
sailingService.createLeaderboardGroup(newGroup.getName(), newGroup.getDescription(), newGroup.isDisplayLeaderboardsInReverseOrder(),
|
||||||
newGroup.getOverallLeaderboardDiscardThresholds(),
|
newGroup.getOverallLeaderboardDiscardThresholds(),
|
||||||
newGroup.getOverallLeaderboardScoringSchemeType(), new AsyncCallback<LeaderboardGroupDTO>() {
|
newGroup.getOverallLeaderboardScoringSchemeType(), new MarkedAsyncCallback<LeaderboardGroupDTO>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void handleFailure(Throwable t) {
|
||||||
errorReporter.reportError("Error trying to create new leaderboard group" + newGroup.getName()
|
errorReporter.reportError("Error trying to create new leaderboard group" + newGroup.getName()
|
||||||
+ ": " + t.getMessage());
|
+ ": " + t.getMessage());
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(LeaderboardGroupDTO newGroup) {
|
public void handleSuccess(LeaderboardGroupDTO newGroup) {
|
||||||
availableLeaderboardGroups.add(newGroup);
|
availableLeaderboardGroups.add(newGroup);
|
||||||
groupsProvider.getList().add(newGroup);
|
groupsProvider.getList().add(newGroup);
|
||||||
groupsSelectionModel.clear();
|
groupsSelectionModel.clear();
|
||||||
@@ -629,14 +651,14 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
}
|
}
|
||||||
sailingService.updateLeaderboardGroup(oldGroupName, updateDescriptor.getName(), updateDescriptor.getDescription(),
|
sailingService.updateLeaderboardGroup(oldGroupName, updateDescriptor.getName(), updateDescriptor.getDescription(),
|
||||||
leaderboardNames, updateDescriptor.getOverallLeaderboardDiscardThresholds(),
|
leaderboardNames, updateDescriptor.getOverallLeaderboardDiscardThresholds(),
|
||||||
updateDescriptor.getOverallLeaderboardScoringSchemeType(), new AsyncCallback<Void>() {
|
updateDescriptor.getOverallLeaderboardScoringSchemeType(), new MarkedAsyncCallback<Void>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void handleFailure(Throwable t) {
|
||||||
errorReporter.reportError("Error trying to update leaderboard group " + oldGroupName + ": "
|
errorReporter.reportError("Error trying to update leaderboard group " + oldGroupName + ": "
|
||||||
+ t.getMessage());
|
+ t.getMessage());
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Void v) {
|
public void handleSuccess(Void v) {
|
||||||
// Update the availableLeaderboardGroups and the list of displayed groups
|
// Update the availableLeaderboardGroups and the list of displayed groups
|
||||||
for (int i = 0; i < availableLeaderboardGroups.size(); i++) {
|
for (int i = 0; i < availableLeaderboardGroups.size(); i++) {
|
||||||
LeaderboardGroupDTO group = availableLeaderboardGroups.get(i);
|
LeaderboardGroupDTO group = availableLeaderboardGroups.get(i);
|
||||||
@@ -668,14 +690,14 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
}
|
}
|
||||||
sailingService.updateLeaderboardGroup(group.getName(), group.getName(), group.description,
|
sailingService.updateLeaderboardGroup(group.getName(), group.getName(), group.description,
|
||||||
leaderboardNames, group.getOverallLeaderboardDiscardThresholds(),
|
leaderboardNames, group.getOverallLeaderboardDiscardThresholds(),
|
||||||
group.getOverallLeaderboardScoringSchemeType(), new AsyncCallback<Void>() {
|
group.getOverallLeaderboardScoringSchemeType(), new MarkedAsyncCallback<Void>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void handleFailure(Throwable t) {
|
||||||
errorReporter.reportError("Error trying to update leaderboard group " + group.getName() + ": "
|
errorReporter.reportError("Error trying to update leaderboard group " + group.getName() + ": "
|
||||||
+ t.getMessage());
|
+ t.getMessage());
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Void v) {
|
public void handleSuccess(Void v) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -686,14 +708,14 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
for (LeaderboardGroupDTO group : groups) {
|
for (LeaderboardGroupDTO group : groups) {
|
||||||
groupNames.add(group.getName());
|
groupNames.add(group.getName());
|
||||||
}
|
}
|
||||||
sailingService.removeLeaderboardGroups(groupNames, new AsyncCallback<Void>() {
|
sailingService.removeLeaderboardGroups(groupNames, new MarkedAsyncCallback<Void>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void handleFailure(Throwable t) {
|
||||||
errorReporter.reportError("Error trying to remove the leaderboard groups: "
|
errorReporter.reportError("Error trying to remove the leaderboard groups: "
|
||||||
+ t.getMessage());
|
+ t.getMessage());
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Void result) {
|
public void handleSuccess(Void result) {
|
||||||
for (LeaderboardGroupDTO group : groups) {
|
for (LeaderboardGroupDTO group : groups) {
|
||||||
removeGroupFromTable(group);
|
removeGroupFromTable(group);
|
||||||
}
|
}
|
||||||
@@ -705,14 +727,14 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel implements
|
|||||||
private void removeLeaderboardGroup(final LeaderboardGroupDTO group) {
|
private void removeLeaderboardGroup(final LeaderboardGroupDTO group) {
|
||||||
Set<String> groups = new HashSet<String>();
|
Set<String> groups = new HashSet<String>();
|
||||||
groups.add(group.getName());
|
groups.add(group.getName());
|
||||||
sailingService.removeLeaderboardGroups(groups, new AsyncCallback<Void>() {
|
sailingService.removeLeaderboardGroups(groups, new MarkedAsyncCallback<Void>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void handleFailure(Throwable t) {
|
||||||
errorReporter.reportError("Error trying to remove leaderboard group " + group.getName() + ": "
|
errorReporter.reportError("Error trying to remove leaderboard group " + group.getName() + ": "
|
||||||
+ t.getMessage());
|
+ t.getMessage());
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Void v) {
|
public void handleSuccess(Void v) {
|
||||||
removeGroupFromTable(group);
|
removeGroupFromTable(group);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
+6
-2
@@ -12,8 +12,12 @@ public class LeaderboardGroupCreateDialog extends LeaderboardGroupDialog {
|
|||||||
super(new LeaderboardGroupDTO(), stringMessages,
|
super(new LeaderboardGroupDTO(), stringMessages,
|
||||||
callback, existingGroups);
|
callback, existingGroups);
|
||||||
nameEntryField = createTextBox(null, 50);
|
nameEntryField = createTextBox(null, 50);
|
||||||
descriptionEntryField = createTextArea(null);
|
nameEntryField.ensureDebugId("NameTextBox");
|
||||||
|
|
||||||
|
descriptionEntryField = createTextArea(null);
|
||||||
|
descriptionEntryField.ensureDebugId("DescriptionTextArea");
|
||||||
|
|
||||||
displayLeaderboardsInReverseOrderCheckBox.setValue(false);
|
displayLeaderboardsInReverseOrderCheckBox.setValue(false);
|
||||||
useOverallLeaderboardCheckBox.setValue(false);
|
useOverallLeaderboardCheckBox.setValue(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+6
@@ -123,8 +123,14 @@ public class LeaderboardGroupDialog extends DataEntryDialog<LeaderboardGroupDial
|
|||||||
super(stringMessages.leaderboardGroup(), null, stringMessages.ok(), stringMessages.cancel(),
|
super(stringMessages.leaderboardGroup(), null, stringMessages.ok(), stringMessages.cancel(),
|
||||||
new LeaderboardGroupParameterValidator(stringMessages, existingLeaderboardGroups), callback);
|
new LeaderboardGroupParameterValidator(stringMessages, existingLeaderboardGroups), callback);
|
||||||
this.stringMessages = stringMessages;
|
this.stringMessages = stringMessages;
|
||||||
|
|
||||||
displayLeaderboardsInReverseOrderCheckBox = createCheckbox(stringMessages.displayGroupsInReverseOrder());
|
displayLeaderboardsInReverseOrderCheckBox = createCheckbox(stringMessages.displayGroupsInReverseOrder());
|
||||||
|
// QUESTION [Riccardo]: Are this groups or leaderboards?
|
||||||
|
displayLeaderboardsInReverseOrderCheckBox.ensureDebugId("DisplayGroupsInReverseOrderCheckBox");
|
||||||
|
|
||||||
useOverallLeaderboardCheckBox = createCheckbox(stringMessages.useOverallLeaderboard());
|
useOverallLeaderboardCheckBox = createCheckbox(stringMessages.useOverallLeaderboard());
|
||||||
|
useOverallLeaderboardCheckBox.ensureDebugId("UseOverallLeaderboardCheckBox");
|
||||||
|
|
||||||
Grid formGrid = new Grid(3,2);
|
Grid formGrid = new Grid(3,2);
|
||||||
formGrid.setCellSpacing(3);
|
formGrid.setCellSpacing(3);
|
||||||
formGrid.setWidget(0, 0, new Label(stringMessages.scoringSystem() + ":"));
|
formGrid.setWidget(0, 0, new Label(stringMessages.scoringSystem() + ":"));
|
||||||
|
|||||||
+15
-1
@@ -69,22 +69,34 @@ public class RegattaDetailsComposite extends Composite {
|
|||||||
mainPanel.add(vPanel);
|
mainPanel.add(vPanel);
|
||||||
Grid grid = new Grid(5, 2);
|
Grid grid = new Grid(5, 2);
|
||||||
vPanel.add(grid);
|
vPanel.add(grid);
|
||||||
|
|
||||||
regattaName = new Label();
|
regattaName = new Label();
|
||||||
|
regattaName.ensureDebugId("NameLabel");
|
||||||
grid.setWidget(0 , 0, new Label(stringMessages.regattaName() + ":"));
|
grid.setWidget(0 , 0, new Label(stringMessages.regattaName() + ":"));
|
||||||
grid.setWidget(0 , 1, regattaName);
|
grid.setWidget(0 , 1, regattaName);
|
||||||
|
|
||||||
boatClassName = new Label();
|
boatClassName = new Label();
|
||||||
|
boatClassName.ensureDebugId("BoatClassLabel");
|
||||||
grid.setWidget(1 , 0, new Label(stringMessages.boatClass() + ":"));
|
grid.setWidget(1 , 0, new Label(stringMessages.boatClass() + ":"));
|
||||||
grid.setWidget(1 , 1, boatClassName);
|
grid.setWidget(1 , 1, boatClassName);
|
||||||
|
|
||||||
defaultCourseArea = new Label();
|
defaultCourseArea = new Label();
|
||||||
|
defaultCourseArea.ensureDebugId("CourseAreaLabel");
|
||||||
grid.setWidget(2 , 0, new Label(stringMessages.courseArea() + ":"));
|
grid.setWidget(2 , 0, new Label(stringMessages.courseArea() + ":"));
|
||||||
grid.setWidget(2 , 1, defaultCourseArea);
|
grid.setWidget(2 , 1, defaultCourseArea);
|
||||||
|
|
||||||
configuration = new Label();
|
configuration = new Label();
|
||||||
|
configuration.ensureDebugId("RacingProcedureLabel");
|
||||||
grid.setWidget(3, 0, new Label(stringMessages.racingProcedureConfiguration() + ":"));
|
grid.setWidget(3, 0, new Label(stringMessages.racingProcedureConfiguration() + ":"));
|
||||||
grid.setWidget(3, 1, configuration);;
|
grid.setWidget(3, 1, configuration);
|
||||||
|
|
||||||
scoringSystem = new Label();
|
scoringSystem = new Label();
|
||||||
|
scoringSystem.ensureDebugId("ScoringSystemLabel");
|
||||||
grid.setWidget(4 , 0, new Label(stringMessages.scoringSystem() + ":"));
|
grid.setWidget(4 , 0, new Label(stringMessages.scoringSystem() + ":"));
|
||||||
grid.setWidget(4 , 1, scoringSystem);
|
grid.setWidget(4 , 1, scoringSystem);
|
||||||
|
|
||||||
seriesTable = createRegattaSeriesTable();
|
seriesTable = createRegattaSeriesTable();
|
||||||
|
seriesTable.ensureDebugId("SeriesCellTable");
|
||||||
seriesSelectionModel = new SingleSelectionModel<SeriesDTO>();
|
seriesSelectionModel = new SingleSelectionModel<SeriesDTO>();
|
||||||
seriesSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
|
seriesSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
|
||||||
@Override
|
@Override
|
||||||
@@ -95,6 +107,7 @@ public class RegattaDetailsComposite extends Composite {
|
|||||||
seriesListDataProvider = new ListDataProvider<SeriesDTO>();
|
seriesListDataProvider = new ListDataProvider<SeriesDTO>();
|
||||||
seriesListDataProvider.addDataDisplay(seriesTable);
|
seriesListDataProvider.addDataDisplay(seriesTable);
|
||||||
vPanel.add(seriesTable);
|
vPanel.add(seriesTable);
|
||||||
|
|
||||||
initWidget(mainPanel);
|
initWidget(mainPanel);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -239,6 +252,7 @@ public class RegattaDetailsComposite extends Composite {
|
|||||||
updateRacesOfRegattaSeries(regatta, result);
|
updateRacesOfRegattaSeries(regatta, result);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
raceDialog.ensureDebugId("SeriesEditDialog");
|
||||||
raceDialog.show();
|
raceDialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
-3
@@ -16,14 +16,17 @@ public class RegattaLeaderboardCreateDialog extends RegattaLeaderboardDialog {
|
|||||||
super(stringMessages.createRegattaLeaderboard(), new LeaderboardDescriptor(), existingRegattas, stringMessages, errorReporter, new RegattaLeaderboardDialog.LeaderboardParameterValidator(stringMessages, existingLeaderboards), callback);
|
super(stringMessages.createRegattaLeaderboard(), new LeaderboardDescriptor(), existingRegattas, stringMessages, errorReporter, new RegattaLeaderboardDialog.LeaderboardParameterValidator(stringMessages, existingLeaderboards), callback);
|
||||||
|
|
||||||
nameTextBox = createTextBox(null);
|
nameTextBox = createTextBox(null);
|
||||||
displayNameTextBox = createTextBox(null);
|
nameTextBox.ensureDebugId("NameTextBox");
|
||||||
|
nameTextBox.setVisibleLength(50);
|
||||||
// the name of the regatta leaderboard will be derived from the selected regatta
|
// the name of the regatta leaderboard will be derived from the selected regatta
|
||||||
nameTextBox.setEnabled(false);
|
nameTextBox.setEnabled(false);
|
||||||
nameTextBox.setVisibleLength(50);
|
|
||||||
|
displayNameTextBox = createTextBox(null);
|
||||||
|
displayNameTextBox.ensureDebugId("DisplayNameTextBox");
|
||||||
displayNameTextBox.setVisibleLength(50);
|
displayNameTextBox.setVisibleLength(50);
|
||||||
|
|
||||||
regattaListBox = createSortedRegattaListBox(existingRegattas, null);
|
regattaListBox = createSortedRegattaListBox(existingRegattas, null);
|
||||||
|
regattaListBox.ensureDebugId("RegattaListBox");
|
||||||
regattaListBox.addChangeHandler(new ChangeHandler() {
|
regattaListBox.addChangeHandler(new ChangeHandler() {
|
||||||
public void onChange(ChangeEvent event) {
|
public void onChange(ChangeEvent event) {
|
||||||
int selectedIndex = regattaListBox.getSelectedIndex();
|
int selectedIndex = regattaListBox.getSelectedIndex();
|
||||||
|
|||||||
+15
-9
@@ -29,6 +29,7 @@ import com.sap.sailing.domain.common.RegattaName;
|
|||||||
import com.sap.sailing.domain.common.impl.NaturalComparator;
|
import com.sap.sailing.domain.common.impl.NaturalComparator;
|
||||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog.DialogCallback;
|
import com.sap.sailing.gwt.ui.client.DataEntryDialog.DialogCallback;
|
||||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||||
|
import com.sap.sailing.gwt.ui.client.MarkedAsyncCallback;
|
||||||
import com.sap.sailing.gwt.ui.client.RegattaDisplayer;
|
import com.sap.sailing.gwt.ui.client.RegattaDisplayer;
|
||||||
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
|
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
|
||||||
import com.sap.sailing.gwt.ui.client.RegattaSelectionProvider;
|
import com.sap.sailing.gwt.ui.client.RegattaSelectionProvider;
|
||||||
@@ -77,14 +78,18 @@ public class RegattaListComposite extends Composite implements RegattaDisplayer
|
|||||||
mainPanel = new SimplePanel();
|
mainPanel = new SimplePanel();
|
||||||
panel = new VerticalPanel();
|
panel = new VerticalPanel();
|
||||||
mainPanel.setWidget(panel);
|
mainPanel.setWidget(panel);
|
||||||
Label filterRegattasLabel = new Label(stringMessages.filterRegattasByName() + ":");
|
|
||||||
filterRegattasLabel.setWordWrap(false);
|
|
||||||
noRegattasLabel = new Label(stringMessages.noRegattasYet());
|
noRegattasLabel = new Label(stringMessages.noRegattasYet());
|
||||||
|
noRegattasLabel.ensureDebugId("NoRegattasLabel");
|
||||||
noRegattasLabel.setWordWrap(false);
|
noRegattasLabel.setWordWrap(false);
|
||||||
panel.add(noRegattasLabel);
|
panel.add(noRegattasLabel);
|
||||||
|
|
||||||
regattaListDataProvider = new ListDataProvider<RegattaDTO>();
|
regattaListDataProvider = new ListDataProvider<RegattaDTO>();
|
||||||
regattaTable = createRegattaTable();
|
regattaTable = createRegattaTable();
|
||||||
|
regattaTable.ensureDebugId("RegattasCellTable");
|
||||||
regattaTable.setVisible(false);
|
regattaTable.setVisible(false);
|
||||||
|
Label filterRegattasLabel = new Label(stringMessages.filterRegattasByName() + ":");
|
||||||
|
filterRegattasLabel.setWordWrap(false);
|
||||||
filterablePanelRegattas = new AbstractFilterablePanel<RegattaDTO>(filterRegattasLabel, allRegattas,
|
filterablePanelRegattas = new AbstractFilterablePanel<RegattaDTO>(filterRegattasLabel, allRegattas,
|
||||||
regattaTable, regattaListDataProvider) {
|
regattaTable, regattaListDataProvider) {
|
||||||
@Override
|
@Override
|
||||||
@@ -95,7 +100,9 @@ public class RegattaListComposite extends Composite implements RegattaDisplayer
|
|||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
filterablePanelRegattas.getTextBox().ensureDebugId("ReggatasFilterTextBox");
|
||||||
panel.add(filterablePanelRegattas);
|
panel.add(filterablePanelRegattas);
|
||||||
|
|
||||||
regattaSelectionModel = new MultiSelectionModel<RegattaDTO>();
|
regattaSelectionModel = new MultiSelectionModel<RegattaDTO>();
|
||||||
regattaSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
|
regattaSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
|
||||||
@Override
|
@Override
|
||||||
@@ -190,14 +197,14 @@ public class RegattaListComposite extends Composite implements RegattaDisplayer
|
|||||||
|
|
||||||
private void editRegatta(final RegattaDTO toBeEdited) {
|
private void editRegatta(final RegattaDTO toBeEdited) {
|
||||||
final Collection<RegattaDTO> existingRegattas = getAllRegattas();
|
final Collection<RegattaDTO> existingRegattas = getAllRegattas();
|
||||||
sailingService.getEvents(new AsyncCallback<List<EventDTO>>() {
|
sailingService.getEvents(new MarkedAsyncCallback<List<EventDTO>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void handleFailure(Throwable caught) {
|
||||||
openEditRegattaDialog(toBeEdited, existingRegattas, Collections.<EventDTO> emptyList());
|
openEditRegattaDialog(toBeEdited, existingRegattas, Collections.<EventDTO> emptyList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(List<EventDTO> events) {
|
public void handleSuccess(List<EventDTO> events) {
|
||||||
openEditRegattaDialog(toBeEdited, existingRegattas, Collections.unmodifiableList(events));
|
openEditRegattaDialog(toBeEdited, existingRegattas, Collections.unmodifiableList(events));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -222,15 +229,14 @@ public class RegattaListComposite extends Composite implements RegattaDisplayer
|
|||||||
final RegattaIdentifier regattaName = new RegattaName(editedRegatta.getName());
|
final RegattaIdentifier regattaName = new RegattaName(editedRegatta.getName());
|
||||||
|
|
||||||
sailingService.updateRegatta(regattaName, editedRegatta.defaultCourseAreaUuidAsString,
|
sailingService.updateRegatta(regattaName, editedRegatta.defaultCourseAreaUuidAsString,
|
||||||
editedRegatta.configuration,
|
editedRegatta.configuration, new MarkedAsyncCallback<Void>() {
|
||||||
new AsyncCallback<Void>() {
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void handleFailure(Throwable caught) {
|
||||||
errorReporter.reportError("Error trying to update regatta " + editedRegatta.getName() + ": " + caught.getMessage());
|
errorReporter.reportError("Error trying to update regatta " + editedRegatta.getName() + ": " + caught.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Void result) {
|
public void handleSuccess(Void result) {
|
||||||
regattaRefresher.fillRegattas();
|
regattaRefresher.fillRegattas();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
+6
@@ -65,7 +65,9 @@ public class RegattaStructureManagementPanel extends SimplePanel implements Rega
|
|||||||
|
|
||||||
HorizontalPanel regattaManagementControlsPanel = new HorizontalPanel();
|
HorizontalPanel regattaManagementControlsPanel = new HorizontalPanel();
|
||||||
regattaManagementControlsPanel.setSpacing(5);
|
regattaManagementControlsPanel.setSpacing(5);
|
||||||
|
|
||||||
Button addRegattaBtn = new Button(stringMessages.addRegatta());
|
Button addRegattaBtn = new Button(stringMessages.addRegatta());
|
||||||
|
addRegattaBtn.ensureDebugId("AddRegattaButton");
|
||||||
addRegattaBtn.addClickHandler(new ClickHandler() {
|
addRegattaBtn.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
@@ -75,6 +77,7 @@ public class RegattaStructureManagementPanel extends SimplePanel implements Rega
|
|||||||
regattaManagementControlsPanel.add(addRegattaBtn);
|
regattaManagementControlsPanel.add(addRegattaBtn);
|
||||||
|
|
||||||
removeRegattaButton = new Button(stringMessages.remove());
|
removeRegattaButton = new Button(stringMessages.remove());
|
||||||
|
removeRegattaButton.ensureDebugId("RemoveRegattaButton");
|
||||||
removeRegattaButton.setEnabled(false);
|
removeRegattaButton.setEnabled(false);
|
||||||
removeRegattaButton.addClickHandler(new ClickHandler() {
|
removeRegattaButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
@@ -100,10 +103,12 @@ public class RegattaStructureManagementPanel extends SimplePanel implements Rega
|
|||||||
regattaSelectionProvider.addRegattaSelectionChangeListener(this);
|
regattaSelectionProvider.addRegattaSelectionChangeListener(this);
|
||||||
|
|
||||||
regattaListComposite = new RegattaListComposite(sailingService, regattaSelectionProvider, regattaRefresher, errorReporter, stringMessages);
|
regattaListComposite = new RegattaListComposite(sailingService, regattaSelectionProvider, regattaRefresher, errorReporter, stringMessages);
|
||||||
|
regattaListComposite.ensureDebugId("RegattaListComposite");
|
||||||
grid.setWidget(0, 0, regattaListComposite);
|
grid.setWidget(0, 0, regattaListComposite);
|
||||||
grid.getRowFormatter().setVerticalAlign(0, HasVerticalAlignment.ALIGN_TOP);
|
grid.getRowFormatter().setVerticalAlign(0, HasVerticalAlignment.ALIGN_TOP);
|
||||||
grid.getColumnFormatter().getElement(1).getStyle().setPaddingTop(2.0, Unit.EM);
|
grid.getColumnFormatter().getElement(1).getStyle().setPaddingTop(2.0, Unit.EM);
|
||||||
regattaDetailsComposite = new RegattaDetailsComposite(sailingService, regattaRefresher, errorReporter, stringMessages);
|
regattaDetailsComposite = new RegattaDetailsComposite(sailingService, regattaRefresher, errorReporter, stringMessages);
|
||||||
|
regattaDetailsComposite.ensureDebugId("RegattaDetailsComposite");
|
||||||
regattaDetailsComposite.setVisible(false);
|
regattaDetailsComposite.setVisible(false);
|
||||||
grid.setWidget(0, 1, regattaDetailsComposite);
|
grid.setWidget(0, 1, regattaDetailsComposite);
|
||||||
}
|
}
|
||||||
@@ -152,6 +157,7 @@ public class RegattaStructureManagementPanel extends SimplePanel implements Rega
|
|||||||
createNewRegatta(newRegatta);
|
createNewRegatta(newRegatta);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
dialog.ensureDebugId("RegattaCreateDialog");
|
||||||
dialog.show();
|
dialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+8
-2
@@ -45,16 +45,19 @@ public abstract class RegattaWithSeriesAndFleetsDialog extends DataEntryDialog<R
|
|||||||
this.existingEvents = existingEvents;
|
this.existingEvents = existingEvents;
|
||||||
|
|
||||||
nameEntryField = createTextBox(null);
|
nameEntryField = createTextBox(null);
|
||||||
|
nameEntryField.ensureDebugId("NameTextBox");
|
||||||
nameEntryField.setVisibleLength(40);
|
nameEntryField.setVisibleLength(40);
|
||||||
nameEntryField.setText(regatta.getName());
|
nameEntryField.setText(regatta.getName());
|
||||||
|
|
||||||
boatClassEntryField = createTextBox(null);
|
boatClassEntryField = createTextBox(null);
|
||||||
|
boatClassEntryField.ensureDebugId("BoatClassTextBox");
|
||||||
boatClassEntryField.setVisibleLength(20);
|
boatClassEntryField.setVisibleLength(20);
|
||||||
if (regatta.boatClass != null) {
|
if (regatta.boatClass != null) {
|
||||||
boatClassEntryField.setText(regatta.boatClass.getName());
|
boatClassEntryField.setText(regatta.boatClass.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
scoringSchemeListBox = createListBox(false);
|
scoringSchemeListBox = createListBox(false);
|
||||||
|
scoringSchemeListBox.ensureDebugId("ScoringSchemeListBox");
|
||||||
for (ScoringSchemeType scoringSchemeType : ScoringSchemeType.values()) {
|
for (ScoringSchemeType scoringSchemeType : ScoringSchemeType.values()) {
|
||||||
scoringSchemeListBox.addItem(ScoringSchemeTypeFormatter.format(scoringSchemeType, stringMessages),
|
scoringSchemeListBox.addItem(ScoringSchemeTypeFormatter.format(scoringSchemeType, stringMessages),
|
||||||
String.valueOf(scoringSchemeType.ordinal()));
|
String.valueOf(scoringSchemeType.ordinal()));
|
||||||
@@ -64,10 +67,13 @@ public abstract class RegattaWithSeriesAndFleetsDialog extends DataEntryDialog<R
|
|||||||
}
|
}
|
||||||
|
|
||||||
sailingEventsListBox = createListBox(false);
|
sailingEventsListBox = createListBox(false);
|
||||||
courseAreaListBox = createListBox(false);
|
sailingEventsListBox.ensureDebugId("EventListBox");
|
||||||
setupEventAndCourseAreaListBoxes(stringMessages);
|
|
||||||
|
|
||||||
|
courseAreaListBox = createListBox(false);
|
||||||
|
courseAreaListBox.ensureDebugId("CourseAreaListBox");
|
||||||
courseAreaListBox.setEnabled(false);
|
courseAreaListBox.setEnabled(false);
|
||||||
|
|
||||||
|
setupEventAndCourseAreaListBoxes(stringMessages);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+3
-1
@@ -37,6 +37,7 @@ public class RegattaWithSeriesAndFleetsEditDialog extends RegattaWithSeriesAndFl
|
|||||||
courseAreaListBox.setEnabled(true);
|
courseAreaListBox.setEnabled(true);
|
||||||
|
|
||||||
regattaConfigurationCheckbox = createCheckbox(stringMessages.setRacingProcedureConfiguration());
|
regattaConfigurationCheckbox = createCheckbox(stringMessages.setRacingProcedureConfiguration());
|
||||||
|
regattaConfigurationCheckbox.ensureDebugId("RacingProcedureConfigurationCheckBox");
|
||||||
regattaConfigurationCheckbox.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
|
regattaConfigurationCheckbox.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
|
||||||
@Override
|
@Override
|
||||||
public void onValueChange(ValueChangeEvent<Boolean> event) {
|
public void onValueChange(ValueChangeEvent<Boolean> event) {
|
||||||
@@ -44,6 +45,7 @@ public class RegattaWithSeriesAndFleetsEditDialog extends RegattaWithSeriesAndFl
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
regattaConfigurationButton = new Button(stringMessages.edit());
|
regattaConfigurationButton = new Button(stringMessages.edit());
|
||||||
|
regattaConfigurationButton.ensureDebugId("RacingProcedureConfigurationEditButton");
|
||||||
regattaConfigurationButton.addClickHandler(new ClickHandler() {
|
regattaConfigurationButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
@@ -57,7 +59,7 @@ public class RegattaWithSeriesAndFleetsEditDialog extends RegattaWithSeriesAndFl
|
|||||||
@Override
|
@Override
|
||||||
public void cancel() {
|
public void cancel() {
|
||||||
}
|
}
|
||||||
}).show();;
|
}).show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
regattaConfigurationCheckbox.setValue(regatta.configuration != null);
|
regattaConfigurationCheckbox.setValue(regatta.configuration != null);
|
||||||
|
|||||||
+26
-5
@@ -153,16 +153,24 @@ public class SeriesEditDialog extends DataEntryDialog<SeriesDescriptor> {
|
|||||||
String seriesName = getSelectedSeries().getName();
|
String seriesName = getSelectedSeries().getName();
|
||||||
seriesPanel.add(new Label(stringMessages.series() + ": " + seriesName));
|
seriesPanel.add(new Label(stringMessages.series() + ": " + seriesName));
|
||||||
additionalWidgetPanel.add(seriesPanel);
|
additionalWidgetPanel.add(seriesPanel);
|
||||||
|
|
||||||
isMedalCheckbox = createCheckbox(stringMessages.medalSeries());
|
isMedalCheckbox = createCheckbox(stringMessages.medalSeries());
|
||||||
|
isMedalCheckbox.ensureDebugId("MedalSeriesCheckbox");
|
||||||
isMedalCheckbox.setValue(selectedSeries.isMedal());
|
isMedalCheckbox.setValue(selectedSeries.isMedal());
|
||||||
additionalWidgetPanel.add(isMedalCheckbox);
|
additionalWidgetPanel.add(isMedalCheckbox);
|
||||||
|
|
||||||
startWithZeroScoreCheckbox = createCheckbox(stringMessages.startsWithZeroScore());
|
startWithZeroScoreCheckbox = createCheckbox(stringMessages.startsWithZeroScore());
|
||||||
|
startWithZeroScoreCheckbox.ensureDebugId("StartsWithZeroScoreCheckbox");
|
||||||
startWithZeroScoreCheckbox.setValue(selectedSeries.isStartsWithZeroScore());
|
startWithZeroScoreCheckbox.setValue(selectedSeries.isStartsWithZeroScore());
|
||||||
additionalWidgetPanel.add(startWithZeroScoreCheckbox);
|
additionalWidgetPanel.add(startWithZeroScoreCheckbox);
|
||||||
|
|
||||||
firstColumnIsNonDiscardableCarryForwardCheckbox = createCheckbox(stringMessages.firstRaceIsNonDiscardableCarryForward());
|
firstColumnIsNonDiscardableCarryForwardCheckbox = createCheckbox(stringMessages.firstRaceIsNonDiscardableCarryForward());
|
||||||
|
firstColumnIsNonDiscardableCarryForwardCheckbox.ensureDebugId("StartsWithNonDiscardableCarryForwardCheckbox");
|
||||||
firstColumnIsNonDiscardableCarryForwardCheckbox.setValue(selectedSeries.isFirstColumnIsNonDiscardableCarryForward());
|
firstColumnIsNonDiscardableCarryForwardCheckbox.setValue(selectedSeries.isFirstColumnIsNonDiscardableCarryForward());
|
||||||
additionalWidgetPanel.add(firstColumnIsNonDiscardableCarryForwardCheckbox);
|
additionalWidgetPanel.add(firstColumnIsNonDiscardableCarryForwardCheckbox);
|
||||||
|
|
||||||
useSeriesResultDiscardingThresholdsCheckbox = createCheckbox(stringMessages.seriesDefinesResultDiscardingRule());
|
useSeriesResultDiscardingThresholdsCheckbox = createCheckbox(stringMessages.seriesDefinesResultDiscardingRule());
|
||||||
|
useSeriesResultDiscardingThresholdsCheckbox.ensureDebugId("DefinesResultDiscardingRulesCheckbox");
|
||||||
useSeriesResultDiscardingThresholdsCheckbox.setValue(selectedSeries.getDiscardThresholds() != null);
|
useSeriesResultDiscardingThresholdsCheckbox.setValue(selectedSeries.getDiscardThresholds() != null);
|
||||||
useSeriesResultDiscardingThresholdsCheckbox.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
|
useSeriesResultDiscardingThresholdsCheckbox.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
|
||||||
@Override
|
@Override
|
||||||
@@ -171,10 +179,16 @@ public class SeriesEditDialog extends DataEntryDialog<SeriesDescriptor> {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
additionalWidgetPanel.add(useSeriesResultDiscardingThresholdsCheckbox);
|
additionalWidgetPanel.add(useSeriesResultDiscardingThresholdsCheckbox);
|
||||||
additionalWidgetPanel.add(discardThresholdBoxes.getWidget());
|
|
||||||
discardThresholdBoxes.getWidget().setVisible(useSeriesResultDiscardingThresholdsCheckbox.getValue());
|
Widget discardThresholdBoxesWidget = discardThresholdBoxes.getWidget();
|
||||||
|
discardThresholdBoxesWidget.ensureDebugId("");
|
||||||
|
discardThresholdBoxesWidget.setVisible(useSeriesResultDiscardingThresholdsCheckbox.getValue());
|
||||||
|
additionalWidgetPanel.add(discardThresholdBoxesWidget);
|
||||||
|
|
||||||
raceNamesEditor = new StringListEditorComposite(getExistingRacesOfSeries(), new RaceNamesEditorUi(stringMessages, resources.removeIcon(), seriesName));
|
raceNamesEditor = new StringListEditorComposite(getExistingRacesOfSeries(), new RaceNamesEditorUi(stringMessages, resources.removeIcon(), seriesName));
|
||||||
|
raceNamesEditor.ensureDebugId("RaceNamesStringListEditorComposite");
|
||||||
additionalWidgetPanel.add(raceNamesEditor);
|
additionalWidgetPanel.add(raceNamesEditor);
|
||||||
|
|
||||||
return additionalWidgetPanel;
|
return additionalWidgetPanel;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -205,10 +219,17 @@ public class SeriesEditDialog extends DataEntryDialog<SeriesDescriptor> {
|
|||||||
|
|
||||||
public RaceNamesEditorUi(StringMessages stringMessages, ImageResource removeImage, String seriesName) {
|
public RaceNamesEditorUi(StringMessages stringMessages, ImageResource removeImage, String seriesName) {
|
||||||
super(stringMessages, removeImage, Collections.<String>emptyList());
|
super(stringMessages, removeImage, Collections.<String>emptyList());
|
||||||
this.addRacesListBox = createListBox(false);
|
|
||||||
this.raceNamePrefixTextBox = createTextBox(null);
|
|
||||||
this.addRacesBtn = new Button(stringMessages.add());
|
|
||||||
this.seriesName = seriesName;
|
this.seriesName = seriesName;
|
||||||
|
|
||||||
|
this.addRacesListBox = createListBox(false);
|
||||||
|
this.addRacesListBox.ensureDebugId("NumberOfRacesListBox");
|
||||||
|
|
||||||
|
this.raceNamePrefixTextBox = createTextBox(null);
|
||||||
|
this.raceNamePrefixTextBox.ensureDebugId("RaceNamePrefixTextBox");
|
||||||
|
|
||||||
|
this.addRacesBtn = new Button(stringMessages.add());
|
||||||
|
this.addRacesBtn.ensureDebugId("AddRacesButton");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+16
-1
@@ -100,21 +100,36 @@ public class SeriesWithFleetsCreateDialog extends DataEntryDialog<SeriesDTO> {
|
|||||||
new SeriesParameterValidator(stringMessages, existingSeries), callback);
|
new SeriesParameterValidator(stringMessages, existingSeries), callback);
|
||||||
this.stringMessages = stringMessages;
|
this.stringMessages = stringMessages;
|
||||||
this.series = new SeriesDTO();
|
this.series = new SeriesDTO();
|
||||||
|
|
||||||
nameEntryField = createTextBox(null);
|
nameEntryField = createTextBox(null);
|
||||||
|
nameEntryField.ensureDebugId("NameTextBox");
|
||||||
nameEntryField.setVisibleLength(40);
|
nameEntryField.setVisibleLength(40);
|
||||||
|
|
||||||
isMedalSeriesCheckbox = createCheckbox(stringMessages.medalSeries());
|
isMedalSeriesCheckbox = createCheckbox(stringMessages.medalSeries());
|
||||||
|
isMedalSeriesCheckbox.ensureDebugId("MedalSeriesCheckbox");
|
||||||
|
|
||||||
startsWithZeroScoreCheckbox = createCheckbox(stringMessages.startsWithZeroScore());
|
startsWithZeroScoreCheckbox = createCheckbox(stringMessages.startsWithZeroScore());
|
||||||
|
startsWithZeroScoreCheckbox.ensureDebugId("StartsWithZeroScoreCheckbox");
|
||||||
|
|
||||||
firstColumnIsNonDiscardableCarryForwardCheckbox = createCheckbox(stringMessages.firstRaceIsNonDiscardableCarryForward());
|
firstColumnIsNonDiscardableCarryForwardCheckbox = createCheckbox(stringMessages.firstRaceIsNonDiscardableCarryForward());
|
||||||
|
firstColumnIsNonDiscardableCarryForwardCheckbox.ensureDebugId("StartsWithNonDiscardableCarryForwardCheckbox");
|
||||||
|
|
||||||
useSeriesResultDiscardingThresholdsCheckbox = createCheckbox(stringMessages.seriesDefinesResultDiscardingRule());
|
useSeriesResultDiscardingThresholdsCheckbox = createCheckbox(stringMessages.seriesDefinesResultDiscardingRule());
|
||||||
|
useSeriesResultDiscardingThresholdsCheckbox.ensureDebugId("DefinesResultDiscardingRulesCheckbox");
|
||||||
useSeriesResultDiscardingThresholdsCheckbox.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
|
useSeriesResultDiscardingThresholdsCheckbox.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
|
||||||
@Override
|
@Override
|
||||||
public void onValueChange(ValueChangeEvent<Boolean> event) {
|
public void onValueChange(ValueChangeEvent<Boolean> event) {
|
||||||
discardThresholdBoxes.getWidget().setVisible(event.getValue());
|
discardThresholdBoxes.getWidget().setVisible(event.getValue());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
discardThresholdBoxes = new DiscardThresholdBoxes(this, stringMessages);
|
discardThresholdBoxes = new DiscardThresholdBoxes(this, stringMessages);
|
||||||
discardThresholdBoxes.getWidget().setVisible(false);
|
Widget widget = discardThresholdBoxes.getWidget();
|
||||||
|
widget.ensureDebugId("DiscardThresholdBoxes");
|
||||||
|
widget.setVisible(false);
|
||||||
|
|
||||||
fleetListComposite = FleetListEditorComposite.createExpanded(Arrays.asList(new FleetDTO("Default", 0, null)), stringMessages, resources.removeIcon());
|
fleetListComposite = FleetListEditorComposite.createExpanded(Arrays.asList(new FleetDTO("Default", 0, null)), stringMessages, resources.removeIcon());
|
||||||
|
fleetListComposite.ensureDebugId("FleetListEditorComposite");
|
||||||
fleetListComposite.addValueChangeHandler(new ValueChangeHandler<List<FleetDTO>>() {
|
fleetListComposite.addValueChangeHandler(new ValueChangeHandler<List<FleetDTO>>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+2
@@ -35,6 +35,7 @@ public class SeriesWithFleetsListEditor extends ListEditorComposite<SeriesDTO> {
|
|||||||
@Override
|
@Override
|
||||||
protected Widget createAddWidget() {
|
protected Widget createAddWidget() {
|
||||||
Button addSeriesButton = new Button(stringMessages.addSeries());
|
Button addSeriesButton = new Button(stringMessages.addSeries());
|
||||||
|
addSeriesButton.ensureDebugId("AddSeriesButton");
|
||||||
addSeriesButton.addClickHandler(new ClickHandler() {
|
addSeriesButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
@@ -49,6 +50,7 @@ public class SeriesWithFleetsListEditor extends ListEditorComposite<SeriesDTO> {
|
|||||||
addValue(newSeries);
|
addValue(newSeries);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
dialog.ensureDebugId("SeriesCreateDialog");
|
||||||
dialog.show();
|
dialog.show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
+14
-13
@@ -149,7 +149,7 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel {
|
|||||||
liveURILabel.setTitle(stringMessages.leaveEmptyForDefault());
|
liveURILabel.setTitle(stringMessages.leaveEmptyForDefault());
|
||||||
|
|
||||||
liveURITextBox = new TextBox();
|
liveURITextBox = new TextBox();
|
||||||
liveURITextBox.ensureDebugId("LiveURI");
|
liveURITextBox.ensureDebugId("LiveURITextBox");
|
||||||
liveURITextBox.setVisibleLength(40);
|
liveURITextBox.setVisibleLength(40);
|
||||||
liveURITextBox.setTitle(stringMessages.leaveEmptyForDefault());
|
liveURITextBox.setTitle(stringMessages.leaveEmptyForDefault());
|
||||||
|
|
||||||
@@ -160,7 +160,7 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel {
|
|||||||
storedURILabel.setTitle(stringMessages.leaveEmptyForDefault());
|
storedURILabel.setTitle(stringMessages.leaveEmptyForDefault());
|
||||||
|
|
||||||
storedURITextBox = new TextBox();
|
storedURITextBox = new TextBox();
|
||||||
storedURITextBox.ensureDebugId("StoredURI");
|
storedURITextBox.ensureDebugId("StoredURITextBox");
|
||||||
storedURITextBox.setVisibleLength(40);
|
storedURITextBox.setVisibleLength(40);
|
||||||
storedURITextBox.setTitle(stringMessages.leaveEmptyForDefault());
|
storedURITextBox.setTitle(stringMessages.leaveEmptyForDefault());
|
||||||
|
|
||||||
@@ -171,7 +171,7 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel {
|
|||||||
Label jsonURLLabel = new Label(stringMessages.jsonUrl() + ":");
|
Label jsonURLLabel = new Label(stringMessages.jsonUrl() + ":");
|
||||||
|
|
||||||
jsonURLTextBox = new TextBox();
|
jsonURLTextBox = new TextBox();
|
||||||
jsonURLTextBox.ensureDebugId("JSONURL");
|
jsonURLTextBox.ensureDebugId("JsonURLTextBox");
|
||||||
jsonURLTextBox.setVisibleLength(100);
|
jsonURLTextBox.setVisibleLength(100);
|
||||||
|
|
||||||
grid.setWidget(4, 0, jsonURLLabel);
|
grid.setWidget(4, 0, jsonURLLabel);
|
||||||
@@ -181,7 +181,7 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel {
|
|||||||
Label tracTracUpdateURLLabel = new Label(stringMessages.tracTracUpdateUrl() + ":");
|
Label tracTracUpdateURLLabel = new Label(stringMessages.tracTracUpdateUrl() + ":");
|
||||||
|
|
||||||
tracTracUpdateURITextBox = new TextBox();
|
tracTracUpdateURITextBox = new TextBox();
|
||||||
tracTracUpdateURITextBox.ensureDebugId("TRACTRACUPDATEURI");
|
tracTracUpdateURITextBox.ensureDebugId("TracTracUpdateURITextBox");
|
||||||
tracTracUpdateURITextBox.setVisibleLength(100);
|
tracTracUpdateURITextBox.setVisibleLength(100);
|
||||||
|
|
||||||
grid.setWidget(5, 0, tracTracUpdateURLLabel);
|
grid.setWidget(5, 0, tracTracUpdateURLLabel);
|
||||||
@@ -189,7 +189,7 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel {
|
|||||||
|
|
||||||
// TracTrac Username
|
// TracTrac Username
|
||||||
tractracUsernameTextBox = new TextBox();
|
tractracUsernameTextBox = new TextBox();
|
||||||
tractracUsernameTextBox.ensureDebugId("tractracUsername");
|
tractracUsernameTextBox.ensureDebugId("TracTracUsernameTextBox");
|
||||||
tractracUsernameTextBox.setVisibleLength(40);
|
tractracUsernameTextBox.setVisibleLength(40);
|
||||||
|
|
||||||
grid.setWidget(6, 0, new Label(stringMessages.tractracUsername() + ":"));
|
grid.setWidget(6, 0, new Label(stringMessages.tractracUsername() + ":"));
|
||||||
@@ -197,7 +197,7 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel {
|
|||||||
|
|
||||||
// TracTrac Password
|
// TracTrac Password
|
||||||
tractracPasswordTextBox = new TextBox();
|
tractracPasswordTextBox = new TextBox();
|
||||||
tractracPasswordTextBox.ensureDebugId("tractracPassword");
|
tractracPasswordTextBox.ensureDebugId("TracTracPasswordTextBox");
|
||||||
tractracPasswordTextBox.setVisibleLength(40);
|
tractracPasswordTextBox.setVisibleLength(40);
|
||||||
|
|
||||||
grid.setWidget(7, 0, new Label(stringMessages.tractracPassword() + ":"));
|
grid.setWidget(7, 0, new Label(stringMessages.tractracPassword() + ":"));
|
||||||
@@ -205,11 +205,12 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel {
|
|||||||
|
|
||||||
grid.setWidget(8, 0, new Label(stringMessages.racesWithHiddenState() + ":"));
|
grid.setWidget(8, 0, new Label(stringMessages.racesWithHiddenState() + ":"));
|
||||||
final CheckBox showHiddenRacesCheckbox = new CheckBox(stringMessages.show());
|
final CheckBox showHiddenRacesCheckbox = new CheckBox(stringMessages.show());
|
||||||
|
showHiddenRacesCheckbox.ensureDebugId("ShowHiddenRacesCheckBox");
|
||||||
grid.setWidget(8, 1, showHiddenRacesCheckbox);
|
grid.setWidget(8, 1, showHiddenRacesCheckbox);
|
||||||
|
|
||||||
// List Races
|
// List Races
|
||||||
Button listRacesButton = new Button(stringMessages.listRaces());
|
Button listRacesButton = new Button(stringMessages.listRaces());
|
||||||
listRacesButton.ensureDebugId("ListRaces");
|
listRacesButton.ensureDebugId("ListRacesButton");
|
||||||
listRacesButton.addClickHandler(new ClickHandler() {
|
listRacesButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
@@ -265,17 +266,17 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel {
|
|||||||
Label trackSettingsLabel = new Label(stringMessages.trackSettings() + ":");
|
Label trackSettingsLabel = new Label(stringMessages.trackSettings() + ":");
|
||||||
|
|
||||||
final CheckBox trackWindCheckBox = new CheckBox(stringMessages.trackWind());
|
final CheckBox trackWindCheckBox = new CheckBox(stringMessages.trackWind());
|
||||||
trackWindCheckBox.ensureDebugId("TrackWind");
|
trackWindCheckBox.ensureDebugId("TrackWindCheckBox");
|
||||||
trackWindCheckBox.setWordWrap(false);
|
trackWindCheckBox.setWordWrap(false);
|
||||||
trackWindCheckBox.setValue(Boolean.TRUE);
|
trackWindCheckBox.setValue(Boolean.TRUE);
|
||||||
|
|
||||||
final CheckBox correctWindCheckBox = new CheckBox(stringMessages.declinationCheckbox());
|
final CheckBox correctWindCheckBox = new CheckBox(stringMessages.declinationCheckbox());
|
||||||
correctWindCheckBox.ensureDebugId("CorrectWind");
|
correctWindCheckBox.ensureDebugId("CorrectWindCheckBox");
|
||||||
correctWindCheckBox.setWordWrap(false);
|
correctWindCheckBox.setWordWrap(false);
|
||||||
correctWindCheckBox.setValue(Boolean.TRUE);
|
correctWindCheckBox.setValue(Boolean.TRUE);
|
||||||
|
|
||||||
final CheckBox simulateWithStartTimeNowCheckBox = new CheckBox(stringMessages.simulateWithStartTimeNow());
|
final CheckBox simulateWithStartTimeNowCheckBox = new CheckBox(stringMessages.simulateWithStartTimeNow());
|
||||||
simulateWithStartTimeNowCheckBox.ensureDebugId("SimulateWithStartTimeNow");
|
simulateWithStartTimeNowCheckBox.ensureDebugId("SimulateWithStartTimeNowCheckBox");
|
||||||
simulateWithStartTimeNowCheckBox.setWordWrap(false);
|
simulateWithStartTimeNowCheckBox.setWordWrap(false);
|
||||||
simulateWithStartTimeNowCheckBox.setValue(Boolean.FALSE);
|
simulateWithStartTimeNowCheckBox.setValue(Boolean.FALSE);
|
||||||
|
|
||||||
@@ -288,6 +289,7 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel {
|
|||||||
Label racesFilterLabel = new Label(stringMessages.filterRacesByName() + ":");
|
Label racesFilterLabel = new Label(stringMessages.filterRacesByName() + ":");
|
||||||
AdminConsoleTableResources tableResources = GWT.create(AdminConsoleTableResources.class);
|
AdminConsoleTableResources tableResources = GWT.create(AdminConsoleTableResources.class);
|
||||||
racesTable = new CellTable<TracTracRaceRecordDTO>(10000, tableResources);
|
racesTable = new CellTable<TracTracRaceRecordDTO>(10000, tableResources);
|
||||||
|
racesTable.ensureDebugId("TrackableRacesCellTable");
|
||||||
this.racesFilterablePanel = new AbstractFilterablePanel<TracTracRaceRecordDTO>(racesFilterLabel, availableTracTracRaces, racesTable, raceList) {
|
this.racesFilterablePanel = new AbstractFilterablePanel<TracTracRaceRecordDTO>(racesFilterLabel, availableTracTracRaces, racesTable, raceList) {
|
||||||
@Override
|
@Override
|
||||||
public List<String> getSearchableStrings(TracTracRaceRecordDTO t) {
|
public List<String> getSearchableStrings(TracTracRaceRecordDTO t) {
|
||||||
@@ -297,7 +299,7 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel {
|
|||||||
return strings;
|
return strings;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
racesFilterablePanel.getTextBox().ensureDebugId("FilterRaces");
|
racesFilterablePanel.getTextBox().ensureDebugId("TrackableRacesFilterTextBox");
|
||||||
layoutTable.setWidget(4, 0, racesFilterLabel);
|
layoutTable.setWidget(4, 0, racesFilterLabel);
|
||||||
layoutTable.setWidget(4, 1, racesFilterablePanel);
|
layoutTable.setWidget(4, 1, racesFilterablePanel);
|
||||||
|
|
||||||
@@ -339,7 +341,6 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel {
|
|||||||
};
|
};
|
||||||
raceStatusColumn.setSortable(true);
|
raceStatusColumn.setSortable(true);
|
||||||
|
|
||||||
racesTable.ensureDebugId("RacesTable");
|
|
||||||
racesTable.addColumn(regattaNameColumn, stringMessages.event());
|
racesTable.addColumn(regattaNameColumn, stringMessages.event());
|
||||||
racesTable.addColumn(raceNameColumn, stringMessages.race());
|
racesTable.addColumn(raceNameColumn, stringMessages.race());
|
||||||
racesTable.addColumn(boatClassColumn, stringMessages.boatClass());
|
racesTable.addColumn(boatClassColumn, stringMessages.boatClass());
|
||||||
@@ -356,7 +357,7 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel {
|
|||||||
cellFormatter.setColSpan(5, 0, 2);
|
cellFormatter.setColSpan(5, 0, 2);
|
||||||
|
|
||||||
Button startTrackingButton = new Button(stringMessages.startTracking());
|
Button startTrackingButton = new Button(stringMessages.startTracking());
|
||||||
startTrackingButton.ensureDebugId("StartTracking");
|
startTrackingButton.ensureDebugId("StartTrackingButton");
|
||||||
startTrackingButton.addClickHandler(new ClickHandler() {
|
startTrackingButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
|
|||||||
+5
-4
@@ -102,7 +102,7 @@ public class TrackedRacesListComposite extends AbstractTrackedRacesListComposite
|
|||||||
@Override
|
@Override
|
||||||
protected void addControlButtons(HorizontalPanel trackedRacesButtonPanel) {
|
protected void addControlButtons(HorizontalPanel trackedRacesButtonPanel) {
|
||||||
btnRemoveRace = new Button(stringMessages.remove());
|
btnRemoveRace = new Button(stringMessages.remove());
|
||||||
btnRemoveRace.ensureDebugId("RemoveRave");
|
btnRemoveRace.ensureDebugId("RemoveRaceButton");
|
||||||
btnRemoveRace.addClickHandler(new ClickHandler() {
|
btnRemoveRace.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
@@ -111,8 +111,9 @@ public class TrackedRacesListComposite extends AbstractTrackedRacesListComposite
|
|||||||
});
|
});
|
||||||
btnRemoveRace.setEnabled(false);
|
btnRemoveRace.setEnabled(false);
|
||||||
trackedRacesButtonPanel.add(btnRemoveRace);
|
trackedRacesButtonPanel.add(btnRemoveRace);
|
||||||
|
|
||||||
btnUntrack = new Button(stringMessages.stopTracking());
|
btnUntrack = new Button(stringMessages.stopTracking());
|
||||||
btnUntrack.ensureDebugId("UntrackRace");
|
btnUntrack.ensureDebugId("StopTrackingButton");
|
||||||
btnUntrack.addClickHandler(new ClickHandler() {
|
btnUntrack.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent click) {
|
public void onClick(ClickEvent click) {
|
||||||
@@ -121,10 +122,9 @@ public class TrackedRacesListComposite extends AbstractTrackedRacesListComposite
|
|||||||
});
|
});
|
||||||
btnUntrack.setEnabled(false);
|
btnUntrack.setEnabled(false);
|
||||||
trackedRacesButtonPanel.add(btnUntrack);
|
trackedRacesButtonPanel.add(btnUntrack);
|
||||||
|
|
||||||
|
|
||||||
btnSetDelayToLive = new Button(stringMessages.setDelayToLive() + "...");
|
btnSetDelayToLive = new Button(stringMessages.setDelayToLive() + "...");
|
||||||
btnSetDelayToLive.ensureDebugId("SetDelayToLive");
|
btnSetDelayToLive.ensureDebugId("SetDelayToLiveButton");
|
||||||
btnSetDelayToLive.addClickHandler(new ClickHandler() {
|
btnSetDelayToLive.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
@@ -135,6 +135,7 @@ public class TrackedRacesListComposite extends AbstractTrackedRacesListComposite
|
|||||||
|
|
||||||
exportPopup = new ExportPopup(stringMessages);
|
exportPopup = new ExportPopup(stringMessages);
|
||||||
btnExport = new Button(stringMessages.export());
|
btnExport = new Button(stringMessages.export());
|
||||||
|
btnExport.ensureDebugId("ExportButton");
|
||||||
btnExport.addClickHandler(new ClickHandler() {
|
btnExport.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
|
|||||||
+1
@@ -42,6 +42,7 @@ public abstract class AbstractFilterablePanel<T> extends HorizontalPanel {
|
|||||||
this.display = display;
|
this.display = display;
|
||||||
this.filtered = filtered;
|
this.filtered = filtered;
|
||||||
this.textBox = new TextBox();
|
this.textBox = new TextBox();
|
||||||
|
this.textBox.ensureDebugId("FilterTextBox");
|
||||||
this.all = all;
|
this.all = all;
|
||||||
add(label);
|
add(label);
|
||||||
add(getTextBox());
|
add(getTextBox());
|
||||||
|
|||||||
+19
-5
@@ -75,10 +75,14 @@ public class ListEditorComposite<ValueType> extends Composite implements HasValu
|
|||||||
@Override
|
@Override
|
||||||
public Widget initWidget() {
|
public Widget initWidget() {
|
||||||
HorizontalPanel panel = new HorizontalPanel();
|
HorizontalPanel panel = new HorizontalPanel();
|
||||||
|
panel.ensureDebugId("CollapsedListEditorWidget");
|
||||||
|
|
||||||
collapsedValuesBox = new TextBox();
|
collapsedValuesBox = new TextBox();
|
||||||
|
collapsedValuesBox.ensureDebugId("CollapsedValuesTextBox");
|
||||||
collapsedValuesBox.setReadOnly(true);
|
collapsedValuesBox.setReadOnly(true);
|
||||||
|
|
||||||
collapsedEditButton = new Button(stringMessages.edit());
|
collapsedEditButton = new Button(stringMessages.edit());
|
||||||
|
collapsedEditButton.ensureDebugId("CollapsedEditButton");
|
||||||
collapsedEditButton.addClickHandler(new ClickHandler() {
|
collapsedEditButton.addClickHandler(new ClickHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
@@ -131,6 +135,7 @@ public class ListEditorComposite<ValueType> extends Composite implements HasValu
|
|||||||
DataEntryDialog.DialogCallback<List<ValueType>> callback) {
|
DataEntryDialog.DialogCallback<List<ValueType>> callback) {
|
||||||
super(dialogTitle, "", stringMessages.save(), stringMessages.cancel(), null, callback);
|
super(dialogTitle, "", stringMessages.save(), stringMessages.cancel(), null, callback);
|
||||||
expandedComposite = createExpandedUi(initialValues, ui);
|
expandedComposite = createExpandedUi(initialValues, ui);
|
||||||
|
expandedComposite.ensureDebugId("ExpandedListEditorComposite");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -158,11 +163,16 @@ public class ListEditorComposite<ValueType> extends Composite implements HasValu
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Widget initWidget() {
|
public Widget initWidget() {
|
||||||
expandedValuesGrid = new Grid(0, 2);
|
|
||||||
|
|
||||||
VerticalPanel panel = new VerticalPanel();
|
VerticalPanel panel = new VerticalPanel();
|
||||||
panel.add(createAddWidget());
|
|
||||||
|
Widget addWidget = createAddWidget();
|
||||||
|
addWidget.ensureDebugId("AddWidget");
|
||||||
|
panel.add(addWidget);
|
||||||
|
|
||||||
|
expandedValuesGrid = new Grid(0, 2);
|
||||||
|
expandedValuesGrid.ensureDebugId("ExpandedValuesGrid");
|
||||||
panel.add(expandedValuesGrid);
|
panel.add(expandedValuesGrid);
|
||||||
|
|
||||||
return panel;
|
return panel;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,6 +193,7 @@ public class ListEditorComposite<ValueType> extends Composite implements HasValu
|
|||||||
int rowIndex = expandedValuesGrid.insertRow(expandedValuesGrid.getRowCount());
|
int rowIndex = expandedValuesGrid.insertRow(expandedValuesGrid.getRowCount());
|
||||||
|
|
||||||
PushButton removeButton = new PushButton(new Image(removeImage));
|
PushButton removeButton = new PushButton(new Image(removeImage));
|
||||||
|
removeButton.ensureDebugId("RemoveButton");
|
||||||
removeButton.setTitle(stringMessages.remove());
|
removeButton.setTitle(stringMessages.remove());
|
||||||
removeButton.addClickHandler(new ClickHandler() {
|
removeButton.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
@@ -194,8 +205,11 @@ public class ListEditorComposite<ValueType> extends Composite implements HasValu
|
|||||||
context.onChange();
|
context.onChange();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
expandedValuesGrid.setWidget(rowIndex, 0, createValueWidget(newValue));
|
Widget widget = createValueWidget(newValue);
|
||||||
|
widget.ensureDebugId("ValueWidget");
|
||||||
|
|
||||||
|
expandedValuesGrid.setWidget(rowIndex, 0, widget);
|
||||||
expandedValuesGrid.setWidget(rowIndex, 1, removeButton);
|
expandedValuesGrid.setWidget(rowIndex, 1, removeButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
@@ -74,7 +74,10 @@ public class StringListEditorComposite extends ListEditorComposite<String> {
|
|||||||
@Override
|
@Override
|
||||||
protected Widget createAddWidget() {
|
protected Widget createAddWidget() {
|
||||||
final SuggestBox inputBox = new SuggestBox(inputOracle);
|
final SuggestBox inputBox = new SuggestBox(inputOracle);
|
||||||
|
inputBox.ensureDebugId("InputSuggestBox");
|
||||||
|
|
||||||
final Button addButton = new Button(stringMessages.add());
|
final Button addButton = new Button(stringMessages.add());
|
||||||
|
addButton.ensureDebugId("AddButton");
|
||||||
addButton.setEnabled(false);
|
addButton.setEnabled(false);
|
||||||
addButton.addClickHandler(new ClickHandler() {
|
addButton.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
|
|||||||
@@ -49,4 +49,10 @@ public class BySeleniumId extends By {
|
|||||||
public List<WebElement> findElements(SearchContext context) {
|
public List<WebElement> findElements(SearchContext context) {
|
||||||
return context.findElements(By.xpath(BY_SELENIUM_ID.format(new Object[] {this.id})));
|
return context.findElements(By.xpath(BY_SELENIUM_ID.format(new Object[] {this.id})));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "BySeleniumId: " + this.id;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+78
@@ -0,0 +1,78 @@
|
|||||||
|
package com.sap.sailing.selenium.pages.adminconsole;
|
||||||
|
|
||||||
|
import org.openqa.selenium.Alert;
|
||||||
|
import org.openqa.selenium.By;
|
||||||
|
import org.openqa.selenium.NoAlertPresentException;
|
||||||
|
import org.openqa.selenium.SearchContext;
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebDriver.TargetLocator;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
import org.openqa.selenium.support.ui.FluentWait;
|
||||||
|
|
||||||
|
import com.google.common.base.Function;
|
||||||
|
import com.sap.sailing.selenium.pages.PageObject;
|
||||||
|
|
||||||
|
public class Actions {
|
||||||
|
private static final String ACTION_XPATH = ".//descendant::div[@name='%s']/img";
|
||||||
|
|
||||||
|
public static final String EDIT_ACTION = "ACTION_EDIT";
|
||||||
|
|
||||||
|
public static final String REMOVE_ACTION = "ACTION_REMOVE";
|
||||||
|
|
||||||
|
public static final String EDIT_SCORES_ACTION = "ACTION_EDIT_SCORES";
|
||||||
|
|
||||||
|
public static final String CONFIGURE_URL_ACTION = "ACTION_CONFIGURE_URL";
|
||||||
|
|
||||||
|
public static final String UNLINK_RACE_ACTION = "ACTION_UNLINK";
|
||||||
|
|
||||||
|
public static final String REFRESH_RACE_ACTION = "ACTION_REFRESH_RACE";
|
||||||
|
|
||||||
|
public static WebElement findEditAction(SearchContext context) {
|
||||||
|
return context.findElement(By.xpath(String.format(ACTION_XPATH, EDIT_ACTION)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static WebElement findRemoveAction(SearchContext context) {
|
||||||
|
return context.findElement(By.xpath(String.format(ACTION_XPATH, REMOVE_ACTION)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static WebElement findEditScoresAction(SearchContext context) {
|
||||||
|
return context.findElement(By.xpath(String.format(ACTION_XPATH, EDIT_SCORES_ACTION)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static WebElement findConfigureUrlAction(SearchContext context) {
|
||||||
|
return context.findElement(By.xpath(String.format(ACTION_XPATH, CONFIGURE_URL_ACTION)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static WebElement findUnlinkRaceAction(SearchContext context) {
|
||||||
|
return context.findElement(By.xpath(String.format(ACTION_XPATH, UNLINK_RACE_ACTION)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static WebElement findRefreshAction(SearchContext context) {
|
||||||
|
return context.findElement(By.xpath(String.format(ACTION_XPATH, REFRESH_RACE_ACTION)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void acceptAlert(WebDriver driver) {
|
||||||
|
Alert alert = getAlert(driver);
|
||||||
|
alert.accept();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void dismissAlert(WebDriver driver) {
|
||||||
|
Alert alert = getAlert(driver);
|
||||||
|
alert.dismiss();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Alert getAlert(WebDriver driver) {
|
||||||
|
FluentWait<WebDriver> wait = PageObject.createFluentWait(driver, NoAlertPresentException.class);
|
||||||
|
|
||||||
|
Alert alert = wait.until(new Function<WebDriver, Alert>() {
|
||||||
|
@Override
|
||||||
|
public Alert apply(WebDriver driver) {
|
||||||
|
TargetLocator locator = driver.switchTo();
|
||||||
|
|
||||||
|
return locator.alert();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return alert;
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
@@ -184,6 +184,7 @@ public class AdminConsolePage extends HostPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// We have to determine the location where we have to click at the tab for the case its not completely visible.
|
// We have to determine the location where we have to click at the tab for the case its not completely visible.
|
||||||
|
// NOTE: We assume that the browser window is big enough to display at least 2 tabs!
|
||||||
org.openqa.selenium.interactions.Actions actions = new Actions(this.driver);
|
org.openqa.selenium.interactions.Actions actions = new Actions(this.driver);
|
||||||
actions.moveToElement(tab, determineOffsetForClick(tab), 5);
|
actions.moveToElement(tab, determineOffsetForClick(tab), 5);
|
||||||
actions.click();
|
actions.click();
|
||||||
|
|||||||
+13
-29
@@ -5,43 +5,27 @@ import org.openqa.selenium.WebElement;
|
|||||||
|
|
||||||
import com.sap.sailing.selenium.core.BySeleniumId;
|
import com.sap.sailing.selenium.core.BySeleniumId;
|
||||||
import com.sap.sailing.selenium.core.FindBy;
|
import com.sap.sailing.selenium.core.FindBy;
|
||||||
import com.sap.sailing.selenium.pages.PageArea;
|
|
||||||
|
|
||||||
public class FlexibleLeaderboardCreateDialog extends PageArea {
|
import com.sap.sailing.selenium.pages.common.DataEntryDialog;
|
||||||
@FindBy(how = BySeleniumId.class, using = "OkButton")
|
|
||||||
private WebElement okButton;
|
public class FlexibleLeaderboardCreateDialog extends DataEntryDialog {
|
||||||
@FindBy(how = BySeleniumId.class, using = "CancelButton")
|
@FindBy(how = BySeleniumId.class, using = "NameTextBox")
|
||||||
private WebElement cancelButton;
|
private WebElement nameTextBox;
|
||||||
@FindBy(how = BySeleniumId.class, using = "LeaderboardNameField")
|
|
||||||
private WebElement nameField;
|
@FindBy(how = BySeleniumId.class, using = "DisplayNameTextBox")
|
||||||
@FindBy(how = BySeleniumId.class, using = "StatusLabel")
|
private WebElement displayNameTextBox;
|
||||||
private WebElement statusLabel;
|
|
||||||
|
|
||||||
public FlexibleLeaderboardCreateDialog(WebDriver driver, WebElement element) {
|
public FlexibleLeaderboardCreateDialog(WebDriver driver, WebElement element) {
|
||||||
super(driver, element);
|
super(driver, element);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setName(String name) {
|
public void setName(String name) {
|
||||||
this.nameField.clear();
|
this.nameTextBox.clear();
|
||||||
this.nameField.sendKeys(name);
|
this.nameTextBox.sendKeys(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isOkEnabled() {
|
public void setDisplayName(String name) {
|
||||||
return this.okButton.isEnabled();
|
this.displayNameTextBox.clear();
|
||||||
}
|
this.displayNameTextBox.sendKeys(name);
|
||||||
|
|
||||||
public String getErrorMessage() {
|
|
||||||
return this.statusLabel.getText();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void pressOk() {
|
|
||||||
this.okButton.click();
|
|
||||||
|
|
||||||
// Wait, since we create the flexible leader board
|
|
||||||
waitForAjaxRequests();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void pressCancel() {
|
|
||||||
this.cancelButton.click();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+112
-43
@@ -9,8 +9,16 @@ import org.openqa.selenium.WebElement;
|
|||||||
|
|
||||||
import com.sap.sailing.selenium.core.BySeleniumId;
|
import com.sap.sailing.selenium.core.BySeleniumId;
|
||||||
import com.sap.sailing.selenium.core.FindBy;
|
import com.sap.sailing.selenium.core.FindBy;
|
||||||
|
|
||||||
import com.sap.sailing.selenium.pages.PageArea;
|
import com.sap.sailing.selenium.pages.PageArea;
|
||||||
import com.sap.sailing.selenium.test.gwt.widgets.CellTable;
|
|
||||||
|
import com.sap.sailing.selenium.pages.adminconsole.Actions;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.adminconsole.regatta.RegattaListComposite.RegattaDescriptor;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.CellTable;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.DataEntry;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.GenericCellTable;
|
||||||
|
|
||||||
public class LeaderboardConfigurationPanel extends PageArea {
|
public class LeaderboardConfigurationPanel extends PageArea {
|
||||||
@FindBy(how = BySeleniumId.class, using = "CreateFlexibleLeaderboardButton")
|
@FindBy(how = BySeleniumId.class, using = "CreateFlexibleLeaderboardButton")
|
||||||
@@ -19,62 +27,123 @@ public class LeaderboardConfigurationPanel extends PageArea {
|
|||||||
@FindBy(how = BySeleniumId.class, using = "CreateRegattaLeaderboardButton")
|
@FindBy(how = BySeleniumId.class, using = "CreateRegattaLeaderboardButton")
|
||||||
private WebElement createRegattaLeaderboardButton;
|
private WebElement createRegattaLeaderboardButton;
|
||||||
|
|
||||||
@FindBy(how = BySeleniumId.class, using = "AvailableLeaderboardsTable")
|
@FindBy(how = BySeleniumId.class, using = "RemoveLeaderboardsButton")
|
||||||
private WebElement availableLeaderboardsTable;
|
private WebElement removeLeaderboardsButton;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "LeaderboardsFilterTextBox")
|
||||||
|
private WebElement leaderboardsFilterTextBox;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "LeaderboardsCellTable")
|
||||||
|
private WebElement leaderboardsCellTable;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "LeaderboardDetailsPanel")
|
||||||
|
private WebElement leaderboardDetailsPanel;
|
||||||
|
|
||||||
public LeaderboardConfigurationPanel(WebDriver driver, WebElement element) {
|
public LeaderboardConfigurationPanel(WebDriver driver, WebElement element) {
|
||||||
super(driver, element);
|
super(driver, element);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public List<String> getAvailableLeaderboards() {
|
|
||||||
List<String> leaderboards = new ArrayList<>();
|
|
||||||
|
|
||||||
CellTable table = getLeaderboardTable();
|
|
||||||
List<WebElement> rows = table.getRows();
|
|
||||||
|
|
||||||
for(WebElement row : rows) {
|
|
||||||
WebElement name = row.findElement(By.xpath(".//td/div/a"));
|
|
||||||
|
|
||||||
leaderboards.add(name.getText());
|
|
||||||
}
|
|
||||||
|
|
||||||
return leaderboards;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void deleteLeaderboard(String leaderboard) {
|
|
||||||
CellTable table = getLeaderboardTable();
|
|
||||||
List<WebElement> rows = table.getRows();
|
|
||||||
|
|
||||||
for(WebElement row : rows) {
|
|
||||||
WebElement name = row.findElement(By.xpath(".//td/div/a"));
|
|
||||||
|
|
||||||
if(!leaderboard.equals(name.getText()))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
WebElement removeAction = row.findElement(By.xpath(".//td/div/div[@title='Remove']/img"));
|
|
||||||
|
|
||||||
removeAction.click();
|
|
||||||
|
|
||||||
this.driver.switchTo().alert().accept();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public FlexibleLeaderboardCreateDialog startCreatingFlexibleLeaderboard() {
|
public FlexibleLeaderboardCreateDialog startCreatingFlexibleLeaderboard() {
|
||||||
this.createFlexibleLeaderboardButton.click();
|
this.createFlexibleLeaderboardButton.click();
|
||||||
// Wait, since we trigger an AJAX-request to get the available events
|
// Wait, since we trigger an AJAX-request to get the available events
|
||||||
waitForAjaxRequests();
|
waitForAjaxRequests();
|
||||||
WebElement dialog = findElementBySeleniumId(this.driver, "CreateFlexibleLeaderboardDialog");
|
|
||||||
|
WebElement dialog = findElementBySeleniumId(this.driver, "FlexibleLeaderboardCreateDialog");
|
||||||
|
|
||||||
return new FlexibleLeaderboardCreateDialog(this.driver, dialog);
|
return new FlexibleLeaderboardCreateDialog(this.driver, dialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
private CellTable getLeaderboardTable() {
|
// TODO: Extend with display name, scoring system, event, course area and discars
|
||||||
return new CellTable(this.driver, this.availableLeaderboardsTable);
|
public void createFlexibleLeaderboard(String name) {
|
||||||
|
FlexibleLeaderboardCreateDialog dialog = startCreatingFlexibleLeaderboard();
|
||||||
|
dialog.setName(name);
|
||||||
|
dialog.pressOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void initElements() {
|
public RegattaLeaderboardCreateDialog startCreatingRegattaLeaderboard() {
|
||||||
super.initElements();
|
this.createRegattaLeaderboardButton.click();
|
||||||
|
|
||||||
//this.availableLeaderboardsTable = new CellTable(this.driver, findElementBySeleniumId("AvailableLeaderboardsTable"));
|
WebElement dialog = findElementBySeleniumId(this.driver, "RegattaLeaderboardCreateDialog");
|
||||||
|
|
||||||
|
return new RegattaLeaderboardCreateDialog(this.driver, dialog);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void createRegattaLeaderboard(RegattaDescriptor regatta) {
|
||||||
|
RegattaLeaderboardCreateDialog dialog = startCreatingRegattaLeaderboard();
|
||||||
|
dialog.selectRegatta(regatta);
|
||||||
|
dialog.pressOk();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteLeaderboard(String leaderboard) {
|
||||||
|
DataEntry entry = findLeaderboard(leaderboard);
|
||||||
|
|
||||||
|
if(entry != null) {
|
||||||
|
WebElement removeAction = Actions.findRemoveAction(entry.getWebElement());
|
||||||
|
removeAction.click();
|
||||||
|
|
||||||
|
Actions.acceptAlert(this.driver);
|
||||||
|
|
||||||
|
waitForAjaxRequests();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLeaderboardURL(String leaderboard) {
|
||||||
|
DataEntry entry = findLeaderboard(leaderboard);
|
||||||
|
|
||||||
|
if(entry != null) {
|
||||||
|
WebElement link = entry.getWebElement().findElement(By.xpath(".//td/div/a"));
|
||||||
|
|
||||||
|
return link.getAttribute("href");
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getAvailableLeaderboards() {
|
||||||
|
List<String> leaderboards = new ArrayList<>();
|
||||||
|
|
||||||
|
CellTable<DataEntry> table = getLeaderboardTable();
|
||||||
|
List<DataEntry> entries = table.getEntries();
|
||||||
|
|
||||||
|
for(DataEntry entry : entries) {
|
||||||
|
leaderboards.add(entry.getColumnContent(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
return leaderboards;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LeaderboardDetailsPanel getLeaderboardDetails(String leaderboard) {
|
||||||
|
CellTable<DataEntry> table = getLeaderboardTable();
|
||||||
|
List<DataEntry> entries = table.getEntries();
|
||||||
|
|
||||||
|
for(DataEntry entry : entries) {
|
||||||
|
String name = entry.getColumnContent(0);
|
||||||
|
|
||||||
|
if(leaderboard.equals(name)) {
|
||||||
|
entry.select();
|
||||||
|
|
||||||
|
return new LeaderboardDetailsPanel(this.driver, this.leaderboardDetailsPanel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private CellTable<DataEntry> getLeaderboardTable() {
|
||||||
|
return new GenericCellTable<>(this.driver, this.leaderboardsCellTable, DataEntry.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
private DataEntry findLeaderboard(String leaderboard) {
|
||||||
|
CellTable<DataEntry> table = getLeaderboardTable();
|
||||||
|
|
||||||
|
for(DataEntry entry : table.getEntries()) {
|
||||||
|
String name = entry.getColumnContent(0);
|
||||||
|
|
||||||
|
if(leaderboard.equals(name)) {
|
||||||
|
return entry;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+203
@@ -0,0 +1,203 @@
|
|||||||
|
package com.sap.sailing.selenium.pages.adminconsole.leaderboard;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.core.BySeleniumId;
|
||||||
|
import com.sap.sailing.selenium.core.FindBy;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.PageArea;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.adminconsole.Actions;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.adminconsole.tracking.TrackedRacesList.TrackedRaceDescriptor;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.CellTable;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.DataEntry;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.GenericCellTable;
|
||||||
|
|
||||||
|
public class LeaderboardDetailsPanel extends PageArea {
|
||||||
|
public static class RaceDescriptor {
|
||||||
|
private final String name;
|
||||||
|
private final String fleet;
|
||||||
|
private final boolean medalRace;
|
||||||
|
private final boolean linked;
|
||||||
|
private final double factor;
|
||||||
|
|
||||||
|
public RaceDescriptor(String name, String fleet, boolean medalRace, boolean linked, double factor) {
|
||||||
|
this.name = name;
|
||||||
|
this.fleet = fleet;
|
||||||
|
this.medalRace = medalRace;
|
||||||
|
this.linked = linked;
|
||||||
|
this.factor = factor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFleet() {
|
||||||
|
return this.fleet;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isMedalRace() {
|
||||||
|
return this.medalRace;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isLinked() {
|
||||||
|
return this.linked;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getFactor() {
|
||||||
|
return this.factor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(this.name, this.fleet);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object object) {
|
||||||
|
if (this == object)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (object == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (getClass() != object.getClass())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
RaceDescriptor other = (RaceDescriptor) object;
|
||||||
|
|
||||||
|
if(!Objects.equals(this.name, other.name))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if(!Objects.equals(this.fleet, other.fleet))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "RacesCellTable")
|
||||||
|
private WebElement racesCellTable;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "TrackedRacesListComposite")
|
||||||
|
private WebElement trackedRacesListComposite;
|
||||||
|
|
||||||
|
public LeaderboardDetailsPanel(WebDriver driver, WebElement element) {
|
||||||
|
super(driver, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<RaceDescriptor> getRaces() {
|
||||||
|
List<RaceDescriptor> result = new ArrayList<>();
|
||||||
|
|
||||||
|
CellTable<DataEntry> racesTable = getRacesTable();
|
||||||
|
|
||||||
|
for(DataEntry entry : racesTable.getEntries()) {
|
||||||
|
String name = entry.getColumnContent(0);
|
||||||
|
String fleet = entry.getColumnContent(1);
|
||||||
|
//String medalRace = entry.getColumnContent(2);
|
||||||
|
//String linked = entry.getColumnContent(3);
|
||||||
|
//String factor = entry.getColumnContent(4);
|
||||||
|
|
||||||
|
result.add(new RaceDescriptor(name, fleet, false, false, 0.0));
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// public RaceEditDialog editRace(RaceDescriptor race) {
|
||||||
|
//
|
||||||
|
// WebElement action = Actions.findEditAction(findRace(race));
|
||||||
|
//
|
||||||
|
// action.click();
|
||||||
|
// }
|
||||||
|
|
||||||
|
public void unlinkRace(RaceDescriptor race) {
|
||||||
|
DataEntry entry = findRace(race);
|
||||||
|
|
||||||
|
if(entry != null) {
|
||||||
|
WebElement action = Actions.findUnlinkRaceAction(entry.getWebElement());
|
||||||
|
|
||||||
|
action.click();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void refreshRaceLog(RaceDescriptor race) {
|
||||||
|
DataEntry entry = findRace(race);
|
||||||
|
|
||||||
|
if(entry != null) {
|
||||||
|
WebElement action = Actions.findRefreshAction(entry.getWebElement());
|
||||||
|
|
||||||
|
action.click();
|
||||||
|
|
||||||
|
// QUESTION [D049941]: What else can happen?
|
||||||
|
Actions.acceptAlert(this.driver);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void linkRace(RaceDescriptor race, TrackedRaceDescriptor tracking) {
|
||||||
|
DataEntry raceRow = findRace(race);
|
||||||
|
DataEntry trackingRow = findTracking(tracking);
|
||||||
|
|
||||||
|
if(raceRow == null || trackingRow == null) {
|
||||||
|
}
|
||||||
|
|
||||||
|
raceRow.select();
|
||||||
|
trackingRow.select();
|
||||||
|
}
|
||||||
|
|
||||||
|
private DataEntry findRace(RaceDescriptor race) {
|
||||||
|
CellTable<DataEntry> racesTable = getRacesTable();
|
||||||
|
|
||||||
|
for(DataEntry entry : racesTable.getEntries()) {
|
||||||
|
String name = entry.getColumnContent(0);
|
||||||
|
String fleet = entry.getColumnContent(1);
|
||||||
|
//String medalRace = entry.getColumnContent(2);
|
||||||
|
//String linked = entry.getColumnContent(3);
|
||||||
|
//String factor = entry.getColumnContent(4);
|
||||||
|
|
||||||
|
RaceDescriptor descriptor = new RaceDescriptor(name, fleet, false, false, 0.0);
|
||||||
|
|
||||||
|
if(descriptor.equals(race))
|
||||||
|
return entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private DataEntry findTracking(TrackedRaceDescriptor tracking) {
|
||||||
|
CellTable<DataEntry> trackingTable = getTrackedRacesTable();
|
||||||
|
|
||||||
|
for(DataEntry entry : trackingTable.getEntries()) {
|
||||||
|
String regatta = entry.getColumnContent(0);
|
||||||
|
String boatClass = entry.getColumnContent(1);
|
||||||
|
String raceName = entry.getColumnContent(2);
|
||||||
|
|
||||||
|
TrackedRaceDescriptor descriptor = new TrackedRaceDescriptor(regatta, boatClass, raceName);
|
||||||
|
|
||||||
|
if(descriptor.equals(tracking))
|
||||||
|
return entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private CellTable<DataEntry> getRacesTable() {
|
||||||
|
return new GenericCellTable<>(this.driver, this.racesCellTable, DataEntry.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
private CellTable<DataEntry> getTrackedRacesTable() {
|
||||||
|
WebElement table = findElementBySeleniumId(this.trackedRacesListComposite, "TrackedRacesCellTable");
|
||||||
|
|
||||||
|
return new GenericCellTable<>(this.driver, table, DataEntry.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
+94
@@ -0,0 +1,94 @@
|
|||||||
|
package com.sap.sailing.selenium.pages.adminconsole.leaderboard;
|
||||||
|
|
||||||
|
import static com.sap.sailing.selenium.pages.gwt.query.Alias.$;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.core.BySeleniumId;
|
||||||
|
import com.sap.sailing.selenium.core.FindBy;
|
||||||
|
import com.sap.sailing.selenium.pages.PageArea;
|
||||||
|
import com.sap.sailing.selenium.pages.adminconsole.Actions;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.CellTable;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.DataEntry;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.GenericCellTable;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.query.Alias;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.query.TableQuery;
|
||||||
|
|
||||||
|
public class LeaderboardGroupConfigurationPanel extends PageArea {
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "CreateLeaderboardGroupButton")
|
||||||
|
private WebElement createLeaderboardGroupButton;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "RemoveLeaderboardsButton")
|
||||||
|
private WebElement removeButton;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "LeaderboardGroupsCellTable")
|
||||||
|
private WebElement leaderboardGroupsTable;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "LeaderboardGroupDetailsPanel")
|
||||||
|
private WebElement leaderboardGroupDetailsPanel;
|
||||||
|
|
||||||
|
public LeaderboardGroupConfigurationPanel(WebDriver driver, WebElement element) {
|
||||||
|
super(driver, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
public LeaderboardGroupCreateDialog startCreatingLeaderboardGroup() {
|
||||||
|
this.createLeaderboardGroupButton.click();
|
||||||
|
|
||||||
|
WebElement dialog = findElementBySeleniumId(this.driver, "LeaderboardGroupCreateDialog");
|
||||||
|
|
||||||
|
return new LeaderboardGroupCreateDialog(this.driver, dialog);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void createLeaderboardGroup(String name, String description) {
|
||||||
|
LeaderboardGroupCreateDialog dialog = startCreatingLeaderboardGroup();
|
||||||
|
dialog.setName(name);
|
||||||
|
dialog.setDescription(description);
|
||||||
|
dialog.pressOk();
|
||||||
|
}
|
||||||
|
|
||||||
|
public CellTable<DataEntry> getLeaderboardGroupsTable() {
|
||||||
|
return new GenericCellTable<DataEntry>(this.driver, this.leaderboardGroupsTable, DataEntry.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteLeaderboardGroup(String name) {
|
||||||
|
DataEntry result = findLeaderboardGroup(name);
|
||||||
|
|
||||||
|
if (result != null) {
|
||||||
|
Actions.findRemoveAction(result.getWebElement()).click();
|
||||||
|
Actions.acceptAlert(this.driver);
|
||||||
|
|
||||||
|
waitForAjaxRequests();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public LeaderboardGroupDetailsPanel getLeaderboardGroupDetails(String name) {
|
||||||
|
DataEntry result = findLeaderboardGroup(name);
|
||||||
|
|
||||||
|
if (result != null) {
|
||||||
|
result.select();
|
||||||
|
}
|
||||||
|
|
||||||
|
return getLeaderboardGroupDetails();
|
||||||
|
}
|
||||||
|
|
||||||
|
public LeaderboardGroupDetailsPanel getLeaderboardGroupDetails() {
|
||||||
|
if(!this.leaderboardGroupDetailsPanel.isDisplayed()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new LeaderboardGroupDetailsPanel(this.driver, this.leaderboardGroupDetailsPanel);
|
||||||
|
}
|
||||||
|
|
||||||
|
private DataEntry findLeaderboardGroup(String name) {
|
||||||
|
CellTable<DataEntry> table = getLeaderboardGroupsTable();
|
||||||
|
final DataEntry alias = Alias.alias(DataEntry.class);
|
||||||
|
TableQuery<DataEntry> query = new TableQuery<>();
|
||||||
|
query.from(table)
|
||||||
|
.where(
|
||||||
|
$(alias.getColumnContent("Name")).eq(name)
|
||||||
|
);
|
||||||
|
|
||||||
|
return query.firstResult();
|
||||||
|
}
|
||||||
|
}
|
||||||
+32
@@ -0,0 +1,32 @@
|
|||||||
|
package com.sap.sailing.selenium.pages.adminconsole.leaderboard;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.core.BySeleniumId;
|
||||||
|
import com.sap.sailing.selenium.core.FindBy;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.common.DataEntryDialog;
|
||||||
|
|
||||||
|
public class LeaderboardGroupCreateDialog extends DataEntryDialog {
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "NameTextBox")
|
||||||
|
private WebElement nameField;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "DescriptionTextArea")
|
||||||
|
private WebElement descriptionField;
|
||||||
|
|
||||||
|
public LeaderboardGroupCreateDialog(WebDriver driver, WebElement element) {
|
||||||
|
super(driver, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.nameField.clear();
|
||||||
|
this.nameField.sendKeys(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDescription(String description) {
|
||||||
|
this.descriptionField.clear();
|
||||||
|
this.descriptionField.sendKeys(description);
|
||||||
|
}
|
||||||
|
}
|
||||||
+57
@@ -0,0 +1,57 @@
|
|||||||
|
package com.sap.sailing.selenium.pages.adminconsole.leaderboard;
|
||||||
|
|
||||||
|
import static com.sap.sailing.selenium.pages.gwt.query.Alias.$;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.core.BySeleniumId;
|
||||||
|
import com.sap.sailing.selenium.core.FindBy;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.PageArea;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.CellTable;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.DataEntry;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.GenericCellTable;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.query.Alias;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.query.TableQuery;
|
||||||
|
|
||||||
|
public class LeaderboardGroupDetailsPanel extends PageArea {
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "LeaderboardsFilterTextBox")
|
||||||
|
private WebElement leaderboardsFilterTextBox;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "LeaderboardsCellTable")
|
||||||
|
private WebElement leaderboardsCellTable;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "RefreshLeaderboardsButton")
|
||||||
|
private WebElement refreshLeaderboardsButton;
|
||||||
|
|
||||||
|
public LeaderboardGroupDetailsPanel(WebDriver driver, WebElement element) {
|
||||||
|
super(driver, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void refreshLeaderboards() {
|
||||||
|
this.refreshLeaderboardsButton.click();
|
||||||
|
}
|
||||||
|
|
||||||
|
public CellTable<DataEntry> getLeaderboardsTable() {
|
||||||
|
return new GenericCellTable<DataEntry>(this.driver, this.leaderboardsCellTable, DataEntry.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DataEntry findLeaderboardEntry(String name) {
|
||||||
|
CellTable<DataEntry> table = getLeaderboardsTable();
|
||||||
|
DataEntry alias = Alias.alias(DataEntry.class);
|
||||||
|
|
||||||
|
TableQuery<DataEntry> query = new TableQuery<>();
|
||||||
|
query.from(table).
|
||||||
|
where($(alias.getColumnContent("Leaderboard Name")).eq(name));
|
||||||
|
|
||||||
|
return query.firstResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void filterLeaderboards(String filterText) {
|
||||||
|
this.leaderboardsFilterTextBox.clear();
|
||||||
|
this.leaderboardsFilterTextBox.sendKeys(filterText);
|
||||||
|
}
|
||||||
|
}
|
||||||
+29
@@ -0,0 +1,29 @@
|
|||||||
|
package com.sap.sailing.selenium.pages.adminconsole.leaderboard;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
import org.openqa.selenium.support.ui.Select;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.core.BySeleniumId;
|
||||||
|
import com.sap.sailing.selenium.core.FindBy;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.adminconsole.regatta.RegattaListComposite.RegattaDescriptor;
|
||||||
|
import com.sap.sailing.selenium.pages.common.DataEntryDialog;
|
||||||
|
|
||||||
|
public class RegattaLeaderboardCreateDialog extends DataEntryDialog {
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "NameTextBox")
|
||||||
|
private WebElement nameTextField;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "RegattaListBox")
|
||||||
|
private WebElement regattaDropDown;
|
||||||
|
|
||||||
|
public RegattaLeaderboardCreateDialog(WebDriver driver, WebElement element) {
|
||||||
|
super(driver, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void selectRegatta(RegattaDescriptor regatta) {
|
||||||
|
Select dropDown = new Select(this.regattaDropDown);
|
||||||
|
dropDown.selectByValue(regatta.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+51
@@ -0,0 +1,51 @@
|
|||||||
|
package com.sap.sailing.selenium.pages.adminconsole.regatta;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.core.BySeleniumId;
|
||||||
|
import com.sap.sailing.selenium.core.FindBy;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.common.DataEntryDialog;
|
||||||
|
|
||||||
|
public class RegattaCreateDialog extends DataEntryDialog {
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "RegattaNameTextField")
|
||||||
|
private WebElement regattaNameTextField;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "BoatClassTextField")
|
||||||
|
private WebElement boatClassTextField;
|
||||||
|
|
||||||
|
// @FindBy(how = BySeleniumId.class, using = "ScoringSchemeListBox")
|
||||||
|
// private WebElement scoringSystemDropDown;
|
||||||
|
// @FindBy(how = BySeleniumId.class, using = "EventListBox")
|
||||||
|
// private WebElement eventDropDown;
|
||||||
|
// @FindBy(how = BySeleniumId.class, using = "CourseAreaListBox")
|
||||||
|
// private WebElement courseAreaDropDown;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "AddSeriesButton")
|
||||||
|
private WebElement addSeriesButton;
|
||||||
|
|
||||||
|
public RegattaCreateDialog(WebDriver driver, WebElement element) {
|
||||||
|
super(driver, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRegattaName(String name) {
|
||||||
|
this.regattaNameTextField.clear();
|
||||||
|
this.regattaNameTextField.sendKeys(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBoatClass(String boatClass) {
|
||||||
|
this.boatClassTextField.clear();
|
||||||
|
this.boatClassTextField.sendKeys(boatClass);
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Scoring System, Event and Course Area
|
||||||
|
|
||||||
|
public SeriesCreateDialog addSeries() {
|
||||||
|
this.addSeriesButton.click();
|
||||||
|
|
||||||
|
WebElement dialog = findElementBySeleniumId(this.driver, "SeriesCreateDialog");
|
||||||
|
|
||||||
|
return new SeriesCreateDialog(this.driver, dialog);
|
||||||
|
}
|
||||||
|
}
|
||||||
+102
@@ -0,0 +1,102 @@
|
|||||||
|
package com.sap.sailing.selenium.pages.adminconsole.regatta;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.core.BySeleniumId;
|
||||||
|
import com.sap.sailing.selenium.core.FindBy;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.PageArea;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.adminconsole.Actions;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.CellTable;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.DataEntry;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.GenericCellTable;
|
||||||
|
|
||||||
|
// TODO: Implement if needed
|
||||||
|
public class RegattaDetailsComposite extends PageArea {
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "NameLabel")
|
||||||
|
private WebElement regattaNameLabel;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "BoatClassLabel")
|
||||||
|
private WebElement boatClassLabel;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "CourseAreaLabel")
|
||||||
|
private WebElement courseAreaLabel;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "ScoringSystemLabel")
|
||||||
|
private WebElement scoringSystemLabel;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "SeriesCellTable")
|
||||||
|
private WebElement seriesTable;
|
||||||
|
|
||||||
|
public RegattaDetailsComposite(WebDriver driver, WebElement element) {
|
||||||
|
super(driver, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRegattaName() {
|
||||||
|
return this.regattaNameLabel.getText();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBoatClass() {
|
||||||
|
return this.boatClassLabel.getText();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCouresArea() {
|
||||||
|
return this.courseAreaLabel.getText();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getScoringSystem() {
|
||||||
|
return this.scoringSystemLabel.getText();
|
||||||
|
}
|
||||||
|
|
||||||
|
// public void getSeries() {
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
|
||||||
|
public SeriesEditDialog editSeries(String series) {
|
||||||
|
DataEntry entry = findSeries(series);
|
||||||
|
|
||||||
|
if(entry != null) {
|
||||||
|
WebElement action = Actions.findEditAction(entry.getWebElement());
|
||||||
|
action.click();
|
||||||
|
|
||||||
|
WebElement dialog = findElementBySeleniumId(this.driver, "SeriesEditDialog");
|
||||||
|
|
||||||
|
return new SeriesEditDialog(this.driver, dialog);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteSeries(String series) {
|
||||||
|
DataEntry entry = findSeries(series);
|
||||||
|
|
||||||
|
if(entry != null) {
|
||||||
|
WebElement removeAction = Actions.findRemoveAction(entry.getWebElement());
|
||||||
|
removeAction.click();
|
||||||
|
|
||||||
|
Actions.acceptAlert(this.driver);
|
||||||
|
|
||||||
|
//waitForAjaxRequests();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private DataEntry findSeries(String series) {
|
||||||
|
CellTable<DataEntry> table = getSeriesTable();
|
||||||
|
|
||||||
|
for(DataEntry entry : table.getEntries()) {
|
||||||
|
String name = entry.getColumnContent(0);
|
||||||
|
|
||||||
|
if(series.equals(name))
|
||||||
|
return entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private CellTable<DataEntry> getSeriesTable() {
|
||||||
|
return new GenericCellTable<>(this.driver, this.seriesTable, DataEntry.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
package com.sap.sailing.selenium.pages.adminconsole.regatta;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.PageArea;
|
||||||
|
|
||||||
|
public class RegattaEditDialog extends PageArea {
|
||||||
|
|
||||||
|
public RegattaEditDialog(WebDriver driver, WebElement element) {
|
||||||
|
super(driver, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+168
@@ -0,0 +1,168 @@
|
|||||||
|
package com.sap.sailing.selenium.pages.adminconsole.regatta;
|
||||||
|
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.core.BySeleniumId;
|
||||||
|
import com.sap.sailing.selenium.core.FindBy;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.PageArea;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.adminconsole.Actions;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.CellTable;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.CellTable.SortingOrder;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.DataEntry;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.GenericCellTable;
|
||||||
|
|
||||||
|
public class RegattaListComposite extends PageArea {
|
||||||
|
public static class RegattaDescriptor {
|
||||||
|
private final String name;
|
||||||
|
private final String boatClass;
|
||||||
|
|
||||||
|
// TODO [D049941]: Mark as a bug and remove this method as soon as possible
|
||||||
|
public static RegattaDescriptor fromString(String name) {
|
||||||
|
if(name == null || name.isEmpty())
|
||||||
|
return null;
|
||||||
|
|
||||||
|
int openingBrace = name.lastIndexOf('(');
|
||||||
|
int closingBrace = name.lastIndexOf(')');
|
||||||
|
|
||||||
|
return new RegattaDescriptor(name.substring(0, openingBrace - 1),
|
||||||
|
name.substring(openingBrace + 1, closingBrace));
|
||||||
|
}
|
||||||
|
|
||||||
|
public RegattaDescriptor(String name, String boatClass) {
|
||||||
|
this.name = name;
|
||||||
|
this.boatClass = boatClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBoatClass() {
|
||||||
|
return this.boatClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString() {
|
||||||
|
return this.name + " (" + this.boatClass + ")";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(this.name, this.boatClass);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object object) {
|
||||||
|
if (this == object)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (object == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (getClass() != object.getClass())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
RegattaDescriptor other = (RegattaDescriptor) object;
|
||||||
|
|
||||||
|
if (!Objects.equals(this.boatClass, other.boatClass))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (!Objects.equals(this.name, other.name))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "FilterRegattasTextField")
|
||||||
|
private WebElement RegattasFilterTextField;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "NoRegattasLabel")
|
||||||
|
private WebElement noRegattasLabel;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "RegattasCellTable")
|
||||||
|
private WebElement regattasTable;
|
||||||
|
|
||||||
|
public RegattaListComposite(WebDriver driver, WebElement element) {
|
||||||
|
super(driver, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sortByRegattaName(SortingOrder order) {
|
||||||
|
sortRegattaList(0, order);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sortByBoatClass(SortingOrder order) {
|
||||||
|
sortRegattaList(1, order);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<RegattaDescriptor> getRegattas() {
|
||||||
|
List<RegattaDescriptor> descriptors = new LinkedList<>();
|
||||||
|
CellTable<DataEntry> table = getRegattasTable();
|
||||||
|
|
||||||
|
for(DataEntry entry : table.getEntries()) {
|
||||||
|
String name = entry.getColumnContent(0);
|
||||||
|
String boatClass = entry.getColumnContent(1);
|
||||||
|
|
||||||
|
descriptors.add(new RegattaDescriptor(name, boatClass));
|
||||||
|
}
|
||||||
|
|
||||||
|
return descriptors;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void selectRegatta(RegattaDescriptor regatta) {
|
||||||
|
DataEntry entry = findRegatta(regatta);
|
||||||
|
|
||||||
|
if(entry != null) {
|
||||||
|
entry.select();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// public EditRegattaDialog editRegatta(RegattaDescriptor regatta) {
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
|
||||||
|
public void removeRegatta(RegattaDescriptor regatta) {
|
||||||
|
DataEntry entry = findRegatta(regatta);
|
||||||
|
|
||||||
|
if(entry != null) {
|
||||||
|
WebElement action = Actions.findRemoveAction(entry.getWebElement());
|
||||||
|
action.click();
|
||||||
|
|
||||||
|
waitForAjaxRequests();
|
||||||
|
|
||||||
|
Actions.acceptAlert(this.driver);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private DataEntry findRegatta(RegattaDescriptor regatta) {
|
||||||
|
CellTable<DataEntry> table = getRegattasTable();
|
||||||
|
|
||||||
|
for(DataEntry entry : table.getEntries()) {
|
||||||
|
String name = entry.getColumnContent(0);
|
||||||
|
// String boatClass = columns.getColumnContent(1);
|
||||||
|
//
|
||||||
|
// if(regatta.equals(new RegattaDescriptor(name, boatClass)))
|
||||||
|
// return row;
|
||||||
|
if(regatta.equals(RegattaDescriptor.fromString(name)))
|
||||||
|
return entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sortRegattaList(int column, SortingOrder order) {
|
||||||
|
CellTable<DataEntry> table = getRegattasTable();
|
||||||
|
table.sortByColumn(column, order);
|
||||||
|
}
|
||||||
|
|
||||||
|
private CellTable<DataEntry> getRegattasTable() {
|
||||||
|
return new GenericCellTable<>(this.driver, this.regattasTable, DataEntry.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
+89
@@ -0,0 +1,89 @@
|
|||||||
|
package com.sap.sailing.selenium.pages.adminconsole.regatta;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.core.BySeleniumId;
|
||||||
|
import com.sap.sailing.selenium.core.FindBy;
|
||||||
|
import com.sap.sailing.selenium.pages.PageArea;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.adminconsole.regatta.RegattaListComposite.RegattaDescriptor;
|
||||||
|
|
||||||
|
public class RegattaStructureManagementPanel extends PageArea {
|
||||||
|
public static final String DEFAULT_SERIES_NAME = "Default"; //$NON-NLS-1$
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "AddRegattaButton")
|
||||||
|
WebElement addRegattaButton;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "RemoveRegattaButton")
|
||||||
|
WebElement removeRegattaButton;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "RegattaListComposite")
|
||||||
|
WebElement regattaList;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "RegattaDetailsComposite")
|
||||||
|
WebElement regattaDetails;
|
||||||
|
|
||||||
|
public RegattaStructureManagementPanel(WebDriver driver, WebElement element) {
|
||||||
|
super(driver, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
public RegattaCreateDialog startRegattaCreation() {
|
||||||
|
this.addRegattaButton.click();
|
||||||
|
|
||||||
|
WebElement dialog = findElementBySeleniumId(this.driver, "RegattaCreateDialog"); //$NON-NLS-1$
|
||||||
|
|
||||||
|
return new RegattaCreateDialog(this.driver, dialog);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>Creates a regatta with 1 series (named "Default").</p>
|
||||||
|
*
|
||||||
|
* @param regatta
|
||||||
|
*/
|
||||||
|
public void createRegatta(RegattaDescriptor regatta) {
|
||||||
|
RegattaCreateDialog createRegattaDialog = startRegattaCreation();
|
||||||
|
createRegattaDialog.setRegattaName(regatta.getName());
|
||||||
|
createRegattaDialog.setBoatClass(regatta.getBoatClass());
|
||||||
|
|
||||||
|
SeriesCreateDialog addSeriesDialog = createRegattaDialog.addSeries();
|
||||||
|
addSeriesDialog.setSeriesName(DEFAULT_SERIES_NAME);
|
||||||
|
|
||||||
|
addSeriesDialog.pressOk();
|
||||||
|
|
||||||
|
// QUESTION: How do we handle an error (here or in the dialog)?
|
||||||
|
createRegattaDialog.pressOk();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeRegatta(RegattaDescriptor regatta) {
|
||||||
|
// Select the regatta and click the remove button
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeRegattas(List<RegattaDescriptor> regattas) {
|
||||||
|
// Select all regattas and click the remove button
|
||||||
|
}
|
||||||
|
|
||||||
|
public RegattaListComposite getRegattaList() {
|
||||||
|
return new RegattaListComposite(this.driver, this.regattaList);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void selectRegatta(RegattaDescriptor regatta) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public RegattaDetailsComposite getRegattaDetails(RegattaDescriptor regatta) {
|
||||||
|
RegattaListComposite regattaList = getRegattaList();
|
||||||
|
regattaList.selectRegatta(regatta);
|
||||||
|
|
||||||
|
return getRegattaDetails();
|
||||||
|
}
|
||||||
|
|
||||||
|
public RegattaDetailsComposite getRegattaDetails() {
|
||||||
|
if(this.regattaDetails.isDisplayed())
|
||||||
|
return new RegattaDetailsComposite(this.driver, this.regattaDetails);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
+40
@@ -0,0 +1,40 @@
|
|||||||
|
package com.sap.sailing.selenium.pages.adminconsole.regatta;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.core.BySeleniumId;
|
||||||
|
import com.sap.sailing.selenium.core.FindBy;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.common.DataEntryDialog;
|
||||||
|
|
||||||
|
public class SeriesCreateDialog extends DataEntryDialog {
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "NameTextField")
|
||||||
|
private WebElement seriesNameTextField;
|
||||||
|
|
||||||
|
// @FindBy(how = BySeleniumId.class, using = "MedalSeriesCheckbox")
|
||||||
|
// private WebElement medalSeriesCheckbox;
|
||||||
|
|
||||||
|
// @FindBy(how = BySeleniumId.class, using = "StartsWithZeroScoreCheckbox")
|
||||||
|
// private WebElement startsWithZeroScoreCheckbox;
|
||||||
|
|
||||||
|
// @FindBy(how = BySeleniumId.class, using = "StartsWithNonDiscardableCarryForwardCheckbox")
|
||||||
|
// private WebElement startsWithNonDiscardableCarryForwardCheckbox;
|
||||||
|
|
||||||
|
// @FindBy(how = BySeleniumId.class, using = "DefinesResultDiscardingRulesCheckbox")
|
||||||
|
// private WebElement definesResultDiscardingRulesCheckbox;
|
||||||
|
|
||||||
|
// @FindBy(how = BySeleniumId.class, using = "FleetListEditorComposite")
|
||||||
|
// private WebElement fleetsPanel;
|
||||||
|
|
||||||
|
public SeriesCreateDialog(WebDriver driver, WebElement element) {
|
||||||
|
super(driver, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSeriesName(String name) {
|
||||||
|
this.seriesNameTextField.clear();
|
||||||
|
this.seriesNameTextField.sendKeys(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Checkboxes and Fleets
|
||||||
|
}
|
||||||
+74
@@ -0,0 +1,74 @@
|
|||||||
|
package com.sap.sailing.selenium.pages.adminconsole.regatta;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
import org.openqa.selenium.support.ui.Select;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.core.BySeleniumId;
|
||||||
|
import com.sap.sailing.selenium.core.FindBy;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.common.DataEntryDialog;
|
||||||
|
|
||||||
|
public class SeriesEditDialog extends DataEntryDialog {
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "MedalSeriesCheckbox")
|
||||||
|
private WebElement medalSeriesCheckbox;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "StartsWithZeroScoreCheckbox")
|
||||||
|
private WebElement startsWithZeroScoreCheckbox;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "StartsWithNonDiscardableCarryForwardCheckbox")
|
||||||
|
private WebElement startsWithNonDiscardableCarryForwardCheckbox;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "DefinesResultDiscardingRulesCheckbox")
|
||||||
|
private WebElement definesResultDiscardingRulesCheckbox;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "NumberOfRacesListBox")
|
||||||
|
private WebElement numberOfRacesDropDown;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "RaceNamePrefixTextBox")
|
||||||
|
private WebElement raceNamePrefixTextField;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "AddRacesButton")
|
||||||
|
private WebElement addRacesButton;
|
||||||
|
|
||||||
|
public SeriesEditDialog(WebDriver driver, WebElement element) {
|
||||||
|
super(driver, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getSetNumberOfRacesToAdd() {
|
||||||
|
Select select = new Select(this.numberOfRacesDropDown);
|
||||||
|
WebElement option = select.getFirstSelectedOption();
|
||||||
|
|
||||||
|
return Integer.parseInt(option.getAttribute("value"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSetNumberOfRacesToAdd(int races) {
|
||||||
|
Select select = new Select(this.numberOfRacesDropDown);
|
||||||
|
select.selectByValue(Integer.toString(races));
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRaceNamePrefix() {
|
||||||
|
return this.raceNamePrefixTextField.getText();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRaceNamePrefix(String prefix) {
|
||||||
|
this.raceNamePrefixTextField.clear();
|
||||||
|
this.raceNamePrefixTextField.sendKeys(prefix);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void pressAddRaces() {
|
||||||
|
this.addRacesButton.click();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addRaces(int races) {
|
||||||
|
setSetNumberOfRacesToAdd(races);
|
||||||
|
pressAddRaces();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addRaces(int races, String prefix) {
|
||||||
|
setSetNumberOfRacesToAdd(races);
|
||||||
|
setRaceNamePrefix(prefix);
|
||||||
|
pressAddRaces();
|
||||||
|
}
|
||||||
|
}
|
||||||
+201
@@ -0,0 +1,201 @@
|
|||||||
|
package com.sap.sailing.selenium.pages.adminconsole.tracking;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.core.BySeleniumId;
|
||||||
|
import com.sap.sailing.selenium.core.FindBy;
|
||||||
|
import com.sap.sailing.selenium.pages.PageArea;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.CellTable;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.DataEntry;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.GenericCellTable;
|
||||||
|
|
||||||
|
public class TrackedRacesList extends PageArea {
|
||||||
|
public enum Status {
|
||||||
|
LOADING,
|
||||||
|
TRACKING,
|
||||||
|
FINISHED,
|
||||||
|
UNKOWN;
|
||||||
|
|
||||||
|
public static Status fromString(String string) {
|
||||||
|
if (string != null && !string.isEmpty()) {
|
||||||
|
for (Status status : Status.values()) {
|
||||||
|
if (string.startsWith(status.name())) {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return UNKOWN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class TrackedRaceDescriptor {
|
||||||
|
public String regatta;
|
||||||
|
public String boatClass;
|
||||||
|
public String race;
|
||||||
|
|
||||||
|
public TrackedRaceDescriptor(String regatta, String boatClass, String race) {
|
||||||
|
this.regatta = regatta;
|
||||||
|
this.boatClass = boatClass;
|
||||||
|
this.race = race;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(this.regatta, this.boatClass, this.race);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object object) {
|
||||||
|
if (this == object)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (object == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (getClass() != object.getClass())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
TrackedRaceDescriptor other = (TrackedRaceDescriptor) object;
|
||||||
|
|
||||||
|
if(!Objects.equals(this.regatta, other.regatta))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if(!Objects.equals(this.boatClass, other.boatClass))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if(!Objects.equals(this.race, other.race))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "TrackedRacesFilterTextBox")
|
||||||
|
private WebElement trackedRacesFilterTextBox;
|
||||||
|
|
||||||
|
//@FindBy(how = BySeleniumId.class, using = "NoTrackedRacesLabel")
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "TrackedRacesCellTable")
|
||||||
|
private WebElement trackedRacesTable;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "RefreshButton")
|
||||||
|
private WebElement refreshButton;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "RemoveRaceButton")
|
||||||
|
private WebElement removeButton;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "StopTrackingButton")
|
||||||
|
private WebElement stopTrackingButton;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "SetDelayToLiveButton")
|
||||||
|
private WebElement setDelayToLiveButton;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "ExportButton")
|
||||||
|
private WebElement exportButton;
|
||||||
|
|
||||||
|
//@FindBy(how = BySeleniumId.class, using = "ExportPopup")
|
||||||
|
|
||||||
|
protected TrackedRacesList(WebDriver driver, WebElement element) {
|
||||||
|
super(driver, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFilterForTrackedRaces(String filter) {
|
||||||
|
this.trackedRacesFilterTextBox.clear();
|
||||||
|
this.trackedRacesFilterTextBox.sendKeys(filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<TrackedRaceDescriptor> getTrackedRaces() {
|
||||||
|
List<TrackedRaceDescriptor> descriptors = new LinkedList<>();
|
||||||
|
CellTable<DataEntry> table = getTrackedRacesTable();
|
||||||
|
|
||||||
|
for(DataEntry entry : table.getEntries()) {
|
||||||
|
String regatta = entry.getColumnContent(0);
|
||||||
|
String boatClass = entry.getColumnContent(1);
|
||||||
|
String race = entry.getColumnContent(2);
|
||||||
|
|
||||||
|
descriptors.add(new TrackedRaceDescriptor(regatta, boatClass, race));
|
||||||
|
}
|
||||||
|
|
||||||
|
return descriptors;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getStatus(TrackedRaceDescriptor race) {
|
||||||
|
List<Status> status = getStatus(Arrays.asList(race));
|
||||||
|
|
||||||
|
return status.get(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Status> getStatus(List<TrackedRaceDescriptor> races) {
|
||||||
|
List<Status> result = new ArrayList<>(Collections.<Status>nCopies(races.size(), null));
|
||||||
|
|
||||||
|
CellTable<DataEntry> table = getTrackedRacesTable();
|
||||||
|
|
||||||
|
for(DataEntry entry : table.getEntries()) {
|
||||||
|
String regatta = entry.getColumnContent(0);
|
||||||
|
String boatClass = entry.getColumnContent(1);
|
||||||
|
String race = entry.getColumnContent(2);
|
||||||
|
String status = entry.getColumnContent(6);
|
||||||
|
|
||||||
|
TrackedRaceDescriptor descriptor = new TrackedRaceDescriptor(regatta, boatClass, race);
|
||||||
|
|
||||||
|
if(races.contains(descriptor)) {
|
||||||
|
result.set(races.indexOf(descriptor), Status.fromString(status));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void stopTracking(List<TrackedRaceDescriptor> races) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void remove(List<TrackedRaceDescriptor> races) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void refresh() {
|
||||||
|
this.refreshButton.click();
|
||||||
|
|
||||||
|
waitForAjaxRequests();
|
||||||
|
}
|
||||||
|
|
||||||
|
private CellTable<DataEntry> getTrackedRacesTable() {
|
||||||
|
return new GenericCellTable<>(this.driver, this.trackedRacesTable, DataEntry.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
// private List<WebElement> getTrackedRaces(List<TrackedRaceDescriptor> races) {
|
||||||
|
// List<WebElement> result = new ArrayList<>(Collections.<WebElement>nCopies(races.size(), null));
|
||||||
|
//
|
||||||
|
// CellTable table = new CellTable(this.driver, this.trackedRacesTable);
|
||||||
|
// List<WebElement> rows = table.getRows();
|
||||||
|
// Iterator<WebElement> iterator = rows.iterator();
|
||||||
|
//
|
||||||
|
// while(iterator.hasNext()) {
|
||||||
|
// WebElement row = iterator.next();
|
||||||
|
//
|
||||||
|
// List<WebElement> columns = row.findElements(By.tagName("td"));
|
||||||
|
// String regatta = columns.get(0).getText();
|
||||||
|
// String boatClass = columns.get(1).getText();
|
||||||
|
// String race = columns.get(2).getText();
|
||||||
|
//
|
||||||
|
// TrackedRaceDescriptor descriptor = new TrackedRaceDescriptor(regatta, boatClass, race);
|
||||||
|
//
|
||||||
|
// if(races.contains(descriptor)) {
|
||||||
|
// result.add(row);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return result;
|
||||||
|
// }
|
||||||
|
}
|
||||||
+21
@@ -0,0 +1,21 @@
|
|||||||
|
package com.sap.sailing.selenium.pages.adminconsole.tracking;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.core.BySeleniumId;
|
||||||
|
import com.sap.sailing.selenium.core.FindBy;
|
||||||
|
import com.sap.sailing.selenium.pages.PageArea;
|
||||||
|
|
||||||
|
public class TrackedRacesManagementPanel extends PageArea {
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "TrackedRacesListComposite")
|
||||||
|
private WebElement trackedRacesListCoposite;
|
||||||
|
|
||||||
|
public TrackedRacesManagementPanel(WebDriver driver, WebElement element) {
|
||||||
|
super(driver, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TrackedRacesList getTrackedRacesList() {
|
||||||
|
return new TrackedRacesList(this.driver, this.trackedRacesListCoposite);
|
||||||
|
}
|
||||||
|
}
|
||||||
+185
-64
@@ -1,20 +1,28 @@
|
|||||||
package com.sap.sailing.selenium.pages.adminconsole.tractrac;
|
package com.sap.sailing.selenium.pages.adminconsole.tractrac;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import org.openqa.selenium.By;
|
import org.openqa.selenium.By;
|
||||||
import org.openqa.selenium.WebDriver;
|
import org.openqa.selenium.WebDriver;
|
||||||
import org.openqa.selenium.WebElement;
|
import org.openqa.selenium.WebElement;
|
||||||
|
|
||||||
//import org.openqa.selenium.support.FindBy;
|
import org.openqa.selenium.support.ui.Select;
|
||||||
//import org.openqa.selenium.support.How;
|
|
||||||
|
|
||||||
|
|
||||||
import com.sap.sailing.selenium.core.FindBy;
|
import com.sap.sailing.selenium.core.FindBy;
|
||||||
import com.sap.sailing.selenium.core.BySeleniumId;
|
import com.sap.sailing.selenium.core.BySeleniumId;
|
||||||
|
|
||||||
import com.sap.sailing.selenium.pages.PageArea;
|
import com.sap.sailing.selenium.pages.PageArea;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.adminconsole.regatta.RegattaListComposite.RegattaDescriptor;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.DataEntry;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.CellTable;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.GenericCellTable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>The page object representing the TracTrac Events tab.</p>
|
* <p>The page object representing the TracTrac Events tab.</p>
|
||||||
*
|
*
|
||||||
@@ -22,24 +30,83 @@ import com.sap.sailing.selenium.pages.PageArea;
|
|||||||
* D049941
|
* D049941
|
||||||
*/
|
*/
|
||||||
public class TracTracEventManagementPanel extends PageArea {
|
public class TracTracEventManagementPanel extends PageArea {
|
||||||
@FindBy(how = BySeleniumId.class, using = "JSONURL")
|
public static class TrackableRaceDescriptor {
|
||||||
private WebElement jsonURLField;
|
public final String eventName;
|
||||||
|
public final String raceName;
|
||||||
|
public final String boatClass;
|
||||||
|
//public Object startTime;
|
||||||
|
//public Object raceStatus;
|
||||||
|
|
||||||
|
public TrackableRaceDescriptor(String eventName, String raceName, String boatClass) {
|
||||||
|
this.eventName = eventName;
|
||||||
|
this.raceName = raceName;
|
||||||
|
this.boatClass = boatClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(this.boatClass, this.eventName, this.raceName);
|
||||||
|
}
|
||||||
|
|
||||||
@FindBy(how = BySeleniumId.class, using = "LiveURI")
|
@Override
|
||||||
private WebElement liveURIField;
|
public boolean equals(Object object) {
|
||||||
|
if (this == object)
|
||||||
@FindBy(how = BySeleniumId.class, using = "StoredURI")
|
return true;
|
||||||
private WebElement storedURIField;
|
|
||||||
|
if (object == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (getClass() != object.getClass())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
TrackableRaceDescriptor other = (TrackableRaceDescriptor) object;
|
||||||
|
|
||||||
|
if(!Objects.equals(this.boatClass, other.boatClass))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if(!Objects.equals(this.eventName, other.eventName))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if(!Objects.equals(this.raceName, other.raceName))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@FindBy(how = BySeleniumId.class, using = "ListRaces")
|
// TODO [D049941]: Prefix the Ids with the component (e.g. "Button")
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "LiveURITextBox")
|
||||||
|
private WebElement liveURITextBox;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "StoredURITextBox")
|
||||||
|
private WebElement storedURITextBox;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "JsonURLTextBox")
|
||||||
|
private WebElement jsonURLTextBox;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "ListRacesButton")
|
||||||
private WebElement listRacesButton;
|
private WebElement listRacesButton;
|
||||||
|
|
||||||
@FindBy(how = BySeleniumId.class, using = "FilterRaces")
|
@FindBy(how = BySeleniumId.class, using = "AvailableRegattasListBox")
|
||||||
private WebElement filterTrackableRacesField;
|
private WebElement availableRegattasListBox;
|
||||||
|
|
||||||
// private WebElement trackWindCheckBox;
|
@FindBy(how = BySeleniumId.class, using = "TrackWindCheckBox")
|
||||||
// private WebElement correctWindCheckbox;
|
private WebElement trackWindCheckBox;
|
||||||
// private WebElement simulateWithNowCheckbox;
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "CorrectWindCheckBox")
|
||||||
|
private WebElement correctWindCheckBox;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "SimulateWithStartTimeNowCheckBox")
|
||||||
|
private WebElement simulateWithStartTimeNowCheckBox;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "TrackableRacesFilterTextBox")
|
||||||
|
private WebElement trackableRacesFilterTextBox;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "TrackableRacesCellTable")
|
||||||
|
private WebElement trackableRacesCellTable;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "StartTracking")
|
||||||
|
private WebElement startTrackingButton;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p></p>
|
* <p></p>
|
||||||
@@ -53,6 +120,7 @@ public class TracTracEventManagementPanel extends PageArea {
|
|||||||
super(driver, element);
|
super(driver, element);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>Lists all available trackable races for the given URL. The list of the races can be obtained via
|
* <p>Lists all available trackable races for the given URL. The list of the races can be obtained via
|
||||||
* {@link #getTrackableRaces()}.</p>
|
* {@link #getTrackableRaces()}.</p>
|
||||||
@@ -60,12 +128,28 @@ public class TracTracEventManagementPanel extends PageArea {
|
|||||||
* @param url
|
* @param url
|
||||||
* The URL for which the races are to list.
|
* The URL for which the races are to list.
|
||||||
*/
|
*/
|
||||||
public void listRaces(String url) {
|
public void listTrackableRaces(String url) {
|
||||||
liveURIField.clear();
|
listTrackableRaces("", "", url); //$NON-NLS-1$//$NON-NLS-2$
|
||||||
storedURIField.clear();
|
}
|
||||||
jsonURLField.clear();
|
|
||||||
jsonURLField.sendKeys(url);
|
/**
|
||||||
listRacesButton.click();
|
* <p>Lists all available trackable races for the given URL. The list of the races can be obtained via
|
||||||
|
* {@link #getTrackableRaces()}.</p>
|
||||||
|
*
|
||||||
|
* @param url
|
||||||
|
* The URL for which the races are to list.
|
||||||
|
*/
|
||||||
|
public void listTrackableRaces(String liveURI, String storedURI, String jsonURL) {
|
||||||
|
this.liveURITextBox.clear();
|
||||||
|
this.liveURITextBox.sendKeys(liveURI);
|
||||||
|
|
||||||
|
this.storedURITextBox.clear();
|
||||||
|
this.storedURITextBox.sendKeys(storedURI);
|
||||||
|
|
||||||
|
this.jsonURLTextBox.clear();
|
||||||
|
this.jsonURLTextBox.sendKeys(jsonURL);
|
||||||
|
|
||||||
|
this.listRacesButton.click();
|
||||||
|
|
||||||
waitForAjaxRequests();
|
waitForAjaxRequests();
|
||||||
}
|
}
|
||||||
@@ -77,33 +161,48 @@ public class TracTracEventManagementPanel extends PageArea {
|
|||||||
* @return
|
* @return
|
||||||
* The list of all available trackable races.
|
* The list of all available trackable races.
|
||||||
*/
|
*/
|
||||||
// QUESTION: Should we return something different instead of WebElements since it is not recommended to do so?
|
public List<TrackableRaceDescriptor> getTrackableRaces() {
|
||||||
public List<WebElement> getTrackableRaces() {
|
List<TrackableRaceDescriptor> descriptors = new LinkedList<>();
|
||||||
WebElement availableRacesTabel = findElementBySeleniumId(this.context, "RacesTable"); //$NON-NLS-1$
|
CellTable<DataEntry> table = getTrackableRacesTable();
|
||||||
List<WebElement> elements = availableRacesTabel.findElements(By.xpath("./tbody/tr")); //$NON-NLS-1$
|
|
||||||
Iterator<WebElement> iterator = elements.iterator();
|
|
||||||
|
|
||||||
while(iterator.hasNext()) {
|
for(DataEntry entry : table.getEntries()) {
|
||||||
WebElement element = iterator.next();
|
String event = entry.getColumnContent(0);
|
||||||
|
String race = entry.getColumnContent(1);
|
||||||
|
String boatClass = entry.getColumnContent(2);
|
||||||
|
|
||||||
if(!element.isDisplayed())
|
descriptors.add(new TrackableRaceDescriptor(event, race, boatClass));
|
||||||
iterator.remove();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return elements;
|
return descriptors;
|
||||||
}
|
}
|
||||||
|
|
||||||
// public List<String> getAvailableReggatasForTracking() {
|
public List<RegattaDescriptor> getAvailableReggatasForTracking() {
|
||||||
//
|
List<RegattaDescriptor> result = new ArrayList<>();
|
||||||
// }
|
|
||||||
//
|
Select select = new Select(this.availableRegattasListBox);
|
||||||
// public String getReggataForTracking() {
|
|
||||||
//
|
for(WebElement option : select.getOptions()) {
|
||||||
// }
|
RegattaDescriptor regatta = RegattaDescriptor.fromString(option.getAttribute("value"));
|
||||||
//
|
|
||||||
// public void setReggataForTracking(String regatta) {
|
result.add(regatta);
|
||||||
//
|
}
|
||||||
// }
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RegattaDescriptor getReggataForTracking() {
|
||||||
|
Select select = new Select(this.availableRegattasListBox);
|
||||||
|
WebElement option = select.getFirstSelectedOption();
|
||||||
|
RegattaDescriptor regatta = RegattaDescriptor.fromString(option.getAttribute("value"));
|
||||||
|
|
||||||
|
return regatta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setReggataForTracking(RegattaDescriptor regatta) {
|
||||||
|
Select select = new Select(this.availableRegattasListBox);
|
||||||
|
|
||||||
|
select.selectByValue(regatta.toString());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>Sets the filter for the trackable races. After the filter is set you can obtain the new resulting list via
|
* <p>Sets the filter for the trackable races. After the filter is set you can obtain the new resulting list via
|
||||||
@@ -113,27 +212,49 @@ public class TracTracEventManagementPanel extends PageArea {
|
|||||||
* The filter to apply to the trackable races.
|
* The filter to apply to the trackable races.
|
||||||
*/
|
*/
|
||||||
public void setFilterForTrackableRaces(String filter) {
|
public void setFilterForTrackableRaces(String filter) {
|
||||||
this.filterTrackableRacesField.clear();
|
this.trackableRacesFilterTextBox.clear();
|
||||||
this.filterTrackableRacesField.sendKeys(filter);
|
this.trackableRacesFilterTextBox.sendKeys(filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
// public void setTrackSettings(boolean trackWind, boolean correctWind, boolean simulateWithNow) {
|
public void setTrackSettings(boolean trackWind, boolean correctWind, boolean simulateWithNow) {
|
||||||
// setSelection(this.trackWindCheckBox, trackWind);
|
setSelection(this.trackWindCheckBox, trackWind);
|
||||||
// setSelection(this.correctWindCheckbox, correctWind);
|
setSelection(this.correctWindCheckBox, correctWind);
|
||||||
// setSelection(this.simulateWithNowCheckbox, simulateWithNow);
|
setSelection(this.simulateWithStartTimeNowCheckBox, simulateWithNow);
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// public void startTrackingForRace() {
|
public void startTrackingForRaces(List<TrackableRaceDescriptor> races) {
|
||||||
//
|
CellTable<DataEntry> table = getTrackableRacesTable();
|
||||||
// }
|
List<DataEntry> entries = table.getEntries();
|
||||||
//
|
Iterator<DataEntry> iterator = entries.iterator();
|
||||||
// public void startTrackingForRaces() {
|
|
||||||
//
|
while(iterator.hasNext()) {
|
||||||
// }
|
DataEntry entry = iterator.next();
|
||||||
//
|
|
||||||
// private void setSelection(WebElement checkbox, boolean selected) {
|
String event = entry.getColumnContent(0);
|
||||||
// WebElement input = checkbox.findElement(By.tagName("input"));
|
String race = entry.getColumnContent(1);
|
||||||
// if(input.isSelected() != selected)
|
String boatClass = entry.getColumnContent(2);
|
||||||
// input.click();
|
|
||||||
// }
|
TrackableRaceDescriptor descriptor = new TrackableRaceDescriptor(event, race, boatClass);
|
||||||
|
|
||||||
|
if(!races.contains(descriptor))
|
||||||
|
iterator.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
table.selectEntries(entries);
|
||||||
|
|
||||||
|
this.startTrackingButton.click();
|
||||||
|
|
||||||
|
waitForAjaxRequests();
|
||||||
|
}
|
||||||
|
|
||||||
|
private CellTable<DataEntry> getTrackableRacesTable() {
|
||||||
|
return new GenericCellTable<>(this.driver, this.trackableRacesCellTable, DataEntry.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setSelection(WebElement checkbox, boolean selected) {
|
||||||
|
WebElement input = checkbox.findElement(By.tagName("input"));
|
||||||
|
|
||||||
|
if(input.isSelected() != selected)
|
||||||
|
input.click();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+60
@@ -0,0 +1,60 @@
|
|||||||
|
package com.sap.sailing.selenium.pages.common;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.core.BySeleniumId;
|
||||||
|
import com.sap.sailing.selenium.core.FindBy;
|
||||||
|
import com.sap.sailing.selenium.pages.PageArea;
|
||||||
|
|
||||||
|
public abstract class DataEntryDialog extends PageArea {
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "StatusLabel")
|
||||||
|
private WebElement statusLabel;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "OkButton")
|
||||||
|
private WebElement okButton;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "CancelButton")
|
||||||
|
private WebElement cancelButton;
|
||||||
|
|
||||||
|
|
||||||
|
public DataEntryDialog(WebDriver driver, WebElement element) {
|
||||||
|
super(driver, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void verify() {
|
||||||
|
WebElement element = (WebElement) this.context;
|
||||||
|
String cssClasses = element.getAttribute("class");
|
||||||
|
|
||||||
|
if(!cssClasses.contains("gwt-DialogBox"))
|
||||||
|
throw new IllegalStateException("This is not a dialog");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStatusMessage() {
|
||||||
|
if(this.statusLabel.isDisplayed())
|
||||||
|
return this.statusLabel.getText();
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isOkButtonEnabled() {
|
||||||
|
return this.okButton.isEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isCancelButtonEnabled() {
|
||||||
|
return this.cancelButton.isEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
// QUESTION: What should we do, if the button is not enabled?
|
||||||
|
public void pressOk() {
|
||||||
|
this.okButton.click();
|
||||||
|
|
||||||
|
// Wait, since we do a callback usually
|
||||||
|
waitForAjaxRequests();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void pressCancel() {
|
||||||
|
this.cancelButton.click();
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-2
@@ -50,9 +50,9 @@ public abstract class CellTable<T extends DataEntry> extends PageArea {
|
|||||||
|
|
||||||
private static final String SORTING_INDICATOR_XPATH = ".//div/div/img";
|
private static final String SORTING_INDICATOR_XPATH = ".//div/div/img";
|
||||||
|
|
||||||
private static final String CELL_TABLE_CSS_CLASS = "GCKY0V4BDK"; //$NON-NLS-1$
|
private static final String CELL_TABLE_CSS_CLASS = "GJTB2DRDFQ"; //$NON-NLS-1$
|
||||||
|
|
||||||
protected static final String SELECTED_ROW_CSS_CLASS = "GCKY0V4BNJ"; //$NON-NLS-1$
|
protected static final String SELECTED_ROW_CSS_CLASS = "GJTB2DRDPP"; //$NON-NLS-1$
|
||||||
|
|
||||||
private static final String LOADING_ANIMATION_XPATH = ".//td/div/div/div/img";
|
private static final String LOADING_ANIMATION_XPATH = ".//td/div/div/div/img";
|
||||||
|
|
||||||
|
|||||||
+52
@@ -0,0 +1,52 @@
|
|||||||
|
package com.sap.sailing.selenium.pages.gwt;
|
||||||
|
|
||||||
|
import org.openqa.selenium.By.ByTagName;
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.core.FindBy;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.PageArea;
|
||||||
|
import com.sap.sailing.selenium.pages.common.CSSHelper;
|
||||||
|
|
||||||
|
public class CheckBox extends PageArea {
|
||||||
|
protected static final String CHECKBOX_TAG_NAME = "span"; //$NON-NLS-1$
|
||||||
|
|
||||||
|
private static final String CHECKBOX_CSS_CLASS = "gwt-CheckBox";
|
||||||
|
|
||||||
|
@FindBy(how = ByTagName.class, using = "input")
|
||||||
|
private WebElement checkbox;
|
||||||
|
|
||||||
|
@FindBy(how = ByTagName.class, using = "label")
|
||||||
|
private WebElement label;
|
||||||
|
|
||||||
|
public CheckBox(WebDriver driver, WebElement element) {
|
||||||
|
super(driver, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void verify() {
|
||||||
|
WebElement element = (WebElement) this.context;
|
||||||
|
String tagName = element.getTagName();
|
||||||
|
|
||||||
|
if(!CHECKBOX_TAG_NAME.equalsIgnoreCase(tagName) || !CSSHelper.hasCSSClass(element, CHECKBOX_CSS_CLASS))
|
||||||
|
throw new IllegalArgumentException("WebElement does not represent a CheckBox");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isEnabled() {
|
||||||
|
return this.checkbox.isEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLabel() {
|
||||||
|
return this.label.getText();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSelected() {
|
||||||
|
return this.checkbox.isSelected();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSelected(boolean selected) {
|
||||||
|
if(selected != isSelected())
|
||||||
|
this.checkbox.click();
|
||||||
|
}
|
||||||
|
}
|
||||||
+95
@@ -0,0 +1,95 @@
|
|||||||
|
package com.sap.sailing.selenium.pages.leaderboard;
|
||||||
|
|
||||||
|
import org.openqa.selenium.By;
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.core.BySeleniumId;
|
||||||
|
import com.sap.sailing.selenium.core.FindBy;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.HostPage;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.common.CSSConstants;
|
||||||
|
import com.sap.sailing.selenium.pages.common.HTMLConstants;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>The page object representing the leaderboard.</p>
|
||||||
|
*
|
||||||
|
* @author
|
||||||
|
* D049941
|
||||||
|
*/
|
||||||
|
public class LeaderboardPage extends HostPage {
|
||||||
|
private static final String PAGE_TITLE = "SAP Sailing Analytics Leaderboard"; //$NON-NLS-1$
|
||||||
|
|
||||||
|
private static final String LEADERBOAR_PARAMTER_NAME = "name"; //$NON-NLS-1$
|
||||||
|
|
||||||
|
private static final String AUTO_REFRESH_ENABLED_IMAGE = "url(\"data:image/png;base64," + //$NON-NLS-1$
|
||||||
|
"iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAAR0lEQVR42mOoqan5T2vMMGoJxZZUV1fPB9IOWDC" + //$NON-NLS-1$
|
||||||
|
"ymgJ0eagY0T5pYMAC0NQ4YJF3GLVk1JJRS0YtGbVkSFhCr/pktI4fOEsA89uCDGg41QoAAAAASUVORK5CYII=\")"; //$NON-NLS-1$
|
||||||
|
|
||||||
|
private static final String AUTO_REFRESH_DISABLED_IMAGE = "url(\"data:image/png;base64," + //$NON-NLS-1$
|
||||||
|
"iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAAhElEQVR42mOoqan5T2vMMGoJVSyprq6eD6TX09o" + //$NON-NLS-1$
|
||||||
|
"nDQxAAKQDgBbep6klIFBfXy9QW1vbT1NLYKCqqsoAKH6eppbAADD4CoDy72lqCTQIFYhNGGRbAgPEJAyKLSEmYV" + //$NON-NLS-1$
|
||||||
|
"DFEhgAWpQwdH1C0ziheeqiaT6haY6nedlF01KYXvXJaB0/MJYAANIIBwANoTb3AAAAAElFTkSuQmCC\")"; //$NON-NLS-1$
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>Goes to the specified leaderboard and returns the representing page object.</p>
|
||||||
|
*
|
||||||
|
* @param driver
|
||||||
|
* The web driver to use.
|
||||||
|
* @param root
|
||||||
|
* The context root of the application.
|
||||||
|
* @param leaderboard
|
||||||
|
* The name of the leaderboard.
|
||||||
|
* @return
|
||||||
|
* The page object for the administration console.
|
||||||
|
*/
|
||||||
|
public static LeaderboardPage goToPage(WebDriver driver, String root, String leaderboard) {
|
||||||
|
driver.get(root + "gwt/Leaderboard.html?" + getLeaderboard(leaderboard) + //$NON-NLS-1$
|
||||||
|
"&" + getGWTCodeServer()); //$NON-NLS-1$
|
||||||
|
|
||||||
|
return new LeaderboardPage(driver);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String getLeaderboard(String leaderboard) {
|
||||||
|
return LEADERBOAR_PARAMTER_NAME + "=" + leaderboard; //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "AutoRefreshToggleButton")
|
||||||
|
private WebElement autoRefreshToggleButton;
|
||||||
|
|
||||||
|
@FindBy(how = BySeleniumId.class, using = "LeaderboardTable")
|
||||||
|
private WebElement leaderboardTable;
|
||||||
|
|
||||||
|
private LeaderboardPage(WebDriver driver) {
|
||||||
|
super(driver);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isAutoRefreshEnabled() {
|
||||||
|
WebElement image = this.autoRefreshToggleButton.findElement(By.tagName(HTMLConstants.IMAGE_TAG_NAME));
|
||||||
|
String background = image.getCssValue(CSSConstants.CSS_BACKGROUND_IMAGE);
|
||||||
|
|
||||||
|
if(AUTO_REFRESH_ENABLED_IMAGE.equals(background))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if(AUTO_REFRESH_DISABLED_IMAGE.equals(background))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
throw new RuntimeException("Can not determine auto refresh state"); //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAutoRefreshEnabled(boolean enabled) {
|
||||||
|
if(isAutoRefreshEnabled() != enabled)
|
||||||
|
this.autoRefreshToggleButton.click();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>Verifies that the current page is the leaderboard by checking the title of the page.</p>
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void verify() {
|
||||||
|
if(!PAGE_TITLE.equals(this.driver.getTitle())) {
|
||||||
|
throw new IllegalStateException("This is not the leaderboard"); //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+65
@@ -0,0 +1,65 @@
|
|||||||
|
package com.sap.sailing.selenium.pages.leaderboard;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.openqa.selenium.WebElement;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.CellTable;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.DataEntry;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.leaderboard.LeaderboardTable.LeaderboardEntry;
|
||||||
|
|
||||||
|
public class LeaderboardTable extends CellTable<LeaderboardEntry> {
|
||||||
|
public class LeaderboardEntry extends DataEntry {
|
||||||
|
private static final String TOTAL_RANK = "Total rank";
|
||||||
|
private static final String COMPETITOR = "Competitor";
|
||||||
|
private static final String NAME = "Name";
|
||||||
|
|
||||||
|
protected LeaderboardEntry(WebElement element) {
|
||||||
|
super(LeaderboardTable.this, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getDescriptor() {
|
||||||
|
return getCompetitor();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTotalRank() {
|
||||||
|
return Integer.parseInt(getColumnContent(TOTAL_RANK));
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCompetitor() {
|
||||||
|
return getColumnContent(COMPETITOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return getColumnContent(NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
// public int getTotalSailedDistance() {
|
||||||
|
// }
|
||||||
|
// public void getAverageSpeedOverGround() {
|
||||||
|
// }
|
||||||
|
// public void getMaximumSpeedOverGround() {
|
||||||
|
// }
|
||||||
|
// public int getTotalDownwindTime() {
|
||||||
|
// }
|
||||||
|
// public int getTotalUpwindTime() {
|
||||||
|
// }
|
||||||
|
// public int getTotalReachingLegsTime() {
|
||||||
|
// }
|
||||||
|
// public int getTotalSailingTime() {
|
||||||
|
// }
|
||||||
|
// public int getTotalPoints() {
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
public LeaderboardTable(WebDriver driver, WebElement element) {
|
||||||
|
super(driver, element);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected LeaderboardEntry createDataEntry(WebElement element) {
|
||||||
|
return new LeaderboardEntry(element);
|
||||||
|
}
|
||||||
|
}
|
||||||
+18
-18
@@ -3,6 +3,7 @@ package com.sap.sailing.selenium.test.adminconsole;
|
|||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import com.sap.sailing.selenium.pages.adminconsole.AdminConsolePage;
|
import com.sap.sailing.selenium.pages.adminconsole.AdminConsolePage;
|
||||||
@@ -17,28 +18,27 @@ import com.sap.sailing.selenium.test.AbstractSeleniumTest;
|
|||||||
* D049941
|
* D049941
|
||||||
*/
|
*/
|
||||||
public class TestLeaderboardCreation extends AbstractSeleniumTest {
|
public class TestLeaderboardCreation extends AbstractSeleniumTest {
|
||||||
// @Before
|
@Before
|
||||||
// public void clearDatabase() {
|
public void clearDatabase() {
|
||||||
// DatabaseHelper.dropDatabase();
|
clearState(getContextRoot());
|
||||||
// }
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCreateFlexibleLeaderboardWithDuplicateName() {
|
public void testCreateFlexibleLeaderboardWithDuplicateName() {
|
||||||
|
FlexibleLeaderboardCreateDialog dialog;
|
||||||
|
|
||||||
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
|
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
|
||||||
LeaderboardConfigurationPanel leaderboardConfiguration = adminConsole.goToLeaderboardConfiguration();
|
LeaderboardConfigurationPanel leaderboardConfiguration = adminConsole.goToLeaderboardConfiguration();
|
||||||
leaderboardConfiguration.deleteLeaderboard("Humba Humba");
|
|
||||||
{
|
dialog = leaderboardConfiguration.startCreatingFlexibleLeaderboard();
|
||||||
FlexibleLeaderboardCreateDialog dialog = leaderboardConfiguration.startCreatingFlexibleLeaderboard();
|
dialog.setName("Humba Humba");
|
||||||
dialog.setName("Humba Humba");
|
assertTrue(dialog.isOkButtonEnabled());
|
||||||
assertTrue(dialog.isOkEnabled());
|
dialog.pressOk();
|
||||||
dialog.pressOk();
|
|
||||||
}
|
dialog = leaderboardConfiguration.startCreatingFlexibleLeaderboard();
|
||||||
{
|
dialog.setName("Humba Humba");
|
||||||
FlexibleLeaderboardCreateDialog dialog = leaderboardConfiguration.startCreatingFlexibleLeaderboard();
|
assertFalse(dialog.isOkButtonEnabled());
|
||||||
dialog.setName("Humba Humba");
|
String errorMessage = dialog.getStatusMessage();
|
||||||
assertFalse(dialog.isOkEnabled());
|
assertTrue(errorMessage.length() > 0);
|
||||||
String errorMessage = dialog.getErrorMessage();
|
|
||||||
assertTrue(errorMessage.length() > 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+45
@@ -0,0 +1,45 @@
|
|||||||
|
package com.sap.sailing.selenium.test.adminconsole;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import com.sap.sailing.selenium.pages.adminconsole.AdminConsolePage;
|
||||||
|
import com.sap.sailing.selenium.pages.adminconsole.leaderboard.LeaderboardConfigurationPanel;
|
||||||
|
import com.sap.sailing.selenium.pages.adminconsole.leaderboard.LeaderboardGroupConfigurationPanel;
|
||||||
|
import com.sap.sailing.selenium.pages.adminconsole.leaderboard.LeaderboardGroupDetailsPanel;
|
||||||
|
import com.sap.sailing.selenium.pages.gwt.DataEntry;
|
||||||
|
import com.sap.sailing.selenium.test.AbstractSeleniumTest;
|
||||||
|
|
||||||
|
public class TestLeaderboardFilterInLeaderboardGroupConfig extends AbstractSeleniumTest {
|
||||||
|
@Before
|
||||||
|
public void clearDatabase() {
|
||||||
|
clearState(getContextRoot());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLeaderboardFilterInLeaderboardGroupConfig() {
|
||||||
|
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
|
||||||
|
|
||||||
|
LeaderboardGroupConfigurationPanel leaderboardGroupConfiguration = adminConsole.goToLeaderboardGroupConfiguration();
|
||||||
|
leaderboardGroupConfiguration.createLeaderboardGroup("Test", "Test");
|
||||||
|
List<DataEntry> selectedEntries = leaderboardGroupConfiguration.getLeaderboardGroupsTable().getSelectedEntries();
|
||||||
|
assertEquals(1, selectedEntries.size());
|
||||||
|
assertEquals("Test", selectedEntries.get(0).getColumnContent("Name"));
|
||||||
|
|
||||||
|
LeaderboardConfigurationPanel leaderboardConfiguration = adminConsole.goToLeaderboardConfiguration();
|
||||||
|
leaderboardConfiguration.createFlexibleLeaderboard("Test");
|
||||||
|
|
||||||
|
leaderboardGroupConfiguration = adminConsole.goToLeaderboardGroupConfiguration();
|
||||||
|
LeaderboardGroupDetailsPanel leaderboardGroupDetails = leaderboardGroupConfiguration.getLeaderboardGroupDetails();
|
||||||
|
leaderboardGroupDetails.refreshLeaderboards();
|
||||||
|
DataEntry leaderboardEntry = leaderboardGroupDetails.findLeaderboardEntry("Test");
|
||||||
|
assertNotNull(leaderboardEntry);
|
||||||
|
|
||||||
|
leaderboardGroupDetails.filterLeaderboards("Test");
|
||||||
|
assertNotNull(leaderboardGroupDetails.findLeaderboardEntry("Test"));
|
||||||
|
}
|
||||||
|
}
|
||||||
+14
-16
@@ -28,7 +28,7 @@ public class TestRaceFilterForTracTracEvents extends AbstractSeleniumTest {
|
|||||||
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
|
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
|
||||||
|
|
||||||
TracTracEventManagementPanel tracTracEvents = adminConsole.goToTracTracEvents();
|
TracTracEventManagementPanel tracTracEvents = adminConsole.goToTracTracEvents();
|
||||||
tracTracEvents.listRaces(BMW_CUP_JSON_URL);
|
tracTracEvents.listTrackableRaces(BMW_CUP_JSON_URL);
|
||||||
|
|
||||||
assertThat(tracTracEvents.getTrackableRaces().size(), is(12));
|
assertThat(tracTracEvents.getTrackableRaces().size(), is(12));
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ public class TestRaceFilterForTracTracEvents extends AbstractSeleniumTest {
|
|||||||
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
|
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
|
||||||
|
|
||||||
TracTracEventManagementPanel tracTracEvents = adminConsole.goToTracTracEvents();
|
TracTracEventManagementPanel tracTracEvents = adminConsole.goToTracTracEvents();
|
||||||
tracTracEvents.listRaces(BMW_CUP_JSON_URL);
|
tracTracEvents.listTrackableRaces(BMW_CUP_JSON_URL);
|
||||||
tracTracEvents.setFilterForTrackableRaces("BMW Cup Race 1"); //$NON-NLS-1$
|
tracTracEvents.setFilterForTrackableRaces("BMW Cup Race 1"); //$NON-NLS-1$
|
||||||
|
|
||||||
assertThat(tracTracEvents.getTrackableRaces().size(), is(5));
|
assertThat(tracTracEvents.getTrackableRaces().size(), is(5));
|
||||||
@@ -58,7 +58,7 @@ public class TestRaceFilterForTracTracEvents extends AbstractSeleniumTest {
|
|||||||
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
|
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
|
||||||
|
|
||||||
TracTracEventManagementPanel tracTracEvents = adminConsole.goToTracTracEvents();
|
TracTracEventManagementPanel tracTracEvents = adminConsole.goToTracTracEvents();
|
||||||
tracTracEvents.listRaces(BMW_CUP_JSON_URL);
|
tracTracEvents.listTrackableRaces(BMW_CUP_JSON_URL);
|
||||||
tracTracEvents.setFilterForTrackableRaces("BMW Cup Race 12"); //$NON-NLS-1$
|
tracTracEvents.setFilterForTrackableRaces("BMW Cup Race 12"); //$NON-NLS-1$
|
||||||
|
|
||||||
assertThat(tracTracEvents.getTrackableRaces().size(), is(1));
|
assertThat(tracTracEvents.getTrackableRaces().size(), is(1));
|
||||||
@@ -67,17 +67,15 @@ public class TestRaceFilterForTracTracEvents extends AbstractSeleniumTest {
|
|||||||
/**
|
/**
|
||||||
* <p>Test with filter which does not match anything.</p>
|
* <p>Test with filter which does not match anything.</p>
|
||||||
*/
|
*/
|
||||||
// TODO: This test fails at the moment, because of an incorrect result returned by the page object! If the table is
|
@Test
|
||||||
// empty GWT uses a table body with one row as spacer, which is not filtered out correctly by the page object.
|
@SuppressWarnings("boxing")
|
||||||
// @Test
|
public void testNoneMatchingFilter() {
|
||||||
// @SuppressWarnings("boxing")
|
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
|
||||||
// public void testNoneExisingFilter() {
|
|
||||||
// AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
|
TracTracEventManagementPanel tracTracEvents = adminConsole.goToTracTracEvents();
|
||||||
//
|
tracTracEvents.listTrackableRaces(BMW_CUP_JSON_URL);
|
||||||
// TracTracEventManagementPanel tracTracEvents = adminConsole.goToTracTracEvents();
|
tracTracEvents.setFilterForTrackableRaces("BMW Cup Race 18"); //$NON-NLS-1$
|
||||||
// tracTracEvents.listRaces(BMW_CUP_JSON_URL);
|
|
||||||
// tracTracEvents.setFilterForTrackableRaces("BMW Cup Race 18"); //$NON-NLS-1$
|
assertThat(tracTracEvents.getTrackableRaces().size(), is(0));
|
||||||
//
|
}
|
||||||
// assertThat(tracTracEvents.getTrackableRaces().size(), is(0));
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
+1
-1
@@ -29,7 +29,7 @@ public class TestStartAndStopTrackingForTracTracEvents extends AbstractSeleniumT
|
|||||||
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
|
AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot());
|
||||||
|
|
||||||
TracTracEventManagementPanel tracTracEvents = adminConsole.goToTracTracEvents();
|
TracTracEventManagementPanel tracTracEvents = adminConsole.goToTracTracEvents();
|
||||||
tracTracEvents.listRaces(BMW_CUP_JSON_URL);
|
tracTracEvents.listTrackableRaces(BMW_CUP_JSON_URL);
|
||||||
|
|
||||||
// TODO: Complete the test case!
|
// TODO: Complete the test case!
|
||||||
//tracTracEvents.startTracking(BMW_CUP_RACE_8, BMW_CUP_REGATTA, false, false, false);
|
//tracTracEvents.startTracking(BMW_CUP_RACE_8, BMW_CUP_REGATTA, false, false, false);
|
||||||
|
|||||||
-98
@@ -1,98 +0,0 @@
|
|||||||
package com.sap.sailing.selenium.test.gwt.widgets;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.openqa.selenium.By;
|
|
||||||
import org.openqa.selenium.WebDriver;
|
|
||||||
import org.openqa.selenium.WebElement;
|
|
||||||
|
|
||||||
import com.sap.sailing.selenium.pages.PageObject;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p></p>
|
|
||||||
*
|
|
||||||
* @author
|
|
||||||
* D049941
|
|
||||||
*/
|
|
||||||
public class CellTable extends PageObject {
|
|
||||||
/**
|
|
||||||
* <p></p>
|
|
||||||
*
|
|
||||||
* @param driver
|
|
||||||
*
|
|
||||||
* @param element
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public CellTable(WebDriver driver, WebElement element) {
|
|
||||||
super(driver, element);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getHeaders() {
|
|
||||||
List<String> headers = new ArrayList<>();
|
|
||||||
|
|
||||||
for(WebElement header : findHeaders()) {
|
|
||||||
headers.add(header.getText());
|
|
||||||
}
|
|
||||||
|
|
||||||
return headers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void clickHeader(String name) {
|
|
||||||
for(WebElement header : findHeaders()) {
|
|
||||||
if(name.equals(header.getText()))
|
|
||||||
header.click();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<WebElement> getRows() {
|
|
||||||
List<WebElement> bodies = this.context.findElements(By.tagName("tbody"));
|
|
||||||
|
|
||||||
for(WebElement body : bodies) {
|
|
||||||
if(!body.isDisplayed())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
List<WebElement> rows = body.findElements(By.tagName("tr"));
|
|
||||||
|
|
||||||
Iterator<WebElement> iterator = rows.iterator();
|
|
||||||
|
|
||||||
while(iterator.hasNext()) {
|
|
||||||
WebElement row = iterator.next();
|
|
||||||
|
|
||||||
if(isRowForLoadingAnimation(row))
|
|
||||||
iterator.remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void verify() {
|
|
||||||
// TODO: Verify that the context represents a GWT CellTable
|
|
||||||
String tagName = ((WebElement) this.context).getTagName();
|
|
||||||
|
|
||||||
if(!tagName.equalsIgnoreCase("table"))
|
|
||||||
throw new IllegalArgumentException("WebElement does not represent a table");
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<WebElement> findHeaders() {
|
|
||||||
return this.context.findElements(By.tagName("th"));
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isRowForLoadingAnimation(WebElement row) {
|
|
||||||
List<WebElement> images = row.findElements(By.xpath(".//td/div/div/div/img"));
|
|
||||||
|
|
||||||
if(images.isEmpty() || images.size() > 1)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
WebElement image = images.get(0);
|
|
||||||
System.out.println(image.getCssValue("background-image"));
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in new issue
Block a user