@panoramax/web-viewer 3.2.3-develop-955f2f1e → 3.2.3-develop-7d96ea85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.css +1 -1
- package/build/index.css.map +1 -1
- package/build/index.html +1 -1
- package/build/index.js +71 -32
- package/build/index.js.map +1 -1
- package/build/photo.html +1 -1
- package/build/viewer.html +1 -1
- package/build/widgets.html +1 -1
- package/package.json +1 -1
- package/public/index.html +2 -2
- package/public/photo.html +2 -2
- package/public/viewer.html +2 -2
- package/public/widgets.html +2 -2
- package/src/components/core/Viewer.css +1 -1
- package/src/components/layout/BottomDrawer.js +19 -0
- package/src/components/menus/MapFilters.js +1 -1
- package/src/components/menus/MapLayers.js +1 -1
- package/src/components/menus/PictureMetadata.js +9 -7
- package/src/components/styles.js +11 -11
- package/src/components/ui/ButtonGroup.css +5 -1
- package/src/components/ui/Loader.js +1 -1
- package/src/components/ui/ProgressBar.js +38 -7
- package/src/components/ui/widgets/Legend.js +8 -2
- package/src/components/ui/widgets/OSMEditors.js +3 -1
- package/src/translations/en.json +1 -1
- package/src/translations/fr.json +1 -1
- package/src/translations/zh_Hant.json +28 -11
package/build/photo.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="utf-8"
|
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><title>Panoramax Photo Viewer</title><style>#viewer{position:relative;width:95%;margin:2.5%;height:400px}#viewer.fullpage{position:fixed;top:0;bottom:0;left:0;right:0;height:unset;width:unset;margin:0}</style><script defer="defer" src="index.js"></script><link href="index.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><pnx-photo-viewer id="viewer" class="fullpage" sequence="ecfe4b2c-0acd-4d3a-a10d-c3e6818755c8" picture="329af5c6-4761-4a6d-9c1e-674fd6daa8b6"/><script>var servers={meta:"https://api.panoramax.xyz/api",ign:"https://panoramax.ign.fr/api",osm:"https://panoramax.openstreetmap.fr/api",local:"http://localhost:5000/api",dev:"https://panoramax.codeureusesenliberte.fr/api"},urlParams=new URLSearchParams(window.location.search),server=servers[urlParams.get("server")||"meta"];window.onload=()=>{document.getElementById("viewer").setAttribute("endpoint",server)}</script></body></html>
|
package/build/viewer.html
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="utf-8"
|
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><title>Panoramax Web Viewer</title><style>#viewer{position:relative;width:95%;margin:2.5%;height:400px}#viewer.fullpage{position:fixed;top:0;bottom:0;left:0;right:0;height:unset;width:unset;margin:0}</style><script defer="defer" src="index.js"></script><link href="index.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><pnx-viewer id="viewer" class="fullpage" map='{
|
|
2
2
|
raster: {
|
|
3
3
|
type: "raster",
|
|
4
4
|
tiles: [
|
package/build/widgets.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"><title>Panoramax Widgets</title><style>body{font-family:sans-serif;padding-bottom:100px}h1,h2,nav,p{text-align:center}.test-bench{display:flex;width:100%;max-width:600px;margin:7px auto;justify-content:space-between;align-items:center}.test-bench h3{margin:0}hr.test-sep{width:100%;max-width:600px}</style><script defer="defer" src="index.js"></script><link href="index.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><h1>Panoramax widgets</h1><p>Test page for common Panoramax viewer widgets</p><nav><a href="#button">Button</a> <a href="#link-button">Link Button</a> <a href="#copy-button">Copy button</a> <a href="#button-group">Button Group</a> <a href="#5stars">5-stars grade</a> <a href="#quality-score">Quality Score</a> <a href="#search-bar">Search bar</a> <a href="#progress-bar">Progress bar</a> <a href="#tabs">Tabs</a></nav><h2 id="button">Button</h2><div class="test-bench"><h3>Text + click</h3><pnx-button onclick='alert("Stuff")'>Click to do stuff</pnx-button></div><div class="test-bench"><h3>Icon</h3><pnx-button>⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Active</h3><pnx-button active="true">Settings</pnx-button></div><div class="test-bench"><h3>CSS override</h3><div style="width:50%;display:flex;gap:5px;max-width:300px"><pnx-button style="width:50%">⚙️ Settings</pnx-button><pnx-button style="width:50%">🖨️ Print</pnx-button></div></div><hr class="test-sep"/><div class="test-bench"><h3>Full</h3><pnx-button kind="full">⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Full active</h3><pnx-button kind="full" active>⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Full L</h3><pnx-button kind="full" size="l">⚙️</pnx-button></div><div class="test-bench"><h3>Full XXL</h3><pnx-button kind="full" size="xxl">⚙️</pnx-button></div><div class="test-bench"><h3>Outline</h3><pnx-button kind="outline">⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Outline active</h3><pnx-button kind="outline" active>⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Outline L</h3><pnx-button kind="outline" size="l">⚙️</pnx-button></div><div class="test-bench"><h3>Outline XXL</h3><pnx-button kind="outline" size="xxl">⚙️</pnx-button></div><div class="test-bench"><h3>Inline</h3><pnx-button kind="inline">⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Inline active</h3><pnx-button kind="inline" active>⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Inline L</h3><pnx-button kind="inline" size="l">⚙️</pnx-button></div><div class="test-bench"><h3>Inline XXL</h3><pnx-button kind="inline" size="xxl">⚙️</pnx-button></div><div class="test-bench"><h3>Superinline</h3><pnx-button kind="superinline">⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Superinline active</h3><pnx-button kind="superinline" active>⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Superinline L</h3><pnx-button kind="superinline" size="l">⚙️</pnx-button></div><div class="test-bench"><h3>Superinline XXL</h3><pnx-button kind="superinline" size="xxl">⚙️</pnx-button></div><div class="test-bench"><h3>Flat</h3><pnx-button kind="flat">⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Flat active</h3><pnx-button kind="flat" active>⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Flat L</h3><pnx-button kind="flat" size="l">⚙️</pnx-button></div><div class="test-bench"><h3>Flat XXL</h3><pnx-button kind="flat" size="xxl">⚙️</pnx-button></div><div class="test-bench"><h3>Superflat</h3><pnx-button kind="superflat">⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Superflat active</h3><pnx-button kind="superflat" active>⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Superflat L</h3><pnx-button kind="superflat" size="l">⚙️</pnx-button></div><div class="test-bench"><h3>Superflat XXL</h3><pnx-button kind="superflat" size="xxl">⚙️</pnx-button></div><h2 id="link-button">Link Button</h2><div class="test-bench"><h3>None set</h3><pnx-link-button>Click for nothing</pnx-link-button></div><div class="test-bench"><h3>All set</h3><pnx-link-button target="_blank" href="https://panoramax.fr" title="Do stuff">Click to do stuff</pnx-link-button></div><h2 id="copy-button">Copy button</h2><div class="test-bench"><h3>Default + text</h3><pnx-copy-button text="copypasta1"></pnx-copy-button></div><div class="test-bench"><h3>Custom + text</h3><pnx-copy-button text="copypasta2">🌐 Share URL</pnx-copy-button></div><div class="test-bench"><h3>Default + input</h3><div style="display:flex;gap:5px;align-items:center"><input value="copypasta3" id="copy-input-1"/><pnx-copy-button input="copy-input-1"></pnx-copy-button></div></div><h2 id="button-group">Button Group</h2><div class="test-bench"><h3>Full Row x2</h3><div><pnx-button-group dir="row"><pnx-button>☹️</pnx-button><pnx-button>🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Full Row x3</h3><div><pnx-button-group dir="row"><pnx-button>☹️</pnx-button><pnx-button>😐</pnx-button><pnx-button>🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Full Row mixed</h3><div><pnx-button-group dir="row"><pnx-button>☹️</pnx-button><pnx-link-button>😐</pnx-link-button><pnx-copy-button>🙂</pnx-copy-button></pnx-button-group></div></div><div class="test-bench"><h3>Full Column x2</h3><div><pnx-button-group dir="column"><pnx-button>☹️</pnx-button><pnx-button>🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Full Column x3</h3><div><pnx-button-group dir="column"><pnx-button>☹️</pnx-button><pnx-button>😐</pnx-button><pnx-button>🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Full Column mixed</h3><div><pnx-button-group dir="column"><pnx-button>☹️</pnx-button><pnx-link-button>😐</pnx-link-button><pnx-copy-button>🙂</pnx-copy-button></pnx-button-group></div></div><hr class="test-sep"/><div class="test-bench"><h3>Outline Row x2</h3><div><pnx-button-group dir="row"><pnx-button kind="outline">☹️</pnx-button><pnx-button kind="outline">🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Outline Row x3</h3><div><pnx-button-group dir="row"><pnx-button kind="outline">☹️</pnx-button><pnx-button kind="outline">😐</pnx-button><pnx-button kind="outline">🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Outline Column x2</h3><div><pnx-button-group dir="column"><pnx-button kind="outline">☹️</pnx-button><pnx-button kind="outline">🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Outline Column x3</h3><div><pnx-button-group dir="column"><pnx-button kind="outline">☹️</pnx-button><pnx-button kind="outline">😐</pnx-button><pnx-button kind="outline">🙂</pnx-button></pnx-button-group></div></div><hr class="test-sep"/><div class="test-bench"><h3>Flat Row x2</h3><div><pnx-button-group dir="row"><pnx-button kind="flat">☹️</pnx-button><pnx-button kind="flat">🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Flat Row x3</h3><div><pnx-button-group dir="row"><pnx-button kind="flat">☹️</pnx-button><pnx-button kind="flat">😐</pnx-button><pnx-button kind="flat">🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Flat Column x2</h3><div><pnx-button-group dir="column"><pnx-button kind="flat">☹️</pnx-button><pnx-button kind="flat">🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Flat Column x3</h3><div><pnx-button-group dir="column"><pnx-button kind="flat">☹️</pnx-button><pnx-button kind="flat">😐</pnx-button><pnx-button kind="flat">🙂</pnx-button></pnx-button-group></div></div><hr class="test-sep"/><div class="test-bench"><h3>Row XL</h3><div><pnx-button-group size="xl" dir="row"><pnx-button kind="flat">☹️</pnx-button><pnx-button kind="flat">😐</pnx-button><pnx-button kind="flat">🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Column XL</h3><div><pnx-button-group size="xl" dir="column"><pnx-button kind="flat">☹️</pnx-button><pnx-button kind="flat">😐</pnx-button><pnx-button kind="flat">🙂</pnx-button></pnx-button-group></div></div><h2 id="5stars">5-stars grade</h2><div class="test-bench"><h3>With a grade</h3><pnx-grade stars="5"/></div><div class="test-bench"><h3>Without a grade</h3><pnx-grade/></div><h2 id="quality-score">Quality Score</h2><div class="test-bench"><h3>Classic no grade</h3><pnx-quality-score/></div><div class="test-bench"><h3>Classic 1/5</h3><pnx-quality-score grade="1"/></div><div class="test-bench"><h3>Classic 2/5</h3><pnx-quality-score grade="2"/></div><div class="test-bench"><h3>Classic 3/5</h3><pnx-quality-score grade="3"/></div><div class="test-bench"><h3>Classic 4/5</h3><pnx-quality-score grade="4"/></div><div class="test-bench"><h3>Classic 5/5</h3><pnx-quality-score grade="5"/></div><hr class="test-sep"/><div class="test-bench"><h3>Input</h3><pnx-quality-score input="qs"/></div><div class="test-bench"><h3>Input 1/5</h3><pnx-quality-score input="qs" grade="1"/></div><div class="test-bench"><h3>Input 2/5</h3><pnx-quality-score input="qs" grade="2"/></div><div class="test-bench"><h3>Input 3/5</h3><pnx-quality-score input="qs" grade="3"/></div><div class="test-bench"><h3>Input 4/5</h3><pnx-quality-score input="qs" grade="4"/></div><div class="test-bench"><h3>Input 5/5</h3><pnx-quality-score input="qs" grade="5"/></div><div class="test-bench"><h3>Input many</h3><pnx-quality-score input="qs" grade="1,3,5"/></div><h2 id="search-bar">Search bar</h2><div class="test-bench"><h3>Simple</h3><pnx-search-bar placeholder="Start your search"></pnx-search-bar></div><div class="test-bench"><h3>With pre</h3><pnx-search-bar placeholder="Look for a place"><span slot="pre">🗺️</span></pnx-search-bar></div><div class="test-bench"><h3>Reduced</h3><pnx-search-bar reduceable reduced placeholder="Look for a place"></pnx-search-bar></div><hr class="test-sep"/><div class="test-bench"><h3>Size md full</h3><pnx-search-bar size="md" placeholder="Look for a place"><span slot="pre">🗺️</span></pnx-search-bar></div><div class="test-bench"><h3>Size md reduced</h3><pnx-search-bar size="md" reduceable reduced placeholder="Look for a place"></pnx-search-bar></div><div class="test-bench"><h3>Size xxl full</h3><pnx-search-bar size="xxl" placeholder="Look for a place"><span slot="pre">🗺️</span></pnx-search-bar></div><div class="test-bench"><h3>Size xxl reduced</h3><pnx-search-bar size="xxl" reduceable reduced placeholder="Look for a place"></pnx-search-bar></div><h2 id="progress-bar">Progress bar</h2><div class="test-bench"><h3>Half</h3><pnx-progress-bar value="42"></pnx-progress-bar></div><div class="test-bench"><h3>Indeterminate</h3><pnx-progress-bar></pnx-progress-bar></div><div class="test-bench"><h3>Full</h3><pnx-progress-bar value="100"></pnx-progress-bar></div><h2 id="tabs">Tabs</h2><div class="test-bench"><h3>Many</h3><pnx-tabs><h4 slot="title">Tab 1</h4><div slot="content">Tab 1 content</div><h4 slot="title">Tab 2</h4><div slot="content">Tab 2 content</div><h4 slot="title">Tab 3</h4><div slot="content">Tab 3 content</div></pnx-tabs></div></body></html>
|
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><title>Panoramax Widgets</title><style>body{font-family:sans-serif;padding-bottom:100px}h1,h2,nav,p{text-align:center}.test-bench{display:flex;width:100%;max-width:600px;margin:7px auto;justify-content:space-between;align-items:center}.test-bench h3{margin:0}hr.test-sep{width:100%;max-width:600px}</style><script defer="defer" src="index.js"></script><link href="index.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><h1>Panoramax widgets</h1><p>Test page for common Panoramax viewer widgets</p><nav><a href="#button">Button</a> <a href="#link-button">Link Button</a> <a href="#copy-button">Copy button</a> <a href="#button-group">Button Group</a> <a href="#5stars">5-stars grade</a> <a href="#quality-score">Quality Score</a> <a href="#search-bar">Search bar</a> <a href="#progress-bar">Progress bar</a> <a href="#tabs">Tabs</a></nav><h2 id="button">Button</h2><div class="test-bench"><h3>Text + click</h3><pnx-button onclick='alert("Stuff")'>Click to do stuff</pnx-button></div><div class="test-bench"><h3>Icon</h3><pnx-button>⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Active</h3><pnx-button active="true">Settings</pnx-button></div><div class="test-bench"><h3>CSS override</h3><div style="width:50%;display:flex;gap:5px;max-width:300px"><pnx-button style="width:50%">⚙️ Settings</pnx-button><pnx-button style="width:50%">🖨️ Print</pnx-button></div></div><hr class="test-sep"/><div class="test-bench"><h3>Full</h3><pnx-button kind="full">⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Full active</h3><pnx-button kind="full" active>⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Full L</h3><pnx-button kind="full" size="l">⚙️</pnx-button></div><div class="test-bench"><h3>Full XXL</h3><pnx-button kind="full" size="xxl">⚙️</pnx-button></div><div class="test-bench"><h3>Outline</h3><pnx-button kind="outline">⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Outline active</h3><pnx-button kind="outline" active>⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Outline L</h3><pnx-button kind="outline" size="l">⚙️</pnx-button></div><div class="test-bench"><h3>Outline XXL</h3><pnx-button kind="outline" size="xxl">⚙️</pnx-button></div><div class="test-bench"><h3>Inline</h3><pnx-button kind="inline">⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Inline active</h3><pnx-button kind="inline" active>⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Inline L</h3><pnx-button kind="inline" size="l">⚙️</pnx-button></div><div class="test-bench"><h3>Inline XXL</h3><pnx-button kind="inline" size="xxl">⚙️</pnx-button></div><div class="test-bench"><h3>Superinline</h3><pnx-button kind="superinline">⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Superinline active</h3><pnx-button kind="superinline" active>⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Superinline L</h3><pnx-button kind="superinline" size="l">⚙️</pnx-button></div><div class="test-bench"><h3>Superinline XXL</h3><pnx-button kind="superinline" size="xxl">⚙️</pnx-button></div><div class="test-bench"><h3>Flat</h3><pnx-button kind="flat">⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Flat active</h3><pnx-button kind="flat" active>⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Flat L</h3><pnx-button kind="flat" size="l">⚙️</pnx-button></div><div class="test-bench"><h3>Flat XXL</h3><pnx-button kind="flat" size="xxl">⚙️</pnx-button></div><div class="test-bench"><h3>Superflat</h3><pnx-button kind="superflat">⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Superflat active</h3><pnx-button kind="superflat" active>⚙️ Settings</pnx-button></div><div class="test-bench"><h3>Superflat L</h3><pnx-button kind="superflat" size="l">⚙️</pnx-button></div><div class="test-bench"><h3>Superflat XXL</h3><pnx-button kind="superflat" size="xxl">⚙️</pnx-button></div><h2 id="link-button">Link Button</h2><div class="test-bench"><h3>None set</h3><pnx-link-button>Click for nothing</pnx-link-button></div><div class="test-bench"><h3>All set</h3><pnx-link-button target="_blank" href="https://panoramax.fr" title="Do stuff">Click to do stuff</pnx-link-button></div><h2 id="copy-button">Copy button</h2><div class="test-bench"><h3>Default + text</h3><pnx-copy-button text="copypasta1"></pnx-copy-button></div><div class="test-bench"><h3>Custom + text</h3><pnx-copy-button text="copypasta2">🌐 Share URL</pnx-copy-button></div><div class="test-bench"><h3>Default + input</h3><div style="display:flex;gap:5px;align-items:center"><input value="copypasta3" id="copy-input-1"/><pnx-copy-button input="copy-input-1"></pnx-copy-button></div></div><h2 id="button-group">Button Group</h2><div class="test-bench"><h3>Full Row x2</h3><div><pnx-button-group dir="row"><pnx-button>☹️</pnx-button><pnx-button>🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Full Row x3</h3><div><pnx-button-group dir="row"><pnx-button>☹️</pnx-button><pnx-button>😐</pnx-button><pnx-button>🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Full Row mixed</h3><div><pnx-button-group dir="row"><pnx-button>☹️</pnx-button><pnx-link-button>😐</pnx-link-button><pnx-copy-button>🙂</pnx-copy-button></pnx-button-group></div></div><div class="test-bench"><h3>Full Column x2</h3><div><pnx-button-group dir="column"><pnx-button>☹️</pnx-button><pnx-button>🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Full Column x3</h3><div><pnx-button-group dir="column"><pnx-button>☹️</pnx-button><pnx-button>😐</pnx-button><pnx-button>🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Full Column mixed</h3><div><pnx-button-group dir="column"><pnx-button>☹️</pnx-button><pnx-link-button>😐</pnx-link-button><pnx-copy-button>🙂</pnx-copy-button></pnx-button-group></div></div><hr class="test-sep"/><div class="test-bench"><h3>Outline Row x2</h3><div><pnx-button-group dir="row"><pnx-button kind="outline">☹️</pnx-button><pnx-button kind="outline">🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Outline Row x3</h3><div><pnx-button-group dir="row"><pnx-button kind="outline">☹️</pnx-button><pnx-button kind="outline">😐</pnx-button><pnx-button kind="outline">🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Outline Column x2</h3><div><pnx-button-group dir="column"><pnx-button kind="outline">☹️</pnx-button><pnx-button kind="outline">🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Outline Column x3</h3><div><pnx-button-group dir="column"><pnx-button kind="outline">☹️</pnx-button><pnx-button kind="outline">😐</pnx-button><pnx-button kind="outline">🙂</pnx-button></pnx-button-group></div></div><hr class="test-sep"/><div class="test-bench"><h3>Flat Row x2</h3><div><pnx-button-group dir="row"><pnx-button kind="flat">☹️</pnx-button><pnx-button kind="flat">🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Flat Row x3</h3><div><pnx-button-group dir="row"><pnx-button kind="flat">☹️</pnx-button><pnx-button kind="flat">😐</pnx-button><pnx-button kind="flat">🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Flat Column x2</h3><div><pnx-button-group dir="column"><pnx-button kind="flat">☹️</pnx-button><pnx-button kind="flat">🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Flat Column x3</h3><div><pnx-button-group dir="column"><pnx-button kind="flat">☹️</pnx-button><pnx-button kind="flat">😐</pnx-button><pnx-button kind="flat">🙂</pnx-button></pnx-button-group></div></div><hr class="test-sep"/><div class="test-bench"><h3>Row XL</h3><div><pnx-button-group size="xl" dir="row"><pnx-button kind="flat">☹️</pnx-button><pnx-button kind="flat">😐</pnx-button><pnx-button kind="flat">🙂</pnx-button></pnx-button-group></div></div><div class="test-bench"><h3>Column XL</h3><div><pnx-button-group size="xl" dir="column"><pnx-button kind="flat">☹️</pnx-button><pnx-button kind="flat">😐</pnx-button><pnx-button kind="flat">🙂</pnx-button></pnx-button-group></div></div><h2 id="5stars">5-stars grade</h2><div class="test-bench"><h3>With a grade</h3><pnx-grade stars="5"/></div><div class="test-bench"><h3>Without a grade</h3><pnx-grade/></div><h2 id="quality-score">Quality Score</h2><div class="test-bench"><h3>Classic no grade</h3><pnx-quality-score/></div><div class="test-bench"><h3>Classic 1/5</h3><pnx-quality-score grade="1"/></div><div class="test-bench"><h3>Classic 2/5</h3><pnx-quality-score grade="2"/></div><div class="test-bench"><h3>Classic 3/5</h3><pnx-quality-score grade="3"/></div><div class="test-bench"><h3>Classic 4/5</h3><pnx-quality-score grade="4"/></div><div class="test-bench"><h3>Classic 5/5</h3><pnx-quality-score grade="5"/></div><hr class="test-sep"/><div class="test-bench"><h3>Input</h3><pnx-quality-score input="qs"/></div><div class="test-bench"><h3>Input 1/5</h3><pnx-quality-score input="qs" grade="1"/></div><div class="test-bench"><h3>Input 2/5</h3><pnx-quality-score input="qs" grade="2"/></div><div class="test-bench"><h3>Input 3/5</h3><pnx-quality-score input="qs" grade="3"/></div><div class="test-bench"><h3>Input 4/5</h3><pnx-quality-score input="qs" grade="4"/></div><div class="test-bench"><h3>Input 5/5</h3><pnx-quality-score input="qs" grade="5"/></div><div class="test-bench"><h3>Input many</h3><pnx-quality-score input="qs" grade="1,3,5"/></div><h2 id="search-bar">Search bar</h2><div class="test-bench"><h3>Simple</h3><pnx-search-bar placeholder="Start your search"></pnx-search-bar></div><div class="test-bench"><h3>With pre</h3><pnx-search-bar placeholder="Look for a place"><span slot="pre">🗺️</span></pnx-search-bar></div><div class="test-bench"><h3>Reduced</h3><pnx-search-bar reduceable reduced placeholder="Look for a place"></pnx-search-bar></div><hr class="test-sep"/><div class="test-bench"><h3>Size md full</h3><pnx-search-bar size="md" placeholder="Look for a place"><span slot="pre">🗺️</span></pnx-search-bar></div><div class="test-bench"><h3>Size md reduced</h3><pnx-search-bar size="md" reduceable reduced placeholder="Look for a place"></pnx-search-bar></div><div class="test-bench"><h3>Size xxl full</h3><pnx-search-bar size="xxl" placeholder="Look for a place"><span slot="pre">🗺️</span></pnx-search-bar></div><div class="test-bench"><h3>Size xxl reduced</h3><pnx-search-bar size="xxl" reduceable reduced placeholder="Look for a place"></pnx-search-bar></div><h2 id="progress-bar">Progress bar</h2><div class="test-bench"><h3>Half</h3><pnx-progress-bar value="42"></pnx-progress-bar></div><div class="test-bench"><h3>Indeterminate</h3><pnx-progress-bar></pnx-progress-bar></div><div class="test-bench"><h3>Full</h3><pnx-progress-bar value="100"></pnx-progress-bar></div><h2 id="tabs">Tabs</h2><div class="test-bench"><h3>Many</h3><pnx-tabs><h4 slot="title">Tab 1</h4><div slot="content">Tab 1 content</div><h4 slot="title">Tab 2</h4><div slot="content">Tab 2 content</div><h4 slot="title">Tab 3</h4><div slot="content">Tab 3 content</div></pnx-tabs></div></body></html>
|
package/package.json
CHANGED
package/public/index.html
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
|
-
<meta charset="utf-8"
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
|
|
6
6
|
<title>Panoramax JS Library</title>
|
|
7
7
|
<style>
|
|
8
8
|
body {
|
package/public/photo.html
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
|
-
<meta charset="utf-8"
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
|
|
6
6
|
<title>Panoramax Photo Viewer</title>
|
|
7
7
|
<style>
|
|
8
8
|
#viewer {
|
package/public/viewer.html
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
|
-
<meta charset="utf-8"
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
|
|
6
6
|
<title>Panoramax Web Viewer</title>
|
|
7
7
|
<style>
|
|
8
8
|
#viewer {
|
package/public/widgets.html
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
|
-
<meta charset="utf-8"
|
|
5
|
-
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
|
|
6
6
|
<title>Panoramax Widgets</title>
|
|
7
7
|
<style>
|
|
8
8
|
body {
|
|
@@ -105,6 +105,16 @@ export default class BottomDrawer extends LitElement {
|
|
|
105
105
|
drawer.style.maxHeight = `${this._drawerHeight}px`;
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
+
/** @private */
|
|
109
|
+
attributeChangedCallback(name, old, value) {
|
|
110
|
+
super.attributeChangedCallback(name, old, value);
|
|
111
|
+
|
|
112
|
+
if(name === "openness" && value !== "opened") {
|
|
113
|
+
const content = this.shadowRoot.querySelector(".content");
|
|
114
|
+
if(content) { content.scrollTop = 0; }
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
108
118
|
/** @private */
|
|
109
119
|
disconnectedCallback() {
|
|
110
120
|
super.disconnectedCallback();
|
|
@@ -131,6 +141,14 @@ export default class BottomDrawer extends LitElement {
|
|
|
131
141
|
/** @private */
|
|
132
142
|
_onTouchMove(e) {
|
|
133
143
|
if (!this._isDragging) return;
|
|
144
|
+
|
|
145
|
+
// Check if content has scroll bar, then only move if top scrolled
|
|
146
|
+
const content = this.shadowRoot.querySelector(".content");
|
|
147
|
+
if(content.scrollHeight > content.offsetHeight && content.scrollTop > 0) {
|
|
148
|
+
this._updateDrawerTransform(0);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
|
|
134
152
|
this._deltaFingerY = e.touches[0].clientY - this._startFingerY;
|
|
135
153
|
this._updateDrawerTransform(this._drawerY + this._deltaFingerY);
|
|
136
154
|
}
|
|
@@ -162,6 +180,7 @@ export default class BottomDrawer extends LitElement {
|
|
|
162
180
|
|
|
163
181
|
// Snap to nearest static position
|
|
164
182
|
if(snap) {
|
|
183
|
+
|
|
165
184
|
const pct = y / (this._drawerHeight - 30);
|
|
166
185
|
if(pct > OPENNESS_Y_PCT_RANGE.opened[0] && pct <= OPENNESS_Y_PCT_RANGE.opened[1]) { this.openness = "opened"; }
|
|
167
186
|
if(pct > OPENNESS_Y_PCT_RANGE["half-opened"][0] && pct <= OPENNESS_Y_PCT_RANGE["half-opened"][1]) { this.openness = "half-opened"; }
|
|
@@ -350,7 +350,7 @@ export default class MapFilters extends LitElement {
|
|
|
350
350
|
${fa(faMedal)} ${this._parent?._t.pnx.filter_qualityscore}
|
|
351
351
|
<pnx-button
|
|
352
352
|
title="${this._parent?._t.pnx.metadata_quality_help}"
|
|
353
|
-
kind="
|
|
353
|
+
kind="superinline"
|
|
354
354
|
@click=${() => this._parent?._showQualityScoreDoc()}
|
|
355
355
|
>
|
|
356
356
|
${fa(faInfoCircle)}
|
|
@@ -129,7 +129,7 @@ export default class MapLayers extends LitElement {
|
|
|
129
129
|
<pnx-quality-score></pnx-quality-score>
|
|
130
130
|
<pnx-button
|
|
131
131
|
title="${this._parent?._t.pnx.metadata_quality_help}"
|
|
132
|
-
kind="
|
|
132
|
+
kind="superinline"
|
|
133
133
|
@click=${() => this._parent?._showQualityScoreDoc()}
|
|
134
134
|
>
|
|
135
135
|
${fa(faInfoCircle)}
|
|
@@ -51,7 +51,7 @@ export default class PictureMetadata extends LitElement {
|
|
|
51
51
|
.data-block {
|
|
52
52
|
display: inline-block;
|
|
53
53
|
min-width: 50%;
|
|
54
|
-
margin:
|
|
54
|
+
margin: 8px 0;
|
|
55
55
|
box-sizing: border-box;
|
|
56
56
|
vertical-align: top;
|
|
57
57
|
}
|
|
@@ -61,8 +61,10 @@ export default class PictureMetadata extends LitElement {
|
|
|
61
61
|
color: var(--blue-dark);
|
|
62
62
|
margin: 0 0 5px 0;
|
|
63
63
|
}
|
|
64
|
+
.data-block h5 pnx-button { vertical-align: middle; }
|
|
65
|
+
.data-block h5 svg.svg-inline--fa { height: 14px; }
|
|
64
66
|
.data-block div {
|
|
65
|
-
font-size:
|
|
67
|
+
font-size: 0.8em;
|
|
66
68
|
}
|
|
67
69
|
` ];
|
|
68
70
|
|
|
@@ -169,17 +171,17 @@ export default class PictureMetadata extends LitElement {
|
|
|
169
171
|
|
|
170
172
|
qualityData = [
|
|
171
173
|
{
|
|
172
|
-
title:
|
|
173
|
-
|
|
174
|
-
<pnx-quality-score grade=${generalGrade} style="font-size: 16px"></pnx-quality-score>
|
|
174
|
+
title: html`
|
|
175
|
+
${this._parent?._t.pnx.metadata_quality_score}
|
|
175
176
|
<pnx-button
|
|
176
177
|
title="${this._parent?._t.pnx.metadata_quality_help}"
|
|
177
|
-
kind="
|
|
178
|
+
kind="superinline"
|
|
178
179
|
@click=${() => this._parent?._showQualityScoreDoc()}
|
|
179
180
|
>
|
|
180
181
|
${fa(faInfoCircle)}
|
|
181
182
|
</pnx-button>
|
|
182
|
-
|
|
183
|
+
`,
|
|
184
|
+
content: html`<pnx-quality-score grade=${generalGrade} style="font-size: 16px"></pnx-quality-score>`,
|
|
183
185
|
style: "width: 100%"
|
|
184
186
|
},
|
|
185
187
|
{
|
package/src/components/styles.js
CHANGED
|
@@ -151,6 +151,7 @@ export const btn = css`
|
|
|
151
151
|
border-radius: 6px;
|
|
152
152
|
line-height: 12px;
|
|
153
153
|
font-size: 12px;
|
|
154
|
+
min-width: unset;
|
|
154
155
|
}
|
|
155
156
|
|
|
156
157
|
.pnx-btn.pnx-btn-sm .svg-inline--fa,
|
|
@@ -163,7 +164,7 @@ export const btn = css`
|
|
|
163
164
|
height: 24px;
|
|
164
165
|
line-height: 24px;
|
|
165
166
|
font-size: 20px;
|
|
166
|
-
width: 24px;
|
|
167
|
+
min-width: 24px;
|
|
167
168
|
}
|
|
168
169
|
|
|
169
170
|
.pnx-btn-xl {
|
|
@@ -187,7 +188,7 @@ export const btn = css`
|
|
|
187
188
|
height: 56px;
|
|
188
189
|
line-height: 56px;
|
|
189
190
|
font-size: 24px;
|
|
190
|
-
width: 56px;
|
|
191
|
+
min-width: 56px;
|
|
191
192
|
}
|
|
192
193
|
|
|
193
194
|
.pnx-btn.pnx-btn-xxl .svg-inline--fa,
|
|
@@ -249,13 +250,18 @@ export const btn = css`
|
|
|
249
250
|
.pnx-btn-inline,
|
|
250
251
|
.pnx-btn-inline.pnx-btn-active,
|
|
251
252
|
.pnx-btn-inline.pnx-btn-active:hover,
|
|
252
|
-
.pnx-btn-inline:not(:disabled):hover
|
|
253
|
+
.pnx-btn-inline:not(:disabled):hover,
|
|
254
|
+
.pnx-btn-superinline,
|
|
255
|
+
.pnx-btn-superinline.pnx-btn-active,
|
|
256
|
+
.pnx-btn-superinline.pnx-btn-active:hover,
|
|
257
|
+
.pnx-btn-superinline:not(:disabled):hover {
|
|
253
258
|
border: none;
|
|
254
259
|
color: var(--widget-font);
|
|
255
|
-
background
|
|
260
|
+
background: none;
|
|
256
261
|
}
|
|
257
262
|
|
|
258
|
-
.pnx-btn-inline:not(:disabled):hover
|
|
263
|
+
.pnx-btn-inline:not(:disabled):hover,
|
|
264
|
+
.pnx-btn-superinline:not(:disabled):hover {
|
|
259
265
|
background-color: var(--widget-bg-hover);
|
|
260
266
|
}
|
|
261
267
|
|
|
@@ -264,13 +270,7 @@ export const btn = css`
|
|
|
264
270
|
.pnx-btn-superinline.pnx-btn-active,
|
|
265
271
|
.pnx-btn-superinline.pnx-btn-active:hover,
|
|
266
272
|
.pnx-btn-superinline:not(:disabled):hover {
|
|
267
|
-
border: none;
|
|
268
273
|
color: var(--widget-font-direct);
|
|
269
|
-
background-color: var(--widget-bg);
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
.pnx-btn-superinline:not(:disabled):hover {
|
|
273
|
-
background-color: var(--widget-bg-hover);
|
|
274
274
|
}
|
|
275
275
|
`;
|
|
276
276
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LitElement, css, html } from "lit";
|
|
1
|
+
import { LitElement, css, html, nothing } from "lit";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Progress bar with nice styling.
|
|
@@ -13,8 +13,8 @@ import { LitElement, css, html } from "lit";
|
|
|
13
13
|
export default class ProgressBar extends LitElement {
|
|
14
14
|
/** @private */
|
|
15
15
|
static styles = css`
|
|
16
|
-
progress
|
|
17
|
-
max-width:
|
|
16
|
+
progress {
|
|
17
|
+
max-width: 80vh;
|
|
18
18
|
width: 300px;
|
|
19
19
|
height: 16px;
|
|
20
20
|
appearance: none;
|
|
@@ -25,18 +25,48 @@ export default class ProgressBar extends LitElement {
|
|
|
25
25
|
overflow: hidden;
|
|
26
26
|
padding: 3px;
|
|
27
27
|
box-sizing: border-box;
|
|
28
|
+
display: block;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
progress::-webkit-progress-bar {
|
|
32
|
+
background-color: var(--grey);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* Don't merge with -moz below, for some f*ing reason a list selector doesn't work with Chrome */
|
|
36
|
+
progress::-webkit-progress-value {
|
|
37
|
+
background-color: var(--blue);
|
|
38
|
+
border-radius: 5px;
|
|
39
|
+
box-sizing: border-box;
|
|
28
40
|
}
|
|
29
41
|
|
|
30
|
-
progress::-webkit-progress-value,
|
|
31
42
|
progress::-moz-progress-bar {
|
|
32
43
|
background-color: var(--blue);
|
|
33
44
|
border-radius: 5px;
|
|
34
45
|
box-sizing: border-box;
|
|
35
46
|
}
|
|
36
47
|
|
|
37
|
-
progress[value=""]::-
|
|
38
|
-
progress[value
|
|
48
|
+
progress[value=""]::-moz-progress-bar,
|
|
49
|
+
progress:not([value])::-moz-progress-bar {
|
|
50
|
+
animation: indeterminateAnimation 1.5s infinite linear;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
progress.indeterminate {
|
|
54
|
+
position: relative;
|
|
55
|
+
background-color: var(--grey);
|
|
56
|
+
overflow: hidden;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
progress.indeterminate::after {
|
|
60
|
+
content: "";
|
|
61
|
+
position: absolute;
|
|
62
|
+
left: 3px;
|
|
63
|
+
top: 3px;
|
|
64
|
+
bottom: 3px;
|
|
65
|
+
width: 20%;
|
|
66
|
+
background-color: var(--blue);
|
|
67
|
+
border-radius: 5px;
|
|
39
68
|
animation: indeterminateAnimation 1.5s infinite linear;
|
|
69
|
+
pointer-events: none;
|
|
40
70
|
}
|
|
41
71
|
|
|
42
72
|
@keyframes indeterminateAnimation {
|
|
@@ -62,7 +92,8 @@ export default class ProgressBar extends LitElement {
|
|
|
62
92
|
render() {
|
|
63
93
|
return html`
|
|
64
94
|
<progress
|
|
65
|
-
value=${this.value >= 0 ? this.value :
|
|
95
|
+
value=${this.value >= 0 ? this.value : nothing}
|
|
96
|
+
class=${this.value >= 0 ? nothing : "indeterminate"}
|
|
66
97
|
max="100"
|
|
67
98
|
title=${this._t?.map.loading}
|
|
68
99
|
></progress>
|
|
@@ -82,8 +82,14 @@ export default class Legend extends LitElement {
|
|
|
82
82
|
<img class="logo" src=${PanoramaxImg} alt="" />
|
|
83
83
|
<div>
|
|
84
84
|
Panoramax est le géocommun des photos de rues.
|
|
85
|
-
<pnx-link-button
|
|
86
|
-
|
|
85
|
+
<pnx-link-button
|
|
86
|
+
title=${this._parent?._t.map.more_panoramax}
|
|
87
|
+
kind="superinline"
|
|
88
|
+
href="https://panoramax.fr"
|
|
89
|
+
target="_blank"
|
|
90
|
+
size="sm"
|
|
91
|
+
>
|
|
92
|
+
${fa(faInfoCircle)}
|
|
87
93
|
</pnx-link-button>
|
|
88
94
|
</div>
|
|
89
95
|
</div>
|
|
@@ -106,6 +106,8 @@ export default class OSMEditors extends LitElement {
|
|
|
106
106
|
|
|
107
107
|
/** @private */
|
|
108
108
|
render() {
|
|
109
|
+
if(!this._pic) { return nothing; }
|
|
110
|
+
|
|
109
111
|
// Mobile -> Geo URI
|
|
110
112
|
if(this._parent?.isWidthSmall()) {
|
|
111
113
|
return html`
|
|
@@ -118,7 +120,7 @@ export default class OSMEditors extends LitElement {
|
|
|
118
120
|
`;
|
|
119
121
|
}
|
|
120
122
|
else {
|
|
121
|
-
const idOpts =
|
|
123
|
+
const idOpts = {
|
|
122
124
|
"map": `19/${this._pic.gps[1]}/${this._pic.gps[0]}`,
|
|
123
125
|
"source": "Panoramax",
|
|
124
126
|
"photo_overlay": "panoramax",
|
package/src/translations/en.json
CHANGED
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"search_user": "Search a username…",
|
|
33
33
|
"share": "Share",
|
|
34
34
|
"share_links": "Links",
|
|
35
|
-
"share_page": "Link to this
|
|
35
|
+
"share_page": "Link to this picture",
|
|
36
36
|
"share_image": "HD Image",
|
|
37
37
|
"share_rss": "RSS feed",
|
|
38
38
|
"share_rss_title": "RSS feed of new sequences in the currently visible map area",
|
package/src/translations/fr.json
CHANGED
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"search_user": "Rechercher un nom d'utilisateur…",
|
|
33
33
|
"share": "Partager",
|
|
34
34
|
"share_links": "Liens utiles",
|
|
35
|
-
"share_page": "Lien de la
|
|
35
|
+
"share_page": "Lien de la photo",
|
|
36
36
|
"share_image": "Image HD",
|
|
37
37
|
"share_rss": "Flux RSS",
|
|
38
38
|
"share_rss_title": "Flux RSS des nouvelles séquences dans la zone visible sur la carte",
|
|
@@ -44,7 +44,13 @@
|
|
|
44
44
|
"👥 正在撰寫人物誌",
|
|
45
45
|
"🍗 正在定位鹹酥雞店",
|
|
46
46
|
"🧑💻 正在偵錯介面",
|
|
47
|
-
"📈 統計數據正在增加"
|
|
47
|
+
"📈 統計數據正在增加",
|
|
48
|
+
"🤖 正在學習語義",
|
|
49
|
+
"🎨 重新設計介面",
|
|
50
|
+
"📅 正在規劃相片地圖繪圖聚會",
|
|
51
|
+
"🧀 正在熟成切達起司",
|
|
52
|
+
"🌄 正在計算恆春的日照時數",
|
|
53
|
+
"🌊 正在測量潮汐"
|
|
48
54
|
],
|
|
49
55
|
"loading_labels_serious": [
|
|
50
56
|
"🗺️ 正在載入地圖資料",
|
|
@@ -54,7 +60,10 @@
|
|
|
54
60
|
"🏘️ 正在算繪 3D",
|
|
55
61
|
"📷 正在初始化 360° 相片",
|
|
56
62
|
"🟠 正在平衡色彩",
|
|
57
|
-
"💯 正在計算品質分數 ©"
|
|
63
|
+
"💯 正在計算品質分數 ©",
|
|
64
|
+
"📡 正在下載更新",
|
|
65
|
+
"🌍 正在取得地圖圖磚",
|
|
66
|
+
"📸 正在處理陰影"
|
|
58
67
|
],
|
|
59
68
|
"map_background": "地圖背景",
|
|
60
69
|
"map_background_aerial": "衛星",
|
|
@@ -73,21 +82,21 @@
|
|
|
73
82
|
"metadata_camera_make": "製造商",
|
|
74
83
|
"metadata_camera_model": "型號",
|
|
75
84
|
"metadata_camera_type": "類型",
|
|
76
|
-
"metadata_exif": "EXIF
|
|
85
|
+
"metadata_exif": "EXIF",
|
|
77
86
|
"metadata_exif_name": "標籤",
|
|
78
87
|
"metadata_exif_value": "值",
|
|
79
88
|
"metadata_general_author": "作者",
|
|
80
89
|
"metadata_general_date": "拍攝時間",
|
|
81
90
|
"metadata_general_license": "授權",
|
|
82
91
|
"metadata_general_license_link": "查看完整授權條款",
|
|
83
|
-
"metadata_general_picid": "
|
|
92
|
+
"metadata_general_picid": "相片",
|
|
84
93
|
"metadata_general_picid_link": "前往本相片的 JSON 說明",
|
|
85
|
-
"metadata_general_seqid": "
|
|
94
|
+
"metadata_general_seqid": "序列",
|
|
86
95
|
"metadata_general_seqid_link": "前往本序列的 JSON 說明",
|
|
87
|
-
"metadata_location": "
|
|
96
|
+
"metadata_location": "位置",
|
|
88
97
|
"metadata_location_latitude": "緯度",
|
|
89
98
|
"metadata_location_longitude": "經度",
|
|
90
|
-
"metadata_location_orientation": "
|
|
99
|
+
"metadata_location_orientation": "方向",
|
|
91
100
|
"metadata_location_precision": "定位精度",
|
|
92
101
|
"minimize": "隱藏這個小工具,您可以按左下角的按鈕再次顯示它",
|
|
93
102
|
"moveDown": "下移",
|
|
@@ -112,7 +121,7 @@
|
|
|
112
121
|
"share_embed": "嵌入到您的網站",
|
|
113
122
|
"share_image": "高畫質相片",
|
|
114
123
|
"share_links": "超連結",
|
|
115
|
-
"share_page": "
|
|
124
|
+
"share_page": "這張相片的連結",
|
|
116
125
|
"share_print": "列印",
|
|
117
126
|
"share_rss": "RSS 摘要",
|
|
118
127
|
"share_rss_title": "目前地圖可見區域中新相片序列的 RSS 摘要",
|
|
@@ -151,12 +160,12 @@
|
|
|
151
160
|
"filter_qualityscore_help": "點擊以啟用或停用",
|
|
152
161
|
"map_theme_score": "品質分數",
|
|
153
162
|
"metadata_camera_resolution": "解析度",
|
|
154
|
-
"metadata_quality": "
|
|
163
|
+
"metadata_quality": "品質",
|
|
155
164
|
"metadata_quality_help": "深入了解品質分數",
|
|
156
165
|
"metadata_quality_gps_score": "定位分數",
|
|
157
166
|
"metadata_quality_resolution_score": "解析度分數",
|
|
158
167
|
"metadata_quality_missing": "相片未包含資訊",
|
|
159
|
-
"report": "
|
|
168
|
+
"report": "檢舉",
|
|
160
169
|
"metadata_quality_score": "整體分數",
|
|
161
170
|
"filter_user_mypics": "我的相片",
|
|
162
171
|
"filter_date_1month": "1 個月",
|
|
@@ -166,7 +175,15 @@
|
|
|
166
175
|
"qualityscore_title": "關於品質分數",
|
|
167
176
|
"qualityscore_doc_1": "Panoramax 為每張相片提供品質分數,這能幫助我們輕鬆地在地圖上篩選和顯示高品質相片。",
|
|
168
177
|
"qualityscore_doc_3": "它根據 GPS 精確度和相片解析度計算得出,專業設備的等級為 A、360° 運動相機的等級為 B、智慧型手機的等級為 C/D/E。",
|
|
169
|
-
"minimize_short": "隱藏"
|
|
178
|
+
"minimize_short": "隱藏",
|
|
179
|
+
"metadata_general_instance": "來源執行個體",
|
|
180
|
+
"metadata_general_copy_picid": "複製相片 ID",
|
|
181
|
+
"metadata_general_copy_id": "複製 ID",
|
|
182
|
+
"picture_360_long": "全景相片",
|
|
183
|
+
"metadata_summary": "摘要",
|
|
184
|
+
"picture_flat_long": "經典相片",
|
|
185
|
+
"geo_uri": "外部程式",
|
|
186
|
+
"contribute_id": "透過 iD 編輯器來貢獻 OpenStreetMap"
|
|
170
187
|
},
|
|
171
188
|
"map": {
|
|
172
189
|
"loading": "正在載入…",
|