-
- {#each LOCALE.breadcrumbs as bc, n}
-
{bc.name}{#if n != LOCALE.breadcrumbs.length - 1}
{/if}
- {/each}
+
+
{expandLocale = !expandLocale}}>
+
+
+ {#if expandLocale}
+
+ {#each LOCALE.breadcrumbs as bc, n}
+
{bc.name}{#if n != LOCALE.breadcrumbs.length - 1}
{/if}
+ {/each}
+
+ {:else}
+
+ {expandLocale = !expandLocale}}>
+
+ {/if}
+
@@ -46,29 +65,31 @@
-
-
-
+
+
+
+
+
+
+
+ document
+ {#each MAP.documents as d}
+ {d.nickname}
+ {/each}
+
+
+
-
-
- document
- {#each MAP.documents as d}
- {d.nickname}
- {/each}
-
-
-
-
-
-
-
-
- region/layer
- {#each RESOURCE.regions as r}
- {r.nickname}
- {/each}
-
+
+
+
+
+ region/layer
+ {#each RESOURCE.regions as r}
+ {r.nickname}
+ {/each}
+
+
@@ -113,15 +134,8 @@
}
@media (max-width: 768px) {
- section {
- flex-direction: column;
- }
select {
margin-bottom: 2px;
- width: 100%;
- }
- section > div {
- width: 100%;
}
.hideable {
display: none;
diff --git a/ohmg/frontend/svelte_components/src/components/buttons/InfoModalButton.svelte b/ohmg/frontend/svelte_components/src/components/buttons/InfoModalButton.svelte
index 202291fa..07ff75ad 100644
--- a/ohmg/frontend/svelte_components/src/components/buttons/InfoModalButton.svelte
+++ b/ohmg/frontend/svelte_components/src/components/buttons/InfoModalButton.svelte
@@ -1,7 +1,7 @@
-
-
-
-
-
-
-
diff --git a/ohmg/frontend/svelte_components/src/components/cards/LayerCard.svelte b/ohmg/frontend/svelte_components/src/components/cards/LayerCard.svelte
index e9cf2b6f..1b1c0550 100644
--- a/ohmg/frontend/svelte_components/src/components/cards/LayerCard.svelte
+++ b/ohmg/frontend/svelte_components/src/components/cards/LayerCard.svelte
@@ -4,11 +4,11 @@
import DownloadSimple from 'phosphor-svelte/lib/DownloadSimple';
import MapPin from 'phosphor-svelte/lib/MapPin';
- import { getModal } from '../modals/BaseModal.svelte';
+ import { getModal } from '../base/Modal.svelte';
- import Link from '../common/Link.svelte';
+ import Link from '../base/Link.svelte';
- import BaseCard from './BaseCard.svelte';
+ import BaseCard from '../base/Card.svelte';
import { copyToClipboard } from '../../lib/utils';
diff --git a/ohmg/frontend/svelte_components/src/components/cards/MapItem.svelte b/ohmg/frontend/svelte_components/src/components/cards/MapItem.svelte
index 455a8203..3b94eaef 100644
--- a/ohmg/frontend/svelte_components/src/components/cards/MapItem.svelte
+++ b/ohmg/frontend/svelte_components/src/components/cards/MapItem.svelte
@@ -1,5 +1,5 @@
diff --git a/ohmg/frontend/svelte_components/src/components/cards/NonMapCard.svelte b/ohmg/frontend/svelte_components/src/components/cards/NonMapCard.svelte
index 173262a1..d9f1b077 100644
--- a/ohmg/frontend/svelte_components/src/components/cards/NonMapCard.svelte
+++ b/ohmg/frontend/svelte_components/src/components/cards/NonMapCard.svelte
@@ -1,11 +1,11 @@
-
-
diff --git a/ohmg/frontend/svelte_components/src/components/interfaces/MapPreview.svelte b/ohmg/frontend/svelte_components/src/components/interfaces/MapPreview.svelte
index a7db472c..6aecf878 100644
--- a/ohmg/frontend/svelte_components/src/components/interfaces/MapPreview.svelte
+++ b/ohmg/frontend/svelte_components/src/components/interfaces/MapPreview.svelte
@@ -8,14 +8,15 @@
import { createEmpty, extend } from 'ol/extent';
import { transformExtent } from 'ol/proj';
- import ExpandElement from '../buttons/ExpandElement.svelte';
- import RefreshMapButton from '../buttons/RefreshMapButton.svelte';
- import TransparencySlider from '../buttons/TransparencySlider.svelte';
- import ToolUIButton from '../buttons/ToolUIButton.svelte';
+ import Link from '../base/Link.svelte';
- import MapboxLogoLink from '../common/MapboxLogoLink.svelte';
+ import ExpandElement from './widgets/ExpandElement.svelte';
+ import RefreshMapButton from './widgets/RefreshMapButton.svelte';
+ import TransparencySlider from './widgets/TransparencySlider.svelte';
+ import ToolUIButton from './widgets/ToolUIButton.svelte';
+ import MapboxLogoLink from './widgets/MapboxLogoLink.svelte';
- import { getModal } from '../modals/BaseModal.svelte';
+ import { getModal } from '../base/Modal.svelte';
import LegendModal from '../modals/LegendModal.svelte';
import { makeLayerGroupFromLayerSet } from '../../lib/utils';
@@ -26,6 +27,7 @@
export let CONTEXT;
export let mapId;
export let mapExtent;
+ export let locale;
export let refreshable = false;
let mapViewer;
@@ -128,6 +130,13 @@
+
+ This preview shows progress toward a full mosaic of this map's content—as documents are processed they will automatically appear here. Compare with other years in the viewer.
+
{#if refreshable}
diff --git a/ohmg/frontend/svelte_components/src/components/interfaces/MultiMask.svelte b/ohmg/frontend/svelte_components/src/components/interfaces/MultiMask.svelte
index f0cda9d5..92081dec 100644
--- a/ohmg/frontend/svelte_components/src/components/interfaces/MultiMask.svelte
+++ b/ohmg/frontend/svelte_components/src/components/interfaces/MultiMask.svelte
@@ -31,31 +31,29 @@
import Crop from 'ol-ext/filter/Crop';
- import ToolUIButton from '../buttons/ToolUIButton.svelte';
- import ExpandElement from '../buttons/ExpandElement.svelte';
+ import ToolUIButton from './widgets/ToolUIButton.svelte';
+ import ExpandElement from './widgets/ExpandElement.svelte';
import { usaExtent } from '../../lib/utils';
- import { submitPostRequest } from '../../lib/requests';
import { MapViewer } from '../../lib/viewers';
import { LyrMousePosition } from '../../lib/controls';
import { colors, mmColors, makeCircle } from '../../lib/ol-styles';
export let CONTEXT;
- export let LAYERSET;
+ export let LAYERS;
export let DISABLED;
- export let resetMosaic;
+ export let handleSubmit;
+ export let dirty = false;
let currentLayer = null;
- let unchanged = true;
-
let layerLookup = {};
let layerLookupMaskedArr = [];
let layerLookupUnmaskedArr = [];
let layerLookupArr = [];
- const fullExtent = LAYERSET.extent ? transformExtent(LAYERSET.extent, 'EPSG:4326', 'EPSG:3857') : usaExtent;
+ let fullExtent = usaExtent;
function updateLayerArr() {
layerLookupArr = [];
@@ -74,21 +72,22 @@
}
function addIncomingMasks() {
- if (LAYERSET.multimask_geojson) {
- const feats = new GeoJSON().readFeatures(LAYERSET.multimask_geojson, {
- featureProjection: 'EPSG:3857',
- });
- feats.forEach(function (f) {
- trimShapeSource.addFeature(f);
- });
- }
+ LAYERS.forEach((lyr) => {
+ if (lyr.mask) {
+ const maskGeojson = {type: "Feature", properties: {layer: lyr.slug}, geometry: lyr.mask}
+ const feat = new GeoJSON().readFeature(maskGeojson, {
+ featureProjection: 'EPSG:3857',
+ });
+ trimShapeSource.addFeature(feat);
+ }
+ })
resetVertexCounts();
}
function createLayerLookup() {
layerLookup = {};
trimShapeSource.clear();
- LAYERSET.layers.forEach(function (layerDef) {
+ LAYERS.forEach(function (layerDef) {
let newLayer = new TileLayer({
source: new TileJSON({
tileJSON: layerDef.tilejson,
@@ -116,10 +115,11 @@
};
layerLookup[layerDef.slug] = layer;
});
+ fullExtent = extentLayer.getSource().getExtent();
// now iterate the incoming mask features and apply all existing
addIncomingMasks();
updateLayerArr();
- unchanged = true;
+ dirty = false;
}
const trimShapeSource = new VectorSource();
@@ -205,7 +205,7 @@
layerRemoveMask(layer, true);
});
addIncomingMasks();
- unchanged = true;
+ dirty = false;
}
let viewer;
@@ -269,7 +269,7 @@
}
});
modify.on('modifyend', function (e) {
- unchanged = false;
+ dirty = true;
});
viewer.addInteraction('modify', modify);
@@ -295,23 +295,12 @@
});
$: {
- if (viewer) {
+ if (viewer && !DISABLED) {
viewer.interactions.draw.setActive(currentLayer != null);
viewer.interactions.modify.setActive(!viewer.interactions.draw.getActive());
}
}
- function handleMultimaskSubmitResponse(response) {
- if (response.success) {
- window.alert('Masks saved successfully.');
- unchanged = true;
- resetMosaic();
- } else {
- let errMsg = 'Error! MultiMask not saved. You must remove and remake the following masks:\n';
- errMsg += response.message;
- alert(errMsg);
- }
- }
function submitMultiMask() {
if (DISABLED) {
window.alert('You do not have edit permissions for this multimask.');
@@ -331,17 +320,7 @@
}
});
- submitPostRequest(
- '/layerset/',
- CONTEXT.ohmg_post_headers,
- 'set-mask',
- {
- 'multimask-geojson': outGeoJSON,
- 'map-id': LAYERSET.map_id,
- category: LAYERSET.id,
- },
- handleMultimaskSubmitResponse,
- );
+ handleSubmit(outGeoJSON)
}
function zoomToLayer(layer) {
@@ -411,7 +390,7 @@
}
currentLayer = null;
updateLayerArr();
- unchanged = false;
+ dirty = true;
}
function layerRemoveMask(layer, confirm) {
@@ -426,7 +405,7 @@
layer.crop = null;
layer.feature = null;
updateLayerArr();
- unchanged = false;
+ dirty = true;
}
}
@@ -475,7 +454,7 @@