at the end of the day, it was inevitable
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
import { sum } from 'lodash'
|
||||
import { convertlocaltoUTC } from '../../common/helper'
|
||||
import { get, post, put } from '../httpInterceptor/httpInterceptor'
|
||||
|
||||
const formatValues = (data) => {
|
||||
let newObj = {}
|
||||
for (const [key, value] of Object.entries(data)) {
|
||||
for (let v in value) {
|
||||
newObj[v] = newObj[v]
|
||||
? { ...newObj[v], [key]: value[v] }
|
||||
: { [key]: value[v] }
|
||||
}
|
||||
}
|
||||
|
||||
Object.keys(data).map((dt) => {
|
||||
for (let item in newObj) {
|
||||
newObj[item][dt] = newObj[item][dt] || 0
|
||||
}
|
||||
})
|
||||
|
||||
const obj = Object.keys(newObj).map((v) => ({
|
||||
name: v,
|
||||
data: newObj[v]
|
||||
}))
|
||||
|
||||
return obj
|
||||
}
|
||||
|
||||
export const addEditAnalyticsAPI = async (data, id) => {
|
||||
let url = `/analysis${id ? `/${id}` : ''}`
|
||||
|
||||
const bodyObj = {}
|
||||
// bodyObj.filters = [] // need changes
|
||||
bodyObj.filters = {
|
||||
date: {
|
||||
type: 'between',
|
||||
start: convertlocaltoUTC(data.startDate, 'YYYY-MM-DD'),
|
||||
end: convertlocaltoUTC(data.endDate, 'YYYY-MM-DD')
|
||||
}
|
||||
}
|
||||
bodyObj.feeds = data.feeds.map((val) => val.id)
|
||||
|
||||
const func = id ? put : post
|
||||
const res = await func(url, bodyObj)
|
||||
console.log('API Response :: addEditAnalytics ::: ', res)
|
||||
return res
|
||||
}
|
||||
|
||||
export const getAnalyticDetailsAPI = async (id) => {
|
||||
let url = `/analysis/${id}`
|
||||
const res = await get(url)
|
||||
console.log('API Response :: getAnalyticDetails ::: ', res)
|
||||
return res
|
||||
}
|
||||
|
||||
export const createAlertAPI = async (data) => {
|
||||
let url = '/notifications'
|
||||
const res = await post(url, data)
|
||||
console.log('API Response :: creteAnalytics ::: ', res)
|
||||
return res
|
||||
}
|
||||
|
||||
/* Chart APIs */
|
||||
export const getOverviewBarAPI = async (type = 'none', id) => {
|
||||
let isOther = type !== 'none'
|
||||
let url = isOther
|
||||
? `/mention-over-time-bar-graph/${id}`
|
||||
: `/mention-bar-graph/${id}`
|
||||
const res = await post(url, isOther ? { type } : undefined)
|
||||
if (isOther && res.data && res.data.data) {
|
||||
res.data.data = res.data.data.map((feed) => ({
|
||||
name: feed.name,
|
||||
data: formatValues(feed.data)
|
||||
}))
|
||||
}
|
||||
console.log('API Response :: getOverviewBarAPI ::: ', res)
|
||||
return res
|
||||
}
|
||||
|
||||
/* Used for Overview, Performance, Sentiment, Demographics */
|
||||
export const getOverviewPieAPI = async (type = 'none', id) => {
|
||||
let isOther = type !== 'none'
|
||||
let url = isOther
|
||||
? `/mention-over-time-pie-graph/${id}`
|
||||
: `/mention-pie-graph/${id}`
|
||||
const res = await post(url, isOther ? { type } : undefined)
|
||||
console.log('API Response :: getOverviewPieAPI ::: ', res)
|
||||
return res
|
||||
}
|
||||
|
||||
export const getInfluencersAPI = async (id, filter, data = undefined) => {
|
||||
let url = `/influencer/${id}`
|
||||
if (filter === 1) {
|
||||
data = { isAuthorType: true }
|
||||
}
|
||||
const res = await post(url, data)
|
||||
console.log('API Response :: getInfluencersAPI ::: ', res)
|
||||
return res
|
||||
}
|
||||
|
||||
export const getEngagementsTimeAPI = async (id) => {
|
||||
let url = `/engagement-over-time-bar-graph/${id}`
|
||||
const res = await post(url)
|
||||
console.log('API Response :: getEngagementsTimeAPI ::: ', res)
|
||||
return res
|
||||
}
|
||||
|
||||
export const getEngagementsAPI = async (id) => {
|
||||
let url = `/engagement-over-time-pie-graph/${id}`
|
||||
const res = await post(url)
|
||||
console.log('API Response :: getEngagementsAPI ::: ', res)
|
||||
return res
|
||||
}
|
||||
|
||||
/* Themes */
|
||||
|
||||
export const getThemesTimeAPI = async (id) => {
|
||||
let url = `/theme-over-time-bar-graph/${id}`
|
||||
const res = await post(url)
|
||||
const { data } = res.data
|
||||
let newData = data
|
||||
if (data) {
|
||||
newData = data.map((feedData) => {
|
||||
const { name, data } = feedData
|
||||
let dataTotal = data.map((theme) => {
|
||||
const { name, data } = theme
|
||||
const total = sum(Object.values(data))
|
||||
return { name, data, total }
|
||||
})
|
||||
dataTotal = topN(dataTotal, 5)
|
||||
return { name, data: dataTotal }
|
||||
})
|
||||
}
|
||||
res.data.data = newData
|
||||
console.log('API Response :: getThemesTimeAPI ::: ', res)
|
||||
return res
|
||||
}
|
||||
|
||||
function topN(arr, n) {
|
||||
if (n > arr.length) {
|
||||
return arr
|
||||
}
|
||||
return arr
|
||||
.slice()
|
||||
.sort((a, b) => {
|
||||
return b.total - a.total
|
||||
})
|
||||
.slice(0, n)
|
||||
}
|
||||
|
||||
export const getThemesCloudAPI = async (id) => {
|
||||
let url = `/theme-over-time-pie-graph/${id}`
|
||||
const res = await post(url)
|
||||
console.log('API Response :: getThemesCloudAPI ::: ', res)
|
||||
return res
|
||||
}
|
||||
|
||||
/* World Map */
|
||||
|
||||
export const getWorldMapAPI = async (id) => {
|
||||
let url = `/world-map/${id}`
|
||||
const res = await post(url)
|
||||
console.log('API Response :: getWorldMapAPI ::: ', res)
|
||||
return res
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
import { get, del } from '../httpInterceptor/httpInterceptor'
|
||||
|
||||
export const savedAnalytics = async (params) => {
|
||||
let url = '/analysis'
|
||||
const res = await get(url, params)
|
||||
console.log('API Response :: savedAnalytics ::: ', res)
|
||||
return res
|
||||
}
|
||||
|
||||
export const deleteAnalytics = async (id) => {
|
||||
let url = `/analysis/${id}`
|
||||
const res = await del(url)
|
||||
console.log('API Response :: deleteAnalytics ::: ', res)
|
||||
return res
|
||||
}
|
||||
Reference in New Issue
Block a user