@clickview/lite 0.65.2 → 0.65.3
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/bundles.json +1 -1
- package/dist/scripts/{3549-c61e7b47a9-lite.chunk.js → 3549-7efa6695e9-lite.chunk.js} +2 -2
- package/dist/scripts/3549-7efa6695e9-lite.chunk.js.map +1 -0
- package/dist/scripts/{7177-2844888842-lite.chunk.js → 7177-423a032cdc-lite.chunk.js} +2 -2
- package/dist/scripts/7177-423a032cdc-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-ccf68491f0.min.js → bundle-ac021a9762.min.js} +3 -3
- package/dist/scripts/{bundle-ccf68491f0.min.js.map → bundle-ac021a9762.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/3549-c61e7b47a9-lite.chunk.js.map +0 -1
- package/dist/scripts/7177-2844888842-lite.chunk.js.map +0 -1
- /package/dist/scripts/{bundle-ccf68491f0.min.js.LICENSE.txt → bundle-ac021a9762.min.js.LICENSE.txt} +0 -0
package/dist/bundles.json
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3549],{74901:(e,a,t)=>{function n(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,a){if(e){if("string"==typeof e)return r(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?r(e,a):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,n=Array(a);t<a;t++)n[t]=e[t];return n}t.d(a,{K:()=>i});var i=function(e){var a=[],t=[];return e.users&&a.push.apply(a,n(e.users)),e.classrooms&&t.push.apply(t,n(e.classrooms)),e.classroomGroups&&t.push.apply(t,n(e.classroomGroups)),{userId:a,groupId:t}}},94644:(e,a,t)=>{t.d(a,{r:()=>d});var n=t(50242),r=t(81886),i=t(67058),s=t(14553),l=t(49267),o=t(49075),c={notFound:i.d,forbidden:{rating:s.q,yearLevel:s.q,region:l.a,privacy:s.q},badRequest:o._,internalServerError:o._};function d(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var s=Object.assign(Object.assign({},c),a);i&&r.Q.Ry.isStatusCodeError(i)&&(i!==n.o.InternalServer?i!==n.o.NotFound?i!==n.o.Forbidden?t.badRequest||r.Q.Ry.throw(new s.badRequest):t.forbidden||r.Q.Ry.throw(new s.forbidden.privacy):t.notFound||r.Q.Ry.throw(new s.notFound):t.internalServerError||r.Q.Ry.throw(new o._))}}},17913:(e,a,t)=>{t.d(a,{u:()=>s});var n=t(97395),r=t(110),i=t(62875),s={individualEngagement:function(e,a,t,r){var s=Object.assign({objectId:e},a);return t&&(s.sharerId=t),r&&(s.includePublicViews=!0),{url:n._.urlBuilder("{gateway}/v1/analytics/heat-map",s),key:(0,i.H)("engagement:".concat(e),a,t),formatData:function(e){var a;return Object.assign(Object.assign({},e),{data:null===(a=e.data)||void 0===a?void 0:a.map((function(e){var a;return Object.assign(Object.assign({},e),{heatMap:null!==(a=e.heatMap)&&void 0!==a?a:[]})}))})},normalize:!1}},aggregateEngagement:function(e,a,t,r){var s=Object.assign({objectId:e},a);return t&&(s.sharerId=t),r&&(s.includePublicViews=!0),{url:n._.urlBuilder("{gateway}/v1/analytics/heat-map/aggregations",s),key:(0,i.H)("aggregate:engagement:".concat(e),a,t),formatData:function(e){var a;return Object.assign(Object.assign({},e),{heatMap:null!==(a=e.heatMap)&&void 0!==a?a:[]})},normalize:!1}},views:function(e,a,t,s){var l=Object.assign(Object.assign({},e),{timeOffset:r.O.getTimezoneOffset()});return a&&(l.objectId=a),t&&(l.sharerId=t),s&&(l.includePublicViews=!0),{url:n._.urlBuilder("{gateway}/v1/analytics/video-views",l),key:(0,i.H)("video:views:".concat(a),e,t),normalize:!1}}}},91286:(e,a,t)=>{t.d(a,{v:()=>s});var n=t(32735),r=t(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function s(e,a,t){var s=Array.isArray(e)?e:[e];(0,n.useEffect)((function(){s.forEach((function(e){(0,r.r)(e.statusCode,a,t)}))}),[i(s),a,t])}},62875:(e,a,t)=>{function n(e,a,t){var n="".concat(e,":").concat(a.start,":").concat(a.end),r=Array.isArray(a.userId)?a.userId.sort().join(":"):a.userId,i=Array.isArray(a.groupId)?a.groupId.sort().join(":"):a.groupId;return r&&(n+=":".concat(r)),i&&(n+=":".concat(i)),t&&(n+=":".concat(t)),n}t.d(a,{H:()=>n})},27513:(e,a,t)=>{t.d(a,{m:()=>u});var n=t(32735),r=t(20354),i=t(16714),s=t(39151),l=t(22902),o=t(37802),c=t(66),d=t(11293);function u(e){var a,t=(0,o.r)(null).hasClassrooms,u=(0,l.T)().hasPermissions,m=r.a.useBasicFetch(s.L.config());return n.createElement("div",null,n.createElement(d.p,{analyticsUrl:null===(a=m.data)||void 0===a?void 0:a.analyticsWebUrl,hasAnalytics:u(i.C.ViewCustomerAnalytics),video:e.video}),n.createElement(c.j,{video:e.video,tabs:e.tabs,dateRangeAppLinkParams:e.dateRangeAppLinkParams,hasClassrooms:t}))}},11293:(e,a,t)=>{t.d(a,{p:()=>g});var n=t(32735),r=t(57900),i=t(97395),s=t(2948),l=t(10874),o=t(83345),c=t(4594),d=t(35223),u=t(86702);function m(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,n=Array(a);t<a;t++)n[t]=e[t];return n}var v="lite.insightsAdminAlert";function g(e){var a,t,g=(a=(0,s.D)(u.y.INSIGHTS_ADMIN_ALERT,!0,{storage:r.Z1.LocalStorage}),t=2,function(e){if(Array.isArray(e))return e}(a)||function(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,r,i,s,l=[],o=!0,c=!1;try{if(i=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;o=!1}else for(;!(o=(n=i.call(t)).done)&&(l.push(n.value),l.length!==a);o=!0);}catch(e){c=!0,r=e}finally{try{if(!o&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(c)throw r}}return l}}(a,t)||function(e,a){if(e){if("string"==typeof e)return m(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?m(e,a):void 0}}(a,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),p=g[0],h=g[1];return e.hasAnalytics&&p?n.createElement("div",{role:"alert",className:"d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4"},n.createElement("div",null,n.createElement(o.x,{namespace:v,phrase:"adminAlert"}),n.createElement("a",{className:"text-info",href:function(){if(!e.video)return e.analyticsUrl;var a="";return e.video.typeId===c.E.Interactive&&(a="/interactives/".concat(e.video.id,"/views")),e.video.typeId===c.E.Video&&(a="/videos/".concat(e.video.id,"/views")),e.video.typeId===c.E.Clip&&(a="/clips/".concat(e.video.id,"/views")),i._.safeUrlConcat(e.analyticsUrl,a)}(),target:"_blank"},n.createElement(o.x,{namespace:v,phrase:"analytics"})),"."),n.createElement(l.h,{svgName:d.vn.Close,className:"text-blue",onClick:function(){h(!1)}})):n.createElement(n.Fragment,null)}},17934:(e,a,t)=>{t.d(a,{R:()=>I});var n=t(32735),r=t(82602),i=t(20354),s=t(74901),l=t(40003),o=t(30439),c=t(65853),d=t(64249),u=t(10874),m=t(83345),v=t(39151),g=t(1666),p=t(31949),h=t(17913),f=t(35223),y=t(86099),b=t(24758),E="insights.shareInfo";function I(e){var a,t,I,A,w=i.a.useBasicFetch(v.L.config()),N=Object.assign(Object.assign({},(0,l.wO)((0,l.Hb)(),e.dateRangeAppLinkParams)),(0,s.K)(e.audienceAppLinkParams)),k=i.a.useBasicFetch(p.N.currentUser()),j=i.a.useBasicFetch(e.video&&o.o.getShareLinkByObjectId(e.video.id)),S=i.a.useBasicFetch(e.video&&o.o.getSentDirectShareByObjectId(e.video.id)),O=i.a.useBasicFetch((null===(a=k.data)||void 0===a?void 0:a.customerId)&&d.I.getDirectShareRecipientsRequest(k.data.customerId,S.data)),C=i.a.useBasicFetch(k.data&&e.video&&h.u.views(N,e.video.id,k.data.id)),U=i.a.useBasicFetch(e.video&&o.o.getPrivacy(e.video.id)),L=i.a.useBasicFetch((null===(t=k.data)||void 0===t?void 0:t.isAuthenticated)&&g.h.yearGroups(k.data.customerId)),B=j.hasCompleted&&!j.data&&S.hasCompleted&&!S.data,F=j.hasCompleted&&j.data||S.hasCompleted&&S.data&&(!j.data||U.data)&&(!j.data||L.data)&&O.data&&C.data,R=j.data&&U.data&&L.data&&c.R.getIconAndText({entity:e.video,entityTypeId:e.video.typeId,hasStudentExp:!1,isPasswordProtected:j.data.isPasswordProtected,linkExpireDate:j.data.linkExpireDate,privacy:U.data,status:j.data.status,yearGroups:L.data}),x=n.useMemo((function(){var e;return null===(e=C.data)||void 0===e?void 0:e.data.reduce((function(e,a){return a.count+e}),0)}),[C.data]);return n.createElement("div",{className:"mb-4"},F&&n.createElement(n.Fragment,null,n.createElement("h2",{className:"h4"},n.createElement(m.x,{namespace:E,phrase:"shareInfo"})),n.createElement("div",{className:"d-flex border border-light p-3 rounded-3 align-items-center justify-content-between"},n.createElement("div",{className:"d-flex align-items-center gap-2"},n.createElement(b.A,{shareRecipients:O.data,imageCdnUrl:null===(I=w.data)||void 0===I?void 0:I.imageCdnUrl,hasShareLink:!!j.data,maxAvatars:4,shareLinkText:null==R?void 0:R.text}),"·",n.createElement("p",{className:"mb-0"},(0,r.WU)(null===(A=S.data)||void 0===A?void 0:A.dateCreated)),x&&n.createElement(n.Fragment,null,"·",n.createElement("p",{className:"mb-0"},n.createElement(m.x,{namespace:E,phrase:"views",options:{smartCount:x}})))),n.createElement(u.h,{appLink:(0,y.YK)(e.video),svgName:f.vn.Share,className:"btn btn-outline-dark"},n.createElement(m.x,{namespace:E,phrase:"share"})))),!B&&!F&&n.createElement(n.Fragment,null,n.createElement("div",{className:"h4 partial-loading-background w-25"}," "),n.createElement("div",{className:"p-3 rounded partial-loading-background"},n.createElement("p",{className:"mb-1"}," "))))}},71051:(e,a,t)=>{t.r(a),t.d(a,{VideoInsightsOverviewView:()=>z});var n=t(32735),r=t(23481),i=t(2948),s=t(20354),l=t(75896),o=t(42642),c=t(94652),d=t(25216),u=t(461),m=t(35223),v=r.T.encloseNamespace("shared.insightStudentsNotWatched");function g(e){var a,t=(null===(a=e.students)||void 0===a?void 0:a.filter((function(a){var t;return!(null===(t=e.watchedIds)||void 0===t?void 0:t.includes(a.id))})))||[];return n.createElement(d.L,{title:v("title"),svgName:m.vn.Puzzle,svgClassName:"bg-light-teal text-teal"},n.createElement(u.y,{students:t,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:v("studentsDisplay"),anonymiseUsers:e.anonymiseUsers}))}var p=r.T.encloseNamespace("shared.insightStudentsWatched");function h(e){return n.createElement(d.L,{title:p("title"),svgName:m.vn.Flag,svgClassName:"bg-light-indigo text-indigo",count:e.students.length},n.createElement(u.y,{students:e.students,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:p("studentsDisplay"),appLink:e.heatmapAppLink,appLinkText:p("viewAll"),anonymiseUsers:e.anonymiseUsers}))}var f=t(26025),y=t(74901),b=t(40003),E=t(30439),I=t(83345),A=t(38143),w=t(4594),N=t(39151),k=t(31949),j=t(17913),S=t(91286),O=t(93322),C=t(79612),U=t(37802),L=t(31908),B=t(99742),F=t(88630),R=t(49673),x=t(5672),P=t(27513),T=t(17934);const _={partialInsights:"ImBB3"};function D(){return n.createElement("div",null,n.createElement("h2",{className:"h4 w-25 partial-loading-background"}," "),n.createElement("div",{className:"row g-3 mb-5"},n.createElement("div",{className:"col-12"},n.createElement("div",{className:"".concat(_.partialInsights," rounded partial-loading-background")}))),n.createElement("h2",{className:"h4 w-25 partial-loading-background"}," "),n.createElement("div",{className:"row g-3 mb-5"},n.createElement("div",{className:"col-6"},n.createElement("div",{className:"".concat(_.partialInsights," rounded partial-loading-background")})),n.createElement("div",{className:"col-6"},n.createElement("div",{className:"".concat(_.partialInsights," rounded partial-loading-background")}))))}var M=t(14070),V=t(97291);function H(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,n=Array(a);t<a;t++)n[t]=e[t];return n}var q="insights.videoInsightsOverview",G=r.T.encloseNamespace(q);function z(e){var a,t,r,d,u,m,v,p=(m=(0,i.D)(A.g.ANONYMISE_USERS),v=1,function(e){if(Array.isArray(e))return e}(m)||function(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,r,i,s,l=[],o=!0,c=!1;try{if(i=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;o=!1}else for(;!(o=(n=i.call(t)).done)&&(l.push(n.value),l.length!==a);o=!0);}catch(e){c=!0,r=e}finally{try{if(!o&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(c)throw r}}return l}}(m,v)||function(e,a){if(e){if("string"==typeof e)return H(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?H(e,a):void 0}}(m,v)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,O.F)();var _=(0,U.r)(null).hasClassrooms,z=s.a.useBasicFetch(k.N.currentUser()),W=s.a.useBasicFetch(N.L.config()),Q=L.M.getVideoRequest(e.videoId,e.typeId),$=s.a.useBasicFetch(Q),K=f.B.getAudienceAppLinkParams(),Y=f.B.getDateRangeAppLinkParams(),Z=Object.assign(Object.assign({},(0,b.wO)((0,b.Hb)(),Y)),(0,y.K)(K));(0,C.M)({title:$.data?G("pageTitle",{video:null===(a=$.data)||void 0===a?void 0:a.name}):null}),(0,S.v)($);var J=s.a.useBasicFetch(j.u.aggregateEngagement(e.videoId,Z,z.data.id)),X=1===(null===(t=K.classrooms)||void 0===t?void 0:t.length)&&!(null===(r=K.classroomGroups)||void 0===r?void 0:r.length),ee=s.a.useBasicFetch(X&&F.F.getClassroomStudents(l.m.first(K.classrooms))),ae=s.a.useBasicFetch((null===(d=J.data)||void 0===d?void 0:d.userIds)&&E.o.getRecipientsById(J.data.userIds,z.data.customerId)),te=s.a.useBasicFetch(z.data&&j.u.views(Z,e.videoId,z.data.id)),ne=s.a.useBasicFetch(E.o.getShareLinkByObjectId(e.videoId)),re=s.a.useBasicFetch(E.o.getSentDirectShareByObjectId(e.videoId)),ie=!(!ne.data&&!re.data);function se(){return ae.data?Object.values(ae.data):[]}var le=z.data&&W.data&&$.data&&J.data&&(!X||ee.data),oe=Object.assign(Object.assign({},K),Y),ce=function(e,a){return{heatmapAppLink:{application:V.O.INSIGHTS,action:M.e.Insights.VIDEO_HEATMAP,args:[e],params:a}}}(e.videoId,oe);return n.createElement("div",{className:"px-3"},n.createElement(P.m,{video:$.data,dateRangeAppLinkParams:Y,tabs:function(){var e,a,t;return(null===(e=$.data)||void 0===e?void 0:e.typeId)===w.E.Clip?(0,x.$o)(null===(a=$.data)||void 0===a?void 0:a.id,"insights",oe):(0,x.$6)(null===(t=$.data)||void 0===t?void 0:t.id,"insights",oe)}()}),n.createElement(T.R,{audienceAppLinkParams:K,dateRangeAppLinkParams:Y,video:$.data}),!le&&n.createElement(D,null),le&&n.createElement(R.u,{video:$.data,hasShared:ie},n.createElement("section",{className:"mb-5"},n.createElement("h2",{className:"h4"},n.createElement(I.x,{namespace:q,phrase:"studentViewing"}),n.createElement("span",null,": ",se().length,ee.data?"/".concat(ee.data.data.length):"")),n.createElement("div",{className:"row g-3"},X&&n.createElement("div",{className:"col-12 col-md"},n.createElement(g,{students:ee.data.data,watchedIds:J.data.userIds,imageCdnUrl:W.data.imageCdnUrl,heatmapAppLink:ce.heatmapAppLink,imageUrl:B.W.Insights.AVATAR,anonymiseUsers:p})),n.createElement("div",{className:"col-12 col-md"},n.createElement(h,{students:se(),imageCdnUrl:W.data.imageCdnUrl,heatmapAppLink:ce.heatmapAppLink,imageUrl:B.W.Insights.AVATAR,anonymiseUsers:p})))),n.createElement("section",{className:"mb-5"},n.createElement("h2",{className:"h4"},n.createElement(I.x,{namespace:q,phrase:_?"classEngagement":"engagement"})),n.createElement("div",{className:"row g-3"},n.createElement("div",{className:"col-12 col-md-6"},n.createElement(o.i,{osCount:null===(u=te.data)||void 0===u?void 0:u.osCount})),n.createElement("div",{className:"col-12 col-md-6"},n.createElement(c.b,{engagement:J.data,heatmapAppLink:ce.heatmapAppLink}))))))}}}]);
|
|
2
|
-
//# sourceMappingURL=3549-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3549],{74901:(e,a,t)=>{function n(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,a){if(e){if("string"==typeof e)return r(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?r(e,a):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,n=Array(a);t<a;t++)n[t]=e[t];return n}t.d(a,{K:()=>i});var i=function(e){var a=[],t=[];return e.users&&a.push.apply(a,n(e.users)),e.classrooms&&t.push.apply(t,n(e.classrooms)),e.classroomGroups&&t.push.apply(t,n(e.classroomGroups)),{userId:a,groupId:t}}},94644:(e,a,t)=>{t.d(a,{r:()=>d});var n=t(50242),r=t(81886),i=t(67058),s=t(14553),l=t(49267),o=t(49075),c={notFound:i.d,forbidden:{rating:s.q,yearLevel:s.q,region:l.a,privacy:s.q},badRequest:o._,internalServerError:o._};function d(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var s=Object.assign(Object.assign({},c),a);i&&r.Q.Ry.isStatusCodeError(i)&&(i!==n.o.InternalServer?i!==n.o.NotFound?i!==n.o.Forbidden?t.badRequest||r.Q.Ry.throw(new s.badRequest):t.forbidden||r.Q.Ry.throw(new s.forbidden.privacy):t.notFound||r.Q.Ry.throw(new s.notFound):t.internalServerError||r.Q.Ry.throw(new o._))}}},17913:(e,a,t)=>{t.d(a,{u:()=>s});var n=t(97395),r=t(110),i=t(62875),s={individualEngagement:function(e,a,t,r){var s=Object.assign({objectId:e},a);return t&&(s.sharerId=t),r&&(s.includePublicViews=!0),{url:n._.urlBuilder("{gateway}/v1/analytics/heat-map",s),key:(0,i.H)("engagement:".concat(e),a,t),formatData:function(e){var a;return Object.assign(Object.assign({},e),{data:null===(a=e.data)||void 0===a?void 0:a.map((function(e){var a;return Object.assign(Object.assign({},e),{heatMap:null!==(a=e.heatMap)&&void 0!==a?a:[]})}))})},normalize:!1}},aggregateEngagement:function(e,a,t,r){var s=Object.assign({objectId:e},a);return t&&(s.sharerId=t),r&&(s.includePublicViews=!0),{url:n._.urlBuilder("{gateway}/v1/analytics/heat-map/aggregations",s),key:(0,i.H)("aggregate:engagement:".concat(e),a,t),formatData:function(e){var a;return Object.assign(Object.assign({},e),{heatMap:null!==(a=e.heatMap)&&void 0!==a?a:[]})},normalize:!1}},views:function(e,a,t,s){var l=Object.assign(Object.assign({},e),{timeOffset:r.O.getTimezoneOffset()});return a&&(l.objectId=a),t&&(l.sharerId=t),s&&(l.includePublicViews=!0),{url:n._.urlBuilder("{gateway}/v1/analytics/video-views",l),key:(0,i.H)("video:views:".concat(a),e,t),normalize:!1}}}},91286:(e,a,t)=>{t.d(a,{v:()=>s});var n=t(32735),r=t(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function s(e,a,t){var s=Array.isArray(e)?e:[e];(0,n.useEffect)((function(){s.forEach((function(e){(0,r.r)(e.statusCode,a,t)}))}),[i(s),a,t])}},62875:(e,a,t)=>{function n(e,a,t){var n="".concat(e,":").concat(a.start,":").concat(a.end),r=Array.isArray(a.userId)?a.userId.sort().join(":"):a.userId,i=Array.isArray(a.groupId)?a.groupId.sort().join(":"):a.groupId;return r&&(n+=":".concat(r)),i&&(n+=":".concat(i)),t&&(n+=":".concat(t)),n}t.d(a,{H:()=>n})},27513:(e,a,t)=>{t.d(a,{m:()=>u});var n=t(32735),r=t(20354),i=t(16714),s=t(39151),l=t(22902),o=t(37802),c=t(66),d=t(11293);function u(e){var a,t=(0,o.r)(null).hasClassrooms,u=(0,l.T)().hasPermissions,m=r.a.useBasicFetch(s.L.config());return n.createElement("div",null,n.createElement(d.p,{analyticsUrl:null===(a=m.data)||void 0===a?void 0:a.analyticsWebUrl,hasAnalytics:u(i.C.ViewCustomerAnalytics),video:e.video}),n.createElement(c.j,{video:e.video,tabs:e.tabs,dateRangeAppLinkParams:e.dateRangeAppLinkParams,hasClassrooms:t}))}},11293:(e,a,t)=>{t.d(a,{p:()=>g});var n=t(32735),r=t(57900),i=t(97395),s=t(2948),l=t(10874),o=t(83345),c=t(4594),d=t(35223),u=t(86702);function m(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,n=Array(a);t<a;t++)n[t]=e[t];return n}var v="lite.insightsAdminAlert";function g(e){var a,t,g=(a=(0,s.D)(u.y.INSIGHTS_ADMIN_ALERT,!0,{storage:r.Z1.LocalStorage}),t=2,function(e){if(Array.isArray(e))return e}(a)||function(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,r,i,s,l=[],o=!0,c=!1;try{if(i=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;o=!1}else for(;!(o=(n=i.call(t)).done)&&(l.push(n.value),l.length!==a);o=!0);}catch(e){c=!0,r=e}finally{try{if(!o&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(c)throw r}}return l}}(a,t)||function(e,a){if(e){if("string"==typeof e)return m(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?m(e,a):void 0}}(a,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),p=g[0],h=g[1];return e.hasAnalytics&&p?n.createElement("div",{role:"alert",className:"d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4"},n.createElement("div",null,n.createElement(o.x,{namespace:v,phrase:"adminAlert"}),n.createElement("a",{className:"text-info",href:function(){if(!e.video)return e.analyticsUrl;var a="";return e.video.typeId===c.E.Interactive&&(a="/interactives/".concat(e.video.id,"/views")),e.video.typeId===c.E.Video&&(a="/videos/".concat(e.video.id,"/views")),e.video.typeId===c.E.Clip&&(a="/clips/".concat(e.video.id,"/views")),i._.safeUrlConcat(e.analyticsUrl,a)}(),target:"_blank"},n.createElement(o.x,{namespace:v,phrase:"analytics"})),"."),n.createElement(l.h,{svgName:d.vn.Close,className:"text-blue",onClick:function(){h(!1)}})):n.createElement(n.Fragment,null)}},17934:(e,a,t)=>{t.d(a,{R:()=>I});var n=t(32735),r=t(82602),i=t(20354),s=t(74901),l=t(40003),o=t(30439),c=t(65853),d=t(64249),u=t(10874),m=t(83345),v=t(39151),g=t(1666),p=t(31949),h=t(17913),f=t(35223),y=t(86099),b=t(24758),E="insights.shareInfo";function I(e){var a,t,I,A,w=i.a.useBasicFetch(v.L.config()),N=Object.assign(Object.assign({},(0,l.wO)((0,l.Hb)(),e.dateRangeAppLinkParams)),(0,s.K)(e.audienceAppLinkParams)),k=i.a.useBasicFetch(p.N.currentUser()),j=i.a.useBasicFetch(e.video&&o.o.getShareLinkByObjectId(e.video.id)),C=i.a.useBasicFetch(e.video&&o.o.getSentDirectShareByObjectId(e.video.id)),S=i.a.useBasicFetch((null===(a=k.data)||void 0===a?void 0:a.customerId)&&d.I.getDirectShareRecipientsRequest(k.data.customerId,C.data)),O=i.a.useBasicFetch(k.data&&e.video&&h.u.views(N,e.video.id,k.data.id)),U=i.a.useBasicFetch(e.video&&o.o.getPrivacy(e.video.id)),L=i.a.useBasicFetch((null===(t=k.data)||void 0===t?void 0:t.isAuthenticated)&&g.h.yearGroups(k.data.customerId)),B=j.hasCompleted&&!j.data&&C.hasCompleted&&!C.data,F=j.hasCompleted&&j.data||C.hasCompleted&&C.data&&(!j.data||U.data)&&(!j.data||L.data)&&S.data&&O.data,R=j.data&&U.data&&L.data&&c.R.getIconAndText({entity:e.video,entityTypeId:e.video.typeId,hasStudentExp:!1,isPasswordProtected:j.data.isPasswordProtected,linkExpireDate:j.data.linkExpireDate,privacy:U.data,status:j.data.status,yearGroups:L.data}),x=n.useMemo((function(){var e;return null===(e=O.data)||void 0===e?void 0:e.data.reduce((function(e,a){return a.count+e}),0)}),[O.data]);return n.createElement("div",{className:"mb-4"},F&&n.createElement(n.Fragment,null,n.createElement("h2",{className:"h4"},n.createElement(m.x,{namespace:E,phrase:"shareInfo"})),n.createElement("div",{className:"d-flex border border-light p-3 rounded-3 align-items-center justify-content-between"},n.createElement("div",{className:"d-flex align-items-center gap-2"},n.createElement(b.A,{shareRecipients:S.data,imageCdnUrl:null===(I=w.data)||void 0===I?void 0:I.imageCdnUrl,hasShareLink:!!j.data,maxAvatars:4,shareLinkText:null==R?void 0:R.text}),"·",n.createElement("p",{className:"mb-0"},(0,r.WU)(null===(A=C.data)||void 0===A?void 0:A.dateCreated)),!!x&&n.createElement(n.Fragment,null,"·",n.createElement("p",{className:"mb-0"},n.createElement(m.x,{namespace:E,phrase:"views",options:{smartCount:x}})))),n.createElement(u.h,{appLink:(0,y.YK)(e.video),svgName:f.vn.Share,className:"btn btn-outline-dark"},n.createElement(m.x,{namespace:E,phrase:"share"})))),!B&&!F&&n.createElement(n.Fragment,null,n.createElement("div",{className:"h4 partial-loading-background w-25"}," "),n.createElement("div",{className:"p-3 rounded partial-loading-background"},n.createElement("p",{className:"mb-1"}," "))))}},71051:(e,a,t)=>{t.r(a),t.d(a,{VideoInsightsOverviewView:()=>z});var n=t(32735),r=t(23481),i=t(2948),s=t(20354),l=t(75896),o=t(42642),c=t(94652),d=t(25216),u=t(461),m=t(35223),v=r.T.encloseNamespace("shared.insightStudentsNotWatched");function g(e){var a,t=(null===(a=e.students)||void 0===a?void 0:a.filter((function(a){var t;return!(null===(t=e.watchedIds)||void 0===t?void 0:t.includes(a.id))})))||[];return n.createElement(d.L,{title:v("title"),svgName:m.vn.Puzzle,svgClassName:"bg-light-teal text-teal"},n.createElement(u.y,{students:t,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:v("studentsDisplay"),anonymiseUsers:e.anonymiseUsers}))}var p=r.T.encloseNamespace("shared.insightStudentsWatched");function h(e){return n.createElement(d.L,{title:p("title"),svgName:m.vn.Flag,svgClassName:"bg-light-indigo text-indigo",count:e.students.length},n.createElement(u.y,{students:e.students,imageCdnUrl:e.imageCdnUrl,imageUrl:e.imageUrl,description:p("studentsDisplay"),appLink:e.heatmapAppLink,appLinkText:p("viewAll"),anonymiseUsers:e.anonymiseUsers}))}var f=t(26025),y=t(74901),b=t(40003),E=t(30439),I=t(83345),A=t(38143),w=t(4594),N=t(39151),k=t(31949),j=t(17913),C=t(91286),S=t(93322),O=t(79612),U=t(37802),L=t(31908),B=t(99742),F=t(88630),R=t(49673),x=t(5672),P=t(27513),T=t(17934);const _={partialInsights:"ImBB3"};function D(){return n.createElement("div",null,n.createElement("h2",{className:"h4 w-25 partial-loading-background"}," "),n.createElement("div",{className:"row g-3 mb-5"},n.createElement("div",{className:"col-12"},n.createElement("div",{className:"".concat(_.partialInsights," rounded partial-loading-background")}))),n.createElement("h2",{className:"h4 w-25 partial-loading-background"}," "),n.createElement("div",{className:"row g-3 mb-5"},n.createElement("div",{className:"col-6"},n.createElement("div",{className:"".concat(_.partialInsights," rounded partial-loading-background")})),n.createElement("div",{className:"col-6"},n.createElement("div",{className:"".concat(_.partialInsights," rounded partial-loading-background")}))))}var M=t(14070),V=t(97291);function H(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,n=Array(a);t<a;t++)n[t]=e[t];return n}var q="insights.videoInsightsOverview",G=r.T.encloseNamespace(q);function z(e){var a,t,r,d,u,m,v,p=(m=(0,i.D)(A.g.ANONYMISE_USERS),v=1,function(e){if(Array.isArray(e))return e}(m)||function(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,r,i,s,l=[],o=!0,c=!1;try{if(i=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;o=!1}else for(;!(o=(n=i.call(t)).done)&&(l.push(n.value),l.length!==a);o=!0);}catch(e){c=!0,r=e}finally{try{if(!o&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(c)throw r}}return l}}(m,v)||function(e,a){if(e){if("string"==typeof e)return H(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?H(e,a):void 0}}(m,v)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,S.F)();var _=(0,U.r)(null).hasClassrooms,z=s.a.useBasicFetch(k.N.currentUser()),W=s.a.useBasicFetch(N.L.config()),Q=L.M.getVideoRequest(e.videoId,e.typeId),$=s.a.useBasicFetch(Q),K=f.B.getAudienceAppLinkParams(),Y=f.B.getDateRangeAppLinkParams(),Z=Object.assign(Object.assign({},(0,b.wO)((0,b.Hb)(),Y)),(0,y.K)(K));(0,O.M)({title:$.data?G("pageTitle",{video:null===(a=$.data)||void 0===a?void 0:a.name}):null}),(0,C.v)($);var J=s.a.useBasicFetch(j.u.aggregateEngagement(e.videoId,Z,z.data.id)),X=1===(null===(t=K.classrooms)||void 0===t?void 0:t.length)&&!(null===(r=K.classroomGroups)||void 0===r?void 0:r.length),ee=s.a.useBasicFetch(X&&F.F.getClassroomStudents(l.m.first(K.classrooms))),ae=s.a.useBasicFetch((null===(d=J.data)||void 0===d?void 0:d.userIds)&&E.o.getRecipientsById(J.data.userIds,z.data.customerId)),te=s.a.useBasicFetch(z.data&&j.u.views(Z,e.videoId,z.data.id)),ne=s.a.useBasicFetch(E.o.getShareLinkByObjectId(e.videoId)),re=s.a.useBasicFetch(E.o.getSentDirectShareByObjectId(e.videoId)),ie=!(!ne.data&&!re.data);function se(){return ae.data?Object.values(ae.data):[]}var le=z.data&&W.data&&$.data&&J.data&&(!X||ee.data),oe=Object.assign(Object.assign({},K),Y),ce=function(e,a,t){return{heatmapAppLink:{application:V.O.INSIGHTS,action:a===w.E.Clip?M.e.Insights.CLIP_HEATMAP:M.e.Insights.VIDEO_HEATMAP,args:[e],params:t}}}(e.videoId,e.typeId,oe);return n.createElement("div",{className:"px-3"},n.createElement(P.m,{video:$.data,dateRangeAppLinkParams:Y,tabs:function(){var e,a,t;return(null===(e=$.data)||void 0===e?void 0:e.typeId)===w.E.Clip?(0,x.$o)(null===(a=$.data)||void 0===a?void 0:a.id,"insights",oe):(0,x.$6)(null===(t=$.data)||void 0===t?void 0:t.id,"insights",oe)}()}),n.createElement(T.R,{audienceAppLinkParams:K,dateRangeAppLinkParams:Y,video:$.data}),!le&&n.createElement(D,null),le&&n.createElement(R.u,{video:$.data,hasShared:ie},n.createElement("section",{className:"mb-5"},n.createElement("h2",{className:"h4"},n.createElement(I.x,{namespace:q,phrase:"studentViewing"}),n.createElement("span",null,": ",se().length,ee.data?"/".concat(ee.data.data.length):"")),n.createElement("div",{className:"row g-3"},X&&n.createElement("div",{className:"col-12 col-md"},n.createElement(g,{students:ee.data.data,watchedIds:J.data.userIds,imageCdnUrl:W.data.imageCdnUrl,heatmapAppLink:ce.heatmapAppLink,imageUrl:B.W.Insights.AVATAR,anonymiseUsers:p})),n.createElement("div",{className:"col-12 col-md"},n.createElement(h,{students:se(),imageCdnUrl:W.data.imageCdnUrl,heatmapAppLink:ce.heatmapAppLink,imageUrl:B.W.Insights.AVATAR,anonymiseUsers:p})))),n.createElement("section",{className:"mb-5"},n.createElement("h2",{className:"h4"},n.createElement(I.x,{namespace:q,phrase:_?"classEngagement":"engagement"})),n.createElement("div",{className:"row g-3"},n.createElement("div",{className:"col-12 col-md-6"},n.createElement(o.i,{osCount:null===(u=te.data)||void 0===u?void 0:u.osCount})),n.createElement("div",{className:"col-12 col-md-6"},n.createElement(c.b,{engagement:J.data,heatmapAppLink:ce.heatmapAppLink}))))))}}}]);
|
|
2
|
+
//# sourceMappingURL=3549-7efa6695e9-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/3549-7efa6695e9-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/utils/AudienceUtils.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/flight-requests/VideoViewRequests.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/utils/AnalyticsRequestUtils.ts","file:///app/packages/projects/lite/src/apps/insights/views/header/InsightsHeaderView.tsx","file:///app/packages/projects/lite/src/apps/insights/views/insights-admin-alert/InsightsAdminAlert.tsx","file:///app/packages/projects/lite/src/apps/insights/views/share-info/ShareInfoView.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/students-not-watched/InsightStudentsNotWatched.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/insights/students-watched/InsightStudentsWatched.tsx","file:///app/packages/projects/lite/src/apps/insights/views/video/overview/partial-loading/partial-video-insights-overview.scss","file:///app/packages/projects/lite/src/apps/insights/views/video/overview/partial-loading/PartialVideoInsightsOverview.tsx","file:///app/packages/projects/lite/src/apps/insights/views/video/overview/VideoInsightsOverviewView.tsx","file:///app/packages/projects/lite/src/apps/insights/views/video/overview/VideoInsightsOverviewUtils.ts"],"sourcesContent":["import { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\n\nexport const getAudienceParams = (queryParams: AudienceQueryParams) => {\n const userId: string[] = [];\n const groupId: string[] = [];\n\n if (queryParams.users)\n userId.push(...queryParams.users);\n\n if (queryParams.classrooms)\n groupId.push(...queryParams.classrooms);\n\n if (queryParams.classroomGroups)\n groupId.push(...queryParams.classroomGroups);\n return {\n userId,\n groupId\n };\n};","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AnalyticsRequestFilter, Engagement } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\nexport const VideoViewRequests = {\n individualEngagement(\n objectId: string,\n filter: AnalyticsRequestFilter,\n sharerId?: string,\n includePublicViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n objectId,\n ...filter\n };\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n\n if (includePublicViews)\n queryParams.includePublicViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/heat-map', queryParams),\n key: getAnalyticsRequestKey(`engagement:${objectId}`, filter, sharerId),\n formatData: (data: any) => {\n return {\n ...data,\n data: data.data?.map((d: any) => ({\n ...d,\n heatMap: d.heatMap ?? []\n }))\n };\n },\n normalize: false\n };\n },\n \n aggregateEngagement(\n objectId: string,\n filter: AnalyticsRequestFilter,\n sharerId?: string,\n includePublicViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n objectId,\n ...filter\n };\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n \n if (includePublicViews)\n queryParams.includePublicViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/heat-map/aggregations', queryParams),\n key: getAnalyticsRequestKey(`aggregate:engagement:${objectId}`, filter, sharerId),\n formatData: (data: Engagement) => {\n return {\n ...data,\n heatMap: data.heatMap ?? []\n };\n },\n normalize: false\n };\n },\n \n views(\n filter: AnalyticsRequestFilter,\n objectId?: string,\n sharerId?: string,\n includePublicViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n ...filter,\n timeOffset: DateHelper.getTimezoneOffset()\n };\n\n if (objectId)\n queryParams.objectId = objectId;\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n \n if (includePublicViews)\n queryParams.includePublicViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/video-views', queryParams),\n key: getAnalyticsRequestKey(`video:views:${objectId}`, filter, sharerId),\n normalize: false\n };\n }\n};","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nexport function getAnalyticsRequestKey(baseKey: string, filter: AnalyticsRequestFilter, sharerId?: string): string {\n let key = `${baseKey}:${filter.start}:${filter.end}`;\n\n const userIdKey = Array.isArray(filter.userId) ? filter.userId.sort().join(':') : filter.userId;\n const groupIdKey = Array.isArray(filter.groupId) ? filter.groupId.sort().join(':') : filter.groupId;\n\n if (userIdKey)\n key += `:${userIdKey}`;\n\n if (groupIdKey)\n key += `:${groupIdKey}`;\n\n if (sharerId)\n key += `:${sharerId}`;\n\n return key;\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { DateRangeQueryParams } from 'libs/shared/apps/analytics/interfaces/DateRangeQueryParams';\nimport { PillTab } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, VideoTypes } from 'libs/shared/interfaces';\n\nimport { InsightsHeader } from 'apps/insights/components/insights-header/InsightsHeader';\nimport { InsightsAdminAlert } from 'apps/insights/views/insights-admin-alert/InsightsAdminAlert';\n\ninterface InsightsHeaderProps {\n dateRangeAppLinkParams: DateRangeQueryParams;\n video: VideoTypes;\n tabs: PillTab[];\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function InsightsHeaderView(props: InsightsHeaderProps) {\n const { hasClassrooms } = useSettings(null);\n const { hasPermissions } = usePermissions();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n return (\n <div>\n <InsightsAdminAlert\n analyticsUrl={config.data?.analyticsWebUrl}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n video={props.video}\n />\n\n <InsightsHeader\n video={props.video}\n tabs={props.tabs}\n dateRangeAppLinkParams={props.dateRangeAppLinkParams}\n hasClassrooms={hasClassrooms}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nconst namespace = 'lite.insightsAdminAlert';\n\ninterface InsightsAdminAlertProps {\n hasAnalytics: boolean;\n analyticsUrl: string;\n video?: VideoTypes;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function InsightsAdminAlert(props: InsightsAdminAlertProps) {\n const [ show, setShow ] = useViewModel(\n ViewModelKeys.INSIGHTS_ADMIN_ALERT,\n true,\n { storage: StorageType.LocalStorage }\n );\n\n function onDismiss() {\n setShow(false);\n }\n\n function getAnalyticsUrl() {\n if (!props.video) return props.analyticsUrl;\n\n let videoRoute = '';\n\n if (props.video.typeId === MasterType.Interactive)\n videoRoute = `/interactives/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Video)\n videoRoute = `/videos/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Clip)\n videoRoute = `/clips/${props.video.id}/views`;\n\n return UrlHelper.safeUrlConcat(props.analyticsUrl, videoRoute);\n }\n\n if (!props.hasAnalytics || !show)\n return <></>;\n\n return (\n <div role='alert' className='d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4'>\n <div>\n <Text namespace={namespace} phrase='adminAlert' />\n <a className='text-info' href={getAnalyticsUrl()} target='_blank'>\n <Text namespace={namespace} phrase='analytics' />\n </a>.\n </div>\n <IconButton svgName={cvSvgLibrary.Close} className='text-blue' onClick={onDismiss} />\n </div>\n );\n}","import React from 'react';\nimport { format as formatDate } from 'timeago.js';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\nimport { BaseAnalyticsEventResponse } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { DateRangeQueryParams } from 'libs/shared/apps/analytics/interfaces/DateRangeQueryParams';\nimport { getAudienceParams } from 'libs/shared/apps/analytics/utils/AudienceUtils';\nimport { getInsightsDateRangePresets, getStartEndParams } from 'libs/shared/apps/analytics/utils/DateRangeUtils';\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\nimport { ShareLinkHelper } from 'libs/shared/apps/share/utils/ShareLinkHelper';\nimport { SharableRecipient, ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoViewRequests } from 'libs/shared/flight-requests/VideoViewRequests';\nimport { Config, CurrentUser, DirectShare, ShareLink, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { getShareAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport { SharedToPill } from 'apps/my-shares/components/shared-to-pill/SharedToPill';\n\nconst namespace = 'insights.shareInfo';\n\ninterface ShareInfoViewProps {\n video: VideoTypes;\n audienceAppLinkParams: AudienceQueryParams;\n dateRangeAppLinkParams: DateRangeQueryParams;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function ShareInfoView(props: ShareInfoViewProps) {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const requestFilter = {\n ...getStartEndParams(getInsightsDateRangePresets(), props.dateRangeAppLinkParams),\n ...getAudienceParams(props.audienceAppLinkParams)\n };\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const shareLink = Flight.useBasicFetch<ShareLink>(props.video &&\n ShareRequests.getShareLinkByObjectId(props.video.id));\n const sentDirectShare = Flight.useBasicFetch<DirectShare>(props.video &&\n ShareRequests.getSentDirectShareByObjectId(props.video.id));\n const recipients = Flight.useBasicFetch<SharableRecipient[]>(currentUser.data?.customerId &&\n ShareViewHelper.getDirectShareRecipientsRequest(currentUser.data.customerId, sentDirectShare.data));\n const videoViews = Flight.useBasicFetch<BaseAnalyticsEventResponse>(currentUser.data && props.video &&\n VideoViewRequests.views(requestFilter, props.video.id, currentUser.data.id));\n const privacy = Flight.useBasicFetch<SharePrivacyResponse>(props.video && ShareRequests.getPrivacy(props.video.id));\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const notShared =\n (shareLink.hasCompleted && !shareLink.data) &&\n (sentDirectShare.hasCompleted && !sentDirectShare.data);\n\n const hasShareData =\n (shareLink.hasCompleted && shareLink.data) ||\n (sentDirectShare.hasCompleted && sentDirectShare.data) &&\n (!shareLink.data || privacy.data) &&\n (!shareLink.data || yearGroups.data) &&\n recipients.data &&\n videoViews.data;\n\n const shareLinkText = shareLink.data && privacy.data && yearGroups.data &&\n ShareLinkHelper.getIconAndText({\n entity: props.video,\n entityTypeId: props.video.typeId,\n hasStudentExp: false,\n isPasswordProtected: shareLink.data.isPasswordProtected,\n linkExpireDate: shareLink.data.linkExpireDate,\n privacy: privacy.data,\n status: shareLink.data.status,\n yearGroups: yearGroups.data\n });\n\n const viewCount = React.useMemo(() => {\n return videoViews.data?.data.reduce((acc, view) => view.count + acc, 0);\n }, [videoViews.data]);\n\n return (\n <div className='mb-4'>\n {hasShareData &&\n <>\n <h2 className='h4'><Text namespace={namespace} phrase='shareInfo' /></h2>\n\n <div className='d-flex border border-light p-3 rounded-3 align-items-center justify-content-between'>\n <div className='d-flex align-items-center gap-2'>\n <SharedToPill\n shareRecipients={recipients.data}\n imageCdnUrl={config.data?.imageCdnUrl}\n hasShareLink={!!shareLink.data}\n maxAvatars={4}\n shareLinkText={shareLinkText?.text}\n />\n ·\n <p className='mb-0'>{formatDate(sentDirectShare.data?.dateCreated)}</p>\n {!!viewCount && (\n <>\n ·\n <p className='mb-0'><Text namespace={namespace} phrase='views' options={{ smartCount: viewCount }} /></p>\n </>\n )}\n </div>\n <IconButton\n appLink={getShareAppLink(props.video)}\n svgName={cvSvgLibrary.Share}\n className='btn btn-outline-dark'\n >\n <Text namespace={namespace} phrase='share' />\n </IconButton>\n </div>\n </>\n }\n\n {!notShared && !hasShareData &&\n <>\n <div className='h4 partial-loading-background w-25'> </div>\n <div className='p-3 rounded partial-loading-background'>\n <p className='mb-1'> </p>\n </div>\n </>\n }\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { User } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightStudentsNotWatched';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightStudentsNotWatchedProps {\n students: User[];\n imageCdnUrl: string;\n imageUrl: string;\n heatmapAppLink: Core.AppLink;\n watchedIds: string[];\n anonymiseUsers: boolean;\n}\n\nexport function InsightStudentsNotWatched(props: InsightStudentsNotWatchedProps) {\n const studentsNotWatched = props.students?.filter(student => !props.watchedIds?.includes(student.id)) || [];\n\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Puzzle}\n svgClassName='bg-light-teal text-teal'\n >\n <InsightStudentList\n students={studentsNotWatched}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.imageUrl}\n description={getPhrase('studentsDisplay')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InsightCard } from 'libs/shared/apps/analytics/components/insight-card/InsightCard';\nimport { InsightStudentList } from 'libs/shared/apps/analytics/components/insight-student-list/InsightStudentList';\nimport { User } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.insightStudentsWatched';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightWatchedProps {\n students: User[];\n imageCdnUrl: string;\n heatmapAppLink: Core.AppLink;\n imageUrl: string;\n anonymiseUsers: boolean;\n}\n\nexport function InsightStudentsWatched(props: InsightWatchedProps) {\n return (\n <InsightCard\n title={getPhrase('title')}\n svgName={cvSvgLibrary.Flag}\n svgClassName='bg-light-indigo text-indigo'\n count={props.students.length}\n >\n <InsightStudentList\n students={props.students}\n imageCdnUrl={props.imageCdnUrl}\n imageUrl={props.imageUrl}\n description={getPhrase('studentsDisplay')}\n appLink={props.heatmapAppLink}\n appLinkText={getPhrase('viewAll')}\n anonymiseUsers={props.anonymiseUsers}\n />\n </InsightCard>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialInsights\":\"ImBB3\"};","import React from 'react';\n\nimport styles from './partial-video-insights-overview.scss';\n\nexport function PartialVideoInsightsOverview() {\n return (\n <div>\n <h2 className='h4 w-25 partial-loading-background'> </h2>\n <div className='row g-3 mb-5'>\n <div className='col-12'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n </div>\n\n <h2 className='h4 w-25 partial-loading-background'> </h2>\n <div className='row g-3 mb-5'>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n <div className='col-6'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InsightDevices } from 'libs/shared/apps/analytics/components/insights/devices/InsightDevices';\nimport { InsightHeatmap } from 'libs/shared/apps/analytics/components/insights/heatmap/InsightHeatmap';\nimport { InsightStudentsNotWatched } from 'libs/shared/apps/analytics/components/insights/students-not-watched/InsightStudentsNotWatched';\nimport { InsightStudentsWatched } from 'libs/shared/apps/analytics/components/insights/students-watched/InsightStudentsWatched';\nimport { BaseAnalyticsEventResponse } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { getAudienceParams } from 'libs/shared/apps/analytics/utils/AudienceUtils';\nimport { getInsightsDateRangePresets, getStartEndParams } from 'libs/shared/apps/analytics/utils/DateRangeUtils';\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoViewRequests } from 'libs/shared/flight-requests/VideoViewRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { BasePaginatedCollection, Config, CurrentUser, DirectShare, Engagement, ShareLink, User, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { InsightsShareMask } from 'apps/insights/components/insights-mask/InsightsShareMask';\nimport { getInsightsClipTabs, getInsightsVideoTabs } from 'apps/insights/utils/InsightsAppLinkUtils';\nimport { InsightsHeaderView } from 'apps/insights/views/header/InsightsHeaderView';\nimport { ShareInfoView } from 'apps/insights/views/share-info/ShareInfoView';\nimport { PartialVideoInsightsOverview } from 'apps/insights/views/video/overview/partial-loading/PartialVideoInsightsOverview';\nimport { getVideoInsightsAppLinks } from 'apps/insights/views/video/overview/VideoInsightsOverviewUtils';\n\nconst namespace = 'insights.videoInsightsOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface VideoInsightsViewProps {\n videoId: string;\n typeId: MasterType;\n}\n\nexport function VideoInsightsOverviewView(props: VideoInsightsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const { hasClassrooms } = useSettings(null);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const videoRequest = VideoHelper.getVideoRequest(props.videoId, props.typeId);\n const video = Flight.useBasicFetch<VideoTypes>(videoRequest);\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n const requestFilter = {\n ...getStartEndParams(getInsightsDateRangePresets(), dateRangeAppLinkParams),\n ...getAudienceParams(audienceAppLinkParams)\n };\n\n useSetPageMetadata({ title: video.data ? getPhrase('pageTitle', { video: video.data?.name }) : null });\n useHandleObjectError(video);\n\n const aggregateEngagement = Flight.useBasicFetch<Engagement>(\n VideoViewRequests.aggregateEngagement(\n props.videoId,\n requestFilter,\n currentUser.data.id\n )\n );\n\n const classroomFilterOnly =\n audienceAppLinkParams.classrooms?.length === 1 && !audienceAppLinkParams.classroomGroups?.length;\n const classroomStudents = Flight.useBasicFetch<BasePaginatedCollection<User>>(classroomFilterOnly &&\n ClassroomRequests.getClassroomStudents(ArrayHelper.first(audienceAppLinkParams.classrooms)));\n\n const shareRecipients = Flight.useBasicFetch<User[]>(aggregateEngagement.data?.userIds &&\n ShareRequests.getRecipientsById(aggregateEngagement.data.userIds, currentUser.data.customerId));\n\n const videoViews = Flight.useBasicFetch<BaseAnalyticsEventResponse>(currentUser.data &&\n VideoViewRequests.views(requestFilter, props.videoId, currentUser.data.id));\n\n const shareLink = Flight.useBasicFetch<ShareLink>(ShareRequests.getShareLinkByObjectId(props.videoId));\n const sentDirectShare = Flight.useBasicFetch<DirectShare>(\n ShareRequests.getSentDirectShareByObjectId(props.videoId)\n );\n\n const hasShared = !!(shareLink.data || sentDirectShare.data);\n\n function getStudentsList() {\n if (!shareRecipients.data) return [];\n\n return Object.values(shareRecipients.data);\n }\n\n const hasDataLoaded =\n currentUser.data &&\n config.data &&\n video.data &&\n aggregateEngagement.data &&\n (!classroomFilterOnly || classroomStudents.data);\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams\n };\n\n const videoInsightsAppLinks = getVideoInsightsAppLinks(props.videoId, props.typeId, params);\n\n function getInsightsOverviewTabs() {\n if (video.data?.typeId === MasterType.Clip) {\n return getInsightsClipTabs(video.data?.id, 'insights', params);\n }\n\n return getInsightsVideoTabs(video.data?.id, 'insights', params);\n }\n\n return (\n <div className='px-3'>\n <InsightsHeaderView\n video={video.data}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n tabs={getInsightsOverviewTabs()}\n />\n\n <ShareInfoView\n audienceAppLinkParams={audienceAppLinkParams}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n video={video.data}\n />\n\n {!hasDataLoaded && <PartialVideoInsightsOverview />}\n\n {hasDataLoaded &&\n <InsightsShareMask video={video.data} hasShared={hasShared}>\n <section className='mb-5'>\n <h2 className='h4'>\n <Text namespace={namespace} phrase='studentViewing' />\n <span>: {getStudentsList().length}{classroomStudents.data ? `/${classroomStudents.data.data.length}` : ''}</span>\n </h2>\n <div className='row g-3'>\n {classroomFilterOnly && (\n <div className='col-12 col-md'>\n <InsightStudentsNotWatched\n students={classroomStudents.data.data}\n watchedIds={aggregateEngagement.data.userIds}\n imageCdnUrl={config.data.imageCdnUrl}\n heatmapAppLink={videoInsightsAppLinks.heatmapAppLink}\n imageUrl={ImageUrls.Insights.AVATAR}\n anonymiseUsers={anonymiseUsers}\n />\n </div>\n )}\n <div className='col-12 col-md'>\n <InsightStudentsWatched\n students={getStudentsList()}\n imageCdnUrl={config.data.imageCdnUrl}\n heatmapAppLink={videoInsightsAppLinks.heatmapAppLink}\n imageUrl={ImageUrls.Insights.AVATAR}\n anonymiseUsers={anonymiseUsers}\n />\n </div>\n </div>\n </section>\n <section className='mb-5'>\n <h2 className='h4'>\n <Text\n namespace={namespace}\n phrase={hasClassrooms ? 'classEngagement' : 'engagement'}\n />\n </h2>\n <div className='row g-3'>\n <div className='col-12 col-md-6'>\n <InsightDevices\n osCount={videoViews.data?.osCount}\n />\n </div>\n <div className='col-12 col-md-6'>\n <InsightHeatmap\n engagement={aggregateEngagement.data}\n heatmapAppLink={videoInsightsAppLinks.heatmapAppLink}\n />\n </div>\n </div>\n </section>\n </InsightsShareMask>\n }\n </div>\n );\n}","import { HashObject } from 'libs/common/react/interfaces';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport function getVideoInsightsAppLinks(id: string, typeId: MasterType, params?: HashObject) {\n return {\n heatmapAppLink: {\n application: AppChannels.INSIGHTS,\n action: typeId === MasterType.Clip ? Actions.Insights.CLIP_HEATMAP : Actions.Insights.VIDEO_HEATMAP,\n args: [id],\n params\n }\n };\n}"],"names":["getAudienceParams","queryParams","userId","groupId","users","push","classrooms","classroomGroups","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","VideoViewRequests","individualEngagement","objectId","filter","sharerId","includePublicViews","url","key","formatData","data","map","d","heatMap","normalize","aggregateEngagement","views","timeOffset","generateCacheKey","flightObjs","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","getAnalyticsRequestKey","baseKey","start","end","userIdKey","sort","groupIdKey","InsightsHeaderView","props","hasClassrooms","hasPermissions","config","analyticsUrl","analyticsWebUrl","hasAnalytics","video","tabs","dateRangeAppLinkParams","namespace","InsightsAdminAlert","storage","show","setShow","role","className","phrase","href","videoRoute","typeId","id","getAnalyticsUrl","target","svgName","onClick","ShareInfoView","requestFilter","audienceAppLinkParams","currentUser","shareLink","sentDirectShare","recipients","customerId","videoViews","yearGroups","isAuthenticated","notShared","hasCompleted","hasShareData","shareLinkText","entity","entityTypeId","hasStudentExp","isPasswordProtected","linkExpireDate","viewCount","reduce","acc","view","count","shareRecipients","imageCdnUrl","hasShareLink","maxAvatars","text","dateCreated","options","smartCount","appLink","getPhrase","LanguageService","InsightStudentsNotWatched","studentsNotWatched","students","student","watchedIds","includes","InsightCard","title","svgClassName","InsightStudentList","imageUrl","description","anonymiseUsers","InsightStudentsWatched","length","heatmapAppLink","appLinkText","PartialVideoInsightsOverview","VideoInsightsOverviewView","SharedViewModelKeys","useLockContentWidth","useSettings","UserRequests","ConfigRequests","videoRequest","VideoHelper","videoId","useSetPageMetadata","name","classroomFilterOnly","classroomStudents","ClassroomRequests","ArrayHelper","userIds","ShareRequests","hasShared","getStudentsList","Object","values","hasDataLoaded","params","videoInsightsAppLinks","application","action","MasterType","args","getVideoInsightsAppLinks","getInsightsOverviewTabs","InsightsShareMask","Text","ImageUrls","InsightDevices","osCount","InsightHeatmap","engagement"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7177],{71553:(e,a,t)=>{t.d(a,{I:()=>s});var r=t(99940),n=t(62875);function i(e,a){return{currentUserId:e.id,currentCustomerId:e.customerId,dateRange:{start:a.start,end:a.end},userIds:a.userId,classroomsAndGroups:a.groupId}}var s={interactiveResultSet:function(e,a,t,s,c,o,d,l){return{url:c?"/api/domain/v3/analytics/interactives/".concat(e,"/metadata/").concat(a):"/api/domain/v2/analytics/interactives/".concat(e,"/metadata/").concat(a),key:(0,n.H)("interactive:result:set:".concat(e,":").concat(a),s),data:i(t,s),type:r.k.POST,normalize:!1,formatData:function(e){return Object.assign(Object.assign({},e),{students:e.students.map((function(e){return e.name&&e.profileId?Object.assign(Object.assign({},e),{publicUser:{profileId:e.profileId,name:e.name}}):e}))})},success:o,error:d,always:l}},mark:function(e,a,t,n,i,s,c){return{url:"/api/domain/v1/analytics/answers/".concat(t),key:"mark:answer:".concat(t,":").concat(n.resultId),type:r.k.PUT,data:n,normalize:!1,invalidationKeys:"interactive:result:set:".concat(e,":").concat(a),success:i,error:s,always:c}},pendingReviews:function(e){return{url:"/api/domain/v1/analytics/interactives/pending-reviews/summary",key:"interactives:pending:reviews",type:r.k.POST,data:e}},interactiveResultsReport:function(e){return{url:"{gateway}/v2/analytics/interactives/report",key:"interactive:results:report",data:e,type:r.k.POST,normalize:!1}}}},41196:(e,a,t)=>{t.d(a,{W:()=>c});var r=t(20354),n=t(71553),i=t(20768),s=t(31949);function c(e,a,t){var c,o=r.a.useBasicFetch(s.N.currentUser()),d=r.a.useBasicFetch(!!e&&i.b.interactiveMetadata(e)),l=r.a.useBasicFetch(!!(null===(c=d.data)||void 0===c?void 0:c.interactiveId)&&i.b.interactive(d.data.interactiveId)),u=!!o.data&&!!l.data&&!!a;return r.a.useBasicFetch(u&&n.I.interactiveResultSet(d.data.interactiveId,d.data.id,o.data,a,t))}},74901:(e,a,t)=>{function r(e){return function(e){if(Array.isArray(e))return n(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,a){if(e){if("string"==typeof e)return n(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?n(e,a):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,r=Array(a);t<a;t++)r[t]=e[t];return r}t.d(a,{K:()=>i});var i=function(e){var a=[],t=[];return e.users&&a.push.apply(a,r(e.users)),e.classrooms&&t.push.apply(t,r(e.classrooms)),e.classroomGroups&&t.push.apply(t,r(e.classroomGroups)),{userId:a,groupId:t}}},94644:(e,a,t)=>{t.d(a,{r:()=>l});var r=t(50242),n=t(81886),i=t(67058),s=t(14553),c=t(49267),o=t(49075),d={notFound:i.d,forbidden:{rating:s.q,yearLevel:s.q,region:c.a,privacy:s.q},badRequest:o._,internalServerError:o._};function l(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var s=Object.assign(Object.assign({},d),a);i&&n.Q.Ry.isStatusCodeError(i)&&(i!==r.o.InternalServer?i!==r.o.NotFound?i!==r.o.Forbidden?t.badRequest||n.Q.Ry.throw(new s.badRequest):t.forbidden||n.Q.Ry.throw(new s.forbidden.privacy):t.notFound||n.Q.Ry.throw(new s.notFound):t.internalServerError||n.Q.Ry.throw(new o._))}}},17913:(e,a,t)=>{t.d(a,{u:()=>s});var r=t(97395),n=t(110),i=t(62875),s={individualEngagement:function(e,a,t,n){var s=Object.assign({objectId:e},a);return t&&(s.sharerId=t),n&&(s.includePublicViews=!0),{url:r._.urlBuilder("{gateway}/v1/analytics/heat-map",s),key:(0,i.H)("engagement:".concat(e),a,t),formatData:function(e){var a;return Object.assign(Object.assign({},e),{data:null===(a=e.data)||void 0===a?void 0:a.map((function(e){var a;return Object.assign(Object.assign({},e),{heatMap:null!==(a=e.heatMap)&&void 0!==a?a:[]})}))})},normalize:!1}},aggregateEngagement:function(e,a,t,n){var s=Object.assign({objectId:e},a);return t&&(s.sharerId=t),n&&(s.includePublicViews=!0),{url:r._.urlBuilder("{gateway}/v1/analytics/heat-map/aggregations",s),key:(0,i.H)("aggregate:engagement:".concat(e),a,t),formatData:function(e){var a;return Object.assign(Object.assign({},e),{heatMap:null!==(a=e.heatMap)&&void 0!==a?a:[]})},normalize:!1}},views:function(e,a,t,s){var c=Object.assign(Object.assign({},e),{timeOffset:n.O.getTimezoneOffset()});return a&&(c.objectId=a),t&&(c.sharerId=t),s&&(c.includePublicViews=!0),{url:r._.urlBuilder("{gateway}/v1/analytics/video-views",c),key:(0,i.H)("video:views:".concat(a),e,t),normalize:!1}}}},91286:(e,a,t)=>{t.d(a,{v:()=>s});var r=t(32735),n=t(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function s(e,a,t){var s=Array.isArray(e)?e:[e];(0,r.useEffect)((function(){s.forEach((function(e){(0,n.r)(e.statusCode,a,t)}))}),[i(s),a,t])}},62875:(e,a,t)=>{function r(e,a,t){var r="".concat(e,":").concat(a.start,":").concat(a.end),n=Array.isArray(a.userId)?a.userId.sort().join(":"):a.userId,i=Array.isArray(a.groupId)?a.groupId.sort().join(":"):a.groupId;return n&&(r+=":".concat(n)),i&&(r+=":".concat(i)),t&&(r+=":".concat(t)),r}t.d(a,{H:()=>r})},27513:(e,a,t)=>{t.d(a,{m:()=>u});var r=t(32735),n=t(20354),i=t(16714),s=t(39151),c=t(22902),o=t(37802),d=t(66),l=t(11293);function u(e){var a,t=(0,o.r)(null).hasClassrooms,u=(0,c.T)().hasPermissions,v=n.a.useBasicFetch(s.L.config());return r.createElement("div",null,r.createElement(l.p,{analyticsUrl:null===(a=v.data)||void 0===a?void 0:a.analyticsWebUrl,hasAnalytics:u(i.C.ViewCustomerAnalytics),video:e.video}),r.createElement(d.j,{video:e.video,tabs:e.tabs,dateRangeAppLinkParams:e.dateRangeAppLinkParams,hasClassrooms:t}))}},11293:(e,a,t)=>{t.d(a,{p:()=>p});var r=t(32735),n=t(57900),i=t(97395),s=t(2948),c=t(10874),o=t(83345),d=t(4594),l=t(35223),u=t(86702);function v(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,r=Array(a);t<a;t++)r[t]=e[t];return r}var m="lite.insightsAdminAlert";function p(e){var a,t,p=(a=(0,s.D)(u.y.INSIGHTS_ADMIN_ALERT,!0,{storage:n.Z1.LocalStorage}),t=2,function(e){if(Array.isArray(e))return e}(a)||function(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,n,i,s,c=[],o=!0,d=!1;try{if(i=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;o=!1}else for(;!(o=(r=i.call(t)).done)&&(c.push(r.value),c.length!==a);o=!0);}catch(e){d=!0,n=e}finally{try{if(!o&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(d)throw n}}return c}}(a,t)||function(e,a){if(e){if("string"==typeof e)return v(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?v(e,a):void 0}}(a,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=p[0],f=p[1];return e.hasAnalytics&&g?r.createElement("div",{role:"alert",className:"d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4"},r.createElement("div",null,r.createElement(o.x,{namespace:m,phrase:"adminAlert"}),r.createElement("a",{className:"text-info",href:function(){if(!e.video)return e.analyticsUrl;var a="";return e.video.typeId===d.E.Interactive&&(a="/interactives/".concat(e.video.id,"/views")),e.video.typeId===d.E.Video&&(a="/videos/".concat(e.video.id,"/views")),e.video.typeId===d.E.Clip&&(a="/clips/".concat(e.video.id,"/views")),i._.safeUrlConcat(e.analyticsUrl,a)}(),target:"_blank"},r.createElement(o.x,{namespace:m,phrase:"analytics"})),"."),r.createElement(c.h,{svgName:l.vn.Close,className:"text-blue",onClick:function(){f(!1)}})):r.createElement(r.Fragment,null)}},5422:(e,a,t)=>{t.r(a),t.d(a,{InteractiveInsightsOverviewView:()=>B});var r=t(32735),n=t(23481),i=t(2948),s=t(20354),c=t(75896),o=t(41196),d=t(26025),l=t(74901),u=t(40003),v=t(30439),m=t(38143),p=t(39151),g=t(20768),f=t(31949),h=t(17913),y=t(91286),b=t(93322),I=t(79612),E=t(88630),A=t(9933),w=t(5672),S=t(27513),O=t(14070),j=t(97291),k=t(17934);function F(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,r=Array(a);t<a;t++)r[t]=e[t];return r}var N=n.T.encloseNamespace("insights.interactiveInsightsOverviewView");function B(e){var a,t,n,B,R,C,T,L,P=(T=(0,i.D)(m.g.ANONYMISE_USERS),L=1,function(e){if(Array.isArray(e))return e}(T)||function(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,n,i,s,c=[],o=!0,d=!1;try{if(i=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;o=!1}else for(;!(o=(r=i.call(t)).done)&&(c.push(r.value),c.length!==a);o=!0);}catch(e){d=!0,n=e}finally{try{if(!o&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(d)throw n}}return c}}(T,L)||function(e,a){if(e){if("string"==typeof e)return F(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?F(e,a):void 0}}(T,L)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,b.F)();var U=s.a.useBasicFetch(f.N.currentUser()),x=s.a.useBasicFetch(p.L.config()),_=s.a.useBasicFetch(g.b.interactiveMetadata(e.interactiveId)),M=s.a.useBasicFetch((null===(a=_.data)||void 0===a?void 0:a.interactiveId)&&g.b.interactive(_.data.interactiveId)),D=d.B.getAudienceAppLinkParams(),H=d.B.getDateRangeAppLinkParams(),V=Object.assign(Object.assign({},(0,u.wO)((0,u.Hb)(),H)),(0,l.K)(D)),G=(0,o.W)(e.interactiveId,V,!0),q=r.useMemo((function(){var e,a;return!!(null===(a=null===(e=G.data)||void 0===e?void 0:e.students)||void 0===a?void 0:a.find((function(e){var a;return null===(a=e.publicUser)||void 0===a?void 0:a.profileId})))}),[G.data]),z=1===(null===(t=D.classrooms)||void 0===t?void 0:t.length)&&!(null===(n=D.classroomGroups)||void 0===n?void 0:n.length),Q=s.a.useBasicFetch(z&&E.F.getClassroomStudents(c.m.first(D.classrooms))),K=s.a.useBasicFetch(G.data&&h.u.aggregateEngagement(e.interactiveId,V,U.data.id,q)),W=s.a.useBasicFetch(U.data&&G.data&&h.u.views(V,e.interactiveId,U.data.id,q)),$=s.a.useBasicFetch(v.o.getShareLinkByObjectId(e.interactiveId)),Y=s.a.useBasicFetch(v.o.getSentDirectShareByObjectId(e.interactiveId)),Z=!(!$.data&&!Y.data);(0,I.M)({title:_.data?N("pageTitle",{video:null===(B=_.data)||void 0===B?void 0:B.name}):null}),(0,y.v)([M,_,G]);var J=U.data&&x.data&&_.data&&M.data&&G.data&&(!z||Q.data)&&K.data&&!!W.data,X=Object.assign(Object.assign({},D),H),ee=function(e,a){return{resultsAppLink:{application:j.O.INSIGHTS,action:O.e.Insights.INTERACTIVE_STUDENTS,args:[e],params:a},questionsAppLink:{application:j.O.INSIGHTS,action:O.e.Insights.INTERACTIVE_QUESTIONS,args:[e],params:a},heatmapAppLink:{application:j.O.INSIGHTS,action:O.e.Insights.INTERACTIVE_HEATMAP,args:[e],params:a}}}(null===(R=_.data)||void 0===R?void 0:R.id,X);return r.createElement("div",{className:"px-3"},r.createElement(S.m,{video:_.data,dateRangeAppLinkParams:H,tabs:(0,w.kj)(null===(C=_.data)||void 0===C?void 0:C.id,"insights",X)}),r.createElement(k.R,{audienceAppLinkParams:D,dateRangeAppLinkParams:H,video:_.data}),r.createElement(A.m,{aggregateEngagement:K.data,interactive:M.data,interactiveMetadata:_.data,interactiveInsightsAppLinks:ee,classroomStudents:Q.data,results:G.data,videoViews:W.data,config:x.data,classroomFilterOnly:z,anonymiseUsers:P,params:X,hasDataLoaded:J,hasShared:Z}))}},17934:(e,a,t)=>{t.d(a,{R:()=>E});var r=t(32735),n=t(82602),i=t(20354),s=t(74901),c=t(40003),o=t(30439),d=t(65853),l=t(64249),u=t(10874),v=t(83345),m=t(39151),p=t(1666),g=t(31949),f=t(17913),h=t(35223),y=t(86099),b=t(24758),I="insights.shareInfo";function E(e){var a,t,E,A,w=i.a.useBasicFetch(m.L.config()),S=Object.assign(Object.assign({},(0,c.wO)((0,c.Hb)(),e.dateRangeAppLinkParams)),(0,s.K)(e.audienceAppLinkParams)),O=i.a.useBasicFetch(g.N.currentUser()),j=i.a.useBasicFetch(e.video&&o.o.getShareLinkByObjectId(e.video.id)),k=i.a.useBasicFetch(e.video&&o.o.getSentDirectShareByObjectId(e.video.id)),F=i.a.useBasicFetch((null===(a=O.data)||void 0===a?void 0:a.customerId)&&l.I.getDirectShareRecipientsRequest(O.data.customerId,k.data)),N=i.a.useBasicFetch(O.data&&e.video&&f.u.views(S,e.video.id,O.data.id)),B=i.a.useBasicFetch(e.video&&o.o.getPrivacy(e.video.id)),R=i.a.useBasicFetch((null===(t=O.data)||void 0===t?void 0:t.isAuthenticated)&&p.h.yearGroups(O.data.customerId)),C=j.hasCompleted&&!j.data&&k.hasCompleted&&!k.data,T=j.hasCompleted&&j.data||k.hasCompleted&&k.data&&(!j.data||B.data)&&(!j.data||R.data)&&F.data&&N.data,L=j.data&&B.data&&R.data&&d.R.getIconAndText({entity:e.video,entityTypeId:e.video.typeId,hasStudentExp:!1,isPasswordProtected:j.data.isPasswordProtected,linkExpireDate:j.data.linkExpireDate,privacy:B.data,status:j.data.status,yearGroups:R.data}),P=r.useMemo((function(){var e;return null===(e=N.data)||void 0===e?void 0:e.data.reduce((function(e,a){return a.count+e}),0)}),[N.data]);return r.createElement("div",{className:"mb-4"},T&&r.createElement(r.Fragment,null,r.createElement("h2",{className:"h4"},r.createElement(v.x,{namespace:I,phrase:"shareInfo"})),r.createElement("div",{className:"d-flex border border-light p-3 rounded-3 align-items-center justify-content-between"},r.createElement("div",{className:"d-flex align-items-center gap-2"},r.createElement(b.A,{shareRecipients:F.data,imageCdnUrl:null===(E=w.data)||void 0===E?void 0:E.imageCdnUrl,hasShareLink:!!j.data,maxAvatars:4,shareLinkText:null==L?void 0:L.text}),"·",r.createElement("p",{className:"mb-0"},(0,n.WU)(null===(A=k.data)||void 0===A?void 0:A.dateCreated)),P&&r.createElement(r.Fragment,null,"·",r.createElement("p",{className:"mb-0"},r.createElement(v.x,{namespace:I,phrase:"views",options:{smartCount:P}})))),r.createElement(u.h,{appLink:(0,y.YK)(e.video),svgName:h.vn.Share,className:"btn btn-outline-dark"},r.createElement(v.x,{namespace:I,phrase:"share"})))),!C&&!T&&r.createElement(r.Fragment,null,r.createElement("div",{className:"h4 partial-loading-background w-25"}," "),r.createElement("div",{className:"p-3 rounded partial-loading-background"},r.createElement("p",{className:"mb-1"}," "))))}}}]);
|
|
2
|
-
//# sourceMappingURL=7177-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7177],{71553:(e,a,t)=>{t.d(a,{I:()=>s});var r=t(99940),n=t(62875);function i(e,a){return{currentUserId:e.id,currentCustomerId:e.customerId,dateRange:{start:a.start,end:a.end},userIds:a.userId,classroomsAndGroups:a.groupId}}var s={interactiveResultSet:function(e,a,t,s,c,o,d,l){return{url:c?"/api/domain/v3/analytics/interactives/".concat(e,"/metadata/").concat(a):"/api/domain/v2/analytics/interactives/".concat(e,"/metadata/").concat(a),key:(0,n.H)("interactive:result:set:".concat(e,":").concat(a),s),data:i(t,s),type:r.k.POST,normalize:!1,formatData:function(e){return Object.assign(Object.assign({},e),{students:e.students.map((function(e){return e.name&&e.profileId?Object.assign(Object.assign({},e),{publicUser:{profileId:e.profileId,name:e.name}}):e}))})},success:o,error:d,always:l}},mark:function(e,a,t,n,i,s,c){return{url:"/api/domain/v1/analytics/answers/".concat(t),key:"mark:answer:".concat(t,":").concat(n.resultId),type:r.k.PUT,data:n,normalize:!1,invalidationKeys:"interactive:result:set:".concat(e,":").concat(a),success:i,error:s,always:c}},pendingReviews:function(e){return{url:"/api/domain/v1/analytics/interactives/pending-reviews/summary",key:"interactives:pending:reviews",type:r.k.POST,data:e}},interactiveResultsReport:function(e){return{url:"{gateway}/v2/analytics/interactives/report",key:"interactive:results:report",data:e,type:r.k.POST,normalize:!1}}}},41196:(e,a,t)=>{t.d(a,{W:()=>c});var r=t(20354),n=t(71553),i=t(20768),s=t(31949);function c(e,a,t){var c,o=r.a.useBasicFetch(s.N.currentUser()),d=r.a.useBasicFetch(!!e&&i.b.interactiveMetadata(e)),l=r.a.useBasicFetch(!!(null===(c=d.data)||void 0===c?void 0:c.interactiveId)&&i.b.interactive(d.data.interactiveId)),u=!!o.data&&!!l.data&&!!a;return r.a.useBasicFetch(u&&n.I.interactiveResultSet(d.data.interactiveId,d.data.id,o.data,a,t))}},74901:(e,a,t)=>{function r(e){return function(e){if(Array.isArray(e))return n(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,a){if(e){if("string"==typeof e)return n(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?n(e,a):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,r=Array(a);t<a;t++)r[t]=e[t];return r}t.d(a,{K:()=>i});var i=function(e){var a=[],t=[];return e.users&&a.push.apply(a,r(e.users)),e.classrooms&&t.push.apply(t,r(e.classrooms)),e.classroomGroups&&t.push.apply(t,r(e.classroomGroups)),{userId:a,groupId:t}}},94644:(e,a,t)=>{t.d(a,{r:()=>l});var r=t(50242),n=t(81886),i=t(67058),s=t(14553),c=t(49267),o=t(49075),d={notFound:i.d,forbidden:{rating:s.q,yearLevel:s.q,region:c.a,privacy:s.q},badRequest:o._,internalServerError:o._};function l(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var s=Object.assign(Object.assign({},d),a);i&&n.Q.Ry.isStatusCodeError(i)&&(i!==r.o.InternalServer?i!==r.o.NotFound?i!==r.o.Forbidden?t.badRequest||n.Q.Ry.throw(new s.badRequest):t.forbidden||n.Q.Ry.throw(new s.forbidden.privacy):t.notFound||n.Q.Ry.throw(new s.notFound):t.internalServerError||n.Q.Ry.throw(new o._))}}},17913:(e,a,t)=>{t.d(a,{u:()=>s});var r=t(97395),n=t(110),i=t(62875),s={individualEngagement:function(e,a,t,n){var s=Object.assign({objectId:e},a);return t&&(s.sharerId=t),n&&(s.includePublicViews=!0),{url:r._.urlBuilder("{gateway}/v1/analytics/heat-map",s),key:(0,i.H)("engagement:".concat(e),a,t),formatData:function(e){var a;return Object.assign(Object.assign({},e),{data:null===(a=e.data)||void 0===a?void 0:a.map((function(e){var a;return Object.assign(Object.assign({},e),{heatMap:null!==(a=e.heatMap)&&void 0!==a?a:[]})}))})},normalize:!1}},aggregateEngagement:function(e,a,t,n){var s=Object.assign({objectId:e},a);return t&&(s.sharerId=t),n&&(s.includePublicViews=!0),{url:r._.urlBuilder("{gateway}/v1/analytics/heat-map/aggregations",s),key:(0,i.H)("aggregate:engagement:".concat(e),a,t),formatData:function(e){var a;return Object.assign(Object.assign({},e),{heatMap:null!==(a=e.heatMap)&&void 0!==a?a:[]})},normalize:!1}},views:function(e,a,t,s){var c=Object.assign(Object.assign({},e),{timeOffset:n.O.getTimezoneOffset()});return a&&(c.objectId=a),t&&(c.sharerId=t),s&&(c.includePublicViews=!0),{url:r._.urlBuilder("{gateway}/v1/analytics/video-views",c),key:(0,i.H)("video:views:".concat(a),e,t),normalize:!1}}}},91286:(e,a,t)=>{t.d(a,{v:()=>s});var r=t(32735),n=t(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function s(e,a,t){var s=Array.isArray(e)?e:[e];(0,r.useEffect)((function(){s.forEach((function(e){(0,n.r)(e.statusCode,a,t)}))}),[i(s),a,t])}},62875:(e,a,t)=>{function r(e,a,t){var r="".concat(e,":").concat(a.start,":").concat(a.end),n=Array.isArray(a.userId)?a.userId.sort().join(":"):a.userId,i=Array.isArray(a.groupId)?a.groupId.sort().join(":"):a.groupId;return n&&(r+=":".concat(n)),i&&(r+=":".concat(i)),t&&(r+=":".concat(t)),r}t.d(a,{H:()=>r})},27513:(e,a,t)=>{t.d(a,{m:()=>u});var r=t(32735),n=t(20354),i=t(16714),s=t(39151),c=t(22902),o=t(37802),d=t(66),l=t(11293);function u(e){var a,t=(0,o.r)(null).hasClassrooms,u=(0,c.T)().hasPermissions,v=n.a.useBasicFetch(s.L.config());return r.createElement("div",null,r.createElement(l.p,{analyticsUrl:null===(a=v.data)||void 0===a?void 0:a.analyticsWebUrl,hasAnalytics:u(i.C.ViewCustomerAnalytics),video:e.video}),r.createElement(d.j,{video:e.video,tabs:e.tabs,dateRangeAppLinkParams:e.dateRangeAppLinkParams,hasClassrooms:t}))}},11293:(e,a,t)=>{t.d(a,{p:()=>p});var r=t(32735),n=t(57900),i=t(97395),s=t(2948),c=t(10874),o=t(83345),d=t(4594),l=t(35223),u=t(86702);function v(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,r=Array(a);t<a;t++)r[t]=e[t];return r}var m="lite.insightsAdminAlert";function p(e){var a,t,p=(a=(0,s.D)(u.y.INSIGHTS_ADMIN_ALERT,!0,{storage:n.Z1.LocalStorage}),t=2,function(e){if(Array.isArray(e))return e}(a)||function(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,n,i,s,c=[],o=!0,d=!1;try{if(i=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;o=!1}else for(;!(o=(r=i.call(t)).done)&&(c.push(r.value),c.length!==a);o=!0);}catch(e){d=!0,n=e}finally{try{if(!o&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(d)throw n}}return c}}(a,t)||function(e,a){if(e){if("string"==typeof e)return v(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?v(e,a):void 0}}(a,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=p[0],f=p[1];return e.hasAnalytics&&g?r.createElement("div",{role:"alert",className:"d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4"},r.createElement("div",null,r.createElement(o.x,{namespace:m,phrase:"adminAlert"}),r.createElement("a",{className:"text-info",href:function(){if(!e.video)return e.analyticsUrl;var a="";return e.video.typeId===d.E.Interactive&&(a="/interactives/".concat(e.video.id,"/views")),e.video.typeId===d.E.Video&&(a="/videos/".concat(e.video.id,"/views")),e.video.typeId===d.E.Clip&&(a="/clips/".concat(e.video.id,"/views")),i._.safeUrlConcat(e.analyticsUrl,a)}(),target:"_blank"},r.createElement(o.x,{namespace:m,phrase:"analytics"})),"."),r.createElement(c.h,{svgName:l.vn.Close,className:"text-blue",onClick:function(){f(!1)}})):r.createElement(r.Fragment,null)}},5422:(e,a,t)=>{t.r(a),t.d(a,{InteractiveInsightsOverviewView:()=>B});var r=t(32735),n=t(23481),i=t(2948),s=t(20354),c=t(75896),o=t(41196),d=t(26025),l=t(74901),u=t(40003),v=t(30439),m=t(38143),p=t(39151),g=t(20768),f=t(31949),h=t(17913),y=t(91286),b=t(93322),I=t(79612),E=t(88630),A=t(9933),w=t(5672),S=t(27513),O=t(14070),j=t(97291),k=t(17934);function F(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,r=Array(a);t<a;t++)r[t]=e[t];return r}var N=n.T.encloseNamespace("insights.interactiveInsightsOverviewView");function B(e){var a,t,n,B,R,C,T,L,P=(T=(0,i.D)(m.g.ANONYMISE_USERS),L=1,function(e){if(Array.isArray(e))return e}(T)||function(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,n,i,s,c=[],o=!0,d=!1;try{if(i=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;o=!1}else for(;!(o=(r=i.call(t)).done)&&(c.push(r.value),c.length!==a);o=!0);}catch(e){d=!0,n=e}finally{try{if(!o&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(d)throw n}}return c}}(T,L)||function(e,a){if(e){if("string"==typeof e)return F(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?F(e,a):void 0}}(T,L)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,b.F)();var U=s.a.useBasicFetch(f.N.currentUser()),x=s.a.useBasicFetch(p.L.config()),_=s.a.useBasicFetch(g.b.interactiveMetadata(e.interactiveId)),M=s.a.useBasicFetch((null===(a=_.data)||void 0===a?void 0:a.interactiveId)&&g.b.interactive(_.data.interactiveId)),D=d.B.getAudienceAppLinkParams(),H=d.B.getDateRangeAppLinkParams(),V=Object.assign(Object.assign({},(0,u.wO)((0,u.Hb)(),H)),(0,l.K)(D)),G=(0,o.W)(e.interactiveId,V,!0),q=r.useMemo((function(){var e,a;return!!(null===(a=null===(e=G.data)||void 0===e?void 0:e.students)||void 0===a?void 0:a.find((function(e){var a;return null===(a=e.publicUser)||void 0===a?void 0:a.profileId})))}),[G.data]),z=1===(null===(t=D.classrooms)||void 0===t?void 0:t.length)&&!(null===(n=D.classroomGroups)||void 0===n?void 0:n.length),Q=s.a.useBasicFetch(z&&E.F.getClassroomStudents(c.m.first(D.classrooms))),K=s.a.useBasicFetch(G.data&&h.u.aggregateEngagement(e.interactiveId,V,U.data.id,q)),W=s.a.useBasicFetch(U.data&&G.data&&h.u.views(V,e.interactiveId,U.data.id,q)),$=s.a.useBasicFetch(v.o.getShareLinkByObjectId(e.interactiveId)),Y=s.a.useBasicFetch(v.o.getSentDirectShareByObjectId(e.interactiveId)),Z=!(!$.data&&!Y.data);(0,I.M)({title:_.data?N("pageTitle",{video:null===(B=_.data)||void 0===B?void 0:B.name}):null}),(0,y.v)([M,_,G]);var J=U.data&&x.data&&_.data&&M.data&&G.data&&(!z||Q.data)&&K.data&&!!W.data,X=Object.assign(Object.assign({},D),H),ee=function(e,a){return{resultsAppLink:{application:j.O.INSIGHTS,action:O.e.Insights.INTERACTIVE_STUDENTS,args:[e],params:a},questionsAppLink:{application:j.O.INSIGHTS,action:O.e.Insights.INTERACTIVE_QUESTIONS,args:[e],params:a},heatmapAppLink:{application:j.O.INSIGHTS,action:O.e.Insights.INTERACTIVE_HEATMAP,args:[e],params:a}}}(null===(R=_.data)||void 0===R?void 0:R.id,X);return r.createElement("div",{className:"px-3"},r.createElement(S.m,{video:_.data,dateRangeAppLinkParams:H,tabs:(0,w.kj)(null===(C=_.data)||void 0===C?void 0:C.id,"insights",X)}),r.createElement(k.R,{audienceAppLinkParams:D,dateRangeAppLinkParams:H,video:_.data}),r.createElement(A.m,{aggregateEngagement:K.data,interactive:M.data,interactiveMetadata:_.data,interactiveInsightsAppLinks:ee,classroomStudents:Q.data,results:G.data,videoViews:W.data,config:x.data,classroomFilterOnly:z,anonymiseUsers:P,params:X,hasDataLoaded:J,hasShared:Z}))}},17934:(e,a,t)=>{t.d(a,{R:()=>E});var r=t(32735),n=t(82602),i=t(20354),s=t(74901),c=t(40003),o=t(30439),d=t(65853),l=t(64249),u=t(10874),v=t(83345),m=t(39151),p=t(1666),g=t(31949),f=t(17913),h=t(35223),y=t(86099),b=t(24758),I="insights.shareInfo";function E(e){var a,t,E,A,w=i.a.useBasicFetch(m.L.config()),S=Object.assign(Object.assign({},(0,c.wO)((0,c.Hb)(),e.dateRangeAppLinkParams)),(0,s.K)(e.audienceAppLinkParams)),O=i.a.useBasicFetch(g.N.currentUser()),j=i.a.useBasicFetch(e.video&&o.o.getShareLinkByObjectId(e.video.id)),k=i.a.useBasicFetch(e.video&&o.o.getSentDirectShareByObjectId(e.video.id)),F=i.a.useBasicFetch((null===(a=O.data)||void 0===a?void 0:a.customerId)&&l.I.getDirectShareRecipientsRequest(O.data.customerId,k.data)),N=i.a.useBasicFetch(O.data&&e.video&&f.u.views(S,e.video.id,O.data.id)),B=i.a.useBasicFetch(e.video&&o.o.getPrivacy(e.video.id)),R=i.a.useBasicFetch((null===(t=O.data)||void 0===t?void 0:t.isAuthenticated)&&p.h.yearGroups(O.data.customerId)),C=j.hasCompleted&&!j.data&&k.hasCompleted&&!k.data,T=j.hasCompleted&&j.data||k.hasCompleted&&k.data&&(!j.data||B.data)&&(!j.data||R.data)&&F.data&&N.data,L=j.data&&B.data&&R.data&&d.R.getIconAndText({entity:e.video,entityTypeId:e.video.typeId,hasStudentExp:!1,isPasswordProtected:j.data.isPasswordProtected,linkExpireDate:j.data.linkExpireDate,privacy:B.data,status:j.data.status,yearGroups:R.data}),P=r.useMemo((function(){var e;return null===(e=N.data)||void 0===e?void 0:e.data.reduce((function(e,a){return a.count+e}),0)}),[N.data]);return r.createElement("div",{className:"mb-4"},T&&r.createElement(r.Fragment,null,r.createElement("h2",{className:"h4"},r.createElement(v.x,{namespace:I,phrase:"shareInfo"})),r.createElement("div",{className:"d-flex border border-light p-3 rounded-3 align-items-center justify-content-between"},r.createElement("div",{className:"d-flex align-items-center gap-2"},r.createElement(b.A,{shareRecipients:F.data,imageCdnUrl:null===(E=w.data)||void 0===E?void 0:E.imageCdnUrl,hasShareLink:!!j.data,maxAvatars:4,shareLinkText:null==L?void 0:L.text}),"·",r.createElement("p",{className:"mb-0"},(0,n.WU)(null===(A=k.data)||void 0===A?void 0:A.dateCreated)),!!P&&r.createElement(r.Fragment,null,"·",r.createElement("p",{className:"mb-0"},r.createElement(v.x,{namespace:I,phrase:"views",options:{smartCount:P}})))),r.createElement(u.h,{appLink:(0,y.YK)(e.video),svgName:h.vn.Share,className:"btn btn-outline-dark"},r.createElement(v.x,{namespace:I,phrase:"share"})))),!C&&!T&&r.createElement(r.Fragment,null,r.createElement("div",{className:"h4 partial-loading-background w-25"}," "),r.createElement("div",{className:"p-3 rounded partial-loading-background"},r.createElement("p",{className:"mb-1"}," "))))}}}]);
|
|
2
|
+
//# sourceMappingURL=7177-423a032cdc-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/7177-423a032cdc-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/flight-requests/InteractiveResultsRequests.ts","file:///app/packages/libs/shared/src/apps/analytics/hooks/UseFetchInteractiveResults.ts","file:///app/packages/libs/shared/src/apps/analytics/utils/AudienceUtils.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/flight-requests/VideoViewRequests.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/utils/AnalyticsRequestUtils.ts","file:///app/packages/projects/lite/src/apps/insights/views/header/InsightsHeaderView.tsx","file:///app/packages/projects/lite/src/apps/insights/views/insights-admin-alert/InsightsAdminAlert.tsx","file:///app/packages/projects/lite/src/apps/insights/views/interactive/overview/InteractiveInsightsOverviewView.tsx","file:///app/packages/projects/lite/src/apps/insights/views/interactive/overview/InteractiveInsightsOverviewUtils.ts","file:///app/packages/projects/lite/src/apps/insights/views/share-info/ShareInfoView.tsx"],"sourcesContent":["import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { MarkInteractiveAnswer } from 'libs/shared/apps/analytics/interfaces/MarkInteractiveAnswer';\nimport { InteractiveResultsReport } from 'libs/shared/apps/analytics/interfaces/requests/InteractiveResultsReport';\nimport { InteractivesPendingReviewsRequest } from 'libs/shared/apps/analytics/interfaces/requests/InteractivesPendingReviewsRequest';\nimport { AnalyticsRequestFilter, CurrentUser, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\ninterface InteractiveResultFilters {\n currentUserId: string;\n currentCustomerId: string;\n dateRange?: { start: string, end: string }\n userIds?: string | string[];\n classroomsAndGroups?: string | string[];\n}\n\nfunction getInteractiveResultFilters(\n currentUser: CurrentUser,\n filter: AnalyticsRequestFilter\n): InteractiveResultFilters {\n return {\n currentUserId: currentUser.id,\n currentCustomerId: currentUser.customerId,\n dateRange: { start: filter.start, end: filter.end },\n userIds: filter.userId,\n classroomsAndGroups: filter.groupId\n };\n}\n\nexport const InteractiveResultsRequests = {\n /** \n * This endpoint returns data with a lot of duplicated ids,\n * e.g. student answers to the same question will have the same id.\n * Because of that, we don't normalize.\n */\n interactiveResultSet(\n interactiveId: string,\n interactiveMetadataId: string,\n currentUser: CurrentUser,\n filter: AnalyticsRequestFilter,\n includePublicResults: boolean,\n success?: (data: InteractiveResultSet) => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: includePublicResults ?\n `/api/domain/v3/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}` :\n `/api/domain/v2/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}`,\n key: getAnalyticsRequestKey(`interactive:result:set:${interactiveId}:${interactiveMetadataId}`, filter),\n data: getInteractiveResultFilters(currentUser, filter),\n type: HttpVerbs.POST,\n normalize: false,\n formatData: (data: any) => {\n return {\n ...data,\n students: data.students.map((student: any) => {\n if (!student.name || !student.profileId)\n return student;\n\n return {\n ...student,\n publicUser: {\n profileId: student.profileId,\n name: student.name\n }\n };\n })\n };\n },\n success,\n error,\n always\n };\n },\n \n /**\n * As the response from `interactiveResultSet` isn't normalised, we need to invalidate the cache\n * to update the results data.\n */\n mark(\n interactiveId: string,\n interactiveMetadataId: string,\n answerId: string,\n data: MarkInteractiveAnswer,\n success?: () => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/analytics/answers/${answerId}`,\n key: `mark:answer:${answerId}:${data.resultId}`,\n type: HttpVerbs.PUT,\n data,\n normalize: false,\n invalidationKeys: `interactive:result:set:${interactiveId}:${interactiveMetadataId}`,\n success,\n error,\n always\n };\n },\n\n pendingReviews(data: InteractivesPendingReviewsRequest): Flight.Request {\n return {\n url: `/api/domain/v1/analytics/interactives/pending-reviews/summary`,\n key: `interactives:pending:reviews`,\n type: HttpVerbs.POST,\n data\n };\n },\n\n interactiveResultsReport(data: InteractiveResultsReport): Flight.Request {\n return {\n url: '{gateway}/v2/analytics/interactives/report',\n key: 'interactive:results:report',\n data,\n type: HttpVerbs.POST,\n normalize: false\n };\n }\n};","import { Flight } from 'libs/common/flight';\n\nimport { InteractiveResultsRequests } from 'libs/shared/apps/analytics/flight-requests/InteractiveResultsRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { AnalyticsRequestFilter, CurrentUser, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\n\nexport function useFetchInteractiveResults(\n interactiveMetadataId: string,\n requestFilter: AnalyticsRequestFilter,\n includePublicResults?: boolean\n): Flight.Response<InteractiveResultSet> {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(!!interactiveMetadataId &&\n InteractiveRequests.interactiveMetadata(interactiveMetadataId));\n\n const interactive = Flight.useBasicFetch<Interactive>(!!interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId));\n\n const shouldFetchResults = !!currentUser.data && !!interactive.data && (!!requestFilter);\n\n return Flight.useBasicFetch<InteractiveResultSet>(shouldFetchResults &&\n InteractiveResultsRequests.interactiveResultSet(\n interactiveMetadata.data.interactiveId,\n interactiveMetadata.data.id,\n currentUser.data,\n requestFilter,\n includePublicResults\n ));\n}","import { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\n\nexport const getAudienceParams = (queryParams: AudienceQueryParams) => {\n const userId: string[] = [];\n const groupId: string[] = [];\n\n if (queryParams.users)\n userId.push(...queryParams.users);\n\n if (queryParams.classrooms)\n groupId.push(...queryParams.classrooms);\n\n if (queryParams.classroomGroups)\n groupId.push(...queryParams.classroomGroups);\n return {\n userId,\n groupId\n };\n};","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AnalyticsRequestFilter, Engagement } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\nexport const VideoViewRequests = {\n individualEngagement(\n objectId: string,\n filter: AnalyticsRequestFilter,\n sharerId?: string,\n includePublicViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n objectId,\n ...filter\n };\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n\n if (includePublicViews)\n queryParams.includePublicViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/heat-map', queryParams),\n key: getAnalyticsRequestKey(`engagement:${objectId}`, filter, sharerId),\n formatData: (data: any) => {\n return {\n ...data,\n data: data.data?.map((d: any) => ({\n ...d,\n heatMap: d.heatMap ?? []\n }))\n };\n },\n normalize: false\n };\n },\n \n aggregateEngagement(\n objectId: string,\n filter: AnalyticsRequestFilter,\n sharerId?: string,\n includePublicViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n objectId,\n ...filter\n };\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n \n if (includePublicViews)\n queryParams.includePublicViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/heat-map/aggregations', queryParams),\n key: getAnalyticsRequestKey(`aggregate:engagement:${objectId}`, filter, sharerId),\n formatData: (data: Engagement) => {\n return {\n ...data,\n heatMap: data.heatMap ?? []\n };\n },\n normalize: false\n };\n },\n \n views(\n filter: AnalyticsRequestFilter,\n objectId?: string,\n sharerId?: string,\n includePublicViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n ...filter,\n timeOffset: DateHelper.getTimezoneOffset()\n };\n\n if (objectId)\n queryParams.objectId = objectId;\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n \n if (includePublicViews)\n queryParams.includePublicViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/video-views', queryParams),\n key: getAnalyticsRequestKey(`video:views:${objectId}`, filter, sharerId),\n normalize: false\n };\n }\n};","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nexport function getAnalyticsRequestKey(baseKey: string, filter: AnalyticsRequestFilter, sharerId?: string): string {\n let key = `${baseKey}:${filter.start}:${filter.end}`;\n\n const userIdKey = Array.isArray(filter.userId) ? filter.userId.sort().join(':') : filter.userId;\n const groupIdKey = Array.isArray(filter.groupId) ? filter.groupId.sort().join(':') : filter.groupId;\n\n if (userIdKey)\n key += `:${userIdKey}`;\n\n if (groupIdKey)\n key += `:${groupIdKey}`;\n\n if (sharerId)\n key += `:${sharerId}`;\n\n return key;\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { DateRangeQueryParams } from 'libs/shared/apps/analytics/interfaces/DateRangeQueryParams';\nimport { PillTab } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, VideoTypes } from 'libs/shared/interfaces';\n\nimport { InsightsHeader } from 'apps/insights/components/insights-header/InsightsHeader';\nimport { InsightsAdminAlert } from 'apps/insights/views/insights-admin-alert/InsightsAdminAlert';\n\ninterface InsightsHeaderProps {\n dateRangeAppLinkParams: DateRangeQueryParams;\n video: VideoTypes;\n tabs: PillTab[];\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function InsightsHeaderView(props: InsightsHeaderProps) {\n const { hasClassrooms } = useSettings(null);\n const { hasPermissions } = usePermissions();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n return (\n <div>\n <InsightsAdminAlert\n analyticsUrl={config.data?.analyticsWebUrl}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n video={props.video}\n />\n\n <InsightsHeader\n video={props.video}\n tabs={props.tabs}\n dateRangeAppLinkParams={props.dateRangeAppLinkParams}\n hasClassrooms={hasClassrooms}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nconst namespace = 'lite.insightsAdminAlert';\n\ninterface InsightsAdminAlertProps {\n hasAnalytics: boolean;\n analyticsUrl: string;\n video?: VideoTypes;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function InsightsAdminAlert(props: InsightsAdminAlertProps) {\n const [ show, setShow ] = useViewModel(\n ViewModelKeys.INSIGHTS_ADMIN_ALERT,\n true,\n { storage: StorageType.LocalStorage }\n );\n\n function onDismiss() {\n setShow(false);\n }\n\n function getAnalyticsUrl() {\n if (!props.video) return props.analyticsUrl;\n\n let videoRoute = '';\n\n if (props.video.typeId === MasterType.Interactive)\n videoRoute = `/interactives/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Video)\n videoRoute = `/videos/${props.video.id}/views`;\n\n if (props.video.typeId === MasterType.Clip)\n videoRoute = `/clips/${props.video.id}/views`;\n\n return UrlHelper.safeUrlConcat(props.analyticsUrl, videoRoute);\n }\n\n if (!props.hasAnalytics || !show)\n return <></>;\n\n return (\n <div role='alert' className='d-flex justify-content-between align-items-center bg-light-blue rounded p-2 mb-4'>\n <div>\n <Text namespace={namespace} phrase='adminAlert' />\n <a className='text-info' href={getAnalyticsUrl()} target='_blank'>\n <Text namespace={namespace} phrase='analytics' />\n </a>.\n </div>\n <IconButton svgName={cvSvgLibrary.Close} className='text-blue' onClick={onDismiss} />\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { BaseAnalyticsEventResponse } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { getAudienceParams } from 'libs/shared/apps/analytics/utils/AudienceUtils';\nimport { getInsightsDateRangePresets, getStartEndParams } from 'libs/shared/apps/analytics/utils/DateRangeUtils';\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoViewRequests } from 'libs/shared/flight-requests/VideoViewRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BasePaginatedCollection, Config, CurrentUser, DirectShare, Engagement, Interactive, InteractiveMetadata, ShareLink, User } from 'libs/shared/interfaces';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { InteractiveInsightsOverview } from 'apps/insights/components/interactive-insights-overview/InteractiveInsightsOverview';\nimport { getInsightsInteractiveTabs } from 'apps/insights/utils/InsightsAppLinkUtils';\nimport { InsightsHeaderView } from 'apps/insights/views/header/InsightsHeaderView';\nimport { getInteractiveInsightsAppLinks } from 'apps/insights/views/interactive/overview/InteractiveInsightsOverviewUtils';\nimport { ShareInfoView } from 'apps/insights/views/share-info/ShareInfoView';\n\nconst namespace = 'insights.interactiveInsightsOverviewView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveInsightsViewProps {\n interactiveId: string;\n}\n\nexport function InteractiveInsightsOverviewView(props: InteractiveInsightsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveId)\n );\n\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId));\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n const requestFilter = {\n ...getStartEndParams(getInsightsDateRangePresets(), dateRangeAppLinkParams),\n ...getAudienceParams(audienceAppLinkParams)\n };\n\n const results = useFetchInteractiveResults(props.interactiveId, requestFilter, true);\n const hasPublicResult = React.useMemo(\n () => !!results.data?.students?.find(s => s.publicUser?.profileId),\n [results.data]\n );\n\n const classroomFilterOnly =\n audienceAppLinkParams.classrooms?.length === 1 && !audienceAppLinkParams.classroomGroups?.length;\n const classroomStudents = Flight.useBasicFetch<BasePaginatedCollection<User>>(classroomFilterOnly &&\n ClassroomRequests.getClassroomStudents(ArrayHelper.first(audienceAppLinkParams.classrooms)));\n\n const aggregateEngagement = Flight.useBasicFetch<Engagement>(\n results.data && VideoViewRequests.aggregateEngagement(\n props.interactiveId,\n requestFilter,\n currentUser.data.id,\n hasPublicResult\n )\n );\n\n const videoViews = Flight.useBasicFetch<BaseAnalyticsEventResponse>(\n currentUser.data &&\n results.data &&\n VideoViewRequests.views(requestFilter, props.interactiveId, currentUser.data.id, hasPublicResult)\n );\n\n const shareLink = Flight.useBasicFetch<ShareLink>(ShareRequests.getShareLinkByObjectId(props.interactiveId));\n const sentDirectShare = Flight.useBasicFetch<DirectShare>(\n ShareRequests.getSentDirectShareByObjectId(props.interactiveId)\n );\n\n const hasShared = !!(shareLink.data || sentDirectShare.data);\n\n useSetPageMetadata({ title: interactiveMetadata.data ? getPhrase('pageTitle', { video: interactiveMetadata.data?.name }) : null });\n\n useHandleObjectError([ interactive, interactiveMetadata, results ]);\n\n const hasDataLoaded =\n currentUser.data &&\n config.data &&\n interactiveMetadata.data &&\n interactive.data &&\n results.data &&\n (!classroomFilterOnly || classroomStudents.data) &&\n aggregateEngagement.data &&\n !!videoViews.data;\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams\n };\n\n const interactiveInsightsAppLinks = getInteractiveInsightsAppLinks(\n interactiveMetadata.data?.id,\n params\n );\n\n return (\n <div className='px-3'>\n <InsightsHeaderView\n video={interactiveMetadata.data}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n tabs={getInsightsInteractiveTabs(interactiveMetadata.data?.id, 'insights', params)}\n />\n\n <ShareInfoView\n audienceAppLinkParams={audienceAppLinkParams}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n video={interactiveMetadata.data}\n />\n\n <InteractiveInsightsOverview\n aggregateEngagement={aggregateEngagement.data}\n interactive={interactive.data}\n interactiveMetadata={interactiveMetadata.data}\n interactiveInsightsAppLinks={interactiveInsightsAppLinks}\n classroomStudents={classroomStudents.data}\n results={results.data}\n videoViews={videoViews.data}\n config={config.data}\n classroomFilterOnly={classroomFilterOnly}\n anonymiseUsers={anonymiseUsers}\n params={params}\n hasDataLoaded={hasDataLoaded}\n hasShared={hasShared}\n />\n </div>\n );\n}","import { HashObject } from 'libs/common/react/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport function getInteractiveInsightsAppLinks(id: string, params?: HashObject) {\n return {\n resultsAppLink: {\n application: AppChannels.INSIGHTS,\n action: Actions.Insights.INTERACTIVE_STUDENTS,\n args: [id],\n params\n },\n questionsAppLink: {\n application: AppChannels.INSIGHTS,\n action: Actions.Insights.INTERACTIVE_QUESTIONS,\n args: [id],\n params\n },\n heatmapAppLink: {\n application: AppChannels.INSIGHTS,\n action: Actions.Insights.INTERACTIVE_HEATMAP,\n args: [id],\n params\n }\n };\n}","import React from 'react';\nimport { format as formatDate } from 'timeago.js';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\nimport { BaseAnalyticsEventResponse } from 'libs/shared/apps/analytics/interfaces/BaseAnalyticsEvent';\nimport { DateRangeQueryParams } from 'libs/shared/apps/analytics/interfaces/DateRangeQueryParams';\nimport { getAudienceParams } from 'libs/shared/apps/analytics/utils/AudienceUtils';\nimport { getInsightsDateRangePresets, getStartEndParams } from 'libs/shared/apps/analytics/utils/DateRangeUtils';\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\nimport { ShareLinkHelper } from 'libs/shared/apps/share/utils/ShareLinkHelper';\nimport { SharableRecipient, ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoViewRequests } from 'libs/shared/flight-requests/VideoViewRequests';\nimport { Config, CurrentUser, DirectShare, ShareLink, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { getShareAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport { SharedToPill } from 'apps/my-shares/components/shared-to-pill/SharedToPill';\n\nconst namespace = 'insights.shareInfo';\n\ninterface ShareInfoViewProps {\n video: VideoTypes;\n audienceAppLinkParams: AudienceQueryParams;\n dateRangeAppLinkParams: DateRangeQueryParams;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function ShareInfoView(props: ShareInfoViewProps) {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const requestFilter = {\n ...getStartEndParams(getInsightsDateRangePresets(), props.dateRangeAppLinkParams),\n ...getAudienceParams(props.audienceAppLinkParams)\n };\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const shareLink = Flight.useBasicFetch<ShareLink>(props.video &&\n ShareRequests.getShareLinkByObjectId(props.video.id));\n const sentDirectShare = Flight.useBasicFetch<DirectShare>(props.video &&\n ShareRequests.getSentDirectShareByObjectId(props.video.id));\n const recipients = Flight.useBasicFetch<SharableRecipient[]>(currentUser.data?.customerId &&\n ShareViewHelper.getDirectShareRecipientsRequest(currentUser.data.customerId, sentDirectShare.data));\n const videoViews = Flight.useBasicFetch<BaseAnalyticsEventResponse>(currentUser.data && props.video &&\n VideoViewRequests.views(requestFilter, props.video.id, currentUser.data.id));\n const privacy = Flight.useBasicFetch<SharePrivacyResponse>(props.video && ShareRequests.getPrivacy(props.video.id));\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const notShared =\n (shareLink.hasCompleted && !shareLink.data) &&\n (sentDirectShare.hasCompleted && !sentDirectShare.data);\n\n const hasShareData =\n (shareLink.hasCompleted && shareLink.data) ||\n (sentDirectShare.hasCompleted && sentDirectShare.data) &&\n (!shareLink.data || privacy.data) &&\n (!shareLink.data || yearGroups.data) &&\n recipients.data &&\n videoViews.data;\n\n const shareLinkText = shareLink.data && privacy.data && yearGroups.data &&\n ShareLinkHelper.getIconAndText({\n entity: props.video,\n entityTypeId: props.video.typeId,\n hasStudentExp: false,\n isPasswordProtected: shareLink.data.isPasswordProtected,\n linkExpireDate: shareLink.data.linkExpireDate,\n privacy: privacy.data,\n status: shareLink.data.status,\n yearGroups: yearGroups.data\n });\n\n const viewCount = React.useMemo(() => {\n return videoViews.data?.data.reduce((acc, view) => view.count + acc, 0);\n }, [videoViews.data]);\n\n return (\n <div className='mb-4'>\n {hasShareData &&\n <>\n <h2 className='h4'><Text namespace={namespace} phrase='shareInfo' /></h2>\n\n <div className='d-flex border border-light p-3 rounded-3 align-items-center justify-content-between'>\n <div className='d-flex align-items-center gap-2'>\n <SharedToPill\n shareRecipients={recipients.data}\n imageCdnUrl={config.data?.imageCdnUrl}\n hasShareLink={!!shareLink.data}\n maxAvatars={4}\n shareLinkText={shareLinkText?.text}\n />\n ·\n <p className='mb-0'>{formatDate(sentDirectShare.data?.dateCreated)}</p>\n {!!viewCount && (\n <>\n ·\n <p className='mb-0'><Text namespace={namespace} phrase='views' options={{ smartCount: viewCount }} /></p>\n </>\n )}\n </div>\n <IconButton\n appLink={getShareAppLink(props.video)}\n svgName={cvSvgLibrary.Share}\n className='btn btn-outline-dark'\n >\n <Text namespace={namespace} phrase='share' />\n </IconButton>\n </div>\n </>\n }\n\n {!notShared && !hasShareData &&\n <>\n <div className='h4 partial-loading-background w-25'> </div>\n <div className='p-3 rounded partial-loading-background'>\n <p className='mb-1'> </p>\n </div>\n </>\n }\n </div>\n );\n}"],"names":["getInteractiveResultFilters","currentUser","filter","currentUserId","id","currentCustomerId","customerId","dateRange","start","end","userIds","userId","classroomsAndGroups","groupId","InteractiveResultsRequests","interactiveResultSet","interactiveId","interactiveMetadataId","includePublicResults","success","error","always","url","key","data","type","normalize","formatData","students","map","student","name","profileId","publicUser","mark","answerId","resultId","invalidationKeys","pendingReviews","interactiveResultsReport","useFetchInteractiveResults","requestFilter","interactiveMetadata","interactive","shouldFetchResults","I","getAudienceParams","queryParams","users","push","classrooms","classroomGroups","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","VideoViewRequests","individualEngagement","objectId","sharerId","includePublicViews","d","heatMap","aggregateEngagement","views","timeOffset","generateCacheKey","flightObjs","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","getAnalyticsRequestKey","baseKey","userIdKey","sort","groupIdKey","InsightsHeaderView","props","hasClassrooms","hasPermissions","config","analyticsUrl","analyticsWebUrl","hasAnalytics","video","tabs","dateRangeAppLinkParams","namespace","InsightsAdminAlert","storage","show","setShow","role","className","phrase","href","videoRoute","typeId","getAnalyticsUrl","target","svgName","onClick","getPhrase","LanguageService","InteractiveInsightsOverviewView","anonymiseUsers","SharedViewModelKeys","useLockContentWidth","UserRequests","ConfigRequests","InteractiveRequests","audienceAppLinkParams","results","hasPublicResult","find","s","classroomFilterOnly","length","classroomStudents","ClassroomRequests","ArrayHelper","videoViews","shareLink","ShareRequests","sentDirectShare","hasShared","useSetPageMetadata","title","hasDataLoaded","params","interactiveInsightsAppLinks","resultsAppLink","application","action","args","questionsAppLink","heatmapAppLink","getInteractiveInsightsAppLinks","ShareInfoView","InteractiveInsightsOverview","recipients","yearGroups","isAuthenticated","notShared","hasCompleted","hasShareData","shareLinkText","entity","entityTypeId","hasStudentExp","isPasswordProtected","linkExpireDate","viewCount","reduce","acc","view","count","shareRecipients","imageCdnUrl","hasShareLink","maxAvatars","text","dateCreated","options","smartCount","appLink"],"sourceRoot":""}
|