qwc2
Version:
QGIS Web Client
195 lines (193 loc) • 5.49 kB
JavaScript
/**
* Copyright 2016-2024 Sourcepole AG
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree.
*/
import ReducerIndex from '../reducers/index';
import layersReducer from '../reducers/layers';
ReducerIndex.register("layers", layersReducer);
import ConfigUtils from '../utils/ConfigUtils';
export var SET_LAYER_LOADING = 'SET_LAYER_LOADING';
export var ADD_LAYER = 'ADD_LAYER';
export var ADD_LAYER_SEPARATOR = 'ADD_LAYER_SEPARATOR';
export var REMOVE_LAYER = 'REMOVE_LAYER';
export var REORDER_LAYER = 'REORDER_LAYER';
export var ADD_LAYER_FEATURES = 'ADD_LAYER_FEATURES';
export var ADD_THEME_SUBLAYER = 'ADD_THEME_SUBLAYER';
export var REMOVE_LAYER_FEATURES = 'REMOVE_LAYER_FEATURES';
export var CLEAR_LAYER = 'CLEAR_LAYER';
export var CHANGE_LAYER_PROPERTY = 'CHANGE_LAYER_PROPERTY';
export var SET_LAYER_DIMENSIONS = 'SET_LAYER_DIMENSIONS';
export var REFRESH_LAYER = 'REFRESH_LAYER';
export var REMOVE_ALL_LAYERS = 'REMOVE_ALL_LAYERS';
export var REPLACE_PLACEHOLDER_LAYER = 'REPLACE_PLACEHOLDER_LAYER';
export var SET_SWIPE = 'SET_SWIPE';
export var SET_FILTER = 'SET_FILTER';
export var SET_THEME_LAYERS_VISIBILITY_PRESET = 'SET_THEME_LAYERS_VISIBILITY_PRESET';
export var LayerRole = {
BACKGROUND: 1,
THEME: 2,
USERLAYER: 3,
SELECTION: 4,
MARKER: 5
};
export function addLayer(layer) {
var pos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
return {
type: ADD_LAYER,
layer: layer,
pos: pos,
options: options
};
}
export function addLayerSeparator(title, afterLayerId, afterSublayerPath) {
return {
type: ADD_LAYER_SEPARATOR,
title: title,
afterLayerId: afterLayerId,
afterSublayerPath: afterSublayerPath
};
}
export function removeLayer(layerId) {
var sublayerpath = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
return {
type: REMOVE_LAYER,
layerId: layerId,
sublayerpath: sublayerpath
};
}
export function reorderLayer(layer, sublayerpath, direction) {
return function (dispatch, getState) {
dispatch({
type: REORDER_LAYER,
layer: layer,
sublayerpath: sublayerpath,
direction: direction,
preventSplittingGroups: ConfigUtils.getConfigProp("preventSplittingGroupsWhenReordering", getState().theme.current)
});
};
}
export function addLayerFeatures(layer, features) {
var clear = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
return {
type: ADD_LAYER_FEATURES,
layer: layer,
features: features,
clear: clear
};
}
export function removeLayerFeatures(layerId, featureIds) {
var keepEmptyLayer = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
return {
type: REMOVE_LAYER_FEATURES,
layerId: layerId,
featureIds: featureIds,
keepEmptyLayer: keepEmptyLayer
};
}
export function clearLayer(layerId) {
return {
type: CLEAR_LAYER,
layerId: layerId
};
}
export function addThemeSublayer(layer) {
return {
type: ADD_THEME_SUBLAYER,
layer: layer
};
}
// recurseDirection: null (don't recurse), 'parents', 'children', 'both'
export function changeLayerProperty(layerId, property, newvalue) {
var sublayerpath = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
var recurseDirection = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
return {
type: CHANGE_LAYER_PROPERTY,
layerId: layerId,
property: property,
newvalue: newvalue,
sublayerpath: sublayerpath,
recurseDirection: recurseDirection
};
}
export function setLayerDimensions(layerId, dimensions) {
return {
type: SET_LAYER_DIMENSIONS,
layerId: layerId,
dimensions: dimensions
};
}
export function setLayerLoading(layerId, loading) {
return {
type: SET_LAYER_LOADING,
layerId: layerId,
loading: loading
};
}
export function addMarker(id, point) {
var label = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
var crs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'EPSG:4326';
var zIndex = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
var layer = {
id: "markers",
role: LayerRole.MARKER,
zIndex: zIndex
};
var feature = {
id: id,
geometry: {
type: 'Point',
coordinates: point
},
properties: {
label: label
},
crs: crs,
styleName: 'marker'
};
return addLayerFeatures(layer, [feature]);
}
export function removeMarker(id) {
return removeLayerFeatures("markers", [id]);
}
export function refreshLayer(filter) {
return {
type: REFRESH_LAYER,
filter: filter
};
}
export function removeAllLayers() {
return {
type: REMOVE_ALL_LAYERS
};
}
export function replacePlaceholderLayer(id, layer) {
return {
type: REPLACE_PLACEHOLDER_LAYER,
id: id,
layer: layer
};
}
export function setSwipe(swipe) {
return {
type: SET_SWIPE,
swipe: swipe
};
}
export function setFilter(filter, filterGeom, timeRange) {
return {
type: SET_FILTER,
filter: filter,
filterGeom: filterGeom,
timeRange: timeRange
};
}
export function setThemeLayersVisibilityPreset(preset) {
return {
type: SET_THEME_LAYERS_VISIBILITY_PRESET,
preset: preset
};
}