import { SENTIMENT_COLORS } from './sentimentColors';
export const getCountrySentiments = (events) => {
const countrySentiments = {};
events.forEach(event => {
const country = event.location?.entity_name;
if (country) {
if (!countrySentiments[country]) {
countrySentiments[country] = {
positive: 0,
neutral: 0,
negative: 0,
total: 0
};
}
const sentiment = event.sentiment_label || 'neutral';
countrySentiments[country][sentiment]++;
countrySentiments[country].total++;
}
});
return countrySentiments;
};
const sentimentToCountryColor = (sentiment) => {
const { positive, neutral, negative, total } = sentiment;
const negativeRatio = negative / total;
if (negativeRatio > 0.5) return 'rgba(255, 51, 102, 0.3)';
if (negativeRatio < 0.3) return 'rgba(0, 255, 136, 0.2)';
return 'rgba(0, 217, 255, 0.2)';
};
export const createCountryFillExpression = (countrySentiments) => {
if (!countrySentiments || Object.keys(countrySentiments).length === 0) {
return 'rgba(0, 0, 0, 0)';
}
const expression = ['match', ['get', 'name']];
Object.entries(countrySentiments).forEach(([country, sentiment]) => {
expression.push(country);
expression.push(sentimentToCountryColor(sentiment));
});
expression.push('rgba(0, 0, 0, 0)');
return expression;
};