Skip to content

Commit c2ee7bd

Browse files
committed
Maps: default contacts, groups, and users layers on dynamic records map
1 parent 1a6033c commit c2ee7bd

1 file changed

Lines changed: 61 additions & 17 deletions

File tree

dt-metrics/records/dynamic-records-map.js

Lines changed: 61 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -778,6 +778,18 @@ jQuery(document).ready(function ($) {
778778
);
779779
}
780780

781+
// Determine if layers have ever been configured/stored for this map. An
782+
// empty stored object (e.g. all layers removed by the user) still counts
783+
// as configured, so default layers are not re-added after a refresh.
784+
let layers_never_configured =
785+
!window.localStorage ||
786+
(window.localStorage.getItem(
787+
mapbox_library_api.dt_maps_layers_cookie_id,
788+
) === null &&
789+
window.localStorage.getItem(
790+
mapbox_library_api.dt_maps_layers_cookie_id_by_slug,
791+
) === null);
792+
781793
// Convert parent object to array of layer objects.
782794
let layer_cookies = [];
783795
if (
@@ -788,24 +800,56 @@ jQuery(document).ready(function ($) {
788800
([k, v]) => v,
789801
);
790802
}
791-
// Default to showing all contacts if no cookies detected.
792-
if (layer_cookies.length === 0 && dt_maps_layers_cookie === false) {
793-
let default_cookie = {
794-
post_type: 'contacts',
795-
field_key: 'query_all',
796-
display_order: 0,
797-
displayed: true,
798-
color: mapbox_library_api.add_records_generate_hex_color(),
799-
};
800-
default_cookie['id'] =
801-
mapbox_library_api.add_records_generate_captured_state_snapshot_payload_id(
802-
default_cookie,
803-
);
804-
layer_cookies.push(default_cookie);
805-
806-
// Persist default cookie.
803+
// Default to showing all contacts, all groups and all users when layers
804+
// have never been configured for this map. Once the user removes the
805+
// layers (leaving an empty stored object), the defaults are not re-added
806+
// on refresh.
807+
if (layer_cookies.length === 0 && layers_never_configured) {
807808
dt_maps_layers_cookie = {};
808-
dt_maps_layers_cookie['' + default_cookie['id']] = default_cookie;
809+
810+
// Build the default layer specs, only including post types that are
811+
// available on this map.
812+
let post_type_options = mapbox_library_api.obj.settings.post_types;
813+
let system_options =
814+
mapbox_library_api.obj.settings.post_types_system_options;
815+
let default_layers = [];
816+
if (post_type_options && post_type_options['contacts']) {
817+
default_layers.push({
818+
post_type: 'contacts',
819+
layer_name: post_type_options['contacts'].label,
820+
});
821+
}
822+
if (post_type_options && post_type_options['groups']) {
823+
default_layers.push({
824+
post_type: 'groups',
825+
layer_name: post_type_options['groups'].label,
826+
});
827+
}
828+
if (system_options && system_options['users']) {
829+
default_layers.push({
830+
post_type: 'system-users',
831+
layer_name: system_options['users'].label,
832+
});
833+
}
834+
835+
$.each(default_layers, function (idx, layer) {
836+
let default_cookie = {
837+
post_type: layer.post_type,
838+
field_key: 'query_all',
839+
display_order: idx,
840+
displayed: true,
841+
layer_name: layer.layer_name,
842+
color: mapbox_library_api.add_records_generate_hex_color(),
843+
};
844+
default_cookie['id'] =
845+
mapbox_library_api.add_records_generate_captured_state_snapshot_payload_id(
846+
default_cookie,
847+
);
848+
layer_cookies.push(default_cookie);
849+
dt_maps_layers_cookie['' + default_cookie['id']] = default_cookie;
850+
});
851+
852+
// Persist default layers.
809853
window.SHAREDFUNCTIONS.save_json_to_local_storage(
810854
mapbox_library_api.dt_maps_layers_cookie_id_by_slug,
811855
dt_maps_layers_cookie,

0 commit comments

Comments
 (0)