{"version":3,"sources":["third_party/mathjax.js","auth.ts","security/security.ts","utils/notifications.ts","utils/utils.ts","init.ts","hooks/useUser.ts","cc-api.ts","comp/BrokenServerMessage.tsx","api.ts","components/SimpleLoader.tsx","hooks/useOpenClose.ts","hooks/useRefresh.ts","models/Enums.ts","utils/arrayUtils.ts","utils/nameGenerator.ts","comp/GroupManager.tsx","hooks/useComments.ts","renderers/AbsMoment.tsx","renderers/CourseYearProblemHeader.tsx","renderers/IconClass.tsx","renderers/LightTooltip.tsx","renderers/renderErrors.tsx","utils/StatusUtils.ts","renderers/TimelineRenderer.tsx","components/DropDownMenu.tsx","hooks/useTextSelection.ts","renderers/markdown.ts","text/highlight.ts","text/SourceCodeReview.tsx","utils/nop.ts","static/languages.ts","renderers/RenderDiffTable.tsx","utils/shortcuts.ts","comp/previousResults/PreviousResults.tsx","comp/solutionResultView/SolutionResultView.GradeDialog.tsx","comp/solutionResultView/SolutionResultView.TreeView.tsx","comp/solutionResultView/SolutionResultView.tsx","components/CCFooter.tsx","utils/StateUtils.ts","renderers/BreadcrumbsRenderer.tsx","renderers/StatusMessageRenderer.tsx","utils/randomcolor.ts","comp/ProblemPicker.BigTile.tsx","comp/ProblemPicker.tsx","utils/cssVar.tsx","comp/GradeResultsCourseImpl.tsx","comp/table/TableResults.columns.tsx","utils/onEnter.ts","comp/table/TableResults.filters.tsx","comp/table/TableResults.tsx","comp/GradeResultsProblemImpl.tsx","comp/GradeResultsFork.tsx","comp/GradeResults.tsx","comp/PlagiarismReport.tsx","comp/StudentScoreboard.tsx","hooks/useLocalStorage.ts","hooks/useDnD.ts","utils/LanguageExamples.ts","utils/LanguageMap.ts","comp/codeEditor/CodeEditor.FileBar.tsx","comp/codeEditor/CodeEditor.tsx","comp/codeEditor/CodeEditor.Icon.tsx","comp/codeEditor/CodeEditor.Language.tsx","comp/IframeWrapper.tsx","comp/SubmitSolution.LastResults.tsx","comp/submitSolution/SubmitSolution.GroupSelect.tsx","comp/submitSolution/SubmitSolution.Hub.tsx","comp/submitSolution/SubmitSolution.Tags.tsx","comp/SubmitSolution.tsx","comp/table/TableResults.request.ts","comp/ViewResults.tsx","pageLinks.ts","components/NavMenu.Admin.tsx","components/NavMenu.tsx","utils/notificationUtils.ts","App.tsx","_old/registerServiceWorker.js","index.js"],"names":["script","document","createElement","src","async","window","MathJax","tex","inlineMath","head","appendChild","defaultLoginUrl","location","origin","guest","affiliation","datetime","email","eppn","id","isRoot","lastFirstName","role","roles","username","groups","isCurrentlyRoot","serverStatus","version","notifications","NotificationManager","sleep","ms","Promise","resolve","setTimeout","hubException","e","hubExceptionPart","error","toString","index","indexOf","substr","length","getInitials","name","split","map","i","charAt","join","toUpperCase","humanizeName","replaceAll","normalizePath","path","startsWith","HttpClient","config","cache","Map","url","data","method","headers","this","body","JSON","stringify","reject","fetch","baseUrl","then","result","json","catch","reason","timeout","d","a","ttl","item","get","validUntil","getTime","Date","content","delete","set","CommentService","items","event","httpClient","objectId","console","log","push","appDispatcher","dispatch","actionType","recovery","status","updated","success","LayoutUtils","onChange","className","style","_currentUser","localStorage","parse","getItem","getUser","updateUser","user","addEventListener","which","ctrlKey","alert","preventDefault","commentService","Dispatcher","liveConnection","HubConnectionBuilder","withUrl","configureLogging","LogLevel","Warning","build","_wsReconnectId","reconnectWs","startWS","debug","off","start","foo","invoke","on","payload","level","message","title","timeOut","info","warning","reload","onclose","currentUser","response","redirect","href","b","_lastUser","setItem","ContentType","Role","useUser","useState","setUser","isStudent","canBeRoot","includes","canBeStudent","useEffect","register","unregister","BrokenServerMessage","props","Alert","variant","severity","margin","AlertTitle","serverMessage","CodeCritic","admin","changeServerStateCreate","params","request","type","Json","format","api","saveGradeCreate","diffDetail","caseId","notificationMarkAsReadDetail","commentsCreate","userCoursesList","userProblemsDetail","courseName","courseYear","userProblemDetail","problem","courseListList","courseProblemListDetail","testConfigDetail","renameDetail","gradeStatsCreate","year","problemId","gradeStatsCourseCreate","studentGroupNewCreate","studentGroupStatusCreate","studentGroupEditCreate","studentGroupList","studentGroupDeleteDetail","notificationsGetList","query","plagTwoDetail","aId","bId","plagAllDetail","resultGetDetail","fileGetDetail","reviewrequestDetail","reviewrequestDelete","userProblemResultsDetail","userProblemResultsLightDetail","studentScoreboardList","statsAllStatsList","rerunSolutionDetail","viewResultsCreate","staticFiles","serveDetail","home","whoamiList","indexList","loginList","logoutList","loginDetail","webhook","updateCreate","securityWorker","secure","axiosConfig","instance","securityData","setSecurityData","secureParams","requestParams","mergeRequestParams","responseFormat","FormData","common","Accept","post","put","createFormData","responseType","axios","create","baseURL","params1","params2","defaults","input","Object","keys","reduce","formData","key","property","append","Blob","SimpleLoader","loading","SimplePacmanLoader","size","color","useOpenClose","defaultValue","value","setValue","ProcessStatusCodes","ProblemStatus","ProblemType","SubmissionStatus","CcEventType","CcUserGroupStatus","DiffResultLineType","ChangeType","useRefresh","counter","setCounter","refresh","ProcessStatusStatic","groupBy","list","keyGetter","forEach","collection","randomChoice","arr","Math","floor","random","InQueue","code","description","letter","Running","Ok","Skipped","GlobalTimeout","AnswerCorrect","AnswerCorrectTimeout","AnswerWrong","AnswerWrongTimeout","CompilationFailed","ErrorWhileRunning","UknownStatus","NoSolution","All","adjectives","nouns","UserElement","users","GroupManager","setGroups","edit","openEdit","closeEdit","newGroup","setNewGroup","isEditMode","setIsEditMode","axiosReponse","undefined","updateNewGroup","saveNewGroup","editGroup","oid","deleteGroup","updateStatus","myGrp","Confirmed","Rejected","NotConfirmed","Container","Dialog","open","onClose","fullWidth","maxWidth","DialogTitle","DialogContent","display","gap","TextField","width","flexGrow","autoFocus","label","target","Button","onClick","options","words","raw","Array","fill","flatMap","generateRandomName","j","marginRight","placeholder","toLowerCase","filter","DialogActions","disabled","Table","TableHead","TableRow","TableCell","TableBody","me","find","k","myStatus","owner","isLocked","RadioGroup","Number","FormControlLabel","control","Radio","newGrp","useComments","serviceItems","setServiceItems","cancelComment","newItems","comment","filename","text","line","comments","prepareComment","postComments","postCommentsAsync","AbsMoment","date","noTooltip","moment","fromNow","Tooltip","CourseYearProblemHeader","course","Typography","component","RouterLink","to","IconClassGeneric","points","DoneAllIcon","DoneIcon","TimerIcon","ClearIcon","PlayArrowIcon","HourglassEmptyIcon","CallMissedIcon","PriorityHighIcon","LightTooltip","withStyles","theme","tooltip","backgroundColor","palette","white","boxShadow","shadows","overflow","fontSize","renderError","adminOnly","Card","elevation","errors","renderErrorForAdmin","getStatus","TimelineRenderer","showExtra","miniMode","subresults","results","N","miniCls","minW","maxW","guess","connectorLength","min","max","ws","isRunning","Fade","in","transitionDelay","subresult","duration","toFixed","SubresultDot","diffOpen","openDiff","closeDiff","case","IconClass","IconClassSubresult","interactive","timeLimit","messages","command","fullCommand","IconButton","aria-owns","aria-haspopup","aria-describedby","DiffView","diff","setDiff","axiosResponse","lines","lineNo","data-line-number","generated","reference","renderLine","DropDownMenu","getLabel","buttonProps","getIsDisabled","Component","extraProps","ComponentCls","React","anchorEl","setAnchorEl","isDisabledFunc","handleClose","labelFunc","t","aria-controls","currentTarget","Menu","keepMounted","Boolean","MenuItem","converter","Showdown","tables","simplifiedAutoLink","strikethrough","tasklists","hljs","getSyntax","language","extension","highlightLine","syntax","highlight","SingleComment","onDelete","initials","isPending","time","pendingCls","colSpan","dangerouslySetInnerHTML","__html","LineEditor","onSave","selectedTab","setSelectedTab","minEditorHeight","maxEditorHeight","onTabChange","generateMarkdownPreview","markdown","makeHtml","SourceCodeReview","relPath","defaultComment","commentsOn","setCommentOn","editor","setEditor","selectedText","setSelectedText","variableRegex","RegExp","checkSelection","removeEventListener","selection","getSelection","source","anchorNode","parentElement","newSelection","updateSelection","test","some","classList","contains","useTextSelection","parts","otherContent","binaryContentResult","handleEditorClick","ln","rerunSolution","menuItems","toRow","isOpen","hasComments","extraCls","cls","cls2","position","textAlign","top","right","hasEditor","c","commentsTrs","editorTr","addComment","safeText","sanitizeHtml","highlightedText","regex","replacement","textRegex","match","nop","languages","RenderDiffTable","p","ids","newText","oldText","isKeySequenceNextPage","shiftKey","altKey","isKeySequencePrevPage","PreviousResults","selectedResultId","nextPage","prevPage","setResults","selectedDiff","setSelectedDiff","handleKeyPress","selected","findIndex","next","nextIndex","change","compareResults","nextSelectedItem","prev","prevIndex","prevSelectedItem","author","userOrGroupUsers","responseData","attempt","fullScreen","aName","bName","diffs","l","PreviousResult","rr","reviewRequest","creationTime","marks","valueFunc","valueName","PrettoSlider","root","height","thumb","border","marginTop","marginLeft","markLabel","active","valueLabel","left","background","track","borderRadius","rail","Slider","SolutionResultViewGradeDialog","setResult","setPoints","setComment","gradeComment","authors","isLate","submissionStatus","Late","saveGrade","grade","count","_","step","valueLabelFormat","mark","valueLabelDisplay","multiline","rows","rowsMax","SolutionResultViewTreeViewRoot","solutions","setSelected","solutionSimpleFiles","hidden","isDir","files","rawPath","allFiles","findFile","f","ff","nodeIds","TreeView","onNodeSelect","_event","nodeId","file","defaultExpanded","SolutionResultViewTreeView","forwardRef","_ref","_j","hasComment","expandCls","collapseCls","TreeItem","icon","expandIcon","collapseIcon","extractSingleSimpleFile","isMain","SolutionResultView","useParams","setSelectedResultId","setError","selectedFile","setSelectedFile","gradeDialog","setGradeDialog","problemRef","setProblemRef","courses","problems","handleFileChange","mainResult","groupName","mainStatus","Icon","canEditResult","statusName","requestCR","cancelCR","postCommentsAndRefresh","hideGradeDialog","statusCode","BeforeStart","since","Active","avail","ActiveLate","deadline","AfterDeadline","prettifiers","trimEnd","prettifyConsoleMessages","float","Grow","SlackIcon","aria-hidden","focusable","preserveAspectRatio","viewBox","CcFooter","setter","setIsOpen","openDialog","closeDialog","AppBar","bottom","Toolbar","enterDelay","arrow","htmlColor","dividers","endIcon","RenderBreadcrumbs","activeCourse","activeProblem","CustomRenderer","customRenderer","breadcrumbComponents","last","Breadcrumbs","aria-label","separator","Link","StatusMessage","colorPallete","randomColor","hash","str","String","charCodeAt","abs","hashValue","randomColorCss","prop","PickerCourseBigTile","section","defaultVisible","isVisible","setIsVisible","Grid","container","spacing","fullname","xs","sm","lg","gutterBottom","PickerProblemBigTile","renderItems","byCat","n","vals","slice","tryGetSection","hasSection","sortedItems","entries","sort","localeCompare","Fragment","ProblemPicker","tileStyle","displayAlways","withBreadcrumbs","whereUserIsTeacher","coursesResponse","setCoursesResponse","courseResponse","setCourseResponse","courseProblem","setCourseProblem","isLoading","setIsLoading","tmpCourseResponse","componentVisible","settingsConfig","teachers","userIsTeacher","currentYear","getFullYear","byYear","drawResponse","cssVar","GradeResultsCourseImpl","orderBy","setOrderBy","order","setOrder","tags","setTags","setData","context","useContext","FilterContext","updateOrderAndOrderBy","newOrderBy","showMissingGradeOnly","sortedData","applyOrderByOnly","totalPoints","reverse","applyOrderBy","applyTagsFilter","renderSortIcon","totalCols","allTags","Set","flat","Checkbox","checked","renderTags","problemName","averagePercentage","averagePercentageSolved","XS","SM","MD","convert","OnlyYesNoAll","strict","InLateAll","Languages","now","DateRange","subtract","unix","Statuses","columns","field","nameof","headerName","renderHeader","isHiddenOnSmallScreen","renderCell","row","sortComparator","_v1","_v2","cellParams1","cellParams2","score","group","disableColumnMenu","filterable","cellClassName","onEnter","onEnterFunction","TableResultsFilters","filterModel","model","columnField","human","fromModel","filters","setFilters","finishDialog","editFilter","labelPlacement","minWidth","onKeyPress","removeFilter","FilterIcon","getColumns","isSmall","innerWidth","hide","TableResults","tableResponse","onSelected","debounceDuration","mode","allowKeyboardShortcuts","sortModel","setSortModel","setFilterModel","page","pageSize","pageModel","setPageModel","filtersOpen","setFiltersOpen","dynamicColumns","setDynamicColumns","innerHeight","gridHeight","setGridHeight","divHref","useRef","handleKeyDown","handleResize","offset","current","offsetTop","onChangeDebounce","debounce","handlePageChange","lastChange","ref","density","onSortModelChange","onPageChange","onPageSizeChange","onRowClick","rowsPerPageOptions","rowCount","pagination","disableSelectionOnClick","filterMode","sortingMode","paginationMode","GradeResultsProblemImpl","selectedItem","setSelectedItem","selectedIndex","setSelectedIndex","handleSelected","newItem","reversed","GradeResultsFork","GradeStatFilterContext","createContext","CustomBreadcrumbRenderer","setContext","PlagiarismReportImpl","setItems","pair","setPair","flex","valueGetter","equalLines","totalLines","valueFormatter","ScoreBoardIcon","IconCls","children","TableCellRenderer","resultCount","msg","round","useLocalStorage","initialValue","storedValue","setStoredValue","valueToStore","Function","traverseDirectory","entry","reader","createReader","iterationAttempts","readEntries","all","ientry","isFile","flatten","isArray","LanguageExamples","examples","templatesMain","templatesLibname","unittestSpec","libname","methods","trim","withoutExtension","mapByExtension","supportedExtensions","isFiletypeSupported","endsWith","CodeEditorFileBar","onNewFile","onDeleteFile","onFullScreen","setOpen","setClose","setFilename","isValidFile","addNewFile","deleteFile","ButtonGroup","onMouseDown","button","stopPropagation","handleMouseDown","determineRequiredFiles","Unittest","unittest","u","lang","toSimpleLanguageFile","self","toSimpleFile","CodeEditor","requiredFiles","isFullScreen","setFullScreen","isDragging","dropzone","onDropHandle","startDragging","stopDragging","onDragEnter","onDragLeave","onDragOver","onDrop","dataTransfer","webkitGetAsEntry","promises","useDnD","fs","onFileDrop","setFiles","selectedRef","newFiles","updateFiles","setContent","idx","newFile","droppedFiles","dropped","getContent","FileReader","onload","readAsText","lineNumbers","dragDrop","fixedGutter","matchBrackets","func","def","getContentOrDefault","onBeforeChange","toSize","toCssVariable","CIcon","CPlusPlusIcon","CSharpIcon","TypeScriptIcon","PythonIcon","gradientUnits","x1","y1","x2","y2","gradientTransform","stop-color","transform","cx","cy","r","stop-opacity","opacity","NodeJsIcon","JavaIcon","DotNetIcon","MarkDownIcon","font-weight","font-family","MatlabIcon","CodeEditorIcon","languageId","getIcon","CodeEditorLanguage","allowedLanguages","FormControl","InputLabel","Select","IframeWrapper","minHeight","setHeight","iframe","updateIframeHeight","contentWindow","scrollHeight","onresize","onLoad","SubmitSolutionLastResults","liveResult","handleClickReview","fromServer","hybrid","hybdridLight","groupUsers","allResults","Box","statusDesc","starDesc","isLive","handleClick","PseudoUserGroupName","getValidGroupsForUser","collaboration","minSize","maxSize","meGroup","valid","SubmitSolutionGroupSelect","groupId","setGroupId","hubApi","submitSolutionGroup","langId","arguments","submitSolutionStudent","userId","generateInput","generateOutput","SubmitSolutionGroupTag","padding","enterTouchDelay","leaveTouchDelay","dt","m","rel","SubmitSolutionDeadlineTag","desc","SubmitSolutionRequiredFilesTag","SubmitSolutionRequiredLanguageTag","isUnittest","SubmitSolutionAssetsTag","assets","urlPrefix","GetIcon","GetExtraClass","startIcon","SubmitSolutionOutputTag","output","export","SubmitSolutionTimeTag","tests","safeTimeout","scale","v","scaleStart","scaleFactor","ChangeLayoutTag","layouts","SubmitSolutionImpl","setLiveResult","groupMenu","openGroupMenu","closeGroupMenu","setLanguageId","layoutIndex","setLayoutIndex","layout","typeset","resetLiveResult","grabFiles","generateFiles","groupMenuIsOpen","groupsAllowed","showGenerateBtns","LineByLine","problemIsActive","isActive","codeHidden","canSubmitSolution","complexDescriptionPage","createTableRequest","filtered","sorted","ViewResultsImpl","setTableResponse","tableModel","setTableModel","fetchData","pageLinks","exact","overflowX","yearItems","byCourseName","courseNameItems","byProblem","problemsNames","rootOnly","Provider","NavMenuAdmin","changeServerState","newState","password","prompt","anchorOrigin","vertical","horizontal","transformOrigin","EventNotification","groupCount","sender","subject","NewCodeReview","NewComment","NewGrade","flexDirection","Avatar","NavMenu","menuId","setMenuId","setNotifications","queue","setQueue","serverState","setServerState","resultObjectId","timestamp","ccEvent","isNew","newCount","reduceNotifications","groupedNotifications","newNotifications","handleMenuClose","openMenu","attributes","badgeColor","accountMenuId","notificationsMenuId","superAdminMenuId","renderMenu","newName","markAsRead","handleNotificationClose","availLinks","edge","Badge","badgeContent","classes","badge","App","marginBottom","displayName","isLocalhost","hostname","registerValidSW","swUrl","navigator","serviceWorker","registration","onupdatefound","installingWorker","installing","onstatechange","state","controller","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","render","basename","URL","process","ready","checkValidServiceWorker","registerServiceWorker"],"mappings":"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O,YAAY,SAAS,MAAM,SAAS,OAAO,QAAQ,MAAM,SAAS,QAAQ,QAAQ,UAAU,WAAW,YAAY,YAAY,aAAa,SAAS,MAAM,OAAO,OAAO,OAAO,UAAU,OAAO,OAAO,OAAO,OAAO,UAAU,QAAQ,SAAS,OAAO,UAAU,OAAO,OAAO,QAAQ,SAAS,QAAQ,SAAS,QAAQ,QAAQ,SAAS,UAAU,MAAM,MAAM,OAAO,OAAO,OAAO,QAAQ,OAAO,OAAO,OAAO,QAAQ,WAAW,SAAS,UAAU,OAAO,QAAQ,QAAQ,QAAQ,OAAO,YAAY,OAAO,QAAQ,QAAQ,SAAS,UAAU,OAAO,QAAQ,QAAQ,QAAQ,OAAO,aAAa,WAAW,QAAQ,QAAQ,cAAc,cAAc,QAAQ,QAAQ,OAAO,SAAS,QAAQ,SAAS,QAAQ,SAAS,MAAM,OAAO,UAAU,OAAO,SAAS,OAAO,QAAQ,SAAS,UAAU,MAAM,OAAO,OAAO,SAAS,OAAO,OAAO,UAAU,UAAU,OAAO,UAAU,OAAO,QAAQ,OAAO,OAAO,OAAO,QAAQ,SAAS,OAAO,WAAW,MAAM,OAAO,QAAQ,SAAS,QAAQ,UAAU,MAAM,SAAS,OAAO,UAAU,SAAS,WAAW,WAAW,MAAM,SAAS,aAAa,YAAY,WAAW,YAAY,OAAO,SAAS,OAAO,MAAM,MAAM,QAAQ,QAAQ,YAAY,QAAQ,OAAO,QAAQ,QAAQ,OAAO,SAAS,MAAM,OAAO,OAAO,UAAU,QAAQ,OAAO,QAAQ,OAAO,YAAY,UAAU,OAAO,UAAU,OAAO,OAAO,OAAO,WAAW,QAAQ,UAAU,MAAM,OAAO,SAAS,UAAU,UAAU,QAAQ,UAAU,QAAQ,OAAO,QAAQ,MAAM,SAAS,OAAO,OAAO,SAAS,OAAO,OAAO,OAAO,MAAM,SAAS,QAAQ,YAAY,UAAU,QAAQ,OAAO,UAAU,MAAM,SAAS,OAAO,SAAS,OAAO,OAAO,QAAQ,OAAO,UAAU,OAAO,UAAU,SAAS,MAAM,QAAQ,OAAO,SAAS,OAAO,OAAO,OAAO,WAAW,OAAO,SAAS,OAAO,SAAS,MAAM,QAAQ,SAAS,QAAQ,OAAO,UAAU,SAAS,SAAS,WAAW,QAAQ,OAAO,SAAS,OAAO,SAAS,OAAO,OAAO,SAAS,QAAQ,OAAO,QAAQ,QAAQ,QAAQ,OAAO,OAAO,WAAW,SAAS,MAAM,UAA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","file":"static/js/main.182cc406.chunk.js","sourcesContent":["(function () {\n var script = document.createElement('script');\n script.src = 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js';\n script.async = true;\n window.MathJax = {\n tex: {\n inlineMath: [['$', '$'], ['\\\\(', '\\\\)']]\n },\n };\n document.head.appendChild(script);\n})();","import { IAppUser } from './cc-api';\n\nconst defaultAuthUrl = `https://flowdb.nti.tul.cz/auth/index.php`;\nconst defaultLoginUrl = `${defaultAuthUrl}?returnurl=${window.location.origin}/home/login`;\n\nexport const auth = () => {\n return new Promise((resolve, reject) => {\n if ((window as any).currentUser) {\n resolve((window as any).currentUser);\n }\n\n fetch(\"home/whoami\")\n .then(response => {\n if (response.status === 200) {\n response\n .json()\n .then((data: IAppUser) => {\n (window as any).currentUser = data;\n resolve((window as any).currentUser);\n })\n } else {\n if (response.status === 203) {\n response\n .json()\n .then((data: any) => {\n const { error, message, redirect } = data;\n (window as any).location.href = defaultLoginUrl;\n })\n } else {\n console.log('auth error', (window as any).currentUser);\n (window as any).location.href = defaultLoginUrl;\n reject();\n }\n }\n })\n .catch(response => {\n debugger;\n console.log('auth error', (window as any).currentUser);\n (window as any).location.href = defaultLoginUrl;\n reject();\n })\n });\n}\n","import { IAppUser } from '../cc-api';\n\nexport const guest: IAppUser = {\n affiliation: \"guest\",\n datetime: \"guest\",\n email: \"guest@tul.cz\",\n eppn: \"guest\",\n id: \"guest\",\n isRoot: false,\n lastFirstName: \"guest guest\",\n role: null as any,\n roles: [],\n username: \"guest\",\n groups: [],\n isCurrentlyRoot: false,\n serverStatus: null,\n version: \"develop\"\n}\n\nexport const getLocalStorageUserOrDefault = () => {\n if ('user' in localStorage) {\n const data = JSON.parse(localStorage.getItem('user'));\n return data as IAppUser;\n }\n \n return {...guest};\n}\n\nexport const isUserEqual = (a: IAppUser, b:IAppUser) => {\n return JSON.stringify(a) == JSON.stringify(b);\n}","import { NotificationManager } from 'react-notifications';\n\ninterface INotificationManager {\n info(msg: string, title?: string, duration?: number): void;\n success(msg: string, title?: string, duration?: number): void;\n warning(msg: string, title?: string, duration?: number): void;\n error(msg: string, title?: string, duration?: number): void;\n}\n\nexport const notifications = NotificationManager as INotificationManager;","import { notifications } from \"./notifications\";\r\n\r\nexport const sleep = (ms) => {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n}\r\n\r\nexport const hubException = (e: any) => {\r\n const hubExceptionPart = \"HubException:\";\r\n const error = e.toString();\r\n const index = error.indexOf(hubExceptionPart);\r\n \r\n notifications.error(\r\n index != -1\r\n ? error.substr(index + hubExceptionPart.length)\r\n : error\r\n );\r\n}\r\n\r\nexport const getInitials = (name: string) => (name || \"\")\r\n .split(\".\", 2)\r\n .map(i => i.charAt(0))\r\n .join(\"\")\r\n .toUpperCase();\r\n \r\nexport const humanizeName = (name: string) => (name || \"\")\r\n .split(\".\")\r\n .map(i => i.charAt(0).toUpperCase() + i.substr(1))\r\n .join(\" \")\r\n .replaceAll(/\\d/g, \"\");\r\n\r\n\r\nexport function last(iterable: T[]) {\r\n return iterable[iterable.length-1];\r\n};\r\n\r\nexport const normalizePath = (path: string) => {\r\n if (path.startsWith(\"/\")) {\r\n return path;\r\n }\r\n return `/${path}`;\r\n}","import { Dispatcher } from 'flux';\nimport { NotificationManager } from 'react-notifications';\n\nimport { HubConnectionBuilder, LogLevel } from '@aspnet/signalr';\n\nimport { auth } from './auth';\nimport { IAppUser, ICcEvent, ICommentServiceItem } from './cc-api';\nimport { getLocalStorageUserOrDefault, isUserEqual } from './security/security';\nimport { sleep } from './utils/utils';\n\ninterface HttpClientConfig {\n baseUrl: string;\n headers: { [key: string]: string };\n}\n\ntype methodType = \"auto\" | \"get\" | \"post\" | \"delete\" | \"put\" | \"patch\";\n\nclass HttpClient {\n\n private cache: Map = new Map();\n constructor(private config: HttpClientConfig) {\n }\n\n public fetch(url: string, data: any = null, method: methodType = \"auto\"): Promise {\n const headers = this.config.headers || {};\n const body = data === null ? null : JSON.stringify(data);\n method = method === \"auto\" ? (data === null ? \"get\" : \"post\") : method;\n return new Promise((resolve, reject) => {\n fetch(`${this.config.baseUrl}${url}`, { method, headers, body })\n .then(result => result.json())\n .catch(reason => reject(reason))\n .then(data => resolve(data))\n .catch(reason => reject(reason))\n });\n }\n\n public fetchSlow(url: string, data: any = null, method: methodType = \"auto\", timeout=1000): Promise {\n return new Promise((resolve, reject) => {\n this.fetch(url, data, method)\n .then(async d => {\n await sleep(timeout);\n resolve(d);\n });\n });\n }\n\n public fetchWithCache(url, ttl: number = 5): Promise {\n const item = this.cache.get(url);\n if (item != null) {\n if (item.validUntil.getTime() > new Date().getTime()) {\n return new Promise((resolve, reject) => {\n resolve(item.content);\n });\n } else {\n this.cache.delete(url);\n }\n }\n return new Promise((resolve, reject) => {\n this.fetch(url)\n .then(data => {\n this.cache.set(url, {\n content: data,\n validUntil: new Date(new Date().getTime() + 1000 * 60 * ttl)\n });\n resolve(data);\n })\n .catch(reason => reject(reason))\n });\n }\n}\n\n\nclass CommentService {\n public markAsRead(event: ICcEvent) {\n httpClient.fetch(`notification/mark-as-read/${event.objectId}`)\n .then(i => {\n console.log(i);\n });\n }\n\n public items: ICommentServiceItem[] = [];\n\n public prepareComment(item: ICommentServiceItem) {\n this.items.push(item);\n appDispatcher.dispatch({\n actionType: \"commentServiceChanged\"\n });\n }\n\n public discardComments() {\n this.items = [];\n appDispatcher.dispatch({\n actionType: \"commentServiceChanged\"\n });\n }\n\n public async postCommentsAsync () {\n return new Promise(async (resolve, reject) => {\n if (!this.items.length) {\n return;\n }\n \n const recovery = this.items;\n const data = await httpClient.fetch(\"comments\", this.items, \"post\")\n const { status, updated } = data;\n if (status === \"ok\") {\n NotificationManager.success(`Ok, Saved ${updated} comments`);\n } else {\n NotificationManager.error(`Failed to save ${recovery.length} comments`);\n }\n \n this.items = [];\n appDispatcher.dispatch({\n actionType: \"commentServiceChanged\"\n });\n resolve(true);\n })\n }\n public postComments() {\n if (!this.items.length) {\n return;\n }\n\n const recovery = this.items;\n httpClient.fetch(\"comments\", this.items, \"post\")\n .then(data => {\n const { status, updated } = data;\n if (status === \"ok\") {\n NotificationManager.success(`Ok, Saved ${updated} comments`);\n } else {\n NotificationManager.error(`Failed to save ${recovery.length} comments`);\n }\n\n this.items = [];\n appDispatcher.dispatch({\n actionType: \"commentServiceChanged\"\n });\n });\n }\n}\n\nexport class LayoutUtils {\n public onChange?: (style: string) => void;\n\n public className: string = \"\";\n public setContainerStyle(style: string) {\n this.className = style\n\n if (this.onChange) {\n this.onChange(this.className);\n }\n }\n}\n\nexport const httpClient = new HttpClient({\n baseUrl: 'api/',\n headers: {\n 'Content-Type': 'application/json'\n },\n});\n\n\n\nlet _currentUser: IAppUser = getLocalStorageUserOrDefault();\n\ndeclare global {\n interface PrettyCode {\n prettyPrintOne: (sourceCodeHtml: string, opt_langExtension: string, opt_numberLines: boolean) => string;\n prettyPrint: (opt_whenDone: Function, root: HTMLElement | HTMLDocument) => void;\n }\n\n interface Window {\n PR: PrettyCode;\n }\n}\n\nexport const getUser = () => _currentUser;\nexport const userIsRoot = () => _currentUser.role === \"root\";\n\nexport const updateUser = (user: IAppUser) => {\n _currentUser = user;\n appDispatcher.dispatch({ actionType: \"userChanged\" });\n}\n\nexport const layoutUtils = new LayoutUtils();\n\n\nwindow.addEventListener(\"keypress\", event => {\n if (!(event.which == 115 && event.ctrlKey) && !(event.which == 19)) return true\n alert(\"Ctrl-S pressed\");\n event.preventDefault();\n return false;\n});\n\n\nexport type DispatcherActionType = 'userChanged' | 'commentServiceChanged' | 'newNotification' | 'serverStateChanged' | 'queueStatus';\nexport interface IDispatcher {\n actionType: DispatcherActionType;\n data?: any;\n}\n\nexport const superAdmin = \"jan.hybs\";\nexport const commentService = new CommentService();\nexport const appDispatcher = new Dispatcher();\nexport const liveConnection = new HubConnectionBuilder()\n .withUrl(\"/live\")\n .configureLogging(LogLevel.Warning)\n .build();\n\nlet _wsReconnectId = -1;\nconst reconnectWs = () => {\n if (_wsReconnectId === -1) {\n _wsReconnectId = setTimeout(() => {\n startWS();\n _wsReconnectId = -1;\n }, 5000) as any;\n } else {\n console.debug(`already reconnecting`);\n }\n}\nconst startWS = () => {\n appDispatcher.dispatch({\n actionType: \"serverStateChanged\",\n data: \"connecting\",\n });\n\n try {\n liveConnection.off(\"newNotification\");\n liveConnection.off(\"queueStatus\");\n liveConnection.off(\"serverMessage\");\n } catch (error) {\n console.error(\"error unsubsreibing from events\");\n }\n\n liveConnection.start()\n .then(() => {\n appDispatcher.dispatch({\n actionType: \"serverStateChanged\",\n data: \"connected\",\n });\n console.log(\"Connected to the hub\");\n (window as any).foo = liveConnection;\n liveConnection.invoke(\"RegisterUser\", _currentUser.id);\n\n liveConnection.on(\"newNotification\", payload => {\n appDispatcher.dispatch({\n actionType: \"newNotification\",\n data: payload\n })\n });\n\n liveConnection.on(\"queueStatus\", payload => {\n appDispatcher.dispatch({\n actionType: \"queueStatus\",\n data: payload\n })\n });\n\n liveConnection.on(\"serverMessage\", (level: NotificationLevel, message: string, title:string = \"\", timeOut: number = 400) => {\n console.log({level, message, title, timeOut})\n console.log(NotificationManager);\n switch (level) {\n case \"info\":\n NotificationManager.info(message.toString(), title, timeOut);\n break;\n case \"success\":\n NotificationManager.success(message.toString(), title, timeOut);\n break;\n case \"warning\":\n NotificationManager.warning(message.toString(), title, timeOut);\n break;\n case \"error\":\n NotificationManager.error(message.toString(), title, timeOut);\n if (title === \"Server shutting down\") {\n setTimeout(() => {\n window.location.reload();\n }, timeOut + 1000);\n }\n break;\n }\n });\n })\n .catch(error => {\n appDispatcher.dispatch({\n actionType: \"serverStateChanged\",\n data: \"closed\",\n });\n reconnectWs();\n })\n\n liveConnection.onclose(error => {\n appDispatcher.dispatch({\n actionType: \"serverStateChanged\",\n data: \"closed\",\n });\n reconnectWs();\n });\n}\n\n\ntype NotificationLevel = \"info\" | \"success\" | \"warning\" | \"error\";\n\nauth()\n .then(i => {\n const _lastUser = {..._currentUser};\n _currentUser = (window as any).currentUser as IAppUser;\n localStorage.setItem('user', JSON.stringify(_currentUser));\n \n if (!isUserEqual(_lastUser, _currentUser)) {\n appDispatcher.dispatch({ actionType: \"userChanged\" });\n }\n startWS();\n });\n","import { useEffect, useState } from 'react';\n\nimport { appDispatcher, getUser } from '../init';\n\nconst Role = {\n root: 'root',\n student: 'student',\n}\n\nexport const useUser = () => {\n const [user, setUser] = useState(getUser())\n\n const isRoot = user.role === Role.root;\n const isStudent = user.role === Role.student;\n const canBeRoot = user.roles.includes(Role.root);\n const canBeStudent = user.roles.includes(Role.student);\n\n useEffect(() => {\n const id = appDispatcher.register(payload => {\n switch (payload.actionType) {\n case \"userChanged\":\n setUser({ ...getUser() });\n break;\n }\n });\n\n return () => {\n appDispatcher.unregister(id);\n }\n\n }, []);\n\n // const { user, isRoot, isStudent, canBeRoot, canBeStudent } = useUser();\n return { user, isRoot, isStudent, canBeRoot, canBeStudent };\n}","/* eslint-disable */\n/* tslint:disable */\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nexport interface IAdminResponse {\n ok?: boolean;\n message?: string | null;\n}\n\nexport interface IApiError {\n name?: string | null;\n errors?: string[] | null;\n}\n\nexport interface IAppUser {\n eppn?: string | null;\n affiliation?: string | null;\n datetime?: string | null;\n role?: string | null;\n serverStatus?: string | null;\n serverMessage?: string | null;\n version?: string | null;\n id?: string | null;\n isRoot?: boolean;\n isCurrentlyRoot?: boolean;\n username?: string | null;\n lastFirstName?: string | null;\n email?: string | null;\n roles?: string[] | null;\n groups?: ICcGroup[] | null;\n}\n\nexport interface ICcData {\n id?: IObjectId;\n objectId?: string | null;\n isActive?: boolean;\n user?: string | null;\n groupName?: string | null;\n groupId?: IObjectId;\n groupUsers?: string[] | null;\n resultDirname?: string | null;\n isGroup?: boolean;\n userOrGroupUsers?: string[] | null;\n courseName?: string | null;\n courseYear?: string | null;\n problem?: string | null;\n action?: string | null;\n docker?: boolean;\n result?: ICcDataResult;\n results?: ICcDataCaseResult[] | null;\n language?: string | null;\n solutions?: ICcDataSolution[] | null;\n submissionStatus?: ISubmissionStatus;\n\n /** @format int32 */\n attempt?: number;\n\n /** @format float */\n points?: number;\n gradeComment?: string | null;\n\n /** @format date-time */\n reviewRequest?: string | null;\n comments?: ILineComment[] | null;\n files?: ISimpleFile[] | null;\n}\n\nexport interface ICcDataApiListResponse {\n data?: ICcData[] | null;\n errors?: IApiError[] | null;\n}\n\nexport interface ICcDataApiResponse {\n data?: ICcData;\n errors?: IApiError[] | null;\n}\n\nexport interface ICcDataCaseResult {\n /** @format int32 */\n status?: number;\n\n /** @format double */\n duration?: number;\n\n /** @format double */\n timeLimit?: number;\n message?: string | null;\n\n /** @format int32 */\n score?: number;\n scores?: number[] | null;\n console?: string[] | null;\n messages?: string[] | null;\n case?: string | null;\n\n /** @format int32 */\n returncode?: number;\n command?: string | null;\n fullCommand?: string | null;\n}\n\nexport interface ICcDataDto {\n /** @format double */\n duration?: number;\n group?: string | null;\n status?: string | null;\n\n /** @format float */\n points?: number;\n score?: string | null;\n\n /** @format int32 */\n comments?: number;\n isLate?: string | null;\n\n /** @format date-time */\n reviewRequest?: string | null;\n problem?: string | null;\n year?: string | null;\n course?: string | null;\n language?: string | null;\n users?: string[] | null;\n\n /** @format date-time */\n date?: string;\n\n /** @format int32 */\n attempt?: number;\n objectId?: string | null;\n}\n\nexport interface ICcDataLight {\n id?: IObjectId;\n objectId?: string | null;\n\n /** @format int32 */\n status?: number;\n\n /** @format int32 */\n attempt?: number;\n\n /** @format date-time */\n reviewRequest?: string | null;\n\n /** @format float */\n points?: number;\n user?: string | null;\n groupUsers?: string[] | null;\n}\n\nexport interface ICcDataLightApiListResponse {\n data?: ICcDataLight[] | null;\n errors?: IApiError[] | null;\n}\n\nexport interface ICcDataResult {\n /** @format int32 */\n status?: number;\n\n /** @format double */\n duration?: number;\n\n /** @format double */\n timeLimit?: number;\n message?: string | null;\n\n /** @format int32 */\n score?: number;\n scores?: number[] | null;\n console?: string[] | null;\n messages?: string[] | null;\n}\n\nexport interface ICcDataSolution {\n filename?: string | null;\n content?: string | null;\n\n /** @format int32 */\n index?: number;\n isMain?: boolean;\n hidden?: boolean;\n isDynamic?: boolean;\n isSeparator?: boolean;\n}\n\nexport interface ICcEvent {\n id?: IObjectId;\n objectId?: string | null;\n resultId?: IObjectId;\n resultObjectId?: string | null;\n sender?: string | null;\n reciever?: string | null;\n subject?: string | null;\n content?: string | null;\n type?: ICcEventType;\n isNew?: boolean;\n}\n\nexport interface ICcEventApiListResponse {\n data?: ICcEvent[] | null;\n errors?: IApiError[] | null;\n}\n\n/**\n * @format int32\n */\nexport type ICcEventType = 0 | 1 | 2 | 3;\n\nexport interface ICcGroup {\n id?: IObjectId;\n objectId?: string | null;\n oid?: string | null;\n isLocked?: boolean;\n owner?: string | null;\n name?: string | null;\n status?: ICcUserGroupStatus;\n users?: ICcUserGroup[] | null;\n}\n\nexport interface ICcUserGroup {\n name?: string | null;\n status?: ICcUserGroupStatus;\n}\n\n/**\n * @format int32\n */\nexport type ICcUserGroupStatus = 0 | 1 | 2;\n\nexport interface ICcUserGroupUpdate {\n name?: string | null;\n status?: ICcUserGroupStatus;\n oid?: string | null;\n}\n\nexport interface IChangeServerStateRequest {\n password?: string | null;\n newState?: string | null;\n message?: string | null;\n}\n\n/**\n * @format int32\n */\nexport type IChangeType = 0 | 1 | 2 | 3 | 4;\n\nexport interface ICommentServiceItem {\n comment?: ILineComment;\n objectId?: string | null;\n}\n\nexport interface ICourse {\n name?: string | null;\n courseConfig?: ICourseConfig;\n courseYears?: ICourseYearConfig[] | null;\n courseDir?: string | null;\n errors?: string[] | null;\n}\n\n/**\n * @format int32\n */\nexport type ICourseAccess = 1 | 2;\n\nexport interface ICourseConfig {\n name?: string | null;\n desc?: string | null;\n disabled?: boolean;\n access?: string | null;\n teachers?: IUser[] | null;\n students?: IUser[] | null;\n tags?: ICourseTag[] | null;\n}\n\nexport interface ICourseConfigDto {\n name?: string | null;\n desc?: string | null;\n disabled?: boolean;\n access?: ICourseAccess;\n courses?: ICourseYearDto[] | null;\n errors?: string[] | null;\n}\n\nexport interface ICourseConfigDtoApiListResponse {\n data?: ICourseConfigDto[] | null;\n errors?: IApiError[] | null;\n}\n\nexport interface ICourseGradeProblemDto {\n problemName?: string | null;\n problemId?: string | null;\n objectId?: string | null;\n\n /** @format float */\n points?: number;\n status?: IProcessStatusCodes;\n}\n\nexport interface ICourseGradeStudentDto {\n user?: string | null;\n\n /** @format float */\n totalPoints?: number;\n\n /** @format float */\n averagePercentage?: number;\n\n /** @format float */\n averagePercentageSolved?: number;\n problems?: ICourseGradeProblemDto[] | null;\n tags?: string[] | null;\n}\n\nexport type ICourseGroup = object;\n\nexport interface ICourseProblem {\n unittest?: IUnittestSpec[] | null;\n type?: IProblemType;\n files?: string[] | null;\n id?: string | null;\n name?: string | null;\n cat?: string[] | null;\n section?: string | null;\n\n /** @format double */\n timeout?: number;\n\n /** @format date-time */\n since?: string;\n\n /** @format date-time */\n avail?: string;\n\n /** @format date-time */\n deadline?: string;\n assets?: string[] | null;\n export?: string[] | null;\n reference?: ICourseReference;\n tests?: ICourseProblemCase[] | null;\n collaboration?: ICourseProblemCollaborationConfig;\n statusCode?: IProblemStatus;\n isActive?: boolean;\n groupsAllowed?: boolean;\n description?: string | null;\n complexDescriptionPage?: string | null;\n course?: string | null;\n year?: string | null;\n}\n\nexport interface ICourseProblemApiListResponse {\n data?: ICourseProblem[] | null;\n errors?: IApiError[] | null;\n}\n\nexport interface ICourseProblemCase {\n id?: string | null;\n\n /** @format int32 */\n size?: number;\n\n /** @format int32 */\n random?: number;\n\n /** @format double */\n timeout?: number;\n test?: string | null;\n}\n\nexport interface ICourseProblemCollaborationConfig {\n enabled?: boolean;\n\n /** @format int32 */\n minSize?: number;\n\n /** @format int32 */\n maxSize?: number;\n}\n\nexport interface ICourseReference {\n name?: string | null;\n lang?: string | null;\n hidden?: boolean;\n}\n\nexport interface ICourseTag {\n name?: string | null;\n values?: string[] | null;\n}\n\nexport interface ICourseYearConfig {\n year?: string | null;\n problems?: ICourseProblem[] | null;\n settingsConfig?: ISettingsConfig;\n courseGroup?: ICourseGroup;\n}\n\nexport interface ICourseYearDto {\n course?: string | null;\n year?: string | null;\n teachers?: ISettingsConfigTeacher[] | null;\n problems?: IProblemDto[] | null;\n}\n\nexport interface IDiffPaneModel {\n lines?: IDiffPiece[] | null;\n}\n\nexport interface IDiffPiece {\n type?: IChangeType;\n\n /** @format int32 */\n position?: number | null;\n text?: string | null;\n subPieces?: IDiffPiece[] | null;\n}\n\nexport interface IDiffResultComposite {\n reference?: string | null;\n generated?: string | null;\n lines?: IDiffResultLine[] | null;\n error?: string | null;\n isOk?: boolean;\n}\n\nexport interface IDiffResultLine {\n reference?: string | null;\n generated?: string | null;\n type?: IDiffResultLineType;\n}\n\n/**\n * @format int32\n */\nexport type IDiffResultLineType = 1 | 2;\n\nexport interface IGradeDto {\n result?: ICcDataDto;\n user?: IUser;\n}\n\nexport interface IGradeStatFilterDto {\n showMissingGradeOnly?: boolean;\n}\n\nexport interface ILineComment {\n text?: string | null;\n\n /** @format double */\n time?: number;\n user?: string | null;\n\n /** @format int32 */\n line?: number;\n filename?: string | null;\n}\n\nexport interface IMarkSolutionItem {\n objectId?: string | null;\n\n /** @format float */\n points?: number;\n comment?: string | null;\n}\n\nexport interface IObjectId {\n /** @format int32 */\n timestamp?: number;\n\n /** @format int32 */\n machine?: number;\n\n /** @format int32 */\n pid?: number;\n\n /** @format int32 */\n increment?: number;\n\n /** @format date-time */\n creationTime?: string;\n}\n\nexport interface IPlagResult {\n aId?: string | null;\n bId?: string | null;\n aName?: string | null;\n bName?: string | null;\n language?: string | null;\n diffs?: ISideBySideDiff[] | null;\n\n /** @format int32 */\n equalLines?: number;\n\n /** @format int32 */\n totalLines?: number;\n\n /** @format double */\n similarity?: number;\n}\n\nexport interface IProblemDto {\n course?: string | null;\n year?: string | null;\n problem?: string | null;\n config?: ICourseProblem;\n}\n\n/**\n * @format int32\n */\nexport type IProblemStatus = 0 | 1 | 2 | 3;\n\n/**\n * @format int32\n */\nexport type IProblemType = 1 | 2 | 3;\n\n/**\n * @format int32\n */\nexport type IProcessStatusCodes = 1 | 2 | 9 | 10 | 12 | 100 | 101 | 200 | 201 | 400 | 500 | 666;\n\nexport interface ISettingsConfig {\n teachers?: ISettingsConfigTeacher[] | null;\n allStudents?: IUser[] | null;\n}\n\nexport interface ISettingsConfigTeacher {\n id?: string | null;\n tags?: string[] | null;\n students?: IUser[] | null;\n problems?: string[] | null;\n}\n\nexport interface ISideBySideDiff {\n a?: string | null;\n b?: string | null;\n diff?: ISideBySideDiffModel;\n}\n\nexport interface ISideBySideDiffModel {\n oldText?: IDiffPaneModel;\n newText?: IDiffPaneModel;\n}\n\nexport interface ISimpleFile {\n rawPath?: string | null;\n relPath?: string | null;\n filename?: string | null;\n isDir?: boolean;\n content?: any;\n files?: ISimpleFile[] | null;\n}\n\nexport interface ISingleCourse {\n courseRef?: ICourse;\n course?: string | null;\n year?: string | null;\n courseConfig?: ICourseConfig;\n problems?: ICourseProblem[] | null;\n settingsConfig?: ISettingsConfig;\n}\n\nexport interface ISingleCourseApiListResponse {\n data?: ISingleCourse[] | null;\n errors?: IApiError[] | null;\n}\n\nexport interface IStudentScoreboardCourse {\n problem?: string | null;\n courseName?: string | null;\n courseYear?: string | null;\n\n /** @format date-time */\n since?: string;\n\n /** @format float */\n score?: number;\n objectId?: string | null;\n\n /** @format int32 */\n resultCount?: number;\n results?: ICcData[] | null;\n courseProblem?: ICourseProblem;\n}\n\n/**\n * @format int32\n */\nexport type ISubmissionStatus = 0 | 1 | 2 | 3;\n\nexport interface ITableRequest {\n /** @format int32 */\n pageSize?: number;\n\n /** @format int32 */\n page?: number;\n sorted?: ITableRequestSort[] | null;\n filtered?: ITableRequestFilter[] | null;\n}\n\nexport interface ITableRequestFilter {\n id?: string | null;\n value?: string | null;\n}\n\nexport interface ITableRequestSort {\n id?: string | null;\n desc?: boolean;\n}\n\nexport interface ITableResponse {\n /** @format int64 */\n count?: number;\n data?: ICcDataDto[] | null;\n}\n\nexport interface ITableResponseApiResponse {\n data?: ITableResponse;\n errors?: IApiError[] | null;\n}\n\nexport interface IUnittestSpec {\n entrypoint?: string | null;\n libname?: string | null;\n lang?: string | null;\n methods?: string[] | null;\n hidden?: boolean;\n}\n\nexport interface IUser {\n id?: string | null;\n tags?: string[] | null;\n}\n\nimport axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, ResponseType } from \"axios\";\n\nexport type QueryParamsType = Record;\n\nexport interface FullRequestParams extends Omit {\n /** set parameter to `true` for call `securityWorker` for this request */\n secure?: boolean;\n /** request path */\n path: string;\n /** content type of request body */\n type?: ContentType;\n /** query params */\n query?: QueryParamsType;\n /** format of response (i.e. response.json() -> format: \"json\") */\n format?: ResponseType;\n /** request body */\n body?: unknown;\n}\n\nexport type RequestParams = Omit;\n\nexport interface ApiConfig extends Omit {\n securityWorker?: (\n securityData: SecurityDataType | null,\n ) => Promise | AxiosRequestConfig | void;\n secure?: boolean;\n format?: ResponseType;\n}\n\nexport enum ContentType {\n Json = \"application/json\",\n FormData = \"multipart/form-data\",\n UrlEncoded = \"application/x-www-form-urlencoded\",\n}\n\nexport class HttpClient {\n public instance: AxiosInstance;\n private securityData: SecurityDataType | null = null;\n private securityWorker?: ApiConfig[\"securityWorker\"];\n private secure?: boolean;\n private format?: ResponseType;\n\n constructor({ securityWorker, secure, format, ...axiosConfig }: ApiConfig = {}) {\n this.instance = axios.create({ ...axiosConfig, baseURL: axiosConfig.baseURL || \"\" });\n this.secure = secure;\n this.format = format;\n this.securityWorker = securityWorker;\n }\n\n public setSecurityData = (data: SecurityDataType | null) => {\n this.securityData = data;\n };\n\n private mergeRequestParams(params1: AxiosRequestConfig, params2?: AxiosRequestConfig): AxiosRequestConfig {\n return {\n ...this.instance.defaults,\n ...params1,\n ...(params2 || {}),\n headers: {\n ...(this.instance.defaults.headers || {}),\n ...(params1.headers || {}),\n ...((params2 && params2.headers) || {}),\n },\n };\n }\n\n private createFormData(input: Record): FormData {\n return Object.keys(input || {}).reduce((formData, key) => {\n const property = input[key];\n formData.append(\n key,\n property instanceof Blob\n ? property\n : typeof property === \"object\" && property !== null\n ? JSON.stringify(property)\n : `${property}`,\n );\n return formData;\n }, new FormData());\n }\n\n public request = async ({\n secure,\n path,\n type,\n query,\n format,\n body,\n ...params\n }: FullRequestParams): Promise> => {\n const secureParams =\n ((typeof secure === \"boolean\" ? secure : this.secure) &&\n this.securityWorker &&\n (await this.securityWorker(this.securityData))) ||\n {};\n const requestParams = this.mergeRequestParams(params, secureParams);\n const responseFormat = (format && this.format) || void 0;\n\n if (type === ContentType.FormData && body && body !== null && typeof body === \"object\") {\n requestParams.headers.common = { Accept: \"*/*\" };\n requestParams.headers.post = {};\n requestParams.headers.put = {};\n\n body = this.createFormData(body as Record);\n }\n\n return this.instance.request({\n ...requestParams,\n headers: {\n ...(type && type !== ContentType.FormData ? { \"Content-Type\": type } : {}),\n ...(requestParams.headers || {}),\n },\n params: query,\n responseType: responseFormat,\n data: body,\n url: path,\n });\n };\n}\n\n/**\n * @title cc.net\n * @version 1.0\n */\nexport class Api extends HttpClient {\n admin = {\n /**\n * No description\n *\n * @tags Admin\n * @name ChangeServerStateCreate\n * @request POST:/admin/change-server-state\n */\n changeServerStateCreate: (data: IChangeServerStateRequest, params: RequestParams = {}) =>\n this.request({\n path: `/admin/change-server-state`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n }),\n };\n api = {\n /**\n * No description\n *\n * @tags ApiConfig\n * @name SaveGradeCreate\n * @request POST:/api/save-grade\n */\n saveGradeCreate: (data: IMarkSolutionItem, params: RequestParams = {}) =>\n this.request({\n path: `/api/save-grade`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags ApiConfig\n * @name DiffDetail\n * @request GET:/api/diff/{objectId}/{caseId}\n */\n diffDetail: (objectId: string, caseId: string, params: RequestParams = {}) =>\n this.request({\n path: `/api/diff/${objectId}/${caseId}`,\n method: \"GET\",\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Comments\n * @name NotificationMarkAsReadDetail\n * @request GET:/api/notification/mark-as-read/{objectId}\n */\n notificationMarkAsReadDetail: (objectId: string, params: RequestParams = {}) =>\n this.request({\n path: `/api/notification/mark-as-read/${objectId}`,\n method: \"GET\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Comments\n * @name CommentsCreate\n * @request POST:/api/comments\n */\n commentsCreate: (data: ICommentServiceItem[], params: RequestParams = {}) =>\n this.request({\n path: `/api/comments`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Courses\n * @name UserCoursesList\n * @request GET:/api/user-courses\n * @deprecated\n */\n userCoursesList: (params: RequestParams = {}) =>\n this.request({\n path: `/api/user-courses`,\n method: \"GET\",\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Courses\n * @name UserProblemsDetail\n * @request GET:/api/user-problems/{courseName}/{courseYear}\n */\n userProblemsDetail: (courseName: string, courseYear: string, params: RequestParams = {}) =>\n this.request({\n path: `/api/user-problems/${courseName}/${courseYear}`,\n method: \"GET\",\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Courses\n * @name UserProblemDetail\n * @request GET:/api/user-problem/{courseName}/{courseYear}/{problem}\n */\n userProblemDetail: (courseName: string, courseYear: string, problem: string, params: RequestParams = {}) =>\n this.request({\n path: `/api/user-problem/${courseName}/${courseYear}/${problem}`,\n method: \"GET\",\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Courses\n * @name CourseListList\n * @request GET:/api/course-list\n */\n courseListList: (params: RequestParams = {}) =>\n this.request({\n path: `/api/course-list`,\n method: \"GET\",\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Courses\n * @name CourseProblemListDetail\n * @request GET:/api/course-problem-list/{courseName}/{courseYear}\n */\n courseProblemListDetail: (courseName: string, courseYear: string, params: RequestParams = {}) =>\n this.request({\n path: `/api/course-problem-list/${courseName}/${courseYear}`,\n method: \"GET\",\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Courses\n * @name TestConfigDetail\n * @request GET:/api/test-config/{courseName}/{courseYear}\n * @deprecated\n */\n testConfigDetail: (courseName: string, courseYear: string, params: RequestParams = {}) =>\n this.request({\n path: `/api/test-config/${courseName}/${courseYear}`,\n method: \"GET\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Developer\n * @name RenameDetail\n * @request GET:/api/rename/{id}\n */\n renameDetail: (id: string, params: RequestParams = {}) =>\n this.request({\n path: `/api/rename/${id}`,\n method: \"GET\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Grade\n * @name GradeStatsCreate\n * @request POST:/api/grade-stats/{courseName}/{year}/{problemId}\n */\n gradeStatsCreate: (\n courseName: string,\n year: string,\n problemId: string,\n data: IGradeStatFilterDto,\n params: RequestParams = {},\n ) =>\n this.request({\n path: `/api/grade-stats/${courseName}/${year}/${problemId}`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Grade\n * @name GradeStatsCourseCreate\n * @request POST:/api/grade-stats-course/{courseName}/{year}\n */\n gradeStatsCourseCreate: (courseName: string, year: string, data: IGradeStatFilterDto, params: RequestParams = {}) =>\n this.request({\n path: `/api/grade-stats-course/${courseName}/${year}`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Groups\n * @name StudentGroupNewCreate\n * @request POST:/api/student/group-new\n */\n studentGroupNewCreate: (data: ICcGroup, params: RequestParams = {}) =>\n this.request({\n path: `/api/student/group-new`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Groups\n * @name StudentGroupStatusCreate\n * @request POST:/api/student/group-status\n */\n studentGroupStatusCreate: (data: ICcUserGroupUpdate, params: RequestParams = {}) =>\n this.request({\n path: `/api/student/group-status`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Groups\n * @name StudentGroupEditCreate\n * @request POST:/api/student/group-edit\n */\n studentGroupEditCreate: (data: ICcGroup, params: RequestParams = {}) =>\n this.request({\n path: `/api/student/group-edit`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Groups\n * @name StudentGroupList\n * @request GET:/api/student/group\n */\n studentGroupList: (params: RequestParams = {}) =>\n this.request({\n path: `/api/student/group`,\n method: \"GET\",\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Groups\n * @name StudentGroupDeleteDetail\n * @request GET:/api/student/group-delete/{objectId}\n */\n studentGroupDeleteDetail: (objectId: string, params: RequestParams = {}) =>\n this.request({\n path: `/api/student/group-delete/${objectId}`,\n method: \"GET\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Notifications\n * @name NotificationsGetList\n * @request GET:/api/notifications-get\n */\n notificationsGetList: (query?: { objectId?: string; path?: string }, params: RequestParams = {}) =>\n this.request({\n path: `/api/notifications-get`,\n method: \"GET\",\n query: query,\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Plagiarism\n * @name PlagTwoDetail\n * @request GET:/api/plag-two/{aId}/{bId}\n */\n plagTwoDetail: (aId: string, bId: string, params: RequestParams = {}) =>\n this.request({\n path: `/api/plag-two/${aId}/${bId}`,\n method: \"GET\",\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Plagiarism\n * @name PlagAllDetail\n * @request GET:/api/plag-all/{courseName}/{courseYear}/{problem}\n */\n plagAllDetail: (courseName: string, courseYear: string, problem: string, params: RequestParams = {}) =>\n this.request({\n path: `/api/plag-all/${courseName}/${courseYear}/${problem}`,\n method: \"GET\",\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Results\n * @name ResultGetDetail\n * @request GET:/api/result-get/{objectId}\n */\n resultGetDetail: (objectId: string, params: RequestParams = {}) =>\n this.request({\n path: `/api/result-get/${objectId}`,\n method: \"GET\",\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Results\n * @name FileGetDetail\n * @request GET:/api/file-get/{objectId}/{path}\n */\n fileGetDetail: (objectId: string, path: string, params: RequestParams = {}) =>\n this.request({\n path: `/api/file-get/${objectId}/${path}`,\n method: \"GET\",\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Results\n * @name ReviewrequestDetail\n * @request GET:/api/reviewrequest/{objectId}\n */\n reviewrequestDetail: (objectId: string, params: RequestParams = {}) =>\n this.request({\n path: `/api/reviewrequest/${objectId}`,\n method: \"GET\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Results\n * @name ReviewrequestDelete\n * @request DELETE:/api/reviewrequest/{objectId}\n */\n reviewrequestDelete: (objectId: string, params: RequestParams = {}) =>\n this.request({\n path: `/api/reviewrequest/${objectId}`,\n method: \"DELETE\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Results\n * @name UserProblemResultsDetail\n * @request GET:/api/user-problem-results/{courseName}/{courseYear}/{problem}/{user}\n */\n userProblemResultsDetail: (\n courseName: string,\n courseYear: string,\n problem: string,\n user: string,\n params: RequestParams = {},\n ) =>\n this.request({\n path: `/api/user-problem-results/${courseName}/${courseYear}/${problem}/${user}`,\n method: \"GET\",\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Results\n * @name UserProblemResultsLightDetail\n * @request GET:/api/user-problem-results-light/{courseName}/{courseYear}/{problem}/{user}\n */\n userProblemResultsLightDetail: (\n courseName: string,\n courseYear: string,\n problem: string,\n user: string,\n params: RequestParams = {},\n ) =>\n this.request({\n path: `/api/user-problem-results-light/${courseName}/${courseYear}/${problem}/${user}`,\n method: \"GET\",\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Scoreboard\n * @name StudentScoreboardList\n * @request GET:/api/student-scoreboard\n */\n studentScoreboardList: (params: RequestParams = {}) =>\n this.request({\n path: `/api/student-scoreboard`,\n method: \"GET\",\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Stats\n * @name StatsAllStatsList\n * @request GET:/api/stats/all-stats\n */\n statsAllStatsList: (params: RequestParams = {}) =>\n this.request({\n path: `/api/stats/all-stats`,\n method: \"GET\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Teacher\n * @name RerunSolutionDetail\n * @request GET:/api/rerun-solution/{objectId}\n */\n rerunSolutionDetail: (objectId: string, params: RequestParams = {}) =>\n this.request({\n path: `/api/rerun-solution/${objectId}`,\n method: \"GET\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags ViewResult\n * @name ViewResultsCreate\n * @request POST:/api/view-results\n */\n viewResultsCreate: (data: ITableRequest, params: RequestParams = {}) =>\n this.request({\n path: `/api/view-results`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n }),\n };\n staticFiles = {\n /**\n * No description\n *\n * @tags DirectoryBrowser\n * @name ServeDetail\n * @request GET:/static-files/serve/{path}\n */\n serveDetail: (path: string, params: RequestParams = {}) =>\n this.request({\n path: `/static-files/serve/${path}`,\n method: \"GET\",\n ...params,\n }),\n };\n home = {\n /**\n * No description\n *\n * @tags Home\n * @name WhoamiList\n * @request GET:/home/whoami\n */\n whoamiList: (params: RequestParams = {}) =>\n this.request({\n path: `/home/whoami`,\n method: \"GET\",\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Home\n * @name IndexList\n * @request GET:/home/index\n */\n indexList: (params: RequestParams = {}) =>\n this.request({\n path: `/home/index`,\n method: \"GET\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Home\n * @name LoginList\n * @request GET:/home/login\n */\n loginList: (params: RequestParams = {}) =>\n this.request({\n path: `/home/login`,\n method: \"GET\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Home\n * @name LogoutList\n * @request GET:/home/logout\n */\n logoutList: (params: RequestParams = {}) =>\n this.request({\n path: `/home/logout`,\n method: \"GET\",\n format: \"json\",\n ...params,\n }),\n\n /**\n * No description\n *\n * @tags Home\n * @name LoginDetail\n * @request GET:/home/login/{path}\n */\n loginDetail: (path: string, params: RequestParams = {}) =>\n this.request({\n path: `/home/login/${path}`,\n method: \"GET\",\n ...params,\n }),\n };\n webhook = {\n /**\n * No description\n *\n * @tags Webhook\n * @name UpdateCreate\n * @request POST:/webhook/update\n */\n updateCreate: (params: RequestParams = {}) =>\n this.request({\n path: `/webhook/update`,\n method: \"POST\",\n ...params,\n }),\n };\n}\n","import { Alert, AlertTitle } from '@material-ui/lab';\nimport React, { useEffect, useState } from 'react';\nimport { useUser } from '../hooks/useUser';\n\ninterface BrokenServerMessageProps {\n \n}\n\nexport const BrokenServerMessage = (props: BrokenServerMessageProps) => {\n const { user } = useUser();\n if (user.serverStatus === \"broken\") {\n return \n Server not running properly!\n {user.serverMessage}\n \n }\n return (
\n \n
)\n}","import { Api } from './cc-api';\n\nexport const CodeCritic = new Api();","import { BarLoader, PacmanLoader } from \"react-spinners\";\r\nimport React from \"react\";\r\nimport \"../styles/spinners.css\"\r\n\r\ninterface SimpleLoaderProps {\r\n title?: string;\r\n size?: number;\r\n}\r\n\r\nexport const SimpleLoader = (props: SimpleLoaderProps) => {\r\n const { title } = props;\r\n return
\r\n {title && {title}}\r\n
\r\n}\r\n\r\nexport const SimplePacmanLoader = (props: SimpleLoaderProps) => {\r\n const { size=15 } = props;\r\n return \r\n}","import { useState } from \"react\";\n\n\nexport function useOpenClose(defaultValue: boolean = false) {\n const [value, setValue] = useState(defaultValue);\n return [\n value,\n () => setValue(true),\n () => setValue(false),\n ] as [boolean, () => void, () => void];\n\n // const [ open, setOpen, setClose] = useOpenClose();\n}\n","import { useState } from \"react\"\n\nexport const useRefresh = () => {\n const [counter, setCounter] = useState(0);\n const refresh = () => {\n setCounter(counter +1);\n }\n\n // const { counter, refresh } = useRefresh();\n return { counter, refresh };\n}","\r\n\texport enum ProcessStatusCodes {\r\n\t\tInQueue = 1,\r\n\t\tRunning = 2,\r\n\t\tSkipped = 9,\r\n\t\tOk = 10,\r\n\t\tGlobalTimeout = 12,\r\n\t\tAnswerCorrect = 100,\r\n\t\tAnswerCorrectTimeout = 101,\r\n\t\tAnswerWrong = 200,\r\n\t\tAnswerWrongTimeout = 201,\r\n\t\tCompilationFailed = 400,\r\n\t\tErrorWhileRunning = 500,\r\n\t\tNoSolution = 666\r\n\t}\r\n\tinterface IProcessStatus {\r\n\t\tcode: ProcessStatusCodes;\r\n\t\tdescription: string;\r\n\t\tletter: string;\r\n\t\tname: string;\r\n\t\tvalue: number;\r\n\t}\r\n\texport enum ProblemStatus {\r\n\t\tBeforeStart = 0,\r\n\t\tActive = 1,\r\n\t\tActiveLate = 2,\r\n\t\tAfterDeadline = 3\r\n\t}\r\n\texport enum ProblemType {\r\n\t\tLineByLine = 1,\r\n\t\tUnittest = 2,\r\n\t\tProgram = 3\r\n\t}\r\n\texport enum SubmissionStatus {\r\n\t\tUnknown = 0,\r\n\t\tIntime = 1,\r\n\t\tLate = 2,\r\n\t\tNone = 3\r\n\t}\r\n\texport enum CcEventType {\r\n\t\tUnknown = 0,\r\n\t\tNewComment = 1,\r\n\t\tNewGrade = 2,\r\n\t\tNewCodeReview = 3\r\n\t}\r\n\texport enum CcUserGroupStatus {\r\n\t\tNotConfirmed = 0,\r\n\t\tConfirmed = 1,\r\n\t\tRejected = 2\r\n\t}\r\n\texport enum DiffResultLineType {\r\n\t\tCorrect = 1,\r\n\t\tWrong = 2\r\n\t}\r\n\texport enum ChangeType {\r\n\t\tUnchanged = 0,\r\n\t\tDeleted = 1,\r\n\t\tInserted = 2,\r\n\t\tImaginary = 3,\r\n\t\tModified = 4\r\n\t}\r\n\texport class ProcessStatusStatic {\n\t\tpublic static InQueue: IProcessStatus = {\r\n code: ProcessStatusCodes.InQueue,\r\n value: 1,\r\n name: \"in-queue\",\r\n description: \"In Queue\",\r\n letter: \"IQ\",\r\n };\n\n\t\tpublic static Running: IProcessStatus = {\r\n code: ProcessStatusCodes.Running,\r\n value: 2,\r\n name: \"running\",\r\n description: \"Running\",\r\n letter: \"IP\",\r\n };\n\n\t\tpublic static Ok: IProcessStatus = {\r\n code: ProcessStatusCodes.Ok,\r\n value: 10,\r\n name: \"ok\",\r\n description: \"Program ended gracefully\",\r\n letter: \"OK\",\r\n };\n\n\t\tpublic static Skipped: IProcessStatus = {\r\n code: ProcessStatusCodes.Skipped,\r\n value: 9,\r\n name: \"skipped\",\r\n description: \"Test was skipped\",\r\n letter: \"SK\",\r\n };\n\n\t\tpublic static GlobalTimeout: IProcessStatus = {\r\n code: ProcessStatusCodes.GlobalTimeout,\r\n value: 12,\r\n name: \"global-timeout\",\r\n description: \"Program had to be terminated since it did not end within designated time period\",\r\n letter: \"TO\",\r\n };\n\n\t\tpublic static AnswerCorrect: IProcessStatus = {\r\n code: ProcessStatusCodes.AnswerCorrect,\r\n value: 100,\r\n name: \"answer-correct\",\r\n description: \"Submitted solution is correct\",\r\n letter: \"AC\",\r\n };\n\n\t\tpublic static AnswerCorrectTimeout: IProcessStatus = {\r\n code: ProcessStatusCodes.AnswerCorrectTimeout,\r\n value: 101,\r\n name: \"answer-correct-timeout\",\r\n description: \"Solution is correct, but does not meet duration criteria\",\r\n letter: \"AT\",\r\n };\n\n\t\tpublic static AnswerWrong: IProcessStatus = {\r\n code: ProcessStatusCodes.AnswerWrong,\r\n value: 200,\r\n name: \"answer-wrong\",\r\n description: \"Submitted solution is wrong\",\r\n letter: \"AW\",\r\n };\n\n\t\tpublic static AnswerWrongTimeout: IProcessStatus = {\r\n code: ProcessStatusCodes.AnswerWrongTimeout,\r\n value: 201,\r\n name: \"answer-wrong-timeout\",\r\n description: \"Solution is wrong and does not meet duration criteria\",\r\n letter: \"WT\",\r\n };\n\n\t\tpublic static CompilationFailed: IProcessStatus = {\r\n code: ProcessStatusCodes.CompilationFailed,\r\n value: 400,\r\n name: \"compilation-failed\",\r\n description: \"Failed to compile\",\r\n letter: \"CF\",\r\n };\n\n\t\tpublic static ErrorWhileRunning: IProcessStatus = {\r\n code: ProcessStatusCodes.ErrorWhileRunning,\r\n value: 500,\r\n name: \"error-while-running\",\r\n description: \"Program ended with an error\",\r\n letter: \"ER\",\r\n };\n\n\t\tpublic static UknownStatus: IProcessStatus = {\r\n code: ProcessStatusCodes.ErrorWhileRunning,\r\n value: 500,\r\n name: \"uknown-status\",\r\n description: \"Status is unknown\",\r\n letter: \"??\",\r\n };\n\n\t\tpublic static NoSolution: IProcessStatus = {\r\n code: ProcessStatusCodes.NoSolution,\r\n value: 666,\r\n name: \"no-solution\",\r\n description: \"No solution recieved\",\r\n letter: \"XX\",\r\n };\n\n\t\tpublic static All: IProcessStatus[] = [{\r\n code: ProcessStatusCodes.InQueue,\r\n value: 1,\r\n name: \"in-queue\",\r\n description: \"In Queue\",\r\n letter: \"IQ\",\r\n }, \n{\r\n code: ProcessStatusCodes.Running,\r\n value: 2,\r\n name: \"running\",\r\n description: \"Running\",\r\n letter: \"IP\",\r\n }, \n{\r\n code: ProcessStatusCodes.Ok,\r\n value: 10,\r\n name: \"ok\",\r\n description: \"Program ended gracefully\",\r\n letter: \"OK\",\r\n }, \n{\r\n code: ProcessStatusCodes.Skipped,\r\n value: 9,\r\n name: \"skipped\",\r\n description: \"Test was skipped\",\r\n letter: \"SK\",\r\n }, \n{\r\n code: ProcessStatusCodes.GlobalTimeout,\r\n value: 12,\r\n name: \"global-timeout\",\r\n description: \"Program had to be terminated since it did not end within designated time period\",\r\n letter: \"TO\",\r\n }, \n{\r\n code: ProcessStatusCodes.AnswerCorrect,\r\n value: 100,\r\n name: \"answer-correct\",\r\n description: \"Submitted solution is correct\",\r\n letter: \"AC\",\r\n }, \n{\r\n code: ProcessStatusCodes.AnswerCorrectTimeout,\r\n value: 101,\r\n name: \"answer-correct-timeout\",\r\n description: \"Solution is correct, but does not meet duration criteria\",\r\n letter: \"AT\",\r\n }, \n{\r\n code: ProcessStatusCodes.AnswerWrong,\r\n value: 200,\r\n name: \"answer-wrong\",\r\n description: \"Submitted solution is wrong\",\r\n letter: \"AW\",\r\n }, \n{\r\n code: ProcessStatusCodes.AnswerWrongTimeout,\r\n value: 201,\r\n name: \"answer-wrong-timeout\",\r\n description: \"Solution is wrong and does not meet duration criteria\",\r\n letter: \"WT\",\r\n }, \n{\r\n code: ProcessStatusCodes.CompilationFailed,\r\n value: 400,\r\n name: \"compilation-failed\",\r\n description: \"Failed to compile\",\r\n letter: \"CF\",\r\n }, \n{\r\n code: ProcessStatusCodes.ErrorWhileRunning,\r\n value: 500,\r\n name: \"error-while-running\",\r\n description: \"Program ended with an error\",\r\n letter: \"ER\",\r\n }, \n{\r\n code: ProcessStatusCodes.NoSolution,\r\n value: 666,\r\n name: \"no-solution\",\r\n description: \"No solution recieved\",\r\n letter: \"XX\",\r\n }]\n\t} // end of ProcessStatusStatic","/**\r\n * @description\r\n * Takes an Array, and a grouping function,\r\n * and returns a Map of the array grouped by the grouping function.\r\n *\r\n * @param list An array of type V.\r\n * @param keyGetter A Function that takes the the Array type V as an input, and returns a value of type K.\r\n * K is generally intended to be a property key of V.\r\n *\r\n * @returns Map of the array grouped by the grouping function.\r\n */\r\nexport function groupBy(list: Array, keyGetter: (input: V) => K): Map> {\r\n const map = new Map>();\r\n list.forEach((item) => {\r\n const key = keyGetter(item);\r\n const collection = map.get(key);\r\n if (!collection) {\r\n map.set(key, [item]);\r\n } else {\r\n collection.push(item);\r\n }\r\n });\r\n return map;\r\n}\r\n\r\ninterface IObjectId {\r\n objectId?: string | null;\r\n}\r\n\r\nexport function nextIndex(items: T[], selected: string): [boolean, number, T] {\r\n if (items != null && items.length > 1 && selected != null ) {\r\n const index = items.findIndex(i => i.objectId == selected);\r\n if (index !== -1) {\r\n const next = index + 1;\r\n if (next < items.length) {\r\n return [true, next, items[next]];\r\n }\r\n }\r\n }\r\n\r\n return [false, null, null];\r\n}\r\n\r\nexport function prevIndex(items: T[], selected: string): [boolean, number, T] {\r\n if (items != null && items.length > 1 && selected != null ) {\r\n const index = items.findIndex(i => i.objectId == selected);\r\n if (index !== -1) {\r\n const prev = index - 1;\r\n if (prev >= 0) {\r\n return [true, prev, items[prev]];\r\n }\r\n }\r\n }\r\n\r\n return [false, null, null];\r\n}\r\n\r\n\r\nexport function randomChoice(arr: T[]): T {\r\n return arr[Math.floor(arr.length * Math.random())];\r\n}\r\n\r\nexport function distinctBy(list: Array, keyGetter: (input: V) => K): Array {\r\n return [...groupBy(list, keyGetter).values()].map(v => v[0]);\r\n}","import { randomChoice } from './arrayUtils';\n\ninterface GenerateOptions {\n words?: number;\n join?: string;\n}\nexport const generateRandomName = (options?: GenerateOptions) => {\n const { words=1, join=\"-\" } = options ?? { };\n\n const raw = new Array(words)\n .fill(null)\n .flatMap(i => [\n randomChoice(adjectives),\n randomChoice(nouns),\n ])\n console.log(raw);\n return raw.join(join);\n}\n\nconst adjectives = [\n 'aback','abaft','abandoned','abashed','aberrant','abhorrent','abiding','abject','ablaze','able','abnormal','aboard','aboriginal','abortive','abounding','abrasive','abrupt','absent','absorbed','absorbing','abstracted','absurd','abundant','abusive','acceptable','accessible','accidental','accurate','acid','acidic','acoustic','acrid','action','active','actual','actually','adamant','adaptable','addicted','addicting','adept','adhesive','adjoining','adorable','adored','adroit','adventurous','affectionate','afraid','aggressive','agile','agonizing','agreeable','ahead','airy','ajar','alcoholic','alert','alike','alive','alleged','alluring','aloof','alter','amazing','ambiguous','ambitious','amiable','ample','amuck','amused','amusing','ancient','angry','animated','annoyed','annoying','anxious','apathetic','apt','aquatic','ardent','aromatic','arrogant','ashamed','aspiring','assorted','astonishing','astute','attractive','august','auspicious','automatic','available','average','avid','awake','aware','awesome','awful','axiomatic','bad','balmy','barbarous','bashful','bawdy','beautiful','beefy','befitting','belligerent','beneficial','benevolent','bent','berserk','best','better','bewildered','big','billowing','billowy','bitter','bizarre','black','blessed','bloody','blue','blushing','boiling','bold','boorish','bored','boring','boss','bouncy','boundless','brainy','brash','brave','brawny','breakable','breezy','brief','bright','brisk','broad','broken','brown','bumpy','burly','bustling','busy','cagey','calculating','callous','calm','can','canny','capable','capricious','cared','careful','careless','caring','casual','cautious','ceaseless','celestial','certain','changeable','charming','cheap','cheerful','chemical','chic','chief','childlike','chilly','chivalrous','choice','chosen','chubby','chummy','chunky','civic','civil','clammy','classy','clean','clear','clever','cloistered','close','closed','cloudy','clumsy','cluttered','cogent','coherent','cold','colorful','colossal','combative','comfortable','common','complete','complex','composed','concerned','condemned','confused','conscious','cooing','cool','cooperative','coordinated','cosmic','courageous','cowardly','cozy','crabby','craven','crazy','creepy','crooked','crowded','cruel','cuddly','cultured','cumbersome','curious','curly','curved','curvy','cut','cute','cynical','daffy','daily','dainty','damaged','damaging','damp','dandy','dangerous','dapper','daring','dark','dashing','dazzling','dead','deadpan','deafening','dear','debonair','decent','decisive','decorous','deep','deeply','defeated','defective','defiant','deft','delicate','delicious','delightful','delirious','deluxe','demonic','dependent','depressed','deranged','descriptive','deserted','detailed','determined','devilish','devout','didactic','different','difficult','diligent','direct','direful','dirty','disagreeable','disastrous','discreet','disgusted','disgusting','disillusioned','dispensable','distinct','disturbed','divergent','divine','dizzy','domineering','doted','doting','doubtful','drab','draconian','dramatic','dreamy','dreary','driven','drunk','dry','dull','dusty','dynamic','dysfunctional','eager','early','earsplitting','earthy','easy','eatable','economic','educated','efficacious','efficient','eight','elastic','elated','elderly','electric','elegant','elfin','elite','embarrassed','eminent','empty','enchanted','enchanting','encouraging','end','endurable','energetic','energized','enigmatic','enormous','entertaining','enthusiastic','envious','equable','equal','erect','erratic','ethereal','evanescent','evasive','even','evil','exact','excellent','excited','exciting','exclusive','exotic','expensive','expert','exuberant','exultant','fabulous','faded','faint','fair','faithful','fallacious','false','famed','familiar','famous','fanatical','fancy','fantastic','far','fascinated','fast','fat','faulty','fearful','fearless','feeble','feigned','female','fertile','festive','few','fierce','fiery','filthy','fine','finicky','first','fit','five','fixed','flagrant','flaky','flashy','flat','flawless','fleet','flimsy','flippant','flowery','flowing','fluent','fluffy','fluttering','flying','foamy','fond','foolish','for','foregoing','forgetful','forlorn','fortunate','four','fragile','frail','frank','frantic','free','freezing','frequent','fresh','fretful','friendly','frightened','frightening','full','fumbling','fun','functional','funny','furry','furtive','fuscia','future','futuristic','fuzzy','gabby','gainful','gamy','gaping','garrulous','gas','gaudy','general','genial','gentle','giant','giddy','gifted','gigantic','giving','glad','glamorous','gleaming','glib','glistening','glorious','glossy','gnarly','godly','gold','golden','good','goodly','goofy','gorgeous','graceful','grand','grandiose','grateful','gratis','gray','greasy','great','greedy','green','grey','grieving','groovy','grotesque','grouchy','grubby','gruesome','grumpy','guarded','guided','guiltless','gullible','gusty','gutsy','guttural','habitual','half','hallowed','haloed','halting','handsome','handsomely','handy','hanging','hapless','happy','hard','hardy','harmonious','harsh','hateful','heady','healthy','heartbreaking','hearty','heavenly','heavy','hellish','helpful','helpless','heroic','hesitant','hideous','high','highfalutin','hilarious','hip','hissing','historical','holistic','hollow','holy','homeless','homely','honest','honorable','horrible','hospitable','hot','huge','hulking','human','humane','humble','humdrum','humorous','hungry','hunky','hurried','hurt','hushed','husky','hypnotic','hysterical','icky','icy','ideal','idiotic','ignorant','ill','illegal','illustrious','imaginary','immense','imminent','immune','impartial','imperfect','impolite','important','imported','impossible','incandescent','incompetent','inconclusive','incredible','indigo','industrious','inexpensive','infamous','innate','innocent','inquisitive','insidious','instinctive','intelligent','interesting','internal','invincible','irate','irritating','itchy','jaded','jagged','jazzed','jazzy','jealous','jittery','jobless','jolly','jovial','joyful','joyous','jubilant','judicious','juicy','jumbled','jumpy','just','juvenile','kaput','keen','khaki','kind','kindhearted','kindly','kingly','knotty','knowing','knowledgeable','known','labored','lackadaisical','lacking','lame','lamentable','languid','large','last','late','laughable','lavish','lawful','lazy','lean','learned','left','legal','legit','lethal','level','lewd','light','like','likeable','liked','likely','limber','limitless','limping','literate','little','lively','living','lonely','long','longing','loose','lopsided','loud','lousy','loutish','loved','lovely','loving','low','lowly','loyal','lucid','lucky','ludicrous','lumpy','lush','luxuriant','lying','lyrical','macabre','macho','maddening','madly','magenta','magical','magnificent','main','majestic','major','makeshift','male','malicious','mammoth','maniacal','many','marked','married','marvelous','massive','master','material','materialistic','mature','max','maxed','mean','measly','meaty','medical','meek','mellow','melodic','melted','merciful','mere','merry','messy','mighty','military','milky','mindless','miniature','minor','mint','mirthful','miscreant','misty','mixed','moaning','modern','modest','moldy','momentous','money','moonlit','moral','motionless','mountainous','moving','mucho','muddled','mundane','murky','mushy','mute','mutual','mysterious','naive','nappy','narrow','nasty','native','natural','naughty','nauseating','near','neat','nebulous','necessary','needed','needless','needy','neighborly','nervous','new','next','nice','nifty','nimble','nine','nippy','noble','noiseless','noisy','nonchalant','nondescript','nonstop','normal','nostalgic','nosy','noted','novel','noxious','null','numberless','numero','numerous','nutritious','nutty','oafish','obedient','obeisant','obese','obnoxious','obscene','obsequious','observant','obsolete','obtainable','oceanic','odd','offbeat','okay','old','omniscient','one','onerous','open','opposite','optimal','orange','ordinary','organic','ossified','outgoing','outrageous','outstanding','oval','overconfident','overjoyed','overrated','overt','overwrought','pacific','painful','painstaking','pale','paltry','panicky','panoramic','parallel','parched','parsimonious','past','pastoral','pathetic','peaceful','peachy','penitent','peppy','perfect','periodic','permissible','perpetual','petite','phobic','physical','picayune','pink','piquant','pithy','placid','plain','plant','plastic','plausible','pleasant','plucky','plum','poetic','pointless','poised','polite','political','poor','posh','possessive','possible','potent','powerful','precious','premium','present','pretty','previous','pricey','prickly','prime','primo','private','prized','pro','probable','productive','profuse','prompt','proper','protective','proud','psychedelic','psychotic','public','puffy','pumped','punchy','puny','pure','purple','purring','pushy','puzzled','puzzling','quack','quaint','quarrelsome','questionable','quick','quickest','quiet','quirky','quixotic','quizzical','rabid','racial','rad','radioactive','ragged','rainy','rambunctious','rampant','rapid','rare','raspy','ratty','reach','ready','real','rebel','receptive','recondite','red','redundant','reflective','regal','regular','relieved','remarkable','reminiscent','repulsive','resilient','resolute','resonant','responsible','rhetorical','rich','right','righteous','rightful','rigid','ripe','ritzy','roasted','robust','romantic','roomy','rooted','rosy','rotten','rough','round','royal','ruddy','rude','rugged','rural','rustic','ruthless','sable','sad','safe','salty','same','sassy','satisfying','saucy','savory','savvy','scandalous','scarce','scared','scary','scattered','scenic','scientific','scintillating','scrawny','screeching','second','secret','secretive','sedate','seemly','selective','selfish','sensitive','separate','serene','serious','shaggy','shaky','shallow','sharp','shiny','shivering','shocking','short','showy','shrewd','shrill','shut','shy','sick','silent','silky','silly','simple','simplistic','sincere','six','skillful','skinny','sleek','sleepy','slick','slim','slimy','slippery','sloppy','slow','small','smart','smelly','smiley','smiling','smoggy','smooth','snappy','snazzy','sneaky','snobbish','snotty','snowy','snugly','social','soft','soggy','sole','solid','solitary','somber','sophisticated','sordid','sore','sound','sour','spacial','sparkling','special','spectacular','spicy','spiffy','spiky','spiritual','spiteful','splendid','spooky','spotless','spotted','spotty','spry','spurious','squalid','square','squealing','squeamish','stable','staking','stale','standing','star','stark','statuesque','steadfast','steady','steep','stereotyped','sticky','stiff','stimulating','stingy','stoic','stormy','straight','strange','striped','strong','stunning','stupendous','stupid','sturdy','suave','subdued','subsequent','substantial','subtle','successful','succinct','sudden','sulky','sunny','sunset','super','superb','superficial','supreme','sure','swank','swanky','sweet','swell','sweltering','swift','symptomatic','synonymous','taboo','tacit','tacky','talented','tall','tame','tan','tangible','tangy','tart','tasteful','tasteless','tasty','tawdry','teal','tearful','tedious','teeny','telling','temporary','ten','tender','tense','tenuous','terrible','terrific','tested','testy','thankful','the','therapeutic','thick','thin','thinkable','third','thirsty','thoughtful','thoughtless','threatening','three','thriving','thundering','tidy','tight','tightfisted','timely','tiny','tired','tiresome','toothsome','top','tops','torpid','tough','touted','towering','tranquil','trashy','tremendous','tricky','trim','trite','tropical','troubled','truculent','true','trusty','truthful','try','two','typical','ubiquitous','ugliest','ugly','ultra','unable','unaccountable','unadvised','unarmed','unbecoming','unbiased','uncovered','understood','undesirable','undisturbed','unequal','unequaled','uneven','unhealthy','uninterested','unique','united','unkempt','unknown','unnatural','unruly','unsightly','unsuitable','untidy','unused','unusual','unwavering','unwieldy','unwritten','upbeat','uplifting','uppity','upset','uptight','urbane','usable','used','useful','useless','utmost','utopian','utter','uttermost','vacuous','vagabond','vague','valid','valuable','various','vast','vengeful','venomous','verdant','versed','vestal','viable','victorious','vigorous','violent','violet','vital','vivacious','vivid','vocal','vogue','voiceless','volatile','voracious','vulgar','wacky','waggish','waiting','wakeful','wandering','wanted','wanting','warlike','warm','wary','wasteful','watery','weak','wealthy','weary','wet','whimsical','whispering','white','whole','wholesale','wicked','wide','wiggly','wild','willing','windy','winged','wired','wiry','wise','wistful','witty','woebegone','womanly','wonderful','wooden','woozy','workable','worried','worthless','worthy','wrathful','wretched','wrong','wry','xenophobic','yellow','yielding','young','youthful','yummy','zany','zealous','zesty','zippy','zonked',\n]\nconst nouns = [\n \"account\",\"achiever\",\"acoustics\",\"act\",\"action\",\"activity\",\"actor\",\"addition\",\"adjustment\",\"advertisement\",\"advice\",\"aftermath\",\"afternoon\",\"afterthought\",\"agreement\",\"air\",\"airplane\",\"airport\",\"alarm\",\"amount\",\"amusement\",\"anger\",\"angle\",\"animal\",\"ants\",\"apparatus\",\"apparel\",\"appliance\",\"approval\",\"arch\",\"argument\",\"arithmetic\",\"arm\",\"army\",\"art\",\"attack\",\"attraction\",\"aunt\",\"authority\",\"babies\",\"baby\",\"back\",\"badge\",\"bag\",\"bait\",\"balance\",\"ball\",\"base\",\"baseball\",\"basin\",\"basket\",\"basketball\",\"bat\",\"bath\",\"battle\",\"bead\",\"bear\",\"bed\",\"bedroom\",\"beds\",\"bee\",\"beef\",\"beginner\",\"behavior\",\"belief\",\"believe\",\"bell\",\"bells\",\"berry\",\"bike\",\"bikes\",\"bird\",\"birds\",\"birth\",\"birthday\",\"bit\",\"bite\",\"blade\",\"blood\",\"blow\",\"board\",\"boat\",\"bomb\",\"bone\",\"book\",\"books\",\"boot\",\"border\",\"bottle\",\"boundary\",\"box\",\"boy\",\"brake\",\"branch\",\"brass\",\"breath\",\"brick\",\"bridge\",\"brother\",\"bubble\",\"bucket\",\"building\",\"bulb\",\"burst\",\"bushes\",\"business\",\"butter\",\"button\",\"cabbage\",\"cable\",\"cactus\",\"cake\",\"cakes\",\"calculator\",\"calendar\",\"camera\",\"camp\",\"can\",\"cannon\",\"canvas\",\"cap\",\"caption\",\"car\",\"card\",\"care\",\"carpenter\",\"carriage\",\"cars\",\"cart\",\"cast\",\"cat\",\"cats\",\"cattle\",\"cause\",\"cave\",\"celery\",\"cellar\",\"cemetery\",\"cent\",\"chalk\",\"chance\",\"change\",\"channel\",\"cheese\",\"cherries\",\"cherry\",\"chess\",\"chicken\",\"chickens\",\"children\",\"chin\",\"church\",\"circle\",\"clam\",\"class\",\"cloth\",\"clover\",\"club\",\"coach\",\"coal\",\"coast\",\"coat\",\"cobweb\",\"coil\",\"collar\",\"color\",\"committee\",\"company\",\"comparison\",\"competition\",\"condition\",\"connection\",\"control\",\"cook\",\"copper\",\"corn\",\"cough\",\"country\",\"cover\",\"cow\",\"cows\",\"crack\",\"cracker\",\"crate\",\"crayon\",\"cream\",\"creator\",\"creature\",\"credit\",\"crib\",\"crime\",\"crook\",\"crow\",\"crowd\",\"crown\",\"cub\",\"cup\",\"current\",\"curtain\",\"curve\",\"cushion\",\"dad\",\"daughter\",\"day\",\"death\",\"debt\",\"decision\",\"deer\",\"degree\",\"design\",\"desire\",\"desk\",\"destruction\",\"detail\",\"development\",\"digestion\",\"dime\",\"dinner\",\"dinosaurs\",\"direction\",\"dirt\",\"discovery\",\"discussion\",\"distance\",\"distribution\",\"division\",\"dock\",\"doctor\",\"dog\",\"dogs\",\"doll\",\"dolls\",\"donkey\",\"door\",\"downtown\",\"drain\",\"drawer\",\"dress\",\"drink\",\"driving\",\"drop\",\"duck\",\"ducks\",\"dust\",\"ear\",\"earth\",\"earthquake\",\"edge\",\"education\",\"effect\",\"egg\",\"eggnog\",\"eggs\",\"elbow\",\"end\",\"engine\",\"error\",\"event\",\"example\",\"exchange\",\"existence\",\"expansion\",\"experience\",\"expert\",\"eye\",\"eyes\",\"face\",\"fact\",\"fairies\",\"fall\",\"fang\",\"farm\",\"fear\",\"feeling\",\"field\",\"finger\",\"fire\",\"fireman\",\"fish\",\"flag\",\"flame\",\"flavor\",\"flesh\",\"flight\",\"flock\",\"floor\",\"flower\",\"flowers\",\"fly\",\"fog\",\"fold\",\"food\",\"foot\",\"force\",\"fork\",\"form\",\"fowl\",\"frame\",\"friction\",\"friend\",\"friends\",\"frog\",\"frogs\",\"front\",\"fruit\",\"fuel\",\"furniture\",\"gate\",\"geese\",\"ghost\",\"giants\",\"giraffe\",\"girl\",\"girls\",\"glass\",\"glove\",\"gold\",\"government\",\"governor\",\"grade\",\"grain\",\"grandfather\",\"grandmother\",\"grape\",\"grass\",\"grip\",\"ground\",\"group\",\"growth\",\"guide\",\"guitar\",\"gun\",\"hair\",\"haircut\",\"hall\",\"hammer\",\"hand\",\"hands\",\"harbor\",\"harmony\",\"hat\",\"hate\",\"head\",\"health\",\"heat\",\"hill\",\"history\",\"hobbies\",\"hole\",\"holiday\",\"home\",\"honey\",\"hook\",\"hope\",\"horn\",\"horse\",\"horses\",\"hose\",\"hospital\",\"hot\",\"hour\",\"house\",\"houses\",\"humor\",\"hydrant\",\"ice\",\"icicle\",\"idea\",\"impulse\",\"income\",\"increase\",\"industry\",\"ink\",\"insect\",\"instrument\",\"insurance\",\"interest\",\"invention\",\"iron\",\"island\",\"jail\",\"jam\",\"jar\",\"jeans\",\"jelly\",\"jellyfish\",\"jewel\",\"join\",\"judge\",\"juice\",\"jump\",\"kettle\",\"key\",\"kick\",\"kiss\",\"kittens\",\"kitty\",\"knee\",\"knife\",\"knot\",\"knowledge\",\"laborer\",\"lace\",\"ladybug\",\"lake\",\"lamp\",\"land\",\"language\",\"laugh\",\"leather\",\"leg\",\"legs\",\"letter\",\"letters\",\"lettuce\",\"level\",\"library\",\"limit\",\"line\",\"linen\",\"lip\",\"liquid\",\"loaf\",\"lock\",\"locket\",\"look\",\"loss\",\"love\",\"low\",\"lumber\",\"lunch\",\"lunchroom\",\"machine\",\"magic\",\"maid\",\"mailbox\",\"man\",\"marble\",\"mark\",\"market\",\"mask\",\"mass\",\"match\",\"meal\",\"measure\",\"meat\",\"meeting\",\"memory\",\"men\",\"metal\",\"mice\",\"middle\",\"milk\",\"mind\",\"mine\",\"minister\",\"mint\",\"minute\",\"mist\",\"mitten\",\"mom\",\"money\",\"monkey\",\"month\",\"moon\",\"morning\",\"mother\",\"motion\",\"mountain\",\"mouth\",\"move\",\"muscle\",\"name\",\"nation\",\"neck\",\"need\",\"needle\",\"nerve\",\"nest\",\"night\",\"noise\",\"north\",\"nose\",\"note\",\"notebook\",\"number\",\"nut\",\"oatmeal\",\"observation\",\"ocean\",\"offer\",\"office\",\"oil\",\"orange\",\"oranges\",\"order\",\"oven\",\"page\",\"pail\",\"pan\",\"pancake\",\"paper\",\"parcel\",\"part\",\"partner\",\"party\",\"passenger\",\"payment\",\"peace\",\"pear\",\"pen\",\"pencil\",\"person\",\"pest\",\"pet\",\"pets\",\"pickle\",\"picture\",\"pie\",\"pies\",\"pig\",\"pigs\",\"pin\",\"pipe\",\"pizzas\",\"place\",\"plane\",\"planes\",\"plant\",\"plantation\",\"plants\",\"plastic\",\"plate\",\"play\",\"playground\",\"pleasure\",\"plot\",\"plough\",\"pocket\",\"point\",\"poison\",\"pollution\",\"popcorn\",\"porter\",\"position\",\"pot\",\"potato\",\"powder\",\"power\",\"price\",\"produce\",\"profit\",\"property\",\"prose\",\"protest\",\"pull\",\"pump\",\"punishment\",\"purpose\",\"push\",\"quarter\",\"quartz\",\"queen\",\"question\",\"quicksand\",\"quiet\",\"quill\",\"quilt\",\"quince\",\"quiver\",\"rabbit\",\"rabbits\",\"rail\",\"railway\",\"rain\",\"rainstorm\",\"rake\",\"range\",\"rat\",\"rate\",\"ray\",\"reaction\",\"reading\",\"reason\",\"receipt\",\"recess\",\"record\",\"regret\",\"relation\",\"religion\",\"representative\",\"request\",\"respect\",\"rest\",\"reward\",\"rhythm\",\"rice\",\"riddle\",\"rifle\",\"ring\",\"rings\",\"river\",\"road\",\"robin\",\"rock\",\"rod\",\"roll\",\"roof\",\"room\",\"root\",\"rose\",\"route\",\"rub\",\"rule\",\"run\",\"sack\",\"sail\",\"salt\",\"sand\",\"scale\",\"scarecrow\",\"scarf\",\"scene\",\"scent\",\"school\",\"science\",\"scissors\",\"screw\",\"sea\",\"seashore\",\"seat\",\"secretary\",\"seed\",\"selection\",\"self\",\"sense\",\"servant\",\"shade\",\"shake\",\"shame\",\"shape\",\"sheep\",\"sheet\",\"shelf\",\"ship\",\"shirt\",\"shock\",\"shoe\",\"shoes\",\"shop\",\"show\",\"side\",\"sidewalk\",\"sign\",\"silk\",\"silver\",\"sink\",\"sister\",\"sisters\",\"size\",\"skate\",\"skin\",\"skirt\",\"sky\",\"slave\",\"sleep\",\"sleet\",\"slip\",\"slope\",\"smash\",\"smell\",\"smile\",\"smoke\",\"snail\",\"snails\",\"snake\",\"snakes\",\"sneeze\",\"snow\",\"soap\",\"society\",\"sock\",\"soda\",\"sofa\",\"son\",\"song\",\"songs\",\"sort\",\"sound\",\"soup\",\"space\",\"spade\",\"spark\",\"spiders\",\"sponge\",\"spoon\",\"spot\",\"spring\",\"spy\",\"square\",\"squirrel\",\"stage\",\"stamp\",\"star\",\"start\",\"statement\",\"station\",\"steam\",\"steel\",\"stem\",\"step\",\"stew\",\"stick\",\"sticks\",\"stitch\",\"stocking\",\"stomach\",\"stone\",\"stop\",\"store\",\"story\",\"stove\",\"stranger\",\"straw\",\"stream\",\"street\",\"stretch\",\"string\",\"structure\",\"substance\",\"sugar\",\"suggestion\",\"suit\",\"summer\",\"sun\",\"support\",\"surprise\",\"sweater\",\"swim\",\"swing\",\"system\",\"table\",\"tail\",\"talk\",\"tank\",\"taste\",\"tax\",\"teaching\",\"team\",\"teeth\",\"temper\",\"tendency\",\"tent\",\"territory\",\"test\",\"texture\",\"theory\",\"thing\",\"things\",\"thought\",\"thread\",\"thrill\",\"throat\",\"throne\",\"thumb\",\"thunder\",\"ticket\",\"tiger\",\"time\",\"tin\",\"title\",\"toad\",\"toe\",\"toes\",\"tomatoes\",\"tongue\",\"tooth\",\"toothbrush\",\"toothpaste\",\"top\",\"touch\",\"town\",\"toy\",\"toys\",\"trade\",\"trail\",\"train\",\"trains\",\"tramp\",\"transport\",\"tray\",\"treatment\",\"tree\",\"trees\",\"trick\",\"trip\",\"trouble\",\"trousers\",\"truck\",\"trucks\",\"tub\",\"turkey\",\"turn\",\"twig\",\"twist\",\"umbrella\",\"uncle\",\"underwear\",\"unit\",\"use\",\"vacation\",\"value\",\"van\",\"vase\",\"vegetable\",\"veil\",\"vein\",\"verse\",\"vessel\",\"vest\",\"view\",\"visitor\",\"voice\",\"volcano\",\"volleyball\",\"voyage\",\"walk\",\"wall\",\"war\",\"wash\",\"waste\",\"watch\",\"water\",\"wave\",\"waves\",\"wax\",\"way\",\"wealth\",\"weather\",\"week\",\"weight\",\"wheel\",\"whip\",\"whistle\",\"wilderness\",\"wind\",\"window\",\"wine\",\"wing\",\"winter\",\"wire\",\"wish\",\"woman\",\"women\",\"wood\",\"wool\",\"word\",\"work\",\"worm\",\"wound\",\"wren\",\"wrench\",\"wrist\",\"writer\",\"writing\",\"yak\",\"yam\",\"yard\",\"yarn\",\"year\",\"yoke\",\"zebra\",\"zephyr\",\"zinc\",\"zipper\",\"zoo\",\n];","import React, { useEffect, useState } from 'react';\r\n\r\nimport {\r\n Button, Container, Dialog, DialogActions, DialogContent, DialogTitle, FormControlLabel, Radio,\r\n RadioGroup, Table, TableBody, TableCell, TableHead, TableRow, TextField,\r\n} from '@material-ui/core';\r\n\r\nimport { CodeCritic } from '../api';\r\nimport { ICcGroup, ICcUserGroup } from '../cc-api';\r\nimport { SimpleLoader } from '../components/SimpleLoader';\r\nimport { useOpenClose } from '../hooks/useOpenClose';\r\nimport { useRefresh } from '../hooks/useRefresh';\r\nimport { useUser } from '../hooks/useUser';\r\nimport { CcUserGroupStatus } from '../models/Enums';\r\nimport { notifications } from '../utils/notifications';\r\nimport { generateRandomName } from '../utils/nameGenerator';\r\n\r\n// const model = Schema.ObjectType({\r\n// name: Schema.StringType(),\r\n// status: Schema.EnumType({ values: ['NotConfirmed', 'Confirmed', 'Rejected'] }),\r\n// users: Schema.ArrayType(\r\n// Schema.ObjectType({\r\n// name: Schema.StringType(),\r\n// status: Schema.EnumType({ values: ['NotConfirmed', 'Confirmed', 'Rejected'] }),\r\n// })\r\n// )\r\n// });\r\n\r\n\r\ninterface UserElementProps {\r\n users: ICcUserGroup[];\r\n}\r\nconst UserElement = (props: UserElementProps) => {\r\n const { users } = props;\r\n const mapUser = (user: ICcUserGroup) => {\r\n return {user.name}\r\n }\r\n return (
\r\n {users.map(i => mapUser(i))}\r\n
)\r\n}\r\ninterface GroupManagerProps {\r\n\r\n}\r\nexport const GroupManager = (props: GroupManagerProps) => {\r\n const [groups, setGroups] = useState();\r\n const [edit, openEdit, closeEdit] = useOpenClose(false);\r\n const [newGroup, setNewGroup] = useState({} as any);\r\n const [isEditMode, setIsEditMode] = useState(true);\r\n const { counter, refresh } = useRefresh();\r\n const { user } = useUser();\r\n\r\n useEffect(() => {\r\n (async () => {\r\n const axiosReponse = await CodeCritic.api.studentGroupList();\r\n setGroups(axiosReponse.data);\r\n })()\r\n }, [ counter ]);\r\n\r\n if (groups === undefined) {\r\n return \r\n }\r\n\r\n const openEditGroupDialog = (index) => {\r\n setIsEditMode(true);\r\n setNewGroup({ ...groups[index] });\r\n openEdit();\r\n }\r\n\r\n const openNewGroupDialog = () => {\r\n setIsEditMode(false);\r\n const newGrp: Partial = {\r\n name: \"skupina\",\r\n owner: user.id, users: [\r\n ]\r\n };\r\n setNewGroup(newGrp as any);\r\n openEdit();\r\n }\r\n\r\n const updateNewGroup = () => {\r\n setNewGroup({ ...newGroup });\r\n }\r\n\r\n const saveNewGroup = async () => {\r\n await CodeCritic.api.studentGroupNewCreate(newGroup);\r\n refresh();\r\n closeEdit();\r\n }\r\n\r\n const editGroup = async () => {\r\n newGroup.oid = newGroup.objectId;\r\n await CodeCritic.api.studentGroupEditCreate(newGroup);\r\n refresh();\r\n closeEdit();\r\n }\r\n\r\n const deleteGroup = async () => {\r\n await CodeCritic.api.studentGroupDeleteDetail(newGroup.objectId);\r\n refresh();\r\n closeEdit();\r\n }\r\n\r\n const updateStatus = async (objectId: string, myGrp: ICcUserGroup) => {\r\n await CodeCritic.api.studentGroupStatusCreate({ oid: objectId, ...myGrp });\r\n refresh();\r\n if (myGrp.status === CcUserGroupStatus.Confirmed) {\r\n notifications.success(\"Membership confirmed 😊\");\r\n } else if (myGrp.status === CcUserGroupStatus.Rejected) {\r\n notifications.info(\"Membership rejected 😢\");\r\n }\r\n }\r\n\r\n const users = [\r\n ...(newGroup?.users ?? []),\r\n { name: \"\", status: CcUserGroupStatus.NotConfirmed as any }\r\n ];\r\n\r\n\r\n\r\n return (\r\n {(edit && newGroup) && \r\n {isEditMode ? \"Edit Group\" : \"New Group\"}\r\n \r\n
\r\n { newGroup.name = e.target.value.substr(0, 32); updateNewGroup() }}\r\n value={newGroup.name}\r\n fullWidth\r\n />\r\n \r\n
\r\n
\r\n {users.map((i, j) => {\r\n const updateUserList = () => {\r\n newGroup.users = [...users.filter(i => !!i.name)];\r\n updateNewGroup();\r\n };\r\n\r\n return { i.name = e.target.value.substr(0, 32).toLowerCase().replaceAll(\" \", \".\"); updateUserList() }}\r\n value={i.name}\r\n />\r\n })}\r\n
\r\n
\r\n \r\n \r\n {isEditMode && }\r\n {isEditMode && }\r\n {!isEditMode && }\r\n \r\n
}\r\n \r\n \r\n \r\n Name\r\n Owner\r\n Users\r\n Edit\r\n \r\n \r\n \r\n {groups.map((i, j) => {\r\n const me = user.id;\r\n const myGrp = i.users.find(k => k.name == me);\r\n\r\n if (!myGrp) {\r\n // weird\r\n return <>\r\n }\r\n const myStatus = myGrp.status;\r\n\r\n return \r\n {i.name}\r\n {i.owner}\r\n \r\n \r\n {i.isLocked && }\r\n {!i.isLocked &&\r\n <>\r\n {me == i.owner && }\r\n {me != i.owner && { myGrp.status = Number(e.target.value) as any; updateStatus(i.objectId, myGrp) }}>\r\n } label=\"Accept\" />\r\n } label=\"Reject\" />\r\n }\r\n \r\n }\r\n \r\n \r\n })}\r\n \r\n
\r\n \r\n
)\r\n}\r\n","import { useEffect, useState } from 'react';\n\nimport { ICommentServiceItem } from '../cc-api';\nimport { appDispatcher, commentService } from '../init';\n\nexport const useComments = () => {\n const [ serviceItems, setServiceItems ] = useState(commentService.items);\n\n useEffect(() => {\n const id = appDispatcher.register(payload => {\n switch (payload.actionType) {\n case \"commentServiceChanged\":\n setServiceItems([...commentService.items]);\n break;\n }\n });\n \n return () => {\n appDispatcher.unregister(id);\n }\n }, []);\n\n const cancelComment = (item: ICommentServiceItem) => {\n const newItems = commentService.items\n .filter(i => !(i.objectId == item.objectId\n && i.comment.filename == item.comment.filename\n && i.comment.text == item.comment.text\n && i.comment.line == item.comment.line));\n\n \n commentService.items = newItems;\n appDispatcher.dispatch({\n actionType: \"commentServiceChanged\"\n });\n }\n\n\n // const { comments, prepareComment, postComments, postCommentsAsync } = useComments();\n return {\n serviceItems, cancelComment,\n comments: serviceItems.map(i => i.comment),\n prepareComment: (item: ICommentServiceItem) => commentService.prepareComment(item), \n postComments: () => commentService.postComments(),\n postCommentsAsync: () => commentService.postCommentsAsync()\n };\n}","import Moment from 'react-moment';\nimport moment from 'moment';\nimport React from 'react';\nimport { Tooltip } from '@material-ui/core';\n\ninterface AbsMomentProps {\n date: any;\n noTooltip?: boolean;\n}\nexport const AbsMoment = (props: AbsMomentProps) => {\n const { date, noTooltip } = props;\n \n if (!date) {\n return <>\n }\n const datetime = moment(date);\n\n if (noTooltip) {\n return <> ()\n }\n \n\n return (\n \n )\n}","import * as React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\n\nimport { Typography } from '@material-ui/core';\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\n\ninterface CourseYearProblemHeaderProps {\n course: string;\n year: string;\n problem: string;\n}\nexport const CourseYearProblemHeader = (props: CourseYearProblemHeaderProps) => {\n const { course, year, problem } = props;\n return (<>\n {course}\n \n {year}\n \n {problem}\n )\n}","import CallMissedIcon from '@material-ui/icons/CallMissed';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport DoneAllIcon from '@material-ui/icons/DoneAll';\nimport DoneIcon from '@material-ui/icons/Done';\nimport HourglassEmptyIcon from '@material-ui/icons/HourglassEmpty';\nimport PlayArrowIcon from '@material-ui/icons/PlayArrow';\nimport PriorityHighIcon from '@material-ui/icons/PriorityHigh';\nimport TimerIcon from '@material-ui/icons/Timer';\nimport { ICcData, ICcDataCaseResult } from '../cc-api';\nimport { ProcessStatusCodes } from '../models/Enums';\n\n\nexport const IconClassGeneric = (status: number, points: number) => {\n switch (status) {\n case ProcessStatusCodes.AnswerCorrect:\n case ProcessStatusCodes.Ok:\n return points > 0\n ? DoneAllIcon\n : DoneIcon;\n\n case ProcessStatusCodes.AnswerCorrectTimeout:\n case ProcessStatusCodes.GlobalTimeout:\n return TimerIcon;\n\n case ProcessStatusCodes.AnswerWrong:\n return ClearIcon;\n\n case ProcessStatusCodes.Running:\n return PlayArrowIcon;\n\n case ProcessStatusCodes.InQueue:\n return HourglassEmptyIcon;\n\n case ProcessStatusCodes.Skipped:\n return CallMissedIcon;\n }\n\n return PriorityHighIcon;\n}\n\nexport const IconClass = (result: ICcData) => {\n return IconClassGeneric(result.result.status, result.points);\n}\n\nexport const IconClassSubresult = (subresult: ICcDataCaseResult) => {\n switch (subresult.status) {\n case ProcessStatusCodes.AnswerCorrect:\n case ProcessStatusCodes.Ok:\n return DoneIcon;\n\n case ProcessStatusCodes.AnswerCorrectTimeout:\n case ProcessStatusCodes.GlobalTimeout:\n return TimerIcon;\n\n case ProcessStatusCodes.AnswerWrong:\n return ClearIcon;\n\n case ProcessStatusCodes.Running:\n return PlayArrowIcon;\n\n case ProcessStatusCodes.InQueue:\n return HourglassEmptyIcon;\n\n case ProcessStatusCodes.Skipped:\n return CallMissedIcon;\n }\n\n return PriorityHighIcon;\n}\n","import { Theme, withStyles } from '@material-ui/core/styles';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nexport const LightTooltip = withStyles((theme: Theme) => ({\n tooltip: {\n backgroundColor: theme.palette.common.white,\n color: 'rgba(60, 60, 60, 0.87)',\n boxShadow: theme.shadows[3],\n maxWidth: 700,\n overflow: 'auto',\n fontSize: 11,\n '& strong': {\n color: '#000',\n }\n },\n}))(Tooltip);","import Card from '@material-ui/core/Card';\nimport { IApiError } from '../cc-api';\nimport React from 'react';\n\nexport const renderError = (i: IApiError, j?: number, adminOnly: boolean=true) => {\n return \n
\n
\n \n \n \n
\n
{i.name}
\n
\n
{i.errors.join(\"\\n\")}
\n {adminOnly &&
Visible to admins only
}\n
\n}\n\n\nexport const renderErrorForAdmin = (i: IApiError, j: number) => {\n return renderError(i, j, true);\n}","import { ProcessStatusCodes, ProcessStatusStatic } from \"../models/Enums\"\r\n\r\nexport const isStatusOk = (status: number) => {\r\n if (status === ProcessStatusCodes.AnswerCorrect\r\n || status === ProcessStatusCodes.AnswerCorrectTimeout\r\n || status === ProcessStatusCodes.Ok) {\r\n return 1;\r\n } else if (status === ProcessStatusCodes.Running) {\r\n return 2;\r\n }\r\n return 0;\r\n}\r\n\r\nexport const getStatus = (status: number) => {\r\n var result = ProcessStatusStatic.All.find(i => i.value === status)\r\n return !result ? ProcessStatusStatic.ErrorWhileRunning : result;\r\n}\r\n","import React, { useEffect, useState } from 'react';\n\nimport { Dialog, DialogContent, Fade, IconButton, makeStyles } from '@material-ui/core';\nimport AttachMoneyIcon from '@material-ui/icons/AttachMoney';\nimport DeveloperModeIcon from '@material-ui/icons/DeveloperMode';\nimport FingerprintIcon from '@material-ui/icons/Fingerprint';\nimport FlagIcon from '@material-ui/icons/Flag';\nimport SpeakerNotesIcon from '@material-ui/icons/SpeakerNotes';\nimport TimerIcon from '@material-ui/icons/Timer';\n\nimport { CodeCritic } from '../api';\nimport { ICcData, ICcDataCaseResult, IDiffResultComposite, IDiffResultLine } from '../cc-api';\nimport { SimpleLoader, SimplePacmanLoader } from '../components/SimpleLoader';\nimport { useOpenClose } from '../hooks/useOpenClose';\nimport { ChangeType, ProcessStatusCodes, ProcessStatusStatic } from '../models/Enums';\nimport { notifications } from '../utils/notifications';\nimport { getStatus } from '../utils/StatusUtils';\nimport { IconClassSubresult } from './IconClass';\nimport { LightTooltip } from './LightTooltip';\n\ninterface TimelineRendererProps {\n result: ICcData,\n showExtra?: boolean,\n miniMode?: boolean,\n}\n\nexport const TimelineRenderer = (props: TimelineRendererProps) => {\n const { showExtra = false, miniMode = false, result } = props;\n\n const subresults = result.results;\n const N = subresults.length;\n const caseRadius = miniMode ? 25 : 40;\n const maxWidth = miniMode ? 340 : 800;\n const miniCls = miniMode ? \"mini\" : \"\";\n\n const minW = miniMode ? 10 : 30;\n const maxW = miniMode ? 50 : 80;\n\n const guess = N > 0\n ? (maxWidth - N * caseRadius) / (N - 1)\n : 100;\n\n const connectorLength = Math.min(maxW, Math.max(minW, guess));\n const ws = miniMode ? { width: maxWidth } : {};\n\n return (
\n {subresults?.map((i, j) => {\n const status = getStatus(i.status);\n const isRunning = status.code == ProcessStatusCodes.Running;\n\n return (\n \n \n {subresults.length === 1\n ? <>\n {isRunning && }\n {!isRunning && <>\n \n   {i.duration.toFixed(3)} sec\n }\n \n : <>\n \n }\n {j !== subresults.length - 1 && <>\n \n }\n \n \n )\n })}\n
)\n}\n\ninterface SubresultDotProps {\n result: ICcData;\n subresult: ICcDataCaseResult,\n showExtra: boolean;\n}\n\nconst SubresultDot = (props: SubresultDotProps) => {\n const { subresult, showExtra, result } = props;\n const [ diffOpen, openDiff, closeDiff ] = useOpenClose();\n\n const id = subresult.case;\n const IconClass = IconClassSubresult(subresult);\n const status = getStatus(subresult.status);\n\n return (\n {diffOpen && }\n \n
\n \n  Test:\n \n {subresult.case}\n
\n
\n \n  Status:\n \n {ProcessStatusStatic.All.find(i => i.value == subresult.status).name}\n
\n\n
\n \n  Duration:\n \n {subresult.duration?.toFixed(3) ?? \"??\"} sec\n
\n\n {subresult.timeLimit > 0 &&
\n \n  Time Limit:\n \n {subresult.timeLimit?.toFixed(3) ?? \"??\"} sec\n
}\n \n\n {subresult.message &&
\n \n  Output:\n \n {subresult.message}\n
}\n\n {subresult.messages?.length > 0 &&
\n \n  Log:\n \n
{subresult.messages.join(\"\\n\")}
\n
}\n\n {showExtra && <>\n {subresult.command &&
\n \n  Command:\n \n
{subresult.command}
\n
}\n {subresult.fullCommand &&
\n \n  Full cmd:\n \n
{subresult.fullCommand}
\n
}\n }\n\n
}>\n \n \n \n \n )\n}\n\ninterface DiffViewProps {\n onClose(): void;\n result: ICcData;\n subresult: ICcDataCaseResult;\n}\n\nconst DiffView = (props: DiffViewProps) => {\n const { onClose, subresult, result } = props;\n const [ diff, setDiff ] = useState();\n const hideLegend = false;\n\n const renderLine = (line: IDiffResultLine, lineNo: number) => {\n return \n \n \n {line.generated}\n \n {line.reference}\n \n \n }\n\n useEffect(() => {\n (async () => {\n try {\n const axiosResponse = await CodeCritic.api.diffDetail(result.objectId, subresult.case);\n const data = axiosResponse.data;\n setDiff(data);\n } catch (e) {\n notifications.error(`Could not compare files, ${e}`);\n onClose();\n }\n })();\n }, []);\n\n if (!diff) {\n return \n }\n\n return \n \n \n \n \n \n \n \n \n \n \n {diff.lines.map((line, lineNo) => renderLine(line, lineNo + 1))}\n \n
GeneratedReference
\n {!hideLegend &&
\n
\n
\n \n \n Correct\n \n \n \n Wrong\n \n
\n
}\n
\n
\n}","import React from 'react';\r\n\r\nimport { Button, Menu, MenuItem } from '@material-ui/core';\r\n\r\ninterface DropDownMenuProps {\r\n title: string | JSX.Element;\r\n options: T[];\r\n onChange: (item: T) => void;\r\n getLabel?: (item: T) => string | JSX.Element;\r\n getIsDisabled?: (item: T) => boolean;\r\n buttonProps?: object;\r\n Component?: any;\r\n}\r\n\r\nexport function DropDownMenu(props: DropDownMenuProps) {\r\n const { title, options, getLabel, onChange, buttonProps, getIsDisabled, Component } = props;\r\n const extraProps = buttonProps ?? {};\r\n const ComponentCls = Component ?? Button;\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const isDisabledFunc = getIsDisabled\r\n ? getIsDisabled\r\n : () => false;\r\n\r\n const handleClick = (event: React.MouseEvent) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = (item: T | null) => {\r\n setAnchorEl(null);\r\n if (item != null) {\r\n onChange(item);\r\n }\r\n };\r\n\r\n const defFunc = (t) => t;\r\n const labelFunc = getLabel ?? defFunc;\r\n\r\n return (\r\n <>\r\n \r\n {title}\r\n \r\n handleClose(null)}>\r\n {options.map((i, j) => handleClose(i)}>\r\n {labelFunc(i)}\r\n )}\r\n \r\n \r\n );\r\n}","import React, { useEffect, useState } from 'react';\n\nexport const useTextSelection = () => {\n const [selectedText, setSelectedText] = useState(\"\");\n const variableRegex = new RegExp(/^[a-z0-9_]+$/gi);\n\n useEffect(() => {\n document.addEventListener(\"mousedown\", checkSelection);\n document.addEventListener(\"mouseup\", checkSelection);\n\n return () => {\n document.removeEventListener(\"mousedown\", checkSelection);\n document.removeEventListener(\"mouseup\", checkSelection);\n }\n }, [ ]);\n\n const checkSelection = () => {\n const selection = document.getSelection();\n \n const source = selection?.anchorNode?.parentElement;\n if (!source) {\n return;\n }\n const newSelection = selection.toString();\n const updateSelection = newSelection === \"\"\n || (variableRegex.test(newSelection)\n && newSelection.length >= 2\n && [source, \n source.parentElement,\n source.parentElement?.parentElement,\n source.parentElement?.parentElement?.parentElement].some(i => i?.classList.contains(\"selectable\")))\n\n if (newSelection !== selectedText) {\n if (updateSelection) {\n setSelectedText(newSelection);\n }\n }\n }\n\n return selectedText;\n}","import * as Showdown from \"showdown\";\n\nexport const converter = new Showdown.Converter({\n tables: true,\n simplifiedAutoLink: true,\n strikethrough: true,\n tasklists: true\n});","import { ILanguage } from '../models/CustomModel';\n\nconst hljs = (window as any).hljs;\n\n\nexport const getSyntax = (language: ILanguage | string) => {\n const ext = typeof(language) === \"string\" ? language : language.extension;\n\n switch(ext) {\n case \"py\":\n return \"python\";\n case \"js\":\n case \"ts\":\n return \"javascript\";\n case \"cs\":\n return \"csharp\";\n case \"java\":\n return \"java\";\n case \"m\":\n return \"matlab\";\n case \"c\":\n case \"h\":\n return \"c\";\n case \"cc\":\n case \"hh\":\n case \"hpp\":\n case \"cpp\":\n return \"cpp\";\n case \"md\":\n return \"markdown\";\n case \"xml\":\n case \"csproj\":\n return \"xml\";\n case \"sh\":\n return \"bash\";\n case \"json\":\n return \"json\";\n case \"m\":\n return \"matlab\";\n }\n return \"plaintext\";\n}\n\nexport const highlight = (code: string, language: ILanguage | string) => {\n const lines = code.split(\"\\n\");\n const syntax = getSyntax(language);\n const transform = (s: string) => hljs.highlight(s, {language: syntax}).value;\n\n const chunks = lines\n .map(transform);\n\n return chunks as string[];\n}\n\nexport const highlightLine = (line: string, language: ILanguage | string) => {\n const syntax = getSyntax(language);\n return hljs.highlight(line, {language: syntax}).value as string;\n}\n\nexport const highlightPlainText = (text: string) => {\n\n const prettifiers = [\n { regex: new RegExp(/\\[PASSED\\]:/, \"gm\"), replacement: `[PASSED]:` },\n { regex: new RegExp(/\\[FAILED\\]:/, \"gm\"), replacement: `[FAILED]:` },\n { regex: new RegExp(/\\[SUMMARY\\]:/, \"gm\"), replacement: `[SUMMARY]:` },\n ]\n prettifiers.forEach(i => {\n text = text.replaceAll(i.regex, i.replacement);\n });\n\n return text;\n}","import React, { useEffect, useState } from 'react';\nimport ReactMde from 'react-mde';\nimport Moment from 'react-moment';\n\nimport { Button, Container, IconButton, Typography } from '@material-ui/core';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\n\nimport { CodeCritic } from '../api';\nimport { ICommentServiceItem, ILineComment } from '../cc-api';\nimport { DropDownMenu } from '../components/DropDownMenu';\nimport { useComments } from '../hooks/useComments';\nimport { useTextSelection } from '../hooks/useTextSelection';\nimport { useUser } from '../hooks/useUser';\nimport { OptionType } from '../models/CustomModel';\nimport { converter } from '../renderers/markdown';\nimport { notifications } from '../utils/notifications';\nimport { getInitials, normalizePath } from '../utils/utils';\nimport { getSyntax, highlightLine, highlightPlainText } from './highlight';\nimport sanitizeHtml from 'escape-html';\n\ninterface SingleCommentProps {\n comment: ILineComment;\n onDelete(): void;\n}\nconst SingleComment = (props: SingleCommentProps) => {\n const { comment, onDelete } = props;\n const initials = getInitials(comment.user);\n const isPending = comment.time <= 0;\n const pendingCls = isPending ? \"pending\" : \"\";\n\n return \n \n
\n\n
\n
{initials}
\n
\n\n {isPending &&
\n \n \n \n
}\n\n
\n {comment.user}\n \n  \n {!isPending && ({comment.time * 1000})}\n {isPending && pending}\n \n \n
\n\n
\n
\n \n \n}\n\ninterface LineEditorProps {\n onSave(value): void;\n}\nconst LineEditor = (props: LineEditorProps) => {\n const { onSave } = props;\n const [selectedTab, setSelectedTab] = useState<\"write\" | \"preview\">(\"write\");\n const [value, setValue] = useState(\"\");\n\n return \n \n Promise.resolve(converter.makeHtml(markdown))}\n />\n onSave(value)}\n >Prepare Comment for submission\n \n \n}\n\n\nconst binaryContentResult = (filename: string, data: string) => {\n const parts = filename.toLowerCase().split(\".\");\n const extension = parts[parts.length - 1];\n\n switch (extension) {\n case \"png\":\n return ;\n case \"jpg\":\n case \"jpeg\":\n return ;\n case \"gif\":\n return ;\n case \"md\":\n return
\n }\n return null;\n}\n\n\ninterface ISourceCodeReview {\n objectId: string,\n relPath: string,\n code: string;\n comments: ILineComment[];\n}\nexport const SourceCodeReview = (props: ISourceCodeReview) => {\n const { relPath, code, comments: defaultComment, objectId } = props;\n\n const { user, isRoot } = useUser();\n const [commentsOn, setCommentOn] = useState(true);\n const [editor, setEditor] = useState(-1);\n const { serviceItems, prepareComment, cancelComment } = useComments();\n const selectedText = useTextSelection();\n\n const comments = [\n ...defaultComment,\n ...serviceItems\n .filter(i => i.objectId == objectId)\n .map(i => i.comment)\n ].filter(i => normalizePath(i.filename) === normalizePath(relPath));\n\n const parts = relPath.toLowerCase().split(\".\");\n const extension = parts[parts.length - 1];\n\n if (typeof (code) !== \"string\") {\n return code;\n }\n\n const otherContent = binaryContentResult(relPath, code)\n if (otherContent !== null) {\n return otherContent;\n }\n\n const handleEditorClick = (ln) => {\n setEditor(editor == ln ? -1 : ln);\n }\n\n const addComment = (value: string, ln: number) => {\n const comment: ILineComment = {\n user: user.id,\n time: -1,\n line: ln,\n text: value,\n filename: relPath\n }\n const newComment = {\n comment: comment,\n objectId: objectId,\n } as ICommentServiceItem;\n\n // setExtraComments([...extraComment, newComment]);\n prepareComment(newComment);\n setEditor(-1);\n }\n\n const rerunSolution = async () => {\n try {\n await CodeCritic.api.rerunSolutionDetail(objectId);\n notifications.success(\"Ok, job will be executed again\");\n } catch (e) {\n notifications.error(`Error while requesting rerun: ${e}`);\n }\n }\n\n const menuItems: OptionType[] = [\n { name: \"Show comments\", value: () => setCommentOn(true) },\n { name: \"Hide comments\", value: () => setCommentOn(false) },\n ...(isRoot ? [{ name: \"Rerun solution\", value: rerunSolution }] : [])\n ];\n\n const toRow = (code: string, ln: number, isOpen: boolean, hasComments: boolean, extraCls: string=\"\") => {\n const cls = isOpen ? \"has-editor\" : \"\";\n const cls2 = hasComments ? \"has-comments\" : \"\";\n\n return \n \n \n \n
\n        \n    }\n\n    const deleteComment = (comment: ILineComment) => {\n        cancelComment({ objectId: objectId, comment });\n    }\n\n    // TODO: remove at the beginingn of the next semester\n    const lines = [...code.split(\"\\n\"), \"\"];\n    let id = 0;\n    return 
\n \n
\n i && i.value ? i.value() : void 0}\n getLabel={i => i.name}\n options={menuItems}\n title={}\n />\n
\n \n \n {lines.map((i, j) => {\n const hasEditor = editor == j;\n const hasComments = comments.filter(c => c.line == j).length > 0;\n const commentsTrs = commentsOn\n ? comments.filter(c => c.line == j).map((c, k) =>\n deleteComment(c)} comment={c} />)\n : [];\n\n const editorTr = commentsOn && hasEditor\n ? [ addComment(value, j)} />]\n : [];\n\n const syntax = getSyntax(extension);\n const safeText = sanitizeHtml(i);\n const highlightedText = syntax === \"plaintext\"\n ? highlightPlainText(safeText)\n : highlightLine(i, extension);\n \n let extraCls = \"\";\n if (selectedText) {\n const textRegex = new RegExp(`(^|[^a-z0-9_])${selectedText}($|[^a-z0-9_])`);\n \n if (i.match(textRegex)) {\n extraCls = \"has-selection\";\n }\n }\n\n const trs = [\n toRow(highlightedText, j, commentsOn && hasEditor, commentsOn && hasComments, extraCls),\n ...commentsTrs,\n ...editorTr\n ];\n\n return trs;\n })}\n \n
\n
\n
\n}","export const nop = () => void 0;","import { ILanguage } from '../models/CustomModel';\n\nexport const languages: ILanguage[] = [\n {\n \"id\": \"PY-367\",\n \"name\": \"Python\",\n \"scaleFactor\": 5,\n \"scaleStart\": 0,\n \"version\": \"3.10.6\",\n \"extension\": \"py\",\n \"disabled\": false,\n \"compile\": [],\n \"run\": [\n \"python3\",\n \"\"\n ],\n \"unittest\": [\n \"python3\",\n \"-m\",\n \"pytest\",\n \"--json=.report.json\",\n \"--tb=line\",\n \"\"\n ],\n \"compilationNeeded\": false,\n \"scaleInfo\": \"0.00 + 5.00×\"\n },\n {\n \"id\": \"NODEJS\",\n \"name\": \"Node.js\",\n \"scaleFactor\": 5,\n \"scaleStart\": 0,\n \"version\": \"v19.0.1\",\n \"extension\": \"js\",\n \"disabled\": false,\n \"compile\": [\"npm\", \"i\"],\n \"unittest\": [],\n \"run\": [\"node\", \"\"],\n \"compilationNeeded\": true,\n \"scaleInfo\": \"0.50 + 5.00×\"\n },\n {\n \"id\": \"TS\",\n \"name\": \"Typescript\",\n \"scaleFactor\": 5,\n \"scaleStart\": 0.5,\n \"version\": \"v4.8.4\",\n \"extension\": \"ts\",\n \"disabled\": false,\n \"compile\": [\"tsc\", \"\"],\n \"unittest\": [],\n \"run\": [\"node\", \"\"],\n \"compilationNeeded\": true,\n \"scaleInfo\": \"0.50 + 5.00×\",\n },\n {\n \"id\": \"C\",\n \"name\": \"C\",\n \"scaleFactor\": 1,\n \"scaleStart\": 0,\n \"version\": \"gcc 11.3.0\",\n \"extension\": \"c\",\n \"disabled\": false,\n \"compile\": [\n \"gcc\",\n \"\",\n \"-o\",\n \"main\"\n ],\n \"run\": [\n \"./main\"\n ],\n \"unittest\": [],\n \"compilationNeeded\": true,\n \"scaleInfo\": \"0.00 + 1.00×\"\n },\n {\n \"id\": \"CPP\",\n \"name\": \"C++\",\n \"scaleFactor\": 1,\n \"scaleStart\": 0,\n \"version\": \"g++ 11.3.0\",\n \"extension\": \"cpp\",\n \"disabled\": false,\n \"compile\": [\n \"g++\",\n \"-std=c++17\",\n \"\",\n \"-o\",\n \"main\"\n ],\n \"run\": [\n \"./main\"\n ],\n \"unittest\": [],\n \"compilationNeeded\": true,\n \"scaleInfo\": \"0.00 + 1.00×\"\n },\n {\n \"id\": \"JAVA\",\n \"name\": \"Java\",\n \"scaleFactor\": 2.6,\n \"scaleStart\": 0.2,\n \"version\": \"1.8.0_91\",\n \"extension\": \"java\",\n \"disabled\": false,\n \"compile\": [\n \"javac\",\n \"\"\n ],\n \"run\": [\n \"java\",\n \"main\"\n ],\n \"unittest\": [],\n \"compilationNeeded\": true,\n \"scaleInfo\": \"0.20 + 2.60×\"\n },\n {\n \"id\": \"DOTNET\",\n \"name\": \"Dotnet C#\",\n \"scaleFactor\": 1.5,\n \"scaleStart\": 1.5,\n \"version\": \"7.0.100\",\n \"extension\": \"cs\",\n \"disabled\": false,\n \"compile\": [],\n \"run\": [\n \"dotnet\",\n \"run\"\n ],\n \"unittest\": [],\n \"compilationNeeded\": true,\n \"scaleInfo\": \"1.50 + 1.50×\"\n },\n {\n \"id\": \"CS\",\n \"name\": \"C#\",\n \"scaleFactor\": 2,\n \"scaleStart\": 1,\n \"version\": \"Mono 6.8.0.105\",\n \"extension\": \"cs\",\n \"disabled\": false,\n \"compile\": [\n \"mcs\",\n \"\",\n \"-out:main\"\n ],\n \"run\": [\n \"mono\",\n \"main\"\n ],\n \"unittest\": [],\n \"compilationNeeded\": true,\n \"scaleInfo\": \"1.00 + 2.00×\"\n },\n {\n \"id\": \"MATLAB\",\n \"name\": \"Matlab\",\n \"scaleFactor\": 2,\n \"scaleStart\": 8.5,\n \"version\": \"R2020a\",\n \"extension\": \"m\",\n \"disabled\": false,\n \"compile\": [],\n \"run\": [\n \"matlab\",\n \"-nodesktop\",\n \"-nosplash\",\n \"-nodisplay\",\n \"-r\",\n \"\\\";exit;\\\"\"\n ],\n \"unittest\": [],\n \"compilationNeeded\": false,\n \"scaleInfo\": \"8.50 + 2.00×\"\n },\n {\n \"id\": \"MARKDOWN\",\n \"name\": \"Markdown\",\n \"scaleFactor\": 1,\n \"scaleStart\": 0,\n \"version\": \"1.0.0\",\n \"extension\": \"md\",\n \"disabled\": false,\n \"compile\": [],\n \"run\": [\n \"cat\",\n \"\"\n ],\n \"unittest\": [],\n \"compilationNeeded\": false,\n \"scaleInfo\": \"0.00 + 1.00×\"\n },\n {\n \"id\": \"RUST\",\n \"name\": \"Rust\",\n \"scaleFactor\": 1.5,\n \"scaleStart\": 0.2,\n \"version\": \"1.65.0\",\n \"extension\": \"rs\",\n \"disabled\": false,\n \"compile\": [\n \"rustc\",\n \"\",\n \"-o\",\n \"main\"\n ],\n \"run\": [\n \"./main\"\n ],\n \"unittest\": [],\n \"compilationNeeded\": true,\n \"scaleInfo\": \"0.20 + 1.50×\"\n },\n {\n \"id\": \"RUBY\",\n \"name\": \"Ruby\",\n \"scaleFactor\": 1.5,\n \"scaleStart\": 0.2,\n \"version\": \"2.7.0p0\",\n \"extension\": \"rb\",\n \"disabled\": false,\n \"compile\": [],\n \"run\": [\n \"ruby\",\n \"\"\n ],\n \"unittest\": [],\n \"compilationNeeded\": false,\n \"scaleInfo\": \"0.20 + 1.50×\"\n },\n];","import React, { useEffect, useState } from 'react';\nimport { IDiffPiece, ISideBySideDiff } from \"../cc-api\"\nimport { languages } from '../static/languages';\nimport { highlightLine } from '../text/highlight';\n\ninterface RenderDiffTableProps {\n item: ISideBySideDiff;\n syntax?: string;\n}\nexport const RenderDiffTable = (props: RenderDiffTableProps) => {\n const { item, syntax } = props;\n const language = languages.find(i => i.id === syntax);\n\n const renderLine = language\n ? (p: IDiffPiece) =>
\n        : (p: IDiffPiece) => 
{p.text}{'\\u00A0'}
\n\n const ids = new Array(item.diff.newText.lines.length).fill(0).map((i, j) => j);\n return \n \n \n \n \n \n \n \n \n {ids.map(i => {\n const a = item.diff.oldText.lines[i];\n const b = item.diff.newText.lines[i];\n const type = a.text == b.text ? 0 : a.type;\n\n\n return \n \n \n \n \n })}\n \n
{item.a}{item.b}
{renderLine(a)}{renderLine(b)}
\n}","export const isKeySequenceNextPage = (e: KeyboardEvent) => {\n return (e.ctrlKey && e.shiftKey && e.code === 'PageDown')\n || (e.ctrlKey && e.altKey && e.code === 'PageDown')\n || (e.ctrlKey && e.shiftKey && e.code === 'ArrowDown')\n || (e.ctrlKey && e.altKey && e.code === 'ArrowDown')\n}\n\nexport const isKeySequencePrevPage = (e: KeyboardEvent) => {\n return (e.ctrlKey && e.shiftKey&& e.code === 'PageUp')\n || (e.ctrlKey && e.altKey && e.code === 'PageUp')\n || (e.ctrlKey && e.shiftKey && e.code === 'ArrowUp')\n || (e.ctrlKey && e.altKey && e.code === 'ArrowUp')\n}","import React, { useEffect, useState } from 'react';\n\nimport {\n Button, Dialog, DialogActions, DialogContent, DialogTitle, IconButton, Typography,\n} from '@material-ui/core';\nimport PolicyIcon from '@material-ui/icons/Policy';\n\nimport { CodeCritic } from '../../api';\nimport { ICcData, ICcDataLight, IPlagResult } from '../../cc-api';\nimport { DropDownMenu } from '../../components/DropDownMenu';\nimport { SimpleLoader } from '../../components/SimpleLoader';\nimport { AbsMoment } from '../../renderers/AbsMoment';\nimport { LightTooltip } from '../../renderers/LightTooltip';\nimport { RenderDiffTable } from '../../renderers/RenderDiffTable';\nimport { nextIndex, prevIndex } from '../../utils/arrayUtils';\nimport { isKeySequenceNextPage, isKeySequencePrevPage } from '../../utils/shortcuts';\nimport { getStatus } from '../../utils/StatusUtils';\n\ninterface PreviousResultsProps {\n result: ICcData;\n selectedResultId: string;\n onChange(objectId: string): void;\n nextPage?(): void;\n prevPage?(): void;\n}\nexport const PreviousResults = (props: PreviousResultsProps) => {\n const { result, selectedResultId, onChange, nextPage, prevPage } = props;\n const [results, setResults] = useState();\n const [selectedDiff, setSelectedDiff] = useState();\n \n\n const nextSelectedItem = () => {\n const [change,, item] = nextIndex(results, selectedDiff.bId);\n if (change && item.objectId != selectedResultId) {\n compareResults(item.objectId);\n }\n }\n\n const prevSelectedItem = () => {\n const [change,, item] = prevIndex(results, selectedDiff.bId);\n if (change && item.objectId != selectedResultId) {\n compareResults(item.objectId);\n }\n }\n\n useEffect(() => {\n const handleKeyPress = (e: KeyboardEvent) => {\n // console.log({ n:\"PreviousResults\", shiftKey: e.shiftKey, ctrlKey: e.ctrlKey, key: e.key, code: e.code });\n\n if (selectedDiff) {\n if (results?.length > 1) {\n if (isKeySequenceNextPage(e)) {\n e.preventDefault();\n nextSelectedItem();\n } else if (isKeySequencePrevPage(e)) {\n e.preventDefault();\n prevSelectedItem();\n }\n }\n } else {\n if (isKeySequenceNextPage(e)) {\n if (nextPage) {\n nextPage();\n }\n } else if (isKeySequencePrevPage(e)){\n if (prevPage) {\n prevPage();\n }\n }\n }\n }\n window.addEventListener(\"keydown\", handleKeyPress);\n\n return () => {\n window.removeEventListener(\"keydown\", handleKeyPress);\n }\n }, [ selectedDiff?.aId, selectedDiff?.bId ]);\n\n\n useEffect(() => {\n (async () => {\n const author = result.userOrGroupUsers[0];\n const axiosResponse = await CodeCritic.api.userProblemResultsLightDetail(\n result.courseName, result.courseYear, result.problem, author\n );\n const responseData = axiosResponse.data;\n setResults(responseData.data);\n })();\n }, []);\n\n if (!results) {\n return \n }\n\n const onClose = () => {\n setSelectedDiff(undefined);\n }\n\n const compareResults = async (b: string) => {\n const a = selectedResultId;\n const response = await CodeCritic.api.plagTwoDetail(a, b);\n setSelectedDiff(response.data);\n }\n\n\n return (
\n {results.map((i, j) =>\n \n onChange(i.objectId)} result={i} selected={selectedResultId === i.objectId} />\n {j != (results.length - 1) && }\n \n )}\n Compare\n \n } options={results} \n getIsDisabled={i => i.objectId == selectedResultId}\n getLabel={i => `Compare with #${i.attempt}`}\n onChange={i => compareResults(i.objectId)} />\n\n {selectedDiff && \n \n {selectedDiff.aName} vs {selectedDiff.bName}\n Use arrows to walk through submission history\n \n \n {selectedDiff.diffs.map((k, l) =>
\n \n
)}\n
\n \n \n \n
}\n
)\n}\n\ninterface PreviousResultProps {\n result: ICcDataLight;\n selected: boolean;\n onClick(): void;\n}\n\nconst PreviousResult = (props: PreviousResultProps) => {\n const { result, selected, onClick } = props;\n const status = getStatus(result.status);\n const rr = result.reviewRequest != null;\n\n return }>\n \n {result.attempt}\n \n \n}\n","import * as React from 'react';\n\nimport {\n Button, Dialog, DialogActions, DialogContent, DialogTitle, Slider, TextField, withStyles,\n} from '@material-ui/core';\nimport MoodBadIcon from '@material-ui/icons/MoodBad';\nimport SentimentDissatisfiedIcon from '@material-ui/icons/SentimentDissatisfied';\nimport SentimentSatisfiedIcon from '@material-ui/icons/SentimentSatisfied';\nimport SentimentVeryDissatisfiedIcon from '@material-ui/icons/SentimentVeryDissatisfied';\nimport SentimentVerySatisfiedIcon from '@material-ui/icons/SentimentVerySatisfied';\nimport StarIcon from '@material-ui/icons/Star';\n\nimport { CodeCritic } from '../../api';\nimport { ICcData, IMarkSolutionItem } from '../../cc-api';\nimport { SubmissionStatus } from '../../models/Enums';\nimport { notifications } from '../../utils/notifications';\n\nconst marks = [\n {\n valueFunc: (i: number) => i >= 0 && i < 50,\n value: 0,\n label: \"\",\n valueName: 'Unacceptable',\n },\n {\n valueFunc: (i: number) => i >= 50 && i < 60,\n value: 50,\n label: ,\n valueName: 'Barely acceptable',\n },\n {\n valueFunc: (i: number) => i >= 60 && i < 70,\n value: 60,\n label: ,\n valueName: 'Satisfactory',\n },\n {\n valueFunc: (i: number) => i >= 70 && i < 80,\n value: 70,\n label: ,\n valueName: 'Good',\n },\n {\n valueFunc: (i: number) => i >= 80 && i < 90,\n value: 80,\n label: ,\n valueName: 'Excellent',\n },\n {\n valueFunc: (i: number) => i >= 90 && i < 100,\n value: 90,\n label: ,\n valueName: 'Exceptional',\n },\n {\n valueFunc: (i: number) => i == 100,\n value: 100,\n label: ,\n valueName: 'Perfect',\n },\n];\n\nconst PrettoSlider = withStyles({\n root: {\n height: 8,\n },\n thumb: {\n height: 24,\n width: 24,\n backgroundColor: '#fff',\n border: '2px solid currentColor',\n marginTop: -8,\n marginLeft: -12,\n '&:focus, &:hover, &$active': {\n boxShadow: 'inherit',\n },\n },\n markLabel: {\n marginTop: 10\n },\n active: {},\n valueLabel: {\n textAlign: 'center',\n width: 150,\n left: -55,\n top: -25,\n '& *': {\n background: 'transparent',\n color: '#000',\n width: 150,\n },\n },\n track: {\n height: 8,\n borderRadius: 4,\n },\n rail: {\n height: 8,\n borderRadius: 4,\n },\n})(Slider);\n\ninterface SolutionResultViewGradeDialogProps {\n objectId: string;\n onClose(): void;\n}\nexport const SolutionResultViewGradeDialog = (props: SolutionResultViewGradeDialogProps) => {\n const { objectId, onClose } = props;\n const [result, setResult] = React.useState();\n const [points, setPoints] = React.useState(0);\n const [comment, setComment] = React.useState(\"\");\n\n React.useEffect(() => {\n (async () => {\n const response = await CodeCritic.api.resultGetDetail(objectId);\n const result = response.data.data;\n setPoints(result.points);\n setComment(result.gradeComment);\n setResult(result);\n })();\n }, [ ]);\n\n if (!result) {\n return <>\n }\n\n const authors = result.userOrGroupUsers.join(\", \");\n const isLate = result.submissionStatus == SubmissionStatus.Late;\n\n const getMarkName = (value: number) => {\n const mark = marks.find(i => i.valueFunc(value));\n return `${mark!.valueName} (${value})`;\n }\n\n const saveGrade = async () => {\n const grade:IMarkSolutionItem = { comment, points, objectId }\n try {\n const data = await CodeCritic.api.saveGradeCreate(grade);\n notifications.success(`Saved! ${data.data.count} notification(s) sent`);\n onClose();\n } catch (error) {\n notifications.error(`Error while saving: ${error}`);\n }\n }\n\n return (\n \n Grade solution #{result.attempt} from {authors}\n {isLate && Solution was handed over after the soft deadline}\n \n \n
\n setPoints(i as number)}\n value={points}\n step={1}\n min={0}\n max={100}\n valueLabelFormat={getMarkName}\n valueLabelDisplay=\"on\" />\n\n setComment(e.target.value)}\n />\n
\n
\n \n \n \n \n
)\n}","import React, { useEffect, useState } from 'react';\n\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport InsertDriveFileIcon from '@material-ui/icons/InsertDriveFile';\nimport RateReviewIcon from '@material-ui/icons/RateReview';\nimport { TreeItem, TreeView } from '@material-ui/lab';\n\nimport { ICcData, ISimpleFile } from '../../cc-api';\nimport { useUser } from '../../hooks/useUser';\nimport { normalizePath } from '../../utils/utils';\n\ninterface SolutionResultViewTreeViewRootProps {\n result: ICcData;\n\n onChange(item: ISimpleFile): void;\n}\n\n\nexport const SolutionResultViewTreeViewRoot = (props: SolutionResultViewTreeViewRootProps) => {\n const { result, onChange } = props;\n const { isRoot } = useUser();\n const [selected, setSelected] = useState(result.solutions[0]?.filename ?? \"\");\n\n const solutionSimpleFiles: ISimpleFile[] = result.solutions\n .filter(i => isRoot || !i.hidden)\n .map(i => {\n return {\n filename: i.filename,\n isDir: false,\n files: [],\n content: i.content,\n relPath: `/${i.filename}`,\n rawPath: null,\n }\n });\n\n const allFiles = [\n ...solutionSimpleFiles,\n ...result.files\n ];\n\n const findFile = (files: ISimpleFile[], relPath: string) => {\n for (const f of files) {\n if (f.relPath == relPath) {\n return f;\n } else {\n const ff = findFile(f.files, relPath);\n if (ff) {\n return ff;\n }\n }\n }\n return undefined;\n }\n\n const handleSelect = (_event: React.ChangeEvent<{}>, nodeId: string) => {\n setSelected(nodeId);\n const file = findFile(allFiles, nodeId);\n\n if (file && !file.isDir) {\n onChange(file);\n }\n };\n\n const nodeIds = [\n ...allFiles.map(i => i.relPath),\n ...allFiles.flatMap(i => i.files).map(i => i.relPath),\n ...allFiles.flatMap(i => i.files).flatMap(i => i.files).map(i => i.relPath),\n ];\n\n return (\n {allFiles.length > 0 && }\n )\n}\n\n\ninterface SolutionResultViewTreeViewProps {\n files: ISimpleFile[];\n result: ICcData;\n}\n\nconst SolutionResultViewTreeView = React.forwardRef((props: SolutionResultViewTreeViewProps, _ref) => {\n const { files, result } = props;\n\n return <>\n {files.map((i, _j) => {\n const hasComment = result.comments\n ?.find(k => normalizePath(k.filename) === normalizePath(i.relPath))\n != null;\n\n const expandCls = i.isDir\n ? \n : ;\n\n const collapseCls = i.isDir\n ? \n : ;\n\n return \n {hasComment && {i.filename} }\n {!hasComment && <>{i.filename}}\n }>\n {i.files.length > 0 && }\n \n })}\n \n});","import React, { useEffect, useState } from 'react';\nimport { useParams } from 'react-router';\nimport { Link as RouterLink } from 'react-router-dom';\n\nimport { Button, Container, Typography } from '@material-ui/core';\nimport AdjustIcon from '@material-ui/icons/Adjust';\nimport AssessmentIcon from '@material-ui/icons/Assessment';\nimport CancelIcon from '@material-ui/icons/Cancel';\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\nimport DescriptionIcon from '@material-ui/icons/Description';\nimport GradeIcon from '@material-ui/icons/Grade';\nimport PersonIcon from '@material-ui/icons/Person';\nimport SecurityIcon from '@material-ui/icons/Security';\nimport SendIcon from '@material-ui/icons/Send';\nimport TimelineIcon from '@material-ui/icons/Timeline';\nimport TimerIcon from '@material-ui/icons/Timer';\nimport TodayIcon from '@material-ui/icons/Today';\n\nimport { CodeCritic } from '../../api';\nimport { IApiError, ICcData, ICourseProblem, IMarkSolutionItem, ISimpleFile } from '../../cc-api';\nimport { SimpleLoader } from '../../components/SimpleLoader';\nimport { useComments } from '../../hooks/useComments';\nimport { useRefresh } from '../../hooks/useRefresh';\nimport { useUser } from '../../hooks/useUser';\nimport { ProblemStatus } from '../../models/Enums';\nimport { AbsMoment } from '../../renderers/AbsMoment';\nimport { CourseYearProblemHeader } from '../../renderers/CourseYearProblemHeader';\nimport { IconClass } from '../../renderers/IconClass';\nimport { LightTooltip } from '../../renderers/LightTooltip';\nimport { renderError } from '../../renderers/renderErrors';\nimport { TimelineRenderer } from '../../renderers/TimelineRenderer';\nimport { SourceCodeReview } from '../../text/SourceCodeReview';\nimport { nop } from '../../utils/nop';\nimport { notifications } from '../../utils/notifications';\nimport { getStatus } from '../../utils/StatusUtils';\nimport { humanizeName } from '../../utils/utils';\nimport { PreviousResults } from '../previousResults/PreviousResults';\nimport { SolutionResultViewGradeDialog } from './SolutionResultView.GradeDialog';\nimport { SolutionResultViewTreeViewRoot } from './SolutionResultView.TreeView';\n\ninterface IParamsObjectId {\n objectId?: string;\n}\n\nconst extractSingleSimpleFile = (result: ICcData) => {\n if (result.solutions?.length >= 0) {\n const f = result.solutions.filter(i => i.isMain)[0];\n\n if (f == undefined) {\n return undefined;\n }\n \n return {\n filename: f.filename ?? \"empty\",\n content: f.content ?? \"\",\n isDir: false,\n files: [],\n relPath: `/${f.filename ?? \"empty\"}`,\n rawPath: null,\n } as ISimpleFile;\n }\n return undefined;\n}\n\nconst IncongnitoIcon = (props) => {\n return \n \n \n}\n\ninterface SolutionResultViewProps extends IParamsObjectId {\n onChange?: () => void;\n onClose?: () => void;\n nextPage?: () => void;\n prevPage?: () => void;\n}\n\nexport const SolutionResultView = (props: SolutionResultViewProps) => {\n const { onChange = nop, onClose = nop, nextPage = nop, prevPage = nop } = props;\n const params = useParams();\n \n const { user, isRoot } = useUser();\n const [ result, setResult ] = useState();\n const [ selectedResultId, setSelectedResultId ] = useState();\n\n const { counter, refresh } = useRefresh();\n const [ error, setError ] = useState();\n const [ selectedFile, setSelectedFile ] = useState();\n const [ gradeDialog, setGradeDialog ] = useState(false);\n const { comments, postCommentsAsync } = useComments();\n const [ problemRef, setProblemRef ] = useState();\n\n const objectId = selectedResultId ?? props.objectId ?? params.objectId;\n \n\n useEffect(() => {\n (async () => {\n if (objectId) {\n try {\n const response = await CodeCritic.api.resultGetDetail(objectId);\n const result = response.data.data;\n\n setResult(result);\n setSelectedFile(extractSingleSimpleFile(result));\n setError(undefined);\n setSelectedResultId(result.objectId);\n } catch (error) {\n setError({\n name: \"Not found\",\n errors: [ \"Solution was not found\" ]\n });\n }\n }\n })();\n }, [ user.id, counter, objectId ]);\n\n useEffect(() => {\n (async () => {\n if (isRoot && result) {\n const axiosResponse = await CodeCritic.api.courseListList();\n const courses = axiosResponse.data.data;\n const problemRef = courses\n .find(i => i.course === result.courseName && i.year === result.courseYear)?.problems\n .find(i => i.id === result.problem);\n setProblemRef(problemRef);\n }\n })()\n }, [ result?.objectId ]);\n\n useEffect(() => {\n setSelectedResultId(undefined);\n }, [ params?.objectId, props.objectId ]);\n \n const handleFileChange = async (file: ISimpleFile) => {\n if (file.content === null) {\n file.content = \n setSelectedFile(file);\n\n const response = await CodeCritic.api.fileGetDetail(objectId, file.relPath);\n console.log(response);\n const { content } = response.data as any;\n file.content = content ?? \"\";\n setSelectedFile({ ...file });\n } else {\n setSelectedFile(file);\n }\n }\n\n if (error) {\n return renderError(error, 0, false);\n }\n\n if (!result) {\n return \n }\n\n const { courseName, courseYear, problem, reviewRequest, points, result: mainResult } = result;\n const { userOrGroupUsers, groupName, user: username } = result;\n const { status, message, messages } = mainResult;\n const mainStatus = getStatus(status);\n const Icon = IconClass(result);\n const canEditResult = (result.userOrGroupUsers.includes(user.id) && result.points <= 0) || isRoot;\n const statusName = `status-${mainStatus.name}`;\n const extraCls = onClose == undefined\n ? \"solution-result-view full-page\"\n : \"solution-result-view dialog-page\";\n\n const requestCR = async () => {\n await CodeCritic.api.reviewrequestDetail(result.objectId);\n refresh();\n onChange();\n }\n\n const cancelCR = async () => {\n await CodeCritic.api.reviewrequestDelete(result.objectId);\n refresh();\n onChange();\n }\n\n const postCommentsAndRefresh = async () => {\n await postCommentsAsync();\n refresh();\n onChange();\n }\n\n const showGradeDialog = () => {\n setGradeDialog(true);\n }\n\n const hideGradeDialog = async () => {\n setGradeDialog(false);\n refresh();\n onChange();\n }\n\n const saveGrade = async (points: number) => {\n const grade:IMarkSolutionItem = { comment: \"\", points, objectId }\n try {\n const data = await CodeCritic.api.saveGradeCreate(grade);\n notifications.success(`Saved! ${data.data.count} notification(s) sent`);\n refresh();\n onChange();\n return true;\n } catch (error) {\n notifications.error(`Error while saving: ${error}`);\n return false;\n }\n }\n\n // const saveGradeAndNext = async (points: number) => {\n // const success = await saveGrade(points);\n // if (success) {\n // nextPage();\n // }\n // }\n\n const prettifyConsoleMessages = (messages: string[]) => {\n const prettifiers = [\n { regex: new RegExp(/\\{.*Error using main \\(line \\d+\\)\\n(.*)\\n\\}.*/, \"gm\"), replacement: \"$1\" },\n { regex: new RegExp(/\\{.*Error using check\\/finalize \\(line \\d+\\)\\n(Some of the tests failed!)\\n(.*)\\n(.*)\\n(.*)\\n\\}.*/, \"gm\"),\n replacement: \"Some of the tests failed! See output for more details.\" },\n ]\n let text = (messages ?? []).join(\"\\n\")\n prettifiers.forEach(i => {\n text = text.replaceAll(i.regex, i.replacement);\n });\n\n return text.trimEnd().split(\"\\n\");\n }\n\n return (<>\n \n
\n
\n
\n \n \n \n \n #{result.attempt}\n \n {isRoot && <>\n \n \n view grades \n \n }\n \n\n
\n
Author(s)
\n
\n {groupName && <>{groupName} ({userOrGroupUsers.map(humanizeName).join(\", \")})}\n {!groupName && <>{humanizeName(username)} {isRoot && <> ({username})}}\n
\n
\n \n
\n
Submitted
\n
\n \n
\n
\n\n
\n
Duration
\n
\n {mainResult?.duration?.toFixed(3) ?? \"??\"} sec\n
\n
\n\n
\n
Review Request
\n
\n {reviewRequest != null && <>\n Requested  \n\n {canEditResult &&\n }\n {!canEditResult &&\n }\n }\n {reviewRequest == null && <>\n Not requested\n {canEditResult &&\n }\n {!canEditResult &&\n }\n }\n
\n
\n\n {reviewRequest != null && result.gradeComment?.length > 0 &&\n
\n
Comment from Teacher
\n
\n {result.gradeComment}\n
\n
}\n\n {isRoot != null && problemRef != null &&\n
\n
Problem timeline
\n
\n \n\n Actived: }>\n \n \n\n \n\n Soft deadline: }>\n \n \n\n \n\n Hard deadline: }>\n \n \n\n \n
\n
}\n\n {isRoot && selectedResultId != null &&\n
\n
Previous results
\n
\n \n
\n
}\n \n
\n
\n {reviewRequest &&
\n \n
\n {[50, 75, 90, 100].map((i, j) =>\n \n )}\n
\n
}\n
\n
\n \n  \n <>{message ?? mainStatus.description} ({mainStatus.name})\n \n
\n {messages?.length > 0 &&
    \n {prettifyConsoleMessages(messages).map((i, j) =>
  1. \n
    {i}
    \n
  2. )}\n
}\n
\n
\n
\n {result.results?.length > 1 &&
\n \n  Subresults\n \n
\n \n
\n
}\n
\n
\n \n
\n
\n {comments.length > 0 && }\n {selectedFile && <>\n \n  {selectedFile.filename}\n \n \n }\n
\n
\n \n {comments.length > 0 && }\n {onClose && }\n
\n
\n
\n
\n {gradeDialog && }\n )\n}\n","import { Button, Dialog, DialogContent, DialogTitle, IconButton, Tooltip, Typography } from '@material-ui/core';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport BugReportIcon from '@material-ui/icons/BugReport';\r\nimport GitHubIcon from '@material-ui/icons/GitHub';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { useUser } from '../hooks/useUser';\r\nimport { openCloseState } from '../utils/StateUtils';\r\n\r\n\r\nexport const Grow = (props: any) => {\r\n return  \r\n}\r\n\r\nexport const Tiny = (props: any) => {\r\n return
\r\n}\r\nconst SlackIcon = () => {\r\n return <>\r\n \r\n \r\n \r\n \r\n}\r\nexport const CcFooter = () => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [openDialog, closeDialog] = openCloseState(setIsOpen);\r\n const { isRoot } = useUser();\r\n\r\n return \r\n \r\n \r\n Report a bug }>\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n <>Report a bug \r\n \r\n \r\n \r\n \r\n
    \r\n
  • \r\n

    Join our \r\n \r\n and report a bug or suggest some cool ideas.\r\n

    \r\n
  • \r\n
  • \r\n

    Create an issue in our\r\n \r\n

    \r\n
  • \r\n
\r\n

\r\n Please, be as specific as possible when describing a problem. If possible include a screenshot.\r\n

\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n}","import React from \"react\";\n\nexport const openCloseState = (setter: React.Dispatch>) => {\n return [\n () => setter(true),\n () => setter(false),\n ]\n}","import { Breadcrumbs, Link, Typography } from \"@material-ui/core\";\nimport ExtensionIcon from '@material-ui/icons/Extension';\nimport HomeIcon from '@material-ui/icons/Home';\nimport NavigateNextIcon from '@material-ui/icons/NavigateNext';\nimport SchoolIcon from '@material-ui/icons/School';\nimport React from \"react\";\nimport { Link as RouterLink } from \"react-router-dom\";\nimport { ICourseProblem, ISingleCourse } from \"../cc-api\";\n\n\ninterface RenderBreadcrumbsProps {\n baseUrl: string;\n home?: JSX.Element;\n\n activeCourse?: ISingleCourse;\n activeProblem?: ICourseProblem;\n customRenderer?: React.ComponentType;\n}\n\nexport const RenderBreadcrumbs = (props: RenderBreadcrumbsProps) => {\n const { activeCourse, activeProblem, baseUrl, home, customRenderer } = props;\n const CustomRenderer = customRenderer as any;\n\n const breadcrumbComponents = [{\n to: `${baseUrl}`,\n title: home ?? <> Courses\n }];\n if (activeCourse) {\n breadcrumbComponents.push({\n to: `${baseUrl}/${activeCourse.course}/${activeCourse.year}`,\n title: <> {`${activeCourse.course}-${activeCourse.year}`}\n });\n }\n\n if (activeCourse && activeProblem) {\n breadcrumbComponents.push({\n to: `${baseUrl}/${activeCourse.course}/${activeCourse.year}/${activeProblem.id}`,\n title: <> {`${activeProblem.name}`}\n });\n }\n\n const last = breadcrumbComponents.length - 1;\n return } className=\"breadcrumb\">\n {breadcrumbComponents.map((i, j) => {\n if (j == last) {\n return {i.title}\n }\n return {i.title}\n })}\n {CustomRenderer && }\n \n}","import ErrorOutlineIcon from '@material-ui/icons/ErrorOutline';\r\nimport PanToolIcon from '@material-ui/icons/PanTool';\r\nimport ThumbUpAltIcon from '@material-ui/icons/ThumbUpAlt';\r\nimport TimerIcon from '@material-ui/icons/Timer';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport React from \"react\";\r\nimport Moment from \"react-moment\";\r\nimport { ICourseProblem } from \"../cc-api\";\r\nimport { ProblemStatus } from \"../models/Enums\";\r\n\r\ninterface StatusMessageProps {\r\n problem: ICourseProblem;\r\n}\r\n\r\nexport const AlertStatusMessage = (props: StatusMessageProps) => {\r\n const { problem } = props;\r\n const { statusCode } = problem as any;\r\n\r\n if (statusCode == ProblemStatus.BeforeStart) {\r\n return }>\r\n  Submission is not yet open.\r\n It will be \r\n \r\n }\r\n if (statusCode == ProblemStatus.Active) {\r\n return }>\r\n Submission is open.\r\n It'll be closed .\r\n \r\n }\r\n\r\n if (statusCode == ProblemStatus.ActiveLate) {\r\n return }>\r\n Submission is open but it's after the deadline\r\n \r\n }\r\n\r\n if (statusCode == ProblemStatus.AfterDeadline) {\r\n return }>\r\n  Submission is closed\r\n \r\n }\r\n\r\n return <>\r\n \r\n}\r\n\r\nexport const StatusMessage = (props: StatusMessageProps) => {\r\n const { problem } = props;\r\n const { statusCode } = problem as any;\r\n\r\n if (statusCode == ProblemStatus.BeforeStart) {\r\n return \r\n \r\n  Submission is not yet open.\r\n It will be \r\n \r\n }\r\n if (statusCode == ProblemStatus.Active) {\r\n return \r\n \r\n  Submission is open.\r\n It'll be closed .\r\n \r\n }\r\n\r\n if (statusCode == ProblemStatus.ActiveLate) {\r\n return \r\n \r\n  Submission is open but it's after the deadline\r\n \r\n }\r\n\r\n if (statusCode == ProblemStatus.AfterDeadline) {\r\n return \r\n  Submission is closed\r\n \r\n }\r\n\r\n return <>\r\n \r\n}","\nexport const colorPallete = [\n '#3498db',\n '#2980b9',\n '#8e44ad',\n '#9b59b6',\n '#e74c3c',\n '#c0392b',\n '#ba4a00',\n '#ca6f1e',\n '#d68910',\n '#d4ac0d',\n '#229954',\n '#148f77',\n '#cddc39',\n '#8bc34a',\n '#0288d1',\n '#2196f3',\n '#e91e63',\n '#f44336',\n '#00CC00',\n '#66CC33',\n '#663300',\n '#CC3333',\n '#CC9900',\n '#CCFF33',\n '#99FFCC',\n '#999999',\n '#FF99FF',\n '#CCFFFF',\n '#00CC00',\n '#FF9933',\n '#CC3366',\n '#990000',\n '#00FF33',\n '#006666',\n '#330099',\n '#4a148c',\n '#004d40',\n '#546e7a',\n '#424242',\n '#1b5e20',\n '#ff6f00',\n];\n\nconst hashValue = (value: any) => {\n const str = new String(value);\n let hash = 0;\n for (var i = 0; i < str.length; i++) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\n hash = hash & hash;\n }\n return Math.abs(hash);\n}\n\nexport const randomColor = (value: any) => {\n const hash = hashValue(value);\n return colorPallete[hash % colorPallete.length];\n}\n\ntype propType = 'color' | 'backgroundColor';\nexport const randomColorCss = (value: any, prop: propType =\"backgroundColor\") => {\n let result = {};\n result[prop] = randomColor(value);\n return result;\n}","import { Button, Card, Grid, Typography } from \"@material-ui/core\";\nimport React, { useState } from \"react\";\nimport { Link as RouterLink } from \"react-router-dom\";\nimport { ICourseProblem, ISingleCourse } from \"../cc-api\";\nimport { StatusMessage } from \"../renderers/StatusMessageRenderer\";\nimport { groupBy } from \"../utils/arrayUtils\";\nimport { randomColorCss } from \"../utils/randomcolor\";\n\n\n\n\nexport interface PickerCourseBigTileProps {\n section: string;\n items: ISingleCourse[];\n defaultVisible: boolean;\n baseUrl: string;\n}\n\n\nexport const PickerCourseBigTile = (props: PickerCourseBigTileProps) => {\n const { items, section, defaultVisible, baseUrl } = props;\n const [isVisible, setIsVisible] = useState(defaultVisible);\n\n const toggleVisibility = () => {\n setIsVisible(!isVisible);\n }\n\n return (
\n \n {isVisible && \n {items.map((i, j) => {\n const fullname = `${baseUrl}/${i.course}/${i.year}`;\n return (\n \n
\n \n \n )\n })}\n }\n
)\n}\n\ninterface PickerProblemBigTileProps {\n items: ICourseProblem[];\n baseUrl: string;\n}\n\nexport const PickerProblemBigTile = (props: PickerProblemBigTileProps) => {\n const { items, baseUrl } = props;\n\n\n const renderItems = (items: ICourseProblem[], section: string) => {\n return (<>\n {section && }\n \n {items.map((i, j) => {\n const fullname = `${baseUrl}/${i.course}/${i.year}/${i.id}`;\n return (\n \n
\n \n \n \n \n \n )\n })}\n \n );\n }\n\n const tryGetSection = (n: string) => {\n const vals = n.split(\"_\");\n return vals.slice(0, vals.length - 1).join(\" \");\n }\n const byCat = groupBy(items, i => i.section ?? tryGetSection(i.id));\n const hasSection = byCat.size > 1;\n const sortedItems = [...byCat.entries()].sort((a, b) => hasSection ? b[0].localeCompare(a[0]) : a[0].localeCompare(b[0]))\n\n\n return (
\n
\n {sortedItems.map((i, j) => {\n return {renderItems(i[1], i[0] || (hasSection ? \"...\" : \"\"))}\n })}\n
\n
\n );\n}","import React, { useEffect, useState } from 'react';\nimport { useParams } from 'react-router';\nimport { Link } from 'react-router-dom';\n\nimport { Button } from '@material-ui/core';\n\nimport { CodeCritic } from '../api';\nimport {\n ICourseProblem, ICourseProblemApiListResponse, ISingleCourse, ISingleCourseApiListResponse,\n} from '../cc-api';\nimport { SimpleLoader } from '../components/SimpleLoader';\nimport { useUser } from '../hooks/useUser';\nimport { RenderBreadcrumbs } from '../renderers/BreadcrumbsRenderer';\nimport { renderErrorForAdmin } from '../renderers/renderErrors';\nimport { groupBy } from '../utils/arrayUtils';\nimport { PickerCourseBigTile, PickerProblemBigTile } from './ProblemPicker.BigTile';\n\nexport interface ProblemPickerExportProps {\n course: ISingleCourse;\n problem: ICourseProblem;\n}\n\ninterface ProblemPickerProps {\n baseUrl: string;\n\n component?: React.ComponentType;\n home?: JSX.Element;\n tileStyle?: 'small' | 'big';\n displayAlways?: boolean;\n withBreadcrumbs?: boolean | React.ComponentType;\n whereUserIsTeacher?: boolean;\n}\n\nexport const ProblemPicker = (props: ProblemPickerProps) => {\n const { baseUrl, tileStyle = 'small', displayAlways = false, withBreadcrumbs = false, home, whereUserIsTeacher = false } = props;\n const [coursesResponse, setCoursesResponse] = useState();\n const [courseResponse, setCourseResponse] = useState();\n const [courseProblem, setCourseProblem] = useState();\n const [isLoading, setIsLoading] = useState(false);\n const { user } = useUser();\n\n const { course, year, problem } = useParams();\n \n const Component = props.component as any;\n\n useEffect(() => {\n (async () => {\n\n if (!coursesResponse) {\n setIsLoading(true);\n const axiosResponse = await CodeCritic.api.courseListList();\n setIsLoading(false);\n setCoursesResponse(axiosResponse.data);\n }\n\n if (course && year) {\n let tmpCourseResponse = courseResponse;\n\n if (!courseResponse) {\n setIsLoading(true);\n const axiosResponse = await CodeCritic.api.courseProblemListDetail(course, year);\n setIsLoading(false);\n tmpCourseResponse = axiosResponse.data;\n setCourseResponse(axiosResponse.data);\n }\n\n if (problem) {\n if (!courseProblem && tmpCourseResponse) {\n setCourseProblem(tmpCourseResponse.data.find(i => i.id == problem));\n }\n } else {\n setCourseProblem(undefined);\n }\n } else {\n setCourseResponse(undefined);\n }\n\n })();\n }, [course, year, problem]);\n\n const userIsTeacher = (course: ISingleCourse) => {\n return course.settingsConfig.teachers.length == 0\n || course.settingsConfig.teachers.some(j => j.id === user.id);\n }\n\n\n const drawResponse = () => {\n if (!coursesResponse || isLoading) {\n return \n }\n\n if (!courseResponse) {\n if (tileStyle === \"small\") {\n return (<>\n
\n {coursesResponse.errors.map(renderErrorForAdmin)}\n {coursesResponse.data\n .filter(i => !whereUserIsTeacher || userIsTeacher(i))\n .map((i, j) => {\n const currentYear = i.year === new Date().getFullYear().toString()\n ? \"picker-current\" : \"picker-old\";\n return \n })}\n
\n )\n } else {\n const byYear = groupBy(coursesResponse.data, i => i.year);\n return (<>\n
\n {coursesResponse.errors.map(renderErrorForAdmin)}\n {[...byYear.entries()].map(([year, courses], i) => {\n return \n })}\n
\n )\n }\n }\n\n if (!courseProblem && courseResponse) {\n if (tileStyle === \"small\") {\n return (
\n
\n {courseResponse.errors.map(renderErrorForAdmin)}\n {courseResponse.data\n .map((i, j) => )}\n
\n
)\n } else {\n return
\n \n
\n }\n }\n }\n\n const activeCourse = coursesResponse?.data.find(i => i.course === course && i.year === year);\n const activeProblem = courseProblem;\n const componentVisible = !!Component && (displayAlways || !!activeCourse && !!activeProblem);\n\n return <>\n {withBreadcrumbs && \n <>\n {typeof (withBreadcrumbs) === 'function'\n ? \n : \n }\n \n }\n {drawResponse()}\n {componentVisible && }\n \n}","// https://devicon.dev/\r\n\r\nexport const cssVar = (key: string, value: any) => {\r\n const k = {} as any;\r\n k[`--${key}`] = value;\r\n return k as any;\r\n};\r\n","import { Button, Checkbox, FormControlLabel } from '@material-ui/core';\r\nimport React, { useContext, useEffect, useState } from 'react';\r\nimport { CodeCritic } from '../api';\r\nimport { ICcDataDto, ICourseGradeStudentDto } from '../cc-api';\r\nimport { SimpleLoader } from '../components/SimpleLoader';\r\nimport { useRefresh } from '../hooks/useRefresh';\r\nimport { useUser } from '../hooks/useUser';\r\nimport { groupBy } from '../utils/arrayUtils';\r\nimport { cssVar } from '../utils/cssVar';\r\nimport { FilterContext, IGradeStatFilterContext } from './GradeResults';\r\nimport { ProblemPickerExportProps } from \"./ProblemPicker\";\r\n\r\n\r\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\r\nimport KeyboardArrowUpIcon from '@material-ui/icons/KeyboardArrowUp';\r\nimport { humanizeName } from '../utils/utils';\r\n\r\ntype Order = 'asc' | 'desc';\r\n\r\nconst applyOrderBy = (data: ICourseGradeStudentDto[], orderBy: string, order: Order) => {\r\n const applyOrderByOnly = (data: ICourseGradeStudentDto[], orderBy: string) => {\r\n switch (orderBy) {\r\n case 'name':\r\n return data.sort((a, b) => a.user!.localeCompare(b.user!))\r\n case 'points':\r\n return data.sort((a, b) => a.totalPoints - b.totalPoints)\r\n default:\r\n const problemId = orderBy;\r\n return data.sort((a, b) => {\r\n const aPoints = a.problems.find(p => p.problemId === problemId).points ?? 0;\r\n const bPoints = b.problems.find(p => p.problemId === problemId)!.points ?? 0;\r\n return aPoints - bPoints;\r\n });\r\n }\r\n }\r\n\r\n // reverse if desc\r\n return order === 'desc'\r\n ? applyOrderByOnly(data, orderBy).reverse()\r\n : applyOrderByOnly(data, orderBy);\r\n};\r\n\r\nconst applyTagsFilter = (data: ICourseGradeStudentDto[], tags: string[]) => {\r\n if (tags.length === 0) {\r\n return data;\r\n }\r\n\r\n return data.filter(d => {\r\n const intersection = d.tags!.filter(t => tags.includes(t));\r\n return intersection.length > 0;\r\n });\r\n}\r\n\r\nexport interface GradeResultsCourseImplProps extends ProblemPickerExportProps { }\r\nexport const GradeResultsCourseImpl = (props: GradeResultsCourseImplProps) => {\r\n const { course } = props;\r\n\r\n // order by state\r\n const [orderBy, setOrderBy] = useState('name');\r\n const [order, setOrder] = useState('asc');\r\n\r\n // tags state\r\n const [tags, setTags] = useState([]);\r\n\r\n const [data, setData] = useState();\r\n const { context } = useContext(FilterContext) as IGradeStatFilterContext;\r\n const { isRoot } = useUser();\r\n const { counter, refresh } = useRefresh();\r\n\r\n const updateOrderAndOrderBy = (newOrderBy: string) => {\r\n if (orderBy === newOrderBy) {\r\n setOrder(order === 'asc' ? 'desc' : 'asc');\r\n } else {\r\n setOrderBy(newOrderBy);\r\n setOrder(newOrderBy == 'name' ? 'asc' : 'desc');\r\n }\r\n };\r\n\r\n\r\n useEffect(() => {\r\n (async () => {\r\n const axiosResponse = await CodeCritic.api.gradeStatsCourseCreate(course.course, course.year, context);\r\n const data = axiosResponse.data;\r\n setData(data);\r\n })();\r\n }, [counter, context.showMissingGradeOnly]);\r\n\r\n\r\n\r\n if (data == null) {\r\n return ;\r\n }\r\n const problems = data?.[0].problems ?? [];\r\n const sortedData = applyOrderBy(\r\n applyTagsFilter(data, tags),\r\n orderBy,\r\n order\r\n );\r\n\r\n const renderSortIcon = (name: string) => {\r\n if (orderBy === name) {\r\n return order === 'asc' ? : ;\r\n }\r\n return <>;\r\n }\r\n\r\n\r\n const renderHeader = () => {\r\n return <>\r\n\r\n \r\n \r\n\r\n {problems.map(i => \r\n )}\r\n \r\n }\r\n\r\n const renderTags = () => {\r\n const allTags = [...new Set(data.map(i => i.tags).flat())].sort();\r\n return <>{allTags.map(i => {\r\n setTags(e.target.checked ? [...tags, i] : tags.filter(t => t !== i));\r\n }}\r\n />\r\n }\r\n label={i}\r\n key={i}\r\n className=\"tag\" />)}\r\n }\r\n\r\n const renderRows = () => {\r\n return <>\r\n {sortedData.map(i => <>\r\n
{humanizeName(i.user)}
\r\n
{i.totalPoints} / {i.averagePercentage.toFixed(0)} / {i.averagePercentageSolved.toFixed(0)}
\r\n\r\n {i.problems.map(j =>\r\n
{j.points}
)}\r\n )}\r\n \r\n }\r\n\r\n\r\n const totalCols = problems.length + 1 + 1;\r\n\r\n return
\r\n {renderTags()}\r\n
\r\n {renderHeader()}\r\n {renderRows()}\r\n
\r\n
\r\n\r\n // const allResults =\r\n // data.filter((i, index, self) => index === self.findIndex(j => j.objectId === i.objectId));\r\n\r\n // const problems = [...groupBy(allResults, i => i.problem).entries()];\r\n // const students = applyOrderBy(\r\n // [...groupBy(allResults, i => i.users[0]).entries()],\r\n // orderBy,\r\n // order\r\n // );\r\n\r\n // const totalCols = problems.length + 1 + 1;\r\n\r\n // // // get all results from user 'jakub.kindermann' and deselect duplicates\r\n // // const foo = data\r\n // // .filter(i => i.users[0] === 'jakub.kindermann')\r\n // // .filter((i, index, self) => index === self.findIndex(j => j.problem === i.problem))\r\n\r\n // // const sum = foo.reduce((p, c) => p + c.points ?? 0, 0);\r\n // // const bar = foo.map(i => { return { problem: i.problem, points: i.points}});\r\n\r\n\r\n // return
\r\n // {/*
\r\n // aa\r\n //
*/}\r\n // {/* top row */}\r\n //
updateOrderAndOrderBy('name')}>Student
\r\n //
updateOrderAndOrderBy('points')}>Total
\r\n // {problems.map(([problem, results]) => {\r\n // return (
updateOrderAndOrderBy(problem)}>{problem}
);\r\n // })}\r\n\r\n\r\n\r\n // {/* results */}\r\n // {students.map(([student, results]) => {\r\n // const total = results.reduce((acc, cur) => acc + cur?.points ?? 0, 0);\r\n // const average = (total / (results.length * 100)) * 100;\r\n\r\n // return (<>\r\n //
{student}
\r\n //
{total} / {average.toFixed(2)}%
\r\n // <>\r\n // {problems.map(([problem, results]) => {\r\n // const result = results.find(i => i.users[0] === student);\r\n\r\n // return (
{result?.points}
);\r\n // })}\r\n // \r\n // )\r\n // })}\r\n //
\r\n}","import moment from 'moment';\nimport React from 'react';\nimport { nameof } from 'ts-simple-nameof';\n\nimport { Tooltip } from '@material-ui/core';\nimport {\n GridCellClassParams, GridCellParams, GridCellValue, GridColDef,\n} from '@material-ui/data-grid';\nimport AssessmentIcon from '@material-ui/icons/Assessment';\nimport CommentIcon from '@material-ui/icons/Comment';\nimport FingerprintIcon from '@material-ui/icons/Fingerprint';\nimport RateReviewIcon from '@material-ui/icons/RateReview';\nimport TimerIcon from '@material-ui/icons/Timer';\nimport TodayIcon from '@material-ui/icons/Today';\n\nimport { ICcDataDto } from '../../cc-api';\nimport { OptionType } from '../../models/CustomModel';\nimport { ProcessStatusStatic } from '../../models/Enums';\nimport { AbsMoment } from '../../renderers/AbsMoment';\nimport { languages } from '../../static/languages';\n\nconst XS = 80;\nconst SM = 100;\nconst MD = 140;\n\nexport interface GridColDefEx extends GridColDef {\n options?: OptionType[],\n strict?: boolean,\n isHiddenOnSmallScreen?: boolean,\n}\n\nconst convert = (options: string[]) => options.map(i => {\n return { name: i, value: i } as OptionType\n})\nconst OnlyYesNoAll = {\n strict: true,\n options: convert([\"yes\", \"no\", \"all\"])\n}\nconst InLateAll = {\n strict: true,\n options: convert([\"InTime\", \"Late\", \"all\"])\n}\nconst Languages = {\n strict: true,\n options: languages.map(i => {\n return { name: i.name, value: i.id }\n }) as OptionType[]\n}\nconst now = moment();\nconst DateRange = {\n strict: true,\n options: [\n { name: \"today\", value: moment(now).subtract(1, 'days').unix() },\n { name: \"3 days\", value: moment(now).subtract(3, 'days').unix() },\n { name: \"week\", value: moment(now).subtract(7, 'days').unix() },\n { name: \"2 weeks\", value: moment(now).subtract(14, 'days').unix() },\n { name: \"month\", value: moment(now).subtract(31, 'days').unix() },\n { name: \"3 months\", value: moment(now).subtract(93, 'days').unix() },\n ] as OptionType[]\n}\n\nconst Statuses = {\n strict: true,\n options: ProcessStatusStatic.All.map(i => {\n return { name: i.description, value: i.value }\n }) as OptionType[]\n}\n\nconst Attempts = {\n strict: true,\n options: [\n { name: \"(1) The best solution from each student\", value: \"1\" },\n { name: \"(3) Top 3 solutions from each student\", value: \"3\" },\n { name: \"(5) Top 5 solutions from each student\", value: \"5\" },\n ] as OptionType[]\n}\n\nexport const columns: GridColDefEx[] = [\n {\n field: nameof(i => i.attempt), headerName: '#', width: XS, ...Attempts,\n renderHeader: () => ,\n isHiddenOnSmallScreen: true,\n },\n {\n field: nameof(i => i.date), headerName: 'Date', width: MD,\n renderCell: (params: any) => ,\n renderHeader: () => <> Date,\n sortComparator: (_v1: GridCellValue, _v2: GridCellValue, cellParams1: GridCellParams, cellParams2: GridCellParams) =>\n new Date(cellParams2.row.date).getTime() - new Date(cellParams1.row.date).getTime(),\n ...DateRange\n },\n { field: nameof(i => i.isLate), headerName: 'is Late', width: SM, ...InLateAll },\n { field: nameof(i => i.users), headerName: 'User', width: MD, },\n {\n field: nameof(i => i.language), headerName: 'Lang', width: SM,\n isHiddenOnSmallScreen: true,\n ...Languages\n },\n {\n field: nameof(i => i.course), headerName: 'Course', width: SM,\n isHiddenOnSmallScreen: true\n },\n {\n field: nameof(i => i.year), headerName: 'Year', width: SM,\n isHiddenOnSmallScreen: true\n },\n {\n field: nameof(i => i.problem), headerName: 'Problem', width: MD,\n isHiddenOnSmallScreen: true\n },\n {\n field: nameof(i => i.reviewRequest), headerName: 'RR', width: MD, ...OnlyYesNoAll,\n renderCell: (params: any) => ,\n renderHeader: () => <> Review,\n },\n {\n field: nameof(i => i.comments), headerName: 'Comments', width: XS, ...OnlyYesNoAll,\n renderHeader: () => ,\n },\n { field: nameof(i => i.score), headerName: 'Score', width: SM },\n {\n field: nameof(i => i.points), headerName: 'Points', width: XS,\n renderHeader: () => ,\n },\n { field: nameof(i => i.status), headerName: 'Status', width: SM, ...Statuses },\n { field: nameof(i => i.group), headerName: 'Group', width: SM },\n {\n field: nameof(i => i.duration), headerName: 'Duration', width: SM,\n renderCell: (i: any) => i.row.duration?.toFixed(3),\n renderHeader: () => ,\n },\n].map(i => {\n return {\n ...i,\n disableColumnMenu: true,\n filterable: false,\n cellClassName: (params: GridCellClassParams) => {\n var status = ProcessStatusStatic.All.find(i => i.letter == params.row.status);\n return `status-${status.name}`;\n },\n } as GridColDefEx\n});","import * as React from 'react';\n\nexport const onEnter = (onEnterFunction:() => void) => {\n const handleKeyPress = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\") {\n onEnterFunction();\n }\n }\n return handleKeyPress;\n}","import ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport React, { useState } from 'react';\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n FormControlLabel,\n TextField\n} from '@material-ui/core';\nimport { DropDownMenu } from '../../components/DropDownMenu';\nimport { FilterModel, GridColParams, GridFilterItem } from '@material-ui/data-grid';\nimport { GridColDefEx } from './TableResults.columns';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport { onEnter } from '../../utils/onEnter';\n\n\ninterface KV {\n value: any;\n human: any;\n}\ninterface TableResultsFiltersProps {\n columns: GridColDefEx[];\n filterModel: FilterModel;\n onClose(): void;\n onChange(model: FilterModel): void;\n}\n\nconst fromModel = (model: FilterModel) => {\n const map = new Map();\n model.items.forEach(i => {\n map.set(i.columnField, { value: i.value, human: (i as any).human });\n });\n return map;\n}\n\nconst toModel = (map: Map) => {\n const model: FilterModel = {\n items:\n [...map.entries()].map(i => {\n return {\n columnField: i[0],\n value: i[1].value,\n human: i[1].human,\n } as any;\n }).filter(i => i.value !== \"\" && i.value !== \"all\")\n };\n return model;\n}\n\nexport const TableResultsFilters = (props: TableResultsFiltersProps) => {\n const { columns, filterModel, onClose, onChange } = props;\n const [filters, setFilters] = useState>(fromModel(filterModel ?? { items: [] }));\n\n const finishDialog = () => {\n onChange(toModel(filters));\n onClose();\n }\n\n const editFilter = (field: string, value: any, human?: string) => {\n filters.set(field, { value, human });\n setFilters(new Map(filters.entries()));\n }\n\n const removeFilter = (field: string) => {\n editFilter(field, \"\");\n }\n\n return (\n \n Edit Filters\n \n \n {columns.map((i, j) => {\n const { field } = i;\n\n const { value = \"\", human = \"\" } = filters.get(field) ?? {};\n\n return (
\n {field}:  }\n onKeyPress={onEnter(finishDialog)}\n control={<>\n {i.options &&\n <>\n {human || \"Choose an option\"} }\n getLabel={i => i.name}\n onChange={i => editFilter(field, i.value, i.name)}\n options={i.options}\n />\n \n }\n {i.strict !== true && editFilter(field, e.target.value)} />\n }\n }\n />\n {value &&\n }\n
)\n })}\n
\n \n \n \n \n
)\n}","import React, { useEffect, useRef, useState } from 'react';\nimport { debounce } from 'throttle-debounce';\n\nimport { IconButton } from '@material-ui/core';\nimport {\n DataGrid, FilterModel, GridPageChangeParams, GridRowParams, GridRowsProp, GridSortModel,\n GridSortModelParams,\n} from '@material-ui/data-grid';\n\nimport { ICcDataDto, ITableResponse } from '../../cc-api';\nimport { SimpleLoader } from '../../components/SimpleLoader';\nimport { columns } from './TableResults.columns';\nimport { TableResultsFilters } from './TableResults.filters';\n\nconst FilterIcon = (props) => {\n return \n \n}\n\ninterface PageModel {\n page: number,\n pageSize: number;\n}\n\nexport interface TableModel {\n pageModel: PageModel;\n filterModel: FilterModel;\n sortModel: GridSortModel;\n lastChange: \"page\" | \"filter\" | \"sort\";\n}\n\ntype ClientServerMode = \"server\" | \"client\";\n\n\nconst getColumns = () => {\n const isSmall = window.innerWidth < 1025;\n const newCols = columns.map(i => {\n if (i.isHiddenOnSmallScreen) {\n i.hide = isSmall;\n }\n return i;\n });\n return newCols;\n}\n\ninterface TableResultsProps {\n isLoading: boolean;\n tableResponse: ITableResponse;\n debounceDuration?: number;\n onChange(model: TableModel): void;\n onSelected(item: ICcDataDto): void;\n allowKeyboardShortcuts: boolean;\n mode?: ClientServerMode;\n}\nexport const TableResults = (props: TableResultsProps) => {\n const { tableResponse, onSelected, onChange, isLoading, debounceDuration = 0, mode = \"server\", allowKeyboardShortcuts=false } = props;\n const [sortModel, setSortModel] = useState([]);\n const [filterModel, setFilterModel] = useState();\n const [pageModel, setPageModel] = useState({ page: 0, pageSize: 20 });\n const [filtersOpen, setFiltersOpen] = useState(false);\n const [ dynamicColumns, setDynamicColumns ] = useState(getColumns());\n const [ gridHeight, setGridHeight ] = useState(Math.max(400, window.innerHeight - 220));\n const divHref = useRef(null);\n \n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!allowKeyboardShortcuts) {\n return;\n }\n if (e.key === \"F3\" || (e.ctrlKey && e.key === \"f\")) {\n e.preventDefault();\n setFiltersOpen(true);\n }\n }\n\n const handleResize = (e: UIEvent) => {\n setTimeout(() => {\n setDynamicColumns([...getColumns()]);\n const offset = (divHref.current?.offsetTop ?? 170) + 50;\n setGridHeight(Math.max(400, window.innerHeight - offset));\n }, 1);\n }\n\n window.addEventListener(\"keydown\", handleKeyDown);\n window.addEventListener(\"resize\", handleResize);\n\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n window.removeEventListener(\"resize\", handleResize);\n }\n }, [ allowKeyboardShortcuts ]);\n\n if (!tableResponse) {\n return \n }\n\n const rows: GridRowsProp = tableResponse.data.map((i, id) => {\n return { ...i, id };\n });\n\n const onChangeDebounce = debounceDuration > 0\n ? debounce(debounceDuration, false, onChange)\n : onChange;\n\n\n const handleSortChange = (e: GridSortModelParams) => {\n const sortModel = e.sortModel;\n setSortModel(sortModel);\n onChange({ pageModel, filterModel, sortModel, lastChange: \"sort\" })\n };\n\n const handlePageChange = (e: GridPageChangeParams) => {\n const pageModel = { pageSize: e.pageSize, page: e.page };\n setPageModel(pageModel);\n onChange({ pageModel, filterModel, sortModel, lastChange: \"page\" });\n };\n\n\n const closeDialog = () => {\n setFiltersOpen(false)\n }\n\n const changeFilter = (model: FilterModel) => {\n const filterModel = model;\n setFilterModel(filterModel);\n onChangeDebounce({ pageModel, filterModel, sortModel, lastChange: \"filter\" });\n }\n\n const handleRowSelected = (e: GridRowParams) => {\n onSelected(e.row as unknown as ICcDataDto);\n }\n\n const showFilters = () => {\n setFiltersOpen(true);\n }\n\n return (<>\n {filtersOpen && <>\n \n }\n
\n \n \n \n \n
\n )\n}","import React, { useContext, useEffect, useState } from 'react';\r\nimport { Checkbox, Dialog, DialogContent, FormControlLabel } from '@material-ui/core';\r\nimport { CodeCritic } from '../api';\r\nimport { ICcDataDto, IGradeDto, ITableResponse } from '../cc-api';\r\nimport { SimpleLoader } from '../components/SimpleLoader';\r\nimport { useRefresh } from '../hooks/useRefresh';\r\nimport { useUser } from '../hooks/useUser';\r\nimport { ProcessStatusStatic } from '../models/Enums';\r\nimport { notifications } from '../utils/notifications';\r\nimport { ProblemPickerExportProps } from './ProblemPicker';\r\nimport { SolutionResultView } from './solutionResultView/SolutionResultView';\r\nimport { TableResults } from './table/TableResults';\r\nimport { FilterContext, IGradeStatFilterContext } from './GradeResults';\r\n\r\n\r\nconst applyTagsFilter = (data: IGradeDto[], tags: string[]) => {\r\n if (tags.length === 0) {\r\n return data;\r\n }\r\n\r\n return data.filter(d => {\r\n const intersection = d.user.tags!.filter(t => tags.includes(t));\r\n return intersection.length > 0;\r\n });\r\n}\r\n\r\n\r\ninterface GradeResultsProblemImplProps extends ProblemPickerExportProps { }\r\nexport const GradeResultsProblemImpl = (props: GradeResultsProblemImplProps) => {\r\n const { course, problem } = props;\r\n const { counter, refresh } = useRefresh();\r\n const [data, setData] = useState();\r\n const [selectedItem, setSelectedItem] = useState();\r\n const [selectedIndex, setSelectedIndex] = useState(-1);\r\n\r\n // tags state\r\n const [tags, setTags] = useState([]);\r\n\r\n const { context } = useContext(FilterContext) as IGradeStatFilterContext;\r\n const { isRoot } = useUser();\r\n\r\n useEffect(() => {\r\n (async () => {\r\n const axiosResponse = await CodeCritic.api.gradeStatsCreate(course.course, course.year, problem.id, context);\r\n const data = axiosResponse.data;\r\n setData(data);\r\n })();\r\n }, [counter, context.showMissingGradeOnly]);\r\n\r\n if (data == null) {\r\n return ;\r\n }\r\n\r\n\r\n const renderTags = () => {\r\n const allTags = [...new Set(data.map(i => i.user.tags).flat())].sort();\r\n return <>{allTags.map(i => {\r\n setTags(e.target.checked ? [...tags, i] : tags.filter(t => t !== i));\r\n }}\r\n />\r\n }\r\n label={i}\r\n key={i}\r\n className=\"tag\" />)}\r\n }\r\n\r\n const results = applyTagsFilter(data, tags).map(i => i.result);\r\n\r\n const tableResponse: ITableResponse = {\r\n data: results, count: results.length\r\n };\r\n\r\n const handleSelected = async (item: ICcDataDto) => {\r\n if (item.status === ProcessStatusStatic.NoSolution.letter) {\r\n notifications.warning(\"Cannot open the solution\", \"Solution is virtual and does not exists\");\r\n } else {\r\n setSelectedItem(item);\r\n setSelectedIndex((tableResponse.data || []).findIndex(i => i.objectId === item.objectId));\r\n }\r\n };\r\n\r\n const nextPage = async () => {\r\n if (selectedItem) {\r\n const index = (tableResponse.data || []).findIndex(i => i.objectId === selectedItem.objectId);\r\n const newItem = (tableResponse.data || []).find((i, j) => j > index && i.status !== ProcessStatusStatic.NoSolution.letter);\r\n\r\n if (newItem) {\r\n await handleSelected(newItem);\r\n }\r\n }\r\n };\r\n\r\n const prevPage = async () => {\r\n if (selectedItem) {\r\n const reversed = (tableResponse.data || []).slice().reverse();\r\n\r\n const index = reversed.findIndex(i => i.objectId === selectedItem.objectId);\r\n const newItem = reversed.find((i, j) => j > index && i.status !== ProcessStatusStatic.NoSolution.letter);\r\n\r\n if (newItem) {\r\n await handleSelected(newItem);\r\n }\r\n }\r\n };\r\n\r\n return (<>\r\n {renderTags()}\r\n \r\n {selectedItem && <>\r\n setSelectedItem(undefined)}\r\n fullWidth maxWidth=\"lg\">\r\n \r\n {isRoot &&\r\n
{selectedIndex + 1} / {tableResponse?.data?.length ?? 666}
}\r\n setSelectedItem(undefined)}\r\n onChange={refresh}\r\n objectId={selectedItem.objectId}\r\n nextPage={nextPage}\r\n prevPage={prevPage} />\r\n
\r\n
\r\n }\r\n );\r\n};\r\n","import React, { useContext, useEffect, useState } from 'react';\r\nimport { GradeResultsCourseImpl } from './GradeResultsCourseImpl';\r\nimport { GradeResultsProblemImpl } from './GradeResultsProblemImpl';\r\nimport { ProblemPickerExportProps } from './ProblemPicker';\r\n\r\nexport interface GradeResultsForkProps extends ProblemPickerExportProps { }\r\nexport const GradeResultsFork = (props: GradeResultsForkProps) => {\r\n const { course, problem } = props;\r\n if (!course && !problem) {\r\n return <>;\r\n }\r\n\r\n if (course && !problem) {\r\n return ;\r\n }\r\n\r\n return ;\r\n};","import React, { createContext, useContext, useState } from 'react';\n\nimport { Checkbox, FormControlLabel } from '@material-ui/core';\nimport InsertChartIcon from '@material-ui/icons/InsertChart';\n\nimport { IGradeStatFilterDto } from '../cc-api';\nimport { ProblemPicker, ProblemPickerExportProps } from './ProblemPicker';\nimport { GradeResultsFork } from './GradeResultsFork';\n\n\nexport interface IGradeStatFilterContext {\n context: IGradeStatFilterDto,\n setContext?(value: any): void,\n}\nconst GradeStatFilterContext: IGradeStatFilterContext = {\n context: { showMissingGradeOnly: false },\n};\nexport const FilterContext = createContext(GradeStatFilterContext);\n\nconst CustomBreadcrumbRenderer = (props: ProblemPickerExportProps) => {\n const { course, problem } = props;\n const { context, setContext } = useContext(FilterContext) as IGradeStatFilterContext;\n\n if (!course || !problem) {\n return <>\n }\n\n const handleChange = () => {\n setContext({ showMissingGradeOnly: !context.showMissingGradeOnly})\n }\n return
\n }\n label=\"missing grade only\"\n />\n
\n}\n\nexport const Graderesults = () => {\n const [context, setContext] = useState(GradeStatFilterContext.context);\n\n return
\n \n Grade}\n component={GradeResultsFork}\n withBreadcrumbs={CustomBreadcrumbRenderer}\n whereUserIsTeacher\n displayAlways\n />\n \n
\n}","import React, { useEffect, useState } from 'react';\n\nimport { Button, Container, Dialog, DialogActions, DialogContent, DialogTitle } from '@material-ui/core';\nimport { DataGrid, GridColDef } from '@material-ui/data-grid';\nimport PolicyIcon from '@material-ui/icons/Policy';\n\nimport { CodeCritic } from '../api';\nimport { IPlagResult, ISideBySideDiff } from '../cc-api';\nimport { SimpleLoader } from '../components/SimpleLoader';\nimport { ProblemPicker, ProblemPickerExportProps } from './ProblemPicker';\nimport { RenderDiffTable } from '../renderers/RenderDiffTable';\n\nexport const PlagiarismReport = () => {\n return
\n Plagiarism}\n component={PlagiarismReportImpl}\n withBreadcrumbs\n whereUserIsTeacher\n />\n
\n}\n\n/*\n public enum ChangeType\n {\n Unchanged,\n Deleted,\n Inserted,\n Imaginary,\n Modified\n }\n*/\n\ninterface PlagiarismReportImplProps extends ProblemPickerExportProps { }\nconst PlagiarismReportImpl = (props: PlagiarismReportImplProps) => {\n const { course, problem } = props;\n const [items, setItems] = useState();\n const [pair, setPair] = useState<[string, string]>();\n const [selectedDiff, setSelectedDiff] = useState();\n\n const onClose = () => {\n setSelectedDiff(undefined);\n setPair(undefined);\n }\n\n useEffect(() => {\n (async () => {\n const response = await CodeCritic.api.plagAllDetail(problem.course, problem.year, problem.id);\n setItems(response.data.map((i, id) => {\n return { ...i, id }\n }));\n })()\n }, []);\n\n useEffect(() => {\n (async () => {\n if (pair) {\n const response = await CodeCritic.api.plagTwoDetail(pair[0], pair[1]);\n setSelectedDiff(response.data);\n }\n })()\n }, [pair?.[0], pair?.[1]]);\n\n\n if (!items) {\n return \n }\n\n const columns: GridColDef[] = [\n { field: 'id', hide: true },\n { field: 'aName', headerName: 'User A', flex: 2 },\n { field: 'bName', headerName: 'User B', flex: 2 },\n { field: 'totalLines', headerName: 'Total lines', flex: 1 },\n { field: 'equalLines', headerName: 'Equal lines', flex: 1 },\n {\n field: '%', headerName: '%', flex: 1,\n valueGetter: i => (100 * i.row.equalLines / Math.max(1, i.row.totalLines)),\n valueFormatter: i => (i.value as number).toFixed(0)\n },\n ];\n\n return \n
\n setPair([i.row.aId, i.row.bId])} />\n
\n\n\n {selectedDiff && \n {selectedDiff.aName} vs {selectedDiff.bName}\n \n {selectedDiff.diffs.map((k, l) =>
\n \n
)}\n
\n \n \n \n
}\n
\n}","import React, { useEffect, useState } from 'react';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\n\r\nimport {\r\n Button, Container, Table, TableBody, TableCell, TableHead, TableRow, Tooltip, Typography,\r\n} from '@material-ui/core';\r\nimport ClearIcon from '@material-ui/icons/Clear';\r\nimport DoneIcon from '@material-ui/icons/Done';\r\nimport DoneAllIcon from '@material-ui/icons/DoneAll';\r\nimport PriorityHighIcon from '@material-ui/icons/PriorityHigh';\r\n\r\nimport { CodeCritic } from '../api';\r\nimport { IStudentScoreboardCourse } from '../cc-api';\r\nimport { SimpleLoader } from '../components/SimpleLoader';\r\nimport { groupBy } from '../utils/arrayUtils';\r\n\r\ninterface ScoreBoardIconProps {\r\n icon: any;\r\n children: any;\r\n to: string;\r\n}\r\nconst ScoreBoardIcon = (props: ScoreBoardIconProps) => {\r\n const { icon: IconCls, children, to } = props;\r\n\r\n return (\r\n
\r\n {children}\r\n
)\r\n}\r\ninterface TableCellRendererProps {\r\n result: IStudentScoreboardCourse;\r\n}\r\nconst TableCellRenderer = (props: TableCellRendererProps) => {\r\n const { score, resultCount, courseYear, courseName, problem, objectId } = props.result;\r\n const className = score === -1\r\n ? resultCount > 0\r\n ? \"forgot-code-review\"\r\n : \"no-code-review\"\r\n : score === 0\r\n ? \"ok-code-review\"\r\n : \"ok-code-review\";\r\n\r\n const msg = score === -1\r\n ? resultCount > 0\r\n ? Code Review missing\r\n : No Solution\r\n : score === 0\r\n ? ? of 100\r\n : {Math.round(score)} of 100\r\n\r\n const tooltip = score === -1\r\n ? resultCount > 0\r\n ? `Mark one of the ${resultCount} solution(s) for Code Review`\r\n : \"You have not submitted a solution which passed all tests\"\r\n : score === 0\r\n ? `Solution was not yet graded`\r\n : `Your grade ${Math.round(score)} / 100`;\r\n\r\n\r\n return (\r\n \r\n {msg}\r\n \r\n )\r\n}\r\ninterface StudentScoreboardProps {\r\n\r\n}\r\nexport const StudentScoreboard = (props: StudentScoreboardProps) => {\r\n const [items, setItems] = useState();\r\n\r\n useEffect(() => {\r\n (async () => {\r\n const axiosResponse = await CodeCritic.api.studentScoreboardList();\r\n setItems(axiosResponse.data);\r\n })()\r\n }, [ ]);\r\n\r\n if (items === undefined) {\r\n return \r\n }\r\n\r\n if (!items.length) {\r\n return
no results
\r\n }\r\n\r\n const byYear = groupBy(items, i => i.courseYear);\r\n\r\n return (\r\n {[...byYear.entries()].map(([courseYear, yearItems]) => {\r\n const byCourseName = [...groupBy(yearItems, i => i.courseName).entries()];\r\n\r\n return <>\r\n
{byCourseName.map(([courseName, courseNameItems]) => {\r\n const byProblem = groupBy(courseNameItems, i => i.problem);\r\n const problemsNames = [...byProblem.keys()];\r\n return <>\r\n \r\n {courseName}/{courseYear}\r\n \r\n \r\n \r\n \r\n {problemsNames.map(i => \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {[...courseNameItems].map((i, j) => )}\r\n \r\n \r\n
\r\n \r\n })}
\r\n \r\n })}\r\n\r\n
\r\n
\r\n

Legend

\r\n \r\n \r\n \r\n \r\n Submitted solution was accepted and graded\r\n \r\n \r\n \r\n Submitted solution was accepted, waiting to be graded\r\n \r\n \r\n \r\n You have submitted at least one solution which passed but did not send Code Review request\r\n \r\n \r\n \r\n You have not submitted a solution which passed all the test\r\n \r\n \r\n
\r\n
\r\n
)\r\n}","// Hook\nimport { useState } from \"react\";\n\nexport function useLocalStorage(key: string, initialValue: T): [T, (T) => void ] {\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState(() => {\n try {\n // Get from local storage by key\n const item = window.localStorage.getItem(key);\n // Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : initialValue;\n } catch (error) {\n // If error also return initialValue\n console.log(error);\n return initialValue;\n }\n });\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n const setValue = (value: T) => {\n try {\n // Allow value to be a function so we have same API as useState\n const valueToStore =\n value instanceof Function ? value(storedValue) : value;\n // Save state\n setStoredValue(valueToStore);\n // Save to local storage\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n } catch (error) {\n // A more advanced implementation would handle the error case\n console.log(error);\n }\n };\n\n return [storedValue, setValue];\n}","import { useEffect, useState } from \"react\";\nimport { useOpenClose } from \"./useOpenClose\";\n\nfunction traverseDirectory(entry) {\n const reader = entry.createReader();\n // Resolved when the entire directory is traversed\n return new Promise((resolve, reject) => {\n const iterationAttempts = [];\n function readEntries() {\n // According to the FileSystem API spec, readEntries() must be called until\n // it calls the callback with an empty array. Seriously??\n reader.readEntries((entries) => {\n if (!entries.length) {\n // Done iterating this particular directory\n resolve(Promise.all(iterationAttempts));\n } else {\n // Add a list of promises for each directory entry. If the entry is itself\n // a directory, then that promise won't resolve until it is fully traversed.\n iterationAttempts.push(Promise.all(entries.map((ientry) => {\n if (ientry.isFile) {\n // DO SOMETHING WITH FILES\n return ientry;\n }\n // DO SOMETHING WITH DIRECTORIES\n return traverseDirectory(ientry);\n })));\n // Try calling readEntries() again for the same dir, according to spec\n readEntries();\n }\n }, error => reject(error));\n }\n readEntries();\n });\n}\n\nfunction toFile(entry: FileEntry): Promise {\n return new Promise((resolve, reject) => {\n entry.file(resolve, reject);\n });\n}\n\nconst flatten = (f: FileEntry | FileEntry[], result: FileEntry[]) => {\n if (Array.isArray(f)) {\n f.forEach(ff => {\n flatten(ff, result);\n })\n } else {\n result.push(f);\n }\n}\n\ninterface FileEntry {\n file(succ: (file: File) => void, err?: (e: any) => void): void;\n name: string;\n}\n\nexport const useDnD = (dropzone: HTMLElement | Document, onDropHandle: (files: File[]) => void) => {\n const target: HTMLElement | Document = dropzone;\n const [isDragging, startDragging, stopDragging] = useOpenClose();\n\n const preventDefault = (e: DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n }\n\n const onDragEnter = (e: DragEvent) => {\n preventDefault(e);\n startDragging();\n }\n\n const onDragLeave = (e: DragEvent) => {\n preventDefault(e);\n stopDragging();\n }\n\n const onDragOver = (e: DragEvent) => {\n preventDefault(e);\n startDragging();\n }\n\n const onDrop = async (e: DragEvent) => {\n preventDefault(e);\n stopDragging();\n\n let items = [...e.dataTransfer.items];\n const result: any[] = [];\n let entries: FileEntry[] = [];\n try {\n for (let i = 0; i < items.length; i++) {\n // scanFiles(items[i].webkitGetAsEntry(), result);\n const data = await traverseDirectory(items[i].webkitGetAsEntry()) as FileEntry[];\n entries = [...entries, ...data];\n }\n flatten(entries, result);\n const promises = result.map(i => toFile(i));\n const data = await Promise.all(promises);\n onDropHandle(data);\n } catch (error) {\n const files = [...e.dataTransfer.files];\n onDropHandle(files);\n }\n }\n\n useEffect(() => {\n (async () => {\n target.addEventListener(\"dragenter\", onDragEnter, false);\n target.addEventListener(\"dragleave\", onDragLeave, false);\n target.addEventListener(\"dragover\", onDragOver, false);\n target.addEventListener(\"drop\", onDrop, false);\n\n return () => {\n target.removeEventListener(\"dragenter\", onDragEnter);\n target.removeEventListener(\"dragleave\", onDragLeave);\n target.removeEventListener(\"dragover\", onDragOver);\n target.removeEventListener(\"drop\", onDrop);\n }\n })()\n }, []);\n\n return { isDragging };\n}","import { IUnittestSpec } from '../cc-api';\r\n\r\nexport default class LanguageExamples {\r\n public static examples = {\r\n 'PY-367': `# python 3.5+ example\r\nimport sys\r\nfor line in sys.stdin:\r\n i = int(str(line).strip())\r\n if i == 42:\r\n break\r\n else:\r\n print(i)`,\r\n\r\n\r\n 'PY-276': `# python 2.7 example\r\nimport sys\r\nfor line in sys.stdin:\r\n i = int(str(line).strip())\r\n if i == 42:\r\n break\r\n else:\r\n print i`,\r\n\r\n\r\n 'CPP': `// C++ example\r\n#include \r\nusing namespace std; \r\n \r\nint main() \r\n{ \r\n \r\n // Declare the variables \r\n int num; \r\n \r\n // Input the integer \r\n cout << \"Enter the integer: \"; \r\n cin >> num; \r\n \r\n // Display the integer \r\n cout << \"Entered integer is: \" << num; \r\n \r\n return 0; \r\n}`,\r\n\r\n\r\n 'JAVA': `// JAVA example\r\nimport java.util.Scanner;\r\npublic class main {\r\n public static void main(String[] args) {\r\n Scanner input = new Scanner(System.in);\r\n while (input.hasNext()) {\r\n System.out.print(input.nextLine());\r\n }\r\n }\r\n}`,\r\n\r\n\r\n 'CS': `// C# example\r\nusing System;\r\n \r\nnamespace Sample\r\n{\r\n class Test\r\n {\r\n public static void Main(string[] args)\r\n {\r\n string testString;\r\n Console.Write(\"Enter a string - \");\r\n testString = Console.ReadLine();\r\n Console.WriteLine(\"You entered '{0}'\", testString);\r\n }\r\n }\r\n}`,\r\n 'DOTNET': `// C# example\r\nusing System;\r\n \r\nnamespace Sample\r\n{\r\n class Test\r\n {\r\n public static void Main(string[] args)\r\n {\r\n string testString;\r\n Console.Write(\"Enter a string - \");\r\n testString = Console.ReadLine();\r\n Console.WriteLine(\"You entered '{0}'\", testString);\r\n }\r\n }\r\n}`,\r\n\r\n\r\n 'C': `// C example\r\n#include \r\nint main(void)\r\n{\r\n int i;\r\n char name[BUFSIZ];\r\n \r\n printf (\"Input a number: \");\r\n scanf(\"%d\", &i);\r\n \r\n printf(\"Enter your name: \");\r\n fgets(name, BUFSIZ, stdin);\r\n \r\n printf (\"Hello %s, your number was %d\", name, i);\r\n \r\n return(0);\r\n}`,\r\n\r\n 'MATLAB': `% Matlab code\r\nA = ones(10);\r\nB = zeros(10);\r\nC = eye(10);\r\n\r\n%% test\r\ne = 1.0;\r\n[a2, b2, c2] = kvadracoef(x, y);\r\n \r\n \r\n%% plot\r\nff = figure;\r\np = [a2, b2, c2];\r\nf = polyval(p,x);\r\nplot(x,y,'o',x,f,'-');\r\nlegend('data','linear fit');\r\nsaveas(ff, 'figure.png');\r\n`,\r\n 'MARKDOWN': `# Big title\r\n\r\n> quote\r\n\r\n\\`some code\\`\r\n `,\r\n\r\n 'NODEJS': `\r\n// NodeJS example\r\nconst readline = require('readline');\r\nconst rl = readline.createInterface({\r\n input: process.stdin,\r\n output: process.stdout,\r\n terminal: false\r\n});\r\n\r\nrl.on('line', function(line){\r\n for (let i = 0; i < +line; i++) console.log('Hello world!')\r\n})`,\r\n\r\n 'TS': `\r\n// Typescript example\r\nconst readline = require('readline');\r\nconst rl = readline.createInterface({\r\n input: process.stdin,\r\n output: process.stdout,\r\n terminal: false\r\n});\r\n\r\nrl.on('line', function(line){\r\n for (let i = 0; i < +line; i++) console.log('Hello world!')\r\n})`\r\n }\r\n\r\n\r\n public static templatesMain = {\r\n 'PY-367': `\r\nimport sys\r\nfor line in sys.stdin:\r\n # do something`,\r\n\r\n\r\n 'JAVA': `\r\nimport java.util.Scanner;\r\npublic class main {\r\n public static void main(String[] args) {\r\n Scanner input = new Scanner(System.in);\r\n // do something\r\n }\r\n}`,\r\n\r\n 'CPP': `\r\n#include \r\nint main() { \r\n // do something\r\n int num; \r\n std::cin >> num; \r\n return 0; \r\n}`,\r\n\r\n 'C': `\r\n#include \r\nint main() { \r\n // do something\r\n int num; \r\n scanf(\"%d\", &num);\r\n return 0; \r\n}`,\r\n\r\n 'CS': `\r\nusing System;\r\nnamespace Solution\r\n{\r\n public class main\r\n {\r\n public static void Main(string[] args)\r\n {\r\n // do something\r\n var num = int.Parse(Console.ReadLine());\r\n }\r\n }\r\n}`,\r\n\r\n 'DOTNET': `\r\nusing System;\r\nnamespace Solution\r\n{\r\n public class main\r\n {\r\n public static void Main(string[] args)\r\n {\r\n // do something\r\n var num = int.Parse(Console.ReadLine());\r\n }\r\n }\r\n}`,\r\n\r\n 'NODEJS': `\r\nconst readline = require('readline');\r\nconst rl = readline.createInterface({\r\n input: process.stdin,\r\n output: process.stdout,\r\n terminal: false\r\n});\r\n\r\nrl.on('line', line => {\r\n // do something\r\n})`,\r\n\r\n\r\n 'TS': `\r\nconst readline = require('readline');\r\nconst rl = readline.createInterface({\r\n input: process.stdin,\r\n output: process.stdout,\r\n terminal: false\r\n});\r\n\r\nrl.on('line', (line: string) => {\r\n // do something\r\n})`,\r\n\r\n\r\n 'MATLAB': `\r\n% your code here\r\n `\r\n }\r\n\r\n public static templatesLibname = {\r\n\r\n 'PY-367': (unittestSpec: IUnittestSpec) => {\r\n const { libname, methods } = unittestSpec;\r\n return `\r\n# solution for ${libname}\r\n\r\n${(methods.map(method => `${method}:\r\n # do something`)).join('\\n\\n')}`.trim();\r\n },\r\n\r\n 'JAVA': (unittestSpec: IUnittestSpec) => {\r\n const { libname, methods } = unittestSpec;\r\n const withoutExtension = libname.split('.', 1)[0];\r\n return `\r\n// solution for ${libname}\r\n\r\npublic class ${withoutExtension} {\r\n ${(methods.map(method => `${method} {\r\n // do something\r\n }`)).join('\\n\\n')}\r\n}\r\n`.trim();},\r\n }\r\n};\r\n\r\n","export const mapByExtension = (extension: string) => {\r\n const ext = extension || \"\";\r\n\r\n switch(ext.toLowerCase()) {\r\n case \"c\":\r\n case \"cc\":\r\n case \"cpp\":\r\n case \"h\":\r\n case \"hh\":\r\n case \"hpp\":\r\n case \"cs\":\r\n return \"clike\";\r\n\r\n case \"py\":\r\n return \"python\";\r\n\r\n case \"m\":\r\n return \"octave\";\r\n\r\n case \"js\":\r\n case \"ts\":\r\n case \"json\":\r\n return \"javascript\";\r\n\r\n case \"java\":\r\n return \"text/x-java\";\r\n\r\n case \"csproj\":\r\n return \"xml\";\r\n\r\n default:\r\n return \"text\";\r\n }\r\n}\r\n\r\nexport const supportedExtensions = [\r\n \".c\", \".cc\", \".cpp\",\r\n \".h\", \".hh\", \".hpp\",\r\n \".cs\", \".py\", \".java\", \".m\",\r\n \".txt\", \".md\", \".json\", \".xml\",\r\n \".js\", \".csproj\"\r\n]\r\n\r\nexport const isFiletypeSupported = (filename: string) => {\r\n return supportedExtensions.some(i => filename.endsWith(i));\r\n}\r\n\r\nexport const mapByExtensionPrism = (extension: string) => {\r\n const ext = extension || \"\";\r\n\r\n switch(ext.toLowerCase()) {\r\n case \"c\":\r\n case \"cc\":\r\n case \"cpp\":\r\n case \"h\":\r\n case \"hh\":\r\n case \"hpp\":\r\n return \"clike\";\r\n\r\n case \"py\":\r\n return \"python\";\r\n\r\n case \"cs\":\r\n return \"csharp\";\r\n\r\n case \"csproj\":\r\n return \"xml\";\r\n\r\n case \"m\":\r\n return \"matlab\";\r\n\r\n case \"js\":\r\n case \"json\":\r\n return \"javascript\";\r\n\r\n case \"java\":\r\n return \"java\";\r\n\r\n default:\r\n return \"text\";\r\n }\r\n}","import React, { useEffect, useState } from 'react';\n\nimport {\n Button, ButtonGroup, Dialog, DialogActions, DialogContent, DialogTitle, TextField,\n} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport CloseIcon from '@material-ui/icons/Close';\nimport FullscreenIcon from '@material-ui/icons/Fullscreen';\n\nimport { ISimpleFile } from '../../cc-api';\nimport { useOpenClose } from '../../hooks/useOpenClose';\nimport { isFiletypeSupported, supportedExtensions } from '../../utils/LanguageMap';\nimport { notifications } from '../../utils/notifications';\nimport { onEnter } from '../../utils/onEnter';\n\ninterface CodeEditorFileBarProps {\n files: ISimpleFile[];\n selected: string;\n\n onNewFile(filename: string): true | string;\n onDeleteFile(filename: string): true | string;\n onChange(file: string): void;\n onFullScreen(on: boolean): void;\n}\nexport const CodeEditorFileBar = (props: CodeEditorFileBarProps) => {\n const { onNewFile, onChange, onDeleteFile, onFullScreen } = props;\n const { files, selected } = props;\n\n const [open, setOpen, setClose] = useOpenClose();\n const [filename, setFilename] = useState(\"\");\n const isValidFile = filename.trim().length > 0\n && filename.includes(\".\")\n && isFiletypeSupported(filename)\n && !filename.includes(\"..\");\n\n const addNewFile = () => {\n if(!isValidFile) {\n return;\n }\n\n const result = onNewFile(filename.trim());\n if (result === true) {\n setClose();\n } else {\n notifications.error(result);\n }\n }\n\n const deleteFile = (filename) => {\n const result = onDeleteFile(filename.trim());\n if (result === true) {\n setClose();\n } else {\n notifications.error(result);\n } \n }\n\n const handleMouseDown = (e: React.MouseEvent, filename: string ) => {\n if (e.button === 1) {\n deleteFile(filename);\n } else {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n return (
\n {files.map(i => \n \n \n )}\n \n \n {open && \n \n Add file to the solution\n \n \n setFilename(e.target.value)} />\n \n \n \n \n \n }\n
)\n}","import 'codemirror/lib/codemirror.css';\nimport 'codemirror/theme/mdn-like.css';\n// import 'codemirror/theme/mdn-like.css';\nimport 'codemirror/mode/python/python.js';\nimport 'codemirror/mode/javascript/javascript.js';\nimport 'codemirror/mode/clike/clike.js';\nimport 'codemirror/mode/octave/octave.js';\n\nimport React, { useEffect, useState } from 'react';\nimport { Controlled as CodeMirror } from 'react-codemirror2';\n\nimport { ICourseProblem, ISimpleFile } from '../../cc-api';\nimport { useDnD } from '../../hooks/useDnD';\nimport { ILanguage } from '../../models/CustomModel';\nimport { ProblemType } from '../../models/Enums';\nimport LanguageExamples from '../../utils/LanguageExamples';\nimport { isFiletypeSupported, mapByExtension } from '../../utils/LanguageMap';\nimport { notifications } from '../../utils/notifications';\nimport { CodeEditorFileBar } from './CodeEditor.FileBar';\n\nexport const determineRequiredFiles = (problem: ICourseProblem, language: ILanguage) => {\n let result: ISimpleFile[] = [];\n // add unit test lib name\n if(problem.type === ProblemType.Unittest) {\n const unittestSpec = problem.unittest.find(u => u.lang === language.id);\n\n if (unittestSpec?.libname) {\n result.push(toSimpleLanguageFile(unittestSpec.libname, language));\n }\n }\n\n // add all other files\n if (problem.files.length > 0) {\n result = [...result, ...problem.files.map(i => toSimpleLanguageFile(i, language))];\n }\n\n // add main file if result is empty\n if (result.length === 0) {\n result.push(toSimpleLanguageFile(\"main.{extension}\", language));\n }\n\n // remove duplicates\n result = result.filter((item, index, self) =>\n index === self.findIndex(t => t.filename === item.filename)\n );\n\n return result;\n}\n\nconst toSimpleLanguageFile = (filename: string, language: ILanguage) => {\n return toSimpleFile(filename.replaceAll(\"{extension}\", language.extension))\n}\n\nconst toSimpleFile = (filename: string) => {\n return {\n filename: filename,\n isDir: false,\n files: [],\n content: \"\",\n relPath: `${filename}`,\n rawPath: null,\n } as ISimpleFile\n}\ninterface CodeEditorProps {\n problem: ICourseProblem;\n language: ILanguage;\n onChange(files: ISimpleFile[]): void;\n}\nexport const CodeEditor = (props: CodeEditorProps) => {\n const { problem, language, onChange } = props;\n const requiredFiles = determineRequiredFiles(problem, language);\n\n const [ isFullScreen, setFullScreen ] = useState(false);\n const { isDragging } = useDnD(document, (fs) => onFileDrop(fs));\n\n const [ files, setFiles ] = useState(requiredFiles);\n const [ selectedFile, setSelectedFile ] = useState(files[0]?.relPath);\n const selectedRef = files.find(i => i.relPath === selectedFile);\n\n useEffect(() => {\n const requiredFiles = determineRequiredFiles(problem, language);\n const newFiles = [...requiredFiles, ...files.filter(i => !!i.content)];\n updateFiles(newFiles);\n setSelectedFile(newFiles[0]?.relPath);\n }, [ language.id ]);\n\n\n const updateFiles = (newFiles: ISimpleFile[]) => {\n onChange(newFiles);\n setFiles([...newFiles]);\n }\n\n const onNewFile = (filename: string) => {\n if (files.some(i => i.relPath === filename)) {\n return `File ${filename} already exists!`;\n }\n updateFiles([...files, toSimpleFile(filename)]);\n setSelectedFile(filename);\n return true;\n }\n\n const onDeleteFile = (filename: string) => {\n if (requiredFiles.some(i => i.relPath === filename)) {\n return `The file ${filename} is required! and cannot be deleted`;\n }\n const newFiles = files.filter(i => i.relPath != filename);\n updateFiles([...newFiles]);\n setSelectedFile(newFiles[0]?.relPath);\n return true;\n }\n\n const onFullScreen = (on: boolean) => {\n setFullScreen(!isFullScreen);\n }\n\n const handleChange = (editor: any, data: any, value: string) => {\n if (selectedRef) {\n setContent(selectedFile, value);\n }\n }\n\n const setContent = (relPath: string, content: string) => {\n const idx = files.findIndex(i => i.relPath === relPath);\n if (idx >= 0) {\n files[idx].content = content;\n } else {\n const newFile = toSimpleFile(relPath);\n newFile.content = content;\n files.push(newFile);\n }\n updateFiles([...files]);\n }\n\n const onFileDrop = (droppedFiles: File[]) => {\n const dropped:string[] = [];\n\n function getContent(f: File): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n resolve(reader.result as string);\n }\n reader.readAsText(f as any);\n })\n }\n\n droppedFiles.forEach(async (file) => {\n if (!isFiletypeSupported(file.name)) {\n notifications.error(`File ${file.name} is not supported at the moment`);\n } else {\n const content = await getContent(file);\n setContent(file.name, content);\n dropped.push(file.name);\n }\n });\n\n if (dropped.length > 0) {\n setSelectedFile(dropped[dropped.length - 1]);\n }\n }\n\n const getContentOrDefault = (filename: string, language: ILanguage, content: any) => {\n if (content) {\n return content as string;\n }\n \n if (problem.type === ProblemType.Unittest) {\n const unittestSpec = problem.unittest.find(u => u.lang === language.id && u.libname === filename);\n if (unittestSpec) {\n const func = LanguageExamples.templatesLibname[language.id];\n if (func) {\n return func(unittestSpec);\n }\n }\n }\n\n const def: string | null = LanguageExamples.templatesMain[language.id];\n return def ? def.trim() : \"\";\n }\n\n return (
\n \n\n \n
)\n}","import React from 'react';\r\nimport { cssVar } from '../../utils/cssVar';\r\n\r\nconst toSize = (size?: number) => {\r\n return {\r\n width: size ?? 24,\r\n height: size ?? 24,\r\n }\r\n}\r\n\r\nconst toCssVariable = (value: string, key: string = \"shadow\") => cssVar(key, value);\r\n\r\n\r\ninterface IconProps {\r\n size?: number\r\n}\r\n\r\nconst CIcon = (props: IconProps) => (\r\n \r\n \r\n \r\n)\r\nconst CPlusPlusIcon = (props: IconProps) => (\r\n \r\n \r\n \r\n)\r\n\r\nconst CSharpIcon = (props: IconProps) => (\r\n \r\n \r\n \r\n);\r\n\r\nconst TypeScriptIcon = (props: IconProps) => (\r\n \r\n \r\n \r\n);\r\n\r\nconst PythonIcon = (props: IconProps) => (\r\n \r\n \r\n \r\n);\r\n\r\nconst NodeJsIcon = (props: IconProps) => (\r\n \r\n \r\n \r\n);\r\n\r\nconst JavaIcon = (props: IconProps) => (\r\n \r\n \r\n \r\n);\r\n\r\nconst DotNetIcon = (props: IconProps) => (\r\n \r\n \r\n \r\n);\r\n\r\nconst MarkDownIcon = (props: IconProps) => (\r\n \r\n \r\n \r\n);\r\n\r\nconst MatlabIcon = (props: IconProps) => (\r\n \r\n \r\n \r\n);\r\n\r\ninterface CodeEditorIconProps {\r\n languageId: string;\r\n size?: number;\r\n className?: string;\r\n}\r\nexport const CodeEditorIcon = (props: CodeEditorIconProps) => {\r\n const { languageId, size=24, className=\"\" } = props;\r\n const getIcon = (languageId: string) => {\r\n switch (languageId) {\r\n case 'PY-367':\r\n return ;\r\n case \"JAVA\":\r\n return ;\r\n case \"C\":\r\n return ;\r\n case \"CS\":\r\n return ;\r\n case \"CPP\":\r\n return ;\r\n case \"TS\":\r\n return ;\r\n case 'NODEJS':\r\n return ;\r\n case \"DOTNET\":\r\n return ;\r\n case \"MARKDOWN\":\r\n return ;\r\n case \"MATLAB\":\r\n return ;\r\n }\r\n return <>;\r\n }\r\n return {getIcon(languageId)};\r\n}","import React from 'react';\n\nimport {\n Button, Dialog, DialogActions, DialogContent, DialogTitle, FormControl, IconButton, InputLabel,\n MenuItem, Select, Tooltip,\n} from '@material-ui/core';\nimport LiveHelpIcon from '@material-ui/icons/LiveHelp';\n\nimport { useOpenClose } from '../../hooks/useOpenClose';\nimport { ILanguage } from '../../models/CustomModel';\nimport { highlightLine } from '../../text/highlight';\nimport LanguageExamples from '../../utils/LanguageExamples';\nimport { CodeEditorIcon } from './CodeEditor.Icon';\n\n\ninterface CodeEditorLanguageProps {\n language: ILanguage;\n allowedLanguages: ILanguage[];\n onChange(languageId: string): void;\n}\n\nexport const CodeEditorLanguage = (props: CodeEditorLanguageProps) => {\n const { language, allowedLanguages } = props;\n const { onChange } = props;\n const [open, setOpen, setClose] = useOpenClose();\n\n const handleChange = ({ target: { value } }) => {\n onChange(value as string);\n }\n\n return (
\n
\n \n Language\n \n {allowedLanguages.map(i => \n \n {i.name} ({i.version})\n )}\n \n \n
\n
\n \n \n \n \n \n
\n {open && \n {language.name} example\n \n
\n            
\n \n \n \n
}\n
)\n}","import { useEffect, useRef, useState } from \"react\";\n\ninterface IframeWrapperProps {\n width: any;\n minHeight: any;\n margin?: any;\n src: string;\n}\nexport const IframeWrapper = (props: IframeWrapperProps) => {\n const { minHeight, width, src, margin=0 } = props;\n const [height, setHeight] = useState(minHeight);\n const iframe = useRef();\n\n useEffect(() => {\n // const id = setInterval(updateIframeHeight, 3000);\n // iframe.current.contentWindow.addEventListener(\"resize\", updateIframeHeight);\n // iframe.current.contentWindow.document.addEventListener(\"resize\", updateIframeHeight);\n // iframe.current.contentWindow.document.body.addEventListener(\"resize\", updateIframeHeight);\n console.log(iframe);\n \n \n return () => {\n // clearInterval(id)\n // iframe.current.contentWindow.removeEventListener(\"resize\", updateIframeHeight);\n // iframe.current.contentWindow.document.removeEventListener(\"resize\", updateIframeHeight);\n // iframe.current.contentWindow.document.body.removeEventListener(\"resize\", updateIframeHeight);\n }\n }, [ ]);\n\n const updateIframeHeight = (e: any) => {\n console.log(e);\n const height = e?.target.contentWindow?.document.body.scrollHeight\n ?? e?.target.document.body.scrollHeight\n ?? iframe.current?.contentWindow?.document.body.scrollHeight\n ?? minHeight;\n \n setHeight(Math.max(height, minHeight) + margin);\n }\n\n if (iframe.current) {\n iframe.current.contentWindow.document.onresize = updateIframeHeight;\n }\n\n return