Merge pull request #1774 from umap-project/browser-tabs
feat: add browser tabs submenu
This commit is contained in:
commit
0f798d4cc6
6 changed files with 45 additions and 10 deletions
|
@ -580,20 +580,29 @@ i.info {
|
||||||
margin-top: -8px;
|
margin-top: -8px;
|
||||||
padding: 0 5px;
|
padding: 0 5px;
|
||||||
}
|
}
|
||||||
.pictogram-tabs {
|
.flat-tabs {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
padding-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
border-bottom: 1px solid #bebebe;
|
||||||
}
|
}
|
||||||
.pictogram-tabs button {
|
.flat-tabs button {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
color: #fff;
|
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
border-bottom: 1px solid transparent;
|
||||||
}
|
}
|
||||||
.pictogram-tabs .on {
|
.flat-tabs button:hover,
|
||||||
|
.flat-tabs .on {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
border-bottom: 1px solid #444;
|
||||||
|
}
|
||||||
|
.dark .flat-tabs button {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.dark .flat-tabs button:hover,
|
||||||
|
.dark .flat-tabs .on {
|
||||||
border-bottom: 1px solid #fff;
|
border-bottom: 1px solid #fff;
|
||||||
}
|
}
|
||||||
.umap-pictogram-category h6 {
|
.umap-pictogram-category h6 {
|
||||||
|
|
|
@ -44,7 +44,7 @@ export default class Browser {
|
||||||
U.Icon.setIconContrast(icon, colorBox, symbol, bgcolor)
|
U.Icon.setIconContrast(icon, colorBox, symbol, bgcolor)
|
||||||
}
|
}
|
||||||
const viewFeature = (e) => {
|
const viewFeature = (e) => {
|
||||||
feature.zoomTo({...e, callback: feature.view})
|
feature.zoomTo({ ...e, callback: feature.view })
|
||||||
}
|
}
|
||||||
DomEvent.on(zoom_to, 'click', viewFeature)
|
DomEvent.on(zoom_to, 'click', viewFeature)
|
||||||
DomEvent.on(title, 'click', viewFeature)
|
DomEvent.on(title, 'click', viewFeature)
|
||||||
|
@ -135,6 +135,7 @@ export default class Browser {
|
||||||
DomEvent.disableClickPropagation(container)
|
DomEvent.disableClickPropagation(container)
|
||||||
|
|
||||||
DomUtil.createTitle(container, translate('Browse data'), 'icon-layers')
|
DomUtil.createTitle(container, translate('Browse data'), 'icon-layers')
|
||||||
|
this.tabsMenu(container, 'browse')
|
||||||
const formContainer = DomUtil.create('div', '', container)
|
const formContainer = DomUtil.create('div', '', container)
|
||||||
this.dataContainer = DomUtil.create('div', '', container)
|
this.dataContainer = DomUtil.create('div', '', container)
|
||||||
|
|
||||||
|
@ -165,4 +166,18 @@ export default class Browser {
|
||||||
DomEvent.on(button, 'click', map.openBrowser, map)
|
DomEvent.on(button, 'click', map.openBrowser, map)
|
||||||
return button
|
return button
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tabsMenu(container, active) {
|
||||||
|
const tabs = L.DomUtil.create('div', 'flat-tabs', container)
|
||||||
|
const browse = L.DomUtil.add('button', 'flat tab-browse', tabs, L._('Data'))
|
||||||
|
DomEvent.on(browse, 'click', this.open, this)
|
||||||
|
if (this.map.options.facetKey) {
|
||||||
|
const facets = L.DomUtil.add('button', 'flat tab-facets', tabs, L._('Filters'))
|
||||||
|
DomEvent.on(facets, 'click', this.map.facets.open, this.map.facets)
|
||||||
|
}
|
||||||
|
const info = L.DomUtil.add('button', 'flat tab-info', tabs, L._('About'))
|
||||||
|
DomEvent.on(info, 'click', this.map.displayCaption, this.map)
|
||||||
|
let el = tabs.querySelector(`.tab-${active}`)
|
||||||
|
L.DomUtil.addClass(el, 'on')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,6 +69,7 @@ export default class Facets {
|
||||||
container,
|
container,
|
||||||
translate('Facet search')
|
translate('Facet search')
|
||||||
)
|
)
|
||||||
|
this.map.browser.tabsMenu(container, 'facets')
|
||||||
const defined = this.getDefined()
|
const defined = this.getDefined()
|
||||||
const names = Object.keys(defined)
|
const names = Object.keys(defined)
|
||||||
const facetProperties = this.compute(names, defined)
|
const facetProperties = this.compute(names, defined)
|
||||||
|
|
|
@ -668,6 +668,7 @@ const ControlsMixin = {
|
||||||
const container = L.DomUtil.create('div', 'umap-caption')
|
const container = L.DomUtil.create('div', 'umap-caption')
|
||||||
L.DomUtil.createTitle(container, this.options.name, 'icon-caption')
|
L.DomUtil.createTitle(container, this.options.name, 'icon-caption')
|
||||||
this.permissions.addOwnerLink('h5', container)
|
this.permissions.addOwnerLink('h5', container)
|
||||||
|
this.browser.tabsMenu(container, 'info')
|
||||||
if (this.options.description) {
|
if (this.options.description) {
|
||||||
const description = L.DomUtil.element({
|
const description = L.DomUtil.element({
|
||||||
tagName: 'div',
|
tagName: 'div',
|
||||||
|
@ -721,7 +722,6 @@ const ControlsMixin = {
|
||||||
} else {
|
} else {
|
||||||
L.DomUtil.add('p', '', credits, L._('No licence has been set'))
|
L.DomUtil.add('p', '', credits, L._('No licence has been set'))
|
||||||
}
|
}
|
||||||
L.DomUtil.create('hr', '', credits)
|
|
||||||
title = L.DomUtil.create('h5', '', credits)
|
title = L.DomUtil.create('h5', '', credits)
|
||||||
title.textContent = L._('Map background credits')
|
title.textContent = L._('Map background credits')
|
||||||
const tilelayerCredit = L.DomUtil.create('p', '', credits)
|
const tilelayerCredit = L.DomUtil.create('p', '', credits)
|
||||||
|
@ -735,7 +735,6 @@ const ControlsMixin = {
|
||||||
parent: tilelayerCredit,
|
parent: tilelayerCredit,
|
||||||
safeHTML: this.selected_tilelayer.getAttribution(),
|
safeHTML: this.selected_tilelayer.getAttribution(),
|
||||||
})
|
})
|
||||||
L.DomUtil.create('hr', '', credits)
|
|
||||||
const urls = {
|
const urls = {
|
||||||
leaflet: 'http://leafletjs.com',
|
leaflet: 'http://leafletjs.com',
|
||||||
django: 'https://www.djangoproject.com',
|
django: 'https://www.djangoproject.com',
|
||||||
|
|
|
@ -475,7 +475,7 @@ L.FormBuilder.IconUrl = L.FormBuilder.BlurInput.extend({
|
||||||
build: function () {
|
build: function () {
|
||||||
L.FormBuilder.BlurInput.prototype.build.call(this)
|
L.FormBuilder.BlurInput.prototype.build.call(this)
|
||||||
this.buttons = L.DomUtil.create('div', '', this.parentNode)
|
this.buttons = L.DomUtil.create('div', '', this.parentNode)
|
||||||
this.tabs = L.DomUtil.create('div', 'pictogram-tabs', this.parentNode)
|
this.tabs = L.DomUtil.create('div', 'flat-tabs', this.parentNode)
|
||||||
this.body = L.DomUtil.create('div', 'umap-pictogram-body', this.parentNode)
|
this.body = L.DomUtil.create('div', 'umap-pictogram-body', this.parentNode)
|
||||||
this.footer = L.DomUtil.create('div', '', this.parentNode)
|
this.footer = L.DomUtil.create('div', '', this.parentNode)
|
||||||
this.updatePreview()
|
this.updatePreview()
|
||||||
|
|
|
@ -158,6 +158,12 @@
|
||||||
margin-bottom: 5px!important;
|
margin-bottom: 5px!important;
|
||||||
padding: 0.5rem;
|
padding: 0.5rem;
|
||||||
}
|
}
|
||||||
|
.credits-container h5 {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
.credits-container p {
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
.attribution-toggle {
|
.attribution-toggle {
|
||||||
display: none;
|
display: none;
|
||||||
width: 24px;
|
width: 24px;
|
||||||
|
@ -979,7 +985,12 @@ a.umap-control-caption,
|
||||||
.datalayer-name {
|
.datalayer-name {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
.umap-caption h3 {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
.umap-caption .umap-map-owner {
|
||||||
|
padding-left: 31px;
|
||||||
|
}
|
||||||
|
|
||||||
/* ********************************* */
|
/* ********************************* */
|
||||||
/* Table Editor */
|
/* Table Editor */
|
||||||
|
|
Loading…
Reference in a new issue