77 |
77 |
$('.popup-controls').hide()
|
78 |
78 |
}
|
79 |
79 |
|
80 |
|
const areSameCoord = (first, second) => {
|
|
80 |
const areCoordsIdentical = (first, second) => {
|
81 |
81 |
return first.lat === second.lat && first.lng === second.lng
|
82 |
82 |
}
|
83 |
83 |
|
... | ... | |
175 |
175 |
|
176 |
176 |
const genMultipleDatasetsPopUp = (sum, currentPage, countPages, datasetName) => {
|
177 |
177 |
const popupHeader = `<strong id="dataset-name">${datasetName}</strong>`
|
178 |
|
const popupData = `<div id="number-info"><span id="current-number">${sum}</span></div>`
|
|
178 |
const popupData = `<div id="place-intesity"><span id="current-number">${sum}</span></div>`
|
179 |
179 |
const { previousButton, nextButton, pagesList } = getPaginationButtonsInPopup(currentPage, countPages)
|
180 |
180 |
|
181 |
181 |
return `
|
... | ... | |
195 |
195 |
<strong>${datasetName}</strong>
|
196 |
196 |
<div id="place-name">${placeName}</div>`
|
197 |
197 |
const popupData = `
|
198 |
|
<div id="number-info">
|
|
198 |
<div id="place-intesity">
|
199 |
199 |
<span id="current-number">${currentCount}</span>
|
200 |
200 |
<span id="part-info">${(sum && sum !== Number(currentCount)) ? '/' + sum : ''}</span>
|
201 |
201 |
</div>`
|
... | ... | |
215 |
215 |
loadCheckboxDatasetNameData()
|
216 |
216 |
|
217 |
217 |
data.forEach((item, index) => {
|
218 |
|
Object.keys(item).forEach((datasetName) => {
|
|
218 |
Object.keys(item).forEach(datasetName => {
|
219 |
219 |
if (datasetName === $(checkbox).val()) {
|
220 |
220 |
delete data[index][datasetName]
|
221 |
221 |
}
|
... | ... | |
295 |
295 |
|
296 |
296 |
const getCountPagesInPopup = () => {
|
297 |
297 |
const infoKeys = Object.keys(info)
|
|
298 |
|
298 |
299 |
if (infoKeys.length === 1) {
|
299 |
300 |
// return number of records in one dataset (one dataset in area)
|
300 |
301 |
return info[infoKeys[0]].items.length
|
... | ... | |
303 |
304 |
return infoKeys.length
|
304 |
305 |
}
|
305 |
306 |
|
306 |
|
const getElFromObjectInfo = (position) => {
|
|
307 |
const getPopupDataOnPage = (pageInPopup) => {
|
307 |
308 |
const keys = Object.keys(info)
|
308 |
|
return info[keys[position]]
|
|
309 |
return info[keys[pageInPopup]]
|
309 |
310 |
}
|
310 |
311 |
|
311 |
|
const hasInfoMultipleDatasets = () => {
|
|
312 |
const areMultipleDatasetsInRadius = () => {
|
312 |
313 |
return Object.keys(info).length > 1
|
313 |
314 |
}
|
314 |
315 |
|
315 |
|
const setNewPopupDatasetName = (datasetName) => {
|
|
316 |
const setPopupDatasetClassName = (datasetName) => {
|
316 |
317 |
const popup = $('.leaflet-popup')
|
317 |
318 |
|
318 |
319 |
popup.removeClass(function (index, css) {
|
319 |
|
return (css.match (/(^|\s)popup-\S+/g) || []).join(' ');
|
|
320 |
return (css.match(/(^|\s)popup-\S+/g) || []).join(' ');
|
320 |
321 |
})
|
321 |
|
popup.addClass(`popup-${datasetName}`)
|
|
322 |
popup.addClass('popup-' + datasetName)
|
322 |
323 |
}
|
323 |
324 |
|
324 |
325 |
function showInfo (e) {
|
... | ... | |
341 |
342 |
lng: e.latlng.lng,
|
342 |
343 |
lat: e.latlng.lat
|
343 |
344 |
}
|
344 |
|
Object.keys(data[currentTime]).forEach((key) => {
|
|
345 |
|
|
346 |
Object.keys(data[currentTime]).forEach(key => {
|
345 |
347 |
const namedData = data[currentTime][key]
|
|
348 |
|
346 |
349 |
namedData.items.forEach(element => {
|
347 |
350 |
if (e.latlng.distanceTo(new L.LatLng(element.x, element.y)) < radius) {
|
348 |
351 |
lat += element.x
|
... | ... | |
369 |
372 |
acc[item.datasetName].number += Number(item.number)
|
370 |
373 |
return acc
|
371 |
374 |
}, {})
|
372 |
|
// There is one dataset
|
373 |
375 |
|
374 |
|
const numDatasets = Object.keys(datasetsInRadius).length
|
|
376 |
const countDatasets = Object.keys(datasetsInRadius).length
|
375 |
377 |
|
376 |
|
if (!numDatasets) {
|
|
378 |
if (!countDatasets) {
|
377 |
379 |
if (mymap._popup) {
|
378 |
380 |
$('#part-info').text('')
|
379 |
381 |
$('#current-number').html(0)
|
... | ... | |
383 |
385 |
return
|
384 |
386 |
}
|
385 |
387 |
|
386 |
|
if (numDatasets === 1) {
|
387 |
|
const infoDict = getElFromObjectInfo(0)
|
388 |
|
const info_ = infoDict.items
|
389 |
|
const { place, number } = info_[currentPageInPopup]
|
|
388 |
if (countDatasets === 1) {
|
|
389 |
const markersInRadius = getPopupDataOnPage(0)
|
|
390 |
const popupPagesData = markersInRadius.items
|
|
391 |
const { place, number } = popupPagesData[currentPageInPopup]
|
390 |
392 |
|
391 |
|
if (!globalPopup._popup || !areSameCoord(globalPopup.coord, eventCoord)) {
|
392 |
|
globalPopup._popup = prepareLayerPopUp(lat, lng, i, `popup-${infoDict.datasetName}`)
|
|
393 |
if (!globalPopup._popup || !areCoordsIdentical(globalPopup.coord, eventCoord)) {
|
|
394 |
globalPopup._popup = prepareLayerPopUp(lat, lng, i, `popup-${markersInRadius.datasetName}`)
|
393 |
395 |
globalPopup.coord = eventCoord
|
394 |
396 |
}
|
395 |
397 |
else {
|
396 |
|
setNewPopupDatasetName(infoDict.datasetName)
|
|
398 |
setPopupDatasetClassName(markersInRadius.datasetName)
|
397 |
399 |
}
|
398 |
400 |
|
399 |
|
setGlobalPopupContent(getPopupContent(datasetDictNameDisplayName[infoDict.datasetName], place, number, total, 1, info_.length))
|
|
401 |
setGlobalPopupContent(getPopupContent(datasetDictNameDisplayName[markersInRadius.datasetName], place, number, total, 1, popupPagesData.length))
|
400 |
402 |
|
401 |
|
if (info_.length === 1) {
|
|
403 |
if (popupPagesData.length === 1) {
|
402 |
404 |
disablePopupControls()
|
403 |
405 |
}
|
404 |
406 |
} else {
|
405 |
|
const { datasetName, number } = getElFromObjectInfo(currentPageInPopup)
|
|
407 |
const { datasetName, number } = getPopupDataOnPage(currentPageInPopup)
|
406 |
408 |
|
407 |
|
if (!globalPopup._popup || !areSameCoord(globalPopup.coord, eventCoord)) {
|
|
409 |
if (!globalPopup._popup || !areCoordsIdentical(globalPopup.coord, eventCoord)) {
|
408 |
410 |
globalPopup._popup = prepareLayerPopUp(lat, lng, i, `popup-${datasetName}`)
|
409 |
411 |
globalPopup.coord = eventCoord
|
410 |
412 |
}
|
411 |
413 |
else {
|
412 |
|
setNewPopupDatasetName(datasetName)
|
|
414 |
setPopupDatasetClassName(datasetName)
|
413 |
415 |
}
|
414 |
416 |
|
415 |
417 |
setGlobalPopupContent(genMultipleDatasetsPopUp(number, 1, getCountPagesInPopup(), datasetDictNameDisplayName[datasetName]))
|
... | ... | |
435 |
437 |
}
|
436 |
438 |
|
437 |
439 |
function setPageContentInPopup (page) {
|
438 |
|
const previousPageData = hasInfoMultipleDatasets() ? getElFromObjectInfo(page) : getElFromObjectInfo(0).items[page]
|
439 |
|
const currentPageData = hasInfoMultipleDatasets() ? getElFromObjectInfo(currentPageInPopup) : getElFromObjectInfo(0).items[currentPageInPopup]
|
|
440 |
const previousPageData = areMultipleDatasetsInRadius() ? getPopupDataOnPage(page) : getPopupDataOnPage(0).items[page]
|
|
441 |
const currentPageData = areMultipleDatasetsInRadius() ? getPopupDataOnPage(currentPageInPopup) : getPopupDataOnPage(0).items[currentPageInPopup]
|
440 |
442 |
const datasetName = $('#dataset-name')
|
441 |
443 |
|
442 |
444 |
if (datasetName) {
|
Re #8163 - refactoring