Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Infowindow - layers list #1564

Merged
99 changes: 79 additions & 20 deletions scss/_infowindow.scss
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@

.sidebarcontainer {
display: flex;
flex-direction: column;
background-color: $white;
border-radius: 0.5em;
box-shadow: 0 0 8px #888;
Expand All @@ -10,12 +12,29 @@
top: 6em;
width: 320px;
z-index: 1;
overflow-x: hidden;
&.expandable_list {
cursor: move;
}
}

/**
* ============ Urval ==============
*/

.expandable_list {
.urvalcontainer {
padding: 0;
display: flex;
flex-direction: column;
max-height: 60em;
margin-right: 0.5em;
overflow-y: scroll;
overflow-x: hidden;
border-bottom: none;
}
}

.urvalcontainer {
border-bottom: 1px solid #d9d9d9;
cursor: move;
Expand All @@ -25,11 +44,35 @@
z-index: 10;
}

.expandable_list {
.urval-textnode-container {
font-weight: bold;
margin: 1em;
}
}

.urval-textnode-container {
font-size: 15px;
margin-bottom: 0.5em;
}

.expandable_list {
.urvalelement {
box-sizing: border-box;
width: 100%;
margin-right: 0;
padding: 0;
}

.urvalcontent {
box-sizing: content-box;

.sublist:last-child {
border-bottom: 1px solid #d9d9d9;
}
}
}

.urvalelement {
border-bottom: 3px solid $white;
cursor: pointer;
Expand All @@ -47,18 +90,11 @@

.closebutton-svg-container {
cursor: pointer;
height: 1.2em;
position: absolute;
right: 1em;
top: 1em;
width: 1.2em;
right: 0;
top: 0;
}

.closebutton-svg {
fill: rgb(77, 77, 77);
height: 100%;
width: 100%;
}

/**
* ============ List ==============
Expand All @@ -73,37 +109,37 @@
scroll-behavior: smooth;
}

.listelement {
display: flex;
}

.removelistelement-svg-container {
cursor: pointer;
display: inline-block;
height: 1em;
padding: 0.5em;
vertical-align: top;
width: 1em;
}

.removelistelement-svg {
fill: rgb(77, 77, 77);
height: 100%;
width: 100%;
height: 1em;
width: 1em;
}

.listelement-content-container {
border-bottom: 1px solid #d9d9d9;
cursor: pointer;
display: inline-block;
padding: 0.5em;
width: 85%;
display: flex;
margin: 0.5em;
flex: 1;
padding: 0 0.5em 0.5em;
margin-right: 1em;
}

.expandlistelement-svg {
fill: rgb(100, 100, 100);
height: 100%;
width: 100%;

&:hover {
fill: #09f;
}
}

.expandlistelement-svg-container {
Expand All @@ -128,6 +164,7 @@

.o-identify-content {
display: inline-block;
width: 100%;
}

.folded {
Expand Down Expand Up @@ -169,11 +206,24 @@
font-weight: normal;
}

.expandable_list {
.export-buttons-container {
padding: 0.5em 0;
margin: 0;
}
}

.export-buttons-container {
margin: 0.5em 0.2em;
margin-left: 1.8em;
}

.expandable_list {
.export-buttons-container {
padding: 0.5em 0;
}
}

.export-button {
background-color: $whitesmoke;
border: 1px solid #ccc;
Expand Down Expand Up @@ -233,6 +283,15 @@
top: 5em;
transform: translateX(-50%);
width: 280px;
.listelement-content-container {
display: inline-flex;
width: 80%;
}
&.expandable_list {
.urvalcontainer {
max-height: 20em;
}
}
}

.o-identify-content {
Expand Down
52 changes: 37 additions & 15 deletions src/infowindow.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { simpleExportHandler, layerSpecificExportHandler } from './infowindow_exporthandler';
import exportToFile from './utils/exporttofile';
import { dom, Button } from './ui';
import getSpinner from './utils/spinner';
import Icon from './ui/icon';

Expand All @@ -16,6 +17,7 @@ let exportOptions;
let activeSelectionGroup;
let selectionManager;
let viewer;
let infowindowOptions;

function createSvgElement(id, className) {
const svgContainer = document.createElement('div');
Expand Down Expand Up @@ -85,8 +87,27 @@ function makeElementDraggable(elm) {
}
}

function render(viewerId, title) {
function setInfowindowStyle() {
// Only change style for standard screen size (desktop).
const shouldSetWidth = document.querySelectorAll('div[class*="o-media-l"]').length === 0;
if (infowindowOptions.contentStyle && shouldSetWidth) {
mainContainer.style = dom.createStyle(infowindowOptions.contentStyle);
}
}

function createCloseButton() {
return Button({
cls: 'closebutton-svg-container small round small icon-smaller grey-lightest margin-top-small margin-right-small z-index-ontop-low ',
icon: '#ic_close_24px',
state: 'initial',
validStates: ['initial', 'hidden'],
ariaLabel: 'Stäng'
});
}

function render(viewerId) {
mainContainer = document.createElement('div');
setInfowindowStyle();
mainContainer.classList.add('sidebarcontainer');
mainContainer.id = 'sidebarcontainer';
urvalContainer = document.createElement('div');
Expand All @@ -95,20 +116,11 @@ function render(viewerId, title) {
urvalContainer.id = 'sidebarcontainer-draggable';
const urvalTextNodeContainer = document.createElement('div');
urvalTextNodeContainer.classList.add('urval-textnode-container');
const urvalTextNode = document.createTextNode(title || 'Träffar');
const urvalTextNode = document.createTextNode(infowindowOptions.title || 'Träffar');
urvalTextNodeContainer.appendChild(urvalTextNode);
urvalContainer.appendChild(urvalTextNodeContainer);
const closeButtonSvg = createSvgElement('ic_close_24px', 'closebutton-svg');
closeButtonSvg.addEventListener('click', () => {
const detail = {
name: 'multiselection',
active: false
};
viewer.dispatch('toggleClickInteraction', detail);
selectionManager.clearSelection();
hideInfowindow();
});
urvalContainer.appendChild(closeButtonSvg);
const closeButton = createCloseButton();
urvalContainer.appendChild(dom.html(closeButton.render()));
listContainer = document.createElement('div');
listContainer.classList.add('listcontainer');

Expand All @@ -123,6 +135,16 @@ function render(viewerId, title) {
parentElement.appendChild(mainContainer);
mainContainer.classList.add('hidden');

document.getElementById(closeButton.getId()).addEventListener('click', () => {
const detail = {
name: 'multiselection',
active: false
};
viewer.dispatch('toggleClickInteraction', detail);
selectionManager.clearSelection();
hideInfowindow();
});

// Make the DIV element draggagle:
makeElementDraggable(mainContainer);
}
Expand Down Expand Up @@ -625,14 +647,14 @@ function init(options) {
viewer = options.viewer;
selectionManager = options.viewer.getSelectionManager();

const infowindowOptions = options.infowindowOptions ? options.infowindowOptions : {};
infowindowOptions = options.infowindowOptions ? options.infowindowOptions : {};
exportOptions = infowindowOptions.export || {};
sublists = new Map();
subexports = new Map();
urvalElements = new Map();
expandableContents = new Map();

render(options.viewer.getId(), infowindowOptions.title);
render(options.viewer.getId());

return {
createListElement,
Expand Down
Loading