mirror of
https://github.com/FoggedLens/iD.git
synced 2026-05-02 00:15:12 +02:00
Merge branch 'develop' into touch-walkthrough-update
This commit is contained in:
+115
-42
@@ -8,7 +8,7 @@ follow [universal design](https://en.wikipedia.org/wiki/Universal_design) princi
|
||||
|
||||
This is a living document that details the usability of iD across a number of dimensions,
|
||||
with the intent of identifying and addressing problem areas. Since there are always more
|
||||
factors to consider, no part of this document should be considered "complete".
|
||||
factors to consider, no part of this document should be considered complete.
|
||||
|
||||
Symbols used in this document:
|
||||
|
||||
@@ -18,7 +18,9 @@ Symbols used in this document:
|
||||
- ❌ No appreciable support
|
||||
- 🤷 Unknown support, none is assumed
|
||||
|
||||
## Browser Compatibility
|
||||
<br/>
|
||||
|
||||
## 🔗 Browser Compatibility
|
||||
|
||||
As a web app, iD's browser support is fundamental. The user experience should be
|
||||
as equivalent as possible across the latest versions of all modern browsers on all
|
||||
@@ -28,16 +30,17 @@ should fallback gracefully without breaking other aspects of the app.
|
||||
This table covers high-level compatibility, with individual features to be detailed
|
||||
elsewhere in this document.
|
||||
|
||||
| | | Browser | Notes | Issues |
|
||||
| | Icon | Browser | Notes | Issues |
|
||||
|---|---|---|---|---|
|
||||
| ✅ | ![chrome logo] | Chrome | |
|
||||
| ✅* | ![firefox logo] | Firefox | \*Minor known issues | [#7132] |
|
||||
| ✅ | ![safari logo] | Safari | |
|
||||
| 🟩 | ![opera logo] | Opera | |
|
||||
| 🟩 | ![edge logo] | Edge | |
|
||||
| 🟠 | ![ie logo] | Internet Explorer | IE has been discontinued, but IE 11 is still maintained. iD polyfills ES6 features on IE 11, with varying success. |
|
||||
| 🟩 | 🌐 | Others | iD should run without issue on any desktop browser implementing modern web standards. |
|
||||
| 🟠 | 📱 | Mobile browsers | iD has not yet been fully optimized for mobile devices, but some editing is usually possible. |
|
||||
| ✅ | ![chrome logo] | [Chrome](https://en.wikipedia.org/wiki/Google_Chrome) | |
|
||||
| ✅* | ![firefox logo] | [Firefox](https://en.wikipedia.org/wiki/Firefox) | \*Minor known issues | [#7132](https://github.com/openstreetmap/iD/issues/7132) |
|
||||
| ✅ | ![safari logo] | [Safari](https://en.wikipedia.org/wiki/Safari_(web_browser)) | |
|
||||
| 🟩 | ![opera logo] | [Opera](https://en.wikipedia.org/wiki/Opera_(web_browser)) | |
|
||||
| 🟩 | ![edge logo] | [Edge](https://en.wikipedia.org/wiki/Microsoft_Edge) | |
|
||||
| 🟠 | ![ie logo] | [Internet Explorer](https://en.wikipedia.org/wiki/Internet_Explorer) | IE has been discontinued, but [IE 11 is still maintained](https://docs.microsoft.com/en-us/lifecycle/faq/internet-explorer-microsoft-edge). iD [polyfills](https://en.wikipedia.org/wiki/Polyfill_(programming)) modern web features for IE 11 where possible, but full support should not be expected |
|
||||
| ✅ | ![webkit logo] | [iOS](https://en.wikipedia.org/wiki/IOS) browsers | All browsers on iOS (e.g. Safari, Chrome, Firefox, Edge) use the [WebKit](https://en.wikipedia.org/wiki/WebKit) engine and should thus have equivalent support |
|
||||
| 🟩 | ![android logo] | [Android](https://en.wikipedia.org/wiki/Android_(operating_system)) browsers | Browsers on Android can use their own engines, so support may vary, but there are currently no known issues |
|
||||
| 🟩 | 🌐 | Others | iD should run on any browser implementing [modern web standards](https://www.w3.org/standards/). Hardware factors such as screen size may affect usability |
|
||||
|
||||
[safari logo]: https://upload.wikimedia.org/wikipedia/commons/thumb/5/52/Safari_browser_logo.svg/30px-Safari_browser_logo.svg.png
|
||||
[opera logo]: https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Opera_browser_logo_2013_vector.svg/30px-Opera_browser_logo_2013_vector.svg.png
|
||||
@@ -45,10 +48,12 @@ elsewhere in this document.
|
||||
[firefox logo]: https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Firefox_logo%2C_2019.svg/30px-Firefox_logo%2C_2019.svg.png
|
||||
[edge logo]: https://upload.wikimedia.org/wikipedia/commons/thumb/b/b8/Microsoft_Edge_logo_%282015%E2%80%932019%29.svg/30px-Microsoft_Edge_logo_%282015%E2%80%932019%29.svg.png
|
||||
[ie logo]: https://upload.wikimedia.org/wikipedia/commons/thumb/1/18/Internet_Explorer_10%2B11_logo.svg/30px-Internet_Explorer_10%2B11_logo.svg.png
|
||||
[webkit logo]: https://upload.wikimedia.org/wikipedia/en/thumb/b/be/WebKit_logo_(2015).svg/35px-WebKit_logo_(2015).svg.png
|
||||
[android logo]: https://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Android_robot.svg/28px-Android_robot.svg.png
|
||||
|
||||
[#7132]: https://github.com/openstreetmap/iD/issues/7132
|
||||
<br/>
|
||||
|
||||
## Input Device Support
|
||||
## 🕹 Interaction Support
|
||||
|
||||
iD has traditionally assumed the mapper will be interacting via a mouse and keyboard,
|
||||
but realistically people want or need to use various other [input devices](https://en.wikipedia.org/wiki/Input_device).
|
||||
@@ -56,9 +61,45 @@ but realistically people want or need to use various other [input devices](https
|
||||
iD relies on modern [pointer events](https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events) for some interactions, so
|
||||
some devices may see degraded functionality on older browsers.
|
||||
|
||||
### Setups
|
||||
### Input Devices
|
||||
|
||||
The following table lists iD's usability for different setups. A setup is where
|
||||
This table details iD's support for specific classes of input devices.
|
||||
|
||||
"Full support" for a device means that iD reasonably handles its entire range of input on supported platforms. Though the given device is not necessarily expected to perform all of iD's functions.
|
||||
|
||||
It's impractical to ensure every single input device works as expected, so the table only reflects the support status to the best of our knowledge.
|
||||
|
||||
| | Icon | Input Device | Notes | Issues |
|
||||
|---|---|---|---|---|
|
||||
| 🟩 | ![apple adb mouse] | Single-button [mouse](https://en.wikipedia.org/wiki/Computer_mouse) | Primary click (e.g. left-click) can be used for all pointer interactions. Long-clicking on map features opens the edit menu |
|
||||
| 🟩 | ![ibm mouse] | Multi-button mouse | Secondary click (e.g. right-click) can be used on map features to open the edit menu. Middle click, etc., are not needed by iD but are passed through to the browser |
|
||||
| 🟩 | [![magic mouse]](https://en.wikipedia.org/wiki/Magic_Mouse) | Multi-touch mouse | 2D scrolling in the map is treated as panning, not zooming |
|
||||
| 🟠 | ![vertical scroll wheel] | Vertical [scroll wheel](https://en.wikipedia.org/wiki/Scroll_wheel) | Should zoom the map in and out | [#5550](https://github.com/openstreetmap/iD/issues/5550) |
|
||||
| ❌ | | Horizontal scroll wheel | Currently does nothing in the map | [#7134](https://github.com/openstreetmap/iD/issues/7134) |
|
||||
| 🤷 | [![apple mighty mouse]](https://en.wikipedia.org/wiki/Apple_Mighty_Mouse) | Scroll ball | Works like combined vertical/horizontal scroll wheels |
|
||||
| 🟩 | 🖲 | [Trackball](https://en.wikipedia.org/wiki/Trackball) | |
|
||||
| 🟩 | ![touchpad] | [Trackpad](https://en.wikipedia.org/wiki/Touchpad) | |
|
||||
| 🟩 | [![macbook trackpad]](https://en.wikipedia.org/wiki/Magic_Trackpad) | Multi-touch trackpad | Pinch-to-zoom and scroll-to-pan are supported in the map |
|
||||
| 🟩 | ![pointing stick] | [Pointing stick](https://en.wikipedia.org/wiki/Pointing_stick) | |
|
||||
| 🟩 | ⌨️ | [Keyboard](https://en.wikipedia.org/wiki/Computer_keyboard) | Any keyboard can be used, but certain functionality may require certain keys |
|
||||
| 🤷 | | [Touch bar](https://www.imore.com/touch-bar) | Generic, browser-provided controls should be shown |
|
||||
| 🟩 | | Multi-touch screen | |
|
||||
| 🟩 | ✍️ | [Stylus](https://en.wikipedia.org/wiki/Stylus_(computing)) | Works like a single touch for tapping, dragging, scrolling, etc. |
|
||||
| 🤷 | 🔲 | [Graphics tablet](https://en.wikipedia.org/wiki/Graphics_tablet) | |
|
||||
| 🤷 | 🎮 | [Gamepad](https://en.wikipedia.org/wiki/Gamepad) | |
|
||||
|
||||
[ibm mouse]: https://upload.wikimedia.org/wikipedia/commons/thumb/6/62/Myszka_IBM.jpg/40px-Myszka_IBM.jpg
|
||||
[apple adb mouse]: https://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Apple-ADB-mouse.jpg/70px-Apple-ADB-mouse.jpg
|
||||
[apple mighty mouse]: https://upload.wikimedia.org/wikipedia/commons/thumb/a/ac/Apple_Mighty_Mouse_top_viewo.jpg/35px-Apple_Mighty_Mouse_top_viewo.jpg
|
||||
[vertical scroll wheel]: https://upload.wikimedia.org/wikipedia/commons/thumb/9/90/Razer_DeathAdder_2013_Edition-mouse_wheel_PNr%C2%B00405.jpg/50px-Razer_DeathAdder_2013_Edition-mouse_wheel_PNr%C2%B00405.jpg
|
||||
[magic mouse]: https://upload.wikimedia.org/wikipedia/commons/thumb/c/c8/Magic_Mouse.jpg/70px-Magic_Mouse.jpg
|
||||
[pointing stick]: https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Mouse_pointing_stick.jpeg/70px-Mouse_pointing_stick.jpeg
|
||||
[touchpad]: https://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Touchpad_F3JA.jpg/70px-Touchpad_F3JA.jpg
|
||||
[macbook trackpad]: https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/MacBook_Pro%27s_trackpad.JPG/70px-MacBook_Pro%27s_trackpad.JPG
|
||||
|
||||
### Input Setups
|
||||
|
||||
This table lists iD's usability for different setups. A setup is where
|
||||
a mapper is using only the device(s) given in the row.
|
||||
|
||||
A setup with "full support" offers functionality equivalent to that of the
|
||||
@@ -66,41 +107,48 @@ highest-functioning setup (generally mouse and keyboard).
|
||||
Certain functions may be accessed differently on different setups,
|
||||
such as opening the edit menu via long-pressing instead of right-clicking.
|
||||
|
||||
| | | Input Setup | Notes |
|
||||
|---|---|---|---|
|
||||
| | Icon | Input Setup | Notes | Issues |
|
||||
|---|---|---|---|---|
|
||||
| ✅ | 🖱⌨️ | [Mouse](https://en.wikipedia.org/wiki/Computer_mouse) + [keyboard](https://en.wikipedia.org/wiki/Computer_keyboard) | iD's original input paradigm. Any mouse-like device such as a [trackpad](https://en.wikipedia.org/wiki/Touchpad), [trackball](https://en.wikipedia.org/wiki/Trackball), or [pointing stick](https://en.wikipedia.org/wiki/Pointing_stick) is grouped into "mouse" for this table |
|
||||
| ❌ | ⌨️ | Keyboard only | Not all elements can necessarily be keyed to. Key traps may exists. Geometry editing isn't possible |
|
||||
| ❌ | ⌨️ | Keyboard only | Not all elements can necessarily be keyed to. Key traps may exists. Geometry editing isn't possible | [#7770](https://github.com/openstreetmap/iD/issues/7770) |
|
||||
| 🟠 | 🖱 | Mouse only | The primary [mouse button](https://en.wikipedia.org/wiki/Mouse_button) (e.g. left click) alone is sufficient. Multiselection and disabling of node-snapping aren't possible |
|
||||
| 🟠 | 🖐 | [Multi-touch](https://en.wikipedia.org/wiki/Multi-touch) on a [touchscreen](https://en.wikipedia.org/wiki/Touchscreen) | Move and rotate aren't possible |
|
||||
| 🟠 | ✍️ | [Stylus](https://en.wikipedia.org/wiki/Stylus_(computing)) on a touchscreen | Move, rotate, and multiselection aren't possible |
|
||||
| 🟠 | 🖐 | [Multi-touch](https://en.wikipedia.org/wiki/Multi-touch) on a [touchscreen](https://en.wikipedia.org/wiki/Touchscreen) | Moving and rotating selections isn't possible | [#7599](https://github.com/openstreetmap/iD/issues/7599) |
|
||||
| 🟠 | ✍️ | [Stylus](https://en.wikipedia.org/wiki/Stylus_(computing)) on a touchscreen | Moving and rotating selections isn't possible, nor is selecting multiple features |
|
||||
| 🤷 | ✍️🔲 | Stylus on a [graphics tablet](https://en.wikipedia.org/wiki/Graphics_tablet) | |
|
||||
| 🤷 | 🎮 | [Gamepad](https://en.wikipedia.org/wiki/Gamepad) | |
|
||||
| 🤷 | 🗣 | [Voice](https://en.wikipedia.org/wiki/Voice_user_interface) | Tools like [Voice Control on macOS](https://support.apple.com/en-us/HT210539) and [Windows Speech Recognition](https://en.wikipedia.org/wiki/Windows_Speech_Recognition) allow navigating webpages with voice commands to some degree |
|
||||
| 🤷 | 🔘 | [Switch](https://en.wikipedia.org/wiki/Switch_access) | Tools like [Switch Control on macOS](https://support.apple.com/en-us/HT202865) can theoretically replicate mouse and keyboard interactions in most apps |
|
||||
|
||||
### Devices
|
||||
<br/>
|
||||
|
||||
This table details iD's support for specific classes of input devices.
|
||||
## 📟 System Compatibility
|
||||
|
||||
"Full support" for a device means that iD reasonably handles its entire range of input on supported platforms. But unlike the "setups" table above, a given device is not necessarily expected to perform all of iD's functions.
|
||||
iD is largely platform-independent, meaning it should work on any system that runs a modern web browser. However, certain hardware and software components can affect iD's usability and functionality.
|
||||
|
||||
It's impractical to ensure every single input device works as expected, so the table only reflects the support status to the best of our knowledge.
|
||||
### Display Support
|
||||
|
||||
| | Input Device | Notes | Issues |
|
||||
|---|---|---|---|
|
||||
| ✅ | Single-button mouse | E.g. [Chester Mouse](https://duckduckgo.com/?q=chester+one+button+mouse&iar=images&iax=images&ia=images). Primary click (e.g. left-click) can be used for all pointer interactions. A long-click on map features opens the edit menu |
|
||||
| ✅ | Multi-button mouse | Secondary click (e.g. right-click) can be used on map features to open the edit menu. Middle click, etc., are not needed by iD but are passed through to the browser |
|
||||
| ✅ | Multi-touch mouse | E.g. [Magic Mouse](https://en.wikipedia.org/wiki/Magic_Mouse). 2D scrolling in the map is treated as panning, not zooming |
|
||||
| 🟠 | Vertical [scroll wheel](https://en.wikipedia.org/wiki/Scroll_wheel) | Should zoom the map in and out | [#5550](https://github.com/openstreetmap/iD/issues/5550) |
|
||||
| ❌ | Horizontal scroll wheel | Currently does nothing in the map | [#7134](https://github.com/openstreetmap/iD/issues/7134) |
|
||||
| 🤷 | Scroll ball | E.g. in [Apple Mighty Mouse](https://en.wikipedia.org/wiki/Apple_Mighty_Mouse) |
|
||||
| 🟩 | Trackball | |
|
||||
| 🟩 | Trackpad | |
|
||||
| ✅ | Multi-touch trackpad | E.g. [Magic Trackpad](https://en.wikipedia.org/wiki/Magic_Trackpad). Pinch-to-zoom and scroll-to-pan are supported in the map |
|
||||
| 🟩 | Pointing stick | |
|
||||
| ✅ | Keyboard | |
|
||||
| | Display | Notes |
|
||||
|---|---|---|
|
||||
| ❌ | No display | Non-graphical devices and "[headless](https://en.wikipedia.org/wiki/Headless_software)" use cases aren't supported. See also the [vision accessibility](#-vision-accessibility) section |
|
||||
| 🟠 | Small display | iD is not optimized for smartphone-sized screens or smaller, but some editing is usually possible |
|
||||
| ✅ | Large display | The map expands to fill the entire browser window |
|
||||
| 🟠 | Low pixel density display | Some icons are not legible on low-res displays |
|
||||
| ✅ | High [pixel density](https://en.wikipedia.org/wiki/Pixel_density) display | iD's vector graphics scale well to high-resolution screens (e.g. [Retina](https://en.wikipedia.org/wiki/Retina_display)) |
|
||||
| ✅ | Multiple displays | iD responds accordingly when its browser window is moved between different types of external screens |
|
||||
|
||||
## Language Support
|
||||
### Network Support
|
||||
|
||||
| | Connection | Notes |
|
||||
|---|---|---|
|
||||
| ❌ | No connection | iD isn't built for offline use out-of-the-box |
|
||||
| 🟠 | Slow connection | iD downloads a lot of data all throughout use, so slow connections can significantly slow down mapping |
|
||||
| ✅ | Intermittent connection | Downloaded data can be edited during temporary connection losses. A banner message is displayed. Reconnection is attempted automatically and a "Retry" button is also provided |
|
||||
| ✅ | [Mobile phone connection](https://en.wikipedia.org/wiki/Cellular_network) | A suitably fast, reliable phone network can be used for mapping, with the risk of iD gobbling up data allowances |
|
||||
| 🤷 | [Tor](https://en.wikipedia.org/wiki/Tor_%28anonymity_network%29) connection | |
|
||||
|
||||
<br/>
|
||||
|
||||
## 📖 Language Support
|
||||
|
||||
English is the language of tags and relation roles in the OpenStreetMap database.
|
||||
It's also the source language of iD's interface, meaning English is the only language
|
||||
@@ -112,21 +160,24 @@ platform. Some languages have region-specific variants, such as Brazilian Portug
|
||||
Translators are typically volunteers. See the [translation guide](https://github.com/openstreetmap/iD/blob/develop/CONTRIBUTING.md#translating)
|
||||
for more info.
|
||||
|
||||
| | Localization Feature | Notes |
|
||||
| | Multilingual Feature | Notes |
|
||||
|---|---|---|
|
||||
| ✅ | Browser language preference | iD tries to use the language set in the browser |
|
||||
| ❌ | Base language fallback | E.g. if `pt_BR` is incomplete, `pt` should be tried before `en` |
|
||||
| ❌ | Custom fallback language | If the preferred language is incomplete, a user-specified one should be tried before `en` (e.g. `kk` → `ru`) |
|
||||
| ❌ | [`lang` HTML attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/lang) | Helps with text-to-speech, text formatting, and auto-transliteration, particularly when iD mixes strings from different languages |
|
||||
| ✅ | Locale URL parameters | `locale` and `rtl` can be used to manually set iD's locale preferences. See the [API](API.md#url-parameters) |
|
||||
| 🟩 | Right-to-left layouts | Used for languages like Hebrew and Arabic |
|
||||
| ❌ | Language selection in UI | The mapper should be able to view and change iD's language in the interface at any time. Useful for public computers with fixed browser languages |
|
||||
| 🟩 | Right-to-left layouts | The [`dir` HTML attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir) is properly set for languages like Hebrew and Arabic |
|
||||
| 🟠 | Label icons | Icons should accompany text labels to illustrate the meaning of untranslated terms |
|
||||
|
||||
### Translatability
|
||||
|
||||
The following table details which interface elements can adapt to the mapper's
|
||||
This table details which interface elements can adapt to the mapper's
|
||||
language preferences. This doesn't account for whether they've actually been
|
||||
translated to one or more languages.
|
||||
|
||||
| | Interface Element | Notes | Issues |
|
||||
| | Interface Element | Notes | Issues |
|
||||
|---|---|---|---|
|
||||
| ✅ | Labels and descriptions | | |
|
||||
| ✅ | Help docs and walkthrough | | |
|
||||
@@ -150,6 +201,28 @@ listed here. Visit the [Transifex project page](https://www.transifex.com/openst
|
||||
to see the latest numbers. Typically a few languages (German, Spanish, Japanese…)
|
||||
are kept close to 100% coverage, while most languages have less than 50% coverage.
|
||||
|
||||
<br/>
|
||||
|
||||
## 👁 Vision Accessibility
|
||||
|
||||
| | Vision-Access Feature | Notes | Issues |
|
||||
|---|---|---|---|
|
||||
| 🤷 | [Screen reader support](https://en.wikipedia.org/wiki/Screen_reader) | | |
|
||||
| 🟠 | [Browser zoom](https://support.mozilla.org/en-US/kb/accessibility-features-firefox-make-firefox-and-we#w_page-zoom) | Scrolling-to-pan the map may react oddly on some browsers | |
|
||||
| 🟠 | [Text-only browser zoom](https://support.mozilla.org/en-US/kb/accessibility-features-firefox-make-firefox-and-we#w_text-zoom) | Enlarged text can overflow containers that have fixed dimensions | |
|
||||
| 🟠 | [Don't rely on color alone](https://www.wuhcag.com/use-of-colour/) | Some classes of map data are indistinguishable except for their colors | |
|
||||
| 🤷 | [High-contrast text colors](https://www.wuhcag.com/contrast-enhanced/) | | |
|
||||
| ❌ | Dark mode | Many people find light-on-dark UIs easier to read under certain conditions | |
|
||||
| ❌ | Audio feedback | This would need to be easy to disable or even disabled by default | [#5821](https://github.com/openstreetmap/iD/issues/5821) |
|
||||
|
||||
<br/>
|
||||
|
||||
## 👂 Hearing Accessibility
|
||||
|
||||
iD itself currently has no audio, so hearing difficulties alone are not expected to impact usability.
|
||||
|
||||
<br/>
|
||||
|
||||
---
|
||||
|
||||
_Further sections coming soon…_
|
||||
|
||||
+31
-27
@@ -16,7 +16,7 @@
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
|
||||
font: normal 12px/1.6667 "-apple-system", BlinkMacSystemFont,
|
||||
font: normal 12px/1.6667 ui-sans-serif, "-apple-system", BlinkMacSystemFont,
|
||||
"Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell",
|
||||
"Fira Sans", "Droid Sans", "Helvetica Neue", "Arial",
|
||||
sans-serif;
|
||||
@@ -147,8 +147,8 @@ kbd {
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: monospace, monospace;
|
||||
background: #eee;
|
||||
font-family: ui-monospace, monospace, monospace;
|
||||
background: rgba(174, 174, 174, 0.25);
|
||||
padding: 1px 2px;
|
||||
}
|
||||
|
||||
@@ -516,6 +516,14 @@ button[disabled].action {
|
||||
.ideditor[dir='rtl'] .top-toolbar .toolbar-item:last-child .item-content {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.ideditor[dir='ltr'] .top-toolbar .toolbar-item:last-child .item-label,
|
||||
.ideditor[dir='rtl'] .top-toolbar .toolbar-item:first-child .item-label {
|
||||
padding-right: 5px;
|
||||
}
|
||||
.ideditor[dir='ltr'] .top-toolbar .toolbar-item:first-child .item-label,
|
||||
.ideditor[dir='rtl'] .top-toolbar .toolbar-item:last-child .item-label {
|
||||
padding-left: 5px;
|
||||
}
|
||||
.top-toolbar .toolbar-item .item-label {
|
||||
text-align: center;
|
||||
font-size: 11px;
|
||||
@@ -632,15 +640,17 @@ button.add-note svg.icon {
|
||||
border-bottom: 1px solid #ccc;
|
||||
height: 60px;
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.header h3 {
|
||||
text-align: center;
|
||||
margin-bottom: 0;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
padding: 20px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.header button,
|
||||
@@ -657,20 +667,14 @@ button.add-note svg.icon {
|
||||
}
|
||||
|
||||
.field-help-title button.close,
|
||||
.sidebar-component .header button.data-editor-close,
|
||||
.sidebar-component .header button.note-editor-close,
|
||||
.sidebar-component .header button.qa-editor-close,
|
||||
.entity-editor-pane .header button.preset-close,
|
||||
.sidebar .header button.close,
|
||||
.preset-list-pane .header button.preset-choose {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
.ideditor[dir='rtl'] .field-help-title button.close,
|
||||
.ideditor[dir='rtl'] .sidebar-component .header button.data-editor-close,
|
||||
.ideditor[dir='rtl'] .sidebar-component .header button.note-editor-close,
|
||||
.ideditor[dir='rtl'] .sidebar-component .header button.qa-editor-close,
|
||||
.ideditor[dir='rtl'] .entity-editor-pane .header button.preset-close,
|
||||
.ideditor[dir='rtl'] .sidebar .header button.close,
|
||||
.ideditor[dir='rtl'] .preset-list-pane .header button.preset-choose {
|
||||
left: 0;
|
||||
right: auto;
|
||||
@@ -728,6 +732,10 @@ button.add-note svg.icon {
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.header-block {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.header-block-outer {
|
||||
width: 20%;
|
||||
}
|
||||
@@ -735,6 +743,7 @@ button.add-note svg.icon {
|
||||
.header-block-close {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
/* Hide/Toggle collapsable sections (aka Disclosure)
|
||||
@@ -1382,12 +1391,17 @@ a.hide-toggle {
|
||||
overflow: hidden;
|
||||
}
|
||||
.field-label .label-text {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
flex: 1 1 auto;
|
||||
padding: 5px 0 5px 10px;
|
||||
}
|
||||
.ideditor[dir='rtl'] .field-label .label-text {
|
||||
padding: 5px 10px 5px 0;
|
||||
}
|
||||
.field-label .label-text span {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.label-text .label-textannotation svg.icon {
|
||||
margin: 0 8px;
|
||||
@@ -2808,14 +2822,6 @@ input.key-trap {
|
||||
.qa-details-subsection:empty {
|
||||
display: none;
|
||||
}
|
||||
.qa-details-container code {
|
||||
padding: .2em .4em;
|
||||
margin: 0;
|
||||
font-size: 85%;
|
||||
font-family: monospace;
|
||||
background-color: rgba(27,31,35,.05);
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.note-save .new-comment-input,
|
||||
.qa-save .new-comment-input {
|
||||
@@ -4664,16 +4670,12 @@ img.tile-debug {
|
||||
padding: 20px;
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
.modal-section p:not(:last-of-type),
|
||||
.modal-section ul {
|
||||
.modal-section p:not(:last-of-type) {
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
.modal-section h4 {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
.modal-section.header h3 {
|
||||
padding: 0;
|
||||
}
|
||||
.modal-section.buttons {
|
||||
text-align: center;
|
||||
}
|
||||
@@ -4693,7 +4695,6 @@ img.tile-debug {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-around;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.save-section .buttons .action,
|
||||
@@ -4958,6 +4959,9 @@ svg.mouseclick use.right {
|
||||
.settings-custom-background .instructions-template p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.settings-custom-background .instructions-template ul {
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
.settings-custom-background .instructions-template ul li {
|
||||
list-style-type: disc;
|
||||
list-style-position: inside;
|
||||
|
||||
@@ -1221,7 +1221,6 @@ en:
|
||||
mapillary_map_features:
|
||||
title: "Map Features"
|
||||
tooltip: "Map features from Mapillary"
|
||||
request_data: "Request Data"
|
||||
construction:
|
||||
flat:
|
||||
crosswalk_plain: plain crosswalk
|
||||
|
||||
@@ -1390,6 +1390,22 @@
|
||||
"old": {"toilets:disposal": "pit_latrine"},
|
||||
"replace": {"toilets:disposal": "pitlatrine"}
|
||||
},
|
||||
{
|
||||
"old": {"toilets:type": "flush"},
|
||||
"replace": {"toilets:disposal": "flush"}
|
||||
},
|
||||
{
|
||||
"old": {"toilets:type": "pit"},
|
||||
"replace": {"toilets:disposal": "pitlatrine"}
|
||||
},
|
||||
{
|
||||
"old": {"toilets:type": "pitlatrine"},
|
||||
"replace": {"toilets:disposal": "pitlatrine"}
|
||||
},
|
||||
{
|
||||
"old": {"toilets:type": "pit latrine"},
|
||||
"replace": {"toilets:disposal": "pitlatrine"}
|
||||
},
|
||||
{
|
||||
"old": {"tourism": "bed_and_breakfast"},
|
||||
"replace": {"tourism": "guest_house", "guest_house": "bed_and_breakfast"}
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
"amenity/planetarium": {"icon": "maki-globe", "fields": ["name", "operator", "address", "building_area", "opening_hours", "opening_hours/covid19"], "moreFields": ["air_conditioning", "charge_fee", "email", "fax", "fee", "gnis/feature_id", "payment_multi_fee", "phone", "website", "wheelchair"], "geometry": ["point", "area"], "terms": ["museum", "astronomy", "observatory"], "tags": {"amenity": "planetarium"}, "name": "Planetarium"},
|
||||
"amenity/police": {"icon": "temaki-police_officer", "fields": ["name", "operator", "address", "building_area", "opening_hours", "opening_hours/covid19"], "moreFields": ["email", "fax", "gnis/feature_id", "level", "phone", "polling_station", "website", "wheelchair"], "geometry": ["point", "area"], "terms": ["badge", "constable", "constabulary", "cop", "detective", "fed", "law", "enforcement", "officer", "patrol"], "tags": {"amenity": "police"}, "name": "Police"},
|
||||
"amenity/polling_station": {"icon": "fas-vote-yea", "fields": ["name", "ref", "operator", "address", "opening_hours", "opening_hours/covid19", "building_area"], "moreFields": ["air_conditioning", "email", "fax", "gnis/feature_id", "internet_access", "internet_access/fee", "internet_access/ssid", "level", "phone", "website", "wheelchair"], "geometry": ["point", "area"], "terms": ["ballot box", "ballot drop", "democracy", "elections", "polling place", "vote", "voting booth", "voting machine"], "tags": {"amenity": "polling_station"}, "addTags": {"amenity": "polling_station", "polling_station": "yes"}, "name": "Permanent Polling Place"},
|
||||
"amenity/post_box": {"icon": "temaki-post_box", "fields": ["operator", "collection_times", "drive_through", "ref"], "moreFields": ["access_simple", "brand", "covered", "gnis/feature_id", "height", "indoor", "level", "manufacturer", "wheelchair"], "geometry": ["point", "vertex"], "tags": {"amenity": "post_box"}, "terms": ["drop box", "dropbox", "letter drop", "mail box", "mail collection box", "mail drop", "mail dropoff", "mailbox", "package drop", "pillar box", "pillarbox", "post box", "postal box", "postbox"], "name": "Mail Drop Box"},
|
||||
"amenity/post_box": {"icon": "temaki-post_box", "fields": ["operator", "collection_times", "drive_through", "ref"], "moreFields": ["access_simple", "brand", "colour", "covered", "gnis/feature_id", "height", "indoor", "level", "manufacturer", "material", "support", "wheelchair"], "geometry": ["point", "vertex"], "tags": {"amenity": "post_box"}, "terms": ["drop box", "dropbox", "letter drop", "mail box", "mail collection box", "mail drop", "mail dropoff", "mailbox", "package drop", "pillar box", "pillarbox", "post box", "postal box", "postbox"], "name": "Mail Drop Box"},
|
||||
"amenity/post_depot": {"icon": "fas-mail-bulk", "fields": ["name", "operator", "address", "building_area", "phone"], "moreFields": ["email", "fax", "gnis/feature_id", "opening_hours", "opening_hours/covid19", "website", "wheelchair"], "geometry": ["point", "area"], "terms": ["mail processing and distribution center", "post depot"], "tags": {"amenity": "post_depot"}, "name": "Post Sorting Office"},
|
||||
"amenity/post_office": {"icon": "maki-post", "fields": ["name", "operator", "address", "building_area", "opening_hours", "opening_hours/covid19"], "moreFields": ["brand", "email", "fax", "gnis/feature_id", "internet_access", "internet_access/fee", "internet_access/ssid", "level", "payment_multi", "phone", "polling_station", "website", "wheelchair"], "geometry": ["point", "area"], "terms": ["letter", "mail"], "tags": {"amenity": "post_office"}, "name": "Post Office"},
|
||||
"amenity/prep_school": {"icon": "temaki-school", "fields": ["name", "operator", "address", "building_area", "opening_hours", "opening_hours/covid19"], "moreFields": ["email", "fax", "gnis/feature_id", "level", "payment_multi", "phone", "website", "wheelchair"], "geometry": ["point", "area"], "terms": ["academic", "ACT", "SAT", "homework", "math", "reading", "test prep", "tutoring", "writing"], "tags": {"amenity": "prep_school"}, "name": "Test Prep / Tutoring School"},
|
||||
|
||||
@@ -9,12 +9,15 @@
|
||||
"moreFields": [
|
||||
"access_simple",
|
||||
"brand",
|
||||
"colour",
|
||||
"covered",
|
||||
"gnis/feature_id",
|
||||
"height",
|
||||
"indoor",
|
||||
"level",
|
||||
"manufacturer",
|
||||
"material",
|
||||
"support",
|
||||
"wheelchair"
|
||||
],
|
||||
"geometry": [
|
||||
|
||||
@@ -2314,6 +2314,10 @@
|
||||
{"key": "TODO", "description": "🄳 ➜ fixme=*"},
|
||||
{"key": "toilets:disposal", "value": "longdrop", "description": "🄳 ➜ toilets:disposal=pitlatrine"},
|
||||
{"key": "toilets:disposal", "value": "pit_latrine", "description": "🄳 ➜ toilets:disposal=pitlatrine"},
|
||||
{"key": "toilets:type", "value": "flush", "description": "🄳 ➜ toilets:disposal=flush"},
|
||||
{"key": "toilets:type", "value": "pit", "description": "🄳 ➜ toilets:disposal=pitlatrine"},
|
||||
{"key": "toilets:type", "value": "pitlatrine", "description": "🄳 ➜ toilets:disposal=pitlatrine"},
|
||||
{"key": "toilets:type", "value": "pit latrine", "description": "🄳 ➜ toilets:disposal=pitlatrine"},
|
||||
{"key": "tourism", "value": "bed_and_breakfast", "description": "🄳 ➜ tourism=guest_house + guest_house=bed_and_breakfast"},
|
||||
{"key": "tower:type", "value": "power", "description": "🄳 ➜ power=tower"},
|
||||
{"key": "tower:type", "value": "anchor", "description": "🄳 ➜ line_attachment=anchor"},
|
||||
|
||||
Vendored
-1
@@ -1540,7 +1540,6 @@
|
||||
"mapillary_map_features": {
|
||||
"title": "Map Features",
|
||||
"tooltip": "Map features from Mapillary",
|
||||
"request_data": "Request Data",
|
||||
"construction": {
|
||||
"flat": {
|
||||
"crosswalk_plain": "plain crosswalk"
|
||||
|
||||
@@ -78,7 +78,7 @@ export function behaviorHover(context) {
|
||||
.on(_pointerPrefix + 'down.hover', pointerover);
|
||||
|
||||
d3_select(window)
|
||||
.on(_pointerPrefix + 'up.hover', pointerout, true)
|
||||
.on(_pointerPrefix + 'up.hover pointercancel.hover', pointerout, true)
|
||||
.on('keydown.hover', keydown)
|
||||
.on('keyup.hover', keyup);
|
||||
|
||||
@@ -208,7 +208,7 @@ export function behaviorHover(context) {
|
||||
.on(_pointerPrefix + 'down.hover', null);
|
||||
|
||||
d3_select(window)
|
||||
.on(_pointerPrefix + 'up.hover', null, true)
|
||||
.on(_pointerPrefix + 'up.hover pointercancel.hover', null, true)
|
||||
.on('keydown.hover', null)
|
||||
.on('keyup.hover', null);
|
||||
};
|
||||
|
||||
@@ -487,6 +487,8 @@ export function modeSelect(context, selectedIDs) {
|
||||
|
||||
mode.exit = function() {
|
||||
|
||||
_newFeature = false;
|
||||
|
||||
_operations.forEach(function(operation) {
|
||||
if (operation.behavior) {
|
||||
context.uninstall(operation.behavior);
|
||||
|
||||
@@ -14,7 +14,6 @@ var viewercss = 'mapillary-js/mapillary.min.css';
|
||||
var viewerjs = 'mapillary-js/mapillary.min.js';
|
||||
var clientId = 'NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzo1ZWYyMmYwNjdmNDdlNmVi';
|
||||
var mapFeatureConfig = {
|
||||
organizationKey: 'FI3NAFfzQQgdF081TRdgTy',
|
||||
values: [
|
||||
'construction--flat--crosswalk-plain',
|
||||
'marking--discrete--crosswalk-zebra',
|
||||
@@ -372,8 +371,8 @@ export default {
|
||||
loadMapFeatures: function(projection) {
|
||||
// if we are looking at signs, we'll actually need to fetch images too
|
||||
loadTiles('images', apibase + 'images?sort_by=key', projection);
|
||||
loadTiles('points', apibase + 'map_features?layers=points&min_nbr_image_detections=2&sort_by=key&shapes_by_organization_keys=' + mapFeatureConfig.organizationKey + '&' + 'values=' + mapFeatureConfig.values + '&', projection);
|
||||
loadTiles('image_detections', apibase + 'image_detections?layers=points&sort_by=key&shapes_by_organization_keys=' + mapFeatureConfig.organizationKey + '&' + 'values=' + mapFeatureConfig.values + '&', projection);
|
||||
loadTiles('points', apibase + 'map_features?layers=points&min_nbr_image_detections=2&sort_by=key&values=' + mapFeatureConfig.values + '&', projection);
|
||||
loadTiles('image_detections', apibase + 'image_detections?layers=points&sort_by=key&values=' + mapFeatureConfig.values + '&', projection);
|
||||
},
|
||||
|
||||
|
||||
|
||||
@@ -469,26 +469,6 @@ export default {
|
||||
options.scenes[sceneID] = _sceneOptions;
|
||||
|
||||
_pannellumViewer = window.pannellum.viewer('ideditor-viewer-streetside', options);
|
||||
|
||||
var pointerPrefix = 'PointerEvent' in window ? 'pointer' : 'mouse';
|
||||
|
||||
_pannellumViewer
|
||||
.on(pointerPrefix + 'down', () => {
|
||||
d3_select(window)
|
||||
.on(pointerPrefix + 'move.pannellum', () => { dispatch.call('viewerChanged'); });
|
||||
})
|
||||
.on(pointerPrefix + 'up', () => {
|
||||
d3_select(window)
|
||||
.on(pointerPrefix + 'move.pannellum', null);
|
||||
|
||||
// continue dispatching events for a few seconds, in case viewer has inertia.
|
||||
let t = d3_timer(elapsed => {
|
||||
dispatch.call('viewerChanged');
|
||||
if (elapsed > 2000) {
|
||||
t.stop();
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
@@ -498,6 +478,8 @@ export default {
|
||||
loadViewer: function(context) {
|
||||
let that = this;
|
||||
|
||||
let pointerPrefix = 'PointerEvent' in window ? 'pointer' : 'mouse';
|
||||
|
||||
// create ms-wrapper, a photo wrapper class
|
||||
let wrap = context.container().select('.photoviewer').selectAll('.ms-wrapper')
|
||||
.data([0]);
|
||||
@@ -513,6 +495,24 @@ export default {
|
||||
wrapEnter
|
||||
.append('div')
|
||||
.attr('id', 'ideditor-viewer-streetside')
|
||||
.on(pointerPrefix + 'down.streetside', () => {
|
||||
d3_select(window)
|
||||
.on(pointerPrefix + 'move.streetside', () => {
|
||||
dispatch.call('viewerChanged');
|
||||
}, true);
|
||||
})
|
||||
.on(pointerPrefix + 'up.streetside pointercancel.streetside', () => {
|
||||
d3_select(window)
|
||||
.on(pointerPrefix + 'move.streetside', null);
|
||||
|
||||
// continue dispatching events for a few seconds, in case viewer has inertia.
|
||||
let t = d3_timer(elapsed => {
|
||||
dispatch.call('viewerChanged');
|
||||
if (elapsed > 2000) {
|
||||
t.stop();
|
||||
}
|
||||
});
|
||||
})
|
||||
.append('div')
|
||||
.attr('class', 'photo-attribution fillD');
|
||||
|
||||
|
||||
+5
-2
@@ -500,10 +500,13 @@ export function svgData(projection, context, dispatch) {
|
||||
var map = context.map();
|
||||
var viewport = map.trimmedExtent().polygon();
|
||||
var coords = features.reduce(function(coords, feature) {
|
||||
var c = feature.geometry.coordinates;
|
||||
var geom = feature.geometry;
|
||||
if (!geom) return coords;
|
||||
|
||||
var c = geom.coordinates;
|
||||
|
||||
/* eslint-disable no-fallthrough */
|
||||
switch (feature.geometry.type) {
|
||||
switch (geom.type) {
|
||||
case 'Point':
|
||||
c = [c];
|
||||
case 'MultiPoint':
|
||||
|
||||
@@ -30,8 +30,8 @@ export function svgStreetside(projection, context, dispatch) {
|
||||
if (services.streetside && !_streetside) {
|
||||
_streetside = services.streetside;
|
||||
_streetside.event
|
||||
.on('viewerChanged', viewerChanged)
|
||||
.on('loadedBubbles', throttledRedraw);
|
||||
.on('viewerChanged.svgStreetside', viewerChanged)
|
||||
.on('loadedBubbles.svgStreetside', throttledRedraw);
|
||||
} else if (!services.streetside && _streetside) {
|
||||
_streetside = null;
|
||||
}
|
||||
|
||||
@@ -270,7 +270,7 @@ export function uiCommit(context) {
|
||||
|
||||
saveSection = saveSection.enter()
|
||||
.append('div')
|
||||
.attr('class','modal-section save-section fillL cf')
|
||||
.attr('class','modal-section save-section fillL')
|
||||
.merge(saveSection);
|
||||
|
||||
var prose = saveSection.selectAll('.commit-info')
|
||||
@@ -355,7 +355,7 @@ export function uiCommit(context) {
|
||||
// enter
|
||||
var buttonEnter = buttonSection.enter()
|
||||
.append('div')
|
||||
.attr('class', 'buttons fillL cf');
|
||||
.attr('class', 'buttons fillL');
|
||||
|
||||
buttonEnter
|
||||
.append('button')
|
||||
|
||||
@@ -25,7 +25,7 @@ export function uiDataEditor(context) {
|
||||
|
||||
headerEnter
|
||||
.append('button')
|
||||
.attr('class', 'fr data-editor-close')
|
||||
.attr('class', 'close')
|
||||
.on('click', function() {
|
||||
context.enter(modeBrowse(context));
|
||||
})
|
||||
|
||||
@@ -45,12 +45,12 @@ export function uiEntityEditor(context) {
|
||||
|
||||
headerEnter
|
||||
.append('button')
|
||||
.attr('class', 'fl preset-reset preset-choose')
|
||||
.attr('class', 'preset-reset preset-choose')
|
||||
.call(svgIcon((localizer.textDirection() === 'rtl') ? '#iD-icon-forward' : '#iD-icon-backward'));
|
||||
|
||||
headerEnter
|
||||
.append('button')
|
||||
.attr('class', 'fr preset-close')
|
||||
.attr('class', 'close')
|
||||
.on('click', function() { context.enter(modeBrowse(context)); })
|
||||
.call(svgIcon(_modified ? '#iD-icon-apply' : '#iD-icon-close'));
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ export function uiImproveOsmEditor(context) {
|
||||
|
||||
headerEnter
|
||||
.append('button')
|
||||
.attr('class', 'fr qa-editor-close')
|
||||
.attr('class', 'close')
|
||||
.on('click', () => context.enter(modeBrowse(context)))
|
||||
.call(svgIcon('#iD-icon-close'));
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ export function uiInspector(context) {
|
||||
var _newFeature = false;
|
||||
|
||||
|
||||
function inspector(selection, newFeature) {
|
||||
function inspector(selection) {
|
||||
presetList
|
||||
.entityIDs(_entityIDs)
|
||||
.autofocus(_newFeature)
|
||||
@@ -25,6 +25,7 @@ export function uiInspector(context) {
|
||||
.on('cancel', function() {
|
||||
wrap.transition()
|
||||
.styleTween('right', function() { return d3_interpolate('-100%', '0%'); });
|
||||
editorPane.call(entityEditor);
|
||||
});
|
||||
|
||||
entityEditor
|
||||
@@ -66,7 +67,7 @@ export function uiInspector(context) {
|
||||
if (entity.hasNonGeometryTags()) return false;
|
||||
|
||||
// prompt to select preset if feature is new and untagged
|
||||
if (newFeature) return true;
|
||||
if (_newFeature) return true;
|
||||
|
||||
// all existing features except vertices should default to inspector
|
||||
if (entity.geometry(context.graph()) !== 'vertex') return false;
|
||||
|
||||
@@ -361,7 +361,7 @@ export function uiIntroNavigation(context, reveal) {
|
||||
function closeTownHall() {
|
||||
if (!isTownHallSelected()) return clickTownHall();
|
||||
|
||||
var selector = '.entity-editor-pane button.preset-close svg use';
|
||||
var selector = '.entity-editor-pane button.close svg use';
|
||||
var href = d3_select(selector).attr('href') || '#iD-icon-close';
|
||||
|
||||
reveal('.entity-editor-pane',
|
||||
@@ -374,7 +374,7 @@ export function uiIntroNavigation(context, reveal) {
|
||||
|
||||
context.history().on('change.intro', function() {
|
||||
// update the close icon in the tooltip if the user edits something.
|
||||
var selector = '.entity-editor-pane button.preset-close svg use';
|
||||
var selector = '.entity-editor-pane button.close svg use';
|
||||
var href = d3_select(selector).attr('href') || '#iD-icon-close';
|
||||
|
||||
reveal('.entity-editor-pane',
|
||||
@@ -497,7 +497,7 @@ export function uiIntroNavigation(context, reveal) {
|
||||
|
||||
|
||||
function editorStreet() {
|
||||
var selector = '.entity-editor-pane button.preset-close svg use';
|
||||
var selector = '.entity-editor-pane button.close svg use';
|
||||
var href = d3_select(selector).attr('href') || '#iD-icon-close';
|
||||
|
||||
reveal('.entity-editor-pane',
|
||||
@@ -514,7 +514,7 @@ export function uiIntroNavigation(context, reveal) {
|
||||
|
||||
context.history().on('change.intro', function() {
|
||||
// update the close icon in the tooltip if the user edits something.
|
||||
var selector = '.entity-editor-pane button.preset-close svg use';
|
||||
var selector = '.entity-editor-pane button.close svg use';
|
||||
var href = d3_select(selector).attr('href') || '#iD-icon-close';
|
||||
|
||||
reveal('.entity-editor-pane',
|
||||
|
||||
@@ -244,7 +244,7 @@ export function uiIntroPoint(context, reveal) {
|
||||
// reset pane, in case user happened to change it..
|
||||
context.container().select('.inspector-wrap .panewrap').style('right', '0%');
|
||||
|
||||
var selector = '.entity-editor-pane button.preset-close svg use';
|
||||
var selector = '.entity-editor-pane button.close svg use';
|
||||
var href = d3_select(selector).attr('href') || '#iD-icon-close';
|
||||
|
||||
context.on('exit.intro', function() {
|
||||
|
||||
@@ -29,7 +29,7 @@ export function uiKeepRightEditor(context) {
|
||||
|
||||
headerEnter
|
||||
.append('button')
|
||||
.attr('class', 'fr qa-editor-close')
|
||||
.attr('class', 'close')
|
||||
.on('click', () => context.enter(modeBrowse(context)))
|
||||
.call(svgIcon('#iD-icon-close'));
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ export function uiNoteEditor(context) {
|
||||
|
||||
headerEnter
|
||||
.append('button')
|
||||
.attr('class', 'fr note-editor-close')
|
||||
.attr('class', 'close')
|
||||
.on('click', function() {
|
||||
context.enter(modeBrowse(context));
|
||||
})
|
||||
|
||||
@@ -29,7 +29,7 @@ export function uiOsmoseEditor(context) {
|
||||
|
||||
headerEnter
|
||||
.append('button')
|
||||
.attr('class', 'fr qa-editor-close')
|
||||
.attr('class', 'close')
|
||||
.on('click', () => context.enter(modeBrowse(context)))
|
||||
.call(svgIcon('#iD-icon-close'));
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@ import {
|
||||
|
||||
import { t } from '../../core/localizer';
|
||||
import { uiTooltip } from '../tooltip';
|
||||
import { svgIcon } from '../../svg/icon';
|
||||
import { uiSection } from '../section';
|
||||
|
||||
export function uiSectionPhotoOverlays(context) {
|
||||
@@ -93,17 +92,6 @@ export function uiSectionPhotoOverlays(context) {
|
||||
return t(id.replace(/-/g, '_') + '.title');
|
||||
});
|
||||
|
||||
labelEnter
|
||||
.filter(function(d) { return d.id === 'mapillary-map-features'; })
|
||||
.append('a')
|
||||
.attr('class', 'request-data-link')
|
||||
.attr('target', '_blank')
|
||||
.attr('tabindex', -1)
|
||||
.call(svgIcon('#iD-icon-out-link', 'inline'))
|
||||
.attr('href', 'https://mapillary.github.io/mapillary_solutions/data-request')
|
||||
.append('span')
|
||||
.text(t('mapillary_map_features.request_data'));
|
||||
|
||||
|
||||
// Update
|
||||
li
|
||||
|
||||
@@ -238,7 +238,8 @@ export function uiSidebar(context) {
|
||||
if (!inspector.entityIDs() || !utilArrayIdentical(inspector.entityIDs(), [datum.id]) || inspector.state() !== 'hover') {
|
||||
inspector
|
||||
.state('hover')
|
||||
.entityIDs([datum.id]);
|
||||
.entityIDs([datum.id])
|
||||
.newFeature(false);
|
||||
|
||||
inspectorWrap
|
||||
.call(inspector);
|
||||
@@ -300,7 +301,7 @@ export function uiSidebar(context) {
|
||||
.newFeature(newFeature);
|
||||
|
||||
inspectorWrap
|
||||
.call(inspector, newFeature);
|
||||
.call(inspector);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
@@ -72,16 +72,16 @@ export function uiSuccess(context) {
|
||||
.append('div')
|
||||
.attr('class', 'header fillL');
|
||||
|
||||
header
|
||||
.append('button')
|
||||
.attr('class', 'fr')
|
||||
.on('click', () => dispatch.call('cancel'))
|
||||
.call(svgIcon('#iD-icon-close'));
|
||||
|
||||
header
|
||||
.append('h3')
|
||||
.text(t('success.just_edited'));
|
||||
|
||||
header
|
||||
.append('button')
|
||||
.attr('class', 'close')
|
||||
.on('click', () => dispatch.call('cancel'))
|
||||
.call(svgIcon('#iD-icon-close'));
|
||||
|
||||
let body = selection
|
||||
.append('div')
|
||||
.attr('class', 'body save-success fillL');
|
||||
|
||||
+1
-1
@@ -104,7 +104,7 @@
|
||||
"postcss": "^7.0.27",
|
||||
"postcss-selector-prepend": "^0.5.0",
|
||||
"request": "^2.88.0",
|
||||
"rollup": "~2.18.0",
|
||||
"rollup": "~2.21.0",
|
||||
"rollup-plugin-includepaths": "~0.2.3",
|
||||
"rollup-plugin-progress": "^1.1.1",
|
||||
"rollup-plugin-visualizer": "~4.0.4",
|
||||
|
||||
Reference in New Issue
Block a user