From 1cddfcb1283324da2df048a4f1a1d5b6eb412194 Mon Sep 17 00:00:00 2001 From: estelafs Date: Tue, 5 Dec 2023 17:38:52 -0300 Subject: [PATCH 1/2] added geographicContext to dashboard page --- .../view-settings-modal.component.html | 9 + .../view-settings-modal.component.ts | 45 + .../pages/dashboard/dashboard.component.html | 40 + .../pages/dashboard/dashboard.component.ts | 84 ++ .../pages/dashboard/graphql/queries.ts | 1 + apps/back-office/tsconfig.json | 3 +- .../pages/dashboard/graphql/queries.ts | 1 + .../pages/dashboard/graphql/queries.ts | 1 + assets/countries.json | 994 ++++++++++++++++++ libs/shared/src/i18n/en.json | 1 + libs/shared/src/i18n/fr.json | 1 + libs/shared/src/i18n/test.json | 1 + libs/shared/src/lib/models/page.model.ts | 8 + .../application/application.service.ts | 42 + .../services/application/graphql/mutations.ts | 2 + 15 files changed, 1232 insertions(+), 1 deletion(-) create mode 100644 assets/countries.json diff --git a/apps/back-office/src/app/components/view-settings-modal/view-settings-modal.component.html b/apps/back-office/src/app/components/view-settings-modal/view-settings-modal.component.html index 0317c24789..2c26e860a6 100644 --- a/apps/back-office/src/app/components/view-settings-modal/view-settings-modal.component.html +++ b/apps/back-office/src/app/components/view-settings-modal/view-settings-modal.component.html @@ -35,6 +35,15 @@

{{ 'common.settings' | translate }}

'-mb-4': data.type === 'page' }" > + + + + + + {{ 'components.application.pages.settings.geographicContext' | translate }} + + + diff --git a/apps/back-office/src/app/components/view-settings-modal/view-settings-modal.component.ts b/apps/back-office/src/app/components/view-settings-modal/view-settings-modal.component.ts index 594cf77ab1..cd5ee437e3 100644 --- a/apps/back-office/src/app/components/view-settings-modal/view-settings-modal.component.ts +++ b/apps/back-office/src/app/components/view-settings-modal/view-settings-modal.component.ts @@ -159,6 +159,16 @@ export class ViewSettingsModalComponent this.onUpdateVisibility(value); } }); + + if (this.dashboard) { + this.settingsForm?.controls.geographicContext?.valueChanges + .pipe(takeUntil(this.destroy$)) + .subscribe((value: boolean | null) => { + if (!isNil(value)) { + this.onUpdateGeographicContext(value); + } + }); + } } if (this.dashboard) { @@ -257,6 +267,13 @@ export class ViewSettingsModalComponent // initializes icon field with data info icon: this.fb.control(this.data.icon ?? ''), visible: this.fb.control(this.data.visible ?? true), + ...(this.dashboard && + this.data.canUpdate && + this.data.type === 'page' && { + geographicContext: this.fb.control( + this.page?.geographicContext?.enabled ?? false + ), + }), ...(this.dashboard && { gridOptions: this.fb.group({ minCols: this.fb.control( @@ -371,4 +388,32 @@ export class ViewSettingsModalComponent }; this.dashboardService.editGridOptions(gridOptions, callback); } + + /** + * Enable/disable dashboard page geographic context on change. + * + * @param enabled boolean + */ + private onUpdateGeographicContext(enabled: boolean): void { + const geographicContext = { + ...this.page?.geographicContext, + enabled, + }; + const callback = () => { + this.page = { + ...this.page, + geographicContext, + }; + // Updates parent component + const updates = { geographicContext }; + this.onUpdate.emit(updates); + }; + this.applicationService.updatePageGeographicContext( + { + id: this.page?.id, + geographicContext, + }, + callback + ); + } } diff --git a/apps/back-office/src/app/dashboard/pages/dashboard/dashboard.component.html b/apps/back-office/src/app/dashboard/pages/dashboard/dashboard.component.html index 25cd1d3e34..f971b3a311 100644 --- a/apps/back-office/src/app/dashboard/pages/dashboard/dashboard.component.html +++ b/apps/back-office/src/app/dashboard/pages/dashboard/dashboard.component.html @@ -137,6 +137,7 @@

'models.dashboard.context.edition.element' | translate }} +
+ + + +
+ + + + {{ region.name }} + + +
+ +
+ + + + {{ country.name }} + + +
+
diff --git a/apps/back-office/src/app/dashboard/pages/dashboard/dashboard.component.ts b/apps/back-office/src/app/dashboard/pages/dashboard/dashboard.component.ts index 57ecb69e1f..6e76af9446 100644 --- a/apps/back-office/src/app/dashboard/pages/dashboard/dashboard.component.ts +++ b/apps/back-office/src/app/dashboard/pages/dashboard/dashboard.component.ts @@ -28,6 +28,7 @@ import { DashboardQueryResponse, EditDashboardMutationResponse, RecordQueryResponse, + PageGeographicContextType, } from '@oort-front/shared'; import { EDIT_DASHBOARD } from './graphql/mutations'; import { @@ -54,6 +55,7 @@ import { ContextService, CustomWidgetStyleComponent } from '@oort-front/shared'; import { DOCUMENT } from '@angular/common'; import { Clipboard } from '@angular/cdk/clipboard'; import { GridsterConfig } from 'angular-gridster2'; +import countries from 'assets/countries.json'; /** Default number of records fetched per page */ const ITEMS_PER_PAGE = 10; @@ -117,6 +119,43 @@ export class DashboardComponent public editionActive = true; /** Additional grid configuration */ public gridOptions: GridsterConfig = {}; + /** Regions static list for geographic context */ + public geographicContextRegions = [ + { + code: 'AF', + name: 'AFRO', + }, + { + code: 'AM', + name: 'AMRO', + }, + { + code: 'EM', + name: 'EMRO', + }, + { + code: 'EU', + name: 'EURO', + }, + { + code: 'SE', + name: 'SEARO', + }, + { + code: 'WP', + name: 'WPRO', + }, + { + code: 'HQ', + name: 'HQ', + }, + ]; + /** Countries for geographic context */ + public geographicContextCountries = countries; + /** Geographic context country form control */ + public countryCode = new FormControl(''); + /** Geographic context region form control */ + public regionCode = new FormControl(''); /** @returns type of context element */ get contextType() { @@ -311,6 +350,17 @@ export class DashboardComponent ...this.dashboard?.gridOptions, scrollToNewItems: false, }; + if (this.dashboard.page?.geographicContext?.enabled) { + this.countryCode.setValue( + this.dashboard.page?.geographicContext?.country + ); + this.regionCode.setValue( + this.dashboard.page?.geographicContext?.region + ); + } else { + this.countryCode.setValue(''); + this.regionCode.setValue(''); + } this.initContext(); this.updateContextOptions(); this.canUpdate = @@ -855,4 +905,38 @@ export class DashboardComponent }); } } + + /** + * Update query based on text search. + * + * @param update values to update in the page geographicContext + * @param update.region region selected + * @param update.country country selected + */ + public onSearchChangeGeographicContext(update: { + region?: string; + country?: string; + }): void { + const geographicContext = { + ...this.dashboard?.page?.geographicContext, + ...(update.region && { region: update.region }), + ...(update.country && { country: update.country }), + }; + const callback = () => { + this.dashboard = { + ...this.dashboard, + page: { + ...this.dashboard?.page, + geographicContext: geographicContext as PageGeographicContextType, + }, + }; + }; + this.applicationService.updatePageGeographicContext( + { + id: this.dashboard?.page?.id, + geographicContext: geographicContext as PageGeographicContextType, + }, + callback + ); + } } diff --git a/apps/back-office/src/app/dashboard/pages/dashboard/graphql/queries.ts b/apps/back-office/src/app/dashboard/pages/dashboard/graphql/queries.ts index e42d7b37d2..83ca569585 100644 --- a/apps/back-office/src/app/dashboard/pages/dashboard/graphql/queries.ts +++ b/apps/back-office/src/app/dashboard/pages/dashboard/graphql/queries.ts @@ -37,6 +37,7 @@ export const GET_DASHBOARD_BY_ID = gql` context content contentWithContext + geographicContext } step { id diff --git a/apps/back-office/tsconfig.json b/apps/back-office/tsconfig.json index de370a9e61..906f7cab81 100644 --- a/apps/back-office/tsconfig.json +++ b/apps/back-office/tsconfig.json @@ -7,7 +7,8 @@ "noImplicitOverride": true, "noPropertyAccessFromIndexSignature": false, "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true + "noFallthroughCasesInSwitch": true, + "resolveJsonModule": true }, "files": [], "include": [], diff --git a/apps/front-office/src/app/application/pages/dashboard/graphql/queries.ts b/apps/front-office/src/app/application/pages/dashboard/graphql/queries.ts index 4e5afff908..cdb9e6424c 100644 --- a/apps/front-office/src/app/application/pages/dashboard/graphql/queries.ts +++ b/apps/front-office/src/app/application/pages/dashboard/graphql/queries.ts @@ -39,6 +39,7 @@ export const GET_DASHBOARD_BY_ID = gql` context content contentWithContext + geographicContext } } } diff --git a/apps/web-widgets/src/app/widgets/app-widget/application/pages/dashboard/graphql/queries.ts b/apps/web-widgets/src/app/widgets/app-widget/application/pages/dashboard/graphql/queries.ts index 1232a11ed0..e3f7f5e823 100644 --- a/apps/web-widgets/src/app/widgets/app-widget/application/pages/dashboard/graphql/queries.ts +++ b/apps/web-widgets/src/app/widgets/app-widget/application/pages/dashboard/graphql/queries.ts @@ -38,6 +38,7 @@ export const GET_DASHBOARD_BY_ID = gql` context content contentWithContext + geographicContext } } } diff --git a/assets/countries.json b/assets/countries.json new file mode 100644 index 0000000000..e8bbaa65c1 --- /dev/null +++ b/assets/countries.json @@ -0,0 +1,994 @@ +[ + { + "code": "AND", + "name": "Andorra" + }, + { + "code": "ARE", + "name": "United Arab Emirates (the)" + }, + { + "code": "AFG", + "name": "Afghanistan" + }, + { + "code": "ATG", + "name": "Antigua and Barbuda" + }, + { + "code": "ALB", + "name": "Albania" + }, + { + "code": "ARM", + "name": "Armenia" + }, + { + "code": "AGO", + "name": "Angola" + }, + { + "code": "ARG", + "name": "Argentina" + }, + { + "code": "AUT", + "name": "Austria" + }, + { + "code": "AUS", + "name": "Australia" + }, + { + "code": "AZE", + "name": "Azerbaijan" + }, + { + "code": "BIH", + "name": "Bosnia and Herzegovina" + }, + { + "code": "BRB", + "name": "Barbados" + }, + { + "code": "BGD", + "name": "Bangladesh" + }, + { + "code": "BEL", + "name": "Belgium" + }, + { + "code": "BFA", + "name": "Burkina Faso" + }, + { + "code": "BGR", + "name": "Bulgaria" + }, + { + "code": "BHR", + "name": "Bahrain" + }, + { + "code": "BDI", + "name": "Burundi" + }, + { + "code": "BEN", + "name": "Benin" + }, + { + "code": "BRN", + "name": "Brunei Darussalam" + }, + { + "code": "BOL", + "name": "Bolivia (the Plurinational State of)" + }, + { + "code": "BRA", + "name": "Brazil" + }, + { + "code": "BHS", + "name": "Bahamas (the)" + }, + { + "code": "BTN", + "name": "Bhutan" + }, + { + "code": "BWA", + "name": "Botswana" + }, + { + "code": "BLR", + "name": "Belarus" + }, + { + "code": "BLZ", + "name": "Belize" + }, + { + "code": "CAN", + "name": "Canada" + }, + { + "code": "COD", + "name": "Democratic Republic of the Congo (the)" + }, + { + "code": "CAF", + "name": "Central African Republic (the)" + }, + { + "code": "COG", + "name": "Congo (the)" + }, + { + "code": "CHE", + "name": "Switzerland" + }, + { + "code": "CIV", + "name": "Côte d’Ivoire" + }, + { + "code": "COK", + "name": "Cook Islands" + }, + { + "code": "CHL", + "name": "Chile" + }, + { + "code": "CMR", + "name": "Cameroon" + }, + { + "code": "CHN", + "name": "China" + }, + { + "code": "COL", + "name": "Colombia" + }, + { + "code": "CRI", + "name": "Costa Rica" + }, + { + "code": "CUB", + "name": "Cuba" + }, + { + "code": "CPV", + "name": "Cape Verde" + }, + { + "code": "CYP", + "name": "Cyprus" + }, + { + "code": "CZE", + "name": "Czechia" + }, + { + "code": "DEU", + "name": "Germany" + }, + { + "code": "DJI", + "name": "Djibouti" + }, + { + "code": "DNK", + "name": "Denmark" + }, + { + "code": "DMA", + "name": "Dominica" + }, + { + "code": "DOM", + "name": "Dominican Republic (the)" + }, + { + "code": "DZA", + "name": "Algeria" + }, + { + "code": "ECU", + "name": "Ecuador" + }, + { + "code": "EST", + "name": "Estonia" + }, + { + "code": "EGY", + "name": "Egypt" + }, + { + "code": "ERI", + "name": "Eritrea" + }, + { + "code": "ESP", + "name": "Spain" + }, + { + "code": "ETH", + "name": "Ethiopia" + }, + { + "code": "FIN", + "name": "Finland" + }, + { + "code": "FJI", + "name": "Fiji" + }, + { + "code": "FSM", + "name": "Micronesia (Federated States of)" + }, + { + "code": "FRA", + "name": "France" + }, + { + "code": "GAB", + "name": "Gabon" + }, + { + "code": "GBR", + "name": "United Kingdom" + }, + { + "code": "GRD", + "name": "Grenada" + }, + { + "code": "GEO", + "name": "Georgia" + }, + { + "code": "GHA", + "name": "Ghana" + }, + { + "code": "GMB", + "name": "Gambia (the)" + }, + { + "code": "GIN", + "name": "Guinea" + }, + { + "code": "GNQ", + "name": "Equatorial Guinea" + }, + { + "code": "GRC", + "name": "Greece" + }, + { + "code": "GTM", + "name": "Guatemala" + }, + { + "code": "GNB", + "name": "Guinea-Bissau" + }, + { + "code": "GUY", + "name": "Guyana" + }, + { + "code": "HND", + "name": "Honduras" + }, + { + "code": "HRV", + "name": "Croatia" + }, + { + "code": "HTI", + "name": "Haiti" + }, + { + "code": "HUN", + "name": "Hungary" + }, + { + "code": "IDN", + "name": "Indonesia" + }, + { + "code": "IRL", + "name": "Ireland" + }, + { + "code": "ISR", + "name": "Israel" + }, + { + "code": "IND", + "name": "India" + }, + { + "code": "IRQ", + "name": "Iraq" + }, + { + "code": "IRN", + "name": "Iran (Islamic Republic of)" + }, + { + "code": "ISL", + "name": "Iceland" + }, + { + "code": "ITA", + "name": "Italy" + }, + { + "code": "JAM", + "name": "Jamaica" + }, + { + "code": "JOR", + "name": "Jordan" + }, + { + "code": "JPN", + "name": "Japan" + }, + { + "code": "KEN", + "name": "Kenya" + }, + { + "code": "KGZ", + "name": "Kyrgyzstan" + }, + { + "code": "KHM", + "name": "Cambodia" + }, + { + "code": "KIR", + "name": "Kiribati" + }, + { + "code": "COM", + "name": "Comoros (the)" + }, + { + "code": "KNA", + "name": "Saint Kitts and Nevis" + }, + { + "code": "PRK", + "name": "Democratic People’s Republic of Korea (the)" + }, + { + "code": "KOR", + "name": "Republic of Korea (the)" + }, + { + "code": "KWT", + "name": "Kuwait" + }, + { + "code": "KAZ", + "name": "Kazakhstan" + }, + { + "code": "LAO", + "name": "Lao People’s Democratic Republic (the)" + }, + { + "code": "LBN", + "name": "Lebanon" + }, + { + "code": "LCA", + "name": "Saint Lucia" + }, + { + "code": "LIE", + "name": "Liechtenstein" + }, + { + "code": "LKA", + "name": "Sri Lanka" + }, + { + "code": "LBR", + "name": "Liberia" + }, + { + "code": "LSO", + "name": "Lesotho" + }, + { + "code": "LTU", + "name": "Lithuania" + }, + { + "code": "LUX", + "name": "Luxembourg" + }, + { + "code": "LVA", + "name": "Latvia" + }, + { + "code": "LBY", + "name": "Libya" + }, + { + "code": "MAR", + "name": "Morocco" + }, + { + "code": "MCO", + "name": "Monaco" + }, + { + "code": "MDA", + "name": "the Republic of Moldova" + }, + { + "code": "MNE", + "name": "Montenegro" + }, + { + "code": "MDG", + "name": "Madagascar" + }, + { + "code": "MHL", + "name": "Marshall Islands (the)" + }, + { + "code": "MKD", + "name": "North Macedonia" + }, + { + "code": "MLI", + "name": "Mali" + }, + { + "code": "MMR", + "name": "Myanmar" + }, + { + "code": "MNG", + "name": "Mongolia" + }, + { + "code": "MRT", + "name": "Mauritania" + }, + { + "code": "MLT", + "name": "Malta" + }, + { + "code": "MUS", + "name": "Mauritius" + }, + { + "code": "MDV", + "name": "Maldives" + }, + { + "code": "MWI", + "name": "Malawi" + }, + { + "code": "MEX", + "name": "Mexico" + }, + { + "code": "MYS", + "name": "Malaysia" + }, + { + "code": "MOZ", + "name": "Mozambique" + }, + { + "code": "NAM", + "name": "Namibia" + }, + { + "code": "NER", + "name": "Niger (the)" + }, + { + "code": "NGA", + "name": "Nigeria" + }, + { + "code": "NIC", + "name": "Nicaragua" + }, + { + "code": "NLD", + "name": "Netherlands (the)" + }, + { + "code": "NOR", + "name": "Norway" + }, + { + "code": "NPL", + "name": "Nepal" + }, + { + "code": "NRU", + "name": "Nauru" + }, + { + "code": "NIU", + "name": "Niue" + }, + { + "code": "NZL", + "name": "New Zealand" + }, + { + "code": "OMN", + "name": "Oman" + }, + { + "code": "PAN", + "name": "Panama" + }, + { + "code": "PER", + "name": "Peru" + }, + { + "code": "PNG", + "name": "Papua New Guinea" + }, + { + "code": "PHL", + "name": "Philippines (the)" + }, + { + "code": "PAK", + "name": "Pakistan" + }, + { + "code": "POL", + "name": "Poland" + }, + { + "code": "PRT", + "name": "Portugal" + }, + { + "code": "PLW", + "name": "Palau" + }, + { + "code": "PRY", + "name": "Paraguay" + }, + { + "code": "QAT", + "name": "Qatar" + }, + { + "code": "ROU", + "name": "Romania" + }, + { + "code": "SRB", + "name": "Serbia" + }, + { + "code": "RUS", + "name": "Russian Federation (the)" + }, + { + "code": "RWA", + "name": "Rwanda" + }, + { + "code": "SAU", + "name": "Saudi Arabia" + }, + { + "code": "SLB", + "name": "Solomon Islands" + }, + { + "code": "SYC", + "name": "Seychelles" + }, + { + "code": "SDN", + "name": "Sudan (the)" + }, + { + "code": "SWE", + "name": "Sweden" + }, + { + "code": "SGP", + "name": "Singapore" + }, + { + "code": "SVN", + "name": "Slovenia" + }, + { + "code": "SVK", + "name": "Slovakia" + }, + { + "code": "SLE", + "name": "Sierra Leone" + }, + { + "code": "SMR", + "name": "San Marino" + }, + { + "code": "SEN", + "name": "Senegal" + }, + { + "code": "SOM", + "name": "Somalia" + }, + { + "code": "SUR", + "name": "Suriname" + }, + { + "code": "STP", + "name": "Sao Tome and Principe" + }, + { + "code": "SLV", + "name": "El Salvador" + }, + { + "code": "SYR", + "name": "Syrian Arab Republic (the)" + }, + { + "code": "SWZ", + "name": "Eswatini" + }, + { + "code": "TCD", + "name": "Chad" + }, + { + "code": "TGO", + "name": "Togo" + }, + { + "code": "THA", + "name": "Thailand" + }, + { + "code": "TJK", + "name": "Tajikistan" + }, + { + "code": "TLS", + "name": "Timor-Leste" + }, + { + "code": "TKM", + "name": "Turkmenistan" + }, + { + "code": "TUN", + "name": "Tunisia" + }, + { + "code": "TON", + "name": "Tonga" + }, + { + "code": "TUR", + "name": "Türkiye" + }, + { + "code": "TTO", + "name": "Trinidad and Tobago" + }, + { + "code": "TUV", + "name": "Tuvalu" + }, + { + "code": "TZA", + "name": "United Republic of Tanzania (the)" + }, + { + "code": "UKR", + "name": "Ukraine" + }, + { + "code": "UGA", + "name": "Uganda" + }, + { + "code": "USA", + "name": "United States of America (the)" + }, + { + "code": "URY", + "name": "Uruguay" + }, + { + "code": "UZB", + "name": "Uzbekistan" + }, + { + "code": "VCT", + "name": "Saint Vincent and the Grenadines" + }, + { + "code": "VEN", + "name": "Venezuela (Bolivarian Republic of)" + }, + { + "code": "VNM", + "name": "Viet Nam" + }, + { + "code": "VUT", + "name": "Vanuatu" + }, + { + "code": "WSM", + "name": "Samoa" + }, + { + "code": "YEM", + "name": "Yemen" + }, + { + "code": "ZAF", + "name": "South Africa" + }, + { + "code": "ZMB", + "name": "Zambia" + }, + { + "code": "ZWE", + "name": "Zimbabwe" + }, + { + "code": "SSD", + "name": "South Sudan" + }, + { + "code": "PSE", + "name": "West Bank and Gaza Strip" + }, + { + "code": "EX", + "name": "Exercise Maranisk" + }, + { + "code": "VA", + "name": "Holy See" + }, + { + "code": "AIA", + "name": "Anguilla" + }, + { + "code": "ANT", + "name": "Netherlands Antilles" + }, + { + "code": "ASM", + "name": "American Samoa" + }, + { + "code": "ABW", + "name": "Aruba" + }, + { + "code": "BMU", + "name": "Bermuda" + }, + { + "code": "GUF", + "name": "French Guiana" + }, + { + "code": "GLP", + "name": "Guadeloupe" + }, + { + "code": "GUM", + "name": "Guam" + }, + { + "code": "CYM", + "name": "Cayman Islands" + }, + { + "code": "MTQ", + "name": "Martinique" + }, + { + "code": "MSR", + "name": "Montserrat" + }, + { + "code": "NCL", + "name": "New Caledonia" + }, + { + "code": "PYF", + "name": "French Polynesia" + }, + { + "code": "PCN", + "name": "Pitcairn Islands" + }, + { + "code": "PRI", + "name": "Puerto Rico" + }, + { + "code": "TCA", + "name": "Turks and Caicos Islands" + }, + { + "code": "TKL", + "name": "Tokelau" + }, + { + "code": "VGB", + "name": "British Virgin Islands" + }, + { + "code": "VIR", + "name": "United States Virgin Islands" + }, + { + "code": "WLF", + "name": "Wallis And Futuna" + }, + { + "code": "MNP", + "name": "Northern Mariana Islands" + }, + { + "code": "CX", + "name": "Christmas Island" + }, + { + "code": "FK", + "name": "Falkland Islands (Malvinas)" + }, + { + "code": "FO", + "name": "Faroe Islands" + }, + { + "code": "GI", + "name": "Gibraltar" + }, + { + "code": "GL", + "name": "Greenland" + }, + { + "code": "HK", + "name": "China (Hong Kong SAR)" + }, + { + "code": "IM", + "name": "Isle of Man" + }, + { + "code": "KO", + "name": "Kosovo" + }, + { + "code": "MO", + "name": "China (Macao SAR)" + }, + { + "code": "NF", + "name": "Norfolk Island" + }, + { + "code": "PM", + "name": "Saint Pierre and Miquelon" + }, + { + "code": "RE", + "name": "Reunion" + }, + { + "code": "SJ", + "name": "Svalbard and Jan Mayen Islands" + }, + { + "code": "TW", + "name": "China (Province of Taiwan)" + }, + { + "code": "YT", + "name": "Mayotte" + }, + { + "code": "XH", + "name": "Guernsey" + }, + { + "code": "XK", + "name": "Jersey" + }, + { + "code": "XR", + "name": "Johnston Atoll" + }, + { + "code": "XS", + "name": "Midway Islands" + }, + { + "code": "GS", + "name": "South Georgia and the South Sandwich Islands" + }, + { + "code": "BL", + "name": "Saint Barthelemy" + }, + { + "code": "MF", + "name": "Saint Martin" + }, + { + "code": "IO", + "name": "British Indian Ocean Territory" + }, + { + "code": "SH", + "name": "Saint Helena" + }, + { + "code": "CW", + "name": "Curacao" + }, + { + "code": "SX", + "name": "Sint Maarten" + }, + { + "code": "BQ", + "name": "Bonaire, Sint Eustatius and Saba" + }, + { + "code": "test00000", + "name": "test00000" + }, + { + "code": "TSCTRY", + "name": "Test SEARO Country" + } +] \ No newline at end of file diff --git a/libs/shared/src/i18n/en.json b/libs/shared/src/i18n/en.json index c94eae49c9..159f2493ec 100644 --- a/libs/shared/src/i18n/en.json +++ b/libs/shared/src/i18n/en.json @@ -577,6 +577,7 @@ }, "settings": { "actions": "Actions", + "geographicContext": "Enable geographic context", "selectIcon": "Select an icon", "tooltip": { "autoSave": "Changes are automatically saved" diff --git a/libs/shared/src/i18n/fr.json b/libs/shared/src/i18n/fr.json index 8359604c7d..925f2db23f 100644 --- a/libs/shared/src/i18n/fr.json +++ b/libs/shared/src/i18n/fr.json @@ -583,6 +583,7 @@ }, "settings": { "actions": "Actions", + "geographicContext": "Activer le contexte géographique", "selectIcon": "Sélectionnez une icône", "tooltip": { "autoSave": "Les modifications sont automatiquement enregistrées" diff --git a/libs/shared/src/i18n/test.json b/libs/shared/src/i18n/test.json index 03ef64dc98..f62b913f66 100644 --- a/libs/shared/src/i18n/test.json +++ b/libs/shared/src/i18n/test.json @@ -577,6 +577,7 @@ }, "settings": { "actions": "******", + "geographicContext": "******", "selectIcon": "******", "tooltip": { "autoSave": "******" diff --git a/libs/shared/src/lib/models/page.model.ts b/libs/shared/src/lib/models/page.model.ts index f8a11d5f59..a495d14d24 100644 --- a/libs/shared/src/lib/models/page.model.ts +++ b/libs/shared/src/lib/models/page.model.ts @@ -32,6 +32,13 @@ export type PageContextT = ( displayField: string; }; +/** Page geographic context interface */ +export interface PageGeographicContextType { + enabled: boolean; + region?: string; + country?: string; +} + /** * Available content types. */ @@ -89,6 +96,7 @@ export interface Page { ) & { content: string; })[]; + geographicContext?: PageGeographicContextType; autoDeletedAt?: Date; } diff --git a/libs/shared/src/lib/services/application/application.service.ts b/libs/shared/src/lib/services/application/application.service.ts index 1254728e42..a5bd6ce166 100644 --- a/libs/shared/src/lib/services/application/application.service.ts +++ b/libs/shared/src/lib/services/application/application.service.ts @@ -2066,4 +2066,46 @@ export class ApplicationService { }); } } + + /** + * Update page geographic context + * + * @param page page to update + * @param callback callback method + */ + updatePageGeographicContext(page: Page, callback?: any): void { + const application = this.application.getValue(); + if (application && this.isUnlocked) { + this.apollo + .mutate({ + mutation: EDIT_PAGE, + variables: { + id: page.id, + geographicContext: page.geographicContext, + }, + }) + .subscribe(({ errors, data }) => { + this.handleEditionMutationResponse( + errors, + this.translate.instant('common.page.one') + ); + if (!errors && data) { + const newApplication = { + ...application, + pages: application.pages?.map((x) => { + if (x.id === page.id) { + x = { + ...x, + geographicContext: data.editPage.geographicContext, + }; + } + return x; + }), + }; + this.application.next(newApplication); + if (callback) callback(); + } + }); + } + } } diff --git a/libs/shared/src/lib/services/application/graphql/mutations.ts b/libs/shared/src/lib/services/application/graphql/mutations.ts index d8e244cd2d..b2128480a5 100644 --- a/libs/shared/src/lib/services/application/graphql/mutations.ts +++ b/libs/shared/src/lib/services/application/graphql/mutations.ts @@ -81,6 +81,7 @@ export const EDIT_PAGE = gql` $icon: String $permissions: JSON $visible: Boolean + $geographicContext: PageGeographicContextInputType ) { editPage( id: $id @@ -88,6 +89,7 @@ export const EDIT_PAGE = gql` icon: $icon permissions: $permissions visible: $visible + geographicContext: $geographicContext ) { id name From 1408080a3eefc18a8fb0bda9b29445bd7bdb4039 Mon Sep 17 00:00:00 2001 From: Unai Zalba Date: Tue, 12 Dec 2023 09:04:15 +0100 Subject: [PATCH 2/2] feat/AB#80876-add-geographic-context-in-page refactor: region and country assignation in the html template without the $any cast refactor: move region list to the countries.json file in order to keep all geographic context related in the same place. Renamed countries.json file to geographic-context-data.json --- .../pages/dashboard/dashboard.component.html | 16 +- .../pages/dashboard/dashboard.component.ts | 51 +- assets/countries.json | 994 ---------------- assets/geographic-context-data.json | 1026 +++++++++++++++++ .../application/application.service.ts | 52 +- 5 files changed, 1074 insertions(+), 1065 deletions(-) delete mode 100644 assets/countries.json create mode 100644 assets/geographic-context-data.json diff --git a/apps/back-office/src/app/dashboard/pages/dashboard/dashboard.component.html b/apps/back-office/src/app/dashboard/pages/dashboard/dashboard.component.html index f971b3a311..fb701c338f 100644 --- a/apps/back-office/src/app/dashboard/pages/dashboard/dashboard.component.html +++ b/apps/back-office/src/app/dashboard/pages/dashboard/dashboard.component.html @@ -189,11 +189,9 @@

- + @@ -207,12 +205,12 @@

- - {{ 'components.user.summary.country' | translate }} + (''); /** Geographic context region form control */ @@ -903,18 +874,16 @@ export class DashboardComponent /** * Update query based on text search. * - * @param update values to update in the page geographicContext - * @param update.region region selected - * @param update.country country selected + * @param value value selected + * @param geographicType geographic data type */ - public onSearchChangeGeographicContext(update: { - region?: string; - country?: string; - }): void { + public onSearchChangeGeographicContext( + value: string | string[], + geographicType: 'region' | 'country' + ): void { const geographicContext = { ...this.dashboard?.page?.geographicContext, - ...(update.region && { region: update.region }), - ...(update.country && { country: update.country }), + ...(value && { [geographicType]: value }), }; const callback = () => { this.dashboard = { diff --git a/assets/countries.json b/assets/countries.json deleted file mode 100644 index e8bbaa65c1..0000000000 --- a/assets/countries.json +++ /dev/null @@ -1,994 +0,0 @@ -[ - { - "code": "AND", - "name": "Andorra" - }, - { - "code": "ARE", - "name": "United Arab Emirates (the)" - }, - { - "code": "AFG", - "name": "Afghanistan" - }, - { - "code": "ATG", - "name": "Antigua and Barbuda" - }, - { - "code": "ALB", - "name": "Albania" - }, - { - "code": "ARM", - "name": "Armenia" - }, - { - "code": "AGO", - "name": "Angola" - }, - { - "code": "ARG", - "name": "Argentina" - }, - { - "code": "AUT", - "name": "Austria" - }, - { - "code": "AUS", - "name": "Australia" - }, - { - "code": "AZE", - "name": "Azerbaijan" - }, - { - "code": "BIH", - "name": "Bosnia and Herzegovina" - }, - { - "code": "BRB", - "name": "Barbados" - }, - { - "code": "BGD", - "name": "Bangladesh" - }, - { - "code": "BEL", - "name": "Belgium" - }, - { - "code": "BFA", - "name": "Burkina Faso" - }, - { - "code": "BGR", - "name": "Bulgaria" - }, - { - "code": "BHR", - "name": "Bahrain" - }, - { - "code": "BDI", - "name": "Burundi" - }, - { - "code": "BEN", - "name": "Benin" - }, - { - "code": "BRN", - "name": "Brunei Darussalam" - }, - { - "code": "BOL", - "name": "Bolivia (the Plurinational State of)" - }, - { - "code": "BRA", - "name": "Brazil" - }, - { - "code": "BHS", - "name": "Bahamas (the)" - }, - { - "code": "BTN", - "name": "Bhutan" - }, - { - "code": "BWA", - "name": "Botswana" - }, - { - "code": "BLR", - "name": "Belarus" - }, - { - "code": "BLZ", - "name": "Belize" - }, - { - "code": "CAN", - "name": "Canada" - }, - { - "code": "COD", - "name": "Democratic Republic of the Congo (the)" - }, - { - "code": "CAF", - "name": "Central African Republic (the)" - }, - { - "code": "COG", - "name": "Congo (the)" - }, - { - "code": "CHE", - "name": "Switzerland" - }, - { - "code": "CIV", - "name": "Côte d’Ivoire" - }, - { - "code": "COK", - "name": "Cook Islands" - }, - { - "code": "CHL", - "name": "Chile" - }, - { - "code": "CMR", - "name": "Cameroon" - }, - { - "code": "CHN", - "name": "China" - }, - { - "code": "COL", - "name": "Colombia" - }, - { - "code": "CRI", - "name": "Costa Rica" - }, - { - "code": "CUB", - "name": "Cuba" - }, - { - "code": "CPV", - "name": "Cape Verde" - }, - { - "code": "CYP", - "name": "Cyprus" - }, - { - "code": "CZE", - "name": "Czechia" - }, - { - "code": "DEU", - "name": "Germany" - }, - { - "code": "DJI", - "name": "Djibouti" - }, - { - "code": "DNK", - "name": "Denmark" - }, - { - "code": "DMA", - "name": "Dominica" - }, - { - "code": "DOM", - "name": "Dominican Republic (the)" - }, - { - "code": "DZA", - "name": "Algeria" - }, - { - "code": "ECU", - "name": "Ecuador" - }, - { - "code": "EST", - "name": "Estonia" - }, - { - "code": "EGY", - "name": "Egypt" - }, - { - "code": "ERI", - "name": "Eritrea" - }, - { - "code": "ESP", - "name": "Spain" - }, - { - "code": "ETH", - "name": "Ethiopia" - }, - { - "code": "FIN", - "name": "Finland" - }, - { - "code": "FJI", - "name": "Fiji" - }, - { - "code": "FSM", - "name": "Micronesia (Federated States of)" - }, - { - "code": "FRA", - "name": "France" - }, - { - "code": "GAB", - "name": "Gabon" - }, - { - "code": "GBR", - "name": "United Kingdom" - }, - { - "code": "GRD", - "name": "Grenada" - }, - { - "code": "GEO", - "name": "Georgia" - }, - { - "code": "GHA", - "name": "Ghana" - }, - { - "code": "GMB", - "name": "Gambia (the)" - }, - { - "code": "GIN", - "name": "Guinea" - }, - { - "code": "GNQ", - "name": "Equatorial Guinea" - }, - { - "code": "GRC", - "name": "Greece" - }, - { - "code": "GTM", - "name": "Guatemala" - }, - { - "code": "GNB", - "name": "Guinea-Bissau" - }, - { - "code": "GUY", - "name": "Guyana" - }, - { - "code": "HND", - "name": "Honduras" - }, - { - "code": "HRV", - "name": "Croatia" - }, - { - "code": "HTI", - "name": "Haiti" - }, - { - "code": "HUN", - "name": "Hungary" - }, - { - "code": "IDN", - "name": "Indonesia" - }, - { - "code": "IRL", - "name": "Ireland" - }, - { - "code": "ISR", - "name": "Israel" - }, - { - "code": "IND", - "name": "India" - }, - { - "code": "IRQ", - "name": "Iraq" - }, - { - "code": "IRN", - "name": "Iran (Islamic Republic of)" - }, - { - "code": "ISL", - "name": "Iceland" - }, - { - "code": "ITA", - "name": "Italy" - }, - { - "code": "JAM", - "name": "Jamaica" - }, - { - "code": "JOR", - "name": "Jordan" - }, - { - "code": "JPN", - "name": "Japan" - }, - { - "code": "KEN", - "name": "Kenya" - }, - { - "code": "KGZ", - "name": "Kyrgyzstan" - }, - { - "code": "KHM", - "name": "Cambodia" - }, - { - "code": "KIR", - "name": "Kiribati" - }, - { - "code": "COM", - "name": "Comoros (the)" - }, - { - "code": "KNA", - "name": "Saint Kitts and Nevis" - }, - { - "code": "PRK", - "name": "Democratic People’s Republic of Korea (the)" - }, - { - "code": "KOR", - "name": "Republic of Korea (the)" - }, - { - "code": "KWT", - "name": "Kuwait" - }, - { - "code": "KAZ", - "name": "Kazakhstan" - }, - { - "code": "LAO", - "name": "Lao People’s Democratic Republic (the)" - }, - { - "code": "LBN", - "name": "Lebanon" - }, - { - "code": "LCA", - "name": "Saint Lucia" - }, - { - "code": "LIE", - "name": "Liechtenstein" - }, - { - "code": "LKA", - "name": "Sri Lanka" - }, - { - "code": "LBR", - "name": "Liberia" - }, - { - "code": "LSO", - "name": "Lesotho" - }, - { - "code": "LTU", - "name": "Lithuania" - }, - { - "code": "LUX", - "name": "Luxembourg" - }, - { - "code": "LVA", - "name": "Latvia" - }, - { - "code": "LBY", - "name": "Libya" - }, - { - "code": "MAR", - "name": "Morocco" - }, - { - "code": "MCO", - "name": "Monaco" - }, - { - "code": "MDA", - "name": "the Republic of Moldova" - }, - { - "code": "MNE", - "name": "Montenegro" - }, - { - "code": "MDG", - "name": "Madagascar" - }, - { - "code": "MHL", - "name": "Marshall Islands (the)" - }, - { - "code": "MKD", - "name": "North Macedonia" - }, - { - "code": "MLI", - "name": "Mali" - }, - { - "code": "MMR", - "name": "Myanmar" - }, - { - "code": "MNG", - "name": "Mongolia" - }, - { - "code": "MRT", - "name": "Mauritania" - }, - { - "code": "MLT", - "name": "Malta" - }, - { - "code": "MUS", - "name": "Mauritius" - }, - { - "code": "MDV", - "name": "Maldives" - }, - { - "code": "MWI", - "name": "Malawi" - }, - { - "code": "MEX", - "name": "Mexico" - }, - { - "code": "MYS", - "name": "Malaysia" - }, - { - "code": "MOZ", - "name": "Mozambique" - }, - { - "code": "NAM", - "name": "Namibia" - }, - { - "code": "NER", - "name": "Niger (the)" - }, - { - "code": "NGA", - "name": "Nigeria" - }, - { - "code": "NIC", - "name": "Nicaragua" - }, - { - "code": "NLD", - "name": "Netherlands (the)" - }, - { - "code": "NOR", - "name": "Norway" - }, - { - "code": "NPL", - "name": "Nepal" - }, - { - "code": "NRU", - "name": "Nauru" - }, - { - "code": "NIU", - "name": "Niue" - }, - { - "code": "NZL", - "name": "New Zealand" - }, - { - "code": "OMN", - "name": "Oman" - }, - { - "code": "PAN", - "name": "Panama" - }, - { - "code": "PER", - "name": "Peru" - }, - { - "code": "PNG", - "name": "Papua New Guinea" - }, - { - "code": "PHL", - "name": "Philippines (the)" - }, - { - "code": "PAK", - "name": "Pakistan" - }, - { - "code": "POL", - "name": "Poland" - }, - { - "code": "PRT", - "name": "Portugal" - }, - { - "code": "PLW", - "name": "Palau" - }, - { - "code": "PRY", - "name": "Paraguay" - }, - { - "code": "QAT", - "name": "Qatar" - }, - { - "code": "ROU", - "name": "Romania" - }, - { - "code": "SRB", - "name": "Serbia" - }, - { - "code": "RUS", - "name": "Russian Federation (the)" - }, - { - "code": "RWA", - "name": "Rwanda" - }, - { - "code": "SAU", - "name": "Saudi Arabia" - }, - { - "code": "SLB", - "name": "Solomon Islands" - }, - { - "code": "SYC", - "name": "Seychelles" - }, - { - "code": "SDN", - "name": "Sudan (the)" - }, - { - "code": "SWE", - "name": "Sweden" - }, - { - "code": "SGP", - "name": "Singapore" - }, - { - "code": "SVN", - "name": "Slovenia" - }, - { - "code": "SVK", - "name": "Slovakia" - }, - { - "code": "SLE", - "name": "Sierra Leone" - }, - { - "code": "SMR", - "name": "San Marino" - }, - { - "code": "SEN", - "name": "Senegal" - }, - { - "code": "SOM", - "name": "Somalia" - }, - { - "code": "SUR", - "name": "Suriname" - }, - { - "code": "STP", - "name": "Sao Tome and Principe" - }, - { - "code": "SLV", - "name": "El Salvador" - }, - { - "code": "SYR", - "name": "Syrian Arab Republic (the)" - }, - { - "code": "SWZ", - "name": "Eswatini" - }, - { - "code": "TCD", - "name": "Chad" - }, - { - "code": "TGO", - "name": "Togo" - }, - { - "code": "THA", - "name": "Thailand" - }, - { - "code": "TJK", - "name": "Tajikistan" - }, - { - "code": "TLS", - "name": "Timor-Leste" - }, - { - "code": "TKM", - "name": "Turkmenistan" - }, - { - "code": "TUN", - "name": "Tunisia" - }, - { - "code": "TON", - "name": "Tonga" - }, - { - "code": "TUR", - "name": "Türkiye" - }, - { - "code": "TTO", - "name": "Trinidad and Tobago" - }, - { - "code": "TUV", - "name": "Tuvalu" - }, - { - "code": "TZA", - "name": "United Republic of Tanzania (the)" - }, - { - "code": "UKR", - "name": "Ukraine" - }, - { - "code": "UGA", - "name": "Uganda" - }, - { - "code": "USA", - "name": "United States of America (the)" - }, - { - "code": "URY", - "name": "Uruguay" - }, - { - "code": "UZB", - "name": "Uzbekistan" - }, - { - "code": "VCT", - "name": "Saint Vincent and the Grenadines" - }, - { - "code": "VEN", - "name": "Venezuela (Bolivarian Republic of)" - }, - { - "code": "VNM", - "name": "Viet Nam" - }, - { - "code": "VUT", - "name": "Vanuatu" - }, - { - "code": "WSM", - "name": "Samoa" - }, - { - "code": "YEM", - "name": "Yemen" - }, - { - "code": "ZAF", - "name": "South Africa" - }, - { - "code": "ZMB", - "name": "Zambia" - }, - { - "code": "ZWE", - "name": "Zimbabwe" - }, - { - "code": "SSD", - "name": "South Sudan" - }, - { - "code": "PSE", - "name": "West Bank and Gaza Strip" - }, - { - "code": "EX", - "name": "Exercise Maranisk" - }, - { - "code": "VA", - "name": "Holy See" - }, - { - "code": "AIA", - "name": "Anguilla" - }, - { - "code": "ANT", - "name": "Netherlands Antilles" - }, - { - "code": "ASM", - "name": "American Samoa" - }, - { - "code": "ABW", - "name": "Aruba" - }, - { - "code": "BMU", - "name": "Bermuda" - }, - { - "code": "GUF", - "name": "French Guiana" - }, - { - "code": "GLP", - "name": "Guadeloupe" - }, - { - "code": "GUM", - "name": "Guam" - }, - { - "code": "CYM", - "name": "Cayman Islands" - }, - { - "code": "MTQ", - "name": "Martinique" - }, - { - "code": "MSR", - "name": "Montserrat" - }, - { - "code": "NCL", - "name": "New Caledonia" - }, - { - "code": "PYF", - "name": "French Polynesia" - }, - { - "code": "PCN", - "name": "Pitcairn Islands" - }, - { - "code": "PRI", - "name": "Puerto Rico" - }, - { - "code": "TCA", - "name": "Turks and Caicos Islands" - }, - { - "code": "TKL", - "name": "Tokelau" - }, - { - "code": "VGB", - "name": "British Virgin Islands" - }, - { - "code": "VIR", - "name": "United States Virgin Islands" - }, - { - "code": "WLF", - "name": "Wallis And Futuna" - }, - { - "code": "MNP", - "name": "Northern Mariana Islands" - }, - { - "code": "CX", - "name": "Christmas Island" - }, - { - "code": "FK", - "name": "Falkland Islands (Malvinas)" - }, - { - "code": "FO", - "name": "Faroe Islands" - }, - { - "code": "GI", - "name": "Gibraltar" - }, - { - "code": "GL", - "name": "Greenland" - }, - { - "code": "HK", - "name": "China (Hong Kong SAR)" - }, - { - "code": "IM", - "name": "Isle of Man" - }, - { - "code": "KO", - "name": "Kosovo" - }, - { - "code": "MO", - "name": "China (Macao SAR)" - }, - { - "code": "NF", - "name": "Norfolk Island" - }, - { - "code": "PM", - "name": "Saint Pierre and Miquelon" - }, - { - "code": "RE", - "name": "Reunion" - }, - { - "code": "SJ", - "name": "Svalbard and Jan Mayen Islands" - }, - { - "code": "TW", - "name": "China (Province of Taiwan)" - }, - { - "code": "YT", - "name": "Mayotte" - }, - { - "code": "XH", - "name": "Guernsey" - }, - { - "code": "XK", - "name": "Jersey" - }, - { - "code": "XR", - "name": "Johnston Atoll" - }, - { - "code": "XS", - "name": "Midway Islands" - }, - { - "code": "GS", - "name": "South Georgia and the South Sandwich Islands" - }, - { - "code": "BL", - "name": "Saint Barthelemy" - }, - { - "code": "MF", - "name": "Saint Martin" - }, - { - "code": "IO", - "name": "British Indian Ocean Territory" - }, - { - "code": "SH", - "name": "Saint Helena" - }, - { - "code": "CW", - "name": "Curacao" - }, - { - "code": "SX", - "name": "Sint Maarten" - }, - { - "code": "BQ", - "name": "Bonaire, Sint Eustatius and Saba" - }, - { - "code": "test00000", - "name": "test00000" - }, - { - "code": "TSCTRY", - "name": "Test SEARO Country" - } -] \ No newline at end of file diff --git a/assets/geographic-context-data.json b/assets/geographic-context-data.json new file mode 100644 index 0000000000..6b19c17377 --- /dev/null +++ b/assets/geographic-context-data.json @@ -0,0 +1,1026 @@ +{ + "regions": [ + { + "code": "AF", + "name": "AFRO" + }, + { + "code": "AM", + "name": "AMRO" + }, + { + "code": "EM", + "name": "EMRO" + }, + { + "code": "EU", + "name": "EURO" + }, + { + "code": "SE", + "name": "SEARO" + }, + { + "code": "WP", + "name": "WPRO" + }, + { + "code": "HQ", + "name": "HQ" + } + ], + "countries": [ + { + "code": "AND", + "name": "Andorra" + }, + { + "code": "ARE", + "name": "United Arab Emirates (the)" + }, + { + "code": "AFG", + "name": "Afghanistan" + }, + { + "code": "ATG", + "name": "Antigua and Barbuda" + }, + { + "code": "ALB", + "name": "Albania" + }, + { + "code": "ARM", + "name": "Armenia" + }, + { + "code": "AGO", + "name": "Angola" + }, + { + "code": "ARG", + "name": "Argentina" + }, + { + "code": "AUT", + "name": "Austria" + }, + { + "code": "AUS", + "name": "Australia" + }, + { + "code": "AZE", + "name": "Azerbaijan" + }, + { + "code": "BIH", + "name": "Bosnia and Herzegovina" + }, + { + "code": "BRB", + "name": "Barbados" + }, + { + "code": "BGD", + "name": "Bangladesh" + }, + { + "code": "BEL", + "name": "Belgium" + }, + { + "code": "BFA", + "name": "Burkina Faso" + }, + { + "code": "BGR", + "name": "Bulgaria" + }, + { + "code": "BHR", + "name": "Bahrain" + }, + { + "code": "BDI", + "name": "Burundi" + }, + { + "code": "BEN", + "name": "Benin" + }, + { + "code": "BRN", + "name": "Brunei Darussalam" + }, + { + "code": "BOL", + "name": "Bolivia (the Plurinational State of)" + }, + { + "code": "BRA", + "name": "Brazil" + }, + { + "code": "BHS", + "name": "Bahamas (the)" + }, + { + "code": "BTN", + "name": "Bhutan" + }, + { + "code": "BWA", + "name": "Botswana" + }, + { + "code": "BLR", + "name": "Belarus" + }, + { + "code": "BLZ", + "name": "Belize" + }, + { + "code": "CAN", + "name": "Canada" + }, + { + "code": "COD", + "name": "Democratic Republic of the Congo (the)" + }, + { + "code": "CAF", + "name": "Central African Republic (the)" + }, + { + "code": "COG", + "name": "Congo (the)" + }, + { + "code": "CHE", + "name": "Switzerland" + }, + { + "code": "CIV", + "name": "Côte d’Ivoire" + }, + { + "code": "COK", + "name": "Cook Islands" + }, + { + "code": "CHL", + "name": "Chile" + }, + { + "code": "CMR", + "name": "Cameroon" + }, + { + "code": "CHN", + "name": "China" + }, + { + "code": "COL", + "name": "Colombia" + }, + { + "code": "CRI", + "name": "Costa Rica" + }, + { + "code": "CUB", + "name": "Cuba" + }, + { + "code": "CPV", + "name": "Cape Verde" + }, + { + "code": "CYP", + "name": "Cyprus" + }, + { + "code": "CZE", + "name": "Czechia" + }, + { + "code": "DEU", + "name": "Germany" + }, + { + "code": "DJI", + "name": "Djibouti" + }, + { + "code": "DNK", + "name": "Denmark" + }, + { + "code": "DMA", + "name": "Dominica" + }, + { + "code": "DOM", + "name": "Dominican Republic (the)" + }, + { + "code": "DZA", + "name": "Algeria" + }, + { + "code": "ECU", + "name": "Ecuador" + }, + { + "code": "EST", + "name": "Estonia" + }, + { + "code": "EGY", + "name": "Egypt" + }, + { + "code": "ERI", + "name": "Eritrea" + }, + { + "code": "ESP", + "name": "Spain" + }, + { + "code": "ETH", + "name": "Ethiopia" + }, + { + "code": "FIN", + "name": "Finland" + }, + { + "code": "FJI", + "name": "Fiji" + }, + { + "code": "FSM", + "name": "Micronesia (Federated States of)" + }, + { + "code": "FRA", + "name": "France" + }, + { + "code": "GAB", + "name": "Gabon" + }, + { + "code": "GBR", + "name": "United Kingdom" + }, + { + "code": "GRD", + "name": "Grenada" + }, + { + "code": "GEO", + "name": "Georgia" + }, + { + "code": "GHA", + "name": "Ghana" + }, + { + "code": "GMB", + "name": "Gambia (the)" + }, + { + "code": "GIN", + "name": "Guinea" + }, + { + "code": "GNQ", + "name": "Equatorial Guinea" + }, + { + "code": "GRC", + "name": "Greece" + }, + { + "code": "GTM", + "name": "Guatemala" + }, + { + "code": "GNB", + "name": "Guinea-Bissau" + }, + { + "code": "GUY", + "name": "Guyana" + }, + { + "code": "HND", + "name": "Honduras" + }, + { + "code": "HRV", + "name": "Croatia" + }, + { + "code": "HTI", + "name": "Haiti" + }, + { + "code": "HUN", + "name": "Hungary" + }, + { + "code": "IDN", + "name": "Indonesia" + }, + { + "code": "IRL", + "name": "Ireland" + }, + { + "code": "ISR", + "name": "Israel" + }, + { + "code": "IND", + "name": "India" + }, + { + "code": "IRQ", + "name": "Iraq" + }, + { + "code": "IRN", + "name": "Iran (Islamic Republic of)" + }, + { + "code": "ISL", + "name": "Iceland" + }, + { + "code": "ITA", + "name": "Italy" + }, + { + "code": "JAM", + "name": "Jamaica" + }, + { + "code": "JOR", + "name": "Jordan" + }, + { + "code": "JPN", + "name": "Japan" + }, + { + "code": "KEN", + "name": "Kenya" + }, + { + "code": "KGZ", + "name": "Kyrgyzstan" + }, + { + "code": "KHM", + "name": "Cambodia" + }, + { + "code": "KIR", + "name": "Kiribati" + }, + { + "code": "COM", + "name": "Comoros (the)" + }, + { + "code": "KNA", + "name": "Saint Kitts and Nevis" + }, + { + "code": "PRK", + "name": "Democratic People’s Republic of Korea (the)" + }, + { + "code": "KOR", + "name": "Republic of Korea (the)" + }, + { + "code": "KWT", + "name": "Kuwait" + }, + { + "code": "KAZ", + "name": "Kazakhstan" + }, + { + "code": "LAO", + "name": "Lao People’s Democratic Republic (the)" + }, + { + "code": "LBN", + "name": "Lebanon" + }, + { + "code": "LCA", + "name": "Saint Lucia" + }, + { + "code": "LIE", + "name": "Liechtenstein" + }, + { + "code": "LKA", + "name": "Sri Lanka" + }, + { + "code": "LBR", + "name": "Liberia" + }, + { + "code": "LSO", + "name": "Lesotho" + }, + { + "code": "LTU", + "name": "Lithuania" + }, + { + "code": "LUX", + "name": "Luxembourg" + }, + { + "code": "LVA", + "name": "Latvia" + }, + { + "code": "LBY", + "name": "Libya" + }, + { + "code": "MAR", + "name": "Morocco" + }, + { + "code": "MCO", + "name": "Monaco" + }, + { + "code": "MDA", + "name": "the Republic of Moldova" + }, + { + "code": "MNE", + "name": "Montenegro" + }, + { + "code": "MDG", + "name": "Madagascar" + }, + { + "code": "MHL", + "name": "Marshall Islands (the)" + }, + { + "code": "MKD", + "name": "North Macedonia" + }, + { + "code": "MLI", + "name": "Mali" + }, + { + "code": "MMR", + "name": "Myanmar" + }, + { + "code": "MNG", + "name": "Mongolia" + }, + { + "code": "MRT", + "name": "Mauritania" + }, + { + "code": "MLT", + "name": "Malta" + }, + { + "code": "MUS", + "name": "Mauritius" + }, + { + "code": "MDV", + "name": "Maldives" + }, + { + "code": "MWI", + "name": "Malawi" + }, + { + "code": "MEX", + "name": "Mexico" + }, + { + "code": "MYS", + "name": "Malaysia" + }, + { + "code": "MOZ", + "name": "Mozambique" + }, + { + "code": "NAM", + "name": "Namibia" + }, + { + "code": "NER", + "name": "Niger (the)" + }, + { + "code": "NGA", + "name": "Nigeria" + }, + { + "code": "NIC", + "name": "Nicaragua" + }, + { + "code": "NLD", + "name": "Netherlands (the)" + }, + { + "code": "NOR", + "name": "Norway" + }, + { + "code": "NPL", + "name": "Nepal" + }, + { + "code": "NRU", + "name": "Nauru" + }, + { + "code": "NIU", + "name": "Niue" + }, + { + "code": "NZL", + "name": "New Zealand" + }, + { + "code": "OMN", + "name": "Oman" + }, + { + "code": "PAN", + "name": "Panama" + }, + { + "code": "PER", + "name": "Peru" + }, + { + "code": "PNG", + "name": "Papua New Guinea" + }, + { + "code": "PHL", + "name": "Philippines (the)" + }, + { + "code": "PAK", + "name": "Pakistan" + }, + { + "code": "POL", + "name": "Poland" + }, + { + "code": "PRT", + "name": "Portugal" + }, + { + "code": "PLW", + "name": "Palau" + }, + { + "code": "PRY", + "name": "Paraguay" + }, + { + "code": "QAT", + "name": "Qatar" + }, + { + "code": "ROU", + "name": "Romania" + }, + { + "code": "SRB", + "name": "Serbia" + }, + { + "code": "RUS", + "name": "Russian Federation (the)" + }, + { + "code": "RWA", + "name": "Rwanda" + }, + { + "code": "SAU", + "name": "Saudi Arabia" + }, + { + "code": "SLB", + "name": "Solomon Islands" + }, + { + "code": "SYC", + "name": "Seychelles" + }, + { + "code": "SDN", + "name": "Sudan (the)" + }, + { + "code": "SWE", + "name": "Sweden" + }, + { + "code": "SGP", + "name": "Singapore" + }, + { + "code": "SVN", + "name": "Slovenia" + }, + { + "code": "SVK", + "name": "Slovakia" + }, + { + "code": "SLE", + "name": "Sierra Leone" + }, + { + "code": "SMR", + "name": "San Marino" + }, + { + "code": "SEN", + "name": "Senegal" + }, + { + "code": "SOM", + "name": "Somalia" + }, + { + "code": "SUR", + "name": "Suriname" + }, + { + "code": "STP", + "name": "Sao Tome and Principe" + }, + { + "code": "SLV", + "name": "El Salvador" + }, + { + "code": "SYR", + "name": "Syrian Arab Republic (the)" + }, + { + "code": "SWZ", + "name": "Eswatini" + }, + { + "code": "TCD", + "name": "Chad" + }, + { + "code": "TGO", + "name": "Togo" + }, + { + "code": "THA", + "name": "Thailand" + }, + { + "code": "TJK", + "name": "Tajikistan" + }, + { + "code": "TLS", + "name": "Timor-Leste" + }, + { + "code": "TKM", + "name": "Turkmenistan" + }, + { + "code": "TUN", + "name": "Tunisia" + }, + { + "code": "TON", + "name": "Tonga" + }, + { + "code": "TUR", + "name": "Türkiye" + }, + { + "code": "TTO", + "name": "Trinidad and Tobago" + }, + { + "code": "TUV", + "name": "Tuvalu" + }, + { + "code": "TZA", + "name": "United Republic of Tanzania (the)" + }, + { + "code": "UKR", + "name": "Ukraine" + }, + { + "code": "UGA", + "name": "Uganda" + }, + { + "code": "USA", + "name": "United States of America (the)" + }, + { + "code": "URY", + "name": "Uruguay" + }, + { + "code": "UZB", + "name": "Uzbekistan" + }, + { + "code": "VCT", + "name": "Saint Vincent and the Grenadines" + }, + { + "code": "VEN", + "name": "Venezuela (Bolivarian Republic of)" + }, + { + "code": "VNM", + "name": "Viet Nam" + }, + { + "code": "VUT", + "name": "Vanuatu" + }, + { + "code": "WSM", + "name": "Samoa" + }, + { + "code": "YEM", + "name": "Yemen" + }, + { + "code": "ZAF", + "name": "South Africa" + }, + { + "code": "ZMB", + "name": "Zambia" + }, + { + "code": "ZWE", + "name": "Zimbabwe" + }, + { + "code": "SSD", + "name": "South Sudan" + }, + { + "code": "PSE", + "name": "West Bank and Gaza Strip" + }, + { + "code": "EX", + "name": "Exercise Maranisk" + }, + { + "code": "VA", + "name": "Holy See" + }, + { + "code": "AIA", + "name": "Anguilla" + }, + { + "code": "ANT", + "name": "Netherlands Antilles" + }, + { + "code": "ASM", + "name": "American Samoa" + }, + { + "code": "ABW", + "name": "Aruba" + }, + { + "code": "BMU", + "name": "Bermuda" + }, + { + "code": "GUF", + "name": "French Guiana" + }, + { + "code": "GLP", + "name": "Guadeloupe" + }, + { + "code": "GUM", + "name": "Guam" + }, + { + "code": "CYM", + "name": "Cayman Islands" + }, + { + "code": "MTQ", + "name": "Martinique" + }, + { + "code": "MSR", + "name": "Montserrat" + }, + { + "code": "NCL", + "name": "New Caledonia" + }, + { + "code": "PYF", + "name": "French Polynesia" + }, + { + "code": "PCN", + "name": "Pitcairn Islands" + }, + { + "code": "PRI", + "name": "Puerto Rico" + }, + { + "code": "TCA", + "name": "Turks and Caicos Islands" + }, + { + "code": "TKL", + "name": "Tokelau" + }, + { + "code": "VGB", + "name": "British Virgin Islands" + }, + { + "code": "VIR", + "name": "United States Virgin Islands" + }, + { + "code": "WLF", + "name": "Wallis And Futuna" + }, + { + "code": "MNP", + "name": "Northern Mariana Islands" + }, + { + "code": "CX", + "name": "Christmas Island" + }, + { + "code": "FK", + "name": "Falkland Islands (Malvinas)" + }, + { + "code": "FO", + "name": "Faroe Islands" + }, + { + "code": "GI", + "name": "Gibraltar" + }, + { + "code": "GL", + "name": "Greenland" + }, + { + "code": "HK", + "name": "China (Hong Kong SAR)" + }, + { + "code": "IM", + "name": "Isle of Man" + }, + { + "code": "KO", + "name": "Kosovo" + }, + { + "code": "MO", + "name": "China (Macao SAR)" + }, + { + "code": "NF", + "name": "Norfolk Island" + }, + { + "code": "PM", + "name": "Saint Pierre and Miquelon" + }, + { + "code": "RE", + "name": "Reunion" + }, + { + "code": "SJ", + "name": "Svalbard and Jan Mayen Islands" + }, + { + "code": "TW", + "name": "China (Province of Taiwan)" + }, + { + "code": "YT", + "name": "Mayotte" + }, + { + "code": "XH", + "name": "Guernsey" + }, + { + "code": "XK", + "name": "Jersey" + }, + { + "code": "XR", + "name": "Johnston Atoll" + }, + { + "code": "XS", + "name": "Midway Islands" + }, + { + "code": "GS", + "name": "South Georgia and the South Sandwich Islands" + }, + { + "code": "BL", + "name": "Saint Barthelemy" + }, + { + "code": "MF", + "name": "Saint Martin" + }, + { + "code": "IO", + "name": "British Indian Ocean Territory" + }, + { + "code": "SH", + "name": "Saint Helena" + }, + { + "code": "CW", + "name": "Curacao" + }, + { + "code": "SX", + "name": "Sint Maarten" + }, + { + "code": "BQ", + "name": "Bonaire, Sint Eustatius and Saba" + }, + { + "code": "test00000", + "name": "test00000" + }, + { + "code": "TSCTRY", + "name": "Test SEARO Country" + } + ] +} diff --git a/libs/shared/src/lib/services/application/application.service.ts b/libs/shared/src/lib/services/application/application.service.ts index a5bd6ce166..d506e9e1df 100644 --- a/libs/shared/src/lib/services/application/application.service.ts +++ b/libs/shared/src/lib/services/application/application.service.ts @@ -2084,27 +2084,37 @@ export class ApplicationService { geographicContext: page.geographicContext, }, }) - .subscribe(({ errors, data }) => { - this.handleEditionMutationResponse( - errors, - this.translate.instant('common.page.one') - ); - if (!errors && data) { - const newApplication = { - ...application, - pages: application.pages?.map((x) => { - if (x.id === page.id) { - x = { - ...x, - geographicContext: data.editPage.geographicContext, - }; - } - return x; - }), - }; - this.application.next(newApplication); - if (callback) callback(); - } + .subscribe({ + next: ({ errors, data }) => { + this.handleEditionMutationResponse( + errors, + this.translate.instant('common.page.one') + ); + if (!errors && data) { + const newApplication = { + ...application, + pages: application.pages?.map((x) => { + if (x.id === page.id) { + x = { + ...x, + geographicContext: data.editPage.geographicContext, + }; + } + return x; + }), + }; + this.application.next(newApplication); + if (callback) { + callback(); + } + } + }, + error: (errors: any) => { + this.handleEditionMutationResponse( + errors, + this.translate.instant('common.page.one') + ); + }, }); } }