services/config/globeDefaults.jsjavascript
/*
Central place for the Value Partnership globe's structured/complex default
values - the ones that can't sensibly be a CONFIG_SCHEMA entry (config-schema.js)
because they aren't a single number/string/boolean a URL param could carry.
Simple tunable values (colors, thresholds, durations) live in CONFIG_SCHEMA
instead, resolved via useConfig() - see InteractiveGlobe.jsx/GlobePage.jsx
for how both halves get consumed. The point of splitting these out of their
consuming components and into one file is purely findability: previously
this content was scattered across InteractiveGlobe.jsx, GlobePage.jsx,
GlobeDetailCard.jsx and countryMeta.js.
*/
import { resolveAssetPath } from "../../utils/resolveAssetPath";
// pin_orange.svg/pin_petrol.svg from the old app, ported as-is
export const MARKER_ICONS = {
outcome: resolveAssetPath("/assets/images/value-partnership/marker_orange.svg"),
impact: resolveAssetPath("/assets/images/value-partnership/marker_petrol.svg"),
};
// initial filter state, ported verbatim from the old globe-page.js
// constructor - the driver codes (WF/OP/ENV/CL/PE, TE/OP/WF/F/ST/DI) match
// content.valuePartnership.points[].drivers, not content.drivers' ids
export const INITIAL_FILTERS = {
search: "",
impactCasesActive: true,
outcomeCasesActive: true,
checkedStrategyCases: [
{ name: "Access", checked: true, value: "AC" },
{ name: "Efficiency", checked: true, value: "EF" },
{ name: "Clinical Excellence", checked: true, value: "CE" },
],
checkedImpactCases: [
{ name: "Workforce", checked: true, value: "WF" },
{ name: "Operational", checked: true, value: "OP" },
{ name: "Environmental", checked: true, value: "ENV" },
{ name: "Clinical", checked: true, value: "CL" },
{ name: "Patient Experience", checked: true, value: "PE" },
],
checkedOutcomeCases: [
{
name: "Value Drivers",
items: [
{ name: "Technology", checked: true, value: "TE" },
{ name: "Operations", checked: true, value: "OP" },
{ name: "Workforce", checked: true, value: "WF" },
{ name: "Facility", checked: true, value: "F" },
],
},
{
name: "Excellence Drivers",
items: [
{ name: "Strategic Transformation", checked: true, value: "ST" },
{ name: "Digital Innovation", checked: true, value: "DI" },
],
},
],
};
// impact-case category keys, in the old app's fixed tab order (see
// value-globe.js#render's card__tabs block) - only categories actually
// present on the point become tabs. Icon names are @ui-marcom/icon font
// classes (icon-<name> in shared/assets/icons/icons.css).
export const IMPACT_CATEGORIES = [
["workforce", "Workforce", "globe"],
["operational", "Operational", "settings"],
["environmental", "Environmental", "user"],
["facility", "Facility", "hospital"],
["clinical", "Clinical", "id-card"],
["patient_experience", "Patient Experience", "heart"],
];
export const TAG_META = {
outcome: { label: "Customer Outcome Case", modifier: "orange" },
impact: { label: "Customer Impact Case", modifier: "petrol" },
};
// The Siemens source data spells a few country names differently from
// world-countries' `name.common` (abbreviations, an outdated exonym, a
// trailing space). Map the raw strings we actually see in the dataset to
// the canonical common name before looking them up. Ported verbatim from
// globe-proto/src/lib/countryMeta.ts.
export const COUNTRY_NAME_ALIASES = {
"usa": "United States",
"uk": "United Kingdom",
"turkey": "Türkiye",
"united arabian emirates (uae)": "United Arab Emirates",
};