show/hide info box and filter, languages
This commit is contained in:
parent
07638628ea
commit
f9ea03e64c
@ -74,7 +74,6 @@ class ControlInAfricaMap extends React.Component {
|
|||||||
super(props);
|
super(props);
|
||||||
|
|
||||||
this.mapRef = createRef(); // Create a ref to store the MapContainer instance
|
this.mapRef = createRef(); // Create a ref to store the MapContainer instance
|
||||||
|
|
||||||
this.state = {
|
this.state = {
|
||||||
africaCountries: null,
|
africaCountries: null,
|
||||||
countriesNames: [],
|
countriesNames: [],
|
||||||
@ -88,8 +87,9 @@ class ControlInAfricaMap extends React.Component {
|
|||||||
error: null,
|
error: null,
|
||||||
|
|
||||||
center: [3, 15],
|
center: [3, 15],
|
||||||
zoom: 4,
|
zoom: this.getZoomLevel(window.innerWidth),
|
||||||
scrollWheelZoom: false,
|
scrollWheelZoom: true,
|
||||||
|
zoomControl: false,
|
||||||
|
|
||||||
openedTooltipLayer: null,
|
openedTooltipLayer: null,
|
||||||
|
|
||||||
@ -112,116 +112,18 @@ class ControlInAfricaMap extends React.Component {
|
|||||||
infoBox: [],
|
infoBox: [],
|
||||||
showInfoBox: false,
|
showInfoBox: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
regional_organisations = [
|
|
||||||
{ name: "AU", color: "#b2df8a" },
|
|
||||||
{ name: "EAC", color: "#33a02c" },
|
|
||||||
{ name: "IGAD", color: "#fb9a99" },
|
|
||||||
{ name: "UMA", color: "#e31a1c" },
|
|
||||||
{ name: "COMESA", color: "#fdbf6f" },
|
|
||||||
{ name: "ECOWAS", color: "#ff7f00" },
|
|
||||||
{ name: "CEN-SAD", color: "#cab2d6" },
|
|
||||||
{ name: "SADC", color: "#6a3d9a" },
|
|
||||||
{ name: "ECCAS", color: "#ffff99" },
|
|
||||||
{ name: "ICGLR", color: "#b15928" },
|
|
||||||
{ name: "RECSA", color: "#a6cee3" },
|
|
||||||
{ name: "SARCOM", color: "#1f78b4" },
|
|
||||||
];
|
|
||||||
|
|
||||||
regional_treaties = [
|
|
||||||
{
|
|
||||||
name: "Bamako Declaration",
|
|
||||||
name2: "BamakoDeclaration",
|
|
||||||
icon_eligible: Icon26,
|
|
||||||
icon_signed: Icon24,
|
|
||||||
icon_ratified: null,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Kinshasa Convention",
|
|
||||||
name2: "KinshasaConvention",
|
|
||||||
icon_eligible: Icon4,
|
|
||||||
icon_signed: Icon6,
|
|
||||||
icon_ratified: Icon5,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "ECOWAS Convention",
|
|
||||||
name2: "ECOWASConvention",
|
|
||||||
icon_eligible: Icon2,
|
|
||||||
icon_signed: Icon3,
|
|
||||||
icon_ratified: null,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Khartoum Declaration",
|
|
||||||
name2: "KhartoumDeclaration",
|
|
||||||
icon_eligible: Icon21,
|
|
||||||
icon_signed: Icon23,
|
|
||||||
icon_ratified: null,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Nairobi Protocol",
|
|
||||||
name2: "NairobiProtocol",
|
|
||||||
icon_eligible: Icon22,
|
|
||||||
icon_signed: Icon25,
|
|
||||||
icon_ratified: null,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "SADC Firearms Protocol",
|
|
||||||
name2: "SADCFirearmsProtocol",
|
|
||||||
icon_eligible: Icon8,
|
|
||||||
icon_signed: Icon7,
|
|
||||||
icon_ratified: Icon9,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
international_treaties = [
|
|
||||||
{
|
|
||||||
name: "Arms Trade Treaty",
|
|
||||||
name2: "ArmsTradeTreaty",
|
|
||||||
icon_eligible: Icon19,
|
|
||||||
icon_signed: Icon17,
|
|
||||||
icon_ratified: Icon18,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Firearms Protocol",
|
|
||||||
name2: "FirearmsProtocol",
|
|
||||||
icon_eligible: Icon12,
|
|
||||||
icon_signed: Icon10,
|
|
||||||
icon_ratified: Icon11,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Wassenaar Agreement",
|
|
||||||
name2: "WassenaarAgreement",
|
|
||||||
icon_eligible: Icon15,
|
|
||||||
icon_signed: Icon13,
|
|
||||||
icon_ratified: Icon14,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
intsruments = [
|
|
||||||
{
|
|
||||||
name2: "UNProgrammeofAction",
|
|
||||||
name: "UN Programme of Action",
|
|
||||||
icon: Icon20,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name2: "InternationalTracingInstrument",
|
|
||||||
name: "International Tracing Instrument",
|
|
||||||
icon: Icon16,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name2: "StG-PoA",
|
|
||||||
name: "Silencing the Guns in Africa Programme of Action",
|
|
||||||
icon: Icon1,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
this.fetchData();
|
this.fetchData();
|
||||||
this.calculateZoomLevel();
|
window.addEventListener("resize", this.handleResize);
|
||||||
window.addEventListener("resize", this.calculateZoomLevel);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillUnmount() {}
|
componentWillUnmount() {
|
||||||
|
window.removeEventListener('resize', this.handleResize);
|
||||||
|
}
|
||||||
|
|
||||||
fetchData = async () => {
|
fetchData = async () => {
|
||||||
try {
|
try {
|
||||||
@ -251,7 +153,6 @@ class ControlInAfricaMap extends React.Component {
|
|||||||
throw new Error(`HTTP error! status: ${response.status}`);
|
throw new Error(`HTTP error! status: ${response.status}`);
|
||||||
}
|
}
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
console.log(data);
|
|
||||||
// Replace icon names with actual icon objects
|
// Replace icon names with actual icon objects
|
||||||
const regional_treaties = data.regional_treaties.map((treaty) => ({
|
const regional_treaties = data.regional_treaties.map((treaty) => ({
|
||||||
...treaty,
|
...treaty,
|
||||||
@ -290,17 +191,25 @@ class ControlInAfricaMap extends React.Component {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
calculateZoomLevel = () => {
|
getZoomLevel = () => {
|
||||||
const screenWidth = window.innerWidth;
|
const screenWidth = window.innerWidth;
|
||||||
if (screenWidth <= 768) {
|
console.log(screenWidth);
|
||||||
this.setState({ zoom: 3 });
|
if (screenWidth <= 800) {
|
||||||
|
console.log("small screen");
|
||||||
|
return 3;
|
||||||
} else if (screenWidth <= 1024) {
|
} else if (screenWidth <= 1024) {
|
||||||
this.setState({ zoom: 4 });
|
return 4;
|
||||||
} else {
|
} else {
|
||||||
this.setState({ zoom: 4 });
|
return 4;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
handleResize = () => {
|
||||||
|
this.setState({
|
||||||
|
zoom: this.getZoomLevel(window.innerWidth),
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
resetMap = () => {
|
resetMap = () => {
|
||||||
if (this.mapRef.current) {
|
if (this.mapRef.current) {
|
||||||
this.mapRef.current.setView(this.state.center, this.state.zoom); // Set the center and zoom to initial values
|
this.mapRef.current.setView(this.state.center, this.state.zoom); // Set the center and zoom to initial values
|
||||||
@ -585,6 +494,7 @@ class ControlInAfricaMap extends React.Component {
|
|||||||
selectedCountriesFeaturesRegions,
|
selectedCountriesFeaturesRegions,
|
||||||
regional_treaties,
|
regional_treaties,
|
||||||
international_treaties,
|
international_treaties,
|
||||||
|
intsruments,
|
||||||
} = this.state;
|
} = this.state;
|
||||||
|
|
||||||
// Helper function to process treaties
|
// Helper function to process treaties
|
||||||
@ -619,7 +529,7 @@ class ControlInAfricaMap extends React.Component {
|
|||||||
international_treaties
|
international_treaties
|
||||||
);
|
);
|
||||||
|
|
||||||
const organisationsInstruments = this.intsruments.map((instrument) => {
|
const organisationsInstruments = intsruments.map((instrument) => {
|
||||||
const countris = selectedCountriesFeaturesRegions.filter(
|
const countris = selectedCountriesFeaturesRegions.filter(
|
||||||
(feature) => feature.properties[instrument.name2] === 1
|
(feature) => feature.properties[instrument.name2] === 1
|
||||||
);
|
);
|
||||||
@ -678,6 +588,10 @@ class ControlInAfricaMap extends React.Component {
|
|||||||
africaCountries,
|
africaCountries,
|
||||||
loading,
|
loading,
|
||||||
error,
|
error,
|
||||||
|
zoom,
|
||||||
|
zoomControl,
|
||||||
|
center,
|
||||||
|
scrollWheelZoom,
|
||||||
countriesNames,
|
countriesNames,
|
||||||
selectedCountry,
|
selectedCountry,
|
||||||
selectedCountriesNamesRegions,
|
selectedCountriesNamesRegions,
|
||||||
@ -701,7 +615,7 @@ class ControlInAfricaMap extends React.Component {
|
|||||||
return (
|
return (
|
||||||
<Container fluid>
|
<Container fluid>
|
||||||
<Row>
|
<Row>
|
||||||
<Col sm={3}>
|
<Col className="filter-section" sm={3} >
|
||||||
<FilterBox
|
<FilterBox
|
||||||
selectedCountry={selectedCountry}
|
selectedCountry={selectedCountry}
|
||||||
countriesNames={countriesNames}
|
countriesNames={countriesNames}
|
||||||
@ -714,15 +628,15 @@ class ControlInAfricaMap extends React.Component {
|
|||||||
international_treaties={international_treaties}
|
international_treaties={international_treaties}
|
||||||
></FilterBox>
|
></FilterBox>
|
||||||
</Col>
|
</Col>
|
||||||
<Col sm={9}>
|
<Col className="map-section" sm={9}>
|
||||||
<div id="map" className="map-container">
|
<div id="map" className="map-container">
|
||||||
<MapContainer
|
<MapContainer
|
||||||
center={this.state.center}
|
center={center}
|
||||||
zoom={this.state.zoom}
|
zoom={zoom}
|
||||||
ref={this.mapRef}
|
ref={this.mapRef}
|
||||||
zoomControl={false}
|
zoomControl={zoomControl}
|
||||||
style={{ width: "100%", height: "100%" }}
|
style={{ width: "100%", height: "100%" }}
|
||||||
scrollWheelZoom={this.state.scrollWheelZoom}
|
scrollWheelZoom={scrollWheelZoom}
|
||||||
>
|
>
|
||||||
{africaCountries && (
|
{africaCountries && (
|
||||||
<>
|
<>
|
||||||
@ -800,6 +714,7 @@ class ControlInAfricaMap extends React.Component {
|
|||||||
<button onClick={this.zoomOut}>-</button>
|
<button onClick={this.zoomOut}>-</button>
|
||||||
<button onClick={this.resetMap}>*</button>
|
<button onClick={this.resetMap}>*</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="country-select">
|
<div className="country-select">
|
||||||
<select
|
<select
|
||||||
onChange={this.handleCountryChange}
|
onChange={this.handleCountryChange}
|
||||||
@ -813,6 +728,7 @@ class ControlInAfricaMap extends React.Component {
|
|||||||
))}
|
))}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{this.state.showInfoBox && (
|
{this.state.showInfoBox && (
|
||||||
<MapInfoBox
|
<MapInfoBox
|
||||||
className="info-box"
|
className="info-box"
|
||||||
|
@ -1,14 +1,27 @@
|
|||||||
import React from "react";
|
import React, { useState } from "react";
|
||||||
|
import Col from "react-bootstrap/Col";
|
||||||
import "../../../Styles/main.scss";
|
import "../../../Styles/main.scss";
|
||||||
import Geo_Org_Filter from "./Geo_Org_Filter";
|
import Geo_Org_Filter from "./Geo_Org_Filter";
|
||||||
import Reg_Org_Filter from "./Reg_Org_Filter";
|
import Reg_Org_Filter from "./Reg_Org_Filter";
|
||||||
import Treaties_Filter from "./Treaties_Filter";
|
import Treaties_Filter from "./Treaties_Filter";
|
||||||
|
import LanguageSelect from "./LanguageSelect";
|
||||||
|
|
||||||
import Icon1 from "../../../Icons/icon1.svg";
|
import Button from "react-bootstrap/Button";
|
||||||
import Icon16 from "../../../Icons/icon16.svg";
|
import Offcanvas from "react-bootstrap/Offcanvas";
|
||||||
import Icon20 from "../../../Icons/icon20.svg";
|
|
||||||
|
|
||||||
const FilterBox = (props) => {
|
const FilterBox = (props) => {
|
||||||
|
const [language, setLanguage] = useState("en");
|
||||||
|
const [show, setShow] = useState(false);
|
||||||
|
|
||||||
|
const handleLanguageChange = (language) => {
|
||||||
|
setLanguage(language);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleClose = () => setShow(false);
|
||||||
|
const toggleShow = () => setShow((s) => !s);
|
||||||
|
|
||||||
|
console.log(show);
|
||||||
|
|
||||||
const {
|
const {
|
||||||
handleOrganizationClick,
|
handleOrganizationClick,
|
||||||
handleTreatiesClick,
|
handleTreatiesClick,
|
||||||
@ -19,25 +32,40 @@ const FilterBox = (props) => {
|
|||||||
} = props;
|
} = props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={`filters-box`}>
|
<>
|
||||||
<Geo_Org_Filter
|
<Button variant="primary" className="d-lg-none" onClick={toggleShow}>
|
||||||
handleOrganizationClick={handleOrganizationClick}
|
Filters
|
||||||
geographical_organisations={geographical_organisations}
|
</Button>
|
||||||
/>
|
<Offcanvas show={show} onHide={handleClose} backdrop={false} scroll={true} responsive="lg">
|
||||||
<hr />
|
<Offcanvas.Header closeButton>
|
||||||
<Reg_Org_Filter
|
<Offcanvas.Title>Filter Box</Offcanvas.Title>
|
||||||
handleOrganizationClick={handleOrganizationClick}
|
</Offcanvas.Header>
|
||||||
regional_organisations={regional_organisations}
|
<Offcanvas.Body>
|
||||||
/>
|
<div className={`filters-box`}>
|
||||||
<hr />
|
<LanguageSelect onLanguageChange={handleLanguageChange} />
|
||||||
<Treaties_Filter
|
<hr />
|
||||||
regional_treaties={regional_treaties}
|
<Geo_Org_Filter
|
||||||
international_treaties={international_treaties}
|
handleOrganizationClick={handleOrganizationClick}
|
||||||
handleTreatiesClick={handleTreatiesClick}
|
geographical_organisations={geographical_organisations}
|
||||||
|
language={language}
|
||||||
/>
|
/>
|
||||||
|
<hr />
|
||||||
</div>
|
<Reg_Org_Filter
|
||||||
|
handleOrganizationClick={handleOrganizationClick}
|
||||||
|
regional_organisations={regional_organisations}
|
||||||
|
language={language}
|
||||||
|
/>
|
||||||
|
<hr />
|
||||||
|
<Treaties_Filter
|
||||||
|
regional_treaties={regional_treaties}
|
||||||
|
international_treaties={international_treaties}
|
||||||
|
handleTreatiesClick={handleTreatiesClick}
|
||||||
|
language={language}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Offcanvas.Body>
|
||||||
|
</Offcanvas>
|
||||||
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,27 +1,30 @@
|
|||||||
import React from 'react'
|
import React from "react";
|
||||||
|
|
||||||
const Geo_Org_Filter = (props) => {
|
const Geo_Org_Filter = (props) => {
|
||||||
const {
|
const headings = {
|
||||||
handleOrganizationClick,
|
en: "Geographical Organisations",
|
||||||
geographical_organisations,
|
fr: "Organisations Géographiques",
|
||||||
} = props;
|
ar: "المنظمات الجغرافية",
|
||||||
|
};
|
||||||
|
const { handleOrganizationClick, geographical_organisations, language } =
|
||||||
|
props;
|
||||||
return (
|
return (
|
||||||
<div>
|
<>
|
||||||
<h5>Geographical Organisations</h5>
|
<h5>{headings[language] || headings['en']} </h5>
|
||||||
<div className="regional-organisations">
|
<div className="geographical-organisations">
|
||||||
{geographical_organisations.map((org, index) => (
|
{geographical_organisations.map((org, index) => (
|
||||||
<div
|
<div
|
||||||
key={org.name}
|
key={org.name}
|
||||||
className="organization-item p-2"
|
className="organization-item p-1"
|
||||||
style={{ backgroundColor: org.color }}
|
style={{ backgroundColor: org.color }}
|
||||||
onClick={() => handleOrganizationClick(org.name, "", org.color)}
|
onClick={() => handleOrganizationClick(org.name, "", org.color)}
|
||||||
>
|
>
|
||||||
<div className="name">{org.name}</div>
|
<div className="name">{org.name}</div>
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
)
|
</>
|
||||||
}
|
);
|
||||||
|
};
|
||||||
|
|
||||||
export default Geo_Org_Filter
|
export default Geo_Org_Filter;
|
||||||
|
41
src/Components/Layout/ControlInAfrica/LanguageSelect.jsx
Normal file
41
src/Components/Layout/ControlInAfrica/LanguageSelect.jsx
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
import React, {useState} from "react";
|
||||||
|
import Button from 'react-bootstrap/Button';
|
||||||
|
import ButtonGroup from "react-bootstrap/ButtonGroup";
|
||||||
|
import ToggleButton from "react-bootstrap/ToggleButton";
|
||||||
|
const LanguageSelect = ({onLanguageChange}) => {
|
||||||
|
|
||||||
|
const [languageValue, setLanguageValue] = useState("en")
|
||||||
|
|
||||||
|
const languages = [
|
||||||
|
{ lang: "En", value: "en" },
|
||||||
|
{ lang: "Fr", value: "fr" },
|
||||||
|
{ lang: "ع", value: "ar" },
|
||||||
|
];
|
||||||
|
const handleLanguageChange = (language) => {
|
||||||
|
setLanguageValue(language);
|
||||||
|
onLanguageChange(language);
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<ButtonGroup>
|
||||||
|
<Button variant="secondary" disabled>Language:</Button>{' '}
|
||||||
|
{languages.map((language, idx) => (
|
||||||
|
<ToggleButton
|
||||||
|
key={idx}
|
||||||
|
id={`language-${idx}`}
|
||||||
|
type="radio"
|
||||||
|
variant={"outline-secondary"}
|
||||||
|
name="language"
|
||||||
|
value={language.value}
|
||||||
|
checked={languageValue === language.value}
|
||||||
|
onChange={(e) => handleLanguageChange(e.currentTarget.value)}
|
||||||
|
>
|
||||||
|
{language.lang}
|
||||||
|
</ToggleButton>
|
||||||
|
))}
|
||||||
|
</ButtonGroup>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default LanguageSelect;
|
@ -1,181 +1,174 @@
|
|||||||
import React from "react";
|
import React, { useState } from "react";
|
||||||
|
import Button from "react-bootstrap/Button";
|
||||||
|
import Collapse from "react-bootstrap/Collapse";
|
||||||
|
|
||||||
const MapInfoBox = (props) => {
|
const MapInfoBox = (props) => {
|
||||||
const regional_treaties = props.info.organisationsRegionalTreaties;
|
const regional_treaties = props.info.organisationsRegionalTreaties;
|
||||||
const international_treaties = props.info.organisationsInternationalTreaties;
|
const international_treaties = props.info.organisationsInternationalTreaties;
|
||||||
const instruments = props.info.organisationsInstruments;
|
const instruments = props.info.organisationsInstruments;
|
||||||
|
const [open, setOpen] = useState(true);
|
||||||
|
const [isHidden, setIsHidden] = useState(false);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={props.className}>
|
<div className={props.className}>
|
||||||
<h3>{props.selectedRegion}</h3>
|
<div
|
||||||
<p>Number of countries</p>
|
onClick={() => {setOpen(!open); setIsHidden(!isHidden);}}
|
||||||
<div className="table-responsive-sm">
|
aria-controls="example-collapse-text"
|
||||||
<table className="table table-sm table-striped">
|
aria-expanded={open}
|
||||||
<thead>
|
style={{ display: "flex", justifyContent: "space-between" }}
|
||||||
<tr>
|
>
|
||||||
<th className="text-center" scope="col"></th>
|
<span><h3>{props.selectedRegion}</h3></span>
|
||||||
<th className="text-center" scope="col">
|
<span><h3>{isHidden ? 'Show' : 'Hide'}</h3></span>
|
||||||
Signed
|
|
||||||
</th>
|
|
||||||
<th className="text-center" scope="col">
|
|
||||||
Eligible
|
|
||||||
</th>
|
|
||||||
<th className="text-center" scope="col">
|
|
||||||
Ratified
|
|
||||||
</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{regional_treaties &&
|
|
||||||
regional_treaties.map((item, index) => {
|
|
||||||
return (
|
|
||||||
<tr key={index}>
|
|
||||||
<th scope="row">{item.name}</th>
|
|
||||||
<td
|
|
||||||
className="text-center"
|
|
||||||
style={
|
|
||||||
item.signed
|
|
||||||
? {
|
|
||||||
color: props.selectedCountryColor,
|
|
||||||
fontWeight: "bold",
|
|
||||||
fontSize: "16px",
|
|
||||||
}
|
|
||||||
: {}
|
|
||||||
}
|
|
||||||
>
|
|
||||||
{item.signed}
|
|
||||||
</td>
|
|
||||||
<td
|
|
||||||
className="text-center"
|
|
||||||
style={
|
|
||||||
item.eligible
|
|
||||||
? {
|
|
||||||
color: props.selectedCountryColor,
|
|
||||||
fontWeight: "bold",
|
|
||||||
fontSize: "16px",
|
|
||||||
}
|
|
||||||
: {}
|
|
||||||
}
|
|
||||||
>
|
|
||||||
{item.eligible}
|
|
||||||
</td>
|
|
||||||
<td
|
|
||||||
className="text-center"
|
|
||||||
style={
|
|
||||||
item.ratified
|
|
||||||
? {
|
|
||||||
color: props.selectedCountryColor,
|
|
||||||
fontWeight: "bold",
|
|
||||||
fontSize: "16px",
|
|
||||||
}
|
|
||||||
: {}
|
|
||||||
}
|
|
||||||
>
|
|
||||||
{item.ratified}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
);
|
|
||||||
})}
|
|
||||||
|
|
||||||
{international_treaties &&
|
|
||||||
international_treaties.map((item, index) => {
|
|
||||||
return (
|
|
||||||
<tr key={index}>
|
|
||||||
<th scope="row">{item.name}</th>
|
|
||||||
<td
|
|
||||||
className="text-center"
|
|
||||||
style={
|
|
||||||
item.signed
|
|
||||||
? {
|
|
||||||
color: props.selectedCountryColor,
|
|
||||||
fontWeight: "bold",
|
|
||||||
fontSize: "16px",
|
|
||||||
}
|
|
||||||
: {}
|
|
||||||
}
|
|
||||||
>
|
|
||||||
{item.signed}
|
|
||||||
</td>
|
|
||||||
<td
|
|
||||||
className="text-center"
|
|
||||||
style={
|
|
||||||
item.eligible
|
|
||||||
? {
|
|
||||||
color: props.selectedCountryColor,
|
|
||||||
fontWeight: "bold",
|
|
||||||
fontSize: "16px",
|
|
||||||
}
|
|
||||||
: {}
|
|
||||||
}
|
|
||||||
>
|
|
||||||
{item.eligible}
|
|
||||||
</td>
|
|
||||||
<td
|
|
||||||
className="text-center"
|
|
||||||
style={
|
|
||||||
item.ratified
|
|
||||||
? {
|
|
||||||
color: props.selectedCountryColor,
|
|
||||||
fontWeight: "bold",
|
|
||||||
fontSize: "16px",
|
|
||||||
}
|
|
||||||
: {}
|
|
||||||
}
|
|
||||||
>
|
|
||||||
{item.ratified}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
);
|
|
||||||
})}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
{instruments &&
|
<Collapse in={open}>
|
||||||
instruments.map((item, index) => {
|
<div className="example-collapse-text">
|
||||||
return (
|
<p>Number of countries</p>
|
||||||
<p className="mb-1" key={index}>
|
<div className="table-responsive-sm">
|
||||||
<strong>{item.name}:</strong>{" "}
|
<table className="table table-sm table-striped">
|
||||||
<span
|
<thead>
|
||||||
style={
|
<tr>
|
||||||
item.countries
|
<th className="text-center" scope="col"></th>
|
||||||
? {
|
<th className="text-center" scope="col">
|
||||||
color: props.selectedCountryColor,
|
Signed
|
||||||
fontWeight: "bold",
|
</th>
|
||||||
fontSize: "16px",
|
<th className="text-center" scope="col">
|
||||||
}
|
Eligible
|
||||||
: {}
|
</th>
|
||||||
}
|
<th className="text-center" scope="col">
|
||||||
>
|
Ratified
|
||||||
{item.countries}
|
</th>
|
||||||
</span>
|
</tr>
|
||||||
</p>
|
</thead>
|
||||||
);
|
<tbody>
|
||||||
})}
|
{regional_treaties &&
|
||||||
|
regional_treaties.map((item, index) => {
|
||||||
|
return (
|
||||||
|
<tr key={index}>
|
||||||
|
<th scope="row">{item.name}</th>
|
||||||
|
<td
|
||||||
|
className="text-center"
|
||||||
|
style={
|
||||||
|
item.signed
|
||||||
|
? {
|
||||||
|
color: props.selectedCountryColor,
|
||||||
|
fontWeight: "bold",
|
||||||
|
fontSize: "16px",
|
||||||
|
}
|
||||||
|
: {}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{item.signed}
|
||||||
|
</td>
|
||||||
|
<td
|
||||||
|
className="text-center"
|
||||||
|
style={
|
||||||
|
item.eligible
|
||||||
|
? {
|
||||||
|
color: props.selectedCountryColor,
|
||||||
|
fontWeight: "bold",
|
||||||
|
fontSize: "16px",
|
||||||
|
}
|
||||||
|
: {}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{item.eligible}
|
||||||
|
</td>
|
||||||
|
<td
|
||||||
|
className="text-center"
|
||||||
|
style={
|
||||||
|
item.ratified
|
||||||
|
? {
|
||||||
|
color: props.selectedCountryColor,
|
||||||
|
fontWeight: "bold",
|
||||||
|
fontSize: "16px",
|
||||||
|
}
|
||||||
|
: {}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{item.ratified}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
|
||||||
|
{international_treaties &&
|
||||||
|
international_treaties.map((item, index) => {
|
||||||
|
return (
|
||||||
|
<tr key={index}>
|
||||||
|
<th scope="row">{item.name}</th>
|
||||||
|
<td
|
||||||
|
className="text-center"
|
||||||
|
style={
|
||||||
|
item.signed
|
||||||
|
? {
|
||||||
|
color: props.selectedCountryColor,
|
||||||
|
fontWeight: "bold",
|
||||||
|
fontSize: "16px",
|
||||||
|
}
|
||||||
|
: {}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{item.signed}
|
||||||
|
</td>
|
||||||
|
<td
|
||||||
|
className="text-center"
|
||||||
|
style={
|
||||||
|
item.eligible
|
||||||
|
? {
|
||||||
|
color: props.selectedCountryColor,
|
||||||
|
fontWeight: "bold",
|
||||||
|
fontSize: "16px",
|
||||||
|
}
|
||||||
|
: {}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{item.eligible}
|
||||||
|
</td>
|
||||||
|
<td
|
||||||
|
className="text-center"
|
||||||
|
style={
|
||||||
|
item.ratified
|
||||||
|
? {
|
||||||
|
color: props.selectedCountryColor,
|
||||||
|
fontWeight: "bold",
|
||||||
|
fontSize: "16px",
|
||||||
|
}
|
||||||
|
: {}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{item.ratified}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{instruments &&
|
||||||
|
instruments.map((item, index) => {
|
||||||
|
return (
|
||||||
|
<p className="mb-1" key={index}>
|
||||||
|
<strong>{item.name}:</strong>{" "}
|
||||||
|
<span
|
||||||
|
style={
|
||||||
|
item.countries
|
||||||
|
? {
|
||||||
|
color: props.selectedCountryColor,
|
||||||
|
fontWeight: "bold",
|
||||||
|
fontSize: "16px",
|
||||||
|
}
|
||||||
|
: {}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{item.countries}
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
</Collapse>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default MapInfoBox;
|
export default MapInfoBox;
|
||||||
|
|
||||||
//{regional_treaties &&
|
|
||||||
// regional_treaties.map((item, index) => {
|
|
||||||
// return (
|
|
||||||
// <div key={index}>
|
|
||||||
// <p>
|
|
||||||
// <strong>{item.name}</strong> Signed: {item.signed}, Eligible:{" "}
|
|
||||||
// {item.eligible}, Ratified: {item.ratified}
|
|
||||||
// </p>
|
|
||||||
// </div>
|
|
||||||
// );
|
|
||||||
// })}
|
|
||||||
// {international_treaties &&
|
|
||||||
// international_treaties.map((item, index) => {
|
|
||||||
// return (
|
|
||||||
// <div key={index}>
|
|
||||||
// <p>
|
|
||||||
// <strong>{item.name}</strong> Signed: {item.signed}, Eligible:{" "}
|
|
||||||
// {item.eligible}, Ratified: {item.ratified}
|
|
||||||
// </p>
|
|
||||||
// </div>
|
|
||||||
// );
|
|
||||||
// })}
|
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
const Reg_Org_Filter = (props) => {
|
const Reg_Org_Filter = (props) => {
|
||||||
const { handleOrganizationClick, regional_organisations } = props;
|
const { handleOrganizationClick, regional_organisations, language } = props;
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<h5>Regional Organisations</h5>
|
{language === "en" && <h5>Regional Organisations</h5>}
|
||||||
<h6>Organisations internationales / المنظمات الإقليمية</h6>
|
{language === "fr" && <h5>Organisations internationales</h5>}
|
||||||
|
{language === "ar" && <h5>المنظمات الإقليمية</h5>}
|
||||||
<div className="regional-organisations">
|
<div className="regional-organisations">
|
||||||
{regional_organisations.map((org, index) => (
|
{regional_organisations.map((org, index) => (
|
||||||
<div
|
<div
|
||||||
|
@ -4,31 +4,60 @@ import Icon16 from "../../../Icons/icon16.svg";
|
|||||||
import Icon20 from "../../../Icons/icon20.svg";
|
import Icon20 from "../../../Icons/icon20.svg";
|
||||||
|
|
||||||
const Treaties_Filter = (props) => {
|
const Treaties_Filter = (props) => {
|
||||||
const { international_treaties, handleTreatiesClick, regional_treaties } = props;
|
const regionalTreatiesHeadings = {
|
||||||
|
en: "Regional Treaties",
|
||||||
|
fr: "Traités régionales",
|
||||||
|
ar: "المعاهدات الأقليمية",
|
||||||
|
};
|
||||||
|
const internationalTreatiesHeadings = {
|
||||||
|
en: "International Treaties",
|
||||||
|
fr: "Traités internationales",
|
||||||
|
ar: "المعاهدات الدولية",
|
||||||
|
};
|
||||||
|
|
||||||
|
const africanGuidelinesHeadings = {
|
||||||
|
en: "African Guidelines & Instrumentss",
|
||||||
|
fr: "Directives & instruments africains",
|
||||||
|
ar: "المبادىء التوجيهية و الأدوات السياسية في افريقيا",
|
||||||
|
}
|
||||||
|
const {
|
||||||
|
international_treaties,
|
||||||
|
handleTreatiesClick,
|
||||||
|
regional_treaties,
|
||||||
|
language,
|
||||||
|
} = props;
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div>
|
<div>
|
||||||
<h5>Regional Treaties</h5>
|
<h5>
|
||||||
<h6>Traités régionales / المعاهدات الأقليمية</h6>
|
{regionalTreatiesHeadings[language] || regionalTreatiesHeadings["en"]}
|
||||||
|
</h5>
|
||||||
|
|
||||||
<div className="regional-treaties">
|
<div className="regional-treaties">
|
||||||
<div className="treaty-item mb-0">
|
{language === "en" && (
|
||||||
<div className="treaty-item-name">Eligible</div>
|
<div className="treaty-item">
|
||||||
<div className="treaty-item-name">Signed</div>
|
<div className="treaty-item-name">Eligible</div>
|
||||||
<div className="treaty-item-name">Ratified</div>
|
<div className="treaty-item-name">Signed</div>
|
||||||
<div className="treaty-item-name"></div>
|
<div className="treaty-item-name">Ratified</div>
|
||||||
</div>
|
<div className="treaty-item-name"></div>
|
||||||
<div className="treaty-item mb-0">
|
</div>
|
||||||
<div className="treaty-item-name">Eligible</div>
|
)}
|
||||||
<div className="treaty-item-name">Signé</div>
|
{language === "fr" && (
|
||||||
<div className="treaty-item-name">Ratifié</div>
|
<div className="treaty-item">
|
||||||
<div className="treaty-item-name"></div>
|
<div className="treaty-item-name">Eligible</div>
|
||||||
</div>
|
<div className="treaty-item-name">Signé</div>
|
||||||
<div className="treaty-item">
|
<div className="treaty-item-name">Ratifié</div>
|
||||||
<div className="treaty-item-name">المتفق عليها</div>
|
<div className="treaty-item-name"></div>
|
||||||
<div className="treaty-item-name">موقعة</div>
|
</div>
|
||||||
<div className="treaty-item-name">مصدق عليها</div>
|
)}
|
||||||
<div className="treaty-item-name"></div>
|
{language === "ar" && (
|
||||||
</div>
|
<div className="treaty-item">
|
||||||
|
<div className="treaty-item-name">المتفق عليها</div>
|
||||||
|
<div className="treaty-item-name">موقعة</div>
|
||||||
|
<div className="treaty-item-name">مصدق عليها</div>
|
||||||
|
<div className="treaty-item-name"></div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
{regional_treaties.map((treaty) => (
|
{regional_treaties.map((treaty) => (
|
||||||
<div key={treaty.name} className="treaty-item">
|
<div key={treaty.name} className="treaty-item">
|
||||||
{treaty.icon_eligible ? (
|
{treaty.icon_eligible ? (
|
||||||
@ -74,8 +103,10 @@ const Treaties_Filter = (props) => {
|
|||||||
<hr />
|
<hr />
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h5>International Treaties</h5>
|
<h5>
|
||||||
<h6>Traités internationales / المعاهدات الدولية</h6>
|
{internationalTreatiesHeadings[language] ||
|
||||||
|
internationalTreatiesHeadings["en"]}
|
||||||
|
</h5>
|
||||||
{international_treaties.map((treaty) => (
|
{international_treaties.map((treaty) => (
|
||||||
<div key={treaty.name} className="treaty-item">
|
<div key={treaty.name} className="treaty-item">
|
||||||
{treaty.icon_eligible ? (
|
{treaty.icon_eligible ? (
|
||||||
@ -120,18 +151,18 @@ const Treaties_Filter = (props) => {
|
|||||||
<hr />
|
<hr />
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h5>
|
{language === "en" && <h5>
|
||||||
International Guidelines & Instruments <br />
|
International Guidelines & Instruments <br />
|
||||||
<small>(countries with recent activities only, 2014 - 2019)</small>
|
<small>(countries with recent activities only, 2014 - 2019)</small>
|
||||||
</h5>
|
</h5>}
|
||||||
<h6>
|
{language === "fr" && <h5>
|
||||||
Directives & instruments internationaux <br />
|
Directives & instruments internationaux <br />
|
||||||
<small>(pays avec activité récente uniquement, 2014 - 2019)</small>
|
<small>(pays avec activité récente uniquement, 2014 - 2019)</small>
|
||||||
</h6>
|
</h5>}
|
||||||
<h6>
|
{language === "ar" && <h5>
|
||||||
المبادىء التوجيهية و الأدوات الدولية <br />
|
المبادىء التوجيهية و الأدوات الدولية <br />
|
||||||
<small>(فقط الدول ذات النشاطات الحديثة 2014-2019)</small>
|
<small>(فقط الدول ذات النشاطات الحديثة 2014-2019)</small>
|
||||||
</h6>
|
</h5>}
|
||||||
<div className="treaty-item-2">
|
<div className="treaty-item-2">
|
||||||
<img
|
<img
|
||||||
src={Icon20}
|
src={Icon20}
|
||||||
@ -159,9 +190,8 @@ const Treaties_Filter = (props) => {
|
|||||||
<hr />
|
<hr />
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h5>African Guidelines & Instrumentss</h5>
|
<h5>{africanGuidelinesHeadings[language] || africanGuidelinesHeadings['en']}</h5>
|
||||||
<h6>Directives & instruments africains</h6>
|
|
||||||
<h6>المبادىء التوجيهية و الأدوات السياسية في افريقيا</h6>
|
|
||||||
<div className="treaty-item-2">
|
<div className="treaty-item-2">
|
||||||
<img
|
<img
|
||||||
src={Icon1}
|
src={Icon1}
|
||||||
|
@ -11,6 +11,14 @@
|
|||||||
grid-template-rows: repeat(2, $organization-item-height);
|
grid-template-rows: repeat(2, $organization-item-height);
|
||||||
gap: $gap;
|
gap: $gap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// _organizations
|
||||||
|
.geographical-organisations {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, $organization-item-width);
|
||||||
|
//grid-template-rows: repeat(2, $organization-item-height);
|
||||||
|
gap: $gap;
|
||||||
|
}
|
||||||
|
|
||||||
.organization-item {
|
.organization-item {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -1,27 +1,37 @@
|
|||||||
.map-filter-box {
|
.map-filter-box {
|
||||||
// border: 1px solid $border-color;
|
// border: 1px solid $border-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
.leaflet-container {
|
|
||||||
background-color: $background-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.map-container {
|
|
||||||
border: 1px solid $border-color;
|
|
||||||
width: 100%;
|
|
||||||
height: 100vh;
|
|
||||||
margin-top: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.country-select{
|
.leaflet-container {
|
||||||
position: absolute;
|
background-color: $background-color;
|
||||||
top: 20px;
|
}
|
||||||
left: 20px;
|
|
||||||
// background-color: white;
|
.map-container {
|
||||||
// padding: 10px;
|
border: 1px solid $border-color;
|
||||||
// border: 1px solid #ccc;
|
width: $map-width;
|
||||||
// border-radius: 4px;
|
height: $map-height;
|
||||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
|
margin-top: 0px;
|
||||||
z-index: 1000;
|
}
|
||||||
|
|
||||||
|
.country-select {
|
||||||
|
position: absolute;
|
||||||
|
top: 20px;
|
||||||
|
left: 20px;
|
||||||
|
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
|
||||||
|
z-index: 1000;
|
||||||
|
}
|
||||||
|
@media (min-width: 200px) {
|
||||||
|
.col-sm-9 {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
width: 100% !important;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 990px) {
|
||||||
|
.col-sm-9 {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
width: 75% !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,6 +7,16 @@
|
|||||||
border: 1px solid #ccc;
|
border: 1px solid #ccc;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
|
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
|
||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
//width: 250px;
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 200px) {
|
||||||
|
.info-box{
|
||||||
|
width: 80%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (min-width: 810px) {
|
||||||
|
.info-box{
|
||||||
|
width: 350px;
|
||||||
|
}
|
||||||
}
|
}
|
@ -19,4 +19,6 @@ $organization-item-height: 25%;
|
|||||||
$font-size-small: 12px;
|
$font-size-small: 12px;
|
||||||
$icon-size-large: 50px;
|
$icon-size-large: 50px;
|
||||||
$icon-size-small: 35px;
|
$icon-size-small: 35px;
|
||||||
$opacity-hover: 0.8;
|
$opacity-hover: 0.8;
|
||||||
|
$map-width: 100%;
|
||||||
|
$map-height: 100vh;
|
185
src/tmp/orgs.txt
185
src/tmp/orgs.txt
@ -1,109 +1,100 @@
|
|||||||
"regional_organisations": [
|
regional_organisations = [
|
||||||
{ "name": "AU", "color": "#b2df8a" },
|
{ name: "AU", color: "#b2df8a" },
|
||||||
{ "name": "EAC", "color": "#33a02c" },
|
{ name: "EAC", color: "#33a02c" },
|
||||||
{ "name": "IGAD", "color": "#fb9a99" },
|
{ name: "IGAD", color: "#fb9a99" },
|
||||||
{ "name": "UMA", "color": "#e31a1c" },
|
{ name: "UMA", color: "#e31a1c" },
|
||||||
{ "name": "COMESA", "color": "#fdbf6f" },
|
{ name: "COMESA", color: "#fdbf6f" },
|
||||||
{ "name": "ECOWAS", "color": "#ff7f00" },
|
{ name: "ECOWAS", color: "#ff7f00" },
|
||||||
{ "name": "CEN-SAD", "color": "#cab2d6" },
|
{ name: "CEN-SAD", color: "#cab2d6" },
|
||||||
{ "name": "SADC", "color": "#6a3d9a" },
|
{ name: "SADC", color: "#6a3d9a" },
|
||||||
{ "name": "ECCAS", "color": "#ffff99" },
|
{ name: "ECCAS", color: "#ffff99" },
|
||||||
{ "name": "ICGLR", "color": "#b15928" },
|
{ name: "ICGLR", color: "#b15928" },
|
||||||
{ "name": "RECSA", "color": "#a6cee3" },
|
{ name: "RECSA", color: "#a6cee3" },
|
||||||
{ "name": "SARCOM", "color": "#1f78b4" }
|
{ name: "SARCOM", color: "#1f78b4" },
|
||||||
],
|
];
|
||||||
|
|
||||||
"geographical_organisations": [
|
regional_treaties = [
|
||||||
{ "name": "Northern-Africa", "color": "#e3e3e3" },
|
{
|
||||||
{ "name": "Eastern-Africa", "color": "#e3e3e3" },
|
name: "Bamako Declaration",
|
||||||
{ "name": "Southern-Africa", "color": "#e3e3e3" },
|
name2: "BamakoDeclaration",
|
||||||
{ "name": "Western-Africa", "color": "#e3e3e3" },
|
icon_eligible: Icon26,
|
||||||
{ "name": "Central-Africa", "color": "#e3e3e3" }
|
icon_signed: Icon24,
|
||||||
],
|
icon_ratified: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Kinshasa Convention",
|
||||||
|
name2: "KinshasaConvention",
|
||||||
|
icon_eligible: Icon4,
|
||||||
|
icon_signed: Icon6,
|
||||||
|
icon_ratified: Icon5,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "ECOWAS Convention",
|
||||||
|
name2: "ECOWASConvention",
|
||||||
|
icon_eligible: Icon2,
|
||||||
|
icon_signed: Icon3,
|
||||||
|
icon_ratified: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Khartoum Declaration",
|
||||||
|
name2: "KhartoumDeclaration",
|
||||||
|
icon_eligible: Icon21,
|
||||||
|
icon_signed: Icon23,
|
||||||
|
icon_ratified: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Nairobi Protocol",
|
||||||
|
name2: "NairobiProtocol",
|
||||||
|
icon_eligible: Icon22,
|
||||||
|
icon_signed: Icon25,
|
||||||
|
icon_ratified: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "SADC Firearms Protocol",
|
||||||
|
name2: "SADCFirearmsProtocol",
|
||||||
|
icon_eligible: Icon8,
|
||||||
|
icon_signed: Icon7,
|
||||||
|
icon_ratified: Icon9,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
"regional_treaties": [
|
international_treaties = [
|
||||||
{
|
{
|
||||||
"name": "Bamako Declaration",
|
name: "Arms Trade Treaty",
|
||||||
"name2": "BamakoDeclaration",
|
name2: "ArmsTradeTreaty",
|
||||||
"icon_eligible": "Icon26",
|
icon_eligible: Icon19,
|
||||||
"icon_signed": "Icon24",
|
icon_signed: Icon17,
|
||||||
"icon_ratified": "none"
|
icon_ratified: Icon18,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Kinshasa Convention",
|
name: "Firearms Protocol",
|
||||||
"name2": "KinshasaConvention",
|
name2: "FirearmsProtocol",
|
||||||
"icon_eligible": "Icon4",
|
icon_eligible: Icon12,
|
||||||
"icon_signed": "Icon6",
|
icon_signed: Icon10,
|
||||||
"icon_ratified": "Icon5"
|
icon_ratified: Icon11,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ECOWAS Convention",
|
name: "Wassenaar Agreement",
|
||||||
"name2": "ECOWASConvention",
|
name2: "WassenaarAgreement",
|
||||||
"icon_eligible": "Icon2",
|
icon_eligible: Icon15,
|
||||||
"icon_signed": "Icon3",
|
icon_signed: Icon13,
|
||||||
"icon_ratified": "none"
|
icon_ratified: Icon14,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
intsruments = [
|
||||||
|
{
|
||||||
|
name2: "UNProgrammeofAction",
|
||||||
|
name: "UN Programme of Action",
|
||||||
|
icon: Icon20,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Khartoum Declaration",
|
name2: "InternationalTracingInstrument",
|
||||||
"name2": "KhartoumDeclaration",
|
name: "International Tracing Instrument",
|
||||||
"icon_eligible": "Icon21",
|
icon: Icon16,
|
||||||
"icon_signed": "Icon23",
|
|
||||||
"icon_ratified": "none"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Nairobi Protocol",
|
name2: "StG-PoA",
|
||||||
"name2": "NairobiProtocol",
|
name: "Silencing the Guns in Africa Programme of Action",
|
||||||
"icon_eligible": "Icon22",
|
icon: Icon1,
|
||||||
"icon_signed": "Icon25",
|
|
||||||
"icon_ratified": "none"
|
|
||||||
},
|
},
|
||||||
{
|
];
|
||||||
"name": "SADC Firearms Protocol",
|
|
||||||
"name2": "SADCFirearmsProtocol",
|
|
||||||
"icon_eligible": "Icon8",
|
|
||||||
"icon_signed": "Icon7",
|
|
||||||
"icon_ratified": "Icon9"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
|
|
||||||
"international_treaties": [
|
|
||||||
{
|
|
||||||
"name": "Arms Trade Treaty",
|
|
||||||
"name2": "ArmsTradeTreaty",
|
|
||||||
"icon_eligible": "Icon19",
|
|
||||||
"icon_signed": "Icon17",
|
|
||||||
"icon_ratified": "Icon18"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Firearms Protocol",
|
|
||||||
"name2": "FirearmsProtocol",
|
|
||||||
"icon_eligible": "Icon12",
|
|
||||||
"icon_signed": "Icon10",
|
|
||||||
"icon_ratified": "Icon11"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Wassenaar Agreement",
|
|
||||||
"name2": "WassenaarAgreement",
|
|
||||||
"icon_eligible": "Icon15",
|
|
||||||
"icon_signed": "Icon13",
|
|
||||||
"icon_ratified": "Icon14"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
|
|
||||||
"intsruments": [
|
|
||||||
{
|
|
||||||
"name2": "UNProgrammeofAction",
|
|
||||||
"name": "UN Programme of Action",
|
|
||||||
"icon": "Icon20"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name2": "InternationalTracingInstrument",
|
|
||||||
"name": "International Tracing Instrument",
|
|
||||||
"icon": "Icon16"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name2": "StG-PoA",
|
|
||||||
"name": "Silencing the Guns in Africa Programme of Action",
|
|
||||||
"icon": "Icon1"
|
|
||||||
}
|
|
||||||
]
|
|
Loading…
Reference in New Issue
Block a user