Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Melhorias ai #5

Merged
merged 3 commits into from
May 28, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
291 changes: 156 additions & 135 deletions mangue-bem-web/src/ViewModel/HeatMapViewModel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,36 +7,51 @@ interface ufReport {
}

const statesMap = {
AC: 'Acre',
AL: 'Alagoas',
AP: 'Amapá',
AM: 'Amazonas',
BA: 'Bahia',
CE: 'Ceará',
DF: 'Distrito Federal',
ES: 'Espírito Santo',
GO: 'Goiás',
MA: 'Maranhão',
MT: 'Mato Grosso',
MS: 'Mato Grosso do Sul',
MG: 'Minas Gerais',
PA: 'Pará',
PB: 'Paraíba',
PR: 'Paraná',
PE: 'Pernambuco',
PI: 'Piauí',
RJ: 'Rio de Janeiro',
RN: 'Rio Grande do Norte',
RS: 'Rio Grande do Sul',
RO: 'Rondônia',
RR: 'Roraima',
SC: 'Santa Catarina',
SP: 'São Paulo',
SE: 'Sergipe',
TO: 'Tocantins'
AC: "Acre",
AL: "Alagoas",
AP: "Amapá",
AM: "Amazonas",
BA: "Bahia",
CE: "Ceará",
DF: "Distrito Federal",
ES: "Espírito Santo",
GO: "Goiás",
MA: "Maranhão",
MT: "Mato Grosso",
MS: "Mato Grosso do Sul",
MG: "Minas Gerais",
PA: "Pará",
PB: "Paraíba",
PR: "Paraná",
PE: "Pernambuco",
PI: "Piauí",
RJ: "Rio de Janeiro",
RN: "Rio Grande do Norte",
RS: "Rio Grande do Sul",
RO: "Rondônia",
RR: "Roraima",
SC: "Santa Catarina",
SP: "São Paulo",
SE: "Sergipe",
TO: "Tocantins",
};

export const getStateIdFromName = (stateName):string => {
const fillMapArray = (speciesCounter) => {
for (const state in statesMap) {
console.log(statesMap[state])
if (!speciesCounter.some((specie) => specie.state === statesMap[state])) {
speciesCounter.push({
speciesCount: 0,
state: statesMap[state],
bemId: 0,
stateColor: "#88a4bc",
});
}
}
return speciesCounter
};

export const getStateIdFromName = (stateName): string => {
for (const id in simplemaps_countrymap_mapdata.state_specific) {
if (
simplemaps_countrymap_mapdata.state_specific[id].name.toString() ===
Expand All @@ -47,39 +62,44 @@ export const getStateIdFromName = (stateName):string => {
return null;
};

export const adjustColorIntensity = (hexColor: string, value: number):string => {
const limitedValue = Math.max(0, Math.min(value, 100));
const percentageOfValue = (limitedValue / 100) * 100;
if(limitedValue === 0) return '#88a4bc'
export const adjustColorIntensity = (
hexColor: string,
value: number,
): string => {
const limitedValue = Math.max(0, Math.min(value, 100));
const percentageOfValue = (limitedValue / 100) * 100;
if (limitedValue === 0) return "#88a4bc";

var R = parseInt(hexColor.substring(1,3),16);
var G = parseInt(hexColor.substring(3,5),16);
var B = parseInt(hexColor.substring(5,7),16);
var R = parseInt(hexColor.substring(1, 3), 16);
var G = parseInt(hexColor.substring(3, 5), 16);
var B = parseInt(hexColor.substring(5, 7), 16);

R = parseInt(R * (100 - percentageOfValue) / 100);
G = parseInt(G * (100 - percentageOfValue) / 100);
B = parseInt(B * (100 - percentageOfValue) / 100);
R = parseInt((R * (100 - percentageOfValue)) / 100);
G = parseInt((G * (100 - percentageOfValue)) / 100);
B = parseInt((B * (100 - percentageOfValue)) / 100);

R = (R<255)?R:255;
G = (G<255)?G:255;
B = (B<255)?B:255;
R = R < 255 ? R : 255;
G = G < 255 ? G : 255;
B = B < 255 ? B : 255;

R = Math.round(R)
G = Math.round(G)
B = Math.round(B)
R = Math.round(R);
G = Math.round(G);
B = Math.round(B);

var RR = ((R.toString(16).length===1)?"0"+R.toString(16):R.toString(16));
var GG = ((G.toString(16).length===1)?"0"+G.toString(16):G.toString(16));
var BB = ((B.toString(16).length===1)?"0"+B.toString(16):B.toString(16));
var RR = R.toString(16).length === 1 ? "0" + R.toString(16) : R.toString(16);
var GG = G.toString(16).length === 1 ? "0" + G.toString(16) : G.toString(16);
var BB = B.toString(16).length === 1 ? "0" + B.toString(16) : B.toString(16);

return "#"+RR+GG+BB;
}
return "#" + RR + GG + BB;
};

export const getSpeciesCounter = (setSpeciesCounter, bemId) => {
fetch('http://localhost:8080/v1/observations/uf-report?bemClassification=BEM'+(bemId + 1)).then((data) => {
data.json().then((jsonData :{items:ufReport[]}) => {
const speciesCounter:SpeciesCounter[] = []
for(const item of jsonData.items) {
fetch(
`http://localhost:8080/v1/observations/uf-report?bemClassification=${bemId >= 10? "P"+(bemId - 9) : "BEM"+(bemId + 1)}`,
).then((data) => {
data.json().then((jsonData: { items: ufReport[] }) => {
const speciesCounter: SpeciesCounter[] = [];
for (const item of jsonData.items) {
const stateColor = adjustColorIntensity(
Bems[bemId].color,
item.speciesCount,
Expand All @@ -88,98 +108,99 @@ export const getSpeciesCounter = (setSpeciesCounter, bemId) => {
speciesCount: item.speciesCount,
state: statesMap[item.uf],
bemId,
stateColor
})
stateColor,
});
}
setSpeciesCounter(speciesCounter)
})
})
// fillMapArray(speciesCounter)
setSpeciesCounter(fillMapArray(speciesCounter));
});
});
};

export const Bems = [
{
type: "BEM1",
description:
"Espécies comestíveis que claramente ocorrem e são consumidas no Brasil ou que representam um novo recurso alimentar para o país.",
color: "#FF5733"
},
{
type: "BEM2",
description:
"Espécies comestíveis (após alguns preparos ou cuidados prévios) que claramente ocorrem e são consumidas no Brasil ou que representam um novo recurso alimentar para o país.",
color: "#33FF57"
},
{
type: "BEM3",
description:
"Espécie comestível consumida no Brasil, mas que necessita de mais estudos para confirmar sua identidade e ocorrência no país.",
color: "#3357FF"
},
{
type: "BEM4",
description:
"Espécies comestíveis (após alguns preparos ou cuidados preciosos) consumidas no Brasil, mas que requerem mais estudos para confirmar sua identificação e ocorrência no país.",
color: "#FF33A1"
},
{
type: "BEM5",
description:
"Espécies comestíveis não claramente consumidas no Brasil, mas que representam um novo recurso alimentar para o país. Mais estudos para confirmar sua identidade e ocorrência no Brasil.",
color: "#FFBD33"
},
{
type: "BEM6",
description:
"Espécies comestíveis (após alguns preparos ou cuidados prévios) não claramente consumidas no Brasil, mas que representam um novo recurso alimentar para o país após novos estudos para confirmar sua identificação e ocorrência no Brasil.",
color: "#008417"
},
{
type: "BEM7",
description:
"Espécie que ocorre claramente no Brasil, mas com evidências pouco claras ou ausentes de que foi consumida.",
color: "#33FFF7"
},
{
type: "BEM8",
description:
"Espécie com evidências pouco claras ou ausentes para consumo e que requer mais estudos para confirmar sua identidade e ocorrência no Brasil.",
color: "#9D33FF"
},
{
type: "BEM9",
description:
"Espécie que ocorre claramente no Brasil, mas com comestibilidade não confirmada, incluindo poucos registros venenosos.",
color: "#FF7E33"
},
{
type: "BEM10",
description:
"Espécie que ocorre claramente no Brasil, mas com comestibilidade não confirmada, incluindo poucos registros venenosos.",
color: "#33FF9A"
},
{
type: "P1",
description:
"Espécie venenosa que ocorre claramente no Brasil e causa reação adversa e prejudicial quando consumida.",
color: "#B8FF33"
},
{
type: "P2",
description:
"Espécie venenosa que causa reações adversas e prejudiciais quando consumida e requer mais estudos para confirmar sua identidade e ocorrência no Brasil.",
color: "#3388FF"
},
];
{
type: "BEM1",
description:
"Espécies comestíveis que claramente ocorrem e são consumidas no Brasil ou que representam um novo recurso alimentar para o país.",
color: "#FF5733",
},
{
type: "BEM2",
description:
"Espécies comestíveis (após alguns preparos ou cuidados prévios) que claramente ocorrem e são consumidas no Brasil ou que representam um novo recurso alimentar para o país.",
color: "#33FF57",
},
{
type: "BEM3",
description:
"Espécie comestível consumida no Brasil, mas que necessita de mais estudos para confirmar sua identidade e ocorrência no país.",
color: "#3357FF",
},
{
type: "BEM4",
description:
"Espécies comestíveis (após alguns preparos ou cuidados preciosos) consumidas no Brasil, mas que requerem mais estudos para confirmar sua identificação e ocorrência no país.",
color: "#FF33A1",
},
{
type: "BEM5",
description:
"Espécies comestíveis não claramente consumidas no Brasil, mas que representam um novo recurso alimentar para o país. Mais estudos para confirmar sua identidade e ocorrência no Brasil.",
color: "#FFBD33",
},
{
type: "BEM6",
description:
"Espécies comestíveis (após alguns preparos ou cuidados prévios) não claramente consumidas no Brasil, mas que representam um novo recurso alimentar para o país após novos estudos para confirmar sua identificação e ocorrência no Brasil.",
color: "#008417",
},
{
type: "BEM7",
description:
"Espécie que ocorre claramente no Brasil, mas com evidências pouco claras ou ausentes de que foi consumida.",
color: "#33FFF7",
},
{
type: "BEM8",
description:
"Espécie com evidências pouco claras ou ausentes para consumo e que requer mais estudos para confirmar sua identidade e ocorrência no Brasil.",
color: "#9D33FF",
},
{
type: "BEM9",
description:
"Espécie que ocorre claramente no Brasil, mas com comestibilidade não confirmada, incluindo poucos registros venenosos.",
color: "#FF7E33",
},
{
type: "BEM10",
description:
"Espécie que ocorre claramente no Brasil, mas com comestibilidade não confirmada, incluindo poucos registros venenosos.",
color: "#33FF9A",
},
{
type: "P1",
description:
"Espécie venenosa que ocorre claramente no Brasil e causa reação adversa e prejudicial quando consumida.",
color: "#B8FF33",
},
{
type: "P2",
description:
"Espécie venenosa que causa reações adversas e prejudiciais quando consumida e requer mais estudos para confirmar sua identidade e ocorrência no Brasil.",
color: "#3388FF",
},
];

export const generateRandomData = (bemIndex): SpeciesCounter[] => {
const statesCounter = getSpeciesCounter()
for(const stateData of statesCounter) {
const statesCounter = getSpeciesCounter();
for (const stateData of statesCounter) {
const stateColor = adjustColorIntensity(
Bems[bemIndex].color,
stateData.speciesCount,
);
stateData.bemId = bemIndex;
stateData.color = stateColor;
}
return statesCounter
}
return statesCounter;
};
Loading