Untitled
unknown
plain_text
2 years ago
9.4 kB
5
Indexable
import React, { memo, useMemo, useState } from 'react';
import { Button, Card, Carousel, Colors, GridList, GridListItem, Text, View } from 'react-native-ui-lib';
import { abbreviateNumber, nFormatter } from '../../../utils/number_formatter';
import { ScrollView } from 'react-native';
import { InfoBoxSocialComparison } from './InfoBoxSocialComparison';
import { InfoBox } from '../InfoBox';
import MaterialIcons from 'react-native-vector-icons/MaterialIcons';
import { InfoBoxOverview } from '../InfoBoxOverview';
import { parse } from 'querystring';
type Props = {
report: any;
};
const SocialComparison = ({ report }: Props) => {
const memoized: any = useMemo(() => {
const data = report && report?.data;
let competitions: any = [];
let myScore: any = [];
let isError = false;
let isScorerError = false;
let isCompetitionError = false;
let isSocialError = false;
let errorMessageType;
const score = data?.score;
const competition = data?.competition;
if (!data) {
isError = true;
errorMessageType = 'errorMessage';
}
const parseCompany: any = [];
const parseCompanyData = (company: any) => {
if (!isSocialError) {
company.social.forEach((socialItem: any) => {
if (socialItem.type != 'linkedin') {
let numberOfPosts;
let numberOfPostsChange;
let averageLikesPerPost;
let averageLikesPerPostPrevious;
let averageLikesPerPostChange;
let averageSharesPerPost;
let averageSharesPerPostPrevious;
let averageSharesPerPostChange;
let averageCommentsPerPost;
let averageCommentsPerPostPrevious;
let averageCommentsPerPostChange;
if (report.data.type === 'MONTHLY') {
if (socialItem.type === 'facebook') {
numberOfPosts = socialItem.numberOfPostsLastMonth; // Total posts or posts monthly?
numberOfPostsChange =
socialItem.numberOfPostsLastMonth -
socialItem.numberOfPostsPastMonth;
averageLikesPerPost = socialItem.averageReactions;
averageLikesPerPostPrevious =
socialItem.reactionsPastMonth /
socialItem.numberOfPostsPastMonth;
averageLikesPerPostChange =
averageLikesPerPost - averageLikesPerPostPrevious;
averageSharesPerPost = socialItem.averageShares;
averageSharesPerPostPrevious =
socialItem.sharesPastMonth / socialItem.numberOfPostsPastMonth;
averageSharesPerPostChange =
averageSharesPerPost - averageSharesPerPostPrevious;
averageCommentsPerPost = socialItem.averageComments;
averageCommentsPerPostPrevious =
socialItem.commentPastMonth / socialItem.numberOfPostsPastMonth;
averageCommentsPerPostChange =
averageCommentsPerPost - averageCommentsPerPostPrevious;
} else {
numberOfPosts = socialItem.numberOfPostsLastMonth; // Total posts or posts monthly?
numberOfPostsChange =
socialItem.numberOfPostsLastMonth -
socialItem.numberOfPostsPastMonth;
averageLikesPerPost = socialItem.averageLikes;
averageLikesPerPostPrevious =
socialItem.likesPastMonth / socialItem.numberOfPostsPastMonth;
averageLikesPerPostChange =
averageLikesPerPost - averageLikesPerPostPrevious;
averageSharesPerPost = socialItem.averageShares;
averageSharesPerPostPrevious =
socialItem.sharesPastMonth / socialItem.numberOfPostsPastMonth;
averageSharesPerPostChange =
averageSharesPerPost - averageSharesPerPostPrevious;
averageCommentsPerPost = socialItem.averageComments;
averageCommentsPerPostPrevious =
socialItem.commentPastMonth / socialItem.numberOfPostsPastMonth;
averageCommentsPerPostChange =
averageCommentsPerPost - averageCommentsPerPostPrevious;
}
} else if (socialItem.type === 'facebook') {
numberOfPosts = socialItem.numberOfPostsLastWeek; // Total posts or posts Weekly?
numberOfPostsChange =
socialItem.numberOfPostsLastWeek -
socialItem.numberOfPostsPastWeek;
averageLikesPerPost = socialItem.averageReactions;
averageLikesPerPostPrevious =
socialItem.reactionsPastWeek / socialItem.numberOfPostsPastWeek;
averageLikesPerPostChange =
averageLikesPerPost - averageLikesPerPostPrevious;
averageSharesPerPost = socialItem.averageShares;
averageSharesPerPostPrevious =
socialItem.sharesPastWeek / socialItem.numberOfPostsPastWeek;
averageSharesPerPostChange =
averageSharesPerPost - averageSharesPerPostPrevious;
averageCommentsPerPost = socialItem.averageComments;
averageCommentsPerPostPrevious =
socialItem.commentPastWeek / socialItem.numberOfPostsPastWeek;
averageCommentsPerPostChange =
averageCommentsPerPost - averageCommentsPerPostPrevious;
} else {
numberOfPosts = socialItem.numberOfPostsLastWeek; // Total posts or posts Weekly?
numberOfPostsChange =
socialItem.numberOfPostsLastWeek -
socialItem.numberOfPostsPastWeek;
averageLikesPerPost = socialItem.averageLikes;
averageLikesPerPostPrevious =
socialItem.likesPastWeek / socialItem.numberOfPostsPastWeek;
averageLikesPerPostChange =
averageLikesPerPost - averageLikesPerPostPrevious;
averageSharesPerPost = socialItem.averageShares;
averageSharesPerPostPrevious =
socialItem.sharesPastWeek / socialItem.numberOfPostsPastWeek;
averageSharesPerPostChange =
averageSharesPerPost - averageSharesPerPostPrevious;
averageCommentsPerPost = socialItem.averageComments;
averageCommentsPerPostPrevious =
socialItem.commentPastWeek / socialItem.numberOfPostsPastWeek;
averageCommentsPerPostChange =
averageCommentsPerPost - averageCommentsPerPostPrevious;
}
parseCompany.push({
icon: socialItem.type,
name: company.name,
status: socialItem.status,
values: [
{
// Post
value: numberOfPosts,
exchangeValue: numberOfPostsChange,
},
{
// Avg. likes
value: averageLikesPerPost,
exchangeValue: averageLikesPerPostChange,
warnIndex: 2,
},
{
// Avg. Shares
value: averageSharesPerPost,
exchangeValue: averageSharesPerPostChange,
},
{
// Avg. Comment
value: averageCommentsPerPost,
exchangeValue: averageCommentsPerPostChange,
},
],
});
}
});
}
console.log(parseCompany)
};
if (!isError) {
if (!competition || competition.length === 0) {
isCompetitionError = true;
errorMessageType = 'competitorNotExist';
}
if (!isCompetitionError && !isError) {
competition.map((singleCompetition: any) =>
competitions.push(parseCompanyData(singleCompetition)),
);
}
if (score) {
const social = score?.social;
if (!social || social.length === 0) {
isSocialError = true;
errorMessageType = 'companySocialNotExist';
}
if (isSocialError && isCompetitionError) {
errorMessageType = 'CompetitorAndSocialNotExist';
}
} else {
isScorerError = true;
errorMessageType = 'errorMessage';
}
if (!isSocialError && !isScorerError) {
myScore = parseCompanyData(score);
}
}
return { parseCompany }
}, [report])
console.log(memoized?.parseCompany)
return (
<Carousel loop showCounter pageControlPosition="under">
{memoized?.parseCompany.map((data: any, index: any) => (
<View center>
<Text orange40 text50BO>{data.name}</Text>
<Text grey30 text60BO>{data.icon}</Text>
{
data?.values.map((value, Subindex) => (
<View center>
<Card>
<Text>
{value.value.toFixed(2)}
</Text>
<Text>
{value.exchangeValue.toFixed(2)}
</Text>
</Card>
</View>
))
}
</View>
))}
</Carousel>
)
};
export default SocialComparison;
Editor is loading...