@clickview/reports 0.90.0-rc.1 → 0.90.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.vite/manifest.json +200 -200
- package/dist/bundles.json +1 -1
- package/dist/en.json +1 -1
- package/dist/scripts/{D_FEtk4z.chunk.js → 4ViYfbV7.chunk.js} +2 -2
- package/dist/scripts/{D_FEtk4z.chunk.js.map → 4ViYfbV7.chunk.js.map} +1 -1
- package/dist/scripts/{CkUPoXTo.chunk.js → 4gz8eG_F.chunk.js} +2 -2
- package/dist/scripts/{CkUPoXTo.chunk.js.map → 4gz8eG_F.chunk.js.map} +1 -1
- package/dist/scripts/{DNagXaPV2.chunk.js → 4mtEyuqT2.chunk.js} +2 -2
- package/dist/scripts/{DNagXaPV2.chunk.js.map → 4mtEyuqT2.chunk.js.map} +1 -1
- package/dist/scripts/{CPrWMnN-.chunk.js → 7M6FzdyD.chunk.js} +2 -2
- package/dist/scripts/{CPrWMnN-.chunk.js.map → 7M6FzdyD.chunk.js.map} +1 -1
- package/dist/scripts/{D3Pl0-fQ.chunk.js → BJOOjdj2.chunk.js} +2 -2
- package/dist/scripts/{D3Pl0-fQ.chunk.js.map → BJOOjdj2.chunk.js.map} +1 -1
- package/dist/scripts/{B9ojUSnp2.chunk.js → BL1X9vs52.chunk.js} +2 -2
- package/dist/scripts/{B9ojUSnp2.chunk.js.map → BL1X9vs52.chunk.js.map} +1 -1
- package/dist/scripts/{BN2Jc0_B.chunk.js → BLzRzOyq.chunk.js} +2 -2
- package/dist/scripts/{BN2Jc0_B.chunk.js.map → BLzRzOyq.chunk.js.map} +1 -1
- package/dist/scripts/{CNihWz772.chunk.js → BU8DxGLM2.chunk.js} +2 -2
- package/dist/scripts/{CNihWz772.chunk.js.map → BU8DxGLM2.chunk.js.map} +1 -1
- package/dist/scripts/{B-CXShcb2.chunk.js → BXWs2cI72.chunk.js} +2 -2
- package/dist/scripts/{B-CXShcb2.chunk.js.map → BXWs2cI72.chunk.js.map} +1 -1
- package/dist/scripts/{Re7SHmEB2.chunk.js → Bl13dT192.chunk.js} +2 -2
- package/dist/scripts/{Re7SHmEB2.chunk.js.map → Bl13dT192.chunk.js.map} +1 -1
- package/dist/scripts/{CBswLW82.chunk.js → Bzx4bLV8.chunk.js} +2 -2
- package/dist/scripts/{CBswLW82.chunk.js.map → Bzx4bLV8.chunk.js.map} +1 -1
- package/dist/scripts/{4QdmE5x_2.chunk.js → CKKR2-wU2.chunk.js} +2 -2
- package/dist/scripts/{4QdmE5x_2.chunk.js.map → CKKR2-wU2.chunk.js.map} +1 -1
- package/dist/scripts/{s20CYII_2.chunk.js → CcjJpEaF2.chunk.js} +2 -2
- package/dist/scripts/{s20CYII_2.chunk.js.map → CcjJpEaF2.chunk.js.map} +1 -1
- package/dist/scripts/{B-DINEq3.chunk.js → Ch4Y5yk4.chunk.js} +2 -2
- package/dist/scripts/{B-DINEq3.chunk.js.map → Ch4Y5yk4.chunk.js.map} +1 -1
- package/dist/scripts/{DqAzhF3o.chunk.js → CitsW6ql.chunk.js} +2 -2
- package/dist/scripts/{DqAzhF3o.chunk.js.map → CitsW6ql.chunk.js.map} +1 -1
- package/dist/scripts/{iTyahUCH2.chunk.js → CowQEpZQ2.chunk.js} +2 -2
- package/dist/scripts/{iTyahUCH2.chunk.js.map → CowQEpZQ2.chunk.js.map} +1 -1
- package/dist/scripts/{DxrgOF1-.chunk.js → D2gRMPGY.chunk.js} +2 -2
- package/dist/scripts/{DxrgOF1-.chunk.js.map → D2gRMPGY.chunk.js.map} +1 -1
- package/dist/scripts/{BabEuLsF2.chunk.js → DDS7ndOq2.chunk.js} +2 -2
- package/dist/scripts/{BabEuLsF2.chunk.js.map → DDS7ndOq2.chunk.js.map} +1 -1
- package/dist/scripts/{_gzWinH7.chunk.js → DE24b7R6.chunk.js} +2 -2
- package/dist/scripts/{_gzWinH7.chunk.js.map → DE24b7R6.chunk.js.map} +1 -1
- package/dist/scripts/{CYgv1ISo2.chunk.js → DNY9inGn2.chunk.js} +2 -2
- package/dist/scripts/{CYgv1ISo2.chunk.js.map → DNY9inGn2.chunk.js.map} +1 -1
- package/dist/scripts/{DQY7SaMp2.chunk.js → DPJbiCR02.chunk.js} +3 -3
- package/dist/scripts/{DQY7SaMp2.chunk.js.map → DPJbiCR02.chunk.js.map} +1 -1
- package/dist/scripts/{BuFRt1UM.chunk.js → DWQdiwUw.chunk.js} +2 -2
- package/dist/scripts/{BuFRt1UM.chunk.js.map → DWQdiwUw.chunk.js.map} +1 -1
- package/dist/scripts/{DzTraroE2.chunk.js → DbSzdDBS2.chunk.js} +2 -2
- package/dist/scripts/{DzTraroE2.chunk.js.map → DbSzdDBS2.chunk.js.map} +1 -1
- package/dist/scripts/{NiiRK9j-2.chunk.js → Dj87pb142.chunk.js} +2 -2
- package/dist/scripts/{NiiRK9j-2.chunk.js.map → Dj87pb142.chunk.js.map} +1 -1
- package/dist/scripts/{DSNTuwQi2.chunk.js → EvtCZWZL2.chunk.js} +2 -2
- package/dist/scripts/{DSNTuwQi2.chunk.js.map → EvtCZWZL2.chunk.js.map} +1 -1
- package/dist/scripts/{Cdbg16A92.chunk.js → PSwC3iEf2.chunk.js} +2 -2
- package/dist/scripts/{Cdbg16A92.chunk.js.map → PSwC3iEf2.chunk.js.map} +1 -1
- package/dist/scripts/{B3UVC04b.chunk.js → TzLygaBE.chunk.js} +2 -2
- package/dist/scripts/{B3UVC04b.chunk.js.map → TzLygaBE.chunk.js.map} +1 -1
- package/dist/scripts/{app-jxJcaenU.js → app-B1NVV4PT.js} +3 -3
- package/dist/scripts/{app-jxJcaenU.js.map → app-B1NVV4PT.js.map} +1 -1
- package/dist/scripts/{CsoT7dzm.chunk.js → fh6sbun-.chunk.js} +2 -2
- package/dist/scripts/{CsoT7dzm.chunk.js.map → fh6sbun-.chunk.js.map} +1 -1
- package/dist/scripts/{s1EOR8_G2.chunk.js → kAYY_iVY2.chunk.js} +2 -2
- package/dist/scripts/{s1EOR8_G2.chunk.js.map → kAYY_iVY2.chunk.js.map} +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{N as e,Qt as t,at as n}from"./CrTgNROp.chunk.js";import{m as r,n as i}from"./Dwe-4MVf.chunk.js";import{r as a}from"./2zJwW9wb.chunk.js";import{t as o}from"./BIVEB8w0.chunk.js";import{t as s}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{N as e,Qt as t,at as n}from"./CrTgNROp.chunk.js";import{m as r,n as i}from"./Dwe-4MVf.chunk.js";import{r as a}from"./2zJwW9wb.chunk.js";import{t as o}from"./BIVEB8w0.chunk.js";import{t as s}from"./7M6FzdyD.chunk.js";import{a as c,kt as l,r as u,wt as d,xt as f}from"./app-B1NVV4PT.js";import{a as p,d as m,i as h,l as g,o as _,u as v}from"./Bzx4bLV8.chunk.js";n();var y=e(),b={chart:{spacing:[20,0,4,0]},title:{text:null},tooltip:{enabled:!1},credits:{enabled:!1},yAxis:{gridLineWidth:0,labels:{enabled:!1},title:{text:null},endOnTick:!0,tickAmount:10},xAxis:{lineWidth:0,labels:{style:{...g,textOverflow:`none`,wordBreak:`break-word`}}},legend:{enabled:!1},plotOptions:{column:{borderRadius:4,dataLabels:{enabled:!0,style:g,inside:!1,crop:!1,overflow:`allow`},groupPadding:0,minPointLength:8}},series:[{type:`column`,label:{enabled:!1},states:{hover:{enabled:!1}}}]},x=(e,t,n)=>({...b,xAxis:{...b.xAxis,categories:e,labels:{...b.xAxis.labels,useHTML:!0,formatter:function(){return m(this.value,n)}}},series:[{type:`column`,label:{enabled:!1},states:{hover:{enabled:!1}},data:t}]});function S(e){return(0,y.jsx)(v,{options:x(e.data.map(e=>e.name),e.data,e.labelAnnotations),annotations:e.labelAnnotations,className:`h-100`,containerProps:{className:`h-100`}})}var C={image:`_image_1a110_1`},w=o.encloseNamespace(`reportsShared.totalViewsByRoleCardEmptyState`);function T(){return(0,y.jsxs)(u,{className:`flex-grow-1 justify-content-center`,children:[(0,y.jsx)(u.Image,{src:f.EmptyStates.Shared.Ticket,className:C.image}),(0,y.jsx)(u.Heading,{className:`h6`,children:w(`heading`)}),(0,y.jsx)(u.Info,{className:`w-100`,children:w(`description`)})]})}var E=`reportsShared.videoViewsByRoleCard`,D=o.encloseNamespace(E);function O(e){let n=c(`video-views`),o=r(e.videoId?s.videoAggregation(e.videoId,`user_type`,n):s.aggregation(`user_type`,n));function u(e){return e?e.reduce((e,t)=>{let n=[a.System,`255`].includes(t.name)?null:t.name,r=e.find(e=>e.name===n);return r?r.count+=t.count:e.push({name:n,count:t.count}),e},[]).map(e=>({name:p(e.name),y:e.count,color:h(e.name)})).sort((e,t)=>_(e.name,t.name)):null}let f=u(o.data);return(0,y.jsx)(`div`,{className:`d-flex flex-column h-100 bg-white rounded p-3`,children:f?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`h2`,{className:`h6 mb-3`,children:(0,y.jsx)(i,{namespace:E,phrase:`videoViews`})}),f.length?(0,y.jsx)(`div`,{className:`flex-grow-1 position-relative`,children:(0,y.jsx)(`div`,{className:`position-absolute w-100 h-100`,children:(0,y.jsx)(S,{data:f,labelAnnotations:{"Classroom views":{onClick:()=>{t.trigger({application:l.DEFAULT,action:d.Default.CLASSROOM_VIEWS_POPUP})},tooltip:D(`classroomViewsSettings`)}}})})}):(0,y.jsx)(T,{})]}):(0,y.jsx)(`div`,{className:`partial-loading-background w-25`,children:`\xA0`})})}export{S as n,O as t};
|
|
2
|
+
//# sourceMappingURL=BU8DxGLM2.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CNihWz772.chunk.js","names":[],"sources":["../../src/shared/components/column-chart/ColumnChart.tsx","../../src/shared/views/overview-cards/video-views-by-role-card/empty-state/total-views-by-role-card-empty-state.module.scss","../../src/shared/views/overview-cards/video-views-by-role-card/empty-state/TotalViewsByRoleCardEmptyState.tsx","../../src/shared/views/overview-cards/video-views-by-role-card/VideoViewsByRoleCardView.tsx"],"sourcesContent":["import React from 'react';\nimport Highcharts from 'highcharts';\n\nimport { AnnotatedChart, formatAnnotatedLabel, LabelAnnotations } from 'shared/components/annotated-chart/AnnotatedChart';\nimport { CHART_FONT_STYLES } from 'shared/constants/ChartStyles';\n\nconst STATIC_COLUMN_CHART_OPTIONS: Highcharts.Options = {\n chart: {\n spacing: [ 20, 0, 4, 0 ]\n },\n title: {\n text: null\n },\n tooltip: {\n enabled: false\n },\n credits: {\n enabled: false\n },\n yAxis: {\n gridLineWidth: 0,\n labels: {\n enabled: false\n },\n title: {\n text: null\n },\n endOnTick: true,\n tickAmount: 10\n },\n xAxis: {\n lineWidth: 0,\n labels: {\n style: {\n ...CHART_FONT_STYLES,\n textOverflow: 'none',\n wordBreak: 'break-word'\n }\n }\n },\n legend: {\n enabled: false\n },\n plotOptions: {\n column: {\n borderRadius: 4,\n dataLabels: {\n enabled: true,\n style: CHART_FONT_STYLES,\n inside: false,\n crop: false,\n overflow: 'allow'\n },\n groupPadding: 0,\n minPointLength: 8\n }\n },\n series: [{\n type: 'column',\n label: {\n enabled: false\n },\n states: {\n hover: {\n enabled: false\n }\n }\n }]\n};\n\nconst getChartOptions = (\n categories: string[],\n data: Highcharts.PointOptionsObject[],\n labelAnnotations?: LabelAnnotations\n): Highcharts.Options => ({\n ...STATIC_COLUMN_CHART_OPTIONS,\n xAxis: {\n ...STATIC_COLUMN_CHART_OPTIONS.xAxis,\n categories,\n labels: {\n ...(STATIC_COLUMN_CHART_OPTIONS.xAxis as Highcharts.XAxisOptions).labels,\n useHTML: true,\n // Must be a function and not an arrow function to access `this.value`\n formatter: function () {\n return formatAnnotatedLabel(this.value as string, labelAnnotations);\n }\n }\n },\n series: [{\n type: 'column',\n label: {\n enabled: false\n },\n states: {\n hover: {\n enabled: false\n }\n },\n data\n }]\n});\n\ninterface ColumnChartProps {\n data: Highcharts.PointOptionsObject[];\n labelAnnotations?: LabelAnnotations;\n}\n\nexport function ColumnChart(props: ColumnChartProps) {\n const chartOptions = getChartOptions(props.data.map(data => data.name as string), props.data, props.labelAnnotations);\n\n return (\n <AnnotatedChart\n options={chartOptions}\n annotations={props.labelAnnotations}\n className='h-100'\n containerProps={{ className: 'h-100' }}\n />\n );\n}\n",":local {\n .image {\n width: 12.5rem;\n height: auto;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\n\nimport styles from './total-views-by-role-card-empty-state.module.scss';\n\nconst namespace = 'reportsShared.totalViewsByRoleCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function TotalViewsByRoleCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.Ticket}\n className={styles.image}\n />\n <EmptyState.Heading className='h6'>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('description')}\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nimport { ColumnChart } from 'shared/components/column-chart/ColumnChart';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { compareGroupNames } from 'shared/utils/GroupSortUtils';\nimport { mapUserTypeToChartColour, mapUserTypeToChartLabel } from 'shared/utils/UserUtils';\nimport { TotalViewsByRoleCardEmptyState } from 'shared/views/overview-cards/video-views-by-role-card/empty-state/TotalViewsByRoleCardEmptyState';\n\nconst namespace = 'reportsShared.videoViewsByRoleCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface VideoViewsByRoleCardProps {\n videoId?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function VideoViewsByRoleCardView(props: VideoViewsByRoleCardProps) {\n const requestFilter = useGetRequestFilter('video-views');\n\n const viewsByGroup = Flight.useBasicFetch<GroupedAnalyticsCount[]>(props.videoId ?\n VideoViewsV2Requests.videoAggregation(props.videoId, 'user_type', requestFilter) :\n VideoViewsV2Requests.aggregation('user_type', requestFilter));\n\n function getChartData(views: GroupedAnalyticsCount[]): Highcharts.PointOptionsObject[] {\n if (!views) return null;\n\n // Bucketing System user data as Anonymous\n const mergedViews = views.reduce((acc, val) => {\n const key = [ UserGroup.System, '255' ].includes(val.name) ? null : val.name;\n const existing = acc.find(v => v.name === key);\n\n if (existing)\n existing.count += val.count;\n else\n acc.push({ name: key, count: val.count });\n\n return acc;\n }, []);\n\n return mergedViews.map(group => ({\n name: mapUserTypeToChartLabel(group.name),\n y: group.count,\n color: mapUserTypeToChartColour(group.name as UserGroup)\n })).sort((a, b) => compareGroupNames(a.name, b.name));\n }\n\n const chartData = getChartData(viewsByGroup.data);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3'>\n {chartData ?\n <>\n <h2 className='h6 mb-3'><Text namespace={namespace} phrase='videoViews' /></h2>\n\n {chartData.length ?\n <div className='flex-grow-1 position-relative'>\n <div className='position-absolute w-100 h-100'>\n <ColumnChart data={chartData} labelAnnotations={{\n 'Classroom views': {\n onClick: () => {\n Core.AppLinkHelper.trigger({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CLASSROOM_VIEWS_POPUP\n });\n },\n tooltip: getPhrase('classroomViewsSettings')\n }\n }} />\n </div>\n </div> :\n <TotalViewsByRoleCardEmptyState />\n }\n </> :\n <div className='partial-loading-background w-25'> </div>\n }\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BU8DxGLM2.chunk.js","names":[],"sources":["../../src/shared/components/column-chart/ColumnChart.tsx","../../src/shared/views/overview-cards/video-views-by-role-card/empty-state/total-views-by-role-card-empty-state.module.scss","../../src/shared/views/overview-cards/video-views-by-role-card/empty-state/TotalViewsByRoleCardEmptyState.tsx","../../src/shared/views/overview-cards/video-views-by-role-card/VideoViewsByRoleCardView.tsx"],"sourcesContent":["import React from 'react';\nimport Highcharts from 'highcharts';\n\nimport { AnnotatedChart, formatAnnotatedLabel, LabelAnnotations } from 'shared/components/annotated-chart/AnnotatedChart';\nimport { CHART_FONT_STYLES } from 'shared/constants/ChartStyles';\n\nconst STATIC_COLUMN_CHART_OPTIONS: Highcharts.Options = {\n chart: {\n spacing: [ 20, 0, 4, 0 ]\n },\n title: {\n text: null\n },\n tooltip: {\n enabled: false\n },\n credits: {\n enabled: false\n },\n yAxis: {\n gridLineWidth: 0,\n labels: {\n enabled: false\n },\n title: {\n text: null\n },\n endOnTick: true,\n tickAmount: 10\n },\n xAxis: {\n lineWidth: 0,\n labels: {\n style: {\n ...CHART_FONT_STYLES,\n textOverflow: 'none',\n wordBreak: 'break-word'\n }\n }\n },\n legend: {\n enabled: false\n },\n plotOptions: {\n column: {\n borderRadius: 4,\n dataLabels: {\n enabled: true,\n style: CHART_FONT_STYLES,\n inside: false,\n crop: false,\n overflow: 'allow'\n },\n groupPadding: 0,\n minPointLength: 8\n }\n },\n series: [{\n type: 'column',\n label: {\n enabled: false\n },\n states: {\n hover: {\n enabled: false\n }\n }\n }]\n};\n\nconst getChartOptions = (\n categories: string[],\n data: Highcharts.PointOptionsObject[],\n labelAnnotations?: LabelAnnotations\n): Highcharts.Options => ({\n ...STATIC_COLUMN_CHART_OPTIONS,\n xAxis: {\n ...STATIC_COLUMN_CHART_OPTIONS.xAxis,\n categories,\n labels: {\n ...(STATIC_COLUMN_CHART_OPTIONS.xAxis as Highcharts.XAxisOptions).labels,\n useHTML: true,\n // Must be a function and not an arrow function to access `this.value`\n formatter: function () {\n return formatAnnotatedLabel(this.value as string, labelAnnotations);\n }\n }\n },\n series: [{\n type: 'column',\n label: {\n enabled: false\n },\n states: {\n hover: {\n enabled: false\n }\n },\n data\n }]\n});\n\ninterface ColumnChartProps {\n data: Highcharts.PointOptionsObject[];\n labelAnnotations?: LabelAnnotations;\n}\n\nexport function ColumnChart(props: ColumnChartProps) {\n const chartOptions = getChartOptions(props.data.map(data => data.name as string), props.data, props.labelAnnotations);\n\n return (\n <AnnotatedChart\n options={chartOptions}\n annotations={props.labelAnnotations}\n className='h-100'\n containerProps={{ className: 'h-100' }}\n />\n );\n}\n",":local {\n .image {\n width: 12.5rem;\n height: auto;\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\nimport { ImageUrls } from 'shared/constants/ReportsImageUrls';\n\nimport styles from './total-views-by-role-card-empty-state.module.scss';\n\nconst namespace = 'reportsShared.totalViewsByRoleCardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function TotalViewsByRoleCardEmptyState() {\n return (\n <EmptyState className='flex-grow-1 justify-content-center'>\n <EmptyState.Image\n src={ImageUrls.EmptyStates.Shared.Ticket}\n className={styles.image}\n />\n <EmptyState.Heading className='h6'>\n {getPhrase('heading')}\n </EmptyState.Heading>\n <EmptyState.Info className='w-100'>\n {getPhrase('description')}\n </EmptyState.Info>\n </EmptyState>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { GroupedAnalyticsCount } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nimport { ColumnChart } from 'shared/components/column-chart/ColumnChart';\nimport { Actions } from 'shared/constants/ReportsActions';\nimport { AppChannels } from 'shared/constants/ReportsRadioChannels';\nimport { VideoViewsV2Requests } from 'shared/flight-requests/VideoViewsV2Requests';\nimport { useGetRequestFilter } from 'shared/hooks/UseGetFilterQueryParams';\nimport { compareGroupNames } from 'shared/utils/GroupSortUtils';\nimport { mapUserTypeToChartColour, mapUserTypeToChartLabel } from 'shared/utils/UserUtils';\nimport { TotalViewsByRoleCardEmptyState } from 'shared/views/overview-cards/video-views-by-role-card/empty-state/TotalViewsByRoleCardEmptyState';\n\nconst namespace = 'reportsShared.videoViewsByRoleCard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface VideoViewsByRoleCardProps {\n videoId?: string;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function VideoViewsByRoleCardView(props: VideoViewsByRoleCardProps) {\n const requestFilter = useGetRequestFilter('video-views');\n\n const viewsByGroup = Flight.useBasicFetch<GroupedAnalyticsCount[]>(props.videoId ?\n VideoViewsV2Requests.videoAggregation(props.videoId, 'user_type', requestFilter) :\n VideoViewsV2Requests.aggregation('user_type', requestFilter));\n\n function getChartData(views: GroupedAnalyticsCount[]): Highcharts.PointOptionsObject[] {\n if (!views) return null;\n\n // Bucketing System user data as Anonymous\n const mergedViews = views.reduce((acc, val) => {\n const key = [ UserGroup.System, '255' ].includes(val.name) ? null : val.name;\n const existing = acc.find(v => v.name === key);\n\n if (existing)\n existing.count += val.count;\n else\n acc.push({ name: key, count: val.count });\n\n return acc;\n }, []);\n\n return mergedViews.map(group => ({\n name: mapUserTypeToChartLabel(group.name),\n y: group.count,\n color: mapUserTypeToChartColour(group.name as UserGroup)\n })).sort((a, b) => compareGroupNames(a.name, b.name));\n }\n\n const chartData = getChartData(viewsByGroup.data);\n\n return (\n <div className='d-flex flex-column h-100 bg-white rounded p-3'>\n {chartData ?\n <>\n <h2 className='h6 mb-3'><Text namespace={namespace} phrase='videoViews' /></h2>\n\n {chartData.length ?\n <div className='flex-grow-1 position-relative'>\n <div className='position-absolute w-100 h-100'>\n <ColumnChart data={chartData} labelAnnotations={{\n 'Classroom views': {\n onClick: () => {\n Core.AppLinkHelper.trigger({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CLASSROOM_VIEWS_POPUP\n });\n },\n tooltip: getPhrase('classroomViewsSettings')\n }\n }} />\n </div>\n </div> :\n <TotalViewsByRoleCardEmptyState />\n }\n </> :\n <div className='partial-loading-background w-25'> </div>\n }\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{N as e,at as t}from"./CrTgNROp.chunk.js";import{f as n}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{N as e,at as t}from"./CrTgNROp.chunk.js";import{f as n}from"./Bzx4bLV8.chunk.js";t();var r=e();function i(e){return(0,r.jsx)(`svg`,{...e,children:(0,r.jsx)(`path`,{fill:`currentColor`,d:n})})}export{i as t};
|
|
2
|
+
//# sourceMappingURL=BXWs2cI72.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"BXWs2cI72.chunk.js","names":[],"sources":["../../../../libs/shared/src/images/svg/objects/CogSvg.tsx"],"sourcesContent":["import React from 'react';\n\nimport { COG_SVG_PATH } from './CogSvgPath';\n\nexport function CogSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path fill='currentColor' d={COG_SVG_PATH} />\n </svg>\n );\n}\n"],"mappings":"sGAIA,SAAgB,EAAO,EAAsC,CAC3D,OACE,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,GAAI,YACP,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,KAAK,eAAe,EAAG,CAAe,CAAA,CACzC,CAAA,CAET"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{N as e,at as t}from"./CrTgNROp.chunk.js";import{n,r,z as i}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{N as e,at as t}from"./CrTgNROp.chunk.js";import{n,r,z as i}from"./app-B1NVV4PT.js";t();var a={container:`_container_nowrk_1`,subContainer:`_subContainer_nowrk_7`},o=e();function s(e){return n({title:e.error?.heading}),e.error?(0,o.jsx)(`div`,{style:{height:`85vh`},children:(0,o.jsx)(`div`,{style:{backgroundImage:`url(${e.imageUrl})`},className:a.container,children:(0,o.jsxs)(r,{className:a.subContainer,children:[(0,o.jsx)(r.Heading,{children:e.error.heading}),(0,o.jsx)(r.Info,{className:`w-33 mb-4`,children:e.error.description}),e.error.cta!==!1&&(0,o.jsx)(r.Cta,{text:e.error.cta.text,className:`btn btn-dark ${e.error.description?`mt-n2`:``}`,href:e.error.cta.url,icon:i,openInNewTab:!0})]})})}):(0,o.jsx)(o.Fragment,{})}export{s as NoClassroomsErrorView};
|
|
2
|
+
//# sourceMappingURL=Bl13dT192.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"Bl13dT192.chunk.js","names":[],"sources":["../../src/apps/default/views/no-classrooms-error/no-classrooms-error.module.scss","../../src/apps/default/views/no-classrooms-error/NoClassroomsErrorView.tsx"],"sourcesContent":[":local {\n .container {\n height: 100%;\n background-size: 100%;\n background-repeat: no-repeat;\n position: relative;\n }\n \n .subContainer {\n position: absolute;\n top: 40%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100%;\n }\n}","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { NewWindowSvg } from 'libs/shared/images/svg/actions/NewWindowSvg';\n\nimport styles from './no-classrooms-error.module.scss';\n\ninterface NoClassroomsErrorViewProps {\n error: ErrorPageError;\n imageUrl?: string;\n}\n\nexport function NoClassroomsErrorView(props: NoClassroomsErrorViewProps): React.ReactElement {\n useSetPageMetadata({ title: props.error?.heading });\n\n if (!props.error)\n return <></>;\n\n return (\n <div style={{ height: '85vh' }}>\n <div style={{ backgroundImage: `url(${props.imageUrl})` }} className={styles.container}>\n <EmptyState className={styles.subContainer}>\n <EmptyState.Heading>{props.error.heading}</EmptyState.Heading>\n\n <EmptyState.Info className='w-33 mb-4'>{props.error.description}</EmptyState.Info>\n\n {props.error.cta !== false &&\n <EmptyState.Cta\n text={props.error.cta.text}\n className={`btn btn-dark ${props.error.description ? 'mt-n2' : ''}`}\n href={props.error.cta.url}\n icon={NewWindowSvg}\n openInNewTab\n />\n }\n </EmptyState>\n </div>\n </div>\n );\n}\n"],"mappings":"gLCcA,SAAgB,EAAsB,EAAuD,CAM3F,OALA,EAAmB,CAAE,MAAO,EAAM,OAAO,OAAQ,CAAC,EAE7C,EAAM,OAIT,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,MAAO,CAAE,OAAQ,MAAO,YAC3B,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,MAAO,CAAE,gBAAiB,OAAO,EAAM,SAAS,EAAG,EAAG,UAAW,EAAO,oBAC3E,EAAA,EAAA,KAAA,CAAC,EAAD,CAAY,UAAW,EAAO,sBAA9B,EACE,EAAA,EAAA,IAAA,CAAC,EAAW,QAAZ,CAAA,SAAqB,EAAM,MAAM,OAA4B,CAAA,GAE7D,EAAA,EAAA,IAAA,CAAC,EAAW,KAAZ,CAAiB,UAAU,qBAAa,EAAM,MAAM,WAA6B,CAAA,EAEhF,EAAM,MAAM,MAAQ,KACnB,EAAA,EAAA,IAAA,CAAC,EAAW,IAAZ,CACE,KAAM,EAAM,MAAM,IAAI,KACtB,UAAW,gBAAgB,EAAM,MAAM,YAAc,QAAU,KAC/D,KAAM,EAAM,MAAM,IAAI,IACtB,KAAM,EACN,aAAA,EACD,CAAA,CAEO,GACT,CAAA,CACF,CAAA,GArBE,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,CAuBf"}
|