Eric van der Vlist ccbcd12f96 | ||
---|---|---|
.vscode | ||
src | ||
.gitignore | ||
AndroidManifest.xml | ||
README.md | ||
cSpell.json | ||
capacitor.config.ts | ||
fix-jest-dom.mjs | ||
helper.ts | ||
index.html | ||
package-lock.json | ||
package.json | ||
pnpm-lock.yaml | ||
setupVitest.ts | ||
tsconfig.json | ||
vite.config.ts |
README.md
Dyomedea
Hiking app.
Documentation
vdv@nuc:~/projects/tea/dyomedea/dyomedea$ npx typedoc
./src/serviceWorkerRegistration.ts:21:0 - warning Config is referenced by serviceWorkerRegistration.register.register.config but not included in the documentation.
21 type Config = {
Documentation generated at ./doc
vdv@nuc:~/projects/tea/dyomedea/dyomedea$
Components
TBD
Data formats
There is a number of data formats more or less specific to geography and hiking, such as:
- GPX 1.1 Schema Documentation
- GeoJSON
- Keyhole Markup Language - Wikipedia
- Elements — OpenStreetMap Wiki
SVG is very generic and is used to draw 2D figures in HTML applications and doesn't care about geography.
KML, GeoJSON and OSM elements have been designed to represent generic geographical points and shapes.
GPX is more specific, having been designed to represent routes and tracks and its semantics are directly useable in our application.
The structure of our components and indexes can therefore follow the GPX format.
OSM elements is interesting to extract information from the OSM DB, either by querying their API or by downloading portions of the database.
GeoJSON might be of interest as an intermediate format since a number of JS libraries have been developed to perform queries or draw GeoJSON data as SVG.
KML might be considered as an import format.
And SVG, of course will be used to render tracks and routes on a map since its elements are directly supported by React.
Notes to self
Patching node_modules
This can be done by updating their sources in the node_modules directory and using the patch-package npm CLI command (thanks stackoverflow) :
$npx patch-package localized-strings
However, it takes ages before ionic serve
takes these modifications into account.
Visual Code snippets
- Create Your Own VSCode Snippets - DEV Community 👩💻👨💻
- vscode settings - How can I create templates for file extensions in Visual Studio Code? - Stack Overflow
Useful commands
vdv@nuc:~/projects/tea/dyomedea/dyomedea$ adb --version
Android Debug Bridge version 1.0.41
Version 33.0.3-8952118
Installed as /homext/Android/Sdk/platform-tools/adb
$ ionic capacitor run --target RFCN20NEZ4R android
$ ionic serve --no-open
$ npm test
$ npx typedoc
$ npx trapeze run trapeze.config.yaml
vdv@nuc:~/projects/tea/dyomedea/dyomedea$ echo $ANDROID_SDK_ROOT
/home/vdv/Android/Sdk
To (re)generate android/
$ rm capacitor.config.ts
$ rm -rf android
$ npx cap init dyomedea com.dyomedea.dyomedea # assets in dist/
$ npx cap add android
$ cp AndroidManifest.xml ./android/app/src/main/AndroidManifest.xml
$ npx cap run --target RFCN20NEZ4R android
To generate style filters
vdv@nuc:~/projects/tea/dyomedea/dyomedea$ esrun helper.ts
{
caller: 'overlay-definitions',
overlayDefinitions: {
amenity: {
bar: [Object],
fast_food: [Object],
food_court: [Object],
pub: [Object],
restaurant: [Object],
cafe: [Object],
atm: [Object],
bank: [Object],
doctors: [Object],
hospital: [Object],
pharmacy: [Object],
police: [Object],
fire_station: [Object],
drinking_water: [Object],
water_point: [Object],
waste_basket: [Object],
waste_disposal: [Object],
vending_machine: [Object]
},
shop: {
bakery: [Object],
butcher: [Object],
cheese: [Object],
chocolate: [Object],
convenience: [Object],
dairy: [Object],
farm: [Object],
greengrocer: [Object],
health_food: [Object],
pasta: [Object],
pastry: [Object],
seafood: [Object],
water: [Object],
department_store: [Object],
general: [Object],
mall: [Object],
supermarket: [Object],
wholesale: [Object],
outdoor: [Object],
laundry: [Object]
},
tourism: {
hotel: [Object],
alpine_hut: [Object],
apartment: [Object],
camp_site: [Object],
chalet: [Object],
guest_house: [Object],
hostel: [Object],
motel: [Object],
wilderness_hut: [Object],
viewpoint: [Object]
},
waterway: { waterfall: [Object] },
natural: {
peak: [Object],
cave_entrance: [Object],
volcano: [Object],
arch: [Object],
arete: [Object],
fumarole: [Object],
rock: [Object],
saddle: [Object],
sinkhole: [Object],
stone: [Object],
glacier: [Object],
spring: [Object],
hot_spring: [Object],
geyser: [Object]
}
},
_flat: [
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] },
{ hiking: [Object] }, { hiking: [Object] }, { hiking: [Object] }
],
overlayCategories: {
hiking: Set(9) {
'drinking',
'eating',
'money',
'dayToDay',
'health',
'security',
'material',
'sleeping',
'naturalSites'
}
}
}
{
overlayDefinitions: {
amenity: {
bar: [Object],
fast_food: [Object],
food_court: [Object],
pub: [Object],
restaurant: [Object],
cafe: [Object],
atm: [Object],
bank: [Object],
doctors: [Object],
hospital: [Object],
pharmacy: [Object],
police: [Object],
fire_station: [Object],
drinking_water: [Object],
water_point: [Object],
waste_basket: [Object],
waste_disposal: [Object],
vending_machine: [Object]
},
shop: {
bakery: [Object],
butcher: [Object],
cheese: [Object],
chocolate: [Object],
convenience: [Object],
dairy: [Object],
farm: [Object],
greengrocer: [Object],
health_food: [Object],
pasta: [Object],
pastry: [Object],
seafood: [Object],
water: [Object],
department_store: [Object],
general: [Object],
mall: [Object],
supermarket: [Object],
wholesale: [Object],
outdoor: [Object],
laundry: [Object]
},
tourism: {
hotel: [Object],
alpine_hut: [Object],
apartment: [Object],
camp_site: [Object],
chalet: [Object],
guest_house: [Object],
hostel: [Object],
motel: [Object],
wilderness_hut: [Object],
viewpoint: [Object]
},
waterway: { waterfall: [Object] },
natural: {
peak: [Object],
cave_entrance: [Object],
volcano: [Object],
arch: [Object],
arete: [Object],
fumarole: [Object],
rock: [Object],
saddle: [Object],
sinkhole: [Object],
stone: [Object],
glacier: [Object],
spring: [Object],
hot_spring: [Object],
geyser: [Object]
}
},
filters: [
'any',
[
'in', 'amenity',
'bar', 'fast_food',
'food_court', 'pub',
'restaurant', 'cafe',
'atm', 'bank',
'doctors', 'hospital',
'pharmacy', 'police',
'fire_station', 'drinking_water',
'water_point', 'waste_basket',
'waste_disposal', 'vending_machine'
],
[
'in', 'shop',
'bakery', 'butcher',
'cheese', 'chocolate',
'convenience', 'dairy',
'farm', 'greengrocer',
'health_food', 'pasta',
'pastry', 'seafood',
'water', 'department_store',
'general', 'mall',
'supermarket', 'wholesale',
'outdoor', 'laundry'
],
[
'in', 'tourism',
'hotel', 'alpine_hut',
'apartment', 'camp_site',
'chalet', 'guest_house',
'hostel', 'motel',
'wilderness_hut', 'viewpoint'
],
[ 'in', 'waterway', 'waterfall' ],
[
'in', 'natural',
'peak', 'cave_entrance',
'volcano', 'arch',
'arete', 'fumarole',
'rock', 'saddle',
'sinkhole', 'stone',
'glacier', 'spring',
'hot_spring', 'geyser'
]
],
json: '["any",["in","amenity","bar","fast_food","food_court","pub","restaurant","cafe","atm","bank","doctors","hospital","pharmacy","police","fire_station","drinking_water","water_point","waste_basket","waste_disposal","vending_machine"],["in","shop","bakery","butcher","cheese","chocolate","convenience","dairy","farm","greengrocer","health_food","pasta","pastry","seafood","water","department_store","general","mall","supermarket","wholesale","outdoor","laundry"],["in","tourism","hotel","alpine_hut","apartment","camp_site","chalet","guest_house","hostel","motel","wilderness_hut","viewpoint"],["in","waterway","waterfall"],["in","natural","peak","cave_entrance","volcano","arch","arete","fumarole","rock","saddle","sinkhole","stone","glacier","spring","hot_spring","geyser"]]'
}
(Just copy the filters as json)
Requires esrun (sudo npm i -g @digitak/esrun
)