Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Droth 3744 revert roadlink error droth 3802 #2693

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
33c4912
Revert "Revert "Droth 3744 enable tram stops on pedestrian links""
sasuolanderSito Aug 29, 2023
abb151f
DROTH-3802 Created test for a success and a failure case
MJKaakinen Sep 7, 2023
7b075d5
DROTH-3802 CSV tram stop importation changes implemented
MJKaakinen Sep 7, 2023
914a932
Update digiroad2-oracle/src/main/scala/fi/liikennevirasto/digiroad2/c…
MJKaakinen Sep 7, 2023
a2ab015
DROTH-3802 Removed non-generic method to non-generic class
MJKaakinen Sep 7, 2023
2053128
DROTH-3802 Reformatted block
MJKaakinen Sep 7, 2023
f7413bc
DROTH-3802 Fixed wonky service implementations
MJKaakinen Sep 7, 2023
59fc1f4
DROTH-3802 Removed brackets from import
MJKaakinen Sep 7, 2023
44a2a5b
DROTH-3802 Removed unneccessary import
MJKaakinen Sep 7, 2023
068e423
DROTH-3802 Fixed unstable test
MJKaakinen Sep 7, 2023
44af5dc
DROTH-3802 removed unused assignments
MJKaakinen Sep 8, 2023
6a41f5e
DROTH-3802 removed unused assertions
MJKaakinen Sep 8, 2023
203b99e
Update digiroad2-api-oth/src/test/scala/fi/liikennevirasto/digiroad2/…
MJKaakinen Sep 8, 2023
66bb38f
DROTH-3802 fixed broken syntax
MJKaakinen Sep 8, 2023
6570fe4
DROTH-3744 fixed missing parenthesis
MJKaakinen Sep 14, 2023
5f77e79
DROTH-3744 Shorten checkbox text
anttiahopeltositowise Aug 28, 2023
0aabc6a
DROTH-3744 Fix bugs with save button popUps
anttiahopeltositowise Aug 28, 2023
9737958
DROTH-3744 refactor code, fix bugs with moving stops
anttiahopeltositowise Aug 28, 2023
8a7a68b
Merge branch 'NextRelease' into DROTH-3744_revert_roadlinkError_DROTH…
sasuolanderSito Oct 16, 2023
6bd78fc
fix compile error
sasuolanderSito Oct 16, 2023
8acbaef
DROTH-3744 Fixed merge conflict error which led to all links being t…
MJKaakinen Sep 15, 2023
7032c36
bring back tram code from merge contflick fix
sasuolanderSito Oct 16, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions UI/src/controller/roadCollection.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@
linkTypes.PedestrianZone.value, linkTypes.CableFerry.value, linkTypes.Unknown.value], data.linkType);
};

var isPedestrianCyclingRoad = function () {
return !_.isUndefined(data.linkType) && _.includes([linkTypes.CycleOrPedestrianPath.value,
linkTypes.PedestrianZone.value], data.linkType);
};

var isCarPedestrianCyclingRoad = function() {
return !_.isUndefined(data.linkType) && !_.includes([linkTypes.CableFerry.value, linkTypes.Unknown.value], data.linkType);
};
Expand All @@ -61,6 +66,7 @@
setLinkProperty: setLinkProperty,
isSelected: isSelected,
isCarTrafficRoad: isCarTrafficRoad,
isPedestrianCyclingRoad: isPedestrianCyclingRoad,
isCarPedestrianCyclingRoad: isCarPedestrianCyclingRoad,
select: select,
unselect: unselect,
Expand Down
36 changes: 35 additions & 1 deletion UI/src/model/selectedMassTransitStop.js
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@
currentAsset.payload.lat = position.lat;
currentAsset.payload.roadLinkId = position.roadLinkId;
currentAsset.payload.linkId = position.linkId;
currentAsset.linkId = position.linkId;
currentAsset.payload.validityDirection = position.validityDirection;
assetHasBeenModified = true;
changedProps = _.union(changedProps, ['bearing', 'lon', 'lat', 'roadLinkId']);
Expand Down Expand Up @@ -194,6 +195,7 @@

var open = function(asset) {
currentAsset.id = asset.id;
currentAsset.linkId = asset.linkId;
currentAsset.propertyMetadata = asset.propertyData;
currentAsset.payload = _.merge({}, _.pick(asset, usedKeysFromFetchedAsset), transformPropertyData(asset.propertyData));
currentAsset.validityPeriod = asset.validityPeriod;
Expand Down Expand Up @@ -233,6 +235,36 @@
});
};

var isWalkingCyclingLink = function () {
var selectedRoadLink = getRoadLink();
if (_.isEmpty(selectedRoadLink)) {
return false;
} else {
return selectedRoadLink.isPedestrianCyclingRoad();
}
};

var wrongStopTypeOnWalkingCyclingLink = function () {
var selectedRoadLink = getRoadLink();
if (_.isEmpty(selectedRoadLink)) {
return false;
} else {
var isOnlyTramStop = _.some(currentAsset.payload.properties, function (property) {
if (property.publicId == massTransitStopTypePublicId) {
return _.some(property.values, function (propertyValue) {
return (propertyValue.propertyValue == 1 && property.values.length == 1);
});
}
return false;
});
if (isWalkingCyclingLink()) {
return !isOnlyTramStop;
} else {
return false;
}
}
};

var requiredPropertiesMissing = function () {
var isRequiredProperty = function (publicId) {
var isTerminal = currentAsset.stopTypes && isTerminalType(_.head(currentAsset.stopTypes)) || currentAsset.payload && isTerminalBusStop(currentAsset.payload.properties);
Expand Down Expand Up @@ -448,7 +480,7 @@

var get = function() {
if (exists()) {
var nearestLine = geometrycalculator.findNearestLine(roadCollection.getRoadsForPointAssets(), currentAsset.payload.lon, currentAsset.payload.lat);
var nearestLine = geometrycalculator.findNearestLine(roadCollection.getRoadsForCarPedestrianCycling(), currentAsset.payload.lon, currentAsset.payload.lat);
var linkId = nearestLine.linkId;
if (!currentAsset.linkId)
currentAsset.linkId = linkId;
Expand Down Expand Up @@ -636,6 +668,8 @@
requiredPropertiesMissing: requiredPropertiesMissing,
place: place,
hasMixedVirtualAndRealStops:hasMixedVirtualAndRealStops,
wrongStopTypeOnWalkingCyclingLink: wrongStopTypeOnWalkingCyclingLink,
isWalkingCyclingLink: isWalkingCyclingLink,
copyDataFromOtherMasTransitStop: copyDataFromOtherMasTransitStop,
getCurrentAsset: getCurrentAsset,
deleteMassTransitStop: deleteMassTransitStop,
Expand Down
3 changes: 3 additions & 0 deletions UI/src/view/navigationpanel/massTransitStopBox.js
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,9 @@
'<div class="check-box-container">' +
'<input id="complementaryLinkCheckBox" type="checkbox" checked/> <lable>Näytä täydentävä geometria</lable>' +
'</div>' +
'<div class="check-box-container">' +
'<input id="walkingCyclingCheckbox" type="checkbox" unchecked/> <lable>Salli raitiovaunupysäkin luonti kävelyn ja pyöräilyn väylälle</lable>' +
'</div>' +
'</div>'
].join('');
};
Expand Down
61 changes: 53 additions & 8 deletions UI/src/view/point_asset/massTransitStopForm.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
var poistaSelected = false;
var authorizationPolicy;
var pointAssetToSave = false;
var tramStopToSave = false;

var rootElement = $("#feature-attributes");

Expand All @@ -21,7 +22,29 @@
return _.find(selectedMassTransitStopModel.getCurrentAsset().payload.properties, {'publicId' : public_id});
}

var ValidationErrorLabel = function() {
var walkingCyclingErrorLabel = function() {
var element = $('<span class="validation-error">Vain raitiovaunupysäkki voidaan tallentaa kävelyn ja pyöräilyn väylälle</span>');
var updateVisibility = function() {
if(selectedMassTransitStopModel.wrongStopTypeOnWalkingCyclingLink()) {
element.show();
}
else {
element.hide();
}
};

updateVisibility();

eventbus.on('asset:moved assetPropertyValue:changed', function() {
updateVisibility();
}, this);

return {
element: element
};
};

var missingInfoLabel = function() {
var element = $('<span class="validation-error">Pakollisia tietoja puuttuu</span>');

var updateVisibility = function() {
Expand Down Expand Up @@ -84,6 +107,15 @@
}

var SaveButton = function(busStopTypeSelected) {
function saveWithPossibleWalkingCyclingPopUp() {
if(selectedMassTransitStopModel.isWalkingCyclingLink()){
new GenericConfirmPopup('Oletko varma, että haluat luoda pysäkin kävelyn ja pyöräilyn väylälle?', {
successCallback: function () {
saveStop();
}});
} else saveStop();
}

var deleteMessage = 'pysäkin';

if (selectedMassTransitStopModel.isTerminalType(busStopTypeSelected))
Expand All @@ -99,29 +131,34 @@
selectedMassTransitStopModel.deleteMassTransitStop(poistaSelected);
}
});
} else if(tramStopToSave) {
new GenericConfirmPopup('Oletko varma, että haluat luoda pysäkin kävelyn ja pyöräilyn väylälle?', {
successCallback: function () {
saveStop();
}});
} else if (pointAssetToSave) {
saveStop();
saveWithPossibleWalkingCyclingPopUp();
} else {
if(optionalSave()){
if(saveNewBusStopStrategy()) {
new GenericConfirmPopup('Koska tämä bussipysäkki on määritetty vihjeeksi se ei saa LIVI-tunnusta. Haluatko silti tallentaa sen OTH:ssa?', {
successCallback: function () {
selectedMassTransitStopModel.setAdditionalProperty('liviIdSave', [{ propertyValue: 'false' }]);
saveStop();
saveWithPossibleWalkingCyclingPopUp();
}});
} else {
new GenericConfirmPopup('Haluatko antaa LIVI-tunnuksen?', {
successCallback: function () {
saveStop();
saveWithPossibleWalkingCyclingPopUp();
},
closeCallback: function () {
selectedMassTransitStopModel.setAdditionalProperty('liviIdSave', [{ propertyValue: 'false' }]);
saveStop();
saveWithPossibleWalkingCyclingPopUp();
}
});
}
} else {
saveStop();
saveWithPossibleWalkingCyclingPopUp();
}
}
});
Expand All @@ -141,7 +178,9 @@
var updateStatus = function() {
if(pointAssetToSave && !isValidServicePoint()){
element.prop('disabled', true);
} else if (selectedMassTransitStopModel.isDirty() && !selectedMassTransitStopModel.requiredPropertiesMissing() && !selectedMassTransitStopModel.hasMixedVirtualAndRealStops()){
} else if (selectedMassTransitStopModel.isDirty() && !selectedMassTransitStopModel.requiredPropertiesMissing() &&
!selectedMassTransitStopModel.hasMixedVirtualAndRealStops() &&
!selectedMassTransitStopModel.wrongStopTypeOnWalkingCyclingLink()){
element.prop('disabled', false);
} else if(poistaSelected) {
element.prop('disabled', false);
Expand Down Expand Up @@ -233,7 +272,9 @@

var buttons = function (busStopTypeSelected) {
return $('<div/>').addClass('mass-transit-stop').addClass('form-controls')
.append(new ValidationErrorLabel().element)
.append(new walkingCyclingErrorLabel().element)
.append($('<br>'))
.append(new missingInfoLabel().element)
.append(new SaveButton(busStopTypeSelected).element)
.append(new CancelButton().element);
};
Expand Down Expand Up @@ -1063,6 +1104,10 @@
pointAssetToSave = true;
}

if (property.publicId === "pysakin_tyyppi" && _.some(property.values, function (value) {return value.propertyValue === 1;})) {
tramStopToSave = true;
}

});

eventbus.on('busStop:selected', function(value) {
Expand Down
35 changes: 29 additions & 6 deletions UI/src/view/point_asset/massTransitStopLayer.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ window.MassTransitStopLayer = function(map, roadCollection, mapOverlay, assetGro
var selectedAsset;
var movementPermissionConfirmed = false;
var requestingMovePermission = false;
var walkingCyclingLinks = false;
var massTransitStopLayerStyles = PointAssetLayerStyles(roadLayer);
var visibleAssets;
var overrideMessageAllow = true;
Expand Down Expand Up @@ -158,6 +159,14 @@ window.MassTransitStopLayer = function(map, roadCollection, mapOverlay, assetGro

var dragControl = defineOpenLayersDragControl();

function getCorrectRoadLinks() {
if(walkingCyclingLinks) {
return roadCollection.getRoadsForCarPedestrianCycling();
} else {
return roadCollection.getRoadsForPointAssets();
}
}

function defineOpenLayersDragControl() {

var dragControl = new ol.interaction.Translate({
Expand All @@ -167,7 +176,8 @@ window.MassTransitStopLayer = function(map, roadCollection, mapOverlay, assetGro
dragControl.set('name', 'translate_massTransitStop');

var translateSelectedAsset = function(event) {
var nearestLine = geometrycalculator.findNearestLine(roadCollection.getRoadsForPointAssets(),event.coordinate[0], event.coordinate[1]);
var roadLinks = getCorrectRoadLinks();
var nearestLine = geometrycalculator.findNearestLine(roadLinks, event.coordinate[0], event.coordinate[1]);
var angle = geometrycalculator.getLineDirectionDegAngle(nearestLine);
var position = geometrycalculator.nearestPointOnLine(nearestLine, { x: event.coordinate[0], y: event.coordinate[1]});

Expand All @@ -176,7 +186,8 @@ window.MassTransitStopLayer = function(map, roadCollection, mapOverlay, assetGro
};

var translateEndedAsset = function(event){
var nearestLine = geometrycalculator.findNearestLine(roadCollection.getRoadsForPointAssets(),event.coordinate[0], event.coordinate[1]);
var roadLinks = getCorrectRoadLinks();
var nearestLine = geometrycalculator.findNearestLine(roadLinks, event.coordinate[0], event.coordinate[1]);
var angle = geometrycalculator.getLineDirectionDegAngle(nearestLine);
var position = geometrycalculator.nearestPointOnLine(nearestLine, { x: event.coordinate[0], y: event.coordinate[1]});

Expand All @@ -203,7 +214,8 @@ window.MassTransitStopLayer = function(map, roadCollection, mapOverlay, assetGro
var pointTool = new PointsCursorTool(eventListener, assetLayer, selectControl, roadCollection, {
style : function(feature) {
return massTransitStopLayerStyles.default.getStyle(feature, {zoomLevel: zoomlevels.isInRoadLinkZoomLevel(zoomlevels.getViewZoom(map))});
}
},
walkingCycling : false
});

roadLayer.setLayerSpecificStyleProvider('massTransitStop', function() {
Expand Down Expand Up @@ -473,7 +485,8 @@ window.MassTransitStopLayer = function(map, roadCollection, mapOverlay, assetGro
var createNewAsset = function(coordinate, placement, stopTypes) {

var default_asset_direction = {BothDirections: 2, TowardsDigitizing: 2, AgainstDigitizing: 3};
var nearestLine = geometrycalculator.findNearestLine(excludeRoadByAdminClass(roadCollection.getRoadsForPointAssets()), coordinate.x, coordinate.y);
var roadLinks = getCorrectRoadLinks();
var nearestLine = geometrycalculator.findNearestLine(excludeRoadByAdminClass(roadLinks), coordinate.x, coordinate.y);
var lon, lat;

if(nearestLine.end && nearestLine.start){
Expand Down Expand Up @@ -680,7 +693,8 @@ window.MassTransitStopLayer = function(map, roadCollection, mapOverlay, assetGro
},
closeCallback: function(){
//Moves the stop to the original position
var nearestLine = geometrycalculator.findNearestLine(roadCollection.getRoadsForPointAssets(), originalCoordinates.lon, originalCoordinates.lat);
var roadLinks = getCorrectRoadLinks();
var nearestLine = geometrycalculator.findNearestLine(roadLinks, originalCoordinates.lon, originalCoordinates.lat);
var angle = geometrycalculator.getLineDirectionDegAngle(nearestLine);
doMovement(event, angle, nearestLine, originalCoordinates);
roadLayer.clearSelection();
Expand Down Expand Up @@ -731,7 +745,9 @@ window.MassTransitStopLayer = function(map, roadCollection, mapOverlay, assetGro

selectedMassTransitStopModel.move({
lon: event.coordinate[0],
lat: event.coordinate[1]
lat: event.coordinate[1],
roadLinkId: nearestLine.roadLinkId,
linkId: nearestLine.linkId
});
}
};
Expand Down Expand Up @@ -939,6 +955,8 @@ window.MassTransitStopLayer = function(map, roadCollection, mapOverlay, assetGro
});
eventListener.listenTo(eventbus, 'massTransitStop-complementaryLinks:show', showWithComplementary);
eventListener.listenTo(eventbus, 'massTransitStop-complementaryLinks:hide', hideComplementary);
eventListener.listenTo(eventbus, 'massTransitStop-walkingCyclingLinks:show', toggleWalkingCyclingLinks);
eventListener.listenTo(eventbus, 'massTransitStop-walkingCyclingLinks:hide', toggleWalkingCyclingLinks);
eventListener.listenTo(eventbus, 'road-type:selected', roadLayer.toggleRoadTypeWithSpecifiedStyle);

eventListener.listenTo(eventbus, 'application:readOnly', toggleMode);
Expand Down Expand Up @@ -984,6 +1002,11 @@ window.MassTransitStopLayer = function(map, roadCollection, mapOverlay, assetGro
me.show(map);
};

var toggleWalkingCyclingLinks = function() {
walkingCyclingLinks = !walkingCyclingLinks;
pointTool.toggleWalkingCycling();
};

var showWithComplementary = function() {
massTransitStopsCollection.activeComplementary(true);
registerRoadLinkFetched();
Expand Down
21 changes: 17 additions & 4 deletions UI/src/view/point_asset/pointsCursorTool.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,28 @@
});
};

var updateByPosition = function(mousePoint) {
var nearestLine = geometrycalculator.findNearestLine(roadCollection.getRoadsForPointAssets(), mousePoint[0], mousePoint[1]);
var projectionOnNearestLine = geometrycalculator.nearestPointOnLine(nearestLine, { x: mousePoint[0], y:mousePoint[1] });
var toggleWalkingCycling = function () {
settings.walkingCycling = !settings.walkingCycling;
};

var updateByPosition = function (mousePoint) {
var nearestLine;
if (settings.walkingCycling === true) {
nearestLine = geometrycalculator.findNearestLine(roadCollection.getRoadsForCarPedestrianCycling(), mousePoint[0], mousePoint[1]);
} else {
nearestLine = geometrycalculator.findNearestLine(roadCollection.getRoadsForPointAssets(), mousePoint[0], mousePoint[1]);
}
var projectionOnNearestLine = geometrycalculator.nearestPointOnLine(nearestLine, {
x: mousePoint[0],
y: mousePoint[1]
});
moveTo(projectionOnNearestLine.x, projectionOnNearestLine.y);
};

return {
activate: activate,
deactivate: deactivate
deactivate: deactivate,
toggleWalkingCycling: toggleWalkingCycling
};
};
})(this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -378,6 +378,7 @@ class Digiroad2Api(val roadLinkService: RoadLinkService,
val massTransitStop = massTransitStopReturned._1.map { stop =>

Map("id" -> stop.id,
"linkId" -> stop.linkId,
"nationalId" -> stop.nationalId,
"stopTypes" -> stop.stopTypes,
"lat" -> stop.lat,
Expand Down
Loading