1/*! For license information please see enhanced_individual_gradebook-c-5cefde6a5a.js.LICENSE.txt */ 2"use strict";(globalThis["webpackChunkcanvas_lms"]=globalThis["webpackChunkcanvas_lms"]||[]).push([[10707],{19684:(e,t,n)=>{n.d(t,{q:()=>O}) 3var o=n(4942) 4var s=n(45987) 5var i=n(15671) 6var a=n(43144) 7var r=n(60136) 8var d=n(51630) 9var l=n(67294) 10var c=n(45697) 11var u=n.n(c) 12var m=n(94184) 13var g=n.n(m) 14var v=n(69924) 15var h=n(54577) 16var p=n(79070) 17var b=n(96580) 18var f=n(15922) 19var _=n(16121) 20var C=n(53912) 21function S(e){var t=e.colors,n=e.borders,o=e.typography 22return{background:t.backgroundLightest,borderWidthSmall:n.widthSmall,borderWidthMedium:n.widthMedium,borderColor:t.borderMedium,boxShadowColor:(0,C.F)(t.backgroundDarkest,12),boxShadowBlur:"1rem",fontFamily:o.fontFamily,fontWeight:o.fontWeightBold,color:t.brand,colorShamrock:t.shamrock,colorBarney:t.barney,colorCrimson:t.crimson,colorFire:t.fire,colorLicorice:t.licorice,colorAsh:t.ash}}var Z,y,G,k,N,w 23var x={componentId:"elMgC",template:function(e){return"\n\n.elMgC_bGBk{background-clip:content-box;background-color:".concat(e.background||"inherit",";background-position:50%;background-repeat:no-repeat;background-size:cover;box-sizing:border-box;height:2.5em;line-height:0;overflow:hidden;text-align:center}\n\n[dir=ltr] .elMgC_bGBk,[dir=rtl] .elMgC_bGBk{text-align:center}\n\n.elMgC_bGBk.elMgC_uUeq{font-size:inherit}\n\n.elMgC_bGBk.elMgC_uUeq,.elMgC_bGBk.elMgC_UKsG{border-width:").concat(e.borderWidthSmall||"inherit","}\n\n.elMgC_bGBk.elMgC_UKsG{font-size:0.5rem}\n\n.elMgC_bGBk.elMgC_dfBC{font-size:0.75rem}\n\n.elMgC_bGBk.elMgC_doqw,.elMgC_bGBk.elMgC_dfBC{border-width:").concat(e.borderWidthSmall||"inherit","}\n\n.elMgC_bGBk.elMgC_doqw{font-size:1rem}\n\n.elMgC_bGBk.elMgC_ycrn{font-size:1.25rem}\n\n.elMgC_bGBk.elMgC_cMDj,.elMgC_bGBk.elMgC_ycrn{border-width:").concat(e.borderWidthMedium||"inherit","}\n\n.elMgC_bGBk.elMgC_cMDj{font-size:1.5rem}\n\n.elMgC_bGBk.elMgC_eoMd{font-size:1.75rem}\n\n.elMgC_bGBk.elMgC_eoMd,.elMgC_bGBk.elMgC_fdca{border-width:").concat(e.borderWidthMedium||"inherit","}\n\n.elMgC_bGBk.elMgC_fdca{font-size:2rem}\n\n.elMgC_bGBk.elMgC_cHTY{border:0;box-shadow:inset 0 0 ").concat(e.boxShadowBlur||"inherit"," 0 ").concat(e.boxShadowColor||"inherit","}\n\n.elMgC_bGBk:not(.elMgC_cHTY){border-color:").concat(e.borderColor||"inherit",";border-style:solid}\n\n.elMgC_bGBk:not(.elMgC_cHTY).elMgC_fKgA{background-clip:border-box;border:0;padding:0}\n\n.elMgC_bGBk:not(.elMgC_cHTY).elMgC_fKgA.elMgC_uUeq,.elMgC_bGBk:not(.elMgC_cHTY).elMgC_fKgA.elMgC_doqw,.elMgC_bGBk:not(.elMgC_cHTY).elMgC_fKgA.elMgC_dfBC,.elMgC_bGBk:not(.elMgC_cHTY).elMgC_fKgA.elMgC_UKsG{padding:").concat(e.borderWidthSmall||"inherit","}\n\n.elMgC_bGBk:not(.elMgC_cHTY).elMgC_fKgA.elMgC_cMDj,.elMgC_bGBk:not(.elMgC_cHTY).elMgC_fKgA.elMgC_ycrn,.elMgC_bGBk:not(.elMgC_cHTY).elMgC_fKgA.elMgC_eoMd,.elMgC_bGBk:not(.elMgC_cHTY).elMgC_fKgA.elMgC_fdca{padding:").concat(e.borderWidthMedium||"inherit","}\n\n.elMgC_eYKj{font-family:").concat(e.fontFamily||"inherit",";font-weight:").concat(e.fontWeight||"inherit",";letter-spacing:0.0313em;line-height:2.375em}\n\n.elMgC_ddES{color:").concat(e.color||"inherit","}\n\n.elMgC_ekuM{color:").concat(e.colorShamrock||"inherit","}\n\n.elMgC_bXnN{color:").concat(e.colorBarney||"inherit","}\n\n.elMgC_byip{color:").concat(e.colorCrimson||"inherit","}\n\n.elMgC_dKVo{color:").concat(e.colorFire||"inherit","}\n\n.elMgC_eaOe{color:").concat(e.colorLicorice||"inherit","}\n\n.elMgC_fuVp{color:").concat(e.colorAsh||"inherit","}\n\n.elMgC_fKgA{color:").concat(e.background||"inherit","}\n\n.elMgC_fKgA.elMgC_ddES{background-color:").concat(e.color||"inherit","}\n\n.elMgC_fKgA.elMgC_ekuM{background-color:").concat(e.colorShamrock||"inherit","}\n\n.elMgC_fKgA.elMgC_bXnN{background-color:").concat(e.colorBarney||"inherit","}\n\n.elMgC_fKgA.elMgC_byip{background-color:").concat(e.colorCrimson||"inherit","}\n\n.elMgC_fKgA.elMgC_dKVo{background-color:").concat(e.colorFire||"inherit","}\n\n.elMgC_fKgA.elMgC_eaOe{background-color:").concat(e.colorLicorice||"inherit","}\n\n.elMgC_fKgA.elMgC_fuVp{background-color:").concat(e.colorAsh||"inherit","}\n\n.elMgC_MrJH{display:none}\n\n.elMgC_cJVF{border-radius:100%;overflow:hidden;position:relative;width:2.5em}\n\n.elMgC_bRWf{width:3em}\n\n.elMgC_eoCh{align-items:center;display:flex;height:100%;justify-content:center;width:100%}\n\n.elMgC_eoCh svg{fill:currentColor;height:1em;width:1em}")},root:"elMgC_bGBk",auto:"elMgC_uUeq","xx-small":"elMgC_UKsG","x-small":"elMgC_dfBC",small:"elMgC_doqw",medium:"elMgC_ycrn",large:"elMgC_cMDj","x-large":"elMgC_eoMd","xx-large":"elMgC_fdca",loaded:"elMgC_cHTY",hasInverseColor:"elMgC_fKgA",initials:"elMgC_eYKj",default:"elMgC_ddES",shamrock:"elMgC_ekuM",barney:"elMgC_bXnN",crimson:"elMgC_byip",fire:"elMgC_dKVo",licorice:"elMgC_eaOe",ash:"elMgC_fuVp",loadImage:"elMgC_MrJH",circle:"elMgC_cJVF",rectangle:"elMgC_bRWf",iconSVG:"elMgC_eoCh"} 24var O=(Z=(0,_.j)(),y=(0,p.x)("8.0.0",{inline:"display",variant:"shape"}),G=(0,h.YY)(S,x),Z(k=y(k=G(k=(w=N=function(e){(0,r.Z)(n,e) 25var t=(0,d.Z)(n) 26function n(){var e;(0,i.Z)(this,n) 27for(var o=arguments.length,s=new Array(o),a=0;a<o;a++)s[a]=arguments[a] 28e=t.call.apply(t,[this].concat(s)) 29e.state={loaded:false} 30e.handleImageLoaded=function(t){e.setState({loaded:true}) 31e.props.onImageLoaded(t)} 32return e}
32(0,a.Z)(n,[{key:"componentDidUpdate",value:function(){this.state.loaded&&!this.props.src&&this.setState({loaded:false})}},{key:"makeInitialsFromName",value:function(){var e=this.props.name 33if(!e||"string"!==typeof e)return 34e=e.trim() 35if(0===e.length)return 36if(e.match(/\s+/)){var t=e.split(/\s+/) 37return(t[0][0]+t[t.length-1][0]).toUpperCase()}return e[0].toUpperCase()}},{key:"renderLoadImage",value:function(){return l.createElement("img",{src:this.props.src,className:x.loadImage,alt:this.props.alt,onLoad:this.handleImageLoaded,"aria-hidden":"true"})}},{key:"renderInitials",value:function(){return l.createElement("span",{className:x.initials,"aria-hidden":"true"},this.makeInitialsFromName())}},{key:"renderContent",value:function(){var e=this.props.renderIcon 38if(!e)return this.renderInitials() 39return l.createElement("span",{className:x.iconSVG},(0,b.A)(e))}},{key:"render",value:function(){var e 40var t=this.props,n=(t.onImageLoaded,(0,s.Z)(t,["onImageLoaded"])) 41var i=this.state.loaded 42return l.createElement(v.G,Object.assign({},(0,f.ry)(n),{style:{backgroundImage:i?"url('".concat(this.props.src,"')"):void 0},className:g()((e={},(0,o.Z)(e,x.root,true),(0,o.Z)(e,x[this.props.size],true),(0,o.Z)(e,x[this.props.variant||this.props.shape],true),(0,o.Z)(e,x[this.props.color],true),(0,o.Z)(e,x.loaded,i),(0,o.Z)(e,x.hasInverseColor,this.props.hasInverseColor),e)),"aria-label":this.props.alt?this.props.alt:null,role:this.props.alt?"img":null,as:this.props.as,elementRef:this.props.elementRef,margin:this.props.margin,display:"block"===this.props.display||false===this.props.inline?"block":"inline-block"}),this.renderLoadImage(),!i&&this.renderContent())}}]) 43n.displayName="Avatar" 44return n}(l.Component),N.propTypes={name:u().string.isRequired,src:u().string,alt:u().string,size:u().oneOf(["auto","xx-small","x-small","small","medium","large","x-large","xx-large"]),color:u().oneOf(["default","shamrock","barney","crimson","fire","licorice","ash"]),hasInverseColor:u().bool,shape:u().oneOf(["circle","rectangle"]),margin:h.j7.spacing,display:u().oneOf(["inline-block","block"]),onImageLoaded:u().func,as:u().elementType,elementRef:u().func,renderIcon:u().oneOfType([u().node,u().func]),inline:u().bool,variant:u().oneOf(["circle","rectangle"])},N.defaultProps={src:void 0,alt:void 0,margin:void 0,elementRef:void 0,size:"medium",color:"default",hasInverseColor:false,shape:"circle",display:"inline-block",onImageLoaded:function(e){},renderIcon:null},w))||k)||k)||k)},42931:(e,t,n)=>{n.d(t,{O:()=>u}) 45var o=n(1413) 46var s=n(15671) 47var i=n(43144) 48var a=n(60136) 49var r=n(51630) 50var d=n(67294) 51var l=n(94855) 52var c=d.createElement("path",{d:"M1807.09271,1482.47718 L1886.82918,1562.43953 L1531.51624,1917.75247 L355.346824,1917.75247 L0.0338823529,1562.43953 L79.8832941,1482.47718 L402.104471,1804.81129 L1484.75859,1804.81129 L1807.09271,1482.47718 Z M997.677176,-0.0338823529 L997.677176,1166.98729 L1352.99012,811.674353 L1432.95247,891.523765 L941.093647,1383.15671 L449.460706,891.523765 L529.423059,811.674353 L884.736,1166.98729 L884.736,-0.0338823529 L997.677176,-0.0338823529 Z",fillRule:"evenodd",stroke:"none",strokeWidth:"1"}) 53var u=function(e){(0,a.Z)(n,e) 54var t=(0,r.Z)(n) 55function n(){(0,s.Z)(this,n) 56return t.apply(this,arguments)}(0,i.Z)(n,[{key:"render",value:function(){return d.createElement(l.q,Object.assign({},this.props,{name:"IconDownload",viewBox:"0 0 1920 1920"}),c)}}]) 57n.displayName="IconDownloadLine" 58return n}(d.Component) 59u.glyphName="download" 60u.variant="Line" 61u.propTypes=(0,o.Z)({},l.q.propTypes)},9:(e,t,n)=>{n.d(t,{V:()=>u}) 62var o=n(1413) 63var s=n(15671) 64var i=n(43144) 65var a=n(60136) 66var r=n(51630) 67var d=n(67294) 68var l=n(94855) 69var c=d.createElement("path",{d:"M1838.86029,1451.57632 L1920,1532.94589 L1558.4341,1894.51179 L361.565904,1894.51179 L0,1532.94589 L81.2546391,1451.57632 L409.146414,1779.58302 L1510.85359,1779.58302 L1838.86029,1451.57632 Z M962.333054,25 L1462.61798,525.284928 L1381.47827,606.654495 L1019.68251,244.973662 L1019.68251,1432.53262 L904.86867,1432.53262 L904.86867,244.973662 L543.187837,606.654495 L462.048126,525.284928 L962.333054,25 Z",fillRule:"evenodd",stroke:"none",strokeWidth:"1"}) 70var u=function(e){(0,a.Z)(n,e) 71var t=(0,r.Z)(n) 72function n(){(0,s.Z)(this,n) 73return t.apply(this,arguments)}(0,i.Z)(n,[{key:"render",value:function(){return d.createElement(l.q,Object.assign({},this.props,{name:"IconUpload",viewBox:"0 0 1920 1920"}),c)}}]) 74n.displayName="IconUploadLine" 75return n}(d.Component) 76u.glyphName="upload" 77u.variant="Line"
78u.propTypes=(0,o.Z)({},l.q.propTypes)},7342:(e,t,n)=>{n.d(t,{Z:()=>u}) 79var o=n(1413) 80var s=n(15671) 81var i=n(43144) 82var a=n(60136) 83var r=n(51630) 84var d=n(67294) 85var l=n(94855) 86var c=d.createElement("path",{d:"M1587.85365,1133.98588 C1478.18776,1091.63294 1364.34306,1061.92941 1248.57835,1042.72941 L1243.38306,1042.72941 C1378.91247,951.36 1468.24894,796.404706 1468.24894,621.12 L1468.24894,596.272941 C1440.01365,614.343529 1403.87247,638.061176 1353.16188,653.985882 C1337.23718,856.150588 1166.696,1016.41412 960.013647,1016.41412 C760.220706,1016.41412 594.084235,867.444706 569.237176,674.202353 C565.848941,657.261176 564.719529,639.303529 564.719529,621.12 L564.719529,560.131765 C566.074824,560.018824 566.978353,559.68 568.333647,559.454118 C578.837176,557.647059 588.211294,555.275294 597.698353,552.790588 C605.830118,550.757647 613.848941,548.611765 621.077176,546.127059 C628.983059,543.416471 636.550118,540.705882 643.665412,537.543529 C651.797176,534.042353 659.251294,530.428235 666.705412,526.588235 C671.787765,523.764706 677.096,521.28 681.839529,518.456471 C689.067765,514.164706 695.844235,509.985882 702.507765,505.694118 C705.896,503.435294 709.848941,501.176471 713.011294,499.143529 C717.867765,495.981176 722.611294,493.157647 727.354824,490.221176 C761.801882,468.649412 794.667765,451.821176 855.881882,451.708235 L856.107765,451.708235 C909.303059,451.708235 941.039529,463.792941 970.743059,480.734118 C980.568941,486.381176 990.281882,492.705882 1000.55953,499.256471 C1035.68424,522.070588 1074.536,546.804706 1134.28188,558.211765 C1134.95953,558.324706 1135.41129,558.663529 1136.08894,558.776471 C1156.41835,562.503529 1179.23247,564.649412 1205.096,564.649412 C1205.54776,564.649412 1205.88659,564.536471 1206.33835,564.536471 C1309.67953,564.310588 1363.55247,529.750588 1410.87482,499.143529 L1466.66776,464.696471 L1466.66776,464.583529 L1467.23247,464.131765 L1463.27953,442.785882 L1460.90776,427.312941 C1455.59953,392.865882 1445.66071,359.887059 1433.68894,327.811765 C1408.95482,261.063529 1371.11953,199.849412 1319.16659,148.009412 C1292.17365,120.790588 1261.56659,97.0729412 1229.94306,77.8729412 C1149.75482,27.1623529 1056.01365,-0.0564705882 960.013647,-0.0564705882 C739.778353,-0.0564705882 551.166588,141.12 481.143059,338.767059 C461.943059,391.849412 451.778353,448.32 451.778353,508.178824 L451.778353,621.12 C451.778353,640.32 452.907765,659.52 455.279529,677.590588 C472.107765,829.948235 557.152471,960.734118 677.999529,1042.16471 L672.917176,1042.16471 C561.105412,1060.57412 450.874824,1089.14824 344.484235,1129.35529 C203.872471,1182.66353 112.954824,1312.77176 112.954824,1461.06353 L112.954824,1669.10118 L139.721882,1685.59059 C311.957176,1792.54588 594.197176,1919.94353 960.013647,1919.94353 C1161.95247,1919.94353 1468.24894,1879.39765 1780.41835,1685.59059 L1807.07247,1669.10118 L1807.07247,1461.06353 C1807.07247,1316.16 1718.97835,1184.80941 1587.85365,1133.98588",fillRule:"evenodd",stroke:"none",strokeWidth:"1"}) 87var u=function(e){(0,a.Z)(n,e) 88var t=(0,r.Z)(n) 89function n(){(0,s.Z)(this,n) 90return t.apply(this,arguments)}(0,i.Z)(n,[{key:"render",value:function(){return d.createElement(l.q,Object.assign({},this.props,{name:"IconUser",viewBox:"0 0 1920 1920"}),c)}}]) 91n.displayName="IconUserSolid" 92return n}(d.Component) 93u.glyphName="user" 94u.variant="Solid" 95u.propTypes=(0,o.Z)({},l.q.propTypes)},18331:(e,t,n)=>{n.d(t,{v:()=>u}) 96var o=n(1413) 97var s=n(15671) 98var i=n(43144) 99var a=n(60136) 100var r=n(51630) 101var d=n(67294) 102var l=n(94855) 103var c=d.createElement("path",{d:"M960,0 C1490.19336,0 1920,429.80664 1920,960 C1920,1490.19336 1490.19336,1920 960,1920 C429.80664,1920 0,1490.19336 0,960 C0,429.80664 429.80664,0 960,0 Z M960,101.052632 C485.616468,101.052632 101.052632,485.616468 101.052632,960 C101.052632,1434.38353 485.616468,1818.94737 960,1818.94737 C1434.38353,1818.94737 1818.94737,1434.38353 1818.94737,960 C1818.94737,485.616468 1434.38353,101.052632 960,101.052632 Z M950.679927,1322.54386 C870.655911,1322.54386 805.551855,1387.64792 805.551855,1467.67193 C805.551855,1547.69595 870.655911,1612.8 950.679927,1612.8 C1030.70394,1612.8 1095.808,1547.69595 1095.808,1467.67193 C1095.808,1387.64792 1030.70394,1322.54386 950.
103679927,1322.54386 Z M1143.46512,353.684211 L757.894737,353.684211 L851.795993,1205.0114 L1049.56386,1205.0114 L1143.46512,353.684211 Z",fillRule:"evenodd",stroke:"none",strokeWidth:"1"}) 104var u=function(e){(0,a.Z)(n,e) 105var t=(0,r.Z)(n) 106function n(){(0,s.Z)(this,n) 107return t.apply(this,arguments)}(0,i.Z)(n,[{key:"render",value:function(){return d.createElement(l.q,Object.assign({},this.props,{name:"IconWarning",viewBox:"0 0 1920 1920"}),c)}}]) 108n.displayName="IconWarningLine" 109return n}(d.Component) 110u.glyphName="warning" 111u.variant="Line" 112u.propTypes=(0,o.Z)({},l.q.propTypes)},62779:(e,t,n)=>{n.d(t,{D:()=>O}) 113var o=n(4942) 114var s=n(45987) 115var i=n(15671) 116var a=n(43144) 117var r=n(60136) 118var d=n(51630) 119var l=n(67294) 120var c=n(45697) 121var u=n.n(c) 122var m=n(94184) 123var g=n.n(m) 124var v=n(69924) 125var h=n(98983) 126var p=n(56398) 127var b=n(54577) 128var f=n(79070) 129var _=n(15922) 130var C=n(16121) 131function S(e){var t=e.borders,n=e.colors,o=e.spacing,s=e.typography 132return{fontFamily:s.fontFamily,padding:"0 ".concat(o.xSmall),height:"1.3125rem",background:n.backgroundLightest,textTransformStyle:"uppercase",textFontSize:s.fontSizeXSmall,textFontWeight:s.fontWeightBold,maxWidth:"15rem",color:n.textDark,primaryColor:n.textDark,infoColor:n.textInfo,dangerColor:n.textDanger,successColor:n.textSuccess,warningColor:n.textWarning,alertColor:n.textAlert,messageColor:n.textAlert,borderWidth:t.widthSmall,borderStyle:t.style,borderRadius:"999rem"}}S["instructure"]=function(){return{height:"1.5rem"}} 133var Z,y,G,k,N,w 134var x={componentId:"dLyYq",template:function(e){return"\n\n.dLyYq_bGBk{background:".concat(e.background||"inherit",";border-radius:").concat(e.borderRadius||"inherit",";border-style:").concat(e.borderStyle||"inherit",";border-width:").concat(e.borderWidth||"inherit",";display:block;font-family:").concat(e.fontFamily||"inherit",";line-height:calc(").concat(e.height||"inherit"," - ").concat(e.borderWidth||"inherit","*2);padding:").concat(e.padding||"inherit","}\n\n.dLyYq_bGBk,.dLyYq_eWKC{box-sizing:border-box}\n\n.dLyYq_eWKC{font-size:").concat(e.textFontSize||"inherit",";font-weight:").concat(e.textFontWeight||"inherit",";letter-spacing:0.0625rem;text-transform:").concat(e.textTransformStyle||"inherit","}\n\n.dLyYq_ddES{border-color:").concat(e.color||"inherit",";color:").concat(e.color||"inherit","}\n\n.dLyYq_bXiG{border-color:").concat(e.primaryColor||"inherit",";color:").concat(e.primaryColor||"inherit","}\n\n.dLyYq_pypk,.dLyYq_ecos{border-color:").concat(e.infoColor||"inherit",";color:").concat(e.infoColor||"inherit","}\n\n.dLyYq_cOXX{border-color:").concat(e.successColor||"inherit",";color:").concat(e.successColor||"inherit","}\n\n.dLyYq_zGXc{border-color:").concat(e.dangerColor||"inherit",";color:").concat(e.dangerColor||"inherit","}\n\n.dLyYq_eRqw{border-color:").concat(e.warningColor||"inherit",";color:").concat(e.warningColor||"inherit","}\n\n.dLyYq_elxg{border-color:").concat(e.messageColor||"inherit",";color:").concat(e.messageColor||"inherit","}\n\n.dLyYq_bgqc{border-color:").concat(e.alertColor||"inherit",";color:").concat(e.alertColor||"inherit","}")},root:"dLyYq_bGBk",text:"dLyYq_eWKC",default:"dLyYq_ddES",primary:"dLyYq_bXiG",info:"dLyYq_pypk",oldPrimary:"dLyYq_ecos",success:"dLyYq_cOXX",danger:"dLyYq_zGXc",warning:"dLyYq_eRqw",message:"dLyYq_elxg",alert:"dLyYq_bgqc"} 135var O=(Z=(0,C.j)(),y=(0,f.x)("8.0.0",{text:"children",variant:"color"}),G=(0,b.YY)(S,x),Z(k=y(k=G(k=(w=N=function(e){(0,r.Z)(n,e) 136var t=(0,d.Z)(n) 137function n(e){var o;(0,i.Z)(this,n) 138o=t.call(this,e) 139o.state={truncated:false} 140return o}(0,a.Z)(n,[{key:"handleTruncation",value:function(e){this.setState({truncated:e})}},{key:"renderPill",value:function(e,t){var n,i=this 141var a=this.props,r=a.margin,d=a.children,c=a.variant,u=a.color,m=a.as,h=a.elementRef,b=a.text,f=(0,s.Z)(a,["margin","children","variant","color","as","elementRef","text"]) 142var C=(0,_.ry)(f) 143var S="function"===typeof t?t(C):C 144var Z=c 145Z?"primary"===c&&(Z="oldPrimary"):Z=u 146var y=g()((n={},(0,o.Z)(n,x.root,true),(0,o.Z)(n,x.truncated,this.state.truncated),(0,o.Z)(n,x[Z],true),n)) 147return l.createElement(v.G,Object.assign({},S,{as:m,elementRef:h,margin:r,padding:"0",maxWidth:this.theme.maxWidth,background:"transparent",borderRadius:"pill",borderWidth:"0",display:"inline-block",position:"relative",withFocusOutline:e,focusColor:"info"}),l.createElement("span",{className:y},l.createElement("span",{className:x.text},l.createElement(p.Y,{onUpdate:function(e){i.handleTruncation(e)}},d||b))))}},{key:"render",value:function(){var e=this 148return this.state.truncated?l.createElement(h.u,{renderTip:this.props.children||this.props.text},(function(t){var n=t.focused,o=t.getTriggerProps 149return e.renderPill(n,o)})):this.renderPill()}}]) 150n.displayName="Pill" 151return n}(l.Component),N.propTypes={as:u().elementType,children:u().node,color:u().oneOf(["primary","success","danger","info","warning","alert"]),elementRef:u().func,margin:b.j7.spacing,text:u().node,variant:u().oneOf(["default","success","danger","primary","warning","message"])},N.defaultProps={children:void 0,margin:void 0,elementRef:void 0,color:"primary"},w))||k)||k)||k)},92665:(e,t,n)=>{n.d(t,{V:()=>x}) 152var o=n(4942) 153var s=n(15671) 154var i=n(43144) 155var a=n(60136) 156var r=n(51630) 157var d=n(67294) 158var l=n(45697) 159var c=n.n(l) 160var u=n(94184) 161var m=n.n(u) 162var g=n(36849) 163var v=n(69924) 164var h=n(54577) 165var p=n(15922) 166var b=n(69505) 167var f=n(16121) 168var _=n(1413) 169var C=n(64337) 170function S(e){var t=e.borders,n=e.colors,s=e.forms,i=e.spacing,a=e.typography 171var r=function(e,n){var s 172var i=n.borderColor,a=n.borderRadius,r=n.borderStyle,d=n.borderWidth,l=n.hoverColor,c=n.iconColor,u=n.iconHoverColor,m=n.mainColor,g=n.textColor 173return s={}
173,(0,o.Z)(s,"".concat(e,"BackgroundHover"),l||(0,C._)(m,5)),(0,o.Z)(s,"".concat(e,"Background"),m),(0,o.Z)(s,"".concat(e,"BorderColor"),i),(0,o.Z)(s,"".concat(e,"BorderRadius"),a||"999rem"),(0,o.Z)(s,"".concat(e,"BorderStyle"),r||t.style),(0,o.Z)(s,"".concat(e,"BorderWidth"),d||t.widthSmall),(0,o.Z)(s,"".concat(e,"Color"),g),(0,o.Z)(s,"".concat(e,"IconColor"),c||g),(0,o.Z)(s,"".concat(e,"IconHoverColor"),u||c||g),s} 174return(0,_.Z)({fontFamily:a.fontFamily,heightSmall:"1.3125rem",heightMedium:s.inputHeightSmall,heightLarge:s.inputHeightMedium,fontSizeSmall:a.fontSizeXSmall,fontSizeMedium:a.fontSizeSmall,fontSizeLarge:a.fontSizeMedium,padding:"0 ".concat(i.xSmall),paddingSmall:"0 ".concat(i.xSmall),focusOutlineColor:n.borderBrand,focusOutlineWidth:t.widthMedium,focusOutlineStyle:t.style,maxWidth:"10rem",iconMargin:i.small,transitionTiming:"0.2s"},r("default",{borderColor:n.borderMedium,iconColor:n.textDarkest,iconHoverColor:n.textBrand,mainColor:n.textLight,textColor:n.textDarkest}),{},r("inline",{borderColor:n.borderDark,borderRadius:t.radiusMedium,iconColor:n.textDark,iconHoverColor:n.textDark,mainColor:n.textLightest,textColor:n.textDarkest}))}S["canvas-a11y"]=S["canvas-high-contrast"]=function(e){var t=e.colors 175return{defaultBackground:t.backgroundLightest,defaultBorderColor:t.borderDarkest}} 176S.canvas=function(e){return{focusOutlineColor:e["ic-brand-primary"],textColor:e["ic-brand-font-color-dark"],defaultIconColor:e["ic-brand-font-color-dark"],defaultIconHoverColor:e["ic-brand-primary"],defaultColor:e["ic-brand-font-color-dark"]}} 177var Z,y,G,k,N 178var w={componentId:"DyQTK",template:function(e){return"\n\n.DyQTK_eAEM{-ms-user-select:none;-webkit-user-select:none;align-items:center;box-sizing:border-box;display:inline-flex;font-family:".concat(e.fontFamily||"inherit",";text-align:center;user-select:none;vertical-align:middle}\n\n[dir=ltr] .DyQTK_eAEM,[dir=rtl] .DyQTK_eAEM{text-align:center}\n\n.DyQTK_doqw{font-size:").concat(e.fontSizeSmall||"inherit",";padding:").concat(e.paddingSmall||"inherit","}\n\n.DyQTK_doqw .DyQTK_eWKC{line-height:calc(").concat(e.heightSmall||"inherit"," - ").concat(e.defaultBorderWidth||"inherit","*2)}\n\n.DyQTK_doqw .DyQTK_dnnz{font-size:0.75rem}\n\n.DyQTK_ycrn{font-size:calc(").concat(e.fontSizeMedium||"inherit"," - 0.0625rem);padding:").concat(e.padding||"inherit","}\n\n.DyQTK_ycrn .DyQTK_eWKC{line-height:calc(").concat(e.heightMedium||"inherit"," - ").concat(e.defaultBorderWidth||"inherit","*2)}\n\n.DyQTK_ycrn .DyQTK_dnnz{font-size:0.75rem}\n\n.DyQTK_cMDj{font-size:calc(").concat(e.fontSizeLarge||"inherit"," - 0.0625rem);padding:").concat(e.padding||"inherit","}\n\n.DyQTK_cMDj .DyQTK_eWKC{line-height:calc(").concat(e.heightLarge||"inherit"," - ").concat(e.defaultBorderWidth||"inherit","*2)}\n\n.DyQTK_cMDj .DyQTK_dnnz{font-size:0.875rem}\n\n.DyQTK_EwaR{outline:none;overflow:visible;position:relative;touch-action:manipulation;transition:background-color ").concat(e.transitionTiming||"inherit","}\n\n.DyQTK_EwaR:before{border:").concat(e.focusOutlineWidth||"inherit"," ").concat(e.focusOutlineStyle||"inherit"," ").concat(e.focusOutlineColor||"inherit",";border-radius:").concat(e.borderRadius||"inherit",';bottom:-0.3125rem;box-sizing:border-box;content:"";left:-0.3125rem;opacity:0;pointer-events:none;position:absolute;right:-0.3125rem;top:-0.3125rem;transform:scale(0.9);transition:all ').concat(e.transitionTiming||"inherit","}\n\n.DyQTK_EwaR:not(.DyQTK_erdA){cursor:pointer}\n\n.DyQTK_EwaR:focus:before{opacity:1;transform:scale(1)}\n\n.DyQTK_EwaR.DyQTK_ywdX{cursor:not-allowed;opacity:0.5;pointer-events:none}\n\n.DyQTK_dnnz{-webkit-margin-end:0;-webkit-margin-start:").concat(e.iconMargin||"inherit",";cursor:pointer;margin-inline-end:0;margin-inline-start:").concat(e.iconMargin||"inherit",";transform:translateY(0.0625rem);transition:all ").concat(e.transitionTiming||"inherit","}\n\n[dir=ltr] .DyQTK_dnnz{margin-left:").concat(e.iconMargin||"inherit",";margin-right:0}\n\n[dir=rtl] .DyQTK_dnnz{margin-left:0;margin-right:").concat(e.iconMargin||"inherit","}\n\n.DyQTK_eWKC{max-width:").concat(e.maxWidth||"inherit",";overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
178\n\n.DyQTK_ddES{background-color:").concat(e.defaultBackground||"inherit",";border:").concat(e.defaultBorderWidth||"inherit"," ").concat(e.defaultBorderStyle||"inherit"," ").concat(e.defaultBorderColor||"inherit",";border-radius:").concat(e.defaultBorderRadius||"inherit",";color:").concat(e.defaultColor||"inherit","}\n\n.DyQTK_ddES.DyQTK_EwaR:before{border-radius:").concat(e.defaultBorderRadius||"inherit","}\n\n.DyQTK_ddES.DyQTK_EwaR:hover{background-color:").concat(e.defaultBackgroundHover||"inherit","}\n\n.DyQTK_ddES.DyQTK_erdA .DyQTK_dnnz{color:").concat(e.defaultIconColor||"inherit","}\n\n.DyQTK_ddES.DyQTK_erdA:hover .DyQTK_dnnz{color:").concat(e.defaultIconHoverColor||"inherit","}\n\n.DyQTK_eXrk{background-color:").concat(e.inlineBackground||"inherit",";border:").concat(e.inlineBorderWidth||"inherit"," ").concat(e.inlineBorderStyle||"inherit"," ").concat(e.inlineBorderColor||"inherit",";border-radius:").concat(e.inlineBorderRadius||"inherit",";color:").concat(e.inlineColor||"inherit",";cursor:text;margin:0 0.1875rem 0.1875rem}\n\n.DyQTK_eXrk.DyQTK_EwaR:before{border-radius:calc(").concat(e.inlineBorderRadius||"inherit","*1.5)}\n\n.DyQTK_eXrk.DyQTK_EwaR:hover{background-color:").concat(e.inlineBackgroundHover||"inherit","}\n\n.DyQTK_eXrk.DyQTK_erdA .DyQTK_dnnz{background-color:").concat(e.inlineIconColor||"inherit",";border-radius:50%;color:").concat(e.inlineBackground||"inherit",";font-size:0.75rem;inset-inline-end:0;inset-inline-start:auto;padding:0.25rem;position:absolute;top:0;transform:translate(40%,-40%)}\n\n[dir=ltr] .DyQTK_eXrk.DyQTK_erdA .DyQTK_dnnz{left:auto;right:0}\n\n[dir=rtl] .DyQTK_eXrk.DyQTK_erdA .DyQTK_dnnz{left:0;right:auto}\n\n.DyQTK_eXrk.DyQTK_erdA:hover .DyQTK_dnnz{background-color:").concat(e.inlineIconHoverColor||"inherit","}\n\n[dir=rtl] .DyQTK_eXrk.DyQTK_erdA .DyQTK_dnnz{transform:translate(-40%,-40%)}")},tagRoot:"DyQTK_eAEM",small:"DyQTK_doqw",text:"DyQTK_eWKC",icon:"DyQTK_dnnz",medium:"DyQTK_ycrn",large:"DyQTK_cMDj",button:"DyQTK_EwaR",dismissible:"DyQTK_erdA",disabled:"DyQTK_ywdX",default:"DyQTK_ddES",inline:"DyQTK_eXrk"} 179var x=(Z=(0,f.j)(),y=(0,h.YY)(S,w),Z(G=y(G=(N=k=function(e){(0,a.Z)(n,e) 180var t=(0,r.Z)(n) 181function n(){var e;(0,s.Z)(this,n) 182for(var o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a] 183e=t.call.apply(t,[this].concat(i)) 184e.focus=function(){e._container&&e._container.focus()} 185e.handleClick=function(t){var n=e.props,o=n.disabled,s=n.readOnly,i=n.onClick 186if(o||s){t.preventDefault() 187t.stopPropagation()}else"function"===typeof i&&i(t)} 188e.handleRef=function(t){e._container=t} 189return e}(0,i.Z)(n,[{key:"render",value:function(){var e 190var t=this.props,s=t.className,i=t.dismissible,a=t.disabled,r=t.readOnly,l=t.size,c=t.text,u=t.title,h=t.onClick,b=t.margin,f=t.variant 191var _=(e={},(0,o.Z)(e,w.tagRoot,true),(0,o.Z)(e,w[f],true),(0,o.Z)(e,w[l],l),(0,o.Z)(e,w.dismissible,i),(0,o.Z)(e,w.button,h),(0,o.Z)(e,w.disabled,a),e) 192var C=v.G.omitViewProps((0,p.cZ)(this.props,n.propTypes),n) 193return d.createElement(v.G,Object.assign({},C,{ref:this.handleRef,elementRef:this.props.elementRef,className:m()(s,_),as:h?"button":"span",margin:b,type:h?"button":null,onClick:h?this.handleClick:null,disabled:a||r,display:null,title:u||("string"===typeof c?c:null)}),d.createElement("span",{className:w.text},c),h&&i?d.createElement(g.k,{className:w.icon}):null)}},{key:"focused",get:function(){return(0,b.H)(this._container)}}]) 194n.displayName="Tag" 195return n}(d.Component),k.propTypes={className:c().string,text:c().oneOfType([c().string,c().node]).isRequired,title:c().string,disabled:c().bool,readOnly:c().bool,dismissible:c().bool,margin:h.j7.spacing,onClick:c().func,elementRef:c().func,size:c().oneOf(["small","medium","large"]),variant:c().oneOf(["default","inline"])},k.defaultProps={size:"medium",dismissible:false,variant:"default",elementRef:void 0,className:void 0,title:void 0,disabled:false,readOnly:false,margin:void 0,onClick:void 0},N))||G)||G)},22701:(e,t,n)=>{n.r(t) 196var o=n(63056) 197var s=n(67294) 198var i=n(73935) 199var a=n(79655) 200var r=n(89250) 201var d=n(69354) 202var l=n(80276) 203var c=n(23176) 204var u=n(93999) 205var m=n(61323) 206var g=n(23629) 207var v=n(69924) 208var h=n(96486) 209var p=n.n(h) 210var b=n(15809) 211var f=n(18331)
212var _=n(38496) 213var C=n(14899) 214var S=n(75149) 215let Z;(function(e){e["DueDate"]="dueDate" 216e["Alphabetical"]="alphabetical" 217e["AssignmentGroup"]="assignmentGroup"})(Z||(Z={})) 218let y;(function(e){e["NOT_STARTED"]="NOT_STARTED" 219e["NO_CHANGE"]="NO_CHANGE" 220e["PENDING"]="PENDING" 221e["COMPLETED"]="COMPLETED" 222e["FAILED"]="FAILED"})(y||(y={})) 223var G=n(99556) 224var k=n(82567) 225var N=n(84034) 226var w=n(59324) 227var x=n(52111) 228const O=(0,m.useScope)("enhanced_individual_gradebook") 229function E(e,t){return e.reduce(((e,n)=>{const o=n.assignmentsConnection.nodes 230const s=o.map((e=>Y(e,n.position,t[e.id]))) 231e.mappedAssignments.push(...s) 232const i=[] 233let a=0 234e.mappedAssignmentGroupMap[n.id]={name:n.name,assignments:n.assignmentsConnection.nodes.map((e=>{a+=e.pointsPossible 235const n=t[e.id] 236n&&i.push(n) 237return{id:e.id,name:e.name,points_possible:e.pointsPossible,submission_types:e.submissionTypes,anonymize_students:e.anonymizeStudents,omit_from_final_grade:e.omitFromFinalGrade,workflow_state:e.workflowState}})),group_weight:n.groupWeight,rules:n.rules,id:n.id,position:n.position,integration_data:{}
237,sis_source_id:null,invalid:0===a,gradingPeriodsIds:p().uniq(i)} 238return e}),{mappedAssignments:[],mappedAssignmentGroupMap:{}})}function I(e){const t={} 239const n=e.reduce(((e,n)=>{const{assignmentId:o,id:s}=n 240if(!e[o]){e[o]={} 241t[o]=n.gradingPeriodId}e[o][s]=n 242return e}),{}) 243return{assignmentGradingPeriodMap:t,assignmentSubmissionsMap:n}}function D(e){const t=e.reduce(((e,t)=>{const{user:n,courseSectionId:o,state:s}=t 244e[n.id]?e[n.id].sections.push(o):e[n.id]={...n,sections:[o],state:s} 245return e}),{}) 246return Object.values(t)}function T(e,t){return t?e.hiddenName??O.t("Student"):e.name}function M(e,t){switch(t){case Z.Alphabetical:return p().sortBy(e,"sortableName") 247case Z.DueDate:return p().sortBy(e,["sortableDueDate","sortableName"]) 248case Z.AssignmentGroup:return p().sortBy(e,["assignmentGroupPosition","sortableName"]) 249default:return e}}function A(e,t){const n=t.reduce(((e,t)=>{e[t.assignmentId]=true 250return e}),{}) 251return e.filter((e=>n[e.id]))}function P(e,t){return{max:$(Math.max(...t)),min:$(Math.min(...t)),pointsPossible:$(e.pointsPossible,"N/A"),average:$((0,C.Z)(t.reduce(((e,t)=>e+t),0)/t.length,2)),median:$(j(t,.5)),lowerQuartile:$(j(t,.25)),upperQuartile:$(j(t,.75))}}function L(e){return{assignmentId:e.assignment_id,enteredScore:e.entered_score,excused:e.excused,grade:e.grade,id:e.id,late:e.late,missing:e.missing,redoRequest:e.redo_request,score:e.score,submittedAt:e.submitted_at,userId:e.user_id,submissionType:e.submission_type,state:e.workflow_state,cachedDueDate:e.cached_due_date}}function B(e){if(!e.submissionType)return O.t("Has not submitted") 252const t=G.Z.formatDatetimeForDisplay(e.submittedAt) 253if(e.proxySubmitter)return O.t("Submitted by %{proxy} on %{date}",{proxy:e.proxySubmitter,date:t}) 254return O.t("Submitted on %{date}",{date:t})}function K(e,t){const{gradingType:n,pointsPossible:o}=e 255return t.excused?O.t("Excused"):"gpa_scale"===n?"":"letter_grade"===n||"pass_fail"===n?O.t("(%{score} out of %{points})",{points:O.n(o),score:t.enteredScore}):null===o||void 0===o?O.t("No points possible"):O.t("(out of %{points})",{points:O.n(o)})}function U(e){return{assignmentId:e.assignment_id,enteredScore:e.entered_score,excused:e.excused,grade:e.grade,id:e.id,late:e.late,missing:e.missing,score:e.score,submittedAt:e.submitted_at,state:e.workflow_state,userId:e.user_id}}function F(e){var t,n,o,s,i,a,r,d,l,c,u,m,v,h,p,b,f,_,C,S,y,G,k,N,w,x,O,E,I,D,T,M,A,P,L,B,K,U 256const F=(null===(t=g.Z.contextGet("sort_grade_columns_by"))||void 0===t?void 0:t.sortType)??Z.Alphabetical
257const R={activeGradingPeriods:null===(n=e.GRADEBOOK_OPTIONS)||void 0===n?void 0:n.active_grading_periods,changeGradeUrl:null===(o=e.GRADEBOOK_OPTIONS)||void 0===o?void 0:o.change_grade_url,contextId:null===(s=e.GRADEBOOK_OPTIONS)||void 0===s?void 0:s.context_id,contextUrl:null===(i=e.GRADEBOOK_OPTIONS)||void 0===i?void 0:i.context_url,customColumnDatumUrl:null===(a=e.GRADEBOOK_OPTIONS)||void 0===a?void 0:a.custom_column_datum_url,customColumnDataUrl:null===(r=e.GRADEBOOK_OPTIONS)||void 0===r?void 0:r.custom_column_data_url,customColumnUrl:null===(d=e.GRADEBOOK_OPTIONS)||void 0===d?void 0:d.custom_column_url,customColumnsUrl:null===(l=e.GRADEBOOK_OPTIONS)||void 0===l?void 0:l.custom_columns_url,customOptions:{allowFinalGradeOverride:(null===(c=e.GRADEBOOK_OPTIONS)||void 0===c?void 0:c.course_settings.allow_final_grade_override)??false,includeUngradedAssignments:null!==(u=e.GRADEBOOK_OPTIONS)&&void 0!==u&&u.save_view_ungraded_as_zero_to_server&&null!==(m=e.GRADEBOOK_OPTIONS)&&void 0!==m&&m.settings?"true"===e.GRADEBOOK_OPTIONS.settings.view_ungraded_as_zero:g.Z.contextGet("include_ungraded_assignments")||false,hideStudentNames:g.Z.contextGet("hide_student_names")||false,showConcludedEnrollments:!(null===(v=e.GRADEBOOK_OPTIONS)||void 0===v||null===(h=v.settings)||void 0===h||!h.show_concluded_enrollments)&&"true"===e.GRADEBOOK_OPTIONS.settings.show_concluded_enrollments,showNotesColumn:void 0!==(null===(p=e.GRADEBOOK_OPTIONS)||void 0===p||null===(b=p.teacher_notes)||void 0===b?void 0:b.hidden)&&!e.GRADEBOOK_OPTIONS.teacher_notes.hidden,showTotalGradeAsPoints:(null===(f=e.GRADEBOOK_OPTIONS)||void 0===f?void 0:f.show_total_grade_as_points)??false},downloadAssignmentSubmissionsUrl:null===(_=e.GRADEBOOK_OPTIONS)||void 0===_?void 0:_.download_assignment_submissions_url,exportGradebookCsvUrl:null===(C=e.GRADEBOOK_OPTIONS)||void 0===C?void 0:C.export_gradebook_csv_url,finalGradeOverrideEnabled:null===(S=e.GRADEBOOK_OPTIONS)||void 0===S?void 0:S.final_grade_override_enabled,gradeCalcIgnoreUnpostedAnonymousEnabled:null===(y=e.GRADEBOOK_OPTIONS)||void 0===y?void 0:y.grade_calc_ignore_unposted_anonymous_enabled,gradebookCsvProgress:null===(G=e.GRADEBOOK_OPTIONS)||void 0===G?void 0:G.gradebook_csv_progress,gradesAreWeighted:null===(k=e.GRADEBOOK_OPTIONS)||void 0===k?void 0:k.grades_are_weighted,gradingPerio
257dSet:null===(N=e.GRADEBOOK_OPTIONS)||void 0===N?void 0:N.grading_period_set,gradingSchemes:null===(w=e.GRADEBOOK_OPTIONS)||void 0===w?void 0:w.grading_schemes,gradingStandard:null===(x=e.GRADEBOOK_OPTIONS)||void 0===x?void 0:x.grading_standard,gradingStandardPointsBased:(null===(O=e.GRADEBOOK_OPTIONS)||void 0===O?void 0:O.grading_standard_points_based)||false,gradingStandardScalingFactor:(null===(E=e.GRADEBOOK_OPTIONS)||void 0===E?void 0:E.grading_standard_scaling_factor)||1,groupWeightingScheme:null===(I=e.GRADEBOOK_OPTIONS)||void 0===I?void 0:I.group_weighting_scheme,lastGeneratedCsvAttachmentUrl:null===(D=e.GRADEBOOK_OPTIONS)||void 0===D?void 0:D.attachment_url,messageAttachmentUploadFolderId:null===(T=e.GRADEBOOK_OPTIONS)||void 0===T?void 0:T.message_attachment_upload_folder_id,pointsBasedGradingSchemesFeatureEnabled:!!e.POINTS_BASED_GRADING_SCHEMES_ENABLED,publishToSisEnabled:null===(M=e.GRADEBOOK_OPTIONS)||void 0===M?void 0:M.publish_to_sis_enabled,publishToSisUrl:null===(A=e.GRADEBOOK_OPTIONS)||void 0===A?void 0:A.publish_to_sis_url,reorderCustomColumnsUrl:null===(P=e.GRADEBOOK_OPTIONS)||void 0===P?void 0:P.reorder_custom_columns_url,saveViewUngradedAsZeroToServer:null===(L=e.GRADEBOOK_OPTIONS)||void 0===L?void 0:L.save_view_ungraded_as_zero_to_server,selectedGradingPeriodId:g.Z.contextGet("gradebook_current_grading_period"),settingsUpdateUrl:null===(B=e.GRADEBOOK_OPTIONS)||void 0===B?void 0:B.settings_update_url,settingUpdateUrl:null===(K=e.GRADEBOOK_OPTIONS)||void 0===K?void 0:K.setting_update_url,sortOrder:F,teacherNotes:null===(U=e.GRADEBOOK_OPTIONS)||void 0===U?void 0:U.teacher_notes,userId:e.current_user_id} 258return R}function R(e){if(!e)return null 259return{createdAt:new Date(e.created_at),displayTotalsForAllGradingPerio
259ds:e.display_totals_for_all_grading_periods,enrollmentTermIDs:e.enrollment_term_ids,gradingPeriods:e.grading_periods.map((e=>({closeDate:new Date(e.close_date),endDate:new Date(e.end_date),id:e.id,startDate:new Date(e.start_date),isClosed:e.is_closed,title:e.title,isLast:e.is_last,weight:e.weight??0}))),id:e.id,permissions:e.permissions,title:e.title,weighted:e.weighted}}function z(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2 260const o=Number(e)/Number(t)*100 261return o%1===0?o:o.toFixed(n)}function W(e,t,n){const o=e/(t/n) 262if(!Number.isFinite(o))return o 263return(0,x.He)((0,x.cs)(e,(0,x.cs)(t,n)))}function Q(e,t,n){if(!n||!n.length||!e||!t)return"-" 264const o=z(t,e) 265const s=parseFloat(Number(o).toPrecision(4)) 266return(0,w._o)(s,n)}function q(e){let{assignmentGroupMap:t,gradeCalcIgnoreUnpostedAnonymousEnabled:n,gradingPeriodSet:o,groupWeightingScheme:s,studentId:i,submissions:a}=e 267if(!a||!i)return 268const r=R(o) 269const d=a.map((e=>({assignment_id:e.assignmentId,excused:e.excused,grade:e.grade,score:e.score,workflow_state:e.state,id:e.id}))) 270const l=(0,N.Y)({},a.map((e=>({assignment_id:e.assignmentId,cached_due_date:e.cachedDueDate,user_id:e.userId}
270))),null===r||void 0===r?void 0:r.gradingPeriods) 271const c=o&&l 272return k.Z.calculate(d,t,s??"points",n??false,c?r:void 0,c?(0,N.U)(l,i):void 0)}function $(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"No graded submissions" 273return Number.isFinite(e)&&!Number.isNaN(e)?e.toString():t}function j(e,t){const n=Math.floor(t*(e.length-1)+1)-1 274const o=(t*(e.length-1)+1)%1 275return e[n]+o*(e[n+1]-e[n])}function Y(e,t,n){const o=e.dueAt?+S.Z.parse(e.dueAt)/1e3:Number.MAX_VALUE 276return{...e,sortableName:e.name.toLowerCase(),sortableDueDate:o,assignmentGroupPosition:t,gradingPeriodId:n}}var H=n(50324) 277var V=n(46624) 278var X=n(38104) 279const J=(0,m.useScope)("enhanced_individual_gradebook") 280function ee(e){let{assignment:t,gradebookOptions:n,students:i,submissions:a,isOpen:r,onClose:d}=e 281const{userId:l}=n 282const c={...t,muted:false} 283const u=(0,s.useMemo)((()=>a.reduce(((e,t)=>{e[t.userId]=t 284return e}),{})),[a]) 285const m=(0,s.useMemo)((()=>i.reduce(((e,t)=>{const n=u[t.id] 286if(!n)return e 287e.push({...t,submittedAt:null===n||void 0===n?void 0:n.submittedAt,grade:null===n||void 0===n?void 0:n.grade,redoRequest:null===n||void 0===n?void 0:n.redoRequest,score:null===n||void 0===n?void 0:n.score}) 288return e}),[])),[i,u]) 289const g=async e=>{const n="Message failed to send" 290try{const{status:o}=await X.ZP.sendMessageStudentsWho(e.recipientsIds,e.subject,e.body,`course_${t.courseId}`,e.mediaFile,e.attachmentIds) 291if(202!==o)throw new Error(n);(0,H.au)(J.t("Your message was sent!"))() 292d()}catch(e){(0,H.IM)(J.t("There was a problem sending your message."))(new Error(J.t("%{errorMessage}",{errorMessage:n})))}} 293if(!r||!l)return null 294return(0,o.Z)(V["default"],{assignment:c,students:m,onClose:d,onSend:g,userId:l,messageAttachmentUploadFolderId:""})}var te=n(60124) 295var ne=n(85779) 296var oe=n(76092) 297var se=n(35498) 298var ie=n(34651) 299var ae=n(86333) 300var re=n(75935) 301var de=n(1958) 302var le,ce,ue 303const me=(0,m.useScope)("enhanced_individual_gradebook") 304const{Option:ge}=de.G 305function ve(e){let{disabled:t,gradingType:n,onGradeInputChange:i}=e 306const[a,r]=(0,s.useState)("") 307const[d,l]=(0,s.useState)("") 308const c=(0,s.useCallback)((()=>{const e=["percent","points","letter_grade","gpa_scale"] 309if(e.includes(n))return"text" 310return"select"}),[n]);(0,s.useEffect)((()=>{i("text"===c()?a:d)}),[a,d,i,c]) 311return s.createElement(s.Fragment,null,"text"===c()?(0,o.Z)(re.o,{renderLabel:(0,o.Z)(ae.c,{},void 0,me.t("Default Grade")),display:"inline-block",width:"4rem",value:a,disabled:t,onChange:e=>r(e.target.value)}):(0,o.Z)(de.G,{value:d,defaultValue:d,renderLabel:"Uncontrolled Select",onChange:(e,t)=>
311{let{value:n}=t 312return l(n)}},void 0,le||(le=(0,o.Z)(ge,{id:"emptyOption",value:""},void 0,"---")),ce||(ce=(0,o.Z)(ge,{id:"completeOption",value:"complete"},void 0,"Complete")),ue||(ue=(0,o.Z)(ge,{id:"incompleteOption",value:"incomplete"},void 0,"Incomplete"))))}var he=n(79206) 313var pe=n(15450) 314async function be(e){const{json:t,response:n,link:o}=await(0,pe.Z)(e) 315return{data:t,status:n.status,link:o}}const fe=()=>{const[e,t]=(0,s.useState)(y.NOT_STARTED) 316const[n,o]=(0,s.useState)("") 317const[i,a]=(0,s.useState)([]) 318const r=(0,s.useCallback)((async(e,n,s)=>{t(y.PENDING) 319a([]) 320o("") 321try{const{status:i,data:r}=await be({path:`${e}/gradebook/update_submission`,body:s,method:"POST"}) 322if(201!==i)throw new Error 323a(r.map((e=>{let{submission:t}=e 324return U(t)}))) 325o(n) 326t(y.COMPLETED)}catch(e){t(y.FAILED)}}),[]) 327return{defaultGradeStatus:e,savedGrade:n,setGrades:r,updatedSubmissions:i}} 328const{Header:_e,Body:Ce}=te.u_ 329const Se=(0,m.useScope)("enhanced_individual_gradebook") 330function Ze(e){let{assignment:t,gradebookOptions:n,modalOpen:i,submissions:a,handleClose:r,handleSetGrades:d}=e 331const{contextUrl:l}=n 332const[c,u]=(0,s.useState)("") 333const[m,g]=(0,s.useState)(false) 334const{defaultGradeStatus:h,savedGrade:p,setGrades:f,updatedSubmissions:_}=fe() 335const C=e=>null!==e&&"MI"===e.toUpperCase() 336const S=(0,s.useCallback)((e=>C(p)?Se.t({one:"1 student marked as missing",other:"%{count} students marked as missing"},{count:e}):Se.t({one:"1 student score updated",other:"%{count} student scores updated"},{count:e})),[p]);(0,s.useEffect)((()=>{switch(h){case y.FAILED:(0,H.IM)(Se.t("Failed to set default grade"))(new Error) 337break 338case y.COMPLETED:(0,H.au)(S(_.length))() 339d(_)}}),[h,d,S,_]) 340const Z=async()=>{if(!l)return 341if((0,he.o_)(c)){(0,H.IM)(Se.t("Default grade cannot be set to %{ex}",{ex:"EX"}))(new Error) 342return}const e=C(c)?{late_policy_status:"missing"}:{grade:c} 343const t={submissions:{},dont_overwrite_grades:!m} 344a.forEach((n=>{t.submissions[`submission_${n.userId}`]={assignment_id:n.assignmentId,user_id:n.userId,set_by_default_grade:true,...e}})) 345await f(l,c,t)} 346return(0,o.Z)(te.u_,{open:i,onDismiss:()=>{},size:"small",label:"Set Default Grade Modal",shouldCloseOnDocumentClick:false,theme:{mediumMaxWidth:"40em"}},void 0,(0,o.Z)(_e,{},void 0,(0,o.Z)(ne.P,{placement:"end",offset:"small",onClick:()=>r(),screenReaderLabel:"Close Submission Detail"}),(0,o.Z)(se.X,{level:"h3"},void 0,Se.t("Default Grade for")," ",t.name)),(0,o.Z)(Ce,{padding:"none"},void 0,(0,o.Z)(v.G,{as:"div",margin:"medium"},void 0,"percent"===t.gradingType?(0,o.Z)(ie.x,{},void 0,Se.t("Give all students the same")," ",(0,o.Z)(v.G,{as:"b"},void 0,Se.t("percent"))," ",Se.t("grade for")," ",(0,o.Z)(v.G,{as:"i"},void 0,t.name)," ",Se.t("by entering and submitting a grade value below:")):(0,o.Z)(ie.x,{},void 0,Se.t("Give all students the same grade for")," ",(0,o.Z)(v.G,{as:"i"},void 0,t.name)," ",Se.t("by entering and submitting a grade value below:"))),(0,o.Z)(v.G,{as:"div",margin:"small medium"},void 0,(0,o.Z)(ve,{disabled:h===y.PENDING,gradingType:t.gradingType,onGradeInputChange:u})),(0,o.Z)(v.G,{as:"div",margin:"small medium"},void 0,(0,o.Z)(oe.XZ,{label:Se.t("Overwrite already-entered grades"),checked:m,disabled:h===y.PENDING,onChange:e=>g(e.target.checked)}))),(0,o.Z)(te.u_.Footer,{},void 0,(0,o.Z)(b.z,{onClick:Z,type:"submit",disabled:h===y.PENDING||!c},void 0,Se.t("Set Default Grade"))))}var ye=n(6507) 347var Ge=n.n(ye) 348async function ke(){return(await Promise.all([n.e(32842),n.e(89014),n.e(89448)]).then(n.bind(n,47320))).default}const Ne=(0,m.useScope)("enhanced_individual_gradebook") 349function we(e){let{assignment:t,contextUrl:n,submissions:s,handleGradeChange:i}=e 350const a=s.reduce(((e,t)=>{const{userId:n,assignmentId:o}=t 351e[n]={[`assignment_${o}`]:t} 352return e}),{}) 353const r={id:t.id,points_possible:t.pointsPossible,grading_type:t.gradingType,name:t.name} 354if(!n)return null 355const d=async()=>{const e=await ke() 356const t={assignment:r,students:a,context_url:n} 357const o=new e(t) 358o.show((()=>{}))} 359Ge().subscribe("submissions_updated",(e=>{const t=e.map((e=>U(e))) 360i(t)})) 361return(0,o.Z)(b.z,{color:"secondary",onClick:d},void 0,Ne.t("Curve Grades"))}var xe=n(1413) 362var Oe=n(15671) 363var Ee=n(43144) 364var Ie=n(60136) 365var De=n(51630) 366var Te=n(94855)
367var Me=s.createElement("path",{d:"M1764.09785,1355.41151 L1920,1511.31366 L1556.92661,1874.38704 L363.073389,1874.38704 L0,1511.31366 L155.902148,1355.41151 L454.365453,1653.87481 L1465.63455,1653.87481 L1764.09785,1355.41151 Z M1070.3333,-7.10542736e-15 L1070.3333,949.966693 L1320.83519,699.354542 L1476.73734,855.25669 L957.761801,1374.23223 L438.786264,855.25669 L594.688412,699.354542 L849.710807,954.376938 L849.710807,-7.10542736e-15 L1070.3333,-7.10542736e-15 Z",fillRule:"evenodd",stroke:"none",strokeWidth:"1"}) 368var Ae=function(e){(0,Ie.Z)(n,e) 369var t=(0,De.Z)(n) 370function n(){(0,Oe.Z)(this,n) 371return t.apply(this,arguments)}(0,Ee.Z)(n,[{key:"render",value:function(){return s.createElement(Te.q,Object.assign({},this.props,{name:"IconDownload",viewBox:"0 0 1920 1920"}),Me)}}]) 372n.displayName="IconDownloadSolid" 373return n}(s.Component) 374Ae.glyphName="download" 375Ae.variant="Solid" 376Ae.propTypes=(0,xe.Z)({},Te.q.propTypes) 377var Pe=n(77197) 378n(38593) 379n(60314) 380n(72877) 381const Le=(0,m.useScope)("submissions") 382const Be=3 383function Ke(e,t){let n=0 384let o=false 385const s=ENV.SUBMISSION_DOWNLOAD_DIALOG_TITLE||Le.t("Download Assignment Submissions") 386Ge()("#download_submissions_dialog").dialog({title:s,close(){o=true}}).on("dialogclose",t) 387Ge()("#download_submissions_dialog .progress").progressbar({value:0}) 388const i=function(){if(o||0===Ge()("#download_submissions_dialog:visible").length)return 389Ge()("#download_submissions_dialog .status_loader").css("visibility","visible") 390let t=null 391Ge().ajaxJSON(e,"GET",{},(n=>{if(n&&n.attachment){const s=n.attachment 392if("zipped"===s.workflow_state){Ge()("#download_submissions_dialog .progress").progressbar("value",100) 393const t=Le.t("#submissions.finished_redirecting","Finished! Redirecting to File...") 394const n=Le.t("Click here to download %{size_of_file}",{size_of_file:s.readable_size}) 395const o=`<a href="${(0,Pe.ZP)(e)}"><b>${(0,Pe.ZP)(n)}</b></a>` 396Ge()("#download_submissions_dialog .status").html(`${(0,Pe.ZP)(t)}<br>${Ge().raw(o)}`) 397Ge()("#download_submissions_dialog .status_loader").css("visibility","hidden") 398window.location.href=e 399return}if("errored"===s.workflow_state){Ge()("#download_submissions_dialog .progress").progressbar("value",100) 400Ge()("#download_submissions_dialog .status").text(Le.t("No submissions to zip. Please try again after student submissions.")) 401o=true}else{let n=parseInt(s.file_state,10) 402Number.isNaN(Number(n))&&(n=0) 403n+=5 404Ge()("#download_submissions_dialog .progress").progressbar("value",n) 405let o=null 406o=n>=95?Le.t("#submissions.creating_zip","Creating zip file..."):Le.t("#submissions.gathering_files_progress","Gathering Files (%{progress})...",{progress:Le.toPercentage(n)}) 407Ge()("#download_submissions_dialog .status").text(o);(n<=5||n===t)&&Ge().ajaxJSON(`${e}&compile=1`,"GET",{},(()=>{}),(()=>{})) 408t=n}}Ge()("#download_submissions_dialog .status_loader").css("visibility","hidden") 409setTimeout(i,3e3)}),(()=>{n+=1 410if(n>Be){Ge()("#download_submissions_dialog .progress").progressbar("value",100) 411Ge()("#download_submissions_dialog .status").text(Le.t("Something went wrong downloading submissions. Please try again later.")) 412o=true}Ge()("#download_submissions_dialog .status_loader").css("visibility","hidden") 413setTimeout(i,1e3)}))} 414i()}var Ue,Fe 415const Re=(0,m.useScope)("enhanced_individual_gradebook") 416function ze(e){let{downloadSubmissionsUrl:t}=e 417const n=()=>{Ke(t,(()=>{}))} 418return s.createElement(s.Fragment,null,(0,o.Z)(b.z,{color:"secondary",onClick:n},void 0,Re.t("Download all submissions")),(0,o.Z)("div",{id:"download_submissions_dialog",style:{display:"none"}},void 0,Ue||(Ue=(0,o.Z)(Ae,{})),(0,o.Z)(v.G,{as:"span",margin:"0 0 0 xx-small"},void 0,(0,o.Z)(ie.x,{weight:"bold"},void 0,Re.t("Your student submissions are being gathered")," "),Re.t("and compressed into a zip file. This may take some time, depending on the size and number of submission files.")),Fe||(Fe=(0,o.Z)(v.G,{as:"div",className:"progress",margin:"small"})),(0,o.Z)(v.G,{as:"div",className:"status_box",textAlign:"center"},void 0,Re.t("Loading"),(0,o.Z)(v.G,{as:"span",margin:"0 0 0 xx-small",className:"status"},void 0,Re.t("Gathering Files...")))))}var We,Qe,qe 419const $e=(0,m.useScope)("enhanced_individual_gradebook") 420function je(e){let{assignment:t,assignmentGroupInvalid:n,gradebookOptions:i,students:a=[],submissions:r=[],handleSetGrades:d}=e 421const{gradedSubmissions:l,scores:c}
421=(0,s.useMemo)((()=>({gradedSubmissions:r.filter((e=>null!==e.score&&void 0!==e.score)),scores:r.map((e=>e.score??0))})),[r]) 422if(!t)return(0,o.Z)(v.G,{as:"div","data-testid":"assignment-information-empty"},void 0,(0,o.Z)(v.G,{as:"div",className:"row-fluid"},void 0,(0,o.Z)(v.G,{as:"div",className:"span4"},void 0,(0,o.Z)(v.G,{as:"h2"},void 0,$e.t("Assignment Information"))),(0,o.Z)(v.G,{as:"div",className:"span8 pad-box top-only"},void 0,(0,o.Z)(v.G,{as:"p",className:"submission_selection"},void 0,$e.t("Select an assignment to view additional information here."))))) 423const{downloadAssignmentSubmissionsUrl:u,contextUrl:m,groupWeightingScheme:g}=i 424const h=(u??"").replace(":assignment",t.id) 425const{hasSubmittedSubmissions:b,submissionTypes:C,htmlUrl:S}=t 426const Z=()=>{const e=["online_upload","online_text_entry","online_url"] 427const t=p().intersection(C,e) 428return b&&p().some(t)} 429const y=()=>`${m}/gradebook/speed_grader?assignment_id=${t.id}` 430const G=()=>(n??false)&&"percent"===g 431return(0,o.Z)(v.G,{as:"div"},void 0,(0,o.Z)(v.G,{as:"div",className:"row-fluid"},void 0,We||(We=(0,o.Z)(v.G,{as:"div",className:"span4"},void 0,(0,o.Z)(v.G,{as:"h2"},void 0,"Assignment Information"))),(0,o.Z)(v.G,{as:"div",className:"span8"},void 0,(0,o.Z)(v.G,{as:"h3",className:"assignment_selection","data-testid":"assignment-information-name"},void 0,(0,o.Z)(_.r,{href:S,isWithinText:false},void 0,t.name)),t.omitFromFinalGrade?s.createElement(s.Fragment,null,(0,o.Z)("i",{className:"icon-warning"},void 0,(0,o.Z)(v.G,{as:"span",className:"screenreader-only"},void 0,$e.t("Warning")))," ",$e.t("This assignment does not count toward the final grade.")):G()?(0,o.Z)(v.G,{as:"span",className:"text-error"},void 0,(0,o.Z)(_.r,{href:S,isWithinText:false,renderIcon:Qe||(Qe=(0,o.Z)(f.v,{size:"x-small"}))},void 0,qe||(qe=(0,o.Z)(ae.c,{},void 0,"Warning")),"Assignments in this group have no points possible and cannot be included in grade calculation.")):null,(0,o.Z)(v.G,{as:"div"},void 0,(0,o.Z)(_.r,{href:y(),isWithinText:false},void 0,$e.t("See this assignment in speedgrader"))),Z()&&(0,o.Z)(v.G,{as:"div",margin:"small 0 0 0"},void 0,(0,o.Z)(ze,{downloadSubmissionsUrl:h})),(0,o.Z)(v.G,{as:"div",className:"pad-box no-sides"},void 0,(0,o.Z)(v.G,{as:"p"},void 0,(0,o.Z)(v.G,{as:"strong"},void 0,$e.t("Submission types:")," ",t.submissionTypes)),(0,o.Z)(v.G,{as:"p"},void 0,(0,o.Z)(v.G,{as:"strong"},void 0,$e.t("Graded submissions:")," ",l.length))),(0,o.Z)(Ye,{assignment:t,scores:c}),(0,o.Z)(He,{assignment:t,submissions:r,students:a,gradebookOptions:i,handleSetGrades:d}))))}function Ye(e){let{assignment:t,scores:n}=e 432const{average:i,max:a,min:r}=(0,s.useMemo)((()=>P(t,n)),[t,n]) 433return(0,o.Z)(v.G,{as:"div",className:"pad-box bottom-only ic-Table-responsive-x-scroll"},void 0,(0,o.Z)("table",{className:"ic-Table"},void 0,(0,o.Z)("thead",{},void 0,(0,o.Z)("tr",{},void 0,(0,o.Z)("th",{},void 0,$e.t("Points possible")),(0,o.Z)("th",{},void 0,$e.t("Average Score")),(0,o.Z)("th",{},void 0,$e.t("High Score")),(0,o.Z)("th",{},void 0,$e.t("Low Score")))),(0,o.Z)("tbody",{},void 0,(0,o.Z)("tr",{},void 0,(0,o.Z)("td",{},void 0,t.pointsPossible?t.pointsPossible:$e.t("No points possible")),(0,o.Z)("td",{},void 0,i),(0,o.Z)("td",{},void 0,a),(0,o.Z)("td",{},void 0,r)))))}function He(e){let{assignment:t,students:n,submissions:i,gradebookOptions:a,handleSetGrades:r}=e 434const[d,l]=(0,s.useState)(false) 435const[c,u]=(0,s.useState)(false) 436const m=(0,s.useCallback)((e=>{u(false) 437e.length&&r(e)}),[r]) 438return s.createElement(s.Fragment,null,!a.customOptions.hideStudentNames&&(0,o.Z)(v.G,{as:"div",className:"pad-box no-sides"},void 0,(0,o.Z)(b.z,{color:"secondary",onClick:()=>l(true)},void 0,$e.t("Message students who...")),(0,o.Z)(ee,{assignment:t,gradebookOptions:a,students:n,submissions:i,isOpen:d,onClose:()=>l(false)})),(0,o.Z)(v.G,{as:"div",className:"pad-box no-sides"},void 0,s.createElement(s.Fragment,null,(0,o.Z)(b.z,{color:"secondary",onClick:()=>u(true)},void 0,$e.t("Set default grade")),(0,o.Z)(Ze,{assignment:t,gradebookOptions:a,submissions:i,modalOpen:c,handleClose:()=>u(false),handleSetGrades:m}))),(0,o.Z)(v.G,{as:"div",className:"pad-box no-sides"},void 0,t.pointsPossible?(0,o.Z)(we,{assignment:t,submissions:i,handleGradeChange:m,contextUrl:a.contextUrl}):null))}var Ve=n(31230) 439const Xe=Ve.ZP` 440 query GradebookQuery($courseId: ID!) { 441 course(id: $courseId) { 442 enrollmentsConnection( 443 filter: { 444 states: [active, invited, completed] 445 types: [StudentEnrollment, StudentViewEnrollment] 446 } 447 ) { 448 nodes { 449 user { 450 id: _id 451 name 452 sortableName 453 } 454 courseSectionId 455 state 456 } 457 } 458 sectionsConnection { 459 nodes { 460 id: _id 461 name 462 } 463 } 464 submissionsConnection( 465 filter: {states: [graded, pending_review, submitted, ungraded, unsubmitted]} 466 ) { 467 nodes { 468 grade 469 id: _id 470 score 471 assignmentId 472 redoRequest 473 submittedAt 474 userId 475 state
476 gradingPeriodId 477 } 478 } 479 assignmentGroupsConnection { 480 nodes { 481 id: _id 482 name 483 groupWeight 484 rules { 485 dropHighest 486 dropLowest 487 } 488 state 489 position 490 assignmentsConnection(filter: {gradingPeriodId: null}) { 491 nodes { 492 anonymizeStudents 493 assignmentGroupId 494 gradingType 495 id: _id 496 name 497 omitFromFinalGrade 498 pointsPossible 499 submissionTypes 500 dueAt 501 groupCategoryId 502 gradeGroupStudentsIndividually 503 allowedAttempts 504 anonymousGrading 505 courseId 506 gradesPublished 507 htmlUrl 508 moderatedGrading: moderatedGradingEnabled 509 postManually 510 published 511 hasSubmittedSubmissions 512 } 513 } 514 } 515 } 516 } 517 } 518` 519const Je=Ve.ZP` 520 query GradebookStudentQuery($courseId: ID!, $userIds: [ID!]) { 521 course(id: $courseId) { 522 usersConnection( 523 filter: { 524 enrollmentTypes: [StudentEnrollment, StudentViewEnrollment] 525 enrollmentStates: [active, invited, completed] 526 userIds: $userIds 527 } 528 ) { 529 nodes { 530 enrollments(courseId: $courseId) { 531 id: _id 532 grades { 533 unpostedCurrentGrade 534 unpostedCurrentScore 535 unpostedFinalGrade 536 unpostedFinalScore 537 } 538 section { 539 id: _id 540 name 541 } 542 } 543 id: _id 544 loginId 545 name 546 } 547 } 548 submissionsConnection( 549 studentIds: $userIds 550 filter: {states: [graded, pending_review, submitted, ungraded, unsubmitted]} 551 ) { 552 nodes { 553 grade 554 id: _id 555 score 556 enteredScore 557 assignmentId 558 submissionType 559 submittedAt 560 state 561 proxySubmitter 562 excused 563 late 564 latePolicyStatus 565 missing 566 userId 567 cachedDueDate
568 gradingPeriodId 569 } 570 } 571 } 572 } 573` 574const et=Ve.ZP` 575 query GradebookSubmissionCommentsQuery($courseId: ID!, $submissionId: ID!) { 576 submission(id: $submissionId) { 577 commentsConnection { 578 nodes { 579 id: _id 580 comment 581 mediaObject { 582 id: _id 583 mediaDownloadUrl 584 } 585 attachments { 586 id: _id 587 displayName 588 mimeClass 589 url 590 } 591 author { 592 name 593 id: _id 594 avatarUrl 595 htmlUrl(courseId: $courseId) 596 } 597 updatedAt 598 } 599 } 600 } 601 } 602` 603const tt=(e,t)=>{const[n,o]=(0,s.useState)() 604const[i,a]=(0,s.useState)() 605const{data:r,error:d,loading:l}=(0,u.aM)(Je,{variables:{courseId:e,userIds:t},fetchPolicy:"cache-and-network",skip:!t});(0,s.useEffect)((()=>{if(!t){o(void 0) 606a(void 0)}}),[t]);(0,s.useEffect)((()=>{if(null!==r&&void 0!==r&&r.course){o(r.course.usersConnection.nodes[0]) 607a(r.course.submissionsConnection.nodes)}}),[r,d]) 608const c=(0,s.useCallback)((e=>{a((t=>{if(!t)return 609const n=t.findIndex((t=>t.id===e.id)) 610n>-1&&(t[n]={...t[n],...e}) 611return[...t]}))}),[a]) 612return{currentStudent:n,studentSubmissions:i,loadingStudent:l,updateSubmissionDetails:c}} 613const nt=(0,m.useScope)("enhanced_individual_gradebook_content_selection") 614const ot=nt.t("No Student Selected") 615const st=nt.t("No Assignment Selected") 616const it={id:"-1",name:ot} 617const at={id:"-1",name:st} 618const rt=["active","invited"] 619const dt=e=>{let{students:t,selectedSection:n,showConcludedEnrollments:o}=e 620const[i,a]=(0,s.useState)();(0,s.useEffect)((()=>{if(!t)return 621const e=[...rt,...o?["completed"]:[]] 622const s=t.filter((t=>e.includes(t.state)&&(!n||t.sections.includes(n)))) 623const i=[it,...s.map((e=>({id:e.id,name:e.sortableName,data:e})))] 624a(i)}),[t,n,a,o]) 625return{studentDropdownOptions:i}} 626const lt=e=>{let{assignments:t,sortOrder:n,selectedStudentId:o,studentSubmissions:i,selectedGradingPeriodId:a}=e
627const[r,d]=(0,s.useState)();(0,s.useEffect)((()=>{if(!t)return 628const e=M(t,n) 629let s=o&&i?A(e,i):e 630a&&(s=s.filter((e=>e.gradingPeriodId===a))) 631const r=[at,...s.map((e=>({id:e.id,name:e.name,data:e})))] 632d(r)}),[t,n,o,i,a,d]) 633return{assignmentDropdownOptions:r}} 634var ct 635const ut=(0,m.useScope)("enhanced_individual_gradebook") 636function mt(e){var t,n 637let{courseId:i,students:a,assignments:r,selectedAssignmentId:d,selectedStudentId:l,gradebookOptions:u,onAssignmentChange:m,onStudentChange:g}=e 638const[h,p]=(0,s.useState)(0) 639const[b,f]=(0,s.useState)(0) 640const{studentSubmissions:_}=tt(i,l) 641const{sortOrder:C,selectedGradingPeriodId:S,selectedSection:Z,customOptions:{showConcludedEnrollments:y}}=u 642const{studentDropdownOptions:G}=dt({students:a,selectedSection:Z,showConcludedEnrollments:y}) 643const{assignmentDropdownOptions:k}=lt({assignments:r,sortOrder:C,studentSubmissions:_,selectedStudentId:l,selectedGradingPeriodId:S});(0,s.useEffect)((()=>{if(!G)return 644if(l){const e=G.findIndex((e=>e.id===l)) 645if(-1!==e)p(e) 646else{p(0) 647g(void 0)}}}),[l,G,p,g]);(0,s.useEffect)((()=>{if(!k)return 648if(d){const e=k.findIndex((e=>e.id===d)) 649if(e>=0)f(e) 650else{f(0) 651m(void 0)}}}),[k,d,m,f]) 652if(!G||!k)return ct||(ct=(0,o.Z)(c.Z,{})) 653const N=(e,t)=>{var n 654const o=(e?e.target.selectedIndex:t)??0 655p(o) 656const s=null===(n=G[o])||void 0===n?void 0:n.data 657g(null===s||void 0===s?void 0:s.id)} 658const w=(e,t)=>{var n 659const o=(e?e.target.selectedIndex:t)??0 660f(o) 661const s=null===(n=k[o])||void 0===n?void 0:n.data 662m(null===s||void 0===s?void 0:s.id)} 663const{hideStudentNames:x}=u.customOptions 664return s.createElement(s.Fragment,null,(0,o.Z)(v.G,{as:"div",className:"row-fluid"},void 0,(0,o.Z)(v.G,{as:"div",className:"span12"},void 0,(0,o.Z)(v.G,{as:"h2"},void 0,ut.t("Content Selection")))),(0,o.Z)(v.G,{as:"div",className:"row-fluid pad-box bottom-only","data-testid":"content-selection-student"},void 0,(0,o.Z)(v.G,{as:"div",className:"span4 text-right-responsive"},void 0,(0,o.Z)("label",{htmlFor:"student_select",style:{textAlign:"right",display:"block"}},void 0,ut.t("Select a student"))),(0,o.Z)(v.G,{as:"div",className:"span8"},void 0,(0,o.Z)("select",{className:"student_select",onChange:N,value:null===(t=G[h])||void 0===t?void 0:t.id,"data-testid":"content-selection-student-select"},void 0,G.map((e=>(0,o.Z)("option",{value:e.id},e.id,e.data?T(e.data,x):e.name)))),(0,o.Z)(v.G,{as:"div",className:"row-fluid pad-box bottom-only student_navigation"},void 0,(0,o.Z)(v.G,{as:"div",className:"span4"},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-block next_object",disabled:h<=1,onClick:()=>N(void 0,h-1)},void 0,ut.t("Previous Student"))),(0,o.Z)(v.G,{as:"div",className:"span4"},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-block next_object",disabled:h>=G.length-1,onClick:()=>N(void 0,h+1)},void 0,ut.t("Next Student")))))),(0,o.Z)(v.G,{as:"div",className:"row-fluid pad-box bottom-only","data-testid":"content-selection-assignment"},void 0,(0,o.Z)(v.G,{as:"div",className:"span4 text-right-responsive"},void 0,(0,o.Z)("label",{htmlFor:"assignment_select",style:{textAlign:"right",display:"block"}},void 0,ut.t("Select an assignment"))),(0,o.Z)(v.G,{as:"div",className:"span8"},void 0,(0,o.Z)("select",{className:"assignment_select",onChange:w,value:null===(n=k[b])||void 0===n?void 0:n.id,"data-testid":"content-selection-assignment-select"},void 0,k.map((e=>(0,o.Z)("option",{value:e.id},e.id,e.name)))),(0,o.Z)(v.G,{as:"div",className:"row-fluid pad-box bottom-only assignment_navigation"},void 0,(0,o.Z)(v.G,{as:"div",className:"span4"},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-block next_object",disabled:b<=1,onClick:()=>w(void 0,b-1)},void 0,ut.t("Previous Assignment"))),(0,o.Z)(v.G,{as:"div",className:"span4"},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-block next_object",disabled:b>=k.length-1,onClick:()=>w(void 0,b+1)},void 0,ut.t("Next Assignment")))))))}var gt=n(42931) 665const vt=(0,m.useScope)("enhanced_individual_gradebook_submit_score") 666const ht=()=>{const[e,t]=(0,s.useState)(y.NOT_STARTED) 667const[n,o]=(0,s.useState)(new Error(""))
668const[i,a]=(0,s.useState)(null) 669const r=async(e,n)=>{t(y.PENDING) 670if(!n){o(new Error("Error exporting gradebook, export URL not found")) 671t(y.FAILED) 672return}if(!e){o(new Error("Error exporting gradebook, user ID not found")) 673t(y.FAILED) 674return}try{const s=(await(0,pe.Z)({path:n,method:"POST"})).json 675const i=window.setInterval((async()=>{const n=(await(0,pe.Z)({path:`/api/v1/progress/${s.progress_id}`,method:"GET"})).json 676if("running"===n.workflow_state||"queued"===n.workflow_state)return 677if("completed"===n.workflow_state){const n=(await(0,pe.Z)({path:`/api/v1/users/${e}/files/${s.attachment_id}`,method:"GET"})).json 678t(y.COMPLETED) 679a(n)}if("failed"===n.workflow_state){clearInterval(i) 680const e=n.message 681o(new Error(e?vt.t("%{message}",{message:e}):vt.t("There was an error exporting the gradebook"))) 682t(y.FAILED)}clearInterval(i)}),2e3)}catch(e){o(e) 683t(y.FAILED)}} 684return{exportGradebook:r,attachmentStatus:e,attachmentError:n,attachment:i}} 685const pt=(0,m.useScope)("enhanced_individual_gradebook") 686function bt(e){let{lastGeneratedCsvAttachmentUrl:t,gradebookCsvProgress:n,userId:i,exportGradebookCsvUrl:a}=e
687const[r,d]=(0,s.useState)(t) 688const[l,c]=(0,s.useState)(null===n||void 0===n?void 0:n.progress.updated_at) 689const u=(0,s.useRef)(null) 690const{exportGradebook:m,attachmentStatus:g,attachmentError:h,attachment:p}=ht();(0,s.useEffect)((()=>{g===y.FAILED&&(0,H.IM)("Failed to export gradebook")(h) 691if(g===y.COMPLETED&&null!==u&&void 0!==u&&u.current&&null!==p&&void 0!==p&&p.url){d(p.url) 692c(p.updated_at)}}),[g,h,p]);(0,s.useEffect)((()=>{if(r&&g===y.COMPLETED){var e 693null===(e=u.current)||void 0===e||e.click()}}),[r,g]) 694const f=async()=>{i&&await m(i,a)} 695const C=e=>{const t=G.Z.formatDatetimeForDisplay(e) 696return pt.t("Download Scores Generated on %{date}",{date:t})} 697return(0,o.Z)(v.G,{as:"div",className:"pad-box bottom-only"},void 0,(0,o.Z)(b.z,{"data-testid":"gradebook-export-button",color:"secondary",renderIcon:gt.O,id:"gradebook-export",interaction:g===y.PENDING?"disabled":"enabled",onClick:f},void 0,pt.t("Download Current Scores (.csv)")),g!==y.PENDING&&r&&l&&n&&(0,o.Z)(_.r,{elementRef:e=>u.current=e,href:r,isWithinText:false,margin:"0 xx-small","data-testid":"gradebook-export-link"},void 0,C(l)))}var ft=n(9) 698var _t=n(54577) 699var Ct=n(55688) 700const St=(0,m.useScope)("enhanced_individual_gradebook") 701function Zt(e){let{saveViewUngradedAsZeroToServer:t,contextId:n,handleCheckboxChange:s,includeUngradedAssignments:i}=e 702const a=e=>{const o=e.target.checked 703s("includeUngradedAssignments",o) 704g.Z.contextSet("include_ungraded_assignments",o) 705if(!t)return;(0,pe.Z)({method:"PUT",path:`/api/v1/courses/${n}/gradebook_settings`,body:{gradebook_settings:{view_ungraded_as_zero:o?"true":"false"}}})} 706return(0,o.Z)(_t.SD,{theme:{[Ct.h.theme]:{checkedBackground:"#0375ff",borderColor:"#777777",labelFontSizeSmall:"1rem"},[v.G.theme]:{paddingMedium:"16px"}}},void 0,(0,o.Z)(v.G,{as:"div",className:"checkbox",margin:"x-small 0",borderRadius:"medium",background:"primary",padding:"medium",theme:{backgroundPrimary:"#eee"}},void 0,(0,o.Z)(oe.XZ,{"data-testid":"include-ungraded-assignments-checkbox",size:"small",label:St.t("View Ungraded as 0"),checked:i,onChange:a})))}const yt=(0,m.useScope)("enhanced_individual_gradebook") 707function Gt(e){let{handleCheckboxChange:t,hideStudentNames:n}=e 708const s=e=>{const n=e.target.checked 709g.Z.contextSet("hide_student_names",n) 710t("hideStudentNames",n)} 711return(0,o.Z)(_t.SD,{theme:{[Ct.h.theme]:{checkedBackground:"#0375ff",borderColor:"#777777",labelFontSizeSmall:"1rem"},[v.G.theme]:{paddingMedium:"16px"}}},void 0,(0,o.Z)(v.G,{as:"div",className:"checkbox",margin:"x-small 0",borderRadius:"medium",background:"primary",padding:"medium",theme:{backgroundPrimary:"#eee"}},void 0,(0,o.Z)(oe.XZ,{"data-testid":"hide-student-names-checkbox",size:"small",label:yt.t("Hide Student Names"),checked:n,onChange:s})))}const kt=(0,m.useScope)("enhanced_individual_gradebook") 712function Nt(e){let{settingsUpdateUrl:t,handleCheckboxChange:n,showConcludedEnrollments:s}=e 713const i=e=>{const o=e.target.checked;(0,pe.Z)({method:"PUT",path:t,body:{gradebook_settings:{show_concluded_enrollments:o?"true":"false"}}}) 714n("showConcludedEnrollments",o)} 715return(0,o.Z)(_t.SD,{theme:{[Ct.h.theme]:{checkedBackground:"#0375ff",borderColor:"#777777",labelFontSizeSmall:"1rem"},[v.G.theme]:{paddingMedium:"16px"}}},void 0,(0,o.Z)(v.G,{as:"div",className:"checkbox",margin:"x-small 0",borderRadius:"medium",background:"primary",padding:"medium",theme:{backgroundPrimary:"#eee"}},void 0,(0,o.Z)(oe.XZ,{size:"small",label:kt.t("Show Concluded Enrollments"),checked:s,onChange:i,"data-testid":"show-concluded-enrollments-checkbox"})))}const wt=(0,m.useScope)("enhanced_individual_gradebook") 716function xt(e){let{teacherNotes:t,customColumns:n,customColumnsUrl:s,customColumnUrl:i,reorderCustomColumnsUrl:a,showNotesColumn:r,handleCheckboxChange:d,onTeacherNotesCreation:l}=e 717const c=async e=>{if(!i||!s)return 718const o=e.target.checked 719if(t)be({method:"PUT",body:{column:{hidden:!o}},path:i.replace(":id",null===t||void 0===t?void 0:t.id)}) 720else{const{data:e}=await be({method:"POST",body:{column:{title:wt.t("Notes"),position:1,teacher_notes:true,hidden:!o}},path:s}) 721l(e)}d("showNotesColumn",o) 722if(!o||!a||!n)return 723be({method:"POST",path:a,body:{order:n.map((e=>Number(e.id)))}})}
724return(0,o.Z)(_t.SD,{theme:{[Ct.h.theme]:{checkedBackground:"#0375ff",borderColor:"#777777",labelFontSizeSmall:"1rem"},[v.G.theme]:{paddingMedium:"16px"}}},void 0,(0,o.Z)(v.G,{as:"div",className:"checkbox",margin:"x-small 0",borderRadius:"medium",background:"primary",padding:"medium",theme:{backgroundPrimary:"#eee"}},void 0,(0,o.Z)(oe.XZ,{"data-testid":"show-notes-column-checkbox",size:"small",label:wt.t("Show Notes in Student Info"),checked:r,onChange:c})))}const Ot=(0,m.useScope)("enhanced_individual_gradebook") 725function Et(e){let{showTotalGradeAsPoints:t,settingUpdateUrl:n,handleCheckboxChange:s}=e 726const i=e=>{const t=e.target.checked;(0,pe.Z)({method:"PUT",path:n,body:{show_total_grade_as_points:t}}) 727s("showTotalGradeAsPoints",t)} 728return(0,o.Z)(_t.SD,{theme:{[Ct.h.theme]:{checkedBackground:"#0375ff",borderColor:"#777777",labelFontSizeSmall:"1rem"},[v.G.theme]:{paddingMedium:"16px"}}},void 0,(0,o.Z)(v.G,{as:"div",className:"checkbox",margin:"x-small 0",borderRadius:"large",background:"primary",padding:"medium",theme:{backgroundPrimary:"#eee"}},void 0,(0,o.Z)(oe.XZ,{size:"small",label:Ot.t("Show Totals as Points on Student Grade Page"),checked:t,onChange:i,"data-testid":"show-total-grade-as-points-checkbox"})))}const It=(0,m.useScope)("enhanced_individual_gradebook") 729function Dt(e){let{allowFinalGradeOverride:t,contextId:n,handleCheckboxChange:s}=e 730const i=e=>{const t=e.target.checked 731s("allowFinalGradeOverride",t) 732be({method:"PUT",path:`/api/v1/courses/${n}/settings`,body:{allow_final_grade_override:t}})} 733return(0,o.Z)(_t.SD,{theme:{[Ct.h.theme]:{checkedBackground:"#0375ff",borderColor:"#777777",labelFontSizeSmall:"1rem"},[v.G.theme]:{paddingMedium:"16px"}}},void 0,(0,o.Z)(v.G,{as:"div",className:"checkbox",margin:"x-small 0",borderRadius:"medium",background:"primary",padding:"medium",theme:{backgroundPrimary:"#eee"}},void 0,(0,o.Z)(oe.XZ,{size:"small",label:It.t("Allow Final Grade Override"),checked:t,onChange:i,"data-testid":"allow-final-grade-override-checkbox"})))}const Tt=(0,m.useScope)("enhanced_individual_gradebook") 734const Mt=[{value:Z.AssignmentGroup,text:Tt.t("By Assignment Group and Position")},{value:Z.Alphabetical,text:Tt.t("Alphabetically")},{value:Z.DueDate,text:Tt.t("By Due Date")}] 735function At(e){let{sections:t,customColumns:n,gradebookOptions:i,onGradingPeriodChange:a,onSortChange:r,onSectionChange:d,handleCheckboxChange:l,onTeacherNotesCreation:c}=e 736const u=e=>{const t=e.target.value 737r(t)} 738const m=e=>{const t=e.target.selectedIndex 739const n=0!==t?e.target.value:void 0 740d(n)} 741const g=e=>{const t=e.target.selectedIndex 742const n=0!==t?e.target.value:void 0 743a(n)}
744const{gradingPeriodSet:h,sortOrder:p,selectedGradingPeriodId:f}=i 745return s.createElement(s.Fragment,null,(0,o.Z)(v.G,{as:"div",className:"row-fluid"},void 0,(0,o.Z)(v.G,{as:"div",className:"span12"},void 0,(0,o.Z)("h2",{},void 0,Tt.t("Global Settings")))),(0,o.Z)(v.G,{as:"div",className:"row-fluid","data-testid":"section-select"},void 0,(0,o.Z)(v.G,{as:"div",className:"span4"},void 0,(0,o.Z)("label",{htmlFor:"section_select",style:{textAlign:"right",display:"block"}},void 0,Tt.t("Select a section"))),(0,o.Z)(v.G,{as:"div",className:"span8"},void 0,(0,o.Z)("select",{id:"section_select",className:"section_select",onChange:m},void 0,(0,o.Z)("option",{value:"-1"},void 0,Tt.t("All Sections")),t.map((e=>(0,o.Z)("option",{value:e.id},e.id,e.name)))))),h&&(0,o.Z)(v.G,{as:"div",className:"row-fluid"},void 0,(0,o.Z)(v.G,{as:"div",className:"span4"},void 0,(0,o.Z)("label",{htmlFor:"section_select",style:{textAlign:"right",display:"block"}},void 0,Tt.t("Select a Grading Period"))),(0,o.Z)(v.G,{as:"div",className:"span8"},void 0,(0,o.Z)("select",{id:"grading_period_select","data-testid":"grading-period-select",className:"section_select",onChange:g,defaultValue:f},void 0,(0,o.Z)("option",{},void 0,Tt.t("All Grading Periods")),h.grading_periods.map((e=>(0,o.Z)("option",{value:e.id},e.id,e.title)))))),(0,o.Z)("div",{className:"row-fluid",style:{paddingBottom:20}},void 0,(0,o.Z)(v.G,{as:"div",className:"span4"},void 0,(0,o.Z)("label",{htmlFor:"sort_select",style:{textAlign:"right",display:"block"}},void 0,Tt.t("Sort Assignments"))),(0,o.Z)(v.G,{as:"div",className:"span8"},void 0,(0,o.Z)("select",{id:"sort_select","data-testid":"sort-select",className:"section_select",defaultValue:p,onChange:u},void 0,Mt.map((e=>(0,o.Z)("option",{value:e.value},e.value,e.text)))))),(0,o.Z)(v.G,{as:"div",className:"row-fluid pad-box bottom-only"},void 0,(0,o.Z)(v.G,{as:"div",className:"span4"}),(0,o.Z)(v.G,{as:"div",className:"span8"},void 0,(0,o.Z)(Zt,{saveViewUngradedAsZeroToServer:i.saveViewUngradedAsZeroToServer,contextId:i.contextId,handleCheckboxChange:l,includeUngradedAssignments:i.customOptions.includeUngradedAssignments}),(0,o.Z)(Gt,{handleCheckboxChange:l,hideStudentNames:i.customOptions.hideStudentNames}),(0,o.Z)(Nt,{settingsUpdateUrl:i.settingsUpdateUrl,handleCheckboxChange:l,showConcludedEnrollments:i.customOptions.showConcludedEnrollments}),(0,o.Z)(xt,{teacherNotes:i.teacherNotes,customColumns:n,customColumnUrl:i.customColumnUrl,customColumnsUrl:i.customColumnsUrl,reorderCustomColumnsUrl:i.reorderCustomColumnsUrl,handleCheckboxChange:l,showNotesColumn:i.customOptions.showNotesColumn,onTeacherNotesCreation:c}),i.finalGradeOverrideEnabled&&(0,o.Z)(Dt,{contextId:i.contextId,allowFinalGradeOverride:i.customOptions.allowFinalGradeOverride,handleCheckboxChange:l}),!i.gradesAreWeighted&&(0,o.Z)(Et,{settingUpdateUrl:i.settingUpdateUrl,showTotalGradeAsPoints:i.customOptions.showTotalGradeAsPoints,handleCheckboxChange:l}))),(0,o.Z)(v.G,{as:"div",className:"row-fluid"},void 0,(0,o.Z)(v.G,{as:"div",className:"span4"}),(0,o.Z)(v.G,{as:"div",className:"span8"},void 0,(0,o.Z)(bt,{lastGeneratedCsvAttachmentUrl:null===i||void 0===i?void 0:i.lastGeneratedCsvAttachmentUrl,gradebookCsvProgress:i.gradebookCsvProgress,userId:i.userId,exportGradebookCsvUrl:i.exportGradebookCsvUrl}),(0,o.Z)(v.G,{as:"div",className:"pad-box bottom-only"},void 0,(0,o.Z)(b.z,{"data-testid":"upload-button",href:`${i.contextUrl}/gradebook_upload/new`,color:"secondary",renderIcon:ft.V,id:"upload"},void 0,Tt.t("Upload Scores (.csv)"))),(0,o.Z)(v.G,{as:"div",className:"pad-box bottom-only"},void 0,(0,o.Z)(v.G,{as:"div"},void 0,i.publishToSisEnabled&&i.publishToSisUrl&&(0,o.Z)(_.r,{href:i.publishToSisUrl,isWithinText:false},void 0,Tt.t("Sync grades to SIS"))),(0,o.Z)(v.G,{as:"div"},void 0,(0,o.Z)(_.r,{href:`${i.contextUrl}/gradebook/history`,isWithinText:false,"data-testid":"gradebook-history-link"},void 0,Tt.t("View Gradebook History")))))))}var Pt=n(62779) 746var Lt=n(59403) 747var Bt=n(40291) 748const Kt=(0,m.useScope)("enhanced_individual_gradebook_submit_score") 749const Ut=()=>
749{const[e,t]=(0,s.useState)(y.NOT_STARTED) 750const[n,o]=(0,s.useState)("") 751const[i,a]=(0,s.useState)(null) 752const r=(0,s.useCallback)((async(e,n,s,i)=>{if(!i){o(Kt.t("Unable to submit score")) 753t(y.FAILED) 754return}const{gradingType:r}=e 755const d=Lt.Z.delocalizeGrade(s) 756const l="EXCUSED"===(null===s||void 0===s?void 0:s.toUpperCase())||"EX"===(null===s||void 0===s?void 0:s.toUpperCase()) 757if(d===n.grade||("-"===d||""===d)&&null===n.grade||l&&n.excused){t(y.NO_CHANGE) 758return}t(y.PENDING) 759if(!l&&"points"===r||"percent"===r){const e=Bt.Z.parse(null===d||void 0===d?void 0:d.replace(/%/g,"")).toString() 760if("NaN"===e){o(Kt.t("Invalid Grade")) 761t(y.FAILED) 762return}}const c={submission:{}} 763l?c.submission.excuse=true:c.submission.posted_grade=d 764try{const{data:e,status:n}=await be({method:"PUT",path:i,body:c}) 765if(200!==n)throw new Error 766a(L(e)) 767t(y.COMPLETED)}catch(e){o(Kt.t("Something went wrong")) 768t(y.FAILED)}}),[]) 769const d=(0,s.useCallback)((async(e,n)=>{if(!n){o(Kt.t("Unable to submit score")) 770t(y.FAILED) 771return}const s={submission:{excuse:e.toString()}} 772try{t(y.PENDING) 773const{data:e,status:o}=await be({method:"PUT",path:n,body:s}) 774if(200!==o)throw new Error 775a(L(e)) 776t(y.COMPLETED)}catch(e){o(Kt.t("Something went wrong")) 777t(y.FAILED)}}),[]) 778return{submitScoreError:n,submitScoreStatus:e,savedSubmission:i,submitExcused:d,submit:r}} 779const Ft=(0,m.useScope)("enhanced_individual_gradebook_submit_score") 780const Rt=e=>{let{courseId:t,submissionId:n}=e 781const[o,i]=(0,s.useState)([]) 782const{data:a,error:r,loading:d,refetch:l}=(0,u.aM)(et,{variables:{courseId:t,submissionId:n},fetchPolicy:"cache-and-network",skip:!n||!t});(0,s.useEffect)((()=>{null!==a&&void 0!==a&&a.submission&&i(a.submission.commentsConnection.nodes)}),[a,r]) 783return{submissionComments:o,loadingComments:d,refetchComments:l}} 784const zt=()=>{const[e,t]=(0,s.useState)(y.NOT_STARTED) 785const[n,o]=(0,s.useState)("") 786const i=(0,s.useCallback)((async(e,n,s)=>{if(!s){o(Ft.t("Unable to post comment")) 787t(y.FAILED) 788return}t(y.PENDING) 789const i={comment:{text_comment:e,group_comment:n}} 790try{const{status:e}=await be({path:s,body:i,method:"PUT"}) 791if(200!==e)throw new Error 792t(y.COMPLETED)}catch(e){o(Ft.t("Something went wrong")) 793t(y.FAILED)}}),[]) 794return{postCommentError:n,postCommentStatus:e,submit:i}} 795var Wt=n(39625) 796var Qt=s.createElement("path",{d:"M1129.4317,113 L1129.4317,1807.14754 L903.545357,1807.14754 L451.772678,1355.37487 L451.772678,564.772678 L903.545357,113 L1129.4317,113 Z M1671.9768,361.057083 C1832.01727,521.097555 1920,733.882486 1920,960.107655 C1920,1186.33282 1832.01727,1399.00481 1671.9768,1559.04528 L1671.9768,1559.04528 L1592.12598,1479.19446 C1730.82019,1340.61319 1807.05683,1156.177 1807.05683,960.107655 C1807.05683,763.925369 1730.82019,579.602117 1592.12598,440.907904 L1592.12598,440.907904 Z M338.829509,564.772678 L338.829509,1355.37487 L169.414754,1355.37487 C75.6719236,1355.37487 0,1279.70294 0,1185.96011 L0,1185.96011 L0,734.187433 C0,640.444602 75.6719236,564.772678 169.414754,564.772678 L169.414754,564.772678 L338.829509,564.772678 Z M1432.75187,600.858021 C1528.52768,697.876204 1581.1592,825.501985 1581.1592,960.0173 C1581.1592,1094.64556 1528.52768,1222.27134 1432.75187,1319.28952 L1432.75187,1319.28952 L1352.44928,1240.11636 C1427.10471,1164.21855 1468.21603,1064.71562 1468.21603,960.0173 C1468.21603,855.431925 1427.10471,755.928993 1352.44928,680.031183 L1352.44928,680.031183 Z",fillRule:"evenodd",stroke:"none",strokeWidth:"1"}) 797var qt=function(e){(0,Ie.Z)(n,e) 798var t=(0,De.Z)(n) 799function n(){(0,Oe.Z)(this,n) 800return t.apply(this,arguments)}(0,Ee.Z)(n,[{key:"render",value:function(){return s.createElement(Te.q,Object.assign({},this.props,{name:"IconAudio",viewBox:"0 0 1920 1920",bidirectional:true}),Qt)}}]) 801n.displayName="IconAudioSolid" 802return n}(s.Component) 803qt.glyphName="audio" 804qt.variant="Solid" 805qt.propTypes=(0,xe.Z)({},Te.q.propTypes) 806var $t=n(7342) 807var jt=n(77545) 808var Yt=n(87611) 809var Ht=n(10837) 810var Vt=n(19684) 811var Xt=n(95732) 812var Jt=n(89010) 813var en,tn 814const nn=(0,m.useScope)("enhanced_individual_gradebook") 815const{Header:on,Body:sn}=te.u_ 816const{Item:an}=Xt.kC 817function rn(e){let{assignment:t,gradebookOptions:n,student:s,submission:i,comments:a,loadingComments:r,modalOpen:d,submitScoreUrl:l,handleClose:u,onGradeChange:m,onPostComment:g}=e 818const h=()=>`${n.contextUrl}/gradebook/speed_grader?assignment_id=${t.id}` 819return(0,o.Z)(te.u_,{open:d,onDismiss:()=>{}
819,size:"medium",label:"Student Submission Detail Modal",shouldCloseOnDocumentClick:false,theme:{mediumMaxWidth:"40em"}},void 0,(0,o.Z)(on,{},void 0,(0,o.Z)(ne.P,{placement:"end",offset:"small",onClick:()=>u(),screenReaderLabel:"Close Submission Detail"}),(0,o.Z)(se.X,{level:"h4"},void 0,s.name)),(0,o.Z)(sn,{padding:"none"},void 0,(0,o.Z)(v.G,{as:"div",padding:"medium medium 0 medium"},void 0,(0,o.Z)(se.X,{level:"h3"},void 0,null===t||void 0===t?void 0:t.name)),(0,o.Z)(un,{assignment:t,submission:i,submitScoreUrl:l,onGradeChange:m}),(0,o.Z)(v.G,{as:"div",margin:"small 0",padding:"0 medium"},void 0,(0,o.Z)(_.r,{href:h(),isWithinText:false},void 0,nn.t("More details in the SpeedGrader"))),(0,o.Z)(v.G,{as:"div",margin:"small 0",padding:"0 medium"},void 0,(0,o.Z)(v.G,{as:"b"},void 0,B(i))),r&&(en||(en=(0,o.Z)(c.Z,{}))),!r&&a.length>0&&(0,o.Z)(v.G,{as:"div",margin:"small 0"},void 0,(0,o.Z)(se.X,{level:"h3",margin:"0 medium"},void 0,nn.t("Comments")),(0,o.Z)(v.G,{as:"div",margin:"small 0",maxHeight:"9rem",overflowX:"auto"},void 0,a.map(((e,t)=>(0,o.Z)(dn,{comment:e,showDivider:t<a.length-1},e.id))))),(0,o.Z)(mn,{assignment:t,submitScoreUrl:l,onPostComment:g})))}function dn(e){let{comment:t,showDivider:n}=e 820const{attachments:s,author:i,mediaObject:a}=t 821return(0,o.Z)(v.G,{as:"div",padding:"0 medium",elementRef:e=>{e&&e.scrollIntoView()}},t.id,(0,o.Z)(Xt.kC,{alignItems:"start"},void 0,(0,o.Z)(_.r,{href:i.htmlUrl,isWithinText:false},void 0,(0,o.Z)(cn,{comment:t})),(0,o.Z)(an,{shouldGrow:true,shouldShrink:true,padding:"0 0 0 small"},void 0,(0,o.Z)(se.X,{level:"h5"},void 0,(0,o.Z)(_.r,{href:i.htmlUrl,isWithinText:false},void 0,i.name)),(0,o.Z)(ie.x,{size:"small"},void 0,t.comment),a&&(0,o.Z)(v.G,{as:"div"},void 0,(0,o.Z)(_.r,{href:a.mediaDownloadUrl,renderIcon:qt,isWithinText:false},void 0,nn.t("click here to view"))),s.length>0&&s.map((e=>(0,o.Z)(ln,{attachment:e},e.id)))),(0,o.Z)(an,{align:"start"},void 0,(0,o.Z)(se.X,{level:"h5"},void 0,(0,o.Z)(Jt.Z,{dateTime:t.updatedAt})))),n&&(0,o.Z)("hr",{style:{margin:".6rem 0"}},"hrcomment-{comment.id}"))}function ln(e){let{attachment:t}=e 822return(0,o.Z)(v.G,{as:"div"},t.id,(0,o.Z)(_.r,{href:t.url,isWithinText:false,renderIcon:(0,Wt.hB)(t.mimeClass)},void 0,(0,o.Z)(ie.x,{size:"x-small"},void 0,t.displayName)))}function cn(e){let{comment:t}=e 823if(t.author.avatarUrl)return(0,o.Z)(Vt.q,{name:t.author.name,src:t.author.avatarUrl}) 824return tn||(tn=(0,o.Z)(Vt.q,{name:"user",renderIcon:(0,o.Z)($t.Z,{}),color:"ash"}))}function un(e){let{assignment:t,submission:n,submitScoreUrl:i,onGradeChange:a}=e
825const[r,d]=(0,s.useState)("") 826const{submit:l,submitScoreError:c,submitScoreStatus:u,savedSubmission:m}=Ut();(0,s.useEffect)((()=>{a({status:u,newSubmission:m,error:c})}),[u,m,c,a]);(0,s.useEffect)((()=>{n&&d(n.excused?nn.t("EX"):n.grade??"-")}),[n]) 827const g=async()=>{await l(t,n,r,i)} 828return(0,o.Z)(v.G,{as:"div",margin:"small 0",padding:"0 medium"},void 0,(0,o.Z)(Xt.kC,{},void 0,(0,o.Z)(an,{shouldGrow:true,shouldShrink:true},void 0,(0,o.Z)(ie.x,{},void 0,nn.t("Grade:")," "),(0,o.Z)(v.G,{as:"span",margin:"0 x-small 0 x-small"},void 0,(0,o.Z)(re.o,{renderLabel:(0,o.Z)(ae.c,{},void 0,nn.t("Student Grade")),display:"inline-block",width:"4rem",value:r,disabled:u===y.PENDING,onChange:e=>d(e.target.value)})),(0,o.Z)(ie.x,{},void 0,K(t,n))),(0,o.Z)(an,{align:"start"},void 0,(0,o.Z)(b.z,{disabled:u===y.PENDING,onClick:()=>g()},void 0,nn.t("Update Grade")))))}function mn(e){let{assignment:t,submitScoreUrl:n,onPostComment:i}=e 829const{groupCategoryId:a,gradeGroupStudentsIndividually:r}=t 830const[d,l]=(0,s.useState)("") 831const[c,u]=(0,s.useState)(false) 832const{postCommentError:m,postCommentStatus:g,submit:h}=zt() 833const p=async()=>{let e 834a&&(e=!r||c) 835await h(d,e,n)} 836const f=[{value:"0",label:"Send comment to this student only"},{value:"1",label:"Send comment to the whole group"}] 837const _=e=>{u("1"===e.target.value)};(0,s.useEffect)((()=>{switch(g){case y.COMPLETED:l("") 838i() 839break 840case y.FAILED:(0,H.IM)(m)(new Error("Failed to add comment"))}}),[g,m,i]) 841return(0,o.Z)("div",{style:{backgroundColor:"#F2F2F2",borderTop:"1px solid #bbb"}},void 0,(0,o.Z)(v.G,{as:"div",padding:"small medium"},void 0,(0,o.Z)(Ht.K,{label:nn.t("Add a comment"),maxHeight:"4rem",value:d,onChange:e=>l(e.target.value)}),(0,o.Z)(Xt.kC,{margin:"small 0 0 0"},void 0,(0,o.Z)(an,{padding:"x-small",shouldShrink:true,shouldGrow:true},void 0,a&&(0,o.Z)("div",{},void 0,r?(0,o.Z)(jt.a,{onChange:_,defaultValue:"0",name:"groupComment",description:(0,o.Z)(ae.c,{},void 0,nn.t("Send to all of group"))},void 0,f.map((e=>(0,o.Z)(Yt.N,{value:e.value,label:e.label},e.value)))):(0,o.Z)(ie.x,{size:"small"},void 0,nn.t("All comments are sent to the whole group")))),(0,o.Z)(an,{align:"start"},void 0,(0,o.Z)(b.z,{disabled:g===y.PENDING,onClick:p},void 0,nn.t("Post Comment"))))))}var gn 842const vn=(0,m.useScope)("enhanced_individual_gradebook") 843function hn(e){let{assignment:t,courseId:n,currentStudent:i,studentSubmissions:a,gradebookOptions:r,loadingStudent:d,currentStudentHiddenName:l,onSubmissionSaved:u}=e 844const m=null===a||void 0===a?void 0:a.find((e=>e.assignmentId===(null===t||void 0===t?void 0:t.id))) 845const[g,h]=(0,s.useState)("") 846const[p,f]=(0,s.useState)(false) 847const[_,C]=(0,s.useState)(false) 848const{submit:S,submitExcused:Z,submitScoreError:G,submitScoreStatus:k,savedSubmission:N}=Ut() 849const{submissionComments:w,loadingComments:x,refetchComments:O}=Rt({courseId:n,submissionId:null===m||void 0===m?void 0:m.id});(0,s.useEffect)((()=>{if(m){f(m.excused) 850h(m.excused?vn.t("Excused"):m.grade??"-")}}),[m]) 851const E=(0,s.useCallback)((e=>{const{status:t,newSubmission:n,error:o}=e 852switch(t){case y.FAILED:(0,H.IM)(o)(new Error("Failed to submit score")) 853break 854case y.COMPLETED:if(!n)return 855u(n) 856C(false);(0,H.au)(vn.t("Grade saved"))()}}),[u]) 857const I=(0,s.useCallback)((()=>{C(false) 858O()}),[O]);(0,s.useEffect)((()=>{E({status:k,newSubmission:N,error:G})}),[k,N,G,E]) 859if(!m||!t||!i)return s.createElement(s.Fragment,null,(0,o.Z)(v.G,{as:"div","data-testid":"grading-results-empty"},void 0,(0,o.Z)(v.G,{as:"div",className:"row-fluid"},void 0,(0,o.Z)(v.G,{as:"div",className:"span4"},void 0,(0,o.Z)(v.G,{as:"h2"},void 0,vn.t("Grading"))),(0,o.Z)(v.G,{as:"div",className:"span8 pad-box top-only"},void 0,(0,o.Z)(v.G,{as:"p",className:"submission_selection"},void 0,vn.t("Select a student and an assignment to view and edit grades.")))))) 860if(d)return gn||(gn=(0,o.Z)(c.Z,{})) 861const{changeGradeUrl:D,customOptions:{hideStudentNames:T}}=r 862const M=(D??"").replace(":assignment",t.id).replace(":submission",m.userId) 863const A=async e=>{const{target:{checked:t}}=e 864await Z(t,M)} 865const P=async()=>{await S(t,m,g,M)} 866return s.createElement(s.Fragment,null,(0,o.Z)(v.G,{as:"div","data-testid":"grading-results"},void 0,(0,o.Z)(v.G,{as:"div",className:"row-fluid"},void 0,(0,o.Z)(v.G,{as:"div",className:"span4"},void 0,(0,o.Z)(v.G,{as:"h2"},void 0,vn.t("Grading"))),(0,o.Z)(v.G,{as:"div",className:"span8 pad-box top-only"},void 0,(0,o.Z)(v.G,{as:"div"},void 0,(0,o.Z)(v.G,{as:"span"},void 0,(0,o.Z)(ie.x,{size:"small"},void 0,(0,o.Z)(v.G,{as:"strong"},void 0,`${vn.t("Grade for")} ${T?l:i.name} - ${t.name}`)),(0,o.Z)(pn,{submission:m}))),(0,o.Z)(v.G,{as:"span"},void 0,(0,o.Z)(ie.x,{size:"small"},void 0,B(m))),(0,o.Z)(v.G,{as:"div",className:"grade"},void 0,(0,o.Z)(re.o,{display:"inline-block",width:"14rem",value:g,disabled:k===y.PENDING,renderLabel:(0,o.Z)(ae.c,{},void 0,vn.t("Student Grade")),onChange:e=>h(e.target.value),onBlur:()=>P()}),(0,o.Z)(v.G,{as:"span",margin:"0 0 0 small"},void 0,K(t,m))),"pass_fail"!==t.gradingType&&(0,o.Z)("div",{className:"checkbox",style:{padding:12,margin:"15px 0 0 0",background:"#eee",borderRadius:5}},void 0,(0,o.Z)("label",{className:"checkbox",htmlFor:"excuse_assignment"},void 0,(0,o.Z)("input",{type:"checkbox",id:"excuse_assignment",name:"excuse_assignment",checked:p,disabled:k===y.PENDING,onChange:A}),vn.t("Excuse This Assignment for the Selected Student"))),(0,o.Z)(v.G,{as:"div",className:"span4",margin:"medium 0 0 0",width:"14.6rem"},void 0,(0,o.Z)(b.z,{display:"block",onClick:()=>{C(true)}},void 0,vn.t("Submission Details")))))),(0,o.Z)(rn,{assignment:t,comments:w,gradebookOptions:r,student:i,submission:m,loadingComments:x,modalOpen:_,submitScoreUrl:M,handleClose:()=>C(false),onGradeChange:E,onPostComment:I}))}function pn(e){let{submission:t}=e 867let n="" 868if(t.late)n="LATE" 869else if(t.missing)n="MISSING" 870else{if("extended"!==t.latePolicyStatus)return null 871n="EXTENDED"}return(0,o.Z)(v.G,{as:"span"},void 0,(0,o.Z)(Pt.D,{margin:"small",color:"danger"},void 0,(0,o.Z)(v.G,{as:"strong",padding:"x-small"},void 0,vn.t("%{text}",{text:n}))))}var bn=n(66076) 872var fn=n(3434) 873const _n=(0,m.useScope)("enhanced_individual_gradebook") 874function Cn(e){let{currentStudentNotes:t,disabled:n,handleSubmitNotes:i}=e
875const[a,r]=(0,s.useState)(t) 876const{Row:d,Col:l}=fn.rj;(0,s.useEffect)((()=>{r(t)}),[t]) 877return s.createElement(s.Fragment,null,(0,o.Z)(v.G,{as:"h4"},void 0,_n.t("Notes")),(0,o.Z)(fn.rj,{},void 0,(0,o.Z)(d,{},void 0,(0,o.Z)(l,{width:{small:12,medium:12,large:8,xLarge:8}},void 0,(0,o.Z)(Ht.K,{resize:"vertical",onBlur:()=>i(a),label:"",value:a,onChange:e=>r(e.target.value),disabled:n})))))}const Sn=(0,m.useScope)("enhanced_individual_gradebook_submit_score") 878const Zn=(e,t,n,o)=>{const[i,a]=(0,s.useState)(y.NOT_STARTED) 879const[r,d]=(0,s.useState)(y.NOT_STARTED) 880const[l,c]=(0,s.useState)("") 881const[u,m]=(0,s.useState)({});(0,s.useEffect)((()=>{const o=async()=>{if(!e||!t||!n||r===y.COMPLETED||r===y.PENDING)return 882d(y.PENDING) 883const o={} 884let s=n.replace(":id",e) 885while(s){var i,a 886const{data:e,link:t}=await be({method:"GET",path:s}) 887e.forEach((e=>{o[e.user_id]=e.content})) 888if(!(null!==t&&void 0!==t&&null!==(i=t.next)&&void 0!==i&&i.url))break 889s=null===t||void 0===t||null===(a=t.next)||void 0===a?void 0:a.url}d(y.COMPLETED) 890m(o)} 891o()}),[t,n,e,u,r]) 892const g=async(t,n)=>{if(u[n]===t)return 893if(!o||!e){c(Sn.t("Missing required parameters")) 894a(y.FAILED) 895return}a(y.PENDING) 896const{status:s}=await be({method:"PUT",path:o.replace(":id",e).replace(":user_id",n),body:{column_data:{content:t}}}) 897if(200!==s){c(Sn.t("Request failed with status %{status}",{status:s})) 898a(y.FAILED) 899return}a(y.COMPLETED) 900m((e=>({...e,[n]:t})))} 901return{submitNotesError:l,submitNotesStatus:i,getNotesStatus:r,studentNotes:u,submit:g}} 902var yn=n(73128) 903const Gn=(0,m.useScope)("enhanced_individual_gradebook") 904function kn(e){let{finalGradeOverride:t,gradingScheme:n,enrollmentId:i,onSubmit:a,gradingPerio
904dId:r,pointsBasedGradingSchemesFeatureEnabled:d}=e 905const[l,c]=(0,s.useState)("") 906const[u,m]=(0,s.useState)("") 907const[g,h]=(0,s.useState)(y.NOT_STARTED);(0,s.useEffect)((()=>{var e,o,s 908const i=r?null===t||void 0===t||null===(e=t.gradingPeriodGrades)||void 0===e||null===(o=e[r])||void 0===o?void 0:o.percentage:null===t||void 0===t||null===(s=t.courseGrade)||void 0===s?void 0:s.percentage 909if(null==i){m("") 910c("")}else if(n&&n.data.length>0){const e=(0,w._o)(i,n.data) 911c(e||"") 912n.pointsBased||m(Lt.Z.formatGrade(i,{gradingType:"percent"}))}else{c(Lt.Z.formatGrade(i,{gradingType:"percent"})) 913m("")}}),[t,r,n]) 914const p=e=>{c(e.target.value)} 915const b=async()=>{var e,o,s,u 916const m={pointsBasedGradingSchemesFeatureEnabled:d} 917n&&(m.gradingScheme=n) 918const g=r?null===t||void 0===t||null===(e=t.gradingPeriodGrades)||void 0===e||null===(o=e[r])||void 0===o?void 0:o.percentage:null===t||void 0===t||null===(s=t.courseGrade)||void 0===s?void 0:s.percentage 919const v=new yn.Z(m) 920const p=v.parseValue(l) 921const b=v.parseValue(null!=g?g:{}) 922if(!p.valid||!v.hasGradeChanged(b,p)||null==(null===(u=p.grade)||void 0===u?void 0:u.percentage)){var f 923if(null!==(f=b.grade)&&void 0!==f&&f.schemeKey){var _ 924c(null===(_=b.grade)||void 0===_?void 0:_.schemeKey)}else{var C,S 925c(null!==(C=b.grade)&&void 0!==C&&C.percentage?String(null===(S=b.grade)||void 0===S?void 0:S.percentage):"")}return}const Z={percentage:p.grade.percentage} 926h(y.PENDING) 927const G=await(0,bn.g)(i,r,Z) 928h(y.COMPLETED)
929G&&a(r?{...t,gradingPeriodGrades:{...null===t||void 0===t?void 0:t.gradingPeriodGrades,[r]:G}}:{...t,courseGrade:G})} 930return s.createElement(s.Fragment,null,(0,o.Z)(v.G,{as:"div"},void 0,(0,o.Z)("label",{htmlFor:"final-grade-override-input"},void 0,(0,o.Z)("strong",{},void 0,Gn.t("Final Grade Override")))),(0,o.Z)(re.o,{display:"inline-block",renderLabel:(0,o.Z)(ae.c,{},void 0,Gn.t("Final Grade Override")),value:l,onChange:p,onBlur:b,width:"14rem",disabled:g===y.PENDING}),(0,o.Z)(v.G,{as:"span",margin:"0 0 0 xx-small"},void 0,u))}const Nn=kn 931const wn=(0,m.useScope)("enhanced_individual_gradebook") 932function xn(e){let{gradingScheme:t,name:n,possible:s,score:i,weight:a,pointsBasedGradingSchemesFeatureEnabled:r}=e 933const d=z(i,s,1) 934const l=Number.isNaN(Number(d)) 935let c 936let u=false 937if(r){if(t){u=t.pointsBased 938const e=t.scalingFactor 939if(u&&s){const t=wn.n(e,{precision:1}) 940const n=wn.n(W(i||0,s,e),{precision:1}) 941c=`${n} / ${t}`}else c=l?"-":`${d}% (${i} / ${s})`}}else c=l?"-":`${d}% (${i} / ${s})` 942const m=l?"-":t?Q(s,i,t.data):"-" 943const g=a?wn.n(a,{percentage:true}):"-" 944return(0,o.Z)("tr",{},void 0,(0,o.Z)("th",{},void 0,n),(0,o.Z)("td",{},void 0,c),(0,o.Z)("td",{},void 0,m),(0,o.Z)("td",{},void 0,g))}
944function On(e){let{gradingPeriodId:t,gradingPeriods:n,gradingPeriodSet:s,gradingScheme:i,pointsBasedGradingSchemesFeatureEnabled:a,includeUngradedAssignments:r}=e 945const d=s.grading_periods.find((e=>{let{id:n}=e 946return n===t})) 947if(!d)return null 948const{title:l,weight:c}=d 949const{final:u,current:m}=n[t] 950const g=r?u:m 951const{score:v,possible:h}=g 952return(0,o.Z)(xn,{gradingScheme:i,pointsBasedGradingSchemesFeatureEnabled:a,name:l,possible:h,score:v,weight:c})}function En(e){let{assignmentGroupId:t,assignmentGroupMap:n,assignmentGroups:s,gradingScheme:i,pointsBasedGradingSchemesFeatureEnabled:a,includeUngradedAssignments:r}=e 953const{name:d,group_weight:l}=n[t] 954const{final:c,current:u}=s[t]??{} 955const m=r?c:u 956const{score:g,possible:v}=m||{} 957return(0,o.Z)(xn,{gradingScheme:i,pointsBasedGradingSchemesFeatureEnabled:a,name:d,possible:v,score:g,weight:l})}var In 958const Dn=(0,m.useScope)("enhanced_individual_gradebook") 959function Tn(e){var t 960let{assignmentGroupMap:n,studentNotesColumnId:i,gradebookOptions:a,student:r,submissions:d,currentStudentHiddenName:l,invalidAssignmentGroups:c}=e 961const{customOptions:{allowFinalGradeOverride:u,includeUngradedAssignments:m,hideStudentNames:g,showNotesColumn:h},customColumnsUrl:p,customColumnDataUrl:b,customColumnDatumUrl:C,contextId:S,contextUrl:Z,finalGradeOverrideEnabled:G,gradeCalcIgnoreUnpostedAnonymousEnabled:k,gradingPerio
961dSet:N,gradingStandard:w,gradingStandardScalingFactor:x,gradingStandardPointsBased:O,groupWeightingScheme:E,pointsBasedGradingSchemesFeatureEnabled:I,selectedGradingPeriodId:D}=a 962const[T,M]=(0,s.useState)({}) 963const{submitNotesError:A,submitNotesStatus:P,studentNotes:L,getNotesStatus:B,submit:K}=Zn(i,p,b,C);(0,s.useEffect)((()=>{A&&P===y.FAILED&&(0,H.IM)(Dn.t("Error updating notes"))(new Error(A))}),[A,P]);(0,s.useEffect)((()=>{async function e(){if(!S)return 964const e=await(0,bn.Z)(S) 965if(!e)return 966M(e.finalGradeOverrides)}e()}),[S]) 967const U=D?null===d||void 0===d?void 0:d.filter((e=>e.gradingPeriodId===D)):d 968const F=(0,s.useMemo)((()=>q({submissions:U,assignmentGroupMap:n,groupWeightingScheme:E,gradeCalcIgnoreUnpostedAnonymousEnabled:k,gradingPeriodSet:N,studentId:null===r||void 0===r?void 0:r.id})),[U,n,E,k,N,r]) 969if(!r||!d||!F)return(0,o.Z)(v.G,{as:"div","data-testid":"student-information-empty"},void 0,(0,o.Z)(v.G,{as:"div",className:"row-fluid"},void 0,(0,o.Z)(v.G,{as:"div",className:"span4"},void 0,(0,o.Z)(v.G,{as:"h2"},void 0,Dn.t("Student Information"))),(0,o.Z)(v.G,{as:"div",className:"span8 pad-box top-only"},void 0,(0,o.Z)(v.G,{as:"p",className:"submission_selection"},void 0,Dn.t("Select a student to view additional information here.")))))
970const{current:R,final:$,assignmentGroups:j,gradingPeriods:Y={}}=F 971const V=m?$:R 972const X=V?z(V.score,V.possible):null 973const J=L[r.id]??"" 974const ee=!D&&(null===N||void 0===N?void 0:N.weighted) 975const te=()=>{const{possible:e,score:t}=V 976if(null===e||void 0===e)return"-" 977let n=false 978let o 979if(I){if(w){n=O 980const s=x 981if(n&&e){const n=Dn.n(s,{precision:1}) 982const i=Dn.n(W(t,e,s),{precision:1}) 983o=`${i} / ${n}`}else o=Number.isNaN(Number(X))?"-":`${X}%`}}else o=Number.isNaN(Number(X))?"-":`${X}%` 984const s=!!("percent"===E||!D&&null!==N&&void 0!==N&&N.weighted) 985const i=!!(!s&&V) 986const a=i?` (${V.score} / ${V.possible} ${Dn.t("points")})`:"" 987const r=w?` - ${Q(e,t,w)}`:"" 988return`${o}${a}${r}`} 989const ne=`${Z}/grades/${r.id}` 990const oe=Object.keys(c).length 991const se=Object.values(c) 992const ae=oe>0&&"percent"===E 993const re=()=>Dn.t("invalid_group_warning",{one:"Note: Score does not include assignments from the group %{list_of_group_names} because it has no points possible.",other:"Note: Score does not include assignments from the groups %{list_of_group_names} because they have no points possible."},{count:oe,list_of_group_names:se.join(" or ")}) 994return(0,o.Z)(v.G,{as:"div"},void 0,(0,o.Z)(v.G,{as:"div",className:"row-fluid"},void 0,(0,o.Z)(v.G,{as:"div",className:"span4"},void 0,(0,o.Z)(v.G,{as:"h2"},void 0,Dn.t("Student Information"))),(0,o.Z)(v.G,{as:"div",className:"span8"},void 0,(0,o.Z)(v.G,{as:"h3",className:"student_selection","data-testid":"student-information-name"},void 0,g?l:(0,o.Z)(_.r,{isWithinText:false,href:ne},void 0,r.name)),(0,o.Z)(v.G,{as:"div"},void 0,(0,o.Z)(v.G,{as:"strong"},void 0,Dn.t("Secondary ID:"),(0,o.Z)(v.G,{as:"span",className:"secondary_id"},void 0," ",g?(0,o.Z)(v.G,{as:"em"},void 0,Dn.t("hidden")):r.loginId))),(0,o.Z)(v.G,{as:"div"},void 0,(0,o.Z)(v.G,{as:"strong"},void 0,Dn.t("Sections: "),r.enrollments.map((e=>e.section.name)).join(", "))),h&&(0,o.Z)(Cn,{currentStudentNotes:J,disabled:B===y.PENDING||P===y.PENDING,handleSubmitNotes:e=>K(e,r.id)}),(0,o.Z)(v.G,{as:"h4"},void 0,Dn.t("Grades")),(0,o.Z)(v.G,{as:"div",className:"ic-Table-responsive-x-scroll"},void 0,(0,o.Z)("table",{className:"ic-Table"},void 0,(0,o.Z)("thead",{},void 0,(0,o.Z)("tr",{},void 0,(0,o.Z)("th",{scope:"col"},void 0,ee?Dn.t("Grading Period"):Dn.t("Assignment Group")),(0,o.Z)("th",{scope:"col"},void 0,Dn.t("Grade")),(0,o.Z)("th",{scope:"col"},void 0,Dn.t("Letter Grade")),(0,o.Z)("th",{scope:"col"},void 0,Dn.t("% of Grade")))),(0,o.Z)("tbody",{},void 0,ee?Object.keys(Y).map((e=>
994(0,o.Z)(On,{gradingPeriodId:e,gradingPeriodSet:N,gradingPeriods:Y,gradingScheme:{data:w||[],pointsBased:O,scalingFactor:x},pointsBasedGradingSchemesFeatureEnabled:I,includeUngradedAssignments:m},`grading_period_scores_${e}`))):Object.keys(n).map((e=>(0,o.Z)(En,{assignmentGroupId:e,assignmentGroupMap:n,assignmentGroups:j,gradingScheme:{data:w||[],pointsBased:O,scalingFactor:x},pointsBasedGradingSchemesFeatureEnabled:I,includeUngradedAssignments:m},`assignment_group_scores_${e}`)))))),(0,o.Z)(v.G,{as:"h3"},void 0,Dn.t("Final Grade: "),(0,o.Z)(v.G,{as:"span",className:"total-grade"},void 0,te())),G&&u&&(0,o.Z)(Nn,{pointsBasedGradingSchemesFeatureEnabled:I,finalGradeOverride:T[r.id],enrollmentId:null===(t=r.enrollments[0])||void 0===t?void 0:t.id,onSubmit:e=>{M({...T,[r.id]:e})},gradingScheme:{data:w||[],pointsBased:O,scalingFactor:x},gradingPeriodId:D}),ae&&(0,o.Z)(v.G,{as:"div",className:"text-error",margin:"small 0 0 0",style:{width:"100%"}},void 0,(0,o.Z)(ie.x,{size:"medium"},void 0,In||(In=(0,o.Z)(f.v,{}))," ",re()," ")))))}const Mn=e=>{const[t,n]=(0,s.useState)(null);(0,s.useEffect)((()=>{const t=async()=>{if(!e)return 995const{data:t}=await be({method:"GET",path:e}) 996n(t)} 997t()}),[e]) 998return{customColumns:t}} 999const An=(0,m.useScope)("enhanced_individual_gradebook") 1000const Pn="student" 1001const Ln="assignment" 1002function Bn(){var e,t 1003const[n,i]=(0,s.useState)([])
1004const[r,d]=(0,s.useState)({}) 1005const[l,c]=(0,s.useState)() 1006const[m,h]=(0,s.useState)() 1007const p=(null===(e=ENV.GRADEBOOK_OPTIONS)||void 0===e?void 0:e.context_id)||"" 1008const[b,f]=(0,a.lr)() 1009const _=b.get(Pn) 1010const[C,S]=(0,s.useState)(_) 1011const{currentStudent:Z,studentSubmissions:y,updateSubmissionDetails:G,loadingStudent:k}=tt(p,C) 1012const[N,w]=(0,s.useState)({}) 1013const x=b.get(Ln) 1014const[O,T]=(0,s.useState)(x) 1015const M=null===m||void 0===m?void 0:m.find((e=>e.id===O)) 1016const A=M?r[M.id]:{} 1017const P=Object.values(A??{}) 1018const[L,B]=(0,s.useState)(F(ENV)) 1019const{data:K,error:U}=(0,u.aM)(Xe,{variables:{courseId:p},fetchPolicy:"no-cache",skip:!p}) 1020const{customColumnsUrl:R}=L 1021const{customColumns:z}=Mn(R) 1022const W=null===z||void 0===z||null===(t=z.find((e=>e.teacher_notes)))||void 0===t?void 0:t.id 1023const[Q,q]=(0,s.useState)("");(0,s.useEffect)((()=>{var e 1024if(!Z||!l)return 1025const t=null===l||void 0===l||null===(e=l.find((e=>e.id===Z.id)))||void 0===e?void 0:e.hiddenName 1026q(t??An.t("Student"))}),[Z,l]);(0,s.useEffect)((()=>{if(null!==K&&void 0!==K&&K.course){const{assignmentGroupsConnection:e,enrollmentsConnection:t,sectionsConnection:n,submissionsConnection:o}=K.course
1027const{assignmentGradingPeriodMap:s,assignmentSubmissionsMap:a}=I(o.nodes) 1028d(a) 1029const{mappedAssignmentGroupMap:r,mappedAssignments:l}=E(e.nodes,s) 1030w(r) 1031h(l) 1032i(n.nodes) 1033const u=D(t.nodes) 1034const m=u.sort(((e,t)=>e.sortableName.localeCompare(t.sortableName))) 1035m.forEach(((e,t)=>e.hiddenName=An.t("Student %{id}",{id:t+1}))) 1036c(m)}}),[K,U]) 1037const $=Object.keys(N).reduce(((e,t)=>{const{invalid:n,name:o,gradingPeriodsIds:s}=N[t] 1038const{selectedGradingPeriodId:i}=L;(n||i&&!(null!==s&&void 0!==s&&s.includes(i)))&&(e[t]=o) 1039return e}),{}) 1040const j=!(null===M||void 0===M||!M.assignmentGroupId)&&!!$[null===M||void 0===M?void 0:M.assignmentGroupId] 1041const Y=e=>{S(e) 1042e?b.set(Pn,e):b.delete(Pn) 1043f(b)} 1044const H=e=>{T(e) 1045e?b.set(Ln,e):b.delete(Ln) 1046f(b)} 1047const V=(0,s.useCallback)((e=>{d((t=>{const{assignmentId:n,id:o}=e 1048t[n][o]=e 1049return{...t}})) 1050G(e)}),[G,d]) 1051const X=(0,s.useCallback)((e=>{d((t=>{e.forEach((e=>{const{assignmentId:n,id:o}=e 1052const s=t[n][o] 1053s&&(t[n][o]={...s,...e})})) 1054return{...t}})) 1055const t=e.find((e=>e.userId===C)) 1056t&&G(t)}),[C,G]) 1057return(0,o.Z)(v.G,{as:"div"},void 0,(0,o.Z)(v.G,{as:"div",className:"row-fluid"},void 0,(0,o.Z)(v.G,{as:"div",className:"span12"},void 0,(0,o.Z)(v.G,{as:"h1"},void 0,An.t("Gradebook: Enhanced Individual View")),An.t("Note: Grades and notes will be saved automatically after moving out of the field."))),(0,o.Z)(At,{sections:n,gradebookOptions:L,customColumns:z,onSortChange:e=>{g.Z.contextSet("sort_grade_columns_by",{sortType:e}) 1058const t={...L,sortOrder:e} 1059B(t)},onSectionChange:e=>{const t={...L,selectedSection:e} 1060B(t)},onGradingPeriodChange:e=>{g.Z.contextSet("gradebook_current_grading_period",e) 1061const t={...L,selectedGradingPeriodId:e} 1062B(t)},handleCheckboxChange:(e,t)=>
1062{B((n=>{const o={...n.customOptions,[e]:t} 1063return{...n,customOptions:o}}))},onTeacherNotesCreation:e=>{B((t=>({...t,teacherNotes:e})))}}),(0,o.Z)("div",{className:"hr",style:{margin:10,padding:10,borderBottom:"1px solid #eee"}}),(0,o.Z)(mt,{courseId:p,assignments:m,students:l,selectedStudentId:C,selectedAssignmentId:O,gradebookOptions:L,onStudentChange:Y,onAssignmentChange:H}),(0,o.Z)("div",{className:"hr",style:{margin:10,padding:10,borderBottom:"1px solid #eee"}}),(0,o.Z)(hn,{assignment:M,courseId:p,currentStudent:Z,studentSubmissions:y,gradebookOptions:L,loadingStudent:k,onSubmissionSaved:V,currentStudentHiddenName:Q}),(0,o.Z)("div",{className:"hr",style:{margin:10,padding:10,borderBottom:"1px solid #eee"}}),(0,o.Z)(Tn,{assignmentGroupMap:N,gradebookOptions:L,invalidAssignmentGroups:$,student:Z,studentNotesColumnId:W,currentStudentHiddenName:Q,submissions:y}),(0,o.Z)("div",{className:"hr",style:{margin:10,padding:10,borderBottom:"1px solid #eee"}}),(0,o.Z)(je,{assignment:M,assignmentGroupInvalid:j,gradebookOptions:L,students:l,submissions:P,handleSetGrades:X}),(0,o.Z)("div",{className:"hr",style:{margin:10,padding:10,borderBottom:"1px solid #eee"}}))}var Kn,Un 1064function Fn(){const[e,t]=(0,s.useState)(null) 1065const[n,i]=(0,s.useState)(true) 1066if(!ENV.GRADEBOOK_OPTIONS)throw new Error("ENV.GRADEBOOK_OPTIONS is not defined");(0,s.useEffect)((()=>{const e=async()=>{t((0,d.eI)()) 1067i(false)} 1068e()}),[]) 1069if(n)return Kn||(Kn=(0,o.Z)(c.Z,{})) 1070return s.createElement(s.Fragment,null,(0,o.Z)(l.Z,{courseUrl:ENV.GRADEBOOK_OPTIONS.context_url,learningMasteryEnabled:Boolean(ENV.GRADEBOOK_OPTIONS.outcome_gradebook_enabled),enhancedIndividualGradebookEnabled:Boolean(ENV.GRADEBOOK_OPTIONS.individual_gradebook_enhancements),variant:"EnhancedIndividualGradebook"}),(0,o.Z)(d.eT,{client:e},void 0,Un||(Un=(0,o.Z)(Bn,{}))))}const Rn=window.location.pathname.match(/(.*\/gradebook)/) 1071const zn=Rn&&Rn[0]||"" 1072i.render((0,o.Z)(a.VK,{basename:zn},void 0,(0,o.Z)(r.Z5,{},void 0,(0,o.Z)(r.AW,{path:"/",element:(0,o.Z)(Fn,{})}))),document.getElementById("content"))},89714:(e,t,n)=>{n.d(t,{Z:()=>a}) 1073var o=n(9669) 1074var s=n.n(o) 1075s().defaults.xsrfCookieName="_csrf_token" 1076s().defaults.xsrfHeaderName="X-CSRF-Token" 1077const i=s().defaults.headers.common.Accept 1078s().defaults.headers.common.Accept="application/json+canvas-string-ids, "+i 1079s().defaults.headers.common["X-Requested-With"]="XMLHttpRequest" 1080const a=s()},89010:(e,t,n)=>{n.d(t,{Z:()=>g}) 1081var o=n(63056) 1082var s=n(67294) 1083var i=n(75149) 1084var a=n(25683) 1085var r=n.n(a) 1086var d=n(6507) 1087var l=n.n(d) 1088n(23292) 1089var c=n(86333) 1090var u 1091class m extends s.Component{constructor(){super(...arguments) 1092this.render=r().memoize((()=>{const{prefixMobile:e,showTime:t,...n}=this.props 1093let a=this.props.dateTime 1094if(!a)return u||(u=(0,o.Z)("time",{})) 1095r().isDate(a)||(a=i.Z.parse(a)) 1096const d=l().fudgeDateForProfileTimezone(a) 1097let m 1098m=this.props.format?i.Z.format(a,this.props.format):t?l().datetimeString(a):l().friendlyDatetime(d) 1099const g={...n,title:l().datetimeString(a),dateTime:a.toISOString()} 1100let v=this.props.prefix 1101v&&!v.endsWith(" ")&&(v+=" ") 1102let h=e 1103h&&!h.endsWith(" ")&&(h+=" ") 1104return(0,o.Z)("span",{"data-testid":"friendly-date-time"},void 0,(0,o.Z)(c.c,{},void 0,v+m),s.createElement("time",Object.assign({},g,{ref:e=>{this.time=e},"aria-hidden":"true"}),(0,o.Z)("span",{className:"visible-desktop"},void 0,v+m),(0,o.Z)("span",{className:"hidden-desktop"},void 0,(h||"")+d.toLocaleDateString())))}),(()=>this.props.dateTime))}}m.defaultProps={format:null,prefix:"",prefixMobile:null,showTime:false} 1105const g=m},72877:(e,t,n)=>{var o=n(6507) 1106var s=n.n(o) 1107n(33108) 1108n(11516) 1109s().widget("ui.progressbar",{version:"@VERSION",options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()}) 1110this.valueDiv=s()("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element) 1111this.oldValue=this._value() 1112this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow") 1113this.valueDiv.remove()}
1113,value:function(e){if(void 0===e)return this._value() 1114this._setOption("value",e) 1115return this},_setOption:function(e,t){if("value"===e){this.options.value=t 1116this._refreshValue() 1117this._value()===this.options.max&&this._trigger("complete")}this._super(e,t)},_value:function(){var e=this.options.value 1118"number"!==typeof e&&(e=0) 1119return Math.min(this.options.max,Math.max(this.min,e))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var e=this.value(),t=this._percentage() 1120if(this.oldValue!==e){this.oldValue=e 1121this._trigger("change")}this.valueDiv.toggle(e>this.min).toggleClass("ui-corner-right",e===this.options.max).width(t.toFixed(0)+"%") 1122this.element.attr("aria-valuenow",e)}})}}]) 1123 1124//# sourceMappingURL=enhanced_individual_gradebook-c-5cefde6a5a.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.