@parkassist/pa-ui-library
Version:
INX Platform elements
64 lines • 2.38 kB
JavaScript
import L from 'leaflet';
import Sign1x2Ico from '../../../assets/Icons=Sign1x2.svg';
import Sign1x2SelectedIco from "../../../assets/Icons=Sign1x2_Selected.svg";
import Sign1x2OOSIco from '../../../assets/Icons=Sign1x2OOS.svg';
import Sign1x2OOSSelectedIco from "../../../assets/Icons=Sign1x2OOS_Selected.svg";
import Sign1x6Ico from "../../../assets/Icons=Sign1x6.svg";
import Sign1x6SelectedIco from "../../../assets/Icons=Sign1x6_Selected.svg";
import Sign1x6OOSIco from "../../../assets/Icons=Sign1x6OOS.svg";
import Sign1x6OOSSelectedIco from "../../../assets/Icons=Sign1x6OOS_Selected.svg";
import Sign2x3Ico from "../../../assets/Icons=Sign2x3.svg";
import Sign2x3SelectedIco from "../../../assets/Icons=Sign2x3_Selected.svg";
import Sign2x3OOSIco from "../../../assets/Icons=Sign2x3OOS.svg";
import Sign2x3OOSSelectedIco from "../../../assets/Icons=Sign2x3OOS_Selected.svg";
const height = 18;
const width = 10;
function getSignIcon(url, numCol, numRow, selected = false, zoom = 0) {
const border = selected ? 2 : 0;
const scale = Math.pow(2, zoom);
const realWidth = (width + border) * numCol * scale;
const realHeight = (height + border) * numRow * scale;
return L.icon({
iconUrl: url,
iconSize: [Math.max(realWidth, numCol * 6 + border), Math.max(realHeight, numRow * 6 + border)]
});
}
export function getSignDetails(type, isOOS, selected, zoom) {
let icon;
let iconUrl;
switch (type) {
case 't1x6':
if (isOOS) {
iconUrl = selected ? Sign1x6OOSSelectedIco : Sign1x6OOSIco;
} else {
iconUrl = selected ? Sign1x6SelectedIco : Sign1x6Ico;
}
icon = getSignIcon(iconUrl, 6, 1, selected, zoom);
return {
zIndex: selected ? 15 : 10,
icon
};
case 't2x3':
if (isOOS) {
iconUrl = selected ? Sign2x3OOSSelectedIco : Sign2x3OOSIco;
} else {
iconUrl = selected ? Sign2x3SelectedIco : Sign2x3Ico;
}
icon = getSignIcon(iconUrl, 3, 1, selected, zoom);
return {
zIndex: selected ? 25 : 20,
icon
};
default:
if (isOOS) {
iconUrl = selected ? Sign1x2OOSSelectedIco : Sign1x2OOSIco;
} else {
iconUrl = selected ? Sign1x2SelectedIco : Sign1x2Ico;
}
icon = getSignIcon(iconUrl, 2, 1, selected, zoom);
return {
zIndex: selected ? 35 : 30,
icon
};
}
}