@@ -10,7 +10,9 @@ import {
10
10
NumberFormatter ,
11
11
MultiSelect ,
12
12
Fieldset ,
13
- Divider
13
+ Divider ,
14
+ ThemeIcon ,
15
+ Center
14
16
} from '@mantine/core'
15
17
import { SSPs , RequestStatPlacement , SSPsAnalyticsDataQuery } from 'types'
16
18
import useSSPsAnalytics from 'hooks/useCampaignAnalytics/useSSPsAnalytics'
@@ -22,6 +24,8 @@ import { IabTaxonomyV3 } from 'adex-common'
22
24
import { CATEGORIES , CAT_GROUPS , COUNTRIES , REGION_GROUPS } from 'constants/createCampaign'
23
25
import MultiSelectAndRadioButtons from 'components/CreateCampaign/StepTwo/MultiSelectAndRadioButtons'
24
26
import useCreateCampaignContext from 'hooks/useCreateCampaignContext'
27
+ import GlobeIcon from 'resources/icons/Globe'
28
+ import InvoiceIcon from 'resources/icons/Invoice'
25
29
26
30
const sspsData : Array < { value : SSPs | '' ; label : string } > = [
27
31
{ value : '' , label : 'All SSPs' } ,
@@ -31,11 +35,11 @@ const sspsData: Array<{ value: SSPs | ''; label: string }> = [
31
35
]
32
36
33
37
const placementsData : Array < { value : string ; label : string } > = [
34
- { value : '' , label : 'All placements' } ,
35
38
{ value : RequestStatPlacement . app . toString ( ) , label : 'App' } ,
36
39
{ value : RequestStatPlacement . siteMobile . toString ( ) , label : 'Site - Mobile' } ,
37
40
{ value : RequestStatPlacement . siteDesktop . toString ( ) , label : 'Site - Desktop' } ,
38
- { value : RequestStatPlacement . other . toString ( ) , label : 'Site - other' }
41
+ { value : RequestStatPlacement . siteOther . toString ( ) , label : 'Site - other' } ,
42
+ { value : RequestStatPlacement . other . toString ( ) , label : 'Other' }
39
43
]
40
44
41
45
const groupByData : Array < { value : string ; label : string } > = [
@@ -83,11 +87,13 @@ const mapSegmentLabel = (
83
87
const SSPsAnalytics = ( {
84
88
country,
85
89
category,
86
- format
90
+ format,
91
+ placement
87
92
} : {
88
93
category ?: SSPsAnalyticsDataQuery [ 'category' ]
89
94
country ?: SSPsAnalyticsDataQuery [ 'country' ]
90
- format ?: string [ ]
95
+ format ?: SSPsAnalyticsDataQuery [ 'format' ]
96
+ placement ?: SSPsAnalyticsDataQuery [ 'placement' ]
91
97
} ) => {
92
98
// TODO: get all formats once then use it for src
93
99
// NOTE: temp
@@ -101,8 +107,10 @@ const SSPsAnalytics = ({
101
107
> ( )
102
108
103
109
const [ ssp , setSsp ] = useState < SSPs > ( '' )
104
- const [ groupBy , setGrop ] = useState < SSPsAnalyticsDataQuery [ 'groupBy' ] > ( 'country' )
105
- const [ placement , setPlacement ] = useState < RequestStatPlacement | '' > ( '' )
110
+ const [ groupBy , setGrop ] = useState < SSPsAnalyticsDataQuery [ 'groupBy' ] > ( 'ssp' )
111
+ const [ selectedPlacement , setPlacement ] = useState < SSPsAnalyticsDataQuery [ 'placement' ] > (
112
+ placement || { values : [ RequestStatPlacement . siteDesktop ] , operator : 'in' }
113
+ )
106
114
const { analyticsData, getAnalyticsKeyAndUpdate } = useSSPsAnalytics ( )
107
115
const [ selectedCountries , setCountries ] = useState < SSPsAnalyticsDataQuery [ 'country' ] > (
108
116
country || { values : [ ] , operator : 'in' }
@@ -111,7 +119,7 @@ const SSPsAnalytics = ({
111
119
category || { values : [ ] , operator : 'in' }
112
120
)
113
121
114
- const [ selectedFormats , setFormats ] = useState < string [ ] > ( format || [ ] )
122
+ const [ selectedFormats , setFormats ] = useState < SSPsAnalyticsDataQuery [ 'format' ] > ( format || [ ] )
115
123
116
124
const analytics = useMemo (
117
125
( ) => analyticsData . get ( analyticsKey ?. key || '' ) ,
@@ -125,11 +133,12 @@ const SSPsAnalytics = ({
125
133
const key = await getAnalyticsKeyAndUpdate ( {
126
134
...removeOptionalEmptyStringProps ( {
127
135
ssp,
128
- placement,
136
+ placement : selectedPlacement ,
129
137
category : selectedCategories ,
130
138
country : selectedCountries ,
131
139
format : selectedFormats
132
140
} ) ,
141
+ limit : 666 ,
133
142
groupBy
134
143
} )
135
144
setAnalyticsKey ( key )
@@ -147,6 +156,7 @@ const SSPsAnalytics = ({
147
156
selectedCategories ,
148
157
selectedCountries ,
149
158
selectedFormats ,
159
+ selectedPlacement ,
150
160
ssp
151
161
] )
152
162
@@ -208,11 +218,17 @@ const SSPsAnalytics = ({
208
218
searchable
209
219
size = "sm"
210
220
/>
211
- < Select
221
+ < MultiSelect
212
222
label = "Placement"
213
- value = { placement ?. toString ( ) }
223
+ value = { selectedPlacement ?. values ?. map ( ( x ) => x . toString ( ) ) }
214
224
// @ts -ignore
215
- onChange = { ( val ) => setPlacement ( val !== '' ? Number ( val ) : val ) }
225
+ onChange = { ( val ) =>
226
+ setPlacement ( ( ) => ( {
227
+ values : [ ...val . map ( ( x ) => Number ( x ) ) ] ,
228
+ operator : 'in'
229
+ } ) )
230
+ }
231
+ clearable
216
232
data = { placementsData }
217
233
size = "sm"
218
234
/>
@@ -221,7 +237,20 @@ const SSPsAnalytics = ({
221
237
222
238
< Group grow gap = "xl" align = "baseline" >
223
239
< Stack >
224
- < Divider size = "md" label = "Categories" color = "mainText" />
240
+ < Divider
241
+ mt = "xl"
242
+ labelPosition = "left"
243
+ label = {
244
+ < Center style = { { gap : 10 } } >
245
+ < Text c = "mainText" size = "sm" >
246
+ Categories
247
+ </ Text >
248
+ < ThemeIcon size = "sm" variant = "transparent" color = "mainText" >
249
+ < InvoiceIcon />
250
+ </ ThemeIcon >
251
+ </ Center >
252
+ }
253
+ />
225
254
< MultiSelectAndRadioButtons
226
255
onCategoriesChange = { ( selectedRadio , values ) =>
227
256
setCategories ( {
@@ -234,10 +263,24 @@ const SSPsAnalytics = ({
234
263
defaultSelectValue = { selectedCategories ?. values }
235
264
groups = { CAT_GROUPS }
236
265
label = "Categories"
266
+ size = "sm"
237
267
/>
238
268
</ Stack >
239
269
< Stack >
240
- < Divider size = "md" label = "Countries" color = "mainText" />
270
+ < Divider
271
+ mt = "xl"
272
+ labelPosition = "left"
273
+ label = {
274
+ < Center style = { { gap : 10 } } >
275
+ < Text c = "mainText" size = "sm" >
276
+ Countries
277
+ </ Text >
278
+ < ThemeIcon size = "sm" variant = "transparent" color = "mainText" >
279
+ < GlobeIcon />
280
+ </ ThemeIcon >
281
+ </ Center >
282
+ }
283
+ />
241
284
242
285
< MultiSelectAndRadioButtons
243
286
onCategoriesChange = { ( selectedRadio , values ) =>
@@ -251,6 +294,7 @@ const SSPsAnalytics = ({
251
294
multiSelectData = { COUNTRIES }
252
295
groups = { REGION_GROUPS }
253
296
label = "Countries"
297
+ size = "sm"
254
298
/>
255
299
</ Stack >
256
300
</ Group >
@@ -285,10 +329,10 @@ const SSPsAnalytics = ({
285
329
{ JSON . stringify (
286
330
{
287
331
ssp,
288
- placement,
332
+ placement : selectedPlacement ,
289
333
category : selectedCategories ,
290
334
country : selectedCountries ,
291
- format,
335
+ format : selectedFormats ,
292
336
groupBy
293
337
} ,
294
338
null ,
0 commit comments