2022-09-08 21:40:48 +02:00
import { Utils } from "../Utils"
2022-06-02 03:02:35 +02:00
2021-01-02 16:04:16 +01:00
export default class Constants {
2023-03-09 17:24:44 +01:00
public static vNumber = "0.27.0"
2021-09-09 00:05:51 +02:00
2022-09-08 21:40:48 +02:00
public static ImgurApiKey = "7070e7167f0a25a"
public static readonly mapillary_client_token_v4 =
"MLY|4441509239301885|b40ad2d3ea105435bd40c7e76993ae85"
2022-07-13 16:12:25 +02:00
/ * *
* API key for Maproulette
2022-09-08 21:40:48 +02:00
*
2022-07-13 16:12:25 +02:00
* Currently there is no user - friendly way to get the user ' s API key .
* See https : //github.com/maproulette/maproulette2/issues/476 for more information.
* Using an empty string however does work for most actions , but will attribute all actions to the Superuser .
* /
2022-09-08 21:40:48 +02:00
public static readonly MaprouletteApiKey = ""
2021-09-29 23:56:59 +02:00
2021-09-29 16:55:05 +02:00
public static defaultOverpassUrls = [
// The official instance, 10000 queries per day per project allowed
"https://overpass-api.de/api/interpreter" ,
// 'Fair usage'
"https://overpass.kumi.systems/api/interpreter" ,
2021-10-03 02:11:06 +02:00
// Offline: "https://overpass.nchc.org.tw/api/interpreter",
2021-09-29 16:55:05 +02:00
"https://overpass.openstreetmap.ru/cgi/interpreter" ,
2021-10-04 03:12:42 +02:00
// Doesn't support nwr: "https://overpass.openstreetmap.fr/api/interpreter"
2021-09-29 16:55:05 +02:00
]
2021-01-02 16:04:16 +01:00
2022-09-08 21:40:48 +02:00
public static readonly added_by_default : string [ ] = [
2022-12-09 13:58:41 +01:00
"selected_element" ,
2022-09-08 21:40:48 +02:00
"gps_location" ,
"gps_location_history" ,
"home_location" ,
"gps_track" ,
]
public static readonly no_include : string [ ] = [
"conflation" ,
"left_right_style" ,
"split_point" ,
"current_view" ,
"matchpoint" ,
]
2021-12-21 18:35:31 +01:00
/ * *
* Layer IDs of layers which have special properties through built - in hooks
* /
2022-09-08 21:40:48 +02:00
public static readonly priviliged_layers : string [ ] = [
. . . Constants . added_by_default ,
"type_node" ,
"note" ,
"import_candidate" ,
"direction" ,
. . . Constants . no_include ,
]
2021-12-21 18:35:31 +01:00
2021-01-02 16:04:16 +01:00
// The user journey states thresholds when a new feature gets unlocked
public static userJourney = {
2021-03-16 19:35:19 +01:00
moreScreenUnlock : 1 ,
2021-06-28 18:06:54 +02:00
personalLayoutUnlock : 5 ,
historyLinkVisible : 10 ,
2021-07-01 02:26:45 +02:00
deletePointsOfOthersUnlock : 20 ,
2021-03-17 14:35:06 +01:00
tagsVisibleAt : 25 ,
2021-03-16 19:35:19 +01:00
tagsVisibleAndWikiLinked : 30 ,
2021-09-09 00:05:51 +02:00
2021-06-28 18:06:54 +02:00
mapCompleteHelpUnlock : 50 ,
2021-03-24 01:25:57 +01:00
themeGeneratorReadOnlyUnlock : 50 ,
2021-01-02 16:04:16 +01:00
themeGeneratorFullUnlock : 500 ,
addNewPointWithUnreadMessagesUnlock : 500 ,
2022-09-08 21:40:48 +02:00
minZoomLevelToAddNewPoints : Constants.isRetina ( ) ? 18 : 19 ,
2021-09-09 00:05:51 +02:00
2022-09-08 21:40:48 +02:00
importHelperUnlock : 5000 ,
}
2021-02-20 22:18:42 +01:00
/ * *
* Used by 'PendingChangesUploader' , which waits this amount of seconds to upload changes .
* ( Note that pendingChanges might upload sooner if the popup is closed or similar )
* /
2022-09-08 21:40:48 +02:00
static updateTimeoutSec : number = 30
2021-11-09 01:49:07 +01:00
/ * *
* If the contributor has their GPS location enabled and makes a change ,
* the points visited less then ` nearbyVisitTime ` - seconds ago will be inspected .
* The point closest to the changed feature will be considered and this distance will be tracked .
* ALl these distances are used to calculate a nearby - score
* /
2022-09-08 21:40:48 +02:00
static nearbyVisitTime : number = 30 * 60
2021-11-09 01:49:07 +01:00
/ * *
* If a user makes a change , the distance to the changed object is calculated .
* If a user makes multiple changes , all these distances are put into multiple bins , depending on this distance .
* For every bin , the totals are uploaded as metadata
* /
2022-01-26 21:40:38 +01:00
static distanceToChangeObjectBins = [ 25 , 50 , 100 , 500 , 1000 , 5000 , Number . MAX_VALUE ]
2022-09-08 21:40:48 +02:00
static themeOrder = [
"personal" ,
"cyclofix" ,
"waste" ,
"etymology" ,
"food" ,
"cafes_and_pubs" ,
"playgrounds" ,
"hailhydrant" ,
"toilets" ,
"aed" ,
"bookcases" ,
]
2022-04-09 19:29:51 +02:00
/ * *
* Upon initialization , the GPS will search the location .
* If the location is found within the given timout , it ' ll automatically fly to it .
2022-09-08 21:40:48 +02:00
*
2022-04-09 19:29:51 +02:00
* In seconds
* /
2023-02-09 03:12:21 +01:00
static zoomToLocationTimeout = 15
2022-09-08 21:40:48 +02:00
static countryCoderEndpoint : string =
"https://raw.githubusercontent.com/pietervdvn/MapComplete-data/main/latlon2country"
2023-01-11 03:53:58 +01:00
public static readonly OsmPreferenceKeyPicturesLicense = "pictures-license"
2021-01-06 02:21:50 +01:00
private static isRetina ( ) : boolean {
2022-09-08 21:40:48 +02:00
if ( Utils . runningFromConsole ) {
return false
2022-06-02 03:02:35 +02:00
}
2021-01-06 02:21:50 +01:00
// The cause for this line of code: https://github.com/pietervdvn/MapComplete/issues/115
// See https://stackoverflow.com/questions/19689715/what-is-the-best-way-to-detect-retina-support-on-a-device-using-javascript
2022-09-08 21:40:48 +02:00
return (
( window . matchMedia &&
( window . matchMedia (
"only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx), only screen and (min-resolution: 75.6dpcm)"
) . matches ||
window . matchMedia (
"only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min--moz-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2)"
) . matches ) ) ||
( window . devicePixelRatio && window . devicePixelRatio >= 2 )
)
2021-01-06 02:21:50 +01:00
}
2021-03-31 11:39:56 +02:00
}