Gallery › robotparts › robotparts sellers by country
robotparts sellers by country
Where robotparts' sellers are based and where they ship, from what each seller published with its listings
(seller_country, ships_to). Markers sit on the country's Natural Earth label point; rows at one point count
together and a counted marker lists its rows. The basemap is bundled: no tile server is asked.
The .base file and its data
Every tab above is one entry of this file; the views read these rows. ⋯ in the toolbar copies the current view as YAML.
# Where robotparts' sellers are based and where they ship, from the sellers' own listings (seller_country,
# ships_to). Obsidian Bases grammar plus the Maps plugin's keys (docs/CONTRACT.md §5).
data: sellers.json
properties:
country_name: { displayName: Country }
seller: { displayName: Seller }
relation: { displayName: Relation }
views:
- type: map
name: Where sellers ship
filters: 'relation == "ships to"'
coordinates: coordinates
markerColor: seller
- type: map
name: Where sellers are based
filters: 'relation == "based in"'
coordinates: coordinates
markerColor: seller
- type: map
name: Ships to, one colour
filters: 'relation == "ships to"'
coordinates: coordinates
markerColor: var(--data-series-3)
center: [50, 10]
defaultZoom: 2.5
- type: table
name: By country
order: [country_name, country, relation, seller, seller_name, listings, coordinates]
groupBy: { property: country_name, direction: ASC }
// sellers.json: 322 rows, 115 KB; the first 3
{
"id": "robotparts-sellers",
"title": "Sellers by country",
"titleProperty": "country_name",
"source": "robotparts parts/*/quotes.jsonl (seller_country, ships_to) + Natural Earth 1:110m label points",
"properties": {
"country_name": {
"type": "text",
"label": "Country",
"width": 180
},
"country": {
"type": "text",
"label": "ISO code"
},
"relation": {
"type": "text",
"label": "Relation",
"display": "badge",
"colors": {
"based in": 8,
"ships to": 1
}
},
"seller": {
"type": "text",
"label": "Seller",
"display": "badge",
"colors": {
"aifitlab.com": 1,
"www.bravoelectro.com": 2,
"www.trcelectronics.com": 3,
"www.ztec.dk": 4,
"www.omc-stepperonline.com": 5,
"thinklucid.com": 6,
"va-imaging.com": 7
}
},
"seller_name": {
"type": "text",
"label": "Seller name"
},
"coordinates": {
"type": "list",
"label": "Point (lat, lng)"
},
"listings": {
"type": "number",
"label": "Listings (seller)"
}
},
"rows": [
{
"id": "aifitlab.com-based-in-hk",
"seller": "aifitlab.com",
"seller_name": "aifitlab.com",
"relation": "based in",
"country": "HK",
"country_name": "Hong Kong",
"coordinates": {
"value": [
22.32,
114.17
],
"basis": "assumed",
"note": "Hong Kong is not a polygon in Natural Earth 1:110m; its centre entered by hand"
},
"listings": 1230
},
{
"id": "va-imaging.com-based-in-nl",
"seller": "va-imaging.com",
"seller_name": "VA Imaging (Netherlands, Daheng distributor)",
"relation": "based in",
"country": "NL",
"country_name": "Netherlands",
"coordinates": {
"value": [
52.422,
5.611
],
"basis": "derived",
"source": "Natural Earth 1:110m label point"
},
"listings": 8
},
{
"id": "www.trcelectronics.com-based-in-us",
"seller": "www.trcelectronics.com",
"seller_name": "TRC Electronics",
"relation": "based in",
"country": "US",
"country_name": "United States of America",
"coordinates": {
"value": [
39.538,
-97.483
],
"basis": "derived",
"source": "Natural Earth 1:110m label point"
},
"listings": 279
}
]
}README.md
# robotparts sellers by country
Where robotparts' sellers are based and where they ship, from what each seller published with its listings
(`seller_country`, `ships_to`). Markers sit on the country's Natural Earth label point; rows at one point count
together and a counted marker lists its rows. The basemap is bundled: no tile server is asked.
- **App:** robotparts
- **Replaces:** the part page's "Ships to <region>: yes / no" column (robotparts `build/site_pages.py`) and the
seller table in `docs/sellers.md` for the question "who can ship to me".
- **Shows:** the map view (MapLibre GL on the bundled Natural Earth 1:110m countries) with `coordinates`,
`markerColor` from a property (the `seller` column's `colors`) or a token (`var(--data-series-3)`), `center` and
`defaultZoom`, filters, and the same rows grouped by country in a table.
- **Data:** `sellers.json`, written by `source/build.py` from robotparts' `parts/*/quotes.jsonl`. Countries too
small for 1:110m have no point and say so; Hong Kong's centre is entered by hand and marked `assumed`. Makers
have no country in robotparts, so none is shown.
The original UI it replaces
the part page's "Ships to <region>: yes / no" column (robotparts build/site_pages.py) and the seller table in docs/sellers.md for the question "who can ship to me".
What it shows
the map view (MapLibre GL on the bundled Natural Earth 1:110m countries) with coordinates, markerColor from a property (the seller column's colors) or a token (var(--data-series-3)), center and defaultZoom, filters, and the same rows grouped by country in a table.
Data
sellers.json, written by source/build.py from robotparts' parts/*/quotes.jsonl. Countries too small for 1:110m have no point and say so; Hong Kong's centre is entered by hand and marked assumed. Makers have no country in robotparts, so none is shown.