@clickview/lite 0.75.0-rc.8 → 0.75.0
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/css/{7103-lite-fef3024f61.chunk.css → 2878-lite-d8e0bf912a.chunk.css} +1 -1
- package/dist/css/{1243-lite-13eda8f6a0.chunk.css → 3615-lite-240342ff8e.chunk.css} +1 -1
- package/dist/css/{1867-lite-8baa8af02b.chunk.css → 4630-lite-0157b1c437.chunk.css} +1 -1
- package/dist/css/{4203-lite-9ffab89741.chunk.css → 8362-lite-10810fdef2.chunk.css} +1 -1
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{104-7ee25cbbb8-lite.chunk.js → 104-da7394bcfa-lite.chunk.js} +2 -2
- package/dist/scripts/104-da7394bcfa-lite.chunk.js.map +1 -0
- package/dist/scripts/1192-bb27568f21-lite.chunk.js +2 -0
- package/dist/scripts/1192-bb27568f21-lite.chunk.js.map +1 -0
- package/dist/scripts/1199-cf2cb206b5-lite.chunk.js +2 -0
- package/dist/scripts/1199-cf2cb206b5-lite.chunk.js.map +1 -0
- package/dist/scripts/1502-9836df10cd-lite.chunk.js +2 -0
- package/dist/scripts/1502-9836df10cd-lite.chunk.js.map +1 -0
- package/dist/scripts/{1610-9ccecc428a-lite.chunk.js → 1610-0edaa98d40-lite.chunk.js} +2 -2
- package/dist/scripts/{1610-9ccecc428a-lite.chunk.js.map → 1610-0edaa98d40-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7103-3b181ec69b-lite.chunk.js → 2878-487c4a8e1a-lite.chunk.js} +2 -2
- package/dist/scripts/2878-487c4a8e1a-lite.chunk.js.map +1 -0
- package/dist/scripts/{3057-1ae8087b3a-lite.chunk.js → 3057-a5bc753736-lite.chunk.js} +1 -1
- package/dist/scripts/{3057-1ae8087b3a-lite.chunk.js.map → 3057-a5bc753736-lite.chunk.js.map} +1 -1
- package/dist/scripts/3268-7be966dc82-lite.chunk.js +3 -0
- package/dist/scripts/3268-7be966dc82-lite.chunk.js.map +1 -0
- package/dist/scripts/{1243-72f3d31787-lite.chunk.js → 3615-a0da361aa5-lite.chunk.js} +2 -2
- package/dist/scripts/3615-a0da361aa5-lite.chunk.js.map +1 -0
- package/dist/scripts/{3872-6fe7371d39-lite.chunk.js → 3872-cf9a6bdae8-lite.chunk.js} +1 -1
- package/dist/scripts/{3872-6fe7371d39-lite.chunk.js.map → 3872-cf9a6bdae8-lite.chunk.js.map} +1 -1
- package/dist/scripts/4125-6d34b8b8f2-lite.chunk.js +2 -0
- package/dist/scripts/4125-6d34b8b8f2-lite.chunk.js.map +1 -0
- package/dist/scripts/4208-f22ed7a148-lite.chunk.js +2 -0
- package/dist/scripts/4208-f22ed7a148-lite.chunk.js.map +1 -0
- package/dist/scripts/4598-e25e9e03d6-lite.chunk.js +2 -0
- package/dist/scripts/4598-e25e9e03d6-lite.chunk.js.map +1 -0
- package/dist/scripts/{1867-0823a787c3-lite.chunk.js → 4630-4a35ecbf2b-lite.chunk.js} +2 -2
- package/dist/scripts/4630-4a35ecbf2b-lite.chunk.js.map +1 -0
- package/dist/scripts/6475-f019242ec2-lite.chunk.js +2 -0
- package/dist/scripts/6475-f019242ec2-lite.chunk.js.map +1 -0
- package/dist/scripts/6550-1d60d863e8-lite.chunk.js +2 -0
- package/dist/scripts/6550-1d60d863e8-lite.chunk.js.map +1 -0
- package/dist/scripts/{6695-4e01b4a18c-lite.chunk.js → 6695-4ae0acad94-lite.chunk.js} +1 -1
- package/dist/scripts/{6695-4e01b4a18c-lite.chunk.js.map → 6695-4ae0acad94-lite.chunk.js.map} +1 -1
- package/dist/scripts/6756-3c7f911759-lite.chunk.js +3 -0
- package/dist/scripts/6756-3c7f911759-lite.chunk.js.map +1 -0
- package/dist/scripts/6790-1695fcf576-lite.chunk.js +2 -0
- package/dist/scripts/6790-1695fcf576-lite.chunk.js.map +1 -0
- package/dist/scripts/{7148-50ccb48a44-lite.chunk.js → 7148-e314dd9a4e-lite.chunk.js} +2 -2
- package/dist/scripts/7148-e314dd9a4e-lite.chunk.js.map +1 -0
- package/dist/scripts/7438-35b887a48e-lite.chunk.js +2 -0
- package/dist/scripts/7438-35b887a48e-lite.chunk.js.map +1 -0
- package/dist/scripts/{8323-d6d1d07ce5-lite.chunk.js → 8323-5694456903-lite.chunk.js} +2 -2
- package/dist/scripts/{8323-d6d1d07ce5-lite.chunk.js.map → 8323-5694456903-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4203-83f90f92f3-lite.chunk.js → 8362-ed5df8f4fc-lite.chunk.js} +3 -3
- package/dist/scripts/8362-ed5df8f4fc-lite.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/{4203-83f90f92f3-lite.chunk.js.map → 8362-ed5df8f4fc-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8732-3e8332e620-lite.chunk.js → 8732-dc5182fb69-lite.chunk.js} +1 -1
- package/dist/scripts/{8732-3e8332e620-lite.chunk.js.map → 8732-dc5182fb69-lite.chunk.js.map} +1 -1
- package/dist/scripts/8856-08061bbec5-lite.chunk.js +2 -0
- package/dist/scripts/8856-08061bbec5-lite.chunk.js.map +1 -0
- package/dist/scripts/{8957-bc83ea1180-lite.chunk.js → 8957-b3f0dbb85d-lite.chunk.js} +1 -1
- package/dist/scripts/{8957-bc83ea1180-lite.chunk.js.map → 8957-b3f0dbb85d-lite.chunk.js.map} +1 -1
- package/dist/scripts/9042-7c30ffd4f0-lite.chunk.js +2 -0
- package/dist/scripts/9042-7c30ffd4f0-lite.chunk.js.map +1 -0
- package/dist/scripts/9134-b0ae877597-lite.chunk.js +2 -0
- package/dist/scripts/9134-b0ae877597-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-58c25f6529.min.js → bundle-941a464ef0.min.js} +3 -3
- package/dist/scripts/{bundle-58c25f6529.min.js.map → bundle-941a464ef0.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/104-7ee25cbbb8-lite.chunk.js.map +0 -1
- package/dist/scripts/1074-6dadbd8187-lite.chunk.js +0 -2
- package/dist/scripts/1074-6dadbd8187-lite.chunk.js.map +0 -1
- package/dist/scripts/1192-6ac54d734b-lite.chunk.js +0 -2
- package/dist/scripts/1192-6ac54d734b-lite.chunk.js.map +0 -1
- package/dist/scripts/1199-1cddf4e0e0-lite.chunk.js +0 -2
- package/dist/scripts/1199-1cddf4e0e0-lite.chunk.js.map +0 -1
- package/dist/scripts/1243-72f3d31787-lite.chunk.js.map +0 -1
- package/dist/scripts/1867-0823a787c3-lite.chunk.js.map +0 -1
- package/dist/scripts/3268-aa893d0068-lite.chunk.js +0 -2
- package/dist/scripts/3268-aa893d0068-lite.chunk.js.map +0 -1
- package/dist/scripts/4208-3ba21abb7c-lite.chunk.js +0 -2
- package/dist/scripts/4208-3ba21abb7c-lite.chunk.js.map +0 -1
- package/dist/scripts/4598-f5120153c2-lite.chunk.js +0 -2
- package/dist/scripts/4598-f5120153c2-lite.chunk.js.map +0 -1
- package/dist/scripts/6475-502e390010-lite.chunk.js +0 -2
- package/dist/scripts/6475-502e390010-lite.chunk.js.map +0 -1
- package/dist/scripts/6550-c621babbcb-lite.chunk.js +0 -2
- package/dist/scripts/6550-c621babbcb-lite.chunk.js.map +0 -1
- package/dist/scripts/6756-20c0ab9591-lite.chunk.js +0 -3
- package/dist/scripts/6756-20c0ab9591-lite.chunk.js.map +0 -1
- package/dist/scripts/6790-df00506bec-lite.chunk.js +0 -2
- package/dist/scripts/6790-df00506bec-lite.chunk.js.map +0 -1
- package/dist/scripts/7103-3b181ec69b-lite.chunk.js.map +0 -1
- package/dist/scripts/7148-50ccb48a44-lite.chunk.js.map +0 -1
- package/dist/scripts/7438-1162aba8b6-lite.chunk.js +0 -2
- package/dist/scripts/7438-1162aba8b6-lite.chunk.js.map +0 -1
- package/dist/scripts/8856-8ac95bf4e0-lite.chunk.js +0 -2
- package/dist/scripts/8856-8ac95bf4e0-lite.chunk.js.map +0 -1
- package/dist/scripts/9003-36ab592cc5-lite.chunk.js +0 -2
- package/dist/scripts/9003-36ab592cc5-lite.chunk.js.map +0 -1
- package/dist/scripts/9042-3092af11d5-lite.chunk.js +0 -2
- package/dist/scripts/9042-3092af11d5-lite.chunk.js.map +0 -1
- package/dist/scripts/9134-7037c2c47a-lite.chunk.js +0 -2
- package/dist/scripts/9134-7037c2c47a-lite.chunk.js.map +0 -1
- /package/dist/scripts/{4203-83f90f92f3-lite.chunk.js.LICENSE.txt → 3268-7be966dc82-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6756-20c0ab9591-lite.chunk.js.LICENSE.txt → 6756-3c7f911759-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8323-d6d1d07ce5-lite.chunk.js.LICENSE.txt → 8323-5694456903-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-58c25f6529.min.js.LICENSE.txt → bundle-941a464ef0.min.js.LICENSE.txt} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4208],{69087:(e,t,r)=>{r.d(t,{d:()=>C});var n=r(32735),a=r(38129),s=r(23481),i=r(75896),o=r(83914),c=r(8246),u=r(35223);function l(e){var t=e.answer;return n.createElement("div",{key:t.id,className:"".concat(function(e){switch(e){case c.N.Correct:return"bg-light-green";case c.N.Incorrect:return"bg-light-red";case c.N.PendingReview:return"bg-light-blue"}}(t.status)," rounded p-2 mb-2")},n.createElement("div",{className:"d-flex align-items-center gap-2"},t.status===c.N.Correct&&n.createElement(o.x,{svgName:u.vn.Check,className:"svg-container flex-shrink-0 text-success"}),t.status===c.N.Incorrect&&n.createElement(o.x,{svgName:u.vn.Close,className:"svg-container flex-shrink-0 text-danger"}),!e.customAnswer&&n.createElement("span",{className:e.textClassName},t.text)),e.children)}var m=s.T.encloseNamespace("shared.interactionResponses");function d(e){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d(e)}function v(e,t,r){return(t=function(e){var t=function(e){if("object"!=d(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=d(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==d(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var f=function(){return n.createElement(n.Fragment,null)},y=v(v(v(v(v(v(v({},a.Z9.Annotation,f),a.Z9.Image,f),a.Z9.MissingWord,function(e){return e.answers.length?n.createElement("ul",{className:"list-unstyled"},e.answers.map(function(e){return n.createElement("li",{key:e.id},n.createElement(l,{answer:e,textClassName:"bg-white p-1 border border-gray-300 rounded"}))})):n.createElement(n.Fragment,null)}),a.Z9.MultipleChoice,function(e){return e.answers.length?n.createElement("ul",{className:"list-unstyled"},e.answers.map(function(e){return n.createElement("li",{key:e.id},n.createElement(l,{answer:e}))})):n.createElement(n.Fragment,null)}),a.Z9.TrueOrFalse,function(e){var t=i.m.first(e.answers);return t?n.createElement(l,{answer:t}):n.createElement(n.Fragment,null)}),a.Z9.ShortAnswer,function(e){var t=i.m.first(e.answers);return t?n.createElement(l,{answer:t},e.children):n.createElement(n.Fragment,null)}),a.Z9.Illustration,function(e){var t=i.m.first(e.answers);return t?n.createElement(l,{answer:t,customAnswer:!0},n.createElement("div",{className:"ratio ratio-16x9"},n.createElement("img",{className:"img-fluid bg-white border rounded h-100 w-100",src:t.text,alt:"".concat(m("illustrationAlt"),": ").concat(e.interaction.name)})),e.children):n.createElement(n.Fragment,null)}),g=r(97408),p=r(44526),w=r(56151),h=r(3894),b=r(69737),E=r(83140),I=r(80845),S=r(64818);const k={avatarContainer:"O7oaA"};function C(e){var t,r,a,s,i,o,c,u=y[e.interaction.typeId];if(!u)return n.createElement(n.Fragment,null);var l=(0,I.j_)(e.studentResults),m=(0,I.f6)(e.interaction.id,l),d=E.A.isInteractionCorrect(e.interaction,l);return n.createElement("div",{className:"position-relative"},n.createElement("div",{className:"rounded ".concat(null!==(t=e.className)&&void 0!==t?t:"")},n.createElement("div",{className:"d-flex"},!!e.showStudentDetails&&n.createElement("div",{className:"me-2"},n.createElement("div",{className:k.avatarContainer},n.createElement(g.q,{imageCdnUrl:e.imageCdnUrl,initials:e.anonymisedUserName?S.l.getInitialsFromFullName(e.anonymisedUserName):S.l.getInitials(null===(r=e.studentResults.user)||void 0===r?void 0:r.name,null===(a=e.studentResults.user)||void 0===a?void 0:a.surname),imageUrl:e.anonymisedUserName?null:null===(i=null===(s=e.studentResults.user)||void 0===s?void 0:s.avatar)||void 0===i?void 0:i.url,showAnonymousUser:!!(null===(c=null===(o=e.studentResults)||void 0===o?void 0:o.user)||void 0===c?void 0:c.sessionId)}))),n.createElement("div",{className:"flex-grow-1"},!!e.showStudentDetails&&n.createElement(w.U,{studentResults:e.studentResults,correctness:d,anonymisedUserName:e.anonymisedUserName}),n.createElement("div",{className:"d-flex justify-content-between"},n.createElement("div",{className:"flex-grow-1 mb-2 ".concat(e.responseComponentClass?e.responseComponentClass:"")},m?n.createElement(u,{interaction:e.interaction,answers:m.answers,imageCdnUrl:e.imageCdnUrl,user:e.studentResults.user,showFeedback:e.showFeedback,showAvatar:e.showAvatar},n.createElement(h.Z,{studentAttempt:m,correctness:d,markInteraction:e.markInteraction,markedStatus:e.markedStatus})):n.createElement(b.R,null)),!e.showStudentDetails&&n.createElement(p.Y,{correctness:d}))))))}},93479:(e,t,r)=>{r.d(t,{I:()=>i});var n=r(99940);function a(e,t,r){if(!t)return e;var n="".concat(e,":").concat(t.start,":").concat(t.end),a=Array.isArray(t.userId)?t.userId.sort().join(":"):t.userId,s=Array.isArray(t.groupId)?t.groupId.sort().join(":"):t.groupId,i=Array.isArray(t.customerId)?t.customerId.sort().join(":"):t.customerId;return a&&(n+=":".concat(a)),s&&(n+=":".concat(s)),i&&(n+=":".concat(i)),r&&(n+=":".concat(r)),n}function s(e,t){return{currentUserId:e.id,currentCustomerId:e.customerId,dateRange:t?{start:t.start,end:t.end}:void 0,userIds:null==t?void 0:t.userId,classroomsAndGroups:null==t?void 0:t.groupId}}var i={interactiveResultSet:function(e,t,r,i,o,c,u,l){return{url:o?"/api/domain/v3/analytics/interactives/".concat(e,"/metadata/").concat(t):"/api/domain/v2/analytics/interactives/".concat(e,"/metadata/").concat(t),key:a("interactive:result:set:".concat(e,":").concat(t),i),data:s(r,i),type:n.k.POST,normalize:!1,success:c,error:u,always:l}},mark:function(e,t,r,a,s,i,o){return{url:"/api/domain/v1/analytics/answers/".concat(r),key:"mark:answer:".concat(r,":").concat(a.resultId),type:n.k.PUT,data:a,normalize:!1,invalidationKeys:"interactive:result:set:".concat(e,":").concat(t),success:s,error:i,always:o}},pendingReviews:function(e){return{url:"/api/domain/v1/analytics/interactives/pending-reviews/summary",key:"interactives:pending:reviews",type:n.k.POST,data:e}},interactiveResultsReport:function(e){return{url:"/api/domain/v3/analytics/interactives/report",key:"interactive:results:report",data:e,type:n.k.POST,normalize:!1}}}},9193:(e,t,r)=>{r.d(t,{D:()=>v});var n=r(32735),a=r(70680),s=r(23481),i=r(20354),o=r(93479),c=r(39157),u=r(69883);function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var d=s.T.encloseNamespace("reportsShared.dataHooks"),v=function(e,t,r){var s,v,f=(s=(0,n.useState)({}),v=2,function(e){if(Array.isArray(e))return e}(s)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,s,i,o=[],c=!0,u=!1;try{if(s=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=s.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(u)throw a}}return o}}(s,v)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?m(e,t):void 0}}(s,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.")}()),y=f[0],g=f[1],p=(0,a.I0)(),w=(0,u.Z)();return{markedAnswers:y,addMarkedAnswers:function(e,t){e.forEach(function(e){g(function(r){return Object.assign(Object.assign({},r),function(e,t,r){return(t=function(e){var t=function(e){if("object"!=l(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=l(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==l(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}({},(0,c.UU)(e),Object.assign(Object.assign({},e),{status:t})))})})},submitMarkedAnswers:function(){var n=Object.keys(y).map(function(e){return y[e]});if(n.length){var a=0,s=0;n.forEach(function(r){var n=r.id,a=r.resultId,s=r.questionId,l=r.status;i.a.fetch(p,o.I.mark(e,t,n,{id:n,resultId:a,questionId:s,status:l},c,null,u))})}function c(){s++}function u(){var e,t;++a===n.length&&(e="",t=!1,0===s&&(e=d("error",{smartCount:n.length}),t=!0),s<a&&(e=d("success",{smartCount:s})+" ".concat(d("partialError",{smartCount:a-s}))),s===a&&(e=d("success",{smartCount:s})),t?w.error(e):w.success(e),g({}),r&&r())}}}}},39157:(e,t,r)=>{r.d(t,{HI:()=>d,R6:()=>u,Rt:()=>f,UU:()=>m,Zs:()=>l,nq:()=>v});var n=r(75896),a=r(94892),s=r(28972),i=r(8246),o=r(83140),c=r(80845);function u(e,t,r){var s={markingRequired:[],lowScore:[],highScore:[],completed:[],notCompleted:[]},i=(0,c.Q)(e),o=new Set(i.map(function(e){return e.id}));t.students.forEach(function(t){var i=Object.assign(Object.assign({},t),{summary:f(e,t)});i.summary.awaitingMarking?s.markingRequired.push(i):n.m.last(t.results).attempts.filter(function(e){var t;return!!o.has(null===(t=null==e?void 0:e.answers[0])||void 0===t?void 0:t.questionId)}).length===o.size?(s.completed.push(i),i.summary.percentCorrect>=((null==r?void 0:r.HIGH)||a.i.HIGH)&&s.highScore.push(i),i.summary.percentCorrect<((null==r?void 0:r.MODERATE)||a.i.MODERATE)&&s.lowScore.push(i)):s.notCompleted.push(i)});var u=n.m.sortBy(s.lowScore,function(e){return e.summary.percentCorrect}),l=n.m.sortBy(s.highScore,function(e){return-e.summary.percentCorrect});return Object.assign(Object.assign({},s),{lowScore:u,highScore:l})}function l(e,t){return(0,c.Wn)(e).find(function(e){return e.id.toString()===t.toString()})}function m(e){return"".concat(e.questionId,":").concat(e.resultId)}function d(e,t,r){var n=(0,c.j_)(t),a=(0,c.f6)(e,n);return(null==a?void 0:a.answers.every(function(e){var t;return(null===(t=r[m(e)])||void 0===t?void 0:t.status)===i.N.Correct}))?i.N.Correct:(null==a?void 0:a.answers.every(function(e){var t;return(null===(t=r[m(e)])||void 0===t?void 0:t.status)===i.N.Incorrect}))?i.N.Incorrect:void 0}function v(e,t){var r=t.students.length,n=0,a=0,i=0,u=0,l=0;return t.students.forEach(function(t){var r=(0,c.j_)(t);if(r){l+=t.results.length;var m=o.A.isInteractionCorrect(e,r);m===s.w.Correct&&n++,m===s.w.UnAnswered&&i++,m===s.w.AwaitingMarking&&u++,m!==s.w.UnAnswered&&a++}}),{percentCorrect:r>0?n/r:0,correct:n,answered:a,unanswered:i,awaitingMarking:u,attempts:l}}function f(e,t){var r=(0,c.j_)(t),n=(0,c.Q)(e),a=n.length,i=0,u=0;n.forEach(function(e){var t=o.A.isInteractionCorrect(e,r);t===s.w.Correct&&i++,t===s.w.AwaitingMarking&&u++});var l=a>0?i/a:0,m=new Set(n.map(function(e){return e.id})),d=r.attempts.filter(function(e){var t;return!!m.has(null===(t=null==e?void 0:e.answers[0])||void 0===t?void 0:t.questionId)}).length;return{answered:d,attempts:t.results.length,unanswered:a-d,percentCorrect:l,correct:i,awaitingMarking:u}}}}]);
|
|
2
|
-
//# sourceMappingURL=4208-3ba21abb7c-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/4208-3ba21abb7c-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/components/AnswerContainer.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/components/IllustrationResponse.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/components/MissingWordResponse.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/components/MultipleChoiceResponse.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/components/TrueOrFalseResponse.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/components/ShortAnswerResponse.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/interaction-response-item.scss","file:///app/packages/libs/shared/src/apps/analytics/components/questions-list/interaction-response-item/InteractionResponseItem.tsx","file:///app/packages/libs/shared/src/utils/AnalyticsRequestUtils.ts","file:///app/packages/libs/shared/src/apps/analytics/flight-requests/InteractiveResultsRequests.ts","file:///app/packages/libs/shared/src/apps/analytics/hooks/UseMarkAnswers.ts","file:///app/packages/libs/shared/src/apps/analytics/utils/InteractiveUtils.ts"],"sourcesContent":["import React from 'react';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { StudentAnswer } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\ninterface AnswerContainerProps extends React.PropsWithChildren {\n answer: StudentAnswer;\n textClassName?: string;\n customAnswer?: boolean;\n}\n\nexport function AnswerContainer(props: AnswerContainerProps) {\n const { answer } = props;\n\n function getBgColour(status: InteractiveAnswerStatus) {\n switch (status) {\n case InteractiveAnswerStatus.Correct: return 'bg-light-green';\n case InteractiveAnswerStatus.Incorrect: return 'bg-light-red';\n case InteractiveAnswerStatus.PendingReview: return 'bg-light-blue';\n }\n }\n\n return (\n <div key={answer.id} className={`${getBgColour(answer.status)} rounded p-2 mb-2`}>\n <div className='d-flex align-items-center gap-2'>\n {answer.status === InteractiveAnswerStatus.Correct && <SvgContainer svgName={cvSvgLibrary.Check} className='svg-container flex-shrink-0 text-success' />}\n {answer.status === InteractiveAnswerStatus.Incorrect && <SvgContainer svgName={cvSvgLibrary.Close} className='svg-container flex-shrink-0 text-danger' />}\n {!props.customAnswer && <span className={props.textClassName}>{answer.text}</span>}\n </div>\n {props.children}\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnswerContainer } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/components/AnswerContainer';\nimport { ResponseItemComponentProps } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup';\n\nconst namespace = 'shared.interactionResponses';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function IllustrationResponse(props: ResponseItemComponentProps): JSX.Element {\n const answer = ArrayHelper.first(props.answers);\n\n if (!answer)\n return <></>;\n\n return (\n <AnswerContainer answer={answer} customAnswer>\n <div className='ratio ratio-16x9'>\n <img\n className='img-fluid bg-white border rounded h-100 w-100'\n src={answer.text}\n alt={`${getPhrase('illustrationAlt')}: ${props.interaction.name}`}\n />\n </div>\n {props.children}\n </AnswerContainer>\n );\n}","import React from 'react';\n\nimport { Interaction, InteractionTypeId, StudentAnswer, User } from 'libs/shared/interfaces';\n\nimport { IllustrationResponse } from './components/IllustrationResponse';\nimport { MissingWordResponse } from './components/MissingWordResponse';\nimport { MultipleChoiceResponse } from './components/MultipleChoiceResponse';\nimport { ShortAnswerResponse } from './components/ShortAnswerResponse';\nimport { TrueOrFalseResponse } from './components/TrueOrFalseResponse';\n\nexport interface ResponseItemComponentProps extends React.PropsWithChildren {\n interaction: Interaction;\n answers: StudentAnswer[];\n imageCdnUrl: string;\n user: User;\n showFeedback?: boolean;\n showAvatar?: boolean;\n anonymisedUserName?: string;\n}\nconst NoResponseRequired = () => <></>;\n\nexport const ResponseItemComponentLookup: {\n [typeId: number]: (props: ResponseItemComponentProps) => JSX.Element\n} = {\n [InteractionTypeId.Annotation]: NoResponseRequired,\n [InteractionTypeId.Image]: NoResponseRequired,\n [InteractionTypeId.MissingWord]: MissingWordResponse,\n [InteractionTypeId.MultipleChoice]: MultipleChoiceResponse,\n [InteractionTypeId.TrueOrFalse]: TrueOrFalseResponse,\n [InteractionTypeId.ShortAnswer]: ShortAnswerResponse,\n [InteractionTypeId.Illustration]: IllustrationResponse\n};","import React from 'react';\n\nimport { AnswerContainer } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/components/AnswerContainer';\nimport { ResponseItemComponentProps } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup';\n\n\nexport function MissingWordResponse(props: ResponseItemComponentProps) {\n if (!props.answers.length) return <></>;\n\n return (\n <ul className='list-unstyled'>\n {props.answers.map(answer => (\n <li key={answer.id}>\n <AnswerContainer\n answer={answer}\n textClassName='bg-white p-1 border border-gray-300 rounded'\n />\n </li>\n ))}\n </ul>\n );\n}","import React from 'react';\n\nimport { AnswerContainer } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/components/AnswerContainer';\nimport { ResponseItemComponentProps } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup';\n\nexport function MultipleChoiceResponse(props: ResponseItemComponentProps) {\n if (!props.answers.length) return <></>;\n\n return (\n <ul className='list-unstyled'>\n {props.answers.map(answer => (\n <li key={answer.id}>\n <AnswerContainer answer={answer} />\n </li>\n ))}\n </ul>\n );\n}","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnswerContainer } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/components/AnswerContainer';\nimport { ResponseItemComponentProps } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup';\n\nexport function TrueOrFalseResponse(props: ResponseItemComponentProps) {\n const answer = ArrayHelper.first(props.answers);\n\n if (!answer)\n return <></>;\n\n return (\n <AnswerContainer answer={answer} />\n );\n}","import React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnswerContainer } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/components/AnswerContainer';\nimport { ResponseItemComponentProps } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup';\n\nexport function ShortAnswerResponse(props: ResponseItemComponentProps): JSX.Element {\n const answer = ArrayHelper.first(props.answers);\n\n if (!answer)\n return <></>;\n\n return (\n <AnswerContainer answer={answer}>\n {props.children}\n </AnswerContainer>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatarContainer\":\"O7oaA\"};","import React from 'react';\n\nimport { ResponseItemComponentLookup } from 'libs/shared/apps/analytics/components/questions-list/interaction-response-item/ResponseItemComponentLookup';\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { InteractionResponseCorrectness } from 'libs/shared/components/interaction-response/InteractionResponseCorrectness';\nimport { InteractionStudentDetailsHeader } from 'libs/shared/components/interaction-response/InteractionStudentDetailsHeader';\nimport { MarkResponse } from 'libs/shared/components/interaction-response/MarkResponse';\nimport { NoResponse } from 'libs/shared/components/interaction-response/response-types/NoResponse';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, StudentAnswer, StudentResults } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { getStudentAttempt, getStudentResult } from 'libs/shared/utils/InteractiveHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './interaction-response-item.scss';\n\ninterface InteractionResponseProps {\n interaction: Interaction;\n studentResults: StudentResults;\n imageCdnUrl: string;\n markInteraction: (answers: StudentAnswer[], status: InteractiveAnswerStatus) => void;\n markedStatus?: InteractiveAnswerStatus;\n showStudentDetails?: boolean;\n className?: string;\n showFeedback?: boolean;\n showAvatar?: boolean;\n anonymisedUserName?: string;\n responseComponentClass?: string;\n}\n\nexport function InteractionResponseItem(props: InteractionResponseProps): JSX.Element {\n const ResponseItemComponent = ResponseItemComponentLookup[props.interaction.typeId];\n\n if (!ResponseItemComponent)\n return <></>;\n\n const result = getStudentResult(props.studentResults);\n\n const studentAttempt = getStudentAttempt(props.interaction.id, result);\n\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(props.interaction, result);\n\n return (\n <div className='position-relative'>\n <div className={`rounded ${props.className ?? ''}`}>\n <div className='d-flex'>\n {!!props.showStudentDetails &&\n <div className='me-2'>\n <div className={styles.avatarContainer}>\n <Avatar\n imageCdnUrl={props.imageCdnUrl}\n initials={props.anonymisedUserName\n ? UserHelper.getInitialsFromFullName(props.anonymisedUserName)\n : UserHelper.getInitials(props.studentResults.user?.name, props.studentResults.user?.surname)\n }\n imageUrl={props.anonymisedUserName ? null : props.studentResults.user?.avatar?.url}\n showAnonymousUser={!!props.studentResults?.user?.sessionId}\n />\n </div>\n \n </div>\n }\n <div className='flex-grow-1'>\n {!!props.showStudentDetails &&\n <InteractionStudentDetailsHeader\n studentResults={props.studentResults}\n correctness={correctness}\n anonymisedUserName={props.anonymisedUserName}\n />\n }\n <div className='d-flex justify-content-between'>\n <div className={`flex-grow-1 mb-2 ${props.responseComponentClass ? props.responseComponentClass : ''}`}>\n {studentAttempt\n ? <ResponseItemComponent\n interaction={props.interaction}\n answers={studentAttempt.answers}\n imageCdnUrl={props.imageCdnUrl}\n user={props.studentResults.user}\n showFeedback={props.showFeedback}\n showAvatar={props.showAvatar}\n >\n <MarkResponse\n studentAttempt={studentAttempt}\n correctness={correctness}\n markInteraction={props.markInteraction}\n markedStatus={props.markedStatus}\n />\n </ResponseItemComponent>\n : <NoResponse />\n }\n </div>\n {!props.showStudentDetails &&\n <InteractionResponseCorrectness correctness={correctness} />\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}","import { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nexport function getAnalyticsRequestKey(baseKey: string, filter: AnalyticsRequestFilter, extra?: string): string {\n if (!filter)\n return baseKey;\n\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 const customerIdKey = Array.isArray(filter.customerId) ? filter.customerId.sort().join(':') : filter.customerId;\n\n if (userIdKey)\n key += `:${userIdKey}`;\n\n if (groupIdKey)\n key += `:${groupIdKey}`;\n\n if (customerIdKey)\n key += `:${customerIdKey}`;\n\n if (extra)\n key += `:${extra}`;\n\n return key;\n}","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: filter ? { start: filter.start, end: filter.end } : undefined,\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 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: '/api/domain/v3/analytics/interactives/report',\n key: 'interactive:results:report',\n data,\n type: HttpVerbs.POST,\n normalize: false\n };\n }\n};","import { useState } from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { InteractiveResultsRequests } from 'libs/shared/apps/analytics/flight-requests/InteractiveResultsRequests';\nimport { getMarkedAnswerId } from 'libs/shared/apps/analytics/utils/InteractiveUtils';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { StudentAnswer } from 'libs/shared/interfaces';\n\nconst getPhrase = LanguageService.encloseNamespace('reportsShared.dataHooks');\n\nexport type MarkedAnswerHash = { [id: string]: StudentAnswer };\n\n/**\n * This hook manages the storing of a marked answer hash in state and then the submitting\n * of those answers via an api call.\n */\nexport const useMarkAnswers = (interactiveId: string, interactiveMetadataId: string, onDone?: () => void) => {\n const [ markedAnswers, setMarkedAnswers ] = useState<MarkedAnswerHash>({});\n\n const dispatch = useDispatch();\n const alerts = useAlerts();\n\n function addMarkedAnswers(answers: StudentAnswer[], status: InteractiveAnswerStatus): void {\n answers.forEach(a => {\n setMarkedAnswers(m => ({ ...m, [getMarkedAnswerId(a)]: { ...a, status } }));\n });\n }\n\n function submitMarkedAnswers(): void {\n const answers = Object.keys(markedAnswers).map(key => markedAnswers[key]);\n\n if (!answers.length)\n return;\n\n let completeCount = 0;\n let successCount = 0;\n\n function onSuccess(): void {\n successCount++;\n }\n\n function onAlways(): void {\n completeCount++;\n\n if (completeCount === answers.length)\n onComplete();\n }\n\n function onComplete(): void {\n let alertMessage = '';\n let useErrorAlert = false;\n\n if (successCount === 0) {\n alertMessage = getPhrase('error', { smartCount: answers.length });\n useErrorAlert = true;\n }\n\n if (successCount < completeCount) {\n alertMessage = getPhrase('success', { smartCount: successCount })\n + ` ${getPhrase('partialError', { smartCount: completeCount - successCount })}`;\n }\n\n if (successCount === completeCount) {\n alertMessage = getPhrase('success', { smartCount: successCount });\n }\n\n useErrorAlert\n ? alerts.error(alertMessage)\n : alerts.success(alertMessage);\n\n setMarkedAnswers({});\n\n onDone && onDone();\n }\n\n answers.forEach(({ id, resultId, questionId, status }) => {\n Flight.fetch(dispatch, InteractiveResultsRequests.mark(\n interactiveId,\n interactiveMetadataId,\n id,\n { id, resultId, questionId, status },\n onSuccess,\n null,\n onAlways\n ));\n });\n }\n\n return {\n markedAnswers,\n addMarkedAnswers,\n submitMarkedAnswers\n };\n};","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { ResultsSummary } from 'libs/shared/apps/analytics/interfaces/ResultsSummary';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { ScoreThresholdDefaults, ScoreThresholds } from 'libs/shared/constants/ScoreThresholds';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, StudentAnswer, StudentResults } from 'libs/shared/interfaces';\nimport { Interactive, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { flattenInteractions, getInteractions, getStudentAttempt, getStudentResult } from 'libs/shared/utils/InteractiveHelper';\n\ninterface StudentGroups {\n markingRequired: StudentResultsWithSummary[];\n lowScore: StudentResultsWithSummary[];\n highScore: StudentResultsWithSummary[];\n completed: StudentResultsWithSummary[];\n notCompleted: StudentResultsWithSummary[];\n}\n\nexport function groupStudents(\n interactive: Interactive,\n results: InteractiveResultSet,\n scoreThreshold?: ScoreThresholds\n): StudentGroups {\n const groups: StudentGroups = {\n markingRequired: [],\n lowScore: [],\n highScore: [],\n completed: [],\n notCompleted: []\n };\n\n const interactions = getInteractions(interactive);\n const interactionIds = new Set(interactions.map(i => i.id));\n \n results.students.forEach(s => {\n const withSummary = {\n ...s,\n summary: getStudentResultsSummary(interactive, s)\n };\n \n if (withSummary.summary.awaitingMarking) {\n groups.markingRequired.push(withSummary);\n return;\n }\n\n const result = ArrayHelper.last(s.results);\n const answeredInteractions = result.attempts.filter(a => !!interactionIds.has(a?.answers[0]?.questionId)).length;\n\n if (answeredInteractions === interactionIds.size) {\n groups.completed.push(withSummary);\n } else {\n groups.notCompleted.push(withSummary);\n return;\n }\n \n if (withSummary.summary.percentCorrect >= (scoreThreshold?.HIGH || ScoreThresholdDefaults.HIGH))\n groups.highScore.push(withSummary);\n \n if (withSummary.summary.percentCorrect < (scoreThreshold?.MODERATE || ScoreThresholdDefaults.MODERATE))\n groups.lowScore.push(withSummary);\n });\n \n const sortedLowScore = ArrayHelper.sortBy(groups.lowScore, s => s.summary.percentCorrect);\n const sortedHighScore = ArrayHelper.sortBy(groups.highScore, s => -s.summary.percentCorrect);\n \n return {\n ...groups,\n lowScore: sortedLowScore,\n highScore: sortedHighScore\n };\n}\n\nexport function getInteractionById(interactive: Interactive, interactionId: string): Interaction {\n const flattenedInteractions = flattenInteractions(interactive);\n return flattenedInteractions.find(i => i.id.toString() === interactionId.toString());\n}\n\n/**\n * We need to use the question and result ids as a list of one student's responses\n * to multiple questions will all have the same result id and a list of multiple\n * students responses to one question will all have the same questionId.\n */\nexport function getMarkedAnswerId(answer: StudentAnswer): string {\n return `${answer.questionId}:${answer.resultId}`;\n}\n\nexport function getMarkedStatus(\n interactionId: string,\n studentResults: StudentResults,\n markedAnswers: MarkedAnswerHash\n): InteractiveAnswerStatus {\n const result = getStudentResult(studentResults);\n const studentResponse = getStudentAttempt(interactionId, result);\n\n const isMarkedCorrect = studentResponse?.answers.every(a => {\n return markedAnswers[getMarkedAnswerId(a)]?.status === InteractiveAnswerStatus.Correct;\n });\n\n if (isMarkedCorrect)\n return InteractiveAnswerStatus.Correct;\n\n const isMarkedIncorrect = studentResponse?.answers.every(a => {\n return markedAnswers[getMarkedAnswerId(a)]?.status === InteractiveAnswerStatus.Incorrect;\n });\n\n if (isMarkedIncorrect)\n return InteractiveAnswerStatus.Incorrect;\n}\n\nexport function getInteractionResultsSummary(\n interaction: Interaction,\n results: InteractiveResultSet\n): ResultsSummary {\n const numStudents = results.students.length;\n let numCorrect = 0;\n let answered = 0;\n let unanswered = 0;\n let awaitingMarking = 0;\n let attempts = 0;\n\n results.students.forEach(s => {\n const result = getStudentResult(s);\n\n if (!result)\n return;\n\n attempts = attempts + s.results.length;\n\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(interaction, result);\n\n if (correctness === InteractionCorrectness.Correct)\n numCorrect++;\n\n if (correctness === InteractionCorrectness.UnAnswered)\n unanswered++;\n\n if (correctness === InteractionCorrectness.AwaitingMarking)\n awaitingMarking++;\n\n if (correctness !== InteractionCorrectness.UnAnswered)\n answered++;\n });\n\n\n const percentCorrect = numStudents > 0\n ? numCorrect / numStudents\n : 0;\n\n return {\n percentCorrect,\n correct: numCorrect,\n answered,\n unanswered,\n awaitingMarking,\n attempts\n };\n}\n\nexport function getStudentResultsSummary(interactive: Interactive, studentResults: StudentResults): ResultsSummary {\n const result = getStudentResult(studentResults);\n\n const interactions = getInteractions(interactive);\n\n const numInteractions = interactions.length;\n\n let numCorrect = 0;\n let awaitingMarking = 0;\n\n interactions.forEach(i => {\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(i, result);\n\n if (correctness === InteractionCorrectness.Correct)\n numCorrect++;\n\n if (correctness === InteractionCorrectness.AwaitingMarking)\n awaitingMarking++;\n });\n\n const percentCorrect = numInteractions > 0 ? numCorrect / numInteractions : 0;\n\n /**\n * Our interactions list has images and annotations filtered out.\n * We built a map of valid questions, so that we can calculate the unswered accurately.\n * We're doing this because of a bug that caused annotations and images to record answers in the player.\n * - Sha\n */\n const interactionIds = new Set(interactions.map(i => i.id));\n const answeredInteractions = result.attempts.filter(a => !!interactionIds.has(a?.answers[0]?.questionId)).length;\n\n return {\n answered: answeredInteractions,\n attempts: studentResults.results.length,\n unanswered: numInteractions - answeredInteractions,\n percentCorrect,\n correct: numCorrect,\n awaitingMarking\n };\n}"],"names":["AnswerContainer","props","answer","key","id","className","status","InteractiveAnswerStatus","getBgColour","SvgContainer","svgName","customAnswer","textClassName","text","children","getPhrase","LanguageService","NoResponseRequired","ResponseItemComponentLookup","answers","length","map","ArrayHelper","src","alt","interaction","name","InteractionResponseItem","ResponseItemComponent","typeId","result","studentResults","studentAttempt","correctness","InteractiveCorrectnessHelper","showStudentDetails","Avatar","imageCdnUrl","initials","anonymisedUserName","UserHelper","user","surname","imageUrl","avatar","url","showAnonymousUser","sessionId","InteractionStudentDetailsHeader","responseComponentClass","showFeedback","showAvatar","MarkResponse","markInteraction","markedStatus","NoResponse","InteractionResponseCorrectness","getAnalyticsRequestKey","baseKey","filter","extra","start","end","userIdKey","Array","isArray","userId","sort","join","groupIdKey","groupId","customerIdKey","customerId","getInteractiveResultFilters","currentUser","currentUserId","currentCustomerId","dateRange","undefined","userIds","classroomsAndGroups","InteractiveResultsRequests","interactiveResultSet","interactiveId","interactiveMetadataId","includePublicResults","success","error","always","data","type","HttpVerbs","normalize","mark","answerId","resultId","invalidationKeys","pendingReviews","interactiveResultsReport","useMarkAnswers","onDone","useState","markedAnswers","setMarkedAnswers","dispatch","alerts","addMarkedAnswers","forEach","a","m","submitMarkedAnswers","Object","keys","completeCount","successCount","questionId","I","onSuccess","onAlways","alertMessage","useErrorAlert","smartCount","groupStudents","interactive","results","scoreThreshold","groups","markingRequired","lowScore","highScore","completed","notCompleted","interactions","interactionIds","Set","i","students","s","withSummary","summary","getStudentResultsSummary","awaitingMarking","push","attempts","has","size","percentCorrect","HIGH","MODERATE","sortedLowScore","sortedHighScore","getInteractionById","interactionId","find","toString","getMarkedAnswerId","getMarkedStatus","studentResponse","every","getInteractionResultsSummary","numStudents","numCorrect","answered","unanswered","correct","numInteractions","answeredInteractions"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4598],{54405:(e,a,t)=>{t.d(a,{X:()=>n});var n={interactive:function(){return{url:"/mocks/insights/interactive.json",key:"demo:interactive",normalize:!1}},interactiveMetadata:function(){return{url:"/mocks/insights/interactive-metadata.json",key:"demo:interactive:metadata",normalize:!1}},interactiveResults:function(){return{url:"/mocks/insights/interactive-results.json",key:"demo:interactive:results",normalize:!1}},videoViews:function(){return{url:"/mocks/insights/video-views.json",key:"demo:video:views",normalize:!1}},users:function(){return{url:"/mocks/insights/users.json",key:"demo:users",normalize:!1}},individualHeatmap:function(){return{url:"/mocks/insights/individual-heatmap.json",key:"demo:individual:heatmap",normalize:!1}},aggregateHeatmap:function(){return{url:"/mocks/insights/aggregate-heatmap.json",key:"demo:aggregate:heatmap",normalize:!1}}}},18006:(e,a,t)=>{t.d(a,{c:()=>n,q:()=>i});var n="D8qRe7",i="GRWx6w"},9566:(e,a,t)=>{t.d(a,{G6:()=>m,GJ:()=>v,VE:()=>h});var n=t(23481),i=t(110),r=t(33518),s=t(2510),o=t(4594),c=t(35223),d=t(14070),l=t(97291),u=n.T.encloseNamespace("myShares.demoInsights"),m={type:s.y.Link,privacy:r.e.JustMySchool,objectId:"0",objectTypeId:o.E.Interactive,viewCount:28,accessCount:15,dateCreated:(new Date).toISOString(),expireDate:null,link:{shortenedEmbedUrl:"",shortenedUrl:""},shareId:"0",ownerCustomerId:0,ownerId:0,recipients:[],options:{preventScrubbing:!1,immediateFeedback:!1}},v={share:m,sharedObject:null,shareRecipients:null,dateShared:i.O.subtract(new Date,7,"days").toISOString()},g={application:l.O.MY_SHARES,action:d.e.MyShares.INTERACTIVE_OVERVIEW_DEMO},h={svgName:c.vn.Analytics,label:u("demoInsights"),appLink:g,group:"insights",className:"btn btn-outline-dark"}},44183:(e,a,t)=>{t.r(a),t.d(a,{InsightsHeatmapDemoView:()=>S});var n=t(32735),i=t(23481),r=t(2948),s=t(20354),o=t(26025),c=t(60051),d=t(39151),l=t(54405),u=t(47812),m=t(31949),v=t(93322),g=t(79612),h=t(86702),p=t(9540),y=t(17132),f=t(18006),b=t(9566),k=t(10447);function w(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 j=i.T.encloseNamespace("shared.insightsHeatmap");function S(){var e,a,t,i,S,I,E,O=(I=(0,r.D)(h.y.ANONYMISE_USERS),E=1,function(e){if(Array.isArray(e))return e}(I)||function(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,i,r,s,o=[],c=!0,d=!1;try{if(r=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;c=!1}else for(;!(c=(n=r.call(t)).done)&&(o.push(n.value),o.length!==a);c=!0);}catch(e){d=!0,i=e}finally{try{if(!c&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(d)throw i}}return o}}(I,E)||function(e,a){if(e){if("string"==typeof e)return w(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)?w(e,a):void 0}}(I,E)||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,v.F)();var A=s.a.useBasicFetch(m.N.currentUser()),D=s.a.useBasicFetch(l.X.interactiveMetadata()),B=s.a.useBasicFetch(d.L.config()),F=o.B.getAudienceAppLinkParams(),R=o.B.getDateRangeAppLinkParams(),C=s.a.useBasicFetch(l.X.aggregateHeatmap()),M=s.a.useBasicFetch(l.X.individualHeatmap()),N=s.a.useBasicFetch(l.X.users()),L=s.a.useBasicFetch(l.X.videoViews()),V=s.a.useBasicFetch(D.data&&u.k.createViewKey(function(){var e;return(null===(e=B.data)||void 0===e?void 0:e.liteUrl.includes("staging"))?f.c:f.q}(),c.f.Share));(0,g.M)({title:D.data?j("pageTitle",{video:null===(e=D.data)||void 0===e?void 0:e.name}):null});var _=!!(A.data&&L.data&&D.data&&C.data&&V.data&&N.data),z=!!M.data,G=Object.assign(Object.assign({},F),R),H=Object.assign(Object.assign({},b.G6),{objectId:null===(a=D.data)||void 0===a?void 0:a.id});return n.createElement("div",{className:"px-3"},n.createElement(p.j,{video:D.data,tabs:(0,k.aq)(null===(t=D.data)||void 0===t?void 0:t.id,"heatmap",G),dateRangeAppLinkParams:R,share:H,yearGroups:[],isDemo:!0}),n.createElement(y.w,{aggregateEngagement:C.data,individualEngagement:null===(i=M.data)||void 0===i?void 0:i.data,yearGroups:null===(S=L.data)||void 0===S?void 0:S.yearGroupCount,config:B.data,users:N.data,viewKey:V.data,hasDataLoaded:_,tableDataLoaded:z,anonymiseUsers:O}))}}}]);
|
|
2
|
-
//# sourceMappingURL=4598-f5120153c2-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/4598-f5120153c2-lite.chunk.js","mappings":"oIAEO,IAAMA,EAAuB,CAClCC,YAAW,WACT,MAAO,CACLC,IAAK,mCACLC,IAAK,mBACLC,WAAW,EAEf,EAEAC,oBAAmB,WACjB,MAAO,CACLH,IAAK,4CACLC,IAAK,4BACLC,WAAW,EAEf,EAEAE,mBAAkB,WAChB,MAAO,CACLJ,IAAK,2CACLC,IAAK,2BACLC,WAAW,EAEf,EAEAG,WAAU,WACR,MAAO,CACLL,IAAK,mCACLC,IAAK,mBACLC,WAAW,EAEf,EAEAI,MAAK,WACH,MAAO,CACLN,IAAK,6BACLC,IAAK,aACLC,WAAW,EAEf,EAEAK,kBAAiB,WACf,MAAO,CACLP,IAAK,0CACLC,IAAK,0BACLC,WAAW,EAEf,EAEAM,iBAAgB,WACd,MAAO,CACLR,IAAK,yCACLC,IAAK,yBACLC,WAAW,EAEf,E,2CCzDK,IAAMO,EAA8B,SAC9BC,EAA2B,Q,6ICgBlCC,EAAY,qBADA,yBAKLC,EAA6B,CACxCC,KAAM,SACNC,QAAS,iBACTC,SAAU,IACVC,aAAc,gBACdC,UAAW,GACXC,YAAa,GACbC,aAAa,IAAIC,MAAOC,cACxBC,WAAY,KACZC,KAAM,CACJC,kBAAmB,GACnBC,aAAc,IAEhBC,QAAS,IACTC,gBAAiB,EACjBC,QAAS,EACTC,WAAY,GACZC,QAAS,CACPC,kBAAkB,EAClBC,mBAAmB,IAIVC,EAAoD,CAC/DC,MAAOtB,EACPuB,aAAc,KACdC,gBAAiB,KACjBC,WAAY,aAAoB,IAAIjB,KA7BR,EA6BuC,QAAQC,eAGvEiB,EAAsC,CAC1CC,YAAa,cACbC,OAAQ,wCAGGC,EAAsC,CACjDC,QAAS,eACTC,MAAOhC,EAAU,gBACjBiC,QAASN,EACTO,MAAO,WACPC,UAAW,uB,6WCnCb,IACMnC,EAAY,qBADA,0BAGZ,SAAUoC,I,kBACPC,G,GAAkB,OAAsB,qB,EAA8B,E,o4BAAxD,IAErB,SAEA,IAAMC,EAAc,kBAAkC,mBAChDC,EAAQ,kBACZ,2BAGIC,EAAS,kBAA6B,cAEtCC,EAAwB,+BACxBC,EAAyB,gCAEzBC,EAAsB,kBAC1B,wBAGIC,EAAuB,kBAC3B,yBAGIjD,EAAQ,kBAAiC,aAEzCD,EAAa,kBAA6C,kBAE1DmD,EAAU,kBAAoCN,EAAMO,MACxD,kBAmBF,W,MACE,OAAe,QAAX,EAAAN,EAAOM,YAAI,eAAEC,QAAQC,SAAS,YAAmB,IAE9C,GACT,CAvB+BC,GAAwB,aAEvD,OAAmB,CAAEC,MAAOX,EAAMO,KAAO9C,EAAU,YAAa,CAAEuC,MAAiB,QAAV,EAAAA,EAAMO,YAAI,eAAEK,OAAU,OAE/F,IAAMC,KACFd,EAAYQ,MACZpD,EAAWoD,MACXP,EAAMO,MACNH,EAAoBG,MACpBD,EAAQC,MACRnD,EAAMmD,MAEJO,IAAoBT,EAAqBE,KAEzCQ,EAAS,OAAH,wBACPb,GACAC,GASCnB,EAAQ,OAAH,wBACN,MAAmB,CACtBnB,SAAoB,QAAV,EAAAmC,EAAMO,YAAI,eAAES,KAGxB,OACE,uBAAKpB,UAAU,QACb,gBAAC,IAAc,CACbI,MAAOA,EAAMO,KACbU,MAAM,QAAyC,QAAV,EAAAjB,EAAMO,YAAI,eAAES,GAAI,UAAWD,GAChEZ,uBAAwBA,EACxBnB,MAAOA,EACPkC,WAAY,GACZC,QAAM,IAGR,gBAAC,IAAe,CACdf,oBAAqBA,EAAoBG,KACzCF,qBAA+C,QAAzB,EAAAA,EAAqBE,YAAI,eAAEA,KACjDW,WAA2B,QAAf,EAAA/D,EAAWoD,YAAI,eAAEa,eAC7BnB,OAAQA,EAAOM,KACfnD,MAAOA,EAAMmD,KACbD,QAASA,EAAQC,KACjBM,cAAeA,EACfC,gBAAiBA,EACjBhB,eAAgBA,IAIxB,C","sources":["file:///app/packages/libs/shared/src/flight-requests/InsightsDemoRequests.ts","file:///app/packages/projects/lite/src/apps/my-shares/constants/DemoInsights.ts","file:///app/packages/projects/lite/src/apps/my-shares/constants/MySharesDemoInsights.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/demo/heatmap/InsightsHeatmapDemoView.tsx"],"sourcesContent":["import { Flight } from 'libs/common/react/index';\n\nexport const InsightsDemoRequests = {\n interactive(): Flight.Request {\n return {\n url: `/mocks/insights/interactive.json`,\n key: `demo:interactive`,\n normalize: false\n };\n },\n\n interactiveMetadata(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-metadata.json`,\n key: `demo:interactive:metadata`,\n normalize: false\n };\n },\n\n interactiveResults(): Flight.Request {\n return {\n url: `/mocks/insights/interactive-results.json`,\n key: `demo:interactive:results`,\n normalize: false\n };\n },\n\n videoViews(): Flight.Request {\n return {\n url: `/mocks/insights/video-views.json`,\n key: `demo:video:views`,\n normalize: false\n };\n },\n\n users(): Flight.Request {\n return {\n url: `/mocks/insights/users.json`,\n key: `demo:users`,\n normalize: false\n };\n },\n\n individualHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/individual-heatmap.json`,\n key: `demo:individual:heatmap`,\n normalize: false\n };\n },\n\n aggregateHeatmap(): Flight.Request {\n return {\n url: `/mocks/insights/aggregate-heatmap.json`,\n key: `demo:aggregate:heatmap`,\n normalize: false\n };\n }\n};","export const DEMO_INTERACTIVE_STAGING_ID = 'D8qRe7';\nexport const DEMO_INTERACTIVE_PROD_ID = 'GRWx6w';","import { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { MySharesTableData } from 'apps/my-shares/components/my-shares-table/MySharesTableUtils';\n\nconst namespace = 'myShares.demoInsights';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst DEMO_INSIGHT_DAYS_AGO = 7;\n\nexport const DEMO_INSIGHTS_SHARE: Share = {\n type: ShareType.Link,\n privacy: SharePrivacy.JustMySchool,\n objectId: '0',\n objectTypeId: MasterType.Interactive,\n viewCount: 28,\n accessCount: 15,\n dateCreated: new Date().toISOString(),\n expireDate: null,\n link: {\n shortenedEmbedUrl: '',\n shortenedUrl: ''\n },\n shareId: '0',\n ownerCustomerId: 0,\n ownerId: 0,\n recipients: [],\n options: {\n preventScrubbing: false,\n immediateFeedback: false\n }\n};\n\nexport const DEMO_INSIGHTS_SHARE_TABLE_DATA: MySharesTableData = {\n share: DEMO_INSIGHTS_SHARE,\n sharedObject: null,\n shareRecipients: null,\n dateShared: DateHelper.subtract(new Date(), DEMO_INSIGHT_DAYS_AGO, 'days').toISOString()\n};\n\nconst DEMO_INSIGHTS_APPLINK: Core.AppLink = {\n application: AppChannels.MY_SHARES,\n action: Actions.MyShares.INTERACTIVE_OVERVIEW_DEMO\n};\n\nexport const DEMO_INSIGHTS_ACTION: ActionOptions = {\n svgName: cvSvgLibrary.Analytics,\n label: getPhrase('demoInsights'),\n appLink: DEMO_INSIGHTS_APPLINK,\n group: 'insights',\n className: 'btn btn-outline-dark'\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';\n\nimport { VideoViewEventResponse } from 'libs/shared/apps/analytics/interfaces/VideoViewEvent';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InsightsDemoRequests } from 'libs/shared/flight-requests/InsightsDemoRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Engagement, IndividualEngagementResponse, InteractiveMetadata, PlayerViewKey } from 'libs/shared/interfaces';\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nimport { InsightsHeader } from 'apps/my-shares/components/insights-header/InsightsHeader';\nimport { InsightsHeatmap } from 'apps/my-shares/components/insights-heatmap/InsightsHeatmap';\nimport { DEMO_INTERACTIVE_PROD_ID, DEMO_INTERACTIVE_STAGING_ID } from 'apps/my-shares/constants/DemoInsights';\nimport { DEMO_INSIGHTS_SHARE } from 'apps/my-shares/constants/MySharesDemoInsights';\nimport { getInsightsDemoInteractiveTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\n\nconst namespace = 'shared.insightsHeatmap';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function InsightsHeatmapDemoView() {\n const [anonymiseUsers] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<InteractiveMetadata>(\n InsightsDemoRequests.interactiveMetadata()\n );\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n\n const aggregateEngagement = Flight.useBasicFetch<Engagement>(\n InsightsDemoRequests.aggregateHeatmap()\n );\n\n const individualEngagement = Flight.useBasicFetch<IndividualEngagementResponse>(\n InsightsDemoRequests.individualHeatmap()\n );\n\n const users = Flight.useBasicFetch<AnonUser[]>(InsightsDemoRequests.users());\n\n const videoViews = Flight.useBasicFetch<VideoViewEventResponse>(InsightsDemoRequests.videoViews());\n\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(video.data &&\n PlayerRequests.createViewKey(getDemoInteractiveId(), MediaIdType.Share));\n\n useSetPageMetadata({ title: video.data ? getPhrase('pageTitle', { video: video.data?.name }) : null });\n\n const hasDataLoaded =\n !!currentUser.data &&\n !!videoViews.data &&\n !!video.data &&\n !!aggregateEngagement.data &&\n !!viewKey.data &&\n !!users.data;\n\n const tableDataLoaded = !!individualEngagement.data;\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams\n };\n\n function getDemoInteractiveId() {\n if (config.data?.liteUrl.includes('staging')) return DEMO_INTERACTIVE_STAGING_ID;\n\n return DEMO_INTERACTIVE_PROD_ID;\n }\n\n const share = {\n ...DEMO_INSIGHTS_SHARE,\n objectId: video.data?.id\n };\n\n return (\n <div className='px-3'>\n <InsightsHeader\n video={video.data}\n tabs={getInsightsDemoInteractiveTabs(video.data?.id, 'heatmap', params)}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n share={share}\n yearGroups={[]}\n isDemo\n />\n\n <InsightsHeatmap\n aggregateEngagement={aggregateEngagement.data}\n individualEngagement={individualEngagement.data?.data}\n yearGroups={videoViews.data?.yearGroupCount}\n config={config.data}\n users={users.data}\n viewKey={viewKey.data}\n hasDataLoaded={hasDataLoaded}\n tableDataLoaded={tableDataLoaded}\n anonymiseUsers={anonymiseUsers}\n />\n </div>\n );\n}"],"names":["InsightsDemoRequests","interactive","url","key","normalize","interactiveMetadata","interactiveResults","videoViews","users","individualHeatmap","aggregateHeatmap","DEMO_INTERACTIVE_STAGING_ID","DEMO_INTERACTIVE_PROD_ID","getPhrase","DEMO_INSIGHTS_SHARE","type","privacy","objectId","objectTypeId","viewCount","accessCount","dateCreated","Date","toISOString","expireDate","link","shortenedEmbedUrl","shortenedUrl","shareId","ownerCustomerId","ownerId","recipients","options","preventScrubbing","immediateFeedback","DEMO_INSIGHTS_SHARE_TABLE_DATA","share","sharedObject","shareRecipients","dateShared","DEMO_INSIGHTS_APPLINK","application","action","DEMO_INSIGHTS_ACTION","svgName","label","appLink","group","className","InsightsHeatmapDemoView","anonymiseUsers","currentUser","video","config","audienceAppLinkParams","dateRangeAppLinkParams","aggregateEngagement","individualEngagement","viewKey","data","liteUrl","includes","getDemoInteractiveId","title","name","hasDataLoaded","tableDataLoaded","params","id","tabs","yearGroups","isDemo","yearGroupCount"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6475],{1619:(e,t,n)=>{n.d(t,{e:()=>y});var a=n(32735),r=n(23481),s=n(12528),l=n(83914),i=n(35223),o=n(33518),c=n(2510);function m(e){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},m(e)}function u(e,t,n){return(t=function(e){var t=function(e){if("object"!=m(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=m(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==m(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var p=r.T.encloseNamespace("sharev2.shareAvatar"),d=u(u(u(u(u({},c.y.Open,i.vn.Classrooms),c.y.Link,i.vn.Link),c.y.Classroom,i.vn.Classrooms),c.y.Live,i.vn.Play),c.y.LegacyDirect,i.vn.Share),h=u(u(u(u(u({},c.y.Open,"blue"),c.y.Link,"black"),c.y.Classroom,"teal"),c.y.Live,"purple"),c.y.LegacyDirect,"indigo"),v=u(u(u(u(u({},c.y.Open,"openShareType"),c.y.Link,"linkShareType"),c.y.Classroom,"classroomShareType"),c.y.Live,"liveShareType"),c.y.LegacyDirect,"legacyDirectShareType");function y(e){var t,n;return a.createElement("div",{className:"d-flex align-items-center gap-2"},a.createElement("div",null,a.createElement(s.f,{svgName:d[e.type],variant:h[e.type],textVariant:"white",svgWrapperClassName:"p-1",svgSize:null!==(t=e.svgSize)&&void 0!==t?t:l.S.Standard})),a.createElement("div",{className:"d-flex flex-column"},a.createElement("p",{className:"m-0"},function(e){var t=e.type,n=e.classroomName,a=e.additionalTitleText;if(t===c.y.Classroom&&n)return n;var r=p(v[t]);return a&&(r+=" "+a),r}(e)),!e.hideSubtitle&&a.createElement("span",{className:"text-secondary"},null!==(n=e.subtitleText)&&void 0!==n?n:function(e){var t=e.type,n=e.privacy,a=e.studentCount,r=void 0===a?0:a,s=e.classroomGroupCount,l=void 0===s?0:s;switch(t){case c.y.Classroom:return function(e,t){return e&&t?"".concat(p("classroomGroupCount",{smartCount:e}),", ").concat(p("studentSubTitle",{smartCount:t})):e?p("groupSubTitle",{smartCount:e}):t?p("studentSubTitle",{smartCount:t}):p("allStudentsSubTitle")}(l,r);case c.y.Open:return p("openShareTypeSubTitle");case c.y.Link:return function(e){return[o.e.JustMySchool,o.e.Protected].includes(e)?p("respectRatingsSubTitle"):e===o.e.JustMySchoolOverrideRestriction?p("anyoneInSchoolSubTitle"):e===o.e.ProtectedOverrideRestriction?p("anyoneSignedInSubTitle"):e===o.e.Public?p("anyoneWithLinkSubTitle"):e===o.e.PinCode?p("anyoneWithPinSubTitle"):void 0}(n);case c.y.Live:return p("liveShareTypeSubTitle");case c.y.LegacyDirect:return p("legacyDirectTypeSubTitle");default:return p("publicShareTypeSubTitle")}}(e))))}},41661:(e,t,n)=>{var a;n.d(t,{D:()=>a}),function(e){e.GoogleClassroom="google-classroom",e.MicrosoftTeams="microsoft-teams",e.Vivi="vivi",e.AppleTv="apply-tv"}(a||(a={}))},40841:(e,t,n)=>{n.d(t,{_:()=>i});var a=n(23481),r=n(41661),s=n(65728),l=a.T.encloseNamespace("shared.shared-utils"),i={getShareIntegrations:function(e,t){return[{id:r.D.GoogleClassroom,name:l("googleClassroom"),enabled:e,settingName:s.E.ShareToGoogleClassroom},{id:r.D.MicrosoftTeams,name:l("msftTeams"),enabled:t,settingName:s.E.ShareToMicrosoftTeams}]}}},35690:(e,t,n)=>{n.d(t,{QD:()=>w,Qv:()=>N,__:()=>C});var a=n(32735),r=n(68050),s=n(69111),l=n(42648),i=n(82602),o=n(31453),c=n(1619),m=n(83345),u=n(4594),p="sharev2.shareViewCount";function d(e){return[u.E.Playlist,u.E.Series].includes(e.share.objectTypeId)?a.createElement("span",null,"-"):a.createElement(m.x,{namespace:p,phrase:"viewCount",options:{smartCount:e.share.viewCount||0}})}var h=n(2510),v=n(83914),y=n(35223);function g(e){return[u.E.Playlist,u.E.Series].includes(e.share.objectTypeId)?a.createElement("span",null,"-"):a.createElement("span",{className:"d-inline-flex flex-row gap-2 align-items-center"},a.createElement(v.x,{svgName:y.vn.User}),a.createElement("span",null,function(){var t=e.share.accessCount||0;if(e.share.type===h.y.Open)return"".concat(t);if(e.share.type===h.y.Classroom){var n=e.share.recipients.length;return"".concat(t,"/").concat(n)}return"".concat(t)}()))}var f=n(21789),E=n(15611),S=n(91693);const b={shareListItem:"vLROV",visibleOnHover:"o2KJH"};var x="assign.previousAssignments";function T(e){return a.createElement("div",{className:(0,o.A)("d-flex align-items-center justify-content-between",e.show&&"mb-3")},a.createElement("h3",{className:"h6 m-0 p-0"},a.createElement(m.x,{namespace:x,phrase:"heading",options:{count:e.count}})),a.createElement(S.h,{svgName:e.show?y.vn.ChevronUp:y.vn.ChevronDown,onClick:e.onToggle}))}function C(){var e="d-flex align-items-end justify-content-start fw-medium";return a.createElement(m.D.Provider,{value:x},a.createElement(r.Z,{className:"gx-2 px-3 mb-2"},a.createElement(s.Z,{xs:4,className:e},a.createElement(m.x,{phrase:"assignedTo"})),a.createElement(s.Z,{xs:2,className:e},a.createElement(m.x,{phrase:"views"})),a.createElement(s.Z,{xs:2,className:e},a.createElement(m.x,{phrase:"viewedBy"})),a.createElement(s.Z,{xs:4,className:e},a.createElement(m.x,{phrase:"dateCreated"}))))}function k(e){var t,n=f.x.getClassroomForShare(e.share,e.classrooms),l=null===(t=e.getItemAnalytics)||void 0===t?void 0:t.call(e,e.share);return a.createElement(E.F,{key:e.share.shareId,appLink:e.getItemAppLink(e.share),analyticsData:null==l?void 0:l.data,analyticsOptions:null==l?void 0:l.options,className:(0,o.A)("d-block p-3 hover-bg-light-blue border border-top-0 no-hover-text-underline",b.shareListItem,e.className)},a.createElement(r.Z,{className:"gx-2"},a.createElement(s.Z,{xs:4,className:"d-flex align-items-center"},a.createElement(c.e,{type:e.share.type,privacy:e.share.privacy,classroomName:null==n?void 0:n.name,svgSize:v.S.Small,hideSubtitle:!0})),a.createElement(s.Z,{xs:2,className:"d-flex align-items-center justify-content-start"},a.createElement(d,{share:e.share})),a.createElement(s.Z,{xs:2,className:"d-flex align-items-center justify-content-start"},a.createElement(g,{share:e.share})),a.createElement(s.Z,{xs:4,lg:3,className:"d-flex align-items-center justify-content-start"},a.createElement("span",null,(0,i.WU)(e.share.dateCreated))),a.createElement(s.Z,{lg:1,className:"align-items-center justify-content-end d-none d-lg-flex"},a.createElement("span",{className:(0,o.A)("cursor-pointer text-info hover-text-underline",b.visibleOnHover)},a.createElement(m.x,{namespace:x,phrase:"view"})))))}function N(e){var t;return a.createElement("div",{className:(0,o.A)("d-flex flex-column border-top rounded-top overflow-hidden")},a.createElement(l.ZP,{autoHeight:!0,autoHeightMin:0,autoHeightMax:null!==(t=e.scrollHeightMax)&&void 0!==t?t:215,autoHide:!0},e.assignments.map(function(t,n){return a.createElement(k,{share:t,classrooms:e.classrooms,getItemAppLink:e.getItemAppLink,getItemAnalytics:function(t){var a;return null===(a=e.getItemAnalytics)||void 0===a?void 0:a.call(e,t,n)},className:(0,o.A)(n%2==0&&"bg-gray-100"),key:t.shareId})})))}function w(e){if(!e.assignments.length)return a.createElement(a.Fragment,null);var t=e.show&&e.assignments.length>3;return a.createElement("div",{className:(0,o.A)("bg-white rounded-3 p-3",t&&"pb-0")},a.createElement(T,{count:e.assignments.length,onToggle:e.onToggle,show:e.show}),e.show&&a.createElement(a.Fragment,null,a.createElement(C,null),a.createElement(N,Object.assign({},e))))}},24578:(e,t,n)=>{n.r(t),n.d(t,{ShowAssignmentsView:()=>U});var a=n(32735),r=n(23481),s=n(20354),l=n(75896),i=n(110),o=n(18488),c=n(21789),m=n(9111),u=n(83914),p=n(83345),d=n(16714),h=n(22902),v=n(37802),y=n(70227),g=n(35223),f=n(14070),E=n(97291),S=n(86099),b=n(83351),x=n(35690),T=n(95890),C=n(40254),k=n(88630),N=n(23923),w=n(97958),L=n(99742),A="assign.sharesAndAssignmentsEmptyState",I=r.T.encloseNamespace(A);function j(e){return a.createElement(w.u,{className:"py-4"},a.createElement(w.u.Image,{size:"small",src:L.W.EmptyStates.Share.MY_SHARES}),a.createElement(w.u.Heading,null,a.createElement(p.x,{phrase:"title",namespace:A})),a.createElement(w.u.Info,null,a.createElement(p.x,{phrase:"description",namespace:A})),a.createElement(w.u.Cta,{icon:g.vn.Share,text:I("ctaAssign"),appLink:e.assignAppLink}),a.createElement(w.u.Cta,{className:"text-dark hover-text-underline mt-3 fw-medium",text:I("ctaShareLink"),appLink:e.shareLinkAppLink}))}var P="assign.sharesEmptyState",D=r.T.encloseNamespace(P);function O(e){return a.createElement(w.u,{className:"py-4"},a.createElement(w.u.Image,{size:"small",src:L.W.EmptyStates.Share.MY_SHARES}),a.createElement(w.u.Heading,null,a.createElement(p.x,{phrase:"title",namespace:P})),a.createElement(w.u.Info,null,a.createElement(p.x,{phrase:"description",namespace:P})),a.createElement(w.u.Cta,{icon:g.vn.Link,text:D("cta"),appLink:e.appLink}))}var _="assign.showAssignmentsView",H=r.T.encloseNamespace(_),M=400;function Z(e,t){if(e&&t)return i.O.isSame(e.dateCreated,t.dateCreated)?0:i.O.isAfter(e.dateCreated,t.dateCreated)?1:-1}function B(e){return a.createElement("a",{href:e.href,target:"_blank",className:"btn btn-link text-info"},a.createElement("span",{className:"pe-1"},a.createElement(p.x,{phrase:"viewInAnalytics",namespace:_})),a.createElement(u.x,{svgName:g.vn.NewWindow,size:u.S.Small}))}function F(e){return"assign-and-shares"===e.type?a.createElement(j,{assignAppLink:e.assignAppLink,shareLinkAppLink:e.shareAppLink}):a.createElement(O,{appLink:e.shareAppLink})}function U(e){var t,n,r,i=(0,T._)({objectId:e.objectId,entityType:e.entityType}),u=(0,h.T)().hasPermissions,p=(0,v.r)(null).hasShareFlowV2,g=(0,N.B)(),w=s.a.useBasicFetch(o.o.getSharesByObjectId(e.objectId)),L=(null===(t=w.data)||void 0===t?void 0:t.sort(Z))||[],A=l.m.uniq(L.map(c.x.getClassroomIdFromShare).filter(function(e){return!!e})),I=s.a.useBasicFetch(w.hasCompleted&&k.F.getClassroomsByIds(A,null===(n=i.currentUser.data)||void 0===n?void 0:n.customerId)),j=y.c.getObjectUrl(null===(r=i.config.data)||void 0===r?void 0:r.analyticsWebUrl,i.entity.data,p),P=u(d.C.ViewAnalyticsProduct)&&u(d.C.ViewCustomerAnalytics),D=p&&g?"shares":"assign-and-shares",O=i.loaded&&!!w.data&&!!I.data;return a.createElement(m.G,{size:"lg",title:H("title"),showLoadingSpinner:!O,closePopup:e.closePopup},!L.length&&a.createElement(F,{assignAppLink:C.W.flowSelector({entityType:e.entityType,objectId:e.objectId}),shareAppLink:{application:E.O.SHARE,action:f.e.Share.SHARE,args:[e.objectId],params:{entityType:e.entityType}},type:D}),!!L.length&&a.createElement(a.Fragment,null,a.createElement(x.__,null),a.createElement(x.Qv,{assignments:L.reverse(),classrooms:I.data,getItemAppLink:function(e){var t=(0,S.pY)(e);if(t)return t},scrollHeightMax:M})),a.createElement(b.P,{hideNextButton:!0,hideCreateClassroomButton:!0,onClickBack:e.closePopup,backButtonText:H("close"),leftComponent:!!j&&P&&a.createElement(B,{href:j})}))}},82602:(e,t,n)=>{n.d(t,{WU:()=>c});var a=["second","minute","hour","day","week","month","year"],r=["秒","分钟","小时","天","周","个月","年"],s={},l=function(e,t){s[e]=t},i=[60,60,24,7,365/7/12,12];function o(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}var c=function(e,t,n){var a=function(e,t){return(+(t?o(t):new Date)-+o(e))/1e3}(e,n&&n.relativeDate);return function(e,t){for(var n=e<0?1:0,a=e=Math.abs(e),r=0;e>=i[r]&&r<i.length;r++)e/=i[r];return(e=Math.floor(e))>(0==(r*=2)?9:1)&&(r+=1),t(e,r,a)[n].replace("%s",e.toString())}(a,function(e){return s[e]||s.en_US}(t))};l("en_US",function(e,t){if(0===t)return["just now","right now"];var n=a[Math.floor(t/2)];return e>1&&(n+="s"),[e+" "+n+" ago","in "+e+" "+n]}),l("zh_CN",function(e,t){if(0===t)return["刚刚","片刻后"];var n=r[~~(t/2)];return[e+" "+n+"前",e+" "+n+"后"]})}}]);
|
|
2
|
-
//# sourceMappingURL=6475-502e390010-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/6475-502e390010-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share-v2/components/share-avatar/ShareAvatar.tsx","file:///app/packages/libs/shared/src/enums/IntegrationId.ts","file:///app/packages/libs/shared/src/utils/IntegrationHelper.ts","file:///app/packages/libs/shared/src/apps/share-v2/components/share-view-count/ShareViewCount.tsx","file:///app/packages/libs/shared/src/apps/share-v2/components/share-viewed-by-count/ShareViewedByCount.tsx","file:///app/packages/projects/lite/src/apps/assign/components/previous-assignments/previous-assignments.scss","file:///app/packages/projects/lite/src/apps/assign/components/previous-assignments/PreviousAssignments.tsx","file:///app/packages/projects/lite/src/apps/assign/views/show-assignments-view/empty-states/shares-and-assignments-empty-state/SharesAndAssignmentsEmptyState.tsx","file:///app/packages/projects/lite/src/apps/assign/views/show-assignments-view/empty-states/shares-empty-state/SharesEmptyState.tsx","file:///app/packages/projects/lite/src/apps/assign/views/show-assignments-view/ShowAssignmentsView.tsx","file:///app/node_modules/timeago.js/esm/lang/en_US.js","file:///app/node_modules/timeago.js/esm/lang/zh_CN.js","file:///app/node_modules/timeago.js/esm/register.js","file:///app/node_modules/timeago.js/esm/utils/date.js","file:///app/node_modules/timeago.js/esm/format.js","file:///app/node_modules/timeago.js/esm/index.js"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SharePrivacy } from '../../enums/SharePrivacy';\nimport { ShareType } from '../../enums/ShareType';\n\nconst namespace = 'sharev2.shareAvatar';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst icons = {\n [ShareType.Open]: cvSvgLibrary.Classrooms,\n [ShareType.Link]: cvSvgLibrary.Link,\n [ShareType.Classroom]: cvSvgLibrary.Classrooms,\n [ShareType.Live]: cvSvgLibrary.Play,\n [ShareType.LegacyDirect]: cvSvgLibrary.Share\n};\n\nconst iconColours = {\n [ShareType.Open]: 'blue',\n [ShareType.Link]: 'black',\n [ShareType.Classroom]: 'teal',\n [ShareType.Live]: 'purple',\n [ShareType.LegacyDirect]: 'indigo'\n};\n\nconst shareTypeTitlePhraseMap = {\n [ShareType.Open]: 'openShareType',\n [ShareType.Link]: 'linkShareType',\n [ShareType.Classroom]: 'classroomShareType',\n [ShareType.Live]: 'liveShareType',\n [ShareType.LegacyDirect]: 'legacyDirectShareType'\n};\n\nfunction getTitle({ type, classroomName, additionalTitleText }: ShareAvatarProps) {\n if (type === ShareType.Classroom && classroomName)\n return classroomName;\n\n let title = getPhrase(shareTypeTitlePhraseMap[type]);\n\n if (additionalTitleText)\n title += ' ' + additionalTitleText;\n\n return title;\n}\n\nfunction getClassroomSubtitle(classroomGroupCount: number, studentCount: number): string {\n if (classroomGroupCount && studentCount)\n return `${getPhrase('classroomGroupCount', { smartCount: classroomGroupCount })}, ${getPhrase('studentSubTitle', { smartCount: studentCount })}`;\n\n if (classroomGroupCount)\n return getPhrase('groupSubTitle', { smartCount: classroomGroupCount });\n\n if (studentCount)\n return getPhrase('studentSubTitle', { smartCount: studentCount });\n\n return getPhrase('allStudentsSubTitle');\n}\n\nfunction getLinkSubtitle(privacy: SharePrivacy) {\n if ([ SharePrivacy.JustMySchool, SharePrivacy.Protected ].includes(privacy))\n return getPhrase('respectRatingsSubTitle');\n\n if (privacy === SharePrivacy.JustMySchoolOverrideRestriction)\n return getPhrase('anyoneInSchoolSubTitle');\n\n if (privacy === SharePrivacy.ProtectedOverrideRestriction)\n return getPhrase('anyoneSignedInSubTitle');\n\n if (privacy === SharePrivacy.Public)\n return getPhrase('anyoneWithLinkSubTitle');\n\n if (privacy === SharePrivacy.PinCode)\n return getPhrase('anyoneWithPinSubTitle');\n}\n\nfunction getSubtitle({ type, privacy, studentCount = 0, classroomGroupCount = 0 }: ShareAvatarProps) {\n switch (type) {\n case ShareType.Classroom:\n return getClassroomSubtitle(classroomGroupCount, studentCount);\n\n case ShareType.Open:\n return getPhrase('openShareTypeSubTitle');\n\n case ShareType.Link:\n return getLinkSubtitle(privacy);\n \n case ShareType.Live:\n return getPhrase('liveShareTypeSubTitle');\n\n case ShareType.LegacyDirect:\n return getPhrase('legacyDirectTypeSubTitle');\n\n default:\n return getPhrase('publicShareTypeSubTitle');\n }\n}\n\ninterface ShareAvatarProps {\n type: ShareType;\n privacy: SharePrivacy;\n studentCount?: number;\n classroomGroupCount?: number;\n classroomName?: string;\n hideSubtitle?: boolean;\n subtitleText?: string;\n svgSize?: SvgContainerSize;\n additionalTitleText?: string;\n}\n\nexport function ShareAvatar(props: ShareAvatarProps): JSX.Element {\n return (\n <div className='d-flex align-items-center gap-2'>\n <div>\n <IconCircle\n svgName={icons[props.type]}\n variant={iconColours[props.type]}\n textVariant='white'\n svgWrapperClassName='p-1'\n svgSize={props.svgSize ?? SvgContainerSize.Standard}\n />\n </div>\n <div className='d-flex flex-column'>\n <p className='m-0'>{getTitle(props)}</p>\n {!props.hideSubtitle && <span className='text-secondary'>{props.subtitleText ?? getSubtitle(props)}</span>}\n </div>\n </div>\n );\n}","export enum IntegrationId {\n GoogleClassroom = 'google-classroom',\n MicrosoftTeams = 'microsoft-teams',\n Vivi = 'vivi',\n AppleTv = 'apply-tv'\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { SettingName } from 'libs/shared/enums/SettingName';\nimport { Integration } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.shared-utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const IntegrationHelper = {\n getShareIntegrations(googleClassroomSetting: boolean, msftTeamsSetting: boolean): Integration[] {\n return [\n {\n id: IntegrationId.GoogleClassroom,\n name: getPhrase('googleClassroom'),\n enabled: googleClassroomSetting,\n settingName: SettingName.ShareToGoogleClassroom\n },\n {\n id: IntegrationId.MicrosoftTeams,\n name: getPhrase('msftTeams'),\n enabled: msftTeamsSetting,\n settingName: SettingName.ShareToMicrosoftTeams\n }\n ];\n }\n};\n","import React from 'react';\n\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\n\nconst namespace = 'sharev2.shareViewCount';\n\ninterface ShareViewCountProps {\n share: Share;\n}\n\nexport function ShareViewCount(props: ShareViewCountProps): JSX.Element {\n const isCollection = [ MasterType.Playlist, MasterType.Series ].includes(props.share.objectTypeId);\n \n if (isCollection)\n return <span>-</span>;\n\n return <Text namespace={namespace} phrase='viewCount' options={{ smartCount: props.share.viewCount || 0 }} />;\n}","import React from 'react';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\ninterface ShareViewedByCountProps {\n share: Share;\n}\n\nexport function ShareViewedByCount(props: ShareViewedByCountProps): JSX.Element {\n const isCollection = [ MasterType.Playlist, MasterType.Series ].includes(props.share.objectTypeId);\n\n if (isCollection)\n return <span>-</span>;\n \n function getViewCount(): string {\n const shareAccessCount = props.share.accessCount || 0;\n if (props.share.type === ShareType.Open)\n return `${shareAccessCount}`;\n\n if (props.share.type === ShareType.Classroom) {\n const totalRecipients = props.share.recipients.length;\n return `${shareAccessCount}/${totalRecipients}`;\n }\n\n return `${shareAccessCount}`;\n }\n \n return (\n <span className='d-inline-flex flex-row gap-2 align-items-center'>\n <SvgContainer svgName={cvSvgLibrary.User} />\n <span>{getViewCount()}</span>\n </span>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"shareListItem\":\"vLROV\",\"visibleOnHover\":\"o2KJH\"};","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\nimport Scrollbars from 'react-custom-scrollbars-2';\nimport { format as formatDate } from 'timeago.js';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { ShareAvatar } from 'libs/shared/apps/share-v2/components/share-avatar/ShareAvatar';\nimport { ShareViewCount } from 'libs/shared/apps/share-v2/components/share-view-count/ShareViewCount';\nimport { ShareViewedByCount } from 'libs/shared/apps/share-v2/components/share-viewed-by-count/ShareViewedByCount';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ShareHelper } from 'libs/shared/apps/share-v2/utils/ShareHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { Classroom } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './previous-assignments.scss';\n\nconst namespace = 'assign.previousAssignments';\n\ninterface PreviousAssignmentsHeaderProps {\n count: number;\n show: boolean;\n onToggle: () => void;\n}\n\nfunction PreviousAssignmentsHeader(props: PreviousAssignmentsHeaderProps): JSX.Element {\n return (\n <div className={classNames('d-flex align-items-center justify-content-between', props.show && 'mb-3')}>\n <h3 className='h6 m-0 p-0'><Text namespace={namespace} phrase='heading' options={{ count: props.count }} /></h3>\n <IconButton\n svgName={props.show ? cvSvgLibrary.ChevronUp : cvSvgLibrary.ChevronDown}\n onClick={props.onToggle}\n />\n </div>\n );\n}\n\nexport function PreviousAssignmentsListHeader(): JSX.Element {\n const columnClassNames = 'd-flex align-items-end justify-content-start fw-medium';\n \n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <Row className='gx-2 px-3 mb-2'>\n <Col xs={4} className={columnClassNames}>\n <Text phrase='assignedTo' />\n </Col>\n <Col xs={2} className={columnClassNames}>\n <Text phrase='views' />\n </Col>\n <Col xs={2} className={columnClassNames}>\n <Text phrase='viewedBy' />\n </Col>\n <Col xs={4} className={columnClassNames}>\n <Text phrase='dateCreated' />\n </Col>\n </Row>\n </LanguageNamespaceContext.Provider>\n );\n}\n\ntype ItemAnalytics = {\n data: HashObject;\n options: AnalyticsOptions;\n}\ninterface PreviousAssignmentListItemProps {\n share: Share;\n classrooms: Classroom[];\n getItemAppLink: (share: Share) => Core.AppLink;\n\n getItemAnalytics?: (share: Share) => ItemAnalytics;\n className?: string;\n}\n\nfunction PreviousAssignmentListItem(props: PreviousAssignmentListItemProps): JSX.Element {\n const shareClassroom = ShareHelper.getClassroomForShare(props.share, props.classrooms);\n\n const analytics = props.getItemAnalytics?.(props.share);\n\n return (\n <AppLink\n key={props.share.shareId}\n appLink={props.getItemAppLink(props.share)}\n analyticsData={analytics?.data}\n analyticsOptions={analytics?.options}\n className={classNames('d-block p-3 hover-bg-light-blue border border-top-0 no-hover-text-underline', styles.shareListItem, props.className)}\n >\n <Row className='gx-2'>\n <Col xs={4} className='d-flex align-items-center'>\n <ShareAvatar\n type={props.share.type}\n privacy={props.share.privacy}\n classroomName={shareClassroom?.name}\n svgSize={SvgContainerSize.Small}\n hideSubtitle\n />\n </Col>\n <Col xs={2} className='d-flex align-items-center justify-content-start'>\n <ShareViewCount share={props.share} />\n </Col>\n <Col xs={2} className='d-flex align-items-center justify-content-start'>\n <ShareViewedByCount share={props.share} />\n </Col>\n <Col xs={4} lg={3} className='d-flex align-items-center justify-content-start'>\n <span>{formatDate(props.share.dateCreated)}</span>\n </Col>\n <Col lg={1} className='align-items-center justify-content-end d-none d-lg-flex'>\n <span className={classNames('cursor-pointer text-info hover-text-underline', styles.visibleOnHover)}>\n <Text namespace={namespace} phrase='view' />\n </span>\n </Col>\n </Row>\n </AppLink>\n );\n}\n\ninterface PreviousAssignmentsListProps {\n assignments: Share[];\n classrooms: Classroom[];\n getItemAppLink: (share: Share) => Core.AppLink;\n getItemAnalytics?: (share: Share, yIndex: number) => ItemAnalytics;\n scrollHeightMax?: number;\n}\n\nexport function PreviousAssignmentsList(props: PreviousAssignmentsListProps): JSX.Element {\n return (\n <div className={classNames(\n 'd-flex flex-column border-top rounded-top overflow-hidden'\n )}>\n <Scrollbars\n autoHeight\n autoHeightMin={0}\n autoHeightMax={props.scrollHeightMax ?? 215}\n autoHide\n >\n {props.assignments.map((share, idx) => (\n <PreviousAssignmentListItem\n share={share}\n classrooms={props.classrooms}\n getItemAppLink={props.getItemAppLink}\n getItemAnalytics={share => props.getItemAnalytics?.(share, idx)}\n className={classNames(idx % 2 === 0 && 'bg-gray-100')}\n key={share.shareId}\n />\n ))}\n </Scrollbars>\n </div>\n );\n}\n\ninterface PreviousAssignmentsProps {\n show: boolean;\n assignments: Share[];\n classrooms: Classroom[];\n onToggle: () => void;\n getItemAppLink: (share: Share) => Core.AppLink;\n getItemAnalytics?: (share: Share, yIndex: number) => ItemAnalytics;\n}\n\nexport function PreviousAssignments(props: PreviousAssignmentsProps): JSX.Element {\n if (!props.assignments.length)\n return <></>;\n \n const noBottomPadding = props.show && props.assignments.length > 3;\n \n return (\n <div className={classNames('bg-white rounded-3 p-3', noBottomPadding && 'pb-0')}>\n <PreviousAssignmentsHeader count={props.assignments.length} onToggle={props.onToggle} show={props.show} />\n {props.show && (\n <>\n <PreviousAssignmentsListHeader />\n <PreviousAssignmentsList {...props} />\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 { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nconst namespace = 'assign.sharesAndAssignmentsEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SharesAndAssignmentsEmptyStateProps {\n assignAppLink: Core.AppLink;\n shareLinkAppLink: Core.AppLink;\n}\n\nexport function SharesAndAssignmentsEmptyState(props: SharesAndAssignmentsEmptyStateProps): JSX.Element {\n return (\n <EmptyState className='py-4'>\n <EmptyState.Image\n size='small'\n src={ImageUrls.EmptyStates.Share.MY_SHARES}\n />\n <EmptyState.Heading><Text phrase='title' namespace={namespace} /></EmptyState.Heading>\n <EmptyState.Info><Text phrase='description' namespace={namespace} /></EmptyState.Info>\n <EmptyState.Cta\n icon={cvSvgLibrary.Share}\n text={getPhrase('ctaAssign')}\n appLink={props.assignAppLink}\n />\n <EmptyState.Cta\n className='text-dark hover-text-underline mt-3 fw-medium'\n text={getPhrase('ctaShareLink')}\n appLink={props.shareLinkAppLink}\n />\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nconst namespace = 'assign.sharesEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SharesEmptyStateProps {\n appLink: Core.AppLink;\n}\n\nexport function SharesEmptyState(props: SharesEmptyStateProps): JSX.Element {\n return (\n <EmptyState className='py-4'>\n <EmptyState.Image\n size='small'\n src={ImageUrls.EmptyStates.Share.MY_SHARES}\n />\n <EmptyState.Heading><Text phrase='title' namespace={namespace} /></EmptyState.Heading>\n <EmptyState.Info><Text phrase='description' namespace={namespace} /></EmptyState.Info>\n <EmptyState.Cta\n icon={cvSvgLibrary.Link}\n text={getPhrase('cta')}\n appLink={props.appLink}\n />\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { ShareHelper } from 'libs/shared/apps/share-v2/utils/ShareHelper';\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Classroom, PopupViewProps } from 'libs/shared/interfaces';\nimport { AnalyticsRouteHelper } from 'libs/shared/utils/AnalyticsRouteHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { getInsightsOverviewAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport { FlowControls } from 'apps/assign/components/flow-controls/FlowControls';\nimport { PreviousAssignmentsList, PreviousAssignmentsListHeader } from 'apps/assign/components/previous-assignments/PreviousAssignments';\nimport { useAssignSharedData } from 'apps/assign/hooks/useAssignSharedData';\nimport { AssignAppLinkHelper } from 'apps/assign/utils/AssignAppLinkHelper';\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { useIsTertiary } from 'apps/onboarding/hooks/useIsTertiary';\n\nimport { SharesAndAssignmentsEmptyState } from './empty-states/shares-and-assignments-empty-state/SharesAndAssignmentsEmptyState';\nimport { SharesEmptyState } from './empty-states/shares-empty-state/SharesEmptyState';\n\nconst namespace = 'assign.showAssignmentsView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst MAX_SCROLL_HEIGHT = 400;\n\nfunction sortByDateCreated(a: Share, b: Share) {\n if (!a || !b)\n return;\n\n if (DateHelper.isSame(a.dateCreated, b.dateCreated))\n return 0;\n\n if (DateHelper.isAfter(a.dateCreated, b.dateCreated))\n return 1;\n\n return -1;\n}\n\ninterface ViewInSchoolAnalyticsButtonProps {\n href: string;\n}\n\nfunction ViewInSchoolAnalyticsButton(props: ViewInSchoolAnalyticsButtonProps): JSX.Element {\n return (\n <a href={props.href} target='_blank' className='btn btn-link text-info'>\n <span className='pe-1'><Text phrase='viewInAnalytics' namespace={namespace} /></span>\n <SvgContainer svgName={cvSvgLibrary.NewWindow} size={SvgContainerSize.Small} />\n </a>\n );\n}\n\ninterface ShowAssignmentsEmptyStateProps {\n type: 'assign-and-shares' | 'shares';\n assignAppLink: Core.AppLink;\n shareAppLink: Core.AppLink;\n}\n\nfunction ShowAssignmentsEmptyState(props: ShowAssignmentsEmptyStateProps): JSX.Element {\n if (props.type === 'assign-and-shares') {\n return (\n <SharesAndAssignmentsEmptyState\n assignAppLink={props.assignAppLink}\n shareLinkAppLink={props.shareAppLink}\n />\n );\n }\n \n return <SharesEmptyState appLink={props.shareAppLink} />;\n}\n\ninterface ShowAssignmentsViewProps extends PopupViewProps {\n objectId: string;\n entityType: SharableEntityType;\n}\n\nexport function ShowAssignmentsView(props: ShowAssignmentsViewProps): JSX.Element {\n const sharedData = useAssignSharedData({\n objectId: props.objectId,\n entityType: props.entityType\n });\n\n const { hasPermissions } = usePermissions();\n const { hasShareFlowV2 } = useSettings(null);\n const isTertiary = useIsTertiary();\n\n const previousShares = Flight.useBasicFetch<Share[]>(ShareRequests.getSharesByObjectId(props.objectId));\n const assignments = previousShares.data?.sort(sortByDateCreated) || [];\n const previousAssignmentClassroomIds = ArrayHelper.uniq(\n assignments.map(ShareHelper.getClassroomIdFromShare).filter(x => !!x)\n );\n const classrooms = Flight.useBasicFetch<Classroom[]>(\n previousShares.hasCompleted &&\n ClassroomRequests.getClassroomsByIds(previousAssignmentClassroomIds, sharedData.currentUser.data?.customerId)\n );\n\n function getItemAppLink(share: Share) {\n const appLink = getInsightsOverviewAppLink(share);\n if (!appLink)\n return;\n\n return appLink;\n }\n\n const analyticsUrl = AnalyticsRouteHelper.getObjectUrl(\n sharedData.config.data?.analyticsWebUrl,\n sharedData.entity.data,\n hasShareFlowV2\n );\n \n const canViewSchoolAnalytics =\n hasPermissions(PermissionName.ViewAnalyticsProduct) &&\n hasPermissions(PermissionName.ViewCustomerAnalytics);\n\n const emptyStateType = (hasShareFlowV2 && isTertiary) ? 'shares' : 'assign-and-shares';\n\n const loaded = sharedData.loaded && !!previousShares.data && !!classrooms.data;\n\n return (\n <Popup\n size='lg'\n title={getPhrase('title')}\n showLoadingSpinner={!loaded}\n closePopup={props.closePopup}\n >\n {!assignments.length &&\n <ShowAssignmentsEmptyState\n assignAppLink={AssignAppLinkHelper.flowSelector({ entityType: props.entityType, objectId: props.objectId })}\n shareAppLink={{\n application: AppChannels.SHARE,\n action: Actions.Share.SHARE,\n args: [props.objectId],\n params: {\n entityType: props.entityType\n }\n }}\n type={emptyStateType}\n />\n }\n \n {!!assignments.length &&\n <>\n <PreviousAssignmentsListHeader />\n <PreviousAssignmentsList\n assignments={assignments.reverse()}\n classrooms={classrooms.data}\n getItemAppLink={getItemAppLink}\n scrollHeightMax={MAX_SCROLL_HEIGHT}\n />\n </>\n }\n <FlowControls\n hideNextButton\n hideCreateClassroomButton\n onClickBack={props.closePopup}\n backButtonText={getPhrase('close')}\n leftComponent={!!analyticsUrl && canViewSchoolAnalytics && <ViewInSchoolAnalyticsButton href={analyticsUrl} />}\n />\n </Popup>\n );\n}","var EN_US = ['second', 'minute', 'hour', 'day', 'week', 'month', 'year'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['just now', 'right now'];\n var unit = EN_US[Math.floor(idx / 2)];\n if (diff > 1)\n unit += 's';\n return [diff + \" \" + unit + \" ago\", \"in \" + diff + \" \" + unit];\n}\n//# sourceMappingURL=en_US.js.map","var ZH_CN = ['秒', '分钟', '小时', '天', '周', '个月', '年'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['刚刚', '片刻后'];\n var unit = ZH_CN[~~(idx / 2)];\n return [diff + \" \" + unit + \"\\u524D\", diff + \" \" + unit + \"\\u540E\"];\n}\n//# sourceMappingURL=zh_CN.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\n/**\n * All supported locales\n */\nvar Locales = {};\n/**\n * register a locale\n * @param locale\n * @param func\n */\nexport var register = function (locale, func) {\n Locales[locale] = func;\n};\n/**\n * get a locale, default is en_US\n * @param locale\n * @returns {*}\n */\nexport var getLocale = function (locale) {\n return Locales[locale] || Locales['en_US'];\n};\n//# sourceMappingURL=register.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nvar SEC_ARRAY = [\n 60,\n 60,\n 24,\n 7,\n 365 / 7 / 12,\n 12,\n];\n/**\n * format Date / string / timestamp to timestamp\n * @param input\n * @returns {*}\n */\nexport function toDate(input) {\n if (input instanceof Date)\n return input;\n // @ts-ignore\n if (!isNaN(input) || /^\\d+$/.test(input))\n return new Date(parseInt(input));\n input = (input || '')\n // @ts-ignore\n .trim()\n .replace(/\\.\\d+/, '') // remove milliseconds\n .replace(/-/, '/')\n .replace(/-/, '/')\n .replace(/(\\d)T(\\d)/, '$1 $2')\n .replace(/Z/, ' UTC') // 2017-2-5T3:57:52Z -> 2017-2-5 3:57:52UTC\n .replace(/([+-]\\d\\d):?(\\d\\d)/, ' $1$2'); // -04:00 -> -0400\n return new Date(input);\n}\n/**\n * format the diff second to *** time ago, with setting locale\n * @param diff\n * @param localeFunc\n * @returns\n */\nexport function formatDiff(diff, localeFunc) {\n /**\n * if locale is not exist, use defaultLocale.\n * if defaultLocale is not exist, use build-in `en`.\n * be sure of no error when locale is not exist.\n *\n * If `time in`, then 1\n * If `time ago`, then 0\n */\n var agoIn = diff < 0 ? 1 : 0;\n /**\n * Get absolute value of number (|diff| is non-negative) value of x\n * |diff| = diff if diff is positive\n * |diff| = -diff if diff is negative\n * |0| = 0\n */\n diff = Math.abs(diff);\n /**\n * Time in seconds\n */\n var totalSec = diff;\n /**\n * Unit of time\n */\n var idx = 0;\n for (; diff >= SEC_ARRAY[idx] && idx < SEC_ARRAY.length; idx++) {\n diff /= SEC_ARRAY[idx];\n }\n /**\n * Math.floor() is alternative of ~~\n *\n * The differences and bugs:\n * Math.floor(3.7) -> 4 but ~~3.7 -> 3\n * Math.floor(1559125440000.6) -> 1559125440000 but ~~1559125440000.6 -> 52311552\n *\n * More information about the performance of algebraic:\n * https://www.youtube.com/watch?v=65-RbBwZQdU\n */\n diff = Math.floor(diff);\n idx *= 2;\n if (diff > (idx === 0 ? 9 : 1))\n idx += 1;\n return localeFunc(diff, idx, totalSec)[agoIn].replace('%s', diff.toString());\n}\n/**\n * calculate the diff second between date to be formatted an now date.\n * @param date\n * @param relativeDate\n * @returns {number}\n */\nexport function diffSec(date, relativeDate) {\n var relDate = relativeDate ? toDate(relativeDate) : new Date();\n return (+relDate - +toDate(date)) / 1000;\n}\n/**\n * nextInterval: calculate the next interval time.\n * - diff: the diff sec between now and date to be formatted.\n *\n * What's the meaning?\n * diff = 61 then return 59\n * diff = 3601 (an hour + 1 second), then return 3599\n * make the interval with high performance.\n **/\nexport function nextInterval(diff) {\n var rst = 1, i = 0, d = Math.abs(diff);\n for (; diff >= SEC_ARRAY[i] && i < SEC_ARRAY.length; i++) {\n diff /= SEC_ARRAY[i];\n rst *= SEC_ARRAY[i];\n }\n d = d % rst;\n d = d ? rst - d : rst;\n return Math.ceil(d);\n}\n//# sourceMappingURL=date.js.map","import { formatDiff, diffSec } from './utils/date';\nimport { getLocale } from './register';\n/**\n * format a TDate into string\n * @param date\n * @param locale\n * @param opts\n */\nexport var format = function (date, locale, opts) {\n // diff seconds\n var sec = diffSec(date, opts && opts.relativeDate);\n // format it with locale\n return formatDiff(sec, getLocale(locale));\n};\n//# sourceMappingURL=format.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nimport en_US from './lang/en_US';\nimport zh_CN from './lang/zh_CN';\nimport { register } from './register';\nregister('en_US', en_US);\nregister('zh_CN', zh_CN);\nexport { format } from './format';\nexport { render, cancel } from './realtime';\nexport { register };\n//# sourceMappingURL=index.js.map"],"names":["getPhrase","icons","iconColours","shareTypeTitlePhraseMap","ShareAvatar","props","className","svgName","type","variant","textVariant","svgWrapperClassName","svgSize","S","classroomName","additionalTitleText","title","getTitle","hideSubtitle","subtitleText","privacy","studentCount","classroomGroupCount","smartCount","getClassroomSubtitle","includes","getLinkSubtitle","getSubtitle","IntegrationId","IntegrationHelper","getShareIntegrations","googleClassroomSetting","msftTeamsSetting","id","name","enabled","settingName","namespace","ShareViewCount","MasterType","share","objectTypeId","Text","phrase","options","viewCount","ShareViewedByCount","SvgContainer","shareAccessCount","accessCount","ShareType","totalRecipients","recipients","length","getViewCount","PreviousAssignmentsHeader","show","count","IconButton","onClick","onToggle","PreviousAssignmentsListHeader","columnClassNames","value","Row","Col","xs","PreviousAssignmentListItem","shareClassroom","ShareHelper","classrooms","analytics","getItemAnalytics","AppLink","key","shareId","appLink","getItemAppLink","analyticsData","data","analyticsOptions","lg","dateCreated","PreviousAssignmentsList","autoHeight","autoHeightMin","autoHeightMax","scrollHeightMax","autoHide","assignments","map","idx","PreviousAssignments","noBottomPadding","LanguageService","SharesAndAssignmentsEmptyState","EmptyState","size","src","ImageUrls","icon","text","assignAppLink","shareLinkAppLink","SharesEmptyState","MAX_SCROLL_HEIGHT","sortByDateCreated","a","b","DateHelper","ViewInSchoolAnalyticsButton","href","target","ShowAssignmentsEmptyState","shareAppLink","ShowAssignmentsView","sharedData","useAssignSharedData","objectId","entityType","hasPermissions","usePermissions","hasShareFlowV2","useSettings","isTertiary","useIsTertiary","previousShares","ShareRequests","sort","previousAssignmentClassroomIds","ArrayHelper","filter","x","hasCompleted","ClassroomRequests","currentUser","customerId","analyticsUrl","AnalyticsRouteHelper","config","analyticsWebUrl","entity","canViewSchoolAnalytics","PermissionName","emptyStateType","loaded","Popup","showLoadingSpinner","closePopup","AssignAppLinkHelper","application","action","args","params","reverse","FlowControls","hideNextButton","hideCreateClassroomButton","onClickBack","backButtonText","leftComponent","EN_US","ZH_CN","Locales","register","locale","func","SEC_ARRAY","toDate","input","Date","isNaN","test","parseInt","trim","replace","format","date","opts","sec","relativeDate","diff","localeFunc","agoIn","totalSec","Math","abs","floor","toString","unit"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6550],{93479:(e,t,r)=>{r.d(t,{I:()=>i});var n=r(99940);function a(e,t,r){if(!t)return e;var n="".concat(e,":").concat(t.start,":").concat(t.end),a=Array.isArray(t.userId)?t.userId.sort().join(":"):t.userId,o=Array.isArray(t.groupId)?t.groupId.sort().join(":"):t.groupId,i=Array.isArray(t.customerId)?t.customerId.sort().join(":"):t.customerId;return a&&(n+=":".concat(a)),o&&(n+=":".concat(o)),i&&(n+=":".concat(i)),r&&(n+=":".concat(r)),n}function o(e,t){return{currentUserId:e.id,currentCustomerId:e.customerId,dateRange:t?{start:t.start,end:t.end}:void 0,userIds:null==t?void 0:t.userId,classroomsAndGroups:null==t?void 0:t.groupId}}var i={interactiveResultSet:function(e,t,r,i,c,u,s,l){return{url:c?"/api/domain/v3/analytics/interactives/".concat(e,"/metadata/").concat(t):"/api/domain/v2/analytics/interactives/".concat(e,"/metadata/").concat(t),key:a("interactive:result:set:".concat(e,":").concat(t),i),data:o(r,i),type:n.k.POST,normalize:!1,success:u,error:s,always:l}},mark:function(e,t,r,a,o,i,c){return{url:"/api/domain/v1/analytics/answers/".concat(r),key:"mark:answer:".concat(r,":").concat(a.resultId),type:n.k.PUT,data:a,normalize:!1,invalidationKeys:"interactive:result:set:".concat(e,":").concat(t),success:o,error:i,always:c}},pendingReviews:function(e){return{url:"/api/domain/v1/analytics/interactives/pending-reviews/summary",key:"interactives:pending:reviews",type:n.k.POST,data:e}},interactiveResultsReport:function(e){return{url:"/api/domain/v3/analytics/interactives/report",key:"interactive:results:report",data:e,type:n.k.POST,normalize:!1}}}},41196:(e,t,r)=>{r.d(t,{W:()=>c});var n=r(20354),a=r(93479),o=r(20768),i=r(31949);function c(e,t,r){var c,u=n.a.useBasicFetch(i.N.currentUser()),s=n.a.useBasicFetch(!!e&&o.b.interactiveMetadata(e)),l=n.a.useBasicFetch(!!(null===(c=s.data)||void 0===c?void 0:c.interactiveId)&&o.b.interactive(s.data.interactiveId)),d=!!u.data&&!!l.data;return n.a.useBasicFetch(d&&a.I.interactiveResultSet(s.data.interactiveId,s.data.id,u.data,t,r))}},26025:(e,t,r)=>{r.d(t,{B:()=>o});var n=r(1048),a=r(75795),o={getAudienceAppLinkParams:function(){var e=a.O.getCurrentRoute().appLink,t=n.t.isObject(e.params)?e.params:{},r=t.users,o=t.classrooms,i=t.classroomGroups,c=function(e){var r=t[e];if(r)return Array.isArray(r)?r:[r]},u={};return r&&(u.users=c("users")),o&&(u.classrooms=c("classrooms")),i&&(u.classroomGroups=c("classroomGroups")),u},getDateRangeAppLinkParams:function(){var e=a.O.getCurrentRoute().appLink,t=n.t.isObject(e.params)?e.params:{},r=t.from,o=t.to,i=t.rangeName,c={};return r&&(c.from=r),o&&(c.to=o),i&&(c.rangeName=i),c}}},26136:(e,t,r)=>{r.d(t,{B:()=>c});var n=r(76198),a=r(23481),o=r(64818),i=a.T.encloseNamespace("shared.analyticsUtils");function c(e,t){return e?t?(0,n._8)((r=e.id,a=e.sessionId,c=+"".concat(r||function(e){if(!e)return 0;for(var t=0,r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r),t|=0;return Math.abs(t)}(a)).concat(Math.floor((new Date).getMinutes()/5)),{dictionaries:[n.O9,n.yd],separator:" ",length:2,style:"capital",seed:c})):o.l.getFullName(e)||i("anonUser"):i("anonUser");var r,a,c}},39157:(e,t,r)=>{r.d(t,{HI:()=>f,R6:()=>s,Rt:()=>p,UU:()=>d,Zs:()=>l,nq:()=>m});var n=r(75896),a=r(94892),o=r(28972),i=r(8246),c=r(83140),u=r(80845);function s(e,t,r){var o={markingRequired:[],lowScore:[],highScore:[],completed:[],notCompleted:[]},i=(0,u.Q)(e),c=new Set(i.map(function(e){return e.id}));t.students.forEach(function(t){var i=Object.assign(Object.assign({},t),{summary:p(e,t)});i.summary.awaitingMarking?o.markingRequired.push(i):n.m.last(t.results).attempts.filter(function(e){var t;return!!c.has(null===(t=null==e?void 0:e.answers[0])||void 0===t?void 0:t.questionId)}).length===c.size?(o.completed.push(i),i.summary.percentCorrect>=((null==r?void 0:r.HIGH)||a.i.HIGH)&&o.highScore.push(i),i.summary.percentCorrect<((null==r?void 0:r.MODERATE)||a.i.MODERATE)&&o.lowScore.push(i)):o.notCompleted.push(i)});var s=n.m.sortBy(o.lowScore,function(e){return e.summary.percentCorrect}),l=n.m.sortBy(o.highScore,function(e){return-e.summary.percentCorrect});return Object.assign(Object.assign({},o),{lowScore:s,highScore:l})}function l(e,t){return(0,u.Wn)(e).find(function(e){return e.id.toString()===t.toString()})}function d(e){return"".concat(e.questionId,":").concat(e.resultId)}function f(e,t,r){var n=(0,u.j_)(t),a=(0,u.f6)(e,n);return(null==a?void 0:a.answers.every(function(e){var t;return(null===(t=r[d(e)])||void 0===t?void 0:t.status)===i.N.Correct}))?i.N.Correct:(null==a?void 0:a.answers.every(function(e){var t;return(null===(t=r[d(e)])||void 0===t?void 0:t.status)===i.N.Incorrect}))?i.N.Incorrect:void 0}function m(e,t){var r=t.students.length,n=0,a=0,i=0,s=0,l=0;return t.students.forEach(function(t){var r=(0,u.j_)(t);if(r){l+=t.results.length;var d=c.A.isInteractionCorrect(e,r);d===o.w.Correct&&n++,d===o.w.UnAnswered&&i++,d===o.w.AwaitingMarking&&s++,d!==o.w.UnAnswered&&a++}}),{percentCorrect:r>0?n/r:0,correct:n,answered:a,unanswered:i,awaitingMarking:s,attempts:l}}function p(e,t){var r=(0,u.j_)(t),n=(0,u.Q)(e),a=n.length,i=0,s=0;n.forEach(function(e){var t=c.A.isInteractionCorrect(e,r);t===o.w.Correct&&i++,t===o.w.AwaitingMarking&&s++});var l=a>0?i/a:0,d=new Set(n.map(function(e){return e.id})),f=r.attempts.filter(function(e){var t;return!!d.has(null===(t=null==e?void 0:e.answers[0])||void 0===t?void 0:t.questionId)}).length;return{answered:f,attempts:t.results.length,unanswered:a-f,percentCorrect:l,correct:i,awaitingMarking:s}}},56543:(e,t,r)=>{r.r(t),r.d(t,{GenerateInteractiveResultsReportView:()=>x});var n=r(32735),a=r(23481),o=r(2948),i=r(20354),c=r(110),u=r(84806),s=r(93479),l=r(41196),d=r(26025);function f(e){return function(e){if(Array.isArray(e))return m(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?m(e,t):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 m(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var p=function(e){var t=[],r=[];return e.users&&t.push.apply(t,f(e.users)),e.classrooms&&r.push.apply(r,f(e.classrooms)),e.classroomGroups&&r.push.apply(r,f(e.classroomGroups)),{userId:t,groupId:r}},v=(r(57266),a.T.encloseNamespace("shared.analyticsUtils"));function y(e){var t=c.O.convertDateToUTC(e);return c.O.format(t,"YYYY-MM-DDTHH:mm:ss")}function g(e){return c.O.format(e,"YYYY-MM-DD")}var b=r(2606),w=r(9111),h=r(13876),I=r(83345),S=r(38143),C=r(28972),A=r(20768),E=r(31949),O=r(69883),D=r(91286),k=r(52921),R=r(83140),j=r(80845),M=r(64818);function P(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,c=[],u=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=o.call(r)).done)&&(c.push(n.value),c.length!==t);u=!0);}catch(e){s=!0,a=e}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return T(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?T(e,t):void 0}}(e,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.")}()}function T(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var N="shared.generateReport",L=a.T.encloseNamespace(N);function U(e){var t=c.O.convertUTCToLocal(e).toString();return c.O.format(t,"Do MMMM YYYY")}function x(e){var t,r,a,f,m,T=P((0,o.D)(S.g.ANONYMISE_USERS),1)[0],x=(0,O.Z)(),_=i.a.useGetFetchAsync(),F=d.B.getAudienceAppLinkParams(),Z=d.B.getDateRangeAppLinkParams(),B=function(e,t){var r=function(e){return y(c.O.startOf(e,"day"))},n=function(e){return y(c.O.endOf(e,"day"))},a=function(e,t){if(t)return e.find(function(e){return e.name===t})}(e,t.rangeName);if(a)return{start:r(g(a.startDate)),end:n(g(a.endDate))};if(t.from&&t.to)return{start:r(t.from),end:n(t.to)};var o=e.find(function(e){return!!e.default});return{start:r(g(o.startDate)),end:n(g(o.endDate))}}((a=new Date(2021,0,1),m=(f=(new Date).getFullYear())===a.getFullYear(),[{name:v("today"),startDate:new Date,endDate:new Date},{name:v("thisMonth"),startDate:new Date(f,(new Date).getMonth(),1),endDate:new Date},{name:v("lastThreeMonths"),startDate:new Date(f,(new Date).getMonth()-2,1),endDate:new Date},{name:v("lastSixMonths"),startDate:new Date(f,(new Date).getMonth()-5,1),endDate:new Date},{name:v("thisYear"),startDate:new Date(f,0,1),endDate:new Date},{name:v("lastYear"),startDate:new Date(f-1,0,1),endDate:new Date(f,0,0),disabled:m,tooltip:m?v("lastYearDisabled"):""},{name:v("allTime"),startDate:c.O.subtract(new Date,5,"years"),endDate:new Date,default:!0}]),Z),G=P(n.useState(!1),2),q=G[0],Y=G[1],z=(0,k.b)(),H=z.loading,Q=z.handleGenerateReportError,V=i.a.useBasicFetch(E.N.currentUser()),W=i.a.useBasicFetch(A.b.interactiveMetadata(e.interactiveId)),K=i.a.useBasicFetch((null===(t=W.data)||void 0===t?void 0:t.interactiveId)?A.b.interactive(W.data.interactiveId):null),$=(0,l.W)(e.interactiveId,Object.assign(Object.assign({},B),p(F)));(0,D.v)([K,W,$]);var J=(0,j.Q)(K.data),X=(0,u.Fx)(K.data,$.data,!1,T);return n.createElement(I.D.Provider,{value:N},n.createElement(w.G,{title:L("title"),showLoadingSpinner:!V.hasCompleted||H,closePopup:e.closePopup},n.createElement(n.Fragment,null,n.createElement("p",null,n.createElement(I.x,{phrase:"description"})),n.createElement("p",null,n.createElement(I.x,{phrase:"dateRange",options:{dateFrom:U(B.start),dateTo:U(B.end)}})),n.createElement("p",null,n.createElement(I.x,{phrase:"emailDescription",options:{email:null===(r=V.data)||void 0===r?void 0:r.email}})),n.createElement(h.u,null,n.createElement(h.u.Cancel,{onClick:e.closePopup}),n.createElement(h.u.Submit,{variant:"dark",onClick:function(){Y(!0);var t={interactiveName:W.data.name,userId:V.data.id,customerId:V.data.customerId,questions:J.map(function(e){return e.name}),rows:X.map(function(e){return{name:M.l.getFullName(e.user),unanswered:e.summary.unanswered,percentage:(0,b.DV)((0,b.Ki)(e.summary.percentCorrect)),correct:e.summary.correct,totalQuestions:e.summary.answered+e.summary.unanswered,results:J.map(function(t){switch(R.A.isInteractionCorrect(t,(0,j.j_)(e))){case C.w.Correct:return L("correct");case C.w.Incorrect:return L("incorrect");case C.w.NotApplicable:return"-";case C.w.AwaitingMarking:return L("awaitingMarking");case C.w.UnAnswered:case C.w.Answered:default:return""}})}})};_(s.I.interactiveResultsReport(t)).then(function(){x.success(L("success"))}).catch(function(e){return Q(e,L("error"),L("noEmailError"))}).finally(e.closePopup)},text:L("generateReport"),showSpinner:q})))))}},40782:(e,t,r)=>{r.d(t,{I:()=>n,O:()=>u});var n,a=r(32735),o=r(2606),i=r(362);function c(e){var t=a.useCallback(function(t){if(t){var r=t.r.baseVal.value,n=2*Math.PI*r,a=n-e.percentage*n;t.style.strokeDasharray="".concat(n," ").concat(n),t.style.strokeDashoffset=a.toString()}},[e.percentage]);return a.createElement("svg",null,a.createElement("circle",{r:(0,o.pu)(e.size),className:i.Z.backgroundCircle}),!(0,o.zR)(e.percentage)&&a.createElement("circle",{ref:t,r:(0,o.pu)(e.size),className:(0,o.V4)(e.percentage,e.scoreThresholds)}))}function u(e){var t,r=(0,o.Ki)(e.percentage),u=e.size||(e.layout===n.LabelInside?o.Mk.Large:o.Mk.Small),s=e.customLabel||(0,o.DV)(r);return e.layout===n.LabelOnly?a.createElement("span",{className:(0,o.IA)(r)},s):a.createElement("div",{className:"d-flex align-items-center justify-content-between ".concat(null!==(t=e.className)&&void 0!==t?t:"")},e.layout===n.LabelBefore&&a.createElement("span",{className:"me-2"},s),a.createElement("div",{className:(0,o.tw)(u,r)},a.createElement(c,{percentage:r,size:u,scoreThresholds:e.scoreThresholds}),e.layout===n.LabelInside&&a.createElement("span",{className:i.Z.centredPercentageText},s)))}!function(e){e.CircleOnly="circle_only",e.LabelOnly="label_only",e.LabelBefore="label_before",e.LabelInside="label_inside"}(n||(n={})),u.defaultProps={layout:n.CircleOnly}},2606:(e,t,r)=>{r.d(t,{DV:()=>y,IA:()=>m,Ki:()=>v,Mk:()=>c,V4:()=>f,pu:()=>d,tw:()=>p,zR:()=>g});var n=r(94892),a=r(362);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function i(e,t,r){return(t=function(e){var t=function(e){if("object"!=o(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=o(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==o(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var c,u=.2,s=.36;!function(e){e.Small="small",e.Large="large",e.ExtraSmall="extraSmall"}(c||(c={}));var l=i(i(i({},c.ExtraSmall,{size:2}),c.Small,{size:2}),c.Large,{size:5.8});function d(e){var t=l[e].size,r=e===c.Large?s:u;return"".concat(t/2-2*r,"rem")}function f(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.i;return e>=t.HIGH?a.Z.circleSuccess:e>=t.MODERATE?a.Z.circleWarning:a.Z.circleDanger}function m(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.i;return e>=t.HIGH?"text-success":e>=t.MODERATE?"text-warning":"text-danger"}function p(e,t){var r="d-inline-block ".concat(a.Z.circleContainer);return e===c.Large&&(r+=" ".concat(a.Z.lgCircleContainer)),e===c.ExtraSmall&&(r+=" ".concat(a.Z.xsCircleContainer)),g(t)&&(r+=" ".concat(a.Z.pendingCircle)),r}function v(e){if(!g(e))return+e.toFixed(2)}function y(e){return g(e)?"--%":"".concat(Math.round(100*e),"%")}function g(e){return"number"!=typeof e}},94892:(e,t,r)=>{r.d(t,{T:()=>a,i:()=>n});var n={HIGH:.75,MODERATE:.5},a={HIGH:.7,MODERATE:.7}},28972:(e,t,r)=>{var n;r.d(t,{w:()=>n}),function(e){e[e.Correct=0]="Correct",e[e.Incorrect=1]="Incorrect",e[e.AwaitingMarking=2]="AwaitingMarking",e[e.Answered=3]="Answered",e[e.UnAnswered=4]="UnAnswered",e[e.NotApplicable=5]="NotApplicable"}(n||(n={}))},8246:(e,t,r)=>{var n;r.d(t,{N:()=>n}),function(e){e[e.Incorrect=0]="Incorrect",e[e.Correct=1]="Correct",e[e.PendingReview=2]="PendingReview"}(n||(n={}))},94644:(e,t,r)=>{r.d(t,{r:()=>l});var n=r(50242),a=r(81886),o=r(67058),i=r(14553),c=r(49267),u=r(49075),s={notFound:o.d,forbidden:{rating:i.q,yearLevel:i.q,region:c.a,privacy:i.q},badRequest:u._,internalServerError:u._};function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var o;o="number"==typeof e?e:e.status;var i=Object.assign(Object.assign({},s),t);o&&a.Q.Ry.isStatusCodeError(o)&&(o!==n.o.InternalServer?o!==n.o.NotFound?o!==n.o.Forbidden?r.badRequest||a.Q.Ry.throw(new i.badRequest):r.forbidden||a.Q.Ry.throw(new i.forbidden.privacy):r.notFound||a.Q.Ry.throw(new i.notFound):r.internalServerError||a.Q.Ry.throw(new u._))}}},91286:(e,t,r)=>{r.d(t,{v:()=>i});var n=r(32735),a=r(94644);function o(e){return e.map(function(e){return e.statusCode}).join(":")}function i(e,t,r){var i=Array.isArray(e)?e:[e];(0,n.useEffect)(function(){i.forEach(function(e){(0,a.r)(e.statusCode,t,r)})},[o(i),t,r])}},52921:(e,t,r)=>{r.d(t,{b:()=>h});var n=r(81886),a=r(20354),o=r(12754),i=r(23481),c=r(97395),u=r(47663);function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function l(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,d(n.key),n)}}function d(e){var t=function(e){if("object"!=s(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=s(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==s(t)?t:t+""}function f(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(f=function(){return!!e})()}function m(e){return m=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},m(e)}function p(e,t){return p=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},p(e,t)}var v="shared.verifiedEmailError",y=function(e){function t(e,r,n){var a;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(a=function(e,t,r){return t=m(t),function(e,t){if(t&&("object"==s(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,f()?Reflect.construct(t,r||[],m(e).constructor):t.apply(e,r))}(this,t,["VerifiedEmailRequiredError"])).message=e,a.liteUrl=r,a.hasLite=n,a}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&p(e,t)}(t,e),r=t,(n=[{key:"name",get:function(){return"VerifiedEmailRequiredError"}},{key:"dialogOptions",get:function(){var e=c._.safeUrlConcat(this.liteUrl,"settings/account");return{title:i.T.getPhrase(v,"heading"),text:this.hasLite?"".concat(this.message," ").concat(i.T.getPhrase(v,"visitSettings",{href:e})):this.message,buttons:[{text:i.T.getPhrase(v,"close"),className:"btn btn-dark",success:!0}]}}}])&&l(r.prototype,n),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n}(u.S),g=r(39151),b=r(69883),w=r(15311);function h(){var e=(0,b.Z)(),t=(0,w.r)(),r=t.hasProduct,i=t.isLoadingProducts,c=a.a.useBasicFetch(g.L.config());return{handleGenerateReportError:function(t,a,i){var u;t.responseJSON&&"no-email"===(null===(u=t.responseJSON)||void 0===u?void 0:u.type)?n.Q.Ry.throw(new y(i,c.data.liteUrl,r(o.x.Primary))):e.error(a)},loading:!c.hasCompleted||i}}},57266:(e,t,r)=>{r.d(t,{e:()=>i});var n=r(81886),a=r(1048),o=r(75795),i={updateParams:function(e,t){var r=o.O.getCurrentRoute().appLink,i="string"==typeof r.params?n.Q.Ab.DeserializeQueryParams(r.params):r.params;t.keysToRemove&&(i=a.t.omit(i,t.keysToRemove));var c=(null==t?void 0:t.merge)?Object.assign(Object.assign({},i),e):e,u=Object.assign(Object.assign({},r),{params:c});a.t.isEqual(r,u)||n.Q.C$.trigger(u,a.t.omit(t,["merge","keysToRemove"]))}}},83140:(e,t,r)=>{r.d(t,{A:()=>v});var n=r(28972),a=r(8246),o=r(38129);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function c(e,t,r){return(t=function(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=i(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function u(){return n.w.NotApplicable}function s(e,t){var r=e.actionableItems.filter(function(e){return e.isCorrect});return r.every(function(e){return!t(e.id)})?n.w.UnAnswered:r.every(function(e){var r;return e.name.trim().toLowerCase()===(null===(r=t(e.id))||void 0===r?void 0:r.trim().toLowerCase())})?n.w.Correct:n.w.Incorrect}function l(e,t){return e.actionableItems.every(function(e){return!t(e.id)})?n.w.UnAnswered:e.actionableItems.filter(function(e){return e.isCorrect}).every(function(e){var r,n=t(e.id);return(null==n?void 0:n.toString())===(null===(r=e.id)||void 0===r?void 0:r.toString())||n===e.name})?n.w.Correct:n.w.Incorrect}function d(e,t){return function(r){var n=null==t?void 0:t.attempts.find(function(t){return t.id===e.id});return null==n?void 0:n.answers.find(function(e){return e.id===r})}}function f(e,t){var r=d(e,t);return l(e,function(e){var t=r(e);return null==t?void 0:t.text})}function m(e,t){return function(e,t){var r;return e.actionableItems.forEach(function(e){var o=t(e.id);r=o?o.status!==a.N.Correct?o.status!==a.N.Incorrect?n.w.AwaitingMarking:n.w.Incorrect:n.w.Correct:n.w.UnAnswered}),r}(e,d(e,t))}var p=c(c(c(c(c(c(c({},o.Z9.Annotation,u),o.Z9.Image,u),o.Z9.MissingWord,function(e,t){var r=d(e,t);return s(e,function(e){var t=r(e);return null==t?void 0:t.text})}),o.Z9.MultipleChoice,f),o.Z9.ShortAnswer,m),o.Z9.TrueOrFalse,f),o.Z9.Illustration,m),v={notApplicable:u,awaitingMarking:function(){return n.w.AwaitingMarking},isMissingWordCorrect:s,isMultipleChoiceCorrect:l,isInteractionCorrect:function(e,t){return(0,p[e.typeId])(e,t)}}},362:(e,t,r)=>{r.d(t,{Z:()=>n});const n={circleContainer:"p8Vgz",backgroundCircle:"asGGE",circleSuccess:"PXLNj",circleWarning:"ZckRN",circleDanger:"slBRg",lgCircleContainer:"N8KCI",xsCircleContainer:"RPqZ2",pendingCircle:"DKrcq",centredPercentageText:"tpmLR"}}}]);
|
|
2
|
-
//# sourceMappingURL=6550-c621babbcb-lite.chunk.js.map
|