diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/CATcher-org_CATcher_master/authorship.json b/CATcher-org_CATcher_master/authorship.json new file mode 100644 index 0000000..939a08e --- /dev/null +++ b/CATcher-org_CATcher_master/authorship.json @@ -0,0 +1 @@ +[{"path":"src/app/app-routing.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { RouterModule, Routes } from \u0027@angular/router\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { AuthModule } from \u0027./auth/auth.module\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { AuthGuard } from \u0027./core/guards/auth.guard\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { PhaseBugReportingModule } from \u0027./phase-bug-reporting/phase-bug-reporting.module\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { PhaseModerationModule } from \u0027./phase-moderation/phase-moderation.module\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { PhaseTeamResponseModule } from \u0027./phase-team-response/phase-team-response.module\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { PhaseTesterResponseModule } from \u0027./phase-tester-response/phase-tester-response.module\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"const routes: Routes \u003d ["},{"lineNumber":11,"author":{"gitId":"-"},"content":" { path: \u0027\u0027, loadChildren: () \u003d\u003e AuthModule },"},{"lineNumber":12,"author":{"gitId":"-"},"content":" { path: \u0027phaseBugReporting\u0027, loadChildren: () \u003d\u003e PhaseBugReportingModule, canLoad: [AuthGuard] },"},{"lineNumber":13,"author":{"gitId":"-"},"content":" { path: \u0027phaseTeamResponse\u0027, loadChildren: () \u003d\u003e PhaseTeamResponseModule, canLoad: [AuthGuard] },"},{"lineNumber":14,"author":{"gitId":"-"},"content":" { path: \u0027phaseTesterResponse\u0027, loadChildren: () \u003d\u003e PhaseTesterResponseModule, canLoad: [AuthGuard] },"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" { path: \u0027phaseModeration\u0027, loadChildren: () \u003d\u003e PhaseModerationModule, canLoad: [AuthGuard] },"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" { path: \u0027**\u0027, redirectTo: \u0027\u0027 }"},{"lineNumber":17,"author":{"gitId":"-"},"content":"];"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":20,"author":{"gitId":"-"},"content":" imports: [RouterModule.forRoot(routes)],"},{"lineNumber":21,"author":{"gitId":"-"},"content":" exports: [RouterModule]"},{"lineNumber":22,"author":{"gitId":"-"},"content":"})"},{"lineNumber":23,"author":{"gitId":"-"},"content":"export class AppRoutingModule {}"}],"authorContributionMap":{"NereusWB922":2,"-":21}},{"path":"src/app/core/directives/internal-link-disable.directive.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"import { Directive, HostListener } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"import { ErrorHandlingService } from \u0027../services/error-handling.service\u0027;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"class InvalidLinkError extends Error {"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" constructor() {"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" super(\u0027Invalid link!\u0027);"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" Object.setPrototypeOf(this, InvalidLinkError.prototype);"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" }"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"@Directive({"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" selector: \u0027[disableInternalLink]\u0027"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"})"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"export class InternalLinkDisableDirective {"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" constructor(private errorHandlingService: ErrorHandlingService) {}"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" @HostListener(\u0027click\u0027, [\u0027$event\u0027])"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" public onClick(e: MouseEvent): void {"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" const srcElement \u003d e.target;"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":" if (srcElement instanceof HTMLAnchorElement) {"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" const baseURI \u003d srcElement.baseURI;"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" const href \u003d srcElement.href;"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" if (href.startsWith(baseURI)) {"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" this.errorHandlingService.handleError(new InvalidLinkError());"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":" e.preventDefault();"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" e.stopPropagation();"},{"lineNumber":29,"author":{"gitId":"NereusWB922"},"content":" }"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" }"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" }"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":"}"}],"authorContributionMap":{"NereusWB922":32}},{"path":"src/app/core/services/github.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { HttpErrorResponse } from \u0027@angular/common/http\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { ApolloQueryResult } from \u0027@apollo/client/core\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Apollo, QueryRef } from \u0027apollo-angular\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { DocumentNode } from \u0027graphql\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { forkJoin, from, Observable, of, throwError } from \u0027rxjs\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { catchError, filter, map, mergeMap, throwIfEmpty } from \u0027rxjs/operators\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":9,"author":{"gitId":"-"},"content":" FetchIssue,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" FetchIssueQuery,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" FetchIssues,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" FetchIssuesByTeam,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" FetchIssuesByTeamQuery,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" FetchIssuesQuery,"},{"lineNumber":15,"author":{"gitId":"-"},"content":" FetchLabels,"},{"lineNumber":16,"author":{"gitId":"-"},"content":" FetchLabelsQuery"},{"lineNumber":17,"author":{"gitId":"-"},"content":"} from \u0027../../../../graphql/graphql-types\u0027;"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import { AppConfig } from \u0027../../../environments/environment\u0027;"},{"lineNumber":19,"author":{"gitId":"nknguyenhc"},"content":"import { throwIfFalse } from \u0027../../shared/lib/custom-ops\u0027;"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import { getNumberOfPages } from \u0027../../shared/lib/github-paginator-parser\u0027;"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import { IssueComment } from \u0027../models/comment.model\u0027;"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../models/github-user.model\u0027;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import { IssueLastModifiedManagerModel } from \u0027../models/github/cache-manager/issue-last-modified-manager.model\u0027;"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import { IssuesCacheManager } from \u0027../models/github/cache-manager/issues-cache-manager.model\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import { GithubComment } from \u0027../models/github/github-comment.model\u0027;"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import { GithubGraphqlIssue } from \u0027../models/github/github-graphql.issue\u0027;"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import RestGithubIssueFilter from \u0027../models/github/github-issue-filter.model\u0027;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027../models/github/github-issue.model\u0027;"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027../models/github/github-label.model\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import { GithubResponse } from \u0027../models/github/github-response.model\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import { GithubRelease } from \u0027../models/github/github.release\u0027;"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import { SessionData } from \u0027../models/session.model\u0027;"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import { ERRORCODE_NOT_FOUND, ErrorHandlingService } from \u0027./error-handling.service\u0027;"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027./logging.service\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":"const { Octokit } \u003d require(\u0027@octokit/rest\u0027);"},{"lineNumber":37,"author":{"gitId":"-"},"content":"const CATCHER_ORG \u003d \u0027CATcher-org\u0027;"},{"lineNumber":38,"author":{"gitId":"-"},"content":"const CATCHER_REPO \u003d \u0027CATcher\u0027;"},{"lineNumber":39,"author":{"gitId":"nknguyenhc"},"content":"const BRANCH \u003d \u0027main\u0027;"},{"lineNumber":40,"author":{"gitId":"-"},"content":"const UNABLE_TO_OPEN_IN_BROWSER \u003d \u0027Unable to open this issue in Browser\u0027;"},{"lineNumber":41,"author":{"gitId":"nknguyenhc"},"content":"const BRANCH_CREATION_FAILED \u003d `Unable to create ${BRANCH} branch.`;"},{"lineNumber":42,"author":{"gitId":"-"},"content":"function getSettingsUrl(org: string, repoName: string): string {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return `https://raw.githubusercontent.com/${org}/${repoName}/master/settings.json`;"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":"let ORG_NAME \u003d \u0027\u0027;"},{"lineNumber":47,"author":{"gitId":"-"},"content":"let MOD_ORG \u003d \u0027\u0027;"},{"lineNumber":48,"author":{"gitId":"-"},"content":"let REPO \u003d \u0027\u0027;"},{"lineNumber":49,"author":{"gitId":"-"},"content":"let DATA_REPO \u003d \u0027\u0027;"},{"lineNumber":50,"author":{"gitId":"-"},"content":"const MAX_ITEMS_PER_PAGE \u003d 100;"},{"lineNumber":51,"author":{"gitId":"-"},"content":""},{"lineNumber":52,"author":{"gitId":"-"},"content":"let octokit \u003d new Octokit();"},{"lineNumber":53,"author":{"gitId":"-"},"content":""},{"lineNumber":54,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":55,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":56,"author":{"gitId":"-"},"content":"})"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Responsible for communicating with GitHub to create, update, read and delete"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * features related to Github using GitHub API Requests."},{"lineNumber":61,"author":{"gitId":"-"},"content":" * For example, issues, issue labels and repositories."},{"lineNumber":62,"author":{"gitId":"-"},"content":" */"},{"lineNumber":63,"author":{"gitId":"-"},"content":"export class GithubService {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private static readonly IF_NONE_MATCH_EMPTY \u003d { \u0027If-None-Match\u0027: \u0027\u0027 };"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" private issuesCacheManager \u003d new IssuesCacheManager();"},{"lineNumber":67,"author":{"gitId":"-"},"content":" private issuesLastModifiedManager \u003d new IssueLastModifiedManagerModel();"},{"lineNumber":68,"author":{"gitId":"-"},"content":" private issueQueryRefs \u003d new Map\u003cNumber, QueryRef\u003cFetchIssueQuery\u003e\u003e();"},{"lineNumber":69,"author":{"gitId":"-"},"content":""},{"lineNumber":70,"author":{"gitId":"-"},"content":" constructor(private errorHandlingService: ErrorHandlingService, private apollo: Apollo, private logger: LoggingService) {}"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":" storeOAuthAccessToken(accessToken: string) {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" octokit \u003d new Octokit({"},{"lineNumber":74,"author":{"gitId":"-"},"content":" auth() {"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return `Token ${accessToken}`;"},{"lineNumber":76,"author":{"gitId":"-"},"content":" },"},{"lineNumber":77,"author":{"gitId":"-"},"content":" log: {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" debug: (message, ...otherInfo) \u003d\u003e this.logger.debug(\u0027GithubService: \u0027 + message, ...otherInfo),"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // Do not log info for HTTP response 304 due to repeated polling"},{"lineNumber":80,"author":{"gitId":"-"},"content":" info: (message, ...otherInfo) \u003d\u003e"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /304 in \\d+ms$/.test(message) ? undefined : this.logger.info(\u0027GithubService: \u0027 + message, ...otherInfo),"},{"lineNumber":82,"author":{"gitId":"-"},"content":" warn: (message, ...otherInfo) \u003d\u003e this.logger.warn(\u0027GithubService: \u0027 + message, ...otherInfo),"},{"lineNumber":83,"author":{"gitId":"-"},"content":" error: (message, ...otherInfo) \u003d\u003e this.logger.error(\u0027GithubService: \u0027 + message, ...otherInfo)"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }"},{"lineNumber":85,"author":{"gitId":"-"},"content":" });"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }"},{"lineNumber":87,"author":{"gitId":"-"},"content":""},{"lineNumber":88,"author":{"gitId":"-"},"content":" storeOrganizationDetails(orgName: string, dataRepo: string) {"},{"lineNumber":89,"author":{"gitId":"-"},"content":" MOD_ORG \u003d orgName;"},{"lineNumber":90,"author":{"gitId":"-"},"content":" DATA_REPO \u003d dataRepo;"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }"},{"lineNumber":92,"author":{"gitId":"-"},"content":""},{"lineNumber":93,"author":{"gitId":"-"},"content":" storePhaseDetails(phaseRepoOwner: string, repoName: string) {"},{"lineNumber":94,"author":{"gitId":"-"},"content":" REPO \u003d repoName;"},{"lineNumber":95,"author":{"gitId":"-"},"content":" ORG_NAME \u003d phaseRepoOwner;"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }"},{"lineNumber":97,"author":{"gitId":"-"},"content":""},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Fetches an array of filtered GitHubIssues using GraphQL query for a given team."},{"lineNumber":100,"author":{"gitId":"-"},"content":" *"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * @param tutorial - The tutorial that the team belongs to."},{"lineNumber":102,"author":{"gitId":"-"},"content":" * @param team - The team\u0027s designated name."},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @param issuesFilter - The issue filter."},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @returns An observable array of filtered GithubIssues"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */"},{"lineNumber":106,"author":{"gitId":"-"},"content":" fetchIssuesGraphqlByTeam(tutorial: string, team: string, issuesFilter: RestGithubIssueFilter): Observable\u003cArray\u003cGithubIssue\u003e\u003e {"},{"lineNumber":107,"author":{"gitId":"-"},"content":" const graphqlFilter \u003d issuesFilter.convertToGraphqlFilter();"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return this.toFetchIssues(issuesFilter).pipe("},{"lineNumber":109,"author":{"gitId":"-"},"content":" filter((toFetch) \u003d\u003e toFetch),"},{"lineNumber":110,"author":{"gitId":"-"},"content":" mergeMap(() \u003d\u003e {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return this.fetchGraphqlList\u003cFetchIssuesByTeamQuery, GithubGraphqlIssue\u003e("},{"lineNumber":112,"author":{"gitId":"-"},"content":" FetchIssuesByTeam,"},{"lineNumber":113,"author":{"gitId":"-"},"content":" {"},{"lineNumber":114,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":115,"author":{"gitId":"-"},"content":" name: REPO,"},{"lineNumber":116,"author":{"gitId":"-"},"content":" filter: {"},{"lineNumber":117,"author":{"gitId":"-"},"content":" ...graphqlFilter,"},{"lineNumber":118,"author":{"gitId":"-"},"content":" labels: [...(graphqlFilter.labels ? graphqlFilter.labels : []), team]"},{"lineNumber":119,"author":{"gitId":"-"},"content":" },"},{"lineNumber":120,"author":{"gitId":"-"},"content":" tutorial"},{"lineNumber":121,"author":{"gitId":"-"},"content":" },"},{"lineNumber":122,"author":{"gitId":"-"},"content":" (result) \u003d\u003e result.data.repository.label.issues.edges,"},{"lineNumber":123,"author":{"gitId":"-"},"content":" GithubGraphqlIssue"},{"lineNumber":124,"author":{"gitId":"-"},"content":" );"},{"lineNumber":125,"author":{"gitId":"-"},"content":" })"},{"lineNumber":126,"author":{"gitId":"-"},"content":" );"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }"},{"lineNumber":128,"author":{"gitId":"-"},"content":""},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Fetches an array of filtered GitHubIssues using GraphQL query."},{"lineNumber":131,"author":{"gitId":"-"},"content":" * @param issuesFilter - The issue filter."},{"lineNumber":132,"author":{"gitId":"-"},"content":" * @returns An observable array of filtered GithubIssues"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */"},{"lineNumber":134,"author":{"gitId":"-"},"content":" fetchIssuesGraphql(issuesFilter: RestGithubIssueFilter): Observable\u003cArray\u003cGithubIssue\u003e\u003e {"},{"lineNumber":135,"author":{"gitId":"-"},"content":" const graphqlFilter \u003d issuesFilter.convertToGraphqlFilter();"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return this.toFetchIssues(issuesFilter).pipe("},{"lineNumber":137,"author":{"gitId":"-"},"content":" filter((toFetch) \u003d\u003e toFetch),"},{"lineNumber":138,"author":{"gitId":"-"},"content":" mergeMap(() \u003d\u003e {"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return this.fetchGraphqlList\u003cFetchIssuesQuery, GithubGraphqlIssue\u003e("},{"lineNumber":140,"author":{"gitId":"-"},"content":" FetchIssues,"},{"lineNumber":141,"author":{"gitId":"-"},"content":" { owner: ORG_NAME, name: REPO, filter: graphqlFilter },"},{"lineNumber":142,"author":{"gitId":"-"},"content":" (result) \u003d\u003e result.data.repository.issues.edges,"},{"lineNumber":143,"author":{"gitId":"-"},"content":" GithubGraphqlIssue"},{"lineNumber":144,"author":{"gitId":"-"},"content":" );"},{"lineNumber":145,"author":{"gitId":"-"},"content":" })"},{"lineNumber":146,"author":{"gitId":"-"},"content":" );"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }"},{"lineNumber":148,"author":{"gitId":"-"},"content":""},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Checks if there are pages of filtered issues that are not cached in the cache model,"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * and updates the model to cache these new pages."},{"lineNumber":152,"author":{"gitId":"-"},"content":" * @param filter - The issue filter."},{"lineNumber":153,"author":{"gitId":"-"},"content":" * @returns Observable\u003cboolean\u003e that returns true if there are pages that do not exist in the cache model."},{"lineNumber":154,"author":{"gitId":"-"},"content":" */"},{"lineNumber":155,"author":{"gitId":"-"},"content":" private toFetchIssues(filter: RestGithubIssueFilter): Observable\u003cboolean\u003e {"},{"lineNumber":156,"author":{"gitId":"-"},"content":" let responseInFirstPage: GithubResponse\u003cGithubIssue[]\u003e;"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return this.getIssuesAPICall(filter, 1).pipe("},{"lineNumber":158,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue[]\u003e) \u003d\u003e {"},{"lineNumber":159,"author":{"gitId":"-"},"content":" responseInFirstPage \u003d response;"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return getNumberOfPages(response);"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":162,"author":{"gitId":"-"},"content":" mergeMap((numOfPages: number) \u003d\u003e {"},{"lineNumber":163,"author":{"gitId":"-"},"content":" const apiCalls: Observable\u003cGithubResponse\u003cGithubIssue[]\u003e\u003e[] \u003d [];"},{"lineNumber":164,"author":{"gitId":"-"},"content":" for (let i \u003d 2; i \u003c\u003d numOfPages; i++) {"},{"lineNumber":165,"author":{"gitId":"-"},"content":" apiCalls.push(this.getIssuesAPICall(filter, i));"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return apiCalls.length \u003d\u003d\u003d 0 ? of([]) : forkJoin(apiCalls);"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":169,"author":{"gitId":"-"},"content":" map((resultArray: GithubResponse\u003cGithubIssue[]\u003e[]) \u003d\u003e {"},{"lineNumber":170,"author":{"gitId":"-"},"content":" const responses \u003d [responseInFirstPage, ...resultArray];"},{"lineNumber":171,"author":{"gitId":"-"},"content":" const isCached \u003d responses.reduce((result, response) \u003d\u003e {"},{"lineNumber":172,"author":{"gitId":"-"},"content":" return result \u0026\u0026 response.isCached;"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }, true);"},{"lineNumber":174,"author":{"gitId":"-"},"content":" responses.forEach((resp, index) \u003d\u003e this.issuesCacheManager.set(index + 1, resp));"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return !isCached;"},{"lineNumber":176,"author":{"gitId":"-"},"content":" })"},{"lineNumber":177,"author":{"gitId":"-"},"content":" );"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }"},{"lineNumber":179,"author":{"gitId":"-"},"content":""},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * Checks if the specified repository exists."},{"lineNumber":182,"author":{"gitId":"-"},"content":" * @param owner - Owner of Specified Repository."},{"lineNumber":183,"author":{"gitId":"-"},"content":" * @param repo - Name of Repository."},{"lineNumber":184,"author":{"gitId":"-"},"content":" */"},{"lineNumber":185,"author":{"gitId":"-"},"content":" isRepositoryPresent(owner: string, repo: string): Observable\u003cboolean\u003e {"},{"lineNumber":186,"author":{"gitId":"-"},"content":" return from(octokit.repos.get({ owner: owner, repo: repo, headers: GithubService.IF_NONE_MATCH_EMPTY })).pipe("},{"lineNumber":187,"author":{"gitId":"-"},"content":" map((rawData: { status: number }) \u003d\u003e {"},{"lineNumber":188,"author":{"gitId":"-"},"content":" return rawData.status !\u003d\u003d ERRORCODE_NOT_FOUND;"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":190,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":191,"author":{"gitId":"-"},"content":" return of(false);"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":193,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch repo data.\u0027))"},{"lineNumber":194,"author":{"gitId":"-"},"content":" );"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }"},{"lineNumber":196,"author":{"gitId":"-"},"content":""},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Creates a repository in for the authenticated user location."},{"lineNumber":199,"author":{"gitId":"-"},"content":" * @param name - Name of Repo to create."},{"lineNumber":200,"author":{"gitId":"-"},"content":" * @return Observable\u003cboolean\u003e - That returns true if the repository has been successfully"},{"lineNumber":201,"author":{"gitId":"-"},"content":" * created."},{"lineNumber":202,"author":{"gitId":"-"},"content":" */"},{"lineNumber":203,"author":{"gitId":"-"},"content":" createRepository(name: string): void {"},{"lineNumber":204,"author":{"gitId":"-"},"content":" octokit.repos.createForAuthenticatedUser({ name: name });"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }"},{"lineNumber":206,"author":{"gitId":"-"},"content":""},{"lineNumber":207,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":208,"author":{"gitId":"nknguyenhc"},"content":" * Creates the `main` branch for the current repository."},{"lineNumber":209,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":210,"author":{"gitId":"nknguyenhc"},"content":" createBranch() {"},{"lineNumber":211,"author":{"gitId":"nknguyenhc"},"content":" return this.getDefaultBranch().pipe("},{"lineNumber":212,"author":{"gitId":"nknguyenhc"},"content":" mergeMap((res) \u003d\u003e this.getBranchHeadInfo(res)),"},{"lineNumber":213,"author":{"gitId":"nknguyenhc"},"content":" map((res) \u003d\u003e res.data.object.sha),"},{"lineNumber":214,"author":{"gitId":"nknguyenhc"},"content":" mergeMap((sha: string) \u003d\u003e this.createBranchFromCommit(sha)),"},{"lineNumber":215,"author":{"gitId":"nknguyenhc"},"content":" mergeMap(() \u003d\u003e this.isMainBranchPresent()),"},{"lineNumber":216,"author":{"gitId":"nknguyenhc"},"content":" throwIfFalse("},{"lineNumber":217,"author":{"gitId":"nknguyenhc"},"content":" (isBranchPresent: boolean) \u003d\u003e isBranchPresent,"},{"lineNumber":218,"author":{"gitId":"nknguyenhc"},"content":" () \u003d\u003e new Error(BRANCH_CREATION_FAILED)"},{"lineNumber":219,"author":{"gitId":"nknguyenhc"},"content":" )"},{"lineNumber":220,"author":{"gitId":"nknguyenhc"},"content":" );"},{"lineNumber":221,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":222,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":223,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":224,"author":{"gitId":"nknguyenhc"},"content":" * Creates the `main` branch for the current repository,"},{"lineNumber":225,"author":{"gitId":"nknguyenhc"},"content":" * from the commit with the given SHA."},{"lineNumber":226,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":227,"author":{"gitId":"nknguyenhc"},"content":" createBranchFromCommit(commitSha: string) {"},{"lineNumber":228,"author":{"gitId":"nknguyenhc"},"content":" return from("},{"lineNumber":229,"author":{"gitId":"nknguyenhc"},"content":" octokit.git.createRef({"},{"lineNumber":230,"author":{"gitId":"nknguyenhc"},"content":" owner: ORG_NAME,"},{"lineNumber":231,"author":{"gitId":"nknguyenhc"},"content":" repo: REPO,"},{"lineNumber":232,"author":{"gitId":"nknguyenhc"},"content":" ref: `refs/heads/${BRANCH}`,"},{"lineNumber":233,"author":{"gitId":"nknguyenhc"},"content":" sha: commitSha"},{"lineNumber":234,"author":{"gitId":"nknguyenhc"},"content":" })"},{"lineNumber":235,"author":{"gitId":"nknguyenhc"},"content":" );"},{"lineNumber":236,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":237,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":238,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":239,"author":{"gitId":"nknguyenhc"},"content":" * Get the default branch of the specified repository."},{"lineNumber":240,"author":{"gitId":"nknguyenhc"},"content":" * @param owner The owner of the repository."},{"lineNumber":241,"author":{"gitId":"nknguyenhc"},"content":" * @param repo The name of the repository."},{"lineNumber":242,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":243,"author":{"gitId":"nknguyenhc"},"content":" getDefaultBranch(): Observable\u003cstring\u003e {"},{"lineNumber":244,"author":{"gitId":"nknguyenhc"},"content":" return from("},{"lineNumber":245,"author":{"gitId":"nknguyenhc"},"content":" octokit.repos.get({"},{"lineNumber":246,"author":{"gitId":"nknguyenhc"},"content":" owner: ORG_NAME,"},{"lineNumber":247,"author":{"gitId":"nknguyenhc"},"content":" repo: REPO"},{"lineNumber":248,"author":{"gitId":"nknguyenhc"},"content":" })"},{"lineNumber":249,"author":{"gitId":"nknguyenhc"},"content":" ).pipe(map((res: any) \u003d\u003e res.data.default_branch));"},{"lineNumber":250,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":251,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":252,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":253,"author":{"gitId":"nknguyenhc"},"content":" * Get information of the head of the given branch name,"},{"lineNumber":254,"author":{"gitId":"nknguyenhc"},"content":" * in the current repository."},{"lineNumber":255,"author":{"gitId":"nknguyenhc"},"content":" * @param branch The name of the branch."},{"lineNumber":256,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":257,"author":{"gitId":"nknguyenhc"},"content":" getBranchHeadInfo(branch: string): Observable\u003cany\u003e {"},{"lineNumber":258,"author":{"gitId":"nknguyenhc"},"content":" return from("},{"lineNumber":259,"author":{"gitId":"nknguyenhc"},"content":" octokit.git.getRef({"},{"lineNumber":260,"author":{"gitId":"nknguyenhc"},"content":" owner: ORG_NAME,"},{"lineNumber":261,"author":{"gitId":"nknguyenhc"},"content":" repo: REPO,"},{"lineNumber":262,"author":{"gitId":"nknguyenhc"},"content":" ref: `heads/${branch}`"},{"lineNumber":263,"author":{"gitId":"nknguyenhc"},"content":" })"},{"lineNumber":264,"author":{"gitId":"nknguyenhc"},"content":" );"},{"lineNumber":265,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":266,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":267,"author":{"gitId":"nknguyenhc"},"content":" /**"},{"lineNumber":268,"author":{"gitId":"nknguyenhc"},"content":" * Checks if the repo already has the branch `main`."},{"lineNumber":269,"author":{"gitId":"nknguyenhc"},"content":" */"},{"lineNumber":270,"author":{"gitId":"nknguyenhc"},"content":" isMainBranchPresent(): Observable\u003cboolean\u003e {"},{"lineNumber":271,"author":{"gitId":"nknguyenhc"},"content":" return from("},{"lineNumber":272,"author":{"gitId":"nknguyenhc"},"content":" octokit.git.getRef({"},{"lineNumber":273,"author":{"gitId":"nknguyenhc"},"content":" owner: ORG_NAME,"},{"lineNumber":274,"author":{"gitId":"nknguyenhc"},"content":" repo: REPO,"},{"lineNumber":275,"author":{"gitId":"nknguyenhc"},"content":" ref: `heads/${BRANCH}`"},{"lineNumber":276,"author":{"gitId":"nknguyenhc"},"content":" })"},{"lineNumber":277,"author":{"gitId":"nknguyenhc"},"content":" ).pipe("},{"lineNumber":278,"author":{"gitId":"nknguyenhc"},"content":" map((res: any) \u003d\u003e res.status !\u003d\u003d ERRORCODE_NOT_FOUND),"},{"lineNumber":279,"author":{"gitId":"nknguyenhc"},"content":" catchError(() \u003d\u003e {"},{"lineNumber":280,"author":{"gitId":"nknguyenhc"},"content":" return of(false);"},{"lineNumber":281,"author":{"gitId":"nknguyenhc"},"content":" })"},{"lineNumber":282,"author":{"gitId":"nknguyenhc"},"content":" );"},{"lineNumber":283,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":284,"author":{"gitId":"nknguyenhc"},"content":""},{"lineNumber":285,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":286,"author":{"gitId":"-"},"content":" * Fetches information about an issue using GraphQL."},{"lineNumber":287,"author":{"gitId":"-"},"content":" *"},{"lineNumber":288,"author":{"gitId":"-"},"content":" * If the issue is not modified, return a `304 - Not Modified` response."},{"lineNumber":289,"author":{"gitId":"-"},"content":" *"},{"lineNumber":290,"author":{"gitId":"-"},"content":" * @param id - The issue id."},{"lineNumber":291,"author":{"gitId":"-"},"content":" * @returns Observable\u003cGithubGraphqlIssue\u003e that represents the response object."},{"lineNumber":292,"author":{"gitId":"-"},"content":" */"},{"lineNumber":293,"author":{"gitId":"-"},"content":" fetchIssueGraphql(id: number): Observable\u003cGithubGraphqlIssue\u003e {"},{"lineNumber":294,"author":{"gitId":"-"},"content":" if (this.issueQueryRefs.get(id) \u003d\u003d\u003d undefined) {"},{"lineNumber":295,"author":{"gitId":"-"},"content":" const newQueryRef \u003d this.apollo.watchQuery\u003cFetchIssueQuery\u003e({"},{"lineNumber":296,"author":{"gitId":"-"},"content":" query: FetchIssue,"},{"lineNumber":297,"author":{"gitId":"-"},"content":" variables: {"},{"lineNumber":298,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":299,"author":{"gitId":"-"},"content":" name: REPO,"},{"lineNumber":300,"author":{"gitId":"-"},"content":" issueId: id"},{"lineNumber":301,"author":{"gitId":"-"},"content":" }"},{"lineNumber":302,"author":{"gitId":"-"},"content":" });"},{"lineNumber":303,"author":{"gitId":"-"},"content":" this.issueQueryRefs.set(id, newQueryRef);"},{"lineNumber":304,"author":{"gitId":"-"},"content":" }"},{"lineNumber":305,"author":{"gitId":"-"},"content":""},{"lineNumber":306,"author":{"gitId":"-"},"content":" const queryRef \u003d this.issueQueryRefs.get(id);"},{"lineNumber":307,"author":{"gitId":"-"},"content":" return this.toFetchIssue(id).pipe("},{"lineNumber":308,"author":{"gitId":"-"},"content":" filter((toFetch) \u003d\u003e toFetch),"},{"lineNumber":309,"author":{"gitId":"-"},"content":" mergeMap(() \u003d\u003e from(queryRef.refetch())),"},{"lineNumber":310,"author":{"gitId":"-"},"content":" map((value: ApolloQueryResult\u003cFetchIssueQuery\u003e) \u003d\u003e {"},{"lineNumber":311,"author":{"gitId":"-"},"content":" return new GithubGraphqlIssue(value.data.repository.issue);"},{"lineNumber":312,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":313,"author":{"gitId":"-"},"content":" throwIfEmpty(() \u003d\u003e new HttpErrorResponse({ status: 304 }))"},{"lineNumber":314,"author":{"gitId":"-"},"content":" );"},{"lineNumber":315,"author":{"gitId":"-"},"content":" }"},{"lineNumber":316,"author":{"gitId":"-"},"content":""},{"lineNumber":317,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":318,"author":{"gitId":"-"},"content":" * Checks if the issue has been modified since the last query, and"},{"lineNumber":319,"author":{"gitId":"-"},"content":" * updates the model to reflect the last modified time."},{"lineNumber":320,"author":{"gitId":"-"},"content":" *"},{"lineNumber":321,"author":{"gitId":"-"},"content":" * @param id - The issue id."},{"lineNumber":322,"author":{"gitId":"-"},"content":" * @returns Observable\u003cboolean\u003e that returns true if the issue has been modified."},{"lineNumber":323,"author":{"gitId":"-"},"content":" */"},{"lineNumber":324,"author":{"gitId":"-"},"content":" toFetchIssue(id: number): Observable\u003cboolean\u003e {"},{"lineNumber":325,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":326,"author":{"gitId":"-"},"content":" octokit.issues.get({"},{"lineNumber":327,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":328,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":329,"author":{"gitId":"-"},"content":" issue_number: id,"},{"lineNumber":330,"author":{"gitId":"-"},"content":" headers: { \u0027If-Modified-Since\u0027: this.issuesLastModifiedManager.get(id) }"},{"lineNumber":331,"author":{"gitId":"-"},"content":" })"},{"lineNumber":332,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":333,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue\u003e) \u003d\u003e {"},{"lineNumber":334,"author":{"gitId":"-"},"content":" this.issuesLastModifiedManager.set(id, response.headers[\u0027last-modified\u0027]);"},{"lineNumber":335,"author":{"gitId":"-"},"content":" return true;"},{"lineNumber":336,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":337,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch issue.\u0027))"},{"lineNumber":338,"author":{"gitId":"-"},"content":" );"},{"lineNumber":339,"author":{"gitId":"-"},"content":" }"},{"lineNumber":340,"author":{"gitId":"-"},"content":""},{"lineNumber":341,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":342,"author":{"gitId":"-"},"content":" * Fetches all labels in the current repository."},{"lineNumber":343,"author":{"gitId":"-"},"content":" */"},{"lineNumber":344,"author":{"gitId":"-"},"content":" fetchAllLabels(): Observable\u003cArray\u003cGithubLabel\u003e\u003e {"},{"lineNumber":345,"author":{"gitId":"-"},"content":" const githubLabels \u003d this.fetchGraphqlList\u003cFetchLabelsQuery, GithubLabel\u003e("},{"lineNumber":346,"author":{"gitId":"-"},"content":" FetchLabels,"},{"lineNumber":347,"author":{"gitId":"-"},"content":" { owner: ORG_NAME, name: REPO },"},{"lineNumber":348,"author":{"gitId":"-"},"content":" (result) \u003d\u003e result.data.repository.labels.edges,"},{"lineNumber":349,"author":{"gitId":"-"},"content":" GithubLabel"},{"lineNumber":350,"author":{"gitId":"-"},"content":" );"},{"lineNumber":351,"author":{"gitId":"-"},"content":""},{"lineNumber":352,"author":{"gitId":"-"},"content":" return githubLabels.pipe(catchError((err) \u003d\u003e throwError(\u0027Failed to fetch labels.\u0027)));"},{"lineNumber":353,"author":{"gitId":"-"},"content":" }"},{"lineNumber":354,"author":{"gitId":"-"},"content":""},{"lineNumber":355,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":356,"author":{"gitId":"-"},"content":" * Creates a label in the current repository."},{"lineNumber":357,"author":{"gitId":"-"},"content":" * @param formattedLabelName - name of new label."},{"lineNumber":358,"author":{"gitId":"-"},"content":" * @param labelColor - colour of new label."},{"lineNumber":359,"author":{"gitId":"-"},"content":" */"},{"lineNumber":360,"author":{"gitId":"-"},"content":" createLabel(formattedLabelName: string, labelColor: string): void {"},{"lineNumber":361,"author":{"gitId":"-"},"content":" octokit.issues.createLabel({ owner: ORG_NAME, repo: REPO, name: formattedLabelName, color: labelColor });"},{"lineNumber":362,"author":{"gitId":"-"},"content":" }"},{"lineNumber":363,"author":{"gitId":"-"},"content":""},{"lineNumber":364,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":365,"author":{"gitId":"-"},"content":" * Updates a label\u0027s information in the current repository."},{"lineNumber":366,"author":{"gitId":"-"},"content":" * @param labelName - name of existing label"},{"lineNumber":367,"author":{"gitId":"-"},"content":" * @param labelColor - new color to be assigned to existing label."},{"lineNumber":368,"author":{"gitId":"-"},"content":" */"},{"lineNumber":369,"author":{"gitId":"-"},"content":" updateLabel(labelName: string, labelColor: string): void {"},{"lineNumber":370,"author":{"gitId":"-"},"content":" octokit.issues.updateLabel({ owner: ORG_NAME, repo: REPO, name: labelName, current_name: labelName, color: labelColor });"},{"lineNumber":371,"author":{"gitId":"-"},"content":" }"},{"lineNumber":372,"author":{"gitId":"-"},"content":""},{"lineNumber":373,"author":{"gitId":"-"},"content":" closeIssue(id: number): Observable\u003cGithubIssue\u003e {"},{"lineNumber":374,"author":{"gitId":"-"},"content":" return from(octokit.issues.update({ owner: ORG_NAME, repo: REPO, issue_number: id, state: \u0027closed\u0027 })).pipe("},{"lineNumber":375,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue\u003e) \u003d\u003e {"},{"lineNumber":376,"author":{"gitId":"-"},"content":" this.issuesLastModifiedManager.set(id, response.headers[\u0027last-modified\u0027]);"},{"lineNumber":377,"author":{"gitId":"-"},"content":" return new GithubIssue(response.data);"},{"lineNumber":378,"author":{"gitId":"-"},"content":" })"},{"lineNumber":379,"author":{"gitId":"-"},"content":" );"},{"lineNumber":380,"author":{"gitId":"-"},"content":" }"},{"lineNumber":381,"author":{"gitId":"-"},"content":""},{"lineNumber":382,"author":{"gitId":"-"},"content":" reopenIssue(id: number): Observable\u003cGithubIssue\u003e {"},{"lineNumber":383,"author":{"gitId":"-"},"content":" return from(octokit.issues.update({ owner: ORG_NAME, repo: REPO, issue_number: id, state: \u0027open\u0027 })).pipe("},{"lineNumber":384,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue\u003e) \u003d\u003e {"},{"lineNumber":385,"author":{"gitId":"-"},"content":" this.issuesLastModifiedManager.set(id, response.headers[\u0027last-modified\u0027]);"},{"lineNumber":386,"author":{"gitId":"-"},"content":" return new GithubIssue(response.data);"},{"lineNumber":387,"author":{"gitId":"-"},"content":" })"},{"lineNumber":388,"author":{"gitId":"-"},"content":" );"},{"lineNumber":389,"author":{"gitId":"-"},"content":" }"},{"lineNumber":390,"author":{"gitId":"-"},"content":""},{"lineNumber":391,"author":{"gitId":"-"},"content":" createIssue(title: string, description: string, labels: string[]): Observable\u003cGithubIssue\u003e {"},{"lineNumber":392,"author":{"gitId":"-"},"content":" return from(octokit.issues.create({ owner: ORG_NAME, repo: REPO, title: title, body: description, labels: labels })).pipe("},{"lineNumber":393,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue\u003e) \u003d\u003e {"},{"lineNumber":394,"author":{"gitId":"-"},"content":" return new GithubIssue(response.data);"},{"lineNumber":395,"author":{"gitId":"-"},"content":" })"},{"lineNumber":396,"author":{"gitId":"-"},"content":" );"},{"lineNumber":397,"author":{"gitId":"-"},"content":" }"},{"lineNumber":398,"author":{"gitId":"-"},"content":""},{"lineNumber":399,"author":{"gitId":"-"},"content":" createIssueComment(issueId: number, description: string): Observable\u003cGithubComment\u003e {"},{"lineNumber":400,"author":{"gitId":"-"},"content":" return from(octokit.issues.createComment({ owner: ORG_NAME, repo: REPO, issue_number: issueId, body: description })).pipe("},{"lineNumber":401,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubComment\u003e) \u003d\u003e {"},{"lineNumber":402,"author":{"gitId":"-"},"content":" return response.data;"},{"lineNumber":403,"author":{"gitId":"-"},"content":" })"},{"lineNumber":404,"author":{"gitId":"-"},"content":" );"},{"lineNumber":405,"author":{"gitId":"-"},"content":" }"},{"lineNumber":406,"author":{"gitId":"-"},"content":""},{"lineNumber":407,"author":{"gitId":"-"},"content":" updateIssue(id: number, title: string, description: string, labels: string[], assignees?: string[]): Observable\u003cGithubIssue\u003e {"},{"lineNumber":408,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":409,"author":{"gitId":"-"},"content":" octokit.issues.update({"},{"lineNumber":410,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":411,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":412,"author":{"gitId":"-"},"content":" issue_number: id,"},{"lineNumber":413,"author":{"gitId":"-"},"content":" title: title,"},{"lineNumber":414,"author":{"gitId":"-"},"content":" body: description,"},{"lineNumber":415,"author":{"gitId":"-"},"content":" labels: labels,"},{"lineNumber":416,"author":{"gitId":"-"},"content":" assignees: assignees"},{"lineNumber":417,"author":{"gitId":"-"},"content":" })"},{"lineNumber":418,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":419,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubIssue\u003e) \u003d\u003e {"},{"lineNumber":420,"author":{"gitId":"-"},"content":" this.issuesLastModifiedManager.set(id, response.headers[\u0027last-modified\u0027]);"},{"lineNumber":421,"author":{"gitId":"-"},"content":" return new GithubIssue(response.data);"},{"lineNumber":422,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":423,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":424,"author":{"gitId":"-"},"content":" return throwError(err);"},{"lineNumber":425,"author":{"gitId":"-"},"content":" })"},{"lineNumber":426,"author":{"gitId":"-"},"content":" );"},{"lineNumber":427,"author":{"gitId":"-"},"content":" }"},{"lineNumber":428,"author":{"gitId":"-"},"content":""},{"lineNumber":429,"author":{"gitId":"-"},"content":" updateIssueComment(issueComment: IssueComment): Observable\u003cGithubComment\u003e {"},{"lineNumber":430,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":431,"author":{"gitId":"-"},"content":" octokit.issues.updateComment({ owner: ORG_NAME, repo: REPO, comment_id: issueComment.id, body: issueComment.description })"},{"lineNumber":432,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":433,"author":{"gitId":"-"},"content":" map((response: GithubResponse\u003cGithubComment\u003e) \u003d\u003e {"},{"lineNumber":434,"author":{"gitId":"-"},"content":" return response.data;"},{"lineNumber":435,"author":{"gitId":"-"},"content":" })"},{"lineNumber":436,"author":{"gitId":"-"},"content":" );"},{"lineNumber":437,"author":{"gitId":"-"},"content":" }"},{"lineNumber":438,"author":{"gitId":"-"},"content":""},{"lineNumber":439,"author":{"gitId":"-"},"content":" uploadFile(filename: string, base64String: string): Observable\u003cany\u003e {"},{"lineNumber":440,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":441,"author":{"gitId":"-"},"content":" octokit.repos.createOrUpdateFile({"},{"lineNumber":442,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":443,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":444,"author":{"gitId":"nknguyenhc"},"content":" branch: BRANCH,"},{"lineNumber":445,"author":{"gitId":"-"},"content":" path: `files/${filename}`,"},{"lineNumber":446,"author":{"gitId":"-"},"content":" message: \u0027upload file\u0027,"},{"lineNumber":447,"author":{"gitId":"-"},"content":" content: base64String"},{"lineNumber":448,"author":{"gitId":"-"},"content":" })"},{"lineNumber":449,"author":{"gitId":"-"},"content":" );"},{"lineNumber":450,"author":{"gitId":"-"},"content":" }"},{"lineNumber":451,"author":{"gitId":"-"},"content":""},{"lineNumber":452,"author":{"gitId":"-"},"content":" fetchEventsForRepo(): Observable\u003cany[]\u003e {"},{"lineNumber":453,"author":{"gitId":"-"},"content":" return from(octokit.issues.listEventsForRepo({ owner: ORG_NAME, repo: REPO, headers: GithubService.IF_NONE_MATCH_EMPTY })).pipe("},{"lineNumber":454,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":455,"author":{"gitId":"-"},"content":" return response[\u0027data\u0027];"},{"lineNumber":456,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":457,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch events for repo.\u0027))"},{"lineNumber":458,"author":{"gitId":"-"},"content":" );"},{"lineNumber":459,"author":{"gitId":"-"},"content":" }"},{"lineNumber":460,"author":{"gitId":"-"},"content":""},{"lineNumber":461,"author":{"gitId":"-"},"content":" fetchDataFile(): Observable\u003c{}\u003e {"},{"lineNumber":462,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":463,"author":{"gitId":"-"},"content":" octokit.repos.getContents({ owner: MOD_ORG, repo: DATA_REPO, path: \u0027data.csv\u0027, headers: GithubService.IF_NONE_MATCH_EMPTY })"},{"lineNumber":464,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":465,"author":{"gitId":"-"},"content":" map((rawData) \u003d\u003e {"},{"lineNumber":466,"author":{"gitId":"-"},"content":" return { data: atob(rawData[\u0027data\u0027][\u0027content\u0027]) };"},{"lineNumber":467,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":468,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch data file.\u0027))"},{"lineNumber":469,"author":{"gitId":"-"},"content":" );"},{"lineNumber":470,"author":{"gitId":"-"},"content":" }"},{"lineNumber":471,"author":{"gitId":"-"},"content":""},{"lineNumber":472,"author":{"gitId":"-"},"content":" fetchLatestRelease(): Observable\u003cGithubRelease\u003e {"},{"lineNumber":473,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":474,"author":{"gitId":"-"},"content":" octokit.repos.getLatestRelease({ owner: CATCHER_ORG, repo: CATCHER_REPO, headers: GithubService.IF_NONE_MATCH_EMPTY })"},{"lineNumber":475,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":476,"author":{"gitId":"-"},"content":" map((res) \u003d\u003e res[\u0027data\u0027]),"},{"lineNumber":477,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch latest release.\u0027))"},{"lineNumber":478,"author":{"gitId":"-"},"content":" );"},{"lineNumber":479,"author":{"gitId":"-"},"content":" }"},{"lineNumber":480,"author":{"gitId":"-"},"content":""},{"lineNumber":481,"author":{"gitId":"-"},"content":" private fetchSettingsFromRawUrl(): Observable\u003cSessionData\u003e {"},{"lineNumber":482,"author":{"gitId":"-"},"content":" return from(fetch(getSettingsUrl(MOD_ORG, DATA_REPO))).pipe("},{"lineNumber":483,"author":{"gitId":"-"},"content":" mergeMap((res) \u003d\u003e res.json()),"},{"lineNumber":484,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch settings file.\u0027))"},{"lineNumber":485,"author":{"gitId":"-"},"content":" );"},{"lineNumber":486,"author":{"gitId":"-"},"content":" }"},{"lineNumber":487,"author":{"gitId":"-"},"content":""},{"lineNumber":488,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":489,"author":{"gitId":"-"},"content":" * Fetches the data file that is regulates session information."},{"lineNumber":490,"author":{"gitId":"-"},"content":" * @return Observable\u003cSessionData\u003e representing session information."},{"lineNumber":491,"author":{"gitId":"-"},"content":" */"},{"lineNumber":492,"author":{"gitId":"-"},"content":" fetchSettingsFile(): Observable\u003cSessionData\u003e {"},{"lineNumber":493,"author":{"gitId":"-"},"content":" return from("},{"lineNumber":494,"author":{"gitId":"-"},"content":" octokit.repos.getContents({ owner: MOD_ORG, repo: DATA_REPO, path: \u0027settings.json\u0027, headers: GithubService.IF_NONE_MATCH_EMPTY })"},{"lineNumber":495,"author":{"gitId":"-"},"content":" ).pipe("},{"lineNumber":496,"author":{"gitId":"-"},"content":" map((rawData) \u003d\u003e JSON.parse(atob(rawData[\u0027data\u0027][\u0027content\u0027]))),"},{"lineNumber":497,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":498,"author":{"gitId":"-"},"content":" this.logger.error("},{"lineNumber":499,"author":{"gitId":"-"},"content":" \u0027GithubService: Failed to fetch settings file via REST API. Trying to fetch using raw.githubusercontent.com: \u0027,"},{"lineNumber":500,"author":{"gitId":"-"},"content":" err"},{"lineNumber":501,"author":{"gitId":"-"},"content":" );"},{"lineNumber":502,"author":{"gitId":"-"},"content":" return this.fetchSettingsFromRawUrl();"},{"lineNumber":503,"author":{"gitId":"-"},"content":" })"},{"lineNumber":504,"author":{"gitId":"-"},"content":" );"},{"lineNumber":505,"author":{"gitId":"-"},"content":" }"},{"lineNumber":506,"author":{"gitId":"-"},"content":""},{"lineNumber":507,"author":{"gitId":"-"},"content":" fetchAuthenticatedUser(): Observable\u003cGithubUser\u003e {"},{"lineNumber":508,"author":{"gitId":"-"},"content":" return from(octokit.users.getAuthenticated()).pipe("},{"lineNumber":509,"author":{"gitId":"-"},"content":" map((response) \u003d\u003e {"},{"lineNumber":510,"author":{"gitId":"-"},"content":" return response[\u0027data\u0027];"},{"lineNumber":511,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":512,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e throwError(\u0027Failed to fetch authenticated user.\u0027))"},{"lineNumber":513,"author":{"gitId":"-"},"content":" );"},{"lineNumber":514,"author":{"gitId":"-"},"content":" }"},{"lineNumber":515,"author":{"gitId":"-"},"content":""},{"lineNumber":516,"author":{"gitId":"-"},"content":" getRepoURL(): string {"},{"lineNumber":517,"author":{"gitId":"-"},"content":" return ORG_NAME.concat(\u0027/\u0027).concat(REPO);"},{"lineNumber":518,"author":{"gitId":"-"},"content":" }"},{"lineNumber":519,"author":{"gitId":"-"},"content":""},{"lineNumber":520,"author":{"gitId":"-"},"content":" viewIssueInBrowser(id: number, event: Event) {"},{"lineNumber":521,"author":{"gitId":"-"},"content":" if (id) {"},{"lineNumber":522,"author":{"gitId":"-"},"content":" window.open(\u0027https://github.com/\u0027.concat(this.getRepoURL()).concat(\u0027/issues/\u0027).concat(String(id)));"},{"lineNumber":523,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":524,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(new Error(UNABLE_TO_OPEN_IN_BROWSER));"},{"lineNumber":525,"author":{"gitId":"-"},"content":" }"},{"lineNumber":526,"author":{"gitId":"-"},"content":" event.stopPropagation();"},{"lineNumber":527,"author":{"gitId":"-"},"content":" }"},{"lineNumber":528,"author":{"gitId":"-"},"content":""},{"lineNumber":529,"author":{"gitId":"-"},"content":" reset(): void {"},{"lineNumber":530,"author":{"gitId":"-"},"content":" this.logger.info(`GithubService: Resetting issues cache`);"},{"lineNumber":531,"author":{"gitId":"-"},"content":" this.issuesCacheManager.clear();"},{"lineNumber":532,"author":{"gitId":"-"},"content":" this.issuesLastModifiedManager.clear();"},{"lineNumber":533,"author":{"gitId":"-"},"content":" this.issueQueryRefs.clear();"},{"lineNumber":534,"author":{"gitId":"-"},"content":" }"},{"lineNumber":535,"author":{"gitId":"-"},"content":""},{"lineNumber":536,"author":{"gitId":"-"},"content":" getProfilesData(): Promise\u003cResponse\u003e {"},{"lineNumber":537,"author":{"gitId":"-"},"content":" return fetch(AppConfig.clientDataUrl);"},{"lineNumber":538,"author":{"gitId":"-"},"content":" }"},{"lineNumber":539,"author":{"gitId":"-"},"content":""},{"lineNumber":540,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":541,"author":{"gitId":"-"},"content":" * Performs an API call to fetch a page of filtered issues with a given pageNumber."},{"lineNumber":542,"author":{"gitId":"-"},"content":" *"},{"lineNumber":543,"author":{"gitId":"-"},"content":" * The request is sent with the ETag of the latest cached HTTP response."},{"lineNumber":544,"author":{"gitId":"-"},"content":" * If page requested has the same ETag, or the request results in an error,"},{"lineNumber":545,"author":{"gitId":"-"},"content":" * then the cached page is returned instead."},{"lineNumber":546,"author":{"gitId":"-"},"content":" *"},{"lineNumber":547,"author":{"gitId":"-"},"content":" * @param filter - The issue filter"},{"lineNumber":548,"author":{"gitId":"-"},"content":" * @param pageNumber - The page to be fetched"},{"lineNumber":549,"author":{"gitId":"-"},"content":" * @returns An observable representing the response containing a single page of filtered issues"},{"lineNumber":550,"author":{"gitId":"-"},"content":" */"},{"lineNumber":551,"author":{"gitId":"-"},"content":" private getIssuesAPICall(filter: RestGithubIssueFilter, pageNumber: number): Observable\u003cGithubResponse\u003cGithubIssue[]\u003e\u003e {"},{"lineNumber":552,"author":{"gitId":"-"},"content":" const apiCall: Promise\u003cGithubResponse\u003cGithubIssue[]\u003e\u003e \u003d octokit.issues.listForRepo({"},{"lineNumber":553,"author":{"gitId":"-"},"content":" ...filter,"},{"lineNumber":554,"author":{"gitId":"-"},"content":" owner: ORG_NAME,"},{"lineNumber":555,"author":{"gitId":"-"},"content":" repo: REPO,"},{"lineNumber":556,"author":{"gitId":"-"},"content":" sort: \u0027created\u0027,"},{"lineNumber":557,"author":{"gitId":"-"},"content":" direction: \u0027desc\u0027,"},{"lineNumber":558,"author":{"gitId":"-"},"content":" per_page: MAX_ITEMS_PER_PAGE,"},{"lineNumber":559,"author":{"gitId":"-"},"content":" page: pageNumber,"},{"lineNumber":560,"author":{"gitId":"-"},"content":" headers: { \u0027If-None-Match\u0027: this.issuesCacheManager.getEtagFor(pageNumber) }"},{"lineNumber":561,"author":{"gitId":"-"},"content":" });"},{"lineNumber":562,"author":{"gitId":"-"},"content":" const apiCall$ \u003d from(apiCall);"},{"lineNumber":563,"author":{"gitId":"-"},"content":" return apiCall$.pipe("},{"lineNumber":564,"author":{"gitId":"-"},"content":" catchError((err) \u003d\u003e {"},{"lineNumber":565,"author":{"gitId":"-"},"content":" return of(this.issuesCacheManager.get(pageNumber));"},{"lineNumber":566,"author":{"gitId":"-"},"content":" })"},{"lineNumber":567,"author":{"gitId":"-"},"content":" );"},{"lineNumber":568,"author":{"gitId":"-"},"content":" }"},{"lineNumber":569,"author":{"gitId":"-"},"content":""},{"lineNumber":570,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":571,"author":{"gitId":"-"},"content":" * Fetches a list of items using a GraphQL query that queries for paginated data."},{"lineNumber":572,"author":{"gitId":"-"},"content":" *"},{"lineNumber":573,"author":{"gitId":"-"},"content":" * @param query - The GraphQL query that queries for paginated data."},{"lineNumber":574,"author":{"gitId":"-"},"content":" * @param variables - Additional variables for the GraphQL query."},{"lineNumber":575,"author":{"gitId":"-"},"content":" * @callback pluckEdges A function that returns a list of edges in a ApolloQueryResult."},{"lineNumber":576,"author":{"gitId":"-"},"content":" * @callback Model Constructor for the item model."},{"lineNumber":577,"author":{"gitId":"-"},"content":" * @returns A list of items from the query."},{"lineNumber":578,"author":{"gitId":"-"},"content":" */"},{"lineNumber":579,"author":{"gitId":"-"},"content":" private fetchGraphqlList\u003cT, M\u003e("},{"lineNumber":580,"author":{"gitId":"-"},"content":" query: DocumentNode,"},{"lineNumber":581,"author":{"gitId":"-"},"content":" variables: {},"},{"lineNumber":582,"author":{"gitId":"-"},"content":" pluckEdges: (results: ApolloQueryResult\u003cT\u003e) \u003d\u003e Array\u003cany\u003e,"},{"lineNumber":583,"author":{"gitId":"-"},"content":" Model: new (data) \u003d\u003e M"},{"lineNumber":584,"author":{"gitId":"-"},"content":" ): Observable\u003cArray\u003cM\u003e\u003e {"},{"lineNumber":585,"author":{"gitId":"-"},"content":" return from(this.withPagination\u003cT\u003e(pluckEdges)(query, variables)).pipe("},{"lineNumber":586,"author":{"gitId":"-"},"content":" map((results: Array\u003cApolloQueryResult\u003cT\u003e\u003e) \u003d\u003e {"},{"lineNumber":587,"author":{"gitId":"-"},"content":" const issues \u003d results.reduce((accumulated, current) \u003d\u003e accumulated.concat(pluckEdges(current)), []);"},{"lineNumber":588,"author":{"gitId":"-"},"content":" return issues.map((issue) \u003d\u003e new Model(issue.node));"},{"lineNumber":589,"author":{"gitId":"-"},"content":" }),"},{"lineNumber":590,"author":{"gitId":"-"},"content":" throwIfEmpty(() \u003d\u003e {"},{"lineNumber":591,"author":{"gitId":"-"},"content":" return new HttpErrorResponse({ status: 304 });"},{"lineNumber":592,"author":{"gitId":"-"},"content":" })"},{"lineNumber":593,"author":{"gitId":"-"},"content":" );"},{"lineNumber":594,"author":{"gitId":"-"},"content":" }"},{"lineNumber":595,"author":{"gitId":"-"},"content":""},{"lineNumber":596,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":597,"author":{"gitId":"-"},"content":" * Returns an async function that will accept a GraphQL query that requests for paginated items."},{"lineNumber":598,"author":{"gitId":"-"},"content":" * Said function will recursively query for all subsequent pages until a page that has less than 100 items is found,"},{"lineNumber":599,"author":{"gitId":"-"},"content":" * then return all queried pages in an array."},{"lineNumber":600,"author":{"gitId":"-"},"content":" *"},{"lineNumber":601,"author":{"gitId":"-"},"content":" * @callback pluckEdges - A function that returns a list of edges in a ApolloQueryResult."},{"lineNumber":602,"author":{"gitId":"-"},"content":" * @returns an async function that accepts a GraphQL query for paginated data and any additional variables to that query"},{"lineNumber":603,"author":{"gitId":"-"},"content":" */"},{"lineNumber":604,"author":{"gitId":"-"},"content":" private withPagination\u003cT\u003e(pluckEdges: (results: ApolloQueryResult\u003cT\u003e) \u003d\u003e Array\u003cany\u003e) {"},{"lineNumber":605,"author":{"gitId":"-"},"content":" return async (query: DocumentNode, variables: { [key: string]: any } \u003d {}): Promise\u003cArray\u003cApolloQueryResult\u003cT\u003e\u003e\u003e \u003d\u003e {"},{"lineNumber":606,"author":{"gitId":"-"},"content":" const cursor \u003d variables.cursor || null;"},{"lineNumber":607,"author":{"gitId":"-"},"content":" const graphqlQuery \u003d this.apollo.watchQuery\u003cT\u003e({ query, variables: { ...variables, cursor } });"},{"lineNumber":608,"author":{"gitId":"-"},"content":" return graphqlQuery.refetch().then(async (results: ApolloQueryResult\u003cT\u003e) \u003d\u003e {"},{"lineNumber":609,"author":{"gitId":"-"},"content":" const intermediate \u003d Array.isArray(results) ? results : [results];"},{"lineNumber":610,"author":{"gitId":"-"},"content":" const edges \u003d pluckEdges(results);"},{"lineNumber":611,"author":{"gitId":"-"},"content":" const nextCursor \u003d edges.length \u003d\u003d\u003d 0 ? null : edges[edges.length - 1].cursor;"},{"lineNumber":612,"author":{"gitId":"-"},"content":""},{"lineNumber":613,"author":{"gitId":"-"},"content":" if (edges.length \u003c MAX_ITEMS_PER_PAGE || !nextCursor) {"},{"lineNumber":614,"author":{"gitId":"-"},"content":" return intermediate;"},{"lineNumber":615,"author":{"gitId":"-"},"content":" }"},{"lineNumber":616,"author":{"gitId":"-"},"content":" const nextResults \u003d await this.withPagination\u003cT\u003e(pluckEdges)(query, {"},{"lineNumber":617,"author":{"gitId":"-"},"content":" ...variables,"},{"lineNumber":618,"author":{"gitId":"-"},"content":" cursor: nextCursor"},{"lineNumber":619,"author":{"gitId":"-"},"content":" });"},{"lineNumber":620,"author":{"gitId":"-"},"content":" return intermediate.concat(nextResults);"},{"lineNumber":621,"author":{"gitId":"-"},"content":" });"},{"lineNumber":622,"author":{"gitId":"-"},"content":" };"},{"lineNumber":623,"author":{"gitId":"-"},"content":" }"},{"lineNumber":624,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":82,"-":542}},{"path":"src/app/core/services/upload.service.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Injectable } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"nknguyenhc"},"content":"import { of, throwError } from \u0027rxjs\u0027;"},{"lineNumber":3,"author":{"gitId":"nknguyenhc"},"content":"import { catchError, mergeMap } from \u0027rxjs/operators\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { uuid } from \u0027../../shared/lib/uuid\u0027;"},{"lineNumber":5,"author":{"gitId":"nknguyenhc"},"content":"import { ERRORCODE_NOT_FOUND } from \u0027./error-handling.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027./github.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"const SUPPORTED_VIDEO_FILE_TYPES \u003d [\u0027mp4\u0027, \u0027mov\u0027];"},{"lineNumber":9,"author":{"gitId":"-"},"content":"export const SUPPORTED_FILE_TYPES \u003d ["},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u0027gif\u0027,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u0027jpeg\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u0027jpg\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u0027png\u0027,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u0027docx\u0027,"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u0027gz\u0027,"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u0027log\u0027,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u0027pdf\u0027,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u0027pptx\u0027,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u0027txt\u0027,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u0027xlsx\u0027,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u0027zip\u0027,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" ...SUPPORTED_VIDEO_FILE_TYPES"},{"lineNumber":23,"author":{"gitId":"-"},"content":"];"},{"lineNumber":24,"author":{"gitId":"-"},"content":"export const FILE_TYPE_SUPPORT_ERROR \u003d \"We don\u0027t support that file type.\" + \u0027 Try again with \u0027 + SUPPORTED_FILE_TYPES.join(\u0027, \u0027) + \u0027.\u0027;"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns an error message string for when file exceeds the defined size limit"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @param fileType Canonical name for file, not to be confused with file extension"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @param size Number of MBs"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */"},{"lineNumber":30,"author":{"gitId":"-"},"content":"export const getSizeExceedErrorMsg \u003d (fileType: string, size: number): string \u003d\u003e `Oops, ${fileType} is too big. Keep it under ${size}MiB.`;"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":"@Injectable({"},{"lineNumber":33,"author":{"gitId":"-"},"content":" providedIn: \u0027root\u0027"},{"lineNumber":34,"author":{"gitId":"-"},"content":"})"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Responsible for upload of media files to the current phase\u0027s repository."},{"lineNumber":38,"author":{"gitId":"-"},"content":" */"},{"lineNumber":39,"author":{"gitId":"-"},"content":"export class UploadService {"},{"lineNumber":40,"author":{"gitId":"-"},"content":" constructor(private githubService: GithubService) {}"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" uploadFile(base64File: string | ArrayBuffer, userFilename: string) {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" let base64String: string;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (base64File instanceof ArrayBuffer) {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" base64String \u003d String.fromCharCode.apply(null, new Uint16Array(base64File));"},{"lineNumber":46,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" base64String \u003d base64File;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }"},{"lineNumber":49,"author":{"gitId":"-"},"content":" const fileType \u003d this.getFileExtension(userFilename);"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (SUPPORTED_FILE_TYPES.includes(fileType.toLowerCase())) {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" base64String \u003d base64String.split(\u0027,\u0027)[1];"},{"lineNumber":53,"author":{"gitId":"-"},"content":" const onlineFilename \u003d uuid();"},{"lineNumber":54,"author":{"gitId":"nknguyenhc"},"content":" const attemptUploadFile \u003d () \u003d\u003e this.githubService.uploadFile(`${onlineFilename}.${fileType}`, base64String);"},{"lineNumber":55,"author":{"gitId":"nknguyenhc"},"content":" return attemptUploadFile().pipe("},{"lineNumber":56,"author":{"gitId":"nknguyenhc"},"content":" catchError((err: any) \u003d\u003e {"},{"lineNumber":57,"author":{"gitId":"nknguyenhc"},"content":" if (!(err.status \u003d\u003d\u003d ERRORCODE_NOT_FOUND)) {"},{"lineNumber":58,"author":{"gitId":"nknguyenhc"},"content":" return throwError(err);"},{"lineNumber":59,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":60,"author":{"gitId":"nknguyenhc"},"content":" return of(false);"},{"lineNumber":61,"author":{"gitId":"nknguyenhc"},"content":" }),"},{"lineNumber":62,"author":{"gitId":"nknguyenhc"},"content":" mergeMap((isBranchPresent) \u003d\u003e {"},{"lineNumber":63,"author":{"gitId":"nknguyenhc"},"content":" if (isBranchPresent) {"},{"lineNumber":64,"author":{"gitId":"nknguyenhc"},"content":" return of(isBranchPresent);"},{"lineNumber":65,"author":{"gitId":"nknguyenhc"},"content":" }"},{"lineNumber":66,"author":{"gitId":"nknguyenhc"},"content":" return this.githubService.createBranch().pipe(mergeMap(attemptUploadFile));"},{"lineNumber":67,"author":{"gitId":"nknguyenhc"},"content":" })"},{"lineNumber":68,"author":{"gitId":"nknguyenhc"},"content":" );"},{"lineNumber":69,"author":{"gitId":"-"},"content":" } else {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return throwError(FILE_TYPE_SUPPORT_ERROR);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }"},{"lineNumber":73,"author":{"gitId":"-"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":" getFileExtension(fileName: string): string {"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return fileName.split(\u0027.\u0027).pop();"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" isVideoFile(fileName): boolean {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" const fileType \u003d this.getFileExtension(fileName);"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return SUPPORTED_VIDEO_FILE_TYPES.includes(fileType.toLowerCase());"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }"},{"lineNumber":82,"author":{"gitId":"-"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":" isSupportedFileType(fileName): boolean {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" const fileType \u003d this.getFileExtension(fileName);"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return SUPPORTED_FILE_TYPES.includes(fileType.toLowerCase());"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":18,"-":69}},{"path":"src/app/core/validators/noWhitespace.validator.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"MadLamprey"},"content":"import { AbstractControl, ValidationErrors, ValidatorFn } from \u0027@angular/forms\u0027;"},{"lineNumber":2,"author":{"gitId":"MadLamprey"},"content":""},{"lineNumber":3,"author":{"gitId":"MadLamprey"},"content":"export function noWhitespace(): ValidatorFn {"},{"lineNumber":4,"author":{"gitId":"MadLamprey"},"content":" return (title: AbstractControl): ValidationErrors | null \u003d\u003e {"},{"lineNumber":5,"author":{"gitId":"MadLamprey"},"content":" if (title.value \u0026\u0026 title.value.trim() \u003d\u003d\u003d \u0027\u0027) {"},{"lineNumber":6,"author":{"gitId":"MadLamprey"},"content":" return { whitespace: true };"},{"lineNumber":7,"author":{"gitId":"MadLamprey"},"content":" }"},{"lineNumber":8,"author":{"gitId":"MadLamprey"},"content":" return null;"},{"lineNumber":9,"author":{"gitId":"MadLamprey"},"content":" };"},{"lineNumber":10,"author":{"gitId":"MadLamprey"},"content":"}"}],"authorContributionMap":{"MadLamprey":10}},{"path":"src/app/phase-bug-reporting/new-issue/new-issue.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003ch1 class\u003d\"mat-display-1 title\"\u003eNew Issue\u003c/h1\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003cform [formGroup]\u003d\"newIssueForm\" #myForm\u003d\"ngForm\" (ngSubmit)\u003d\"submitNewIssue(myForm)\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"form\"\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row\"\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"column left\"\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003cmat-form-field\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cinput id\u003d\"title\" formControlName\u003d\"title\" matInput placeholder\u003d\"Title\" required maxlength\u003d\"256\" /\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cmat-error *ngIf\u003d\"title.errors \u0026\u0026 title.errors[\u0027required\u0027] \u0026\u0026 (title.touched || title.dirty)\"\u003e Title required. \u003c/mat-error\u003e"},{"lineNumber":10,"author":{"gitId":"MadLamprey"},"content":" \u003cmat-error *ngIf\u003d\"title.errors \u0026\u0026 title.errors[\u0027whitespace\u0027]\"\u003e Title cannot contain only whitespaces. \u003c/mat-error\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cmat-error *ngIf\u003d\"title.errors \u0026\u0026 title.errors[\u0027maxlength\u0027]\"\u003e Title cannot exceed 256 characters. \u003c/mat-error\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cmat-hint *ngIf\u003d\"title.value?.length \u003e\u003d 206\"\u003e {{ 256 - title.value?.length }} characters remaining. \u003c/mat-hint\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cdiv style\u003d\"margin: 10px 0 10px 0\"\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003capp-comment-editor"},{"lineNumber":17,"author":{"gitId":"-"},"content":" [id]\u003d\"\u0027description\u0027\""},{"lineNumber":18,"author":{"gitId":"-"},"content":" [commentField]\u003d\"description\""},{"lineNumber":19,"author":{"gitId":"-"},"content":" [commentForm]\u003d\"this.newIssueForm\""},{"lineNumber":20,"author":{"gitId":"-"},"content":" [(isFormPending)]\u003d\"this.isFormPending\""},{"lineNumber":21,"author":{"gitId":"-"},"content":" [(submitButtonText)]\u003d\"this.submitButtonText\""},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/app-comment-editor\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":27,"author":{"gitId":"-"},"content":" style\u003d\"float: right\""},{"lineNumber":28,"author":{"gitId":"-"},"content":" class\u003d\"submit-new-bug-report\""},{"lineNumber":29,"author":{"gitId":"-"},"content":" type\u003d\"submit\""},{"lineNumber":30,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":31,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":32,"author":{"gitId":"-"},"content":" [disabled]\u003d\"!newIssueForm.valid || isFormPending\""},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" {{ this.submitButtonText }}"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"column right\"\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"severity-dropdown\"\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003capp-label-dropdown initialValue\u003d\"\" attributeName\u003d\"severity\" [dropdownForm]\u003d\"newIssueForm\"\u003e\u003c/app-label-dropdown\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"bug-dropdown\"\u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003capp-label-dropdown initialValue\u003d\"\" attributeName\u003d\"type\" [dropdownForm]\u003d\"newIssueForm\"\u003e\u003c/app-label-dropdown\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003c/form\u003e"}],"authorContributionMap":{"MadLamprey":1,"-":47}},{"path":"src/app/phase-bug-reporting/new-issue/new-issue.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, OnInit } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { AbstractControl, FormBuilder, FormGroup, NgForm, Validators } from \u0027@angular/forms\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { Router } from \u0027@angular/router\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { finalize } from \u0027rxjs/operators\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { LabelService } from \u0027../../core/services/label.service\u0027;"},{"lineNumber":9,"author":{"gitId":"MadLamprey"},"content":"import { noWhitespace } from \u0027../../core/validators/noWhitespace.validator\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { SUBMIT_BUTTON_TEXT } from \u0027../../shared/view-issue/view-issue.component\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":13,"author":{"gitId":"-"},"content":" selector: \u0027app-new-issue\u0027,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" templateUrl: \u0027./new-issue.component.html\u0027,"},{"lineNumber":15,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./new-issue.component.css\u0027]"},{"lineNumber":16,"author":{"gitId":"-"},"content":"})"},{"lineNumber":17,"author":{"gitId":"-"},"content":"export class NewIssueComponent implements OnInit {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" newIssueForm: FormGroup;"},{"lineNumber":19,"author":{"gitId":"-"},"content":" isFormPending \u003d false;"},{"lineNumber":20,"author":{"gitId":"-"},"content":" submitButtonText: string;"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":" constructor("},{"lineNumber":23,"author":{"gitId":"-"},"content":" private issueService: IssueService,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private formBuilder: FormBuilder,"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private errorHandlingService: ErrorHandlingService,"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public labelService: LabelService,"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private router: Router"},{"lineNumber":28,"author":{"gitId":"-"},"content":" ) {}"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.newIssueForm \u003d this.formBuilder.group({"},{"lineNumber":32,"author":{"gitId":"MadLamprey"},"content":" title: [\u0027\u0027, [Validators.required, Validators.maxLength(256), noWhitespace()]],"},{"lineNumber":33,"author":{"gitId":"-"},"content":" description: [\u0027\u0027],"},{"lineNumber":34,"author":{"gitId":"-"},"content":" severity: [\u0027\u0027, Validators.required],"},{"lineNumber":35,"author":{"gitId":"-"},"content":" type: [\u0027\u0027, Validators.required]"},{"lineNumber":36,"author":{"gitId":"-"},"content":" });"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.submitButtonText \u003d SUBMIT_BUTTON_TEXT.SUBMIT;"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" submitNewIssue(form: NgForm) {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (this.newIssueForm.invalid) {"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return;"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }"},{"lineNumber":45,"author":{"gitId":"MadLamprey"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.isFormPending \u003d true;"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.issueService"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .createIssue(this.title.value, Issue.updateDescription(this.description.value), this.severity.value, this.type.value)"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .pipe(finalize(() \u003d\u003e (this.isFormPending \u003d false)))"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .subscribe("},{"lineNumber":51,"author":{"gitId":"-"},"content":" (newIssue) \u003d\u003e {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.issueService.updateLocalStore(newIssue);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.router.navigateByUrl(`phaseBugReporting/issues/${newIssue.id}`);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" form.resetForm();"},{"lineNumber":55,"author":{"gitId":"-"},"content":" },"},{"lineNumber":56,"author":{"gitId":"-"},"content":" (error) \u003d\u003e {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.errorHandlingService.handleError(error);"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }"},{"lineNumber":59,"author":{"gitId":"-"},"content":" );"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }"},{"lineNumber":61,"author":{"gitId":"-"},"content":""},{"lineNumber":62,"author":{"gitId":"-"},"content":" canDeactivate() {"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return ("},{"lineNumber":64,"author":{"gitId":"-"},"content":" !this.isAttributeEditing(this.title) \u0026\u0026"},{"lineNumber":65,"author":{"gitId":"-"},"content":" !this.isAttributeEditing(this.description) \u0026\u0026"},{"lineNumber":66,"author":{"gitId":"-"},"content":" !this.isAttributeEditing(this.severity) \u0026\u0026"},{"lineNumber":67,"author":{"gitId":"-"},"content":" !this.isAttributeEditing(this.type)"},{"lineNumber":68,"author":{"gitId":"-"},"content":" );"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }"},{"lineNumber":70,"author":{"gitId":"-"},"content":""},{"lineNumber":71,"author":{"gitId":"-"},"content":" isAttributeEditing(attribute: AbstractControl) {"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return attribute.value !\u003d\u003d null \u0026\u0026 attribute.value !\u003d\u003d \u0027\u0027;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" get title() {"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return this.newIssueForm.get(\u0027title\u0027);"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }"},{"lineNumber":78,"author":{"gitId":"-"},"content":""},{"lineNumber":79,"author":{"gitId":"-"},"content":" get description() {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return this.newIssueForm.get(\u0027description\u0027);"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }"},{"lineNumber":82,"author":{"gitId":"-"},"content":""},{"lineNumber":83,"author":{"gitId":"-"},"content":" get severity() {"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return this.newIssueForm.get(\u0027severity\u0027);"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }"},{"lineNumber":86,"author":{"gitId":"-"},"content":""},{"lineNumber":87,"author":{"gitId":"-"},"content":" get type() {"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return this.newIssueForm.get(\u0027type\u0027);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"MadLamprey":3,"-":87}},{"path":"src/app/shared/comment-editor/comment-editor.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cform [formGroup]\u003d\"commentForm\" style\u003d\"min-height: 350px\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cmat-tab-group class\u003d\"mat-elevation-z1\" animationDuration\u003d\"0ms\" (selectedTabChange)\u003d\"commentField.setValue(commentTextArea.value)\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cmat-tab label\u003d\"Write\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cdiv"},{"lineNumber":5,"author":{"gitId":"-"},"content":" #dropArea"},{"lineNumber":6,"author":{"gitId":"-"},"content":" class\u003d\"tab-content\""},{"lineNumber":7,"author":{"gitId":"-"},"content":" (dragleave)\u003d\"onDragExit($event)\""},{"lineNumber":8,"author":{"gitId":"-"},"content":" (dragenter)\u003d\"onDragEnter($event)\""},{"lineNumber":9,"author":{"gitId":"-"},"content":" (drop)\u003d\"onDrop($event)\""},{"lineNumber":10,"author":{"gitId":"-"},"content":" (dragover)\u003d\"enableFileDrop($event)\""},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003capp-markdown-toolbar [forTextAreaId]\u003d\"this.id\"\u003e\u003c/app-markdown-toolbar\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmat-form-field appearance\u003d\"outline\" style\u003d\"width: 100%\"\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cmat-label\u003e\u003c/mat-label\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003ctextarea"},{"lineNumber":16,"author":{"gitId":"-"},"content":" (paste)\u003d\"onPaste($event)\""},{"lineNumber":17,"author":{"gitId":"-"},"content":" (keydown)\u003d\"onKeyPress($event)\""},{"lineNumber":18,"author":{"gitId":"-"},"content":" (beforeinput)\u003d\"handleBeforeInputChange($event)\""},{"lineNumber":19,"author":{"gitId":"-"},"content":" (input)\u003d\"handleInputChange($event)\""},{"lineNumber":20,"author":{"gitId":"-"},"content":" #commentTextArea"},{"lineNumber":21,"author":{"gitId":"-"},"content":" (dragover)\u003d\"disableCaretMovement($event)\""},{"lineNumber":22,"author":{"gitId":"-"},"content":" id\u003d\"{{ this.id }}\""},{"lineNumber":23,"author":{"gitId":"-"},"content":" formControlName\u003d\"{{ this.id }}\""},{"lineNumber":24,"author":{"gitId":"-"},"content":" matInput"},{"lineNumber":25,"author":{"gitId":"-"},"content":" cdkTextareaAutosize"},{"lineNumber":26,"author":{"gitId":"-"},"content":" #autosize\u003d\"cdkTextareaAutosize\""},{"lineNumber":27,"author":{"gitId":"-"},"content":" cdkAutosizeMinRows\u003d\"10\""},{"lineNumber":28,"author":{"gitId":"-"},"content":" cdkAutosizeMaxRows\u003d\"20\""},{"lineNumber":29,"author":{"gitId":"-"},"content":" class\u003d\"text-input-area\""},{"lineNumber":30,"author":{"gitId":"-"},"content":" placeholder\u003d\"{{ this.placeholderText }}\""},{"lineNumber":31,"author":{"gitId":"-"},"content":" maxlength\u003d\"{{ this.maxLength }}\""},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003e\u003c/textarea\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cmat-error *ngIf\u003d\"commentField.errors \u0026\u0026 commentField.errors[\u0027required\u0027] \u0026\u0026 commentField.touched\"\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Description required."},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/mat-error\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cmat-error *ngIf\u003d\"commentField.errors \u0026\u0026 commentField.errors[\u0027maxLength\u0027]\"\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Description cannot exceed {{ maxLength }} characters."},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/mat-error\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cmat-hint *ngIf\u003d\"commentField.value?.length \u003e\u003d maxLength - 50\"\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" {{ maxLength - commentField.value?.length }} character(s) remaining."},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/mat-hint\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"drag-and-drop\"\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"!isInErrorState\"\u003e Attach files by dragging \u0026 dropping or select them by clicking here. \u003c/span\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"isInErrorState\" class\u003d\"error\"\u003e {{ uploadErrorMessage }} \u003c/span\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cinput"},{"lineNumber":47,"author":{"gitId":"-"},"content":" #fileInput"},{"lineNumber":48,"author":{"gitId":"-"},"content":" [disabled]\u003d\"this.commentField.disabled\""},{"lineNumber":49,"author":{"gitId":"-"},"content":" [accept]\u003d\"SUPPORTED_FILE_TYPES\""},{"lineNumber":50,"author":{"gitId":"-"},"content":" type\u003d\"file\""},{"lineNumber":51,"author":{"gitId":"-"},"content":" class\u003d\"file\""},{"lineNumber":52,"author":{"gitId":"-"},"content":" (change)\u003d\"onFileInputUpload($event, fileInput)\""},{"lineNumber":53,"author":{"gitId":"-"},"content":" /\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/mat-tab\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cmat-tab label\u003d\"Preview\"\u003e"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"tab-content\" style\u003d\"min-height: 228px\"\u003e"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" \u003cmarkdown #markdownArea *ngIf\u003d\"commentField.value !\u003d\u003d \u0027\u0027\" [data]\u003d\"sanitize(commentField.value)\" disableInternalLink\u003e\u003c/markdown\u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"commentField.value \u003d\u003d\u003d \u0027\u0027\"\u003eNothing to preview.\u003c/div\u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/mat-tab\u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/mat-tab-group\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003c/form\u003e"}],"authorContributionMap":{"NereusWB922":1,"-":64}},{"path":"src/app/shared/issue/description/description.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003ch3 class\u003d\"mat-title\"\u003e{{ descriptionTitle }}\u003c/h3\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003cform [formGroup]\u003d\"issueDescriptionForm\" #myForm\u003d\"ngForm\" (ngSubmit)\u003d\"updateDescription(myForm)\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"timeline-comment\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"timeline-header\"\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003cspan\u003e \u003cstrong\u003e Tester \u003c/strong\u003e posted on {{ issue.created_at }}. \u003c/span\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cbutton style\u003d\"float: right\" mat-button *ngIf\u003d\"permissions.isIssueDescriptionEditable() \u0026\u0026 !isEditing\" (click)\u003d\"changeToEditMode()\"\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" Edit"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"!isEditing\" class\u003d\"comment\"\u003e"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" \u003cmarkdown [data]\u003d\"issue.description\" disableInternalLink\u003e\u003c/markdown\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"isEditing\"\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003capp-comment-editor"},{"lineNumber":15,"author":{"gitId":"-"},"content":" [id]\u003d\"\u0027description\u0027\""},{"lineNumber":16,"author":{"gitId":"-"},"content":" [commentField]\u003d\"this.issueDescriptionForm.get(\u0027description\u0027)\""},{"lineNumber":17,"author":{"gitId":"-"},"content":" [commentForm]\u003d\"this.issueDescriptionForm\""},{"lineNumber":18,"author":{"gitId":"-"},"content":" [(isFormPending)]\u003d\"this.isSavePending\""},{"lineNumber":19,"author":{"gitId":"-"},"content":" [(submitButtonText)]\u003d\"this.submitButtonText\""},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/app-comment-editor\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"editor-actions\"\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":24,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":25,"author":{"gitId":"-"},"content":" *ngIf\u003d\"conflict\""},{"lineNumber":26,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":27,"author":{"gitId":"-"},"content":" [disabled]\u003d\"isSavePending\""},{"lineNumber":28,"author":{"gitId":"-"},"content":" mat-raised-button"},{"lineNumber":29,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":30,"author":{"gitId":"-"},"content":" (click)\u003d\"viewChanges()\""},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" View Updated Description"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":35,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":36,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":37,"author":{"gitId":"-"},"content":" [disabled]\u003d\"isSavePending\""},{"lineNumber":38,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":39,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":40,"author":{"gitId":"-"},"content":" (click)\u003d\"openCancelDialogIfModified()\""},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Cancel"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":45,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":46,"author":{"gitId":"-"},"content":" *ngIf\u003d\"conflict\""},{"lineNumber":47,"author":{"gitId":"-"},"content":" type\u003d\"submit\""},{"lineNumber":48,"author":{"gitId":"-"},"content":" [disabled]\u003d\"issueDescriptionForm.invalid || isSavePending\""},{"lineNumber":49,"author":{"gitId":"-"},"content":" mat-raised-button"},{"lineNumber":50,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ submitButtonText }}"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":55,"author":{"gitId":"-"},"content":" class\u003d\"editor-action additional-editor-style\""},{"lineNumber":56,"author":{"gitId":"-"},"content":" *ngIf\u003d\"!conflict\""},{"lineNumber":57,"author":{"gitId":"-"},"content":" type\u003d\"submit\""},{"lineNumber":58,"author":{"gitId":"-"},"content":" [disabled]\u003d\"issueDescriptionForm.invalid || isSavePending\""},{"lineNumber":59,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":60,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003cmat-button-content\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":" {{ submitButtonText }}"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cng-container #loadingSpinnerContainer\u003e\u003c/ng-container\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003c/mat-button-content\u003e"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003c/form\u003e"}],"authorContributionMap":{"NereusWB922":1,"-":69}},{"path":"src/app/shared/issue/duplicatedIssues/duplicated-issues.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"mat-title\"\u003e Duplicated Issues \u003c/span\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cmat-chip-list\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cmat-chip"},{"lineNumber":5,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let duplicatedIssue of duplicatedIssues | async\""},{"lineNumber":6,"author":{"gitId":"-"},"content":" style\u003d\"cursor: pointer\""},{"lineNumber":7,"author":{"gitId":"-"},"content":" [matTooltip]\u003d\"duplicatedIssue.title\""},{"lineNumber":8,"author":{"gitId":"-"},"content":" matTooltipPosition\u003d\"above\""},{"lineNumber":9,"author":{"gitId":"-"},"content":" (removed)\u003d\"removeDuplicateStatus(duplicatedIssue)\""},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":11,"author":{"gitId":"nknguyenhc"},"content":" \u003ca class\u003d\"no-underline link-grey-dark\" [routerLink]\u003d\"[\u0027../\u0027 + duplicatedIssue.id]\"\u003e #{{ duplicatedIssue.id }} \u003c/a\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cmat-icon *ngIf\u003d\"permissions.isTeamResponseEditable() || permissions.isTutorResponseEditable()\" matChipRemove\u003ecancel\u003c/mat-icon\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/mat-chip\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c/mat-chip-list\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"nknguyenhc":1,"-":14}},{"path":"src/app/shared/lib/marked.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { MarkedOptions, MarkedRenderer } from \u0027ngx-markdown\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"export function markedOptionsFactory(): MarkedOptions {"},{"lineNumber":4,"author":{"gitId":"-"},"content":" const renderer \u003d new MarkedRenderer();"},{"lineNumber":5,"author":{"gitId":"-"},"content":" const linkRenderer \u003d renderer.link;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":" renderer.link \u003d (href, title, text) \u003d\u003e {"},{"lineNumber":8,"author":{"gitId":"-"},"content":" const html \u003d linkRenderer.call(renderer, href, title, text);"},{"lineNumber":9,"author":{"gitId":"-"},"content":" return html.replace(/^\u003ca /, \u0027\u003ca target\u003d\"_blank\" \u0027);"},{"lineNumber":10,"author":{"gitId":"-"},"content":" };"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":" renderer.checkbox \u003d (checked) \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" return checked ? \u0027\u003ci class\u003d\"fa-solid fa-square-check\"\u003e\u003c/i\u003e \u0027 : \u0027\u003ci class\u003d\"fa-solid fa-square\"\u003e\u003c/i\u003e \u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":" };"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":" return {"},{"lineNumber":17,"author":{"gitId":"-"},"content":" renderer,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" gfm: true,"},{"lineNumber":19,"author":{"gitId":"nknguyenhc"},"content":" breaks: true,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" pedantic: false,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" smartLists: true,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" smartypants: false"},{"lineNumber":23,"author":{"gitId":"-"},"content":" };"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"nknguyenhc":1,"-":23}},{"path":"src/app/shared/shared.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { CommonModule } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { HttpClientModule } from \u0027@angular/common/http\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { FormsModule, ReactiveFormsModule } from \u0027@angular/forms\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { RouterModule } from \u0027@angular/router\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { FormDisableControlDirective } from \u0027../core/directives/form-disable-control.directive\u0027;"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import { InternalLinkDisableDirective } from \u0027../core/directives/internal-link-disable.directive\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ActionToasterModule } from \u0027./action-toasters/action-toasters.module\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { ErrorToasterModule } from \u0027./error-toasters/error-toaster.module\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import { MaterialModule } from \u0027./material.module\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":13,"author":{"gitId":"-"},"content":" imports: [CommonModule, FormsModule, ReactiveFormsModule, HttpClientModule, RouterModule, MaterialModule, ErrorToasterModule],"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" declarations: [FormDisableControlDirective, InternalLinkDisableDirective],"},{"lineNumber":15,"author":{"gitId":"-"},"content":" exports: ["},{"lineNumber":16,"author":{"gitId":"-"},"content":" FormDisableControlDirective,"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" InternalLinkDisableDirective,"},{"lineNumber":18,"author":{"gitId":"-"},"content":" CommonModule,"},{"lineNumber":19,"author":{"gitId":"-"},"content":" FormsModule,"},{"lineNumber":20,"author":{"gitId":"-"},"content":" ReactiveFormsModule,"},{"lineNumber":21,"author":{"gitId":"-"},"content":" HttpClientModule,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" RouterModule,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" MaterialModule,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ErrorToasterModule,"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ActionToasterModule"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ]"},{"lineNumber":27,"author":{"gitId":"-"},"content":"})"},{"lineNumber":28,"author":{"gitId":"-"},"content":"export class SharedModule {}"}],"authorContributionMap":{"NereusWB922":3,"-":25}},{"path":"src/app/shared/view-issue/issue-dispute/issue-dispute.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003ch3 class\u003d\"mat-title\"\u003eDisputes\u003c/h3\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003cform [formGroup]\u003d\"tutorResponseForm\" #tutorForm\u003d\"ngForm\" (ngSubmit)\u003d\"submitTutorResponseForm(tutorForm)\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"timeline-comment\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"timeline-header\"\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003cspan\u003e Post your response here. \u003c/span\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cbutton mat-button style\u003d\"float: right\" *ngIf\u003d\"!isEditing\" (click)\u003d\"changeToEditMode()\"\u003eEdit\u003c/button\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cdiv\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"container\" *ngFor\u003d\"let dispute of issue.issueDisputes; index as i; trackBy: trackDisputeList\"\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cdiv style\u003d\"display: flex; align-items: center\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"question-mark\"\u003e?\u003c/div\u003e"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" \u003cmarkdown [data]\u003d\"this.getItemTitleText(dispute.title)\" disableInternalLink\u003e\u003c/markdown\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cbr /\u003e"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" \u003cmarkdown [data]\u003d\"dispute.description\" disableInternalLink\u003e\u003c/markdown\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cbr /\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cdiv\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cmat-checkbox"},{"lineNumber":19,"author":{"gitId":"-"},"content":" style\u003d\"display: inline-block; width: 20%\""},{"lineNumber":20,"author":{"gitId":"-"},"content":" [id]\u003d\"getTodoFormId(i)\""},{"lineNumber":21,"author":{"gitId":"-"},"content":" [formControlName]\u003d\"getTodoFormId(i)\""},{"lineNumber":22,"author":{"gitId":"-"},"content":" [disableControl]\u003d\"!isEditing\""},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" Done"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/mat-checkbox\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cbr /\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cdiv\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cmarkdown data\u003d\"### Tutor\u0027s Response: \"\u003e\u003c/markdown\u003e"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" \u003cmarkdown [data]\u003d\"dispute.tutorResponse\" *ngIf\u003d\"!isEditing\" disableInternalLink\u003e\u003c/markdown\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"isEditing\"\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003capp-comment-editor"},{"lineNumber":34,"author":{"gitId":"-"},"content":" [commentField]\u003d\"tutorResponseForm.get(getTutorResponseFormId(i))\""},{"lineNumber":35,"author":{"gitId":"-"},"content":" [commentForm]\u003d\"tutorResponseForm\""},{"lineNumber":36,"author":{"gitId":"-"},"content":" [id]\u003d\"getTutorResponseFormId(i)\""},{"lineNumber":37,"author":{"gitId":"-"},"content":" [(isFormPending)]\u003d\"isFormPending\""},{"lineNumber":38,"author":{"gitId":"-"},"content":" [(submitButtonText)]\u003d\"submitButtonText\""},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/app-comment-editor\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cbr /\u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cmarkdown data\u003d\"-------------------\"\u003e\u003c/markdown\u003e \u003cbr /\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"editor-actions\" *ngIf\u003d\"isEditing\"\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":48,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":49,"author":{"gitId":"-"},"content":" *ngIf\u003d\"conflict\""},{"lineNumber":50,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":51,"author":{"gitId":"-"},"content":" [disabled]\u003d\"isFormPending\""},{"lineNumber":52,"author":{"gitId":"-"},"content":" mat-raised-button"},{"lineNumber":53,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":54,"author":{"gitId":"-"},"content":" (click)\u003d\"viewInGithub()\""},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":56,"author":{"gitId":"-"},"content":" View Updated Response On Github"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":59,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":60,"author":{"gitId":"-"},"content":" type\u003d\"submit\""},{"lineNumber":61,"author":{"gitId":"-"},"content":" *ngIf\u003d\"!conflict\""},{"lineNumber":62,"author":{"gitId":"-"},"content":" [disabled]\u003d\"tutorResponseForm.invalid || isFormPending\""},{"lineNumber":63,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":64,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":66,"author":{"gitId":"-"},"content":" {{ submitButtonText }}"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":69,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":70,"author":{"gitId":"-"},"content":" type\u003d\"submit\""},{"lineNumber":71,"author":{"gitId":"-"},"content":" [disabled]\u003d\"tutorResponseForm.invalid || isFormPending\""},{"lineNumber":72,"author":{"gitId":"-"},"content":" mat-raised-button"},{"lineNumber":73,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":74,"author":{"gitId":"-"},"content":" *ngIf\u003d\"conflict\""},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":76,"author":{"gitId":"-"},"content":" {{ submitButtonText }}"},{"lineNumber":77,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":79,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":80,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":81,"author":{"gitId":"-"},"content":" [disabled]\u003d\"isFormPending\""},{"lineNumber":82,"author":{"gitId":"-"},"content":" style\u003d\"margin-left: 10px\""},{"lineNumber":83,"author":{"gitId":"-"},"content":" *ngIf\u003d\"!this.isNewResponse()\""},{"lineNumber":84,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":85,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":86,"author":{"gitId":"-"},"content":" (click)\u003d\"cancelEditMode()\""},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Cancel"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":91,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003c/form\u003e"}],"authorContributionMap":{"NereusWB922":3,"-":90}},{"path":"src/app/shared/view-issue/team-response/team-response.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003ch3 class\u003d\"mat-title\"\u003eTeam\u0027s Response\u003c/h3\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003cform [formGroup]\u003d\"responseForm\" #myForm\u003d\"ngForm\" (ngSubmit)\u003d\"updateResponse(myForm)\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"timeline-comment\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"timeline-header\"\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003cspan\u003e \u003cstrong\u003e Team \u003c/strong\u003e responded. \u003c/span\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cbutton style\u003d\"float: right\" mat-button *ngIf\u003d\"canEditIssue() \u0026\u0026 !isEditing\" (click)\u003d\"changeToEditMode()\"\u003eEdit\u003c/button\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"!isEditing\" class\u003d\"comment\"\u003e"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" \u003cmarkdown [data]\u003d\"issue.teamResponse\" disableInternalLink\u003e\u003c/markdown\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"isEditing\"\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003capp-comment-editor"},{"lineNumber":13,"author":{"gitId":"-"},"content":" [id]\u003d\"\u0027description\u0027\""},{"lineNumber":14,"author":{"gitId":"-"},"content":" [commentField]\u003d\"this.responseForm.get(\u0027description\u0027)\""},{"lineNumber":15,"author":{"gitId":"-"},"content":" [commentForm]\u003d\"this.responseForm\""},{"lineNumber":16,"author":{"gitId":"-"},"content":" [(isFormPending)]\u003d\"this.isSavePending\""},{"lineNumber":17,"author":{"gitId":"-"},"content":" [(submitButtonText)]\u003d\"this.submitButtonText\""},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/app-comment-editor\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"editor-actions\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":22,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":23,"author":{"gitId":"-"},"content":" *ngIf\u003d\"conflict\""},{"lineNumber":24,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":25,"author":{"gitId":"-"},"content":" [disabled]\u003d\"isSavePending\""},{"lineNumber":26,"author":{"gitId":"-"},"content":" mat-raised-button"},{"lineNumber":27,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":28,"author":{"gitId":"-"},"content":" (click)\u003d\"viewChanges()\""},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" View Updated Response"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":33,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":34,"author":{"gitId":"-"},"content":" *ngIf\u003d\"conflict\""},{"lineNumber":35,"author":{"gitId":"-"},"content":" type\u003d\"submit\""},{"lineNumber":36,"author":{"gitId":"-"},"content":" [disabled]\u003d\"responseForm.invalid || isSavePending\""},{"lineNumber":37,"author":{"gitId":"-"},"content":" mat-raised-button"},{"lineNumber":38,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" {{ submitButtonText }}"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":43,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":44,"author":{"gitId":"-"},"content":" *ngIf\u003d\"!conflict\""},{"lineNumber":45,"author":{"gitId":"-"},"content":" type\u003d\"submit\""},{"lineNumber":46,"author":{"gitId":"-"},"content":" [disabled]\u003d\"responseForm.invalid || isSavePending\""},{"lineNumber":47,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":48,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":" {{ submitButtonText }}"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":53,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":54,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":55,"author":{"gitId":"-"},"content":" [disabled]\u003d\"isSavePending\""},{"lineNumber":56,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":57,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":58,"author":{"gitId":"-"},"content":" (click)\u003d\"openCancelDialogIfModified()\""},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Cancel"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003c/form\u003e"}],"authorContributionMap":{"NereusWB922":1,"-":64}},{"path":"src/app/shared/view-issue/tester-response/conflict-dialog/conflict-dialog.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv style\u003d\"display: flex; margin-bottom: 20px; align-items: center\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003ch1 mat-dialog-title style\u003d\"margin: 0\"\u003e{{ \u0027The content you are editing has changed\u0027 }}\u003c/h1\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cmat-slide-toggle style\u003d\"display: inline-block; margin-left: 50px\" color\u003d\"primary\" [checked]\u003d\"showDiff\" (change)\u003d\"handleChangeShowDiff()\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" Show Difference"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003c/mat-slide-toggle\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cbutton mat-icon-button color\u003d\"default\" style\u003d\"margin: 0 0 0 auto\" (click)\u003d\"close()\"\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eclose\u003c/mat-icon\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cdiv mat-dialog-content\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cmat-accordion [multi]\u003d\"true\"\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmat-expansion-panel class\u003d\"full-width\" *ngFor\u003d\"let conflict of conflicts; index as i\" [expanded]\u003d\"panelOpenStates[i]\"\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cmat-expansion-panel-header\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cmat-panel-title class\u003d\"response-title\"\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"question-mark\"\u003e?\u003c/div\u003e"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" \u003cmarkdown [data]\u003d\"data.updatedResponses[i].getTitleInMarkDown()\" disableInternalLink\u003e\u003c/markdown\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/mat-panel-title\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cmat-panel-description\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cmat-chip-list\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cmat-chip *ngIf\u003d\"data.outdatedResponses[i].compareTo(data.updatedResponses[i]) \u003d\u003d\u003d 0\" style\u003d\"margin-top: 10px\"\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" No Changes"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/mat-chip\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/mat-chip-list\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/mat-panel-description\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/mat-expansion-panel-header\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cbr /\u003e"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" \u003cmarkdown [data]\u003d\"data.updatedResponses[i].description\" disableInternalLink\u003e\u003c/markdown\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cbr /\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cdiv"},{"lineNumber":31,"author":{"gitId":"-"},"content":" *ngIf\u003d\"data.updatedResponses[i].isDisagree() \u003d\u003d\u003d data.outdatedResponses[i].isDisagree() || !showDiff\""},{"lineNumber":32,"author":{"gitId":"-"},"content":" style\u003d\"margin-bottom: 10px\""},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cmat-checkbox style\u003d\"display: inline-block; width: 20%\" [disabled]\u003d\"true\" [checked]\u003d\"data.updatedResponses[i].isDisagree()\"\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" I disagree"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/mat-checkbox\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"!data.outdatedResponses[i].isDisagree() \u0026\u0026 data.updatedResponses[i].isDisagree() \u0026\u0026 showDiff\" class\u003d\"checkbox-changes\"\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003ci style\u003d\"color: green\" class\u003d\"material-icons-outlined\"\u003eadd_box\u003c/i\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cins style\u003d\"background: #d4fcbc; text-decoration: none\"\u003e I disagree \u003c/ins\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"data.outdatedResponses[i].isDisagree() \u0026\u0026 !data.updatedResponses[i].isDisagree() \u0026\u0026 showDiff\" class\u003d\"checkbox-changes\"\u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003ci style\u003d\"color: red\" class\u003d\"material-icons-outlined\"\u003eindeterminate_check_box\u003c/i\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cdel style\u003d\"background: #fbb\"\u003eI disagree\u003c/del\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cmat-tab-group style\u003d\"margin-bottom: 20px\" class\u003d\"mat-elevation-z1\" animationDuration\u003d\"0ms\"\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cmat-tab label\u003d\"Markdown Text\"\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"tab-content\" *ngIf\u003d\"isReady\"\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"showDiff\" [innerHTML]\u003d\"diffHtmls[i]\"\u003e\u003c/div\u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"!showDiff\" [innerHTML]\u003d\"updatedHtmls[i]\"\u003e\u003c/div\u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/mat-tab\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cmat-tab label\u003d\"Preview Updated Content\"\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"tab-content\"\u003e"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cmarkdown\u003e{{ conflict.updatedContent }}\u003c/markdown\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/mat-tab\u003e"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/mat-tab-group\u003e"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/mat-expansion-panel\u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003c/mat-accordion\u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"NereusWB922":2,"-":60}},{"path":"src/app/shared/view-issue/tester-response/tester-response.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003ch3 class\u003d\"mat-title\"\u003eTester\u0027s Response\u003c/h3\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003cform [formGroup]\u003d\"testerResponseForm\" (ngSubmit)\u003d\"submitTesterResponseForm()\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"timeline-comment\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"timeline-header\"\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"this.isNewResponse()\"\u003e Please verify the following item(s). \u003c/span\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"!this.isNewResponse()\"\u003e \u003cstrong\u003eTester\u003c/strong\u003e responded. \u003c/span\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003cbutton mat-button style\u003d\"float: right\" *ngIf\u003d\"!isEditing\" (click)\u003d\"changeToEditMode()\"\u003eEdit\u003c/button\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cdiv\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"container\" *ngFor\u003d\"let response of issue.testerResponses; index as i; trackBy: trackDisagreeList\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cdiv style\u003d\"display: flex; align-items: center\"\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"question-mark\"\u003e?\u003c/div\u003e"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" \u003cmarkdown [data]\u003d\"response.getTitleInMarkDown()\" disableInternalLink\u003e\u003c/markdown\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cbr /\u003e"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" \u003cmarkdown [data]\u003d\"response.description\" disableInternalLink\u003e\u003c/markdown\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cbr /\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cdiv\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cmat-radio-group"},{"lineNumber":20,"author":{"gitId":"-"},"content":" style\u003d\"display: inline-block; width: 20%\""},{"lineNumber":21,"author":{"gitId":"-"},"content":" aria-label\u003d\"Select Agree or Disagree to Team\u0027s Response\""},{"lineNumber":22,"author":{"gitId":"-"},"content":" [disableControl]\u003d\"!isEditing\""},{"lineNumber":23,"author":{"gitId":"-"},"content":" [id]\u003d\"getDisagreeRadioFormId(i)\""},{"lineNumber":24,"author":{"gitId":"-"},"content":" [formControlName]\u003d\"getDisagreeRadioFormId(i)\""},{"lineNumber":25,"author":{"gitId":"-"},"content":" (change)\u003d\"handleChangeOfDisagreeRadioButton($event, i)\""},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cmat-radio-button [value]\u003d\"false\"\u003e I Agree \u003c/mat-radio-button\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cmat-radio-button [value]\u003d\"true\"\u003e I Disagree \u003c/mat-radio-button\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/mat-radio-group\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"testerResponseForm.get(getDisagreeRadioFormId(i)).value\"\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cdiv\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cp style\u003d\"font-weight: 500\"\u003eReason for Disagreement:\u003c/p\u003e"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" \u003cmarkdown [data]\u003d\"response.reasonForDisagreement\" *ngIf\u003d\"!isEditing\" disableInternalLink\u003e\u003c/markdown\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"isEditing\"\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003capp-comment-editor"},{"lineNumber":38,"author":{"gitId":"-"},"content":" [commentField]\u003d\"testerResponseForm.get(getTesterResponseFormId(i))\""},{"lineNumber":39,"author":{"gitId":"-"},"content":" [id]\u003d\"getTesterResponseFormId(i)\""},{"lineNumber":40,"author":{"gitId":"-"},"content":" [commentForm]\u003d\"testerResponseForm\""},{"lineNumber":41,"author":{"gitId":"-"},"content":" [(isFormPending)]\u003d\"isFormPending\""},{"lineNumber":42,"author":{"gitId":"-"},"content":" [(submitButtonText)]\u003d\"submitButtonText\""},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/app-comment-editor\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cbr /\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cmarkdown data\u003d\"-------------------\"\u003e\u003c/markdown\u003e \u003cbr /\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cmat-divider\u003e\u003c/mat-divider\u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"editor-actions\" *ngIf\u003d\"isEditing\"\u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":53,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":54,"author":{"gitId":"-"},"content":" *ngIf\u003d\"conflict\""},{"lineNumber":55,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":56,"author":{"gitId":"-"},"content":" [disabled]\u003d\"isFormPending\""},{"lineNumber":57,"author":{"gitId":"-"},"content":" mat-raised-button"},{"lineNumber":58,"author":{"gitId":"-"},"content":" color\u003d\"primary\""},{"lineNumber":59,"author":{"gitId":"-"},"content":" (click)\u003d\"viewChanges()\""},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":" View Updated Response"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003cbutton type\u003d\"submit\" [disabled]\u003d\"testerResponseForm.invalid || isFormPending\" mat-stroked-button color\u003d\"primary\" *ngIf\u003d\"!conflict\"\u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":" {{ submitButtonText }}"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":67,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":68,"author":{"gitId":"-"},"content":" type\u003d\"submit\""},{"lineNumber":69,"author":{"gitId":"-"},"content":" [disabled]\u003d\"testerResponseForm.invalid || isFormPending\""},{"lineNumber":70,"author":{"gitId":"-"},"content":" mat-raised-button"},{"lineNumber":71,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":72,"author":{"gitId":"-"},"content":" *ngIf\u003d\"conflict\""},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":74,"author":{"gitId":"-"},"content":" {{ submitButtonText }}"},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":76,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":77,"author":{"gitId":"-"},"content":" class\u003d\"editor-action\""},{"lineNumber":78,"author":{"gitId":"-"},"content":" type\u003d\"button\""},{"lineNumber":79,"author":{"gitId":"-"},"content":" [disabled]\u003d\"isFormPending\""},{"lineNumber":80,"author":{"gitId":"-"},"content":" *ngIf\u003d\"!this.isNewResponse()\""},{"lineNumber":81,"author":{"gitId":"-"},"content":" mat-stroked-button"},{"lineNumber":82,"author":{"gitId":"-"},"content":" color\u003d\"warn\""},{"lineNumber":83,"author":{"gitId":"-"},"content":" (click)\u003d\"openCancelDialogIfModified()\""},{"lineNumber":84,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Cancel"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003c/form\u003e"}],"authorContributionMap":{"NereusWB922":3,"-":87}}] diff --git a/CATcher-org_CATcher_master/commits.json b/CATcher-org_CATcher_master/commits.json new file mode 100644 index 0000000..7b2956a --- /dev/null +++ b/CATcher-org_CATcher_master/commits.json @@ -0,0 +1 @@ +{"authorDailyContributionsMap":{"xenosf":[],"sopa301":[],"mingyuanc":[],"jingting1412":[],"KevinEyo1":[],"LamJiuFong":[],"yiwen101":[],"jonasongg":[],"domoberzin":[],"asdfghjkxd":[],"yuanxi1":[],"supermii2":[],"marquestye":[],"nknguyenhc":[{"date":"2024-01-25","commitResults":[{"hash":"b20b3ef240a8c4fe32f4e016da21d89dd173b6de","isMergeCommit":false,"messageTitle":"Fix broken duplicate link (#1233)","messageBody":"Fix the broken link of a duplicate issue\r\n\r\nCurrently, the user cannot open the link to a duplicate issue\r\nwhen opening an issue, as described in CATcher-org/CATcher#1228.\r\n\r\nThe links now work as expected.","fileTypesAndContributionMap":{"html":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-08","commitResults":[{"hash":"2c18b71969540c87e89050689e7bfd9b30654677","isMergeCommit":false,"messageTitle":"Set default branch to `main`","messageBody":"Previously, image uploads depend on the user\u0027s default branch.\r\nNow, we set the branch for image upload to be `main`. Images will \r\nbe uploaded to `main` as a result.\r\n\r\n---------\r\n\r\nCo-authored-by: Chee Hong \u003cc.h.wong2606@gmail.com\u003e","fileTypesAndContributionMap":{"ts":{"insertions":100,"deletions":2}}}]},{"date":"2024-02-12","commitResults":[{"hash":"a9d38dd71eb2ef0ad5cf3e750471437f6c8d8eb4","isMergeCommit":false,"messageTitle":"Preserve linebreaks (#1241)","messageBody":"With preserving linebreaks, subset list items are rendered as a list,\r\nand paragraph rendering is the same as Github.","fileTypesAndContributionMap":{"ts":{"insertions":1,"deletions":1}}}]}],"Arif-Khalid":[],"NereusWB922":[{"date":"2024-02-03","commitResults":[{"hash":"d4b5422a2a0c83a73956032f3791dd6835a25090","isMergeCommit":false,"messageTitle":"Fix uncaught errors when attempting to access an invalid route","messageBody":"There is an uncaught error when the users click on an invalid internal link in Markdown or enter an invalid link in browser.\r\n\r\nInternal links are unlikely to be used for bug reporting and are more likely to be invalid.\r\n\r\nLet\u0027s show an error toaster and stop the navigation when clicking on an internal link in Markdown. Also, redirect the users to the login page if the users enter invalid link in browser.","fileTypesAndContributionMap":{"html":{"insertions":11,"deletions":11},"ts":{"insertions":37,"deletions":2}}}]}],"dishenggg":[],"MadLamprey":[{"date":"2024-01-25","commitResults":[{"hash":"fe7be44f9ae19c5caabb0506cb631743b9e84bb9","isMergeCommit":false,"messageTitle":"Add whitespace validation (#1237)","messageBody":"* Add whitespace validation\r\n\r\n* Update whitespace validation for new issue\r\n\r\n* Update whitespace validation for title of new issues\r\n\r\n* Update whitespace validation for title of new issues\r\n\r\n* Move validators into core\r\n\r\n* Update import order\r\n\r\n---------\r\n\r\nCo-authored-by: Misra Aditya \u003ce1096355@u.nus.edu\u003e","fileTypesAndContributionMap":{"html":{"insertions":1,"deletions":0},"ts":{"insertions":13,"deletions":1}}}]}],"Tim-Siu":[]},"authorFileTypeContributionMap":{"xenosf":{"js":0,"css":0,"html":0,"ts":0},"sopa301":{"js":0,"css":0,"html":0,"ts":0},"mingyuanc":{"js":0,"css":0,"html":0,"ts":0},"jingting1412":{"js":0,"css":0,"html":0,"ts":0},"KevinEyo1":{"js":0,"css":0,"html":0,"ts":0},"LamJiuFong":{"js":0,"css":0,"html":0,"ts":0},"yiwen101":{"js":0,"css":0,"html":0,"ts":0},"jonasongg":{"js":0,"css":0,"html":0,"ts":0},"domoberzin":{"js":0,"css":0,"html":0,"ts":0},"asdfghjkxd":{"js":0,"css":0,"html":0,"ts":0},"yuanxi1":{"js":0,"css":0,"html":0,"ts":0},"supermii2":{"js":0,"css":0,"html":0,"ts":0},"marquestye":{"js":0,"css":0,"html":0,"ts":0},"nknguyenhc":{"js":0,"css":0,"html":1,"ts":101},"Arif-Khalid":{"js":0,"css":0,"html":0,"ts":0},"NereusWB922":{"js":0,"css":0,"html":11,"ts":37},"dishenggg":{"js":0,"css":0,"html":0,"ts":0},"MadLamprey":{"js":0,"css":0,"html":1,"ts":13},"Tim-Siu":{"js":0,"css":0,"html":0,"ts":0}},"authorContributionVariance":{"xenosf":0.0,"sopa301":0.0,"mingyuanc":0.0,"jingting1412":0.0,"KevinEyo1":0.0,"LamJiuFong":0.0,"yiwen101":0.0,"jonasongg":0.0,"domoberzin":0.0,"asdfghjkxd":0.0,"yuanxi1":0.0,"supermii2":0.0,"marquestye":0.0,"nknguyenhc":138.65083,"Arif-Khalid":0.0,"NereusWB922":49.604263,"dishenggg":0.0,"MadLamprey":2.999453,"Tim-Siu":0.0},"authorDisplayNameMap":{"xenosf":"XENO..NONG","sopa301":"POON..RYAN","mingyuanc":"CHIN..YUAN","jingting1412":"WANG..TING","KevinEyo1":"EYO ..EVIN","LamJiuFong":"LAM ..FONG","yiwen101":"WANG..IWEN","jonasongg":"JONA.. WEI","domoberzin":"DOMI.. GIN","asdfghjkxd":"GEOR.. YAO","yuanxi1":"ZHU ..ANXI","supermii2":"ALVI..S NG","marquestye":"TYE ..QUES","nknguyenhc":"NGUY..UYEN","Arif-Khalid":"ARIF..ALID","NereusWB922":"NERE.. BIN","dishenggg":"YEO ..HENG","MadLamprey":"MISR..ITYA","Tim-Siu":"XU S..UYAO"}} diff --git a/CATcher-org_WATcher_main/authorship.json b/CATcher-org_WATcher_main/authorship.json new file mode 100644 index 0000000..9a9d7ed --- /dev/null +++ b/CATcher-org_WATcher_main/authorship.json @@ -0,0 +1 @@ +[{"path":"src/app/activity-dashboard/activity-dashboard.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":".event-tables-wrapper {"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":" display: flex;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":" overflow-x: auto;"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"}"}],"authorContributionMap":{"NereusWB922":4}},{"path":"src/app/activity-dashboard/activity-dashboard.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cmat-grid-list cols\u003d\"4\" rowHeight\u003d\"80px\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cmat-grid-tile\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"grid-flush-left\"\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003ch1 class\u003d\"mat-headline\" style\u003d\"margin: 0px\"\u003eActivity\u003c/h1\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cmat-grid-tile\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cmat-form-field appearance\u003d\"fill\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cmat-label\u003eStart Date\u003c/mat-label\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cinput matInput [min]\u003d\"startMinDate\" [max]\u003d\"startMaxDate\" [matDatepicker]\u003d\"startPicker\" (dateChange)\u003d\"pickStartDate($event)\" /\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmat-hint\u003eMM/DD/YYYY\u003c/mat-hint\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cmat-datepicker-toggle matSuffix [for]\u003d\"startPicker\"\u003e\u003c/mat-datepicker-toggle\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cmat-datepicker startView\u003d\"year\" #startPicker\u003e\u003c/mat-datepicker\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":""},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cmat-grid-tile\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cmat-form-field appearance\u003d\"fill\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cmat-label\u003eEnd Date\u003c/mat-label\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cinput matInput [min]\u003d\"endMinDate\" [max]\u003d\"endMaxDate\" [matDatepicker]\u003d\"endPicker\" (dateChange)\u003d\"pickEndDate($event)\" /\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cmat-hint\u003eMM/DD/YYYY\u003c/mat-hint\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cmat-datepicker-toggle matSuffix [for]\u003d\"endPicker\"\u003e\u003c/mat-datepicker-toggle\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cmat-datepicker startView\u003d\"year\" #endPicker\u003e\u003c/mat-datepicker\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/mat-grid-tile\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/mat-grid-list\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":"\u003c/div\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":"\u003cdiv class\u003d\"event-tables-wrapper\"\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003capp-event-tables"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let assignee of assignees\""},{"lineNumber":34,"author":{"gitId":"-"},"content":" class\u003d\"issue-table\""},{"lineNumber":35,"author":{"gitId":"-"},"content":" [actor]\u003d\"assignee\""},{"lineNumber":36,"author":{"gitId":"-"},"content":" [columnsToDisplay]\u003d\"this.displayedColumns\""},{"lineNumber":37,"author":{"gitId":"-"},"content":" [expandedColumnsToDisplay]\u003d\"this.expandedColumns\""},{"lineNumber":38,"author":{"gitId":"-"},"content":" [actions]\u003d\"this.actionButtons\""},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003e\u003c/app-event-tables\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"NereusWB922":1,"-":39}},{"path":"src/app/activity-dashboard/activity-dashboard.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Component, OnInit, QueryList, ViewChildren } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatDatepickerInputEvent } from \u0027@angular/material/datepicker\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import * as moment from \u0027moment\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../core/models/github-user.model\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubService } from \u0027../core/services/github.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../core/services/githubevent.service\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { EXPANDED_TABLE_COLUMNS, TABLE_COLUMNS } from \u0027./event-tables/event-tables-columns\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { ACTION_BUTTONS, EventTablesComponent } from \u0027./event-tables/event-tables.component\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":""},{"lineNumber":10,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"-"},"content":" selector: \u0027app-activity-dashboard\u0027,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" templateUrl: \u0027./activity-dashboard.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./activity-dashboard.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"-"},"content":"})"},{"lineNumber":15,"author":{"gitId":"-"},"content":"export class ActivityDashboardComponent implements OnInit {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" readonly displayedColumns \u003d [TABLE_COLUMNS.DATE_START, TABLE_COLUMNS.ISSUE_COUNT, TABLE_COLUMNS.PR_COUNT, TABLE_COLUMNS.COMMENT_COUNT];"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" readonly expandedColumns \u003d [EXPANDED_TABLE_COLUMNS.TITLE, EXPANDED_TABLE_COLUMNS.DATE];"},{"lineNumber":18,"author":{"gitId":"-"},"content":" readonly actionButtons: ACTION_BUTTONS[] \u003d [ACTION_BUTTONS.VIEW_IN_WEB];"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" startMinDate: Date;"},{"lineNumber":21,"author":{"gitId":"-"},"content":" startMaxDate \u003d moment().endOf(\u0027day\u0027).toDate();"},{"lineNumber":22,"author":{"gitId":"-"},"content":" endMinDate: Date;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" endMaxDate \u003d moment().endOf(\u0027day\u0027).toDate();"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":" assignees: GithubUser[];"},{"lineNumber":26,"author":{"gitId":"-"},"content":""},{"lineNumber":27,"author":{"gitId":"-"},"content":" @ViewChildren(EventTablesComponent) tables: QueryList\u003cEventTablesComponent\u003e;"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" constructor(private githubService: GithubService, private githubEventService: GithubEventService) {}"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.githubEventService.getEvents();"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.githubService.getUsersAssignable().subscribe((x) \u003d\u003e (this.assignees \u003d x));"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" pickStartDate(event: MatDatepickerInputEvent\u003cDate\u003e) {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.endMinDate \u003d event.value;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.tables.forEach((t) \u003d\u003e (t.githubEvents.start \u003d `${event.value}`));"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" pickEndDate(event: MatDatepickerInputEvent\u003cDate\u003e) {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.startMaxDate \u003d event.value;"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.tables.forEach((t) \u003d\u003e (t.githubEvents.end \u003d `${event.value}`));"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"NereusWB922":1,"-":44}},{"path":"src/app/activity-dashboard/activity-dashboard.module.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { CommonModule } from \u0027@angular/common\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { NgModule } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { SharedModule } from \u0027../shared/shared.module\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { ActivityDashboardRoutingModule } from \u0027./activity-dashboard-routing.module\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { ActivityDashboardComponent } from \u0027./activity-dashboard.component\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { EventTablesModule } from \u0027./event-tables/event-tables.module\u0027;"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import { EventWeekDetailsComponent } from \u0027./event-week-details/event-week-details.component\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"@NgModule({"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" declarations: [ActivityDashboardComponent, EventWeekDetailsComponent],"},{"lineNumber":11,"author":{"gitId":"-"},"content":" imports: [CommonModule, SharedModule, ActivityDashboardRoutingModule, EventTablesModule]"},{"lineNumber":12,"author":{"gitId":"-"},"content":"})"},{"lineNumber":13,"author":{"gitId":"-"},"content":"export class ActivityDashboardModule {}"}],"authorContributionMap":{"NereusWB922":2,"-":11}},{"path":"src/app/activity-dashboard/event-tables/event-tables.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".table-container {"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":" margin: 10px;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":" min-width: 400px;"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":".actor-card {"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" display: flex;"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" align-items: center;"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" padding: 10px;"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" margin-bottom: 1px;"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":".actor-username {"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" flex-grow: 1;"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" font-size: 15px;"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" margin: 0;"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" text-align: center;"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" word-break: break-word;"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":21,"author":{"gitId":"NereusWB922"},"content":".avatar-container {"},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" margin-right: 10px;"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":".mat-table {"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /* flex-wrap: wrap; */"},{"lineNumber":27,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}"},{"lineNumber":29,"author":{"gitId":"-"},"content":""},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":".mat-cell {"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" display: flex;"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" align-items: center;"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" justify-content: center;"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" text-align: center;"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" padding: 0;"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":".mat-header-cell {"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" display: flex;"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" align-items: center;"},{"lineNumber":41,"author":{"gitId":"NereusWB922"},"content":" justify-content: center;"},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" text-align: center;"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":" padding: 0;"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":".mat-header-row {"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" white-space: nowrap;"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":".example-element-row:hover {"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":" border: 3px solid rgba(0, 0, 0, 0.514);"},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" border-radius: 3px;"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" color: #210749;"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":".example-element-row td {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" border-bottom-width: 0;"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}"},{"lineNumber":59,"author":{"gitId":"-"},"content":""},{"lineNumber":60,"author":{"gitId":"-"},"content":".example-element-detail {"},{"lineNumber":61,"author":{"gitId":"-"},"content":" overflow: hidden;"},{"lineNumber":62,"author":{"gitId":"-"},"content":" display: flex;"},{"lineNumber":63,"author":{"gitId":"-"},"content":" width: 100%;"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":"/* Colour cells */"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":".white {"},{"lineNumber":69,"author":{"gitId":"-"},"content":" background-color: white;"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}"},{"lineNumber":71,"author":{"gitId":"-"},"content":""},{"lineNumber":72,"author":{"gitId":"-"},"content":".pale-green {"},{"lineNumber":73,"author":{"gitId":"-"},"content":" background-color: palegreen;"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}"},{"lineNumber":75,"author":{"gitId":"-"},"content":""},{"lineNumber":76,"author":{"gitId":"-"},"content":".green {"},{"lineNumber":77,"author":{"gitId":"-"},"content":" background-color: green;"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}"},{"lineNumber":79,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":".scrollable-container {"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" height: 53vh;"},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":" overflow: auto;"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" margin-bottom: 2px;"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" scrollbar-width: none;"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" position: relative;"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":".scrollable-container::-webkit-scrollbar {"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" display: none;"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":"/* Ref: https://css-scroll-shadows.vercel.app */"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":".scrollable-container::before {"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" pointer-events: none;"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" content: \u0027\u0027;"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" position: absolute;"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":" z-index: 2;"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" height: 6px;"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" width: 100%;"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" display: block;"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" background-image: linear-gradient(to bottom, white 66%, transparent);"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":".scrollable-container::after {"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" pointer-events: none;"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" content: \u0027\u0027;"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" position: sticky;"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" z-index: 2;"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" top: 100%;"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" height: 6px;"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" width: 100%;"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":" display: block;"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":" background-image: linear-gradient(to top, white 66%, transparent);"},{"lineNumber":114,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":115,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":116,"author":{"gitId":"NereusWB922"},"content":".scrollable-container-wrapper {"},{"lineNumber":117,"author":{"gitId":"NereusWB922"},"content":" position: relative;"},{"lineNumber":118,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":119,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":120,"author":{"gitId":"NereusWB922"},"content":".scrollable-container-wrapper::before {"},{"lineNumber":121,"author":{"gitId":"NereusWB922"},"content":" pointer-events: none;"},{"lineNumber":122,"author":{"gitId":"NereusWB922"},"content":" content: \u0027\u0027;"},{"lineNumber":123,"author":{"gitId":"NereusWB922"},"content":" position: absolute;"},{"lineNumber":124,"author":{"gitId":"NereusWB922"},"content":" z-index: 1;"},{"lineNumber":125,"author":{"gitId":"NereusWB922"},"content":" top: 0;"},{"lineNumber":126,"author":{"gitId":"NereusWB922"},"content":" left: 0;"},{"lineNumber":127,"author":{"gitId":"NereusWB922"},"content":" right: 0;"},{"lineNumber":128,"author":{"gitId":"NereusWB922"},"content":" height: 5px;"},{"lineNumber":129,"author":{"gitId":"NereusWB922"},"content":" background-image: radial-gradient(farthest-side at 50% 0, rgba(0, 0, 0, 0.5), transparent);"},{"lineNumber":130,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":131,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":132,"author":{"gitId":"NereusWB922"},"content":".scrollable-container-wrapper::after {"},{"lineNumber":133,"author":{"gitId":"NereusWB922"},"content":" pointer-events: none;"},{"lineNumber":134,"author":{"gitId":"NereusWB922"},"content":" content: \u0027\u0027;"},{"lineNumber":135,"author":{"gitId":"NereusWB922"},"content":" position: absolute;"},{"lineNumber":136,"author":{"gitId":"NereusWB922"},"content":" z-index: 1;"},{"lineNumber":137,"author":{"gitId":"NereusWB922"},"content":" bottom: 0;"},{"lineNumber":138,"author":{"gitId":"NereusWB922"},"content":" left: 0;"},{"lineNumber":139,"author":{"gitId":"NereusWB922"},"content":" right: 0;"},{"lineNumber":140,"author":{"gitId":"NereusWB922"},"content":" height: 5px;"},{"lineNumber":141,"author":{"gitId":"NereusWB922"},"content":" background-image: radial-gradient(farthest-side at 50% 100%, rgba(0, 0, 0, 0.5), transparent);"},{"lineNumber":142,"author":{"gitId":"NereusWB922"},"content":"}"}],"authorContributionMap":{"NereusWB922":105,"-":37}},{"path":"src/app/activity-dashboard/event-tables/event-tables.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"table-container\"\u003e"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-card class\u003d\"actor-card\"\u003e"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":" \u003cdiv"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" mat-card-avatar"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" *ngIf\u003d\"this.actor\""},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" class\u003d\"avatar-container\""},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" [ngStyle]\u003d\"{"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" background: \u0027url(\u0027 + this.actor.avatar_url + \u0027)\u0027,"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" \u0027background-size\u0027: \u002740px\u0027"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" }\""},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" \u003e\u003c/div\u003e"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-card-title class\u003d\"actor-username\"\u003e"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" {{ this.actor !\u003d\u003d undefined ? this.actor.login : \u0027Unknown\u0027 }}"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" \u003c/mat-card-title\u003e"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" \u003c/mat-card\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" \u003cdiv class\u003d\"scrollable-container-wrapper\"\u003e"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" \u003cdiv class\u003d\"scrollable-container\"\u003e"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-table [dataSource]\u003d\"this.githubEvents\" matSort multiTemplateDataRows\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"date_start\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Date \u003c/mat-header-cell\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let element\"\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cspan (click)\u003d\"$event.stopPropagation()\" style\u003d\"cursor: default\"\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" {{ element.date_start }}"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"issue_count\"\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Issue # \u003c/mat-header-cell\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let element\" [ngClass]\u003d\"colorCell(element.issue_count)\"\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cspan (click)\u003d\"$event.stopPropagation()\" style\u003d\"cursor: default\"\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" {{ element.issue_count }}"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"pr_count\"\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e PR # \u003c/mat-header-cell\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let element\" [ngClass]\u003d\"colorCell(element.pr_count)\"\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cspan (click)\u003d\"$event.stopPropagation()\" style\u003d\"cursor: default\"\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":" {{ element.pr_count }}"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":""},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cng-container matColumnDef\u003d\"comment_count\"\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cmat-header-cell *matHeaderCellDef mat-sort-header\u003e Comment # \u003c/mat-header-cell\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cmat-cell *matCellDef\u003d\"let element\" [ngClass]\u003d\"colorCell(element.comment_count)\"\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cspan (click)\u003d\"$event.stopPropagation()\" style\u003d\"cursor: default\"\u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":" {{ element.comment_count }}"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-header-row *matHeaderRowDef\u003d\"this.columnsToDisplay\"\u003e\u003c/mat-header-row\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cmat-row"},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" *matRowDef\u003d\"let eventWeek; columns: this.columnsToDisplay\""},{"lineNumber":59,"author":{"gitId":"-"},"content":" class\u003d\"example-element-row\""},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" (click)\u003d\"openDialog(eventWeek)\""},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003e\u003c/mat-row\u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/mat-table\u003e"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":" \u003c/div\u003e"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" \u003c/div\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003cmat-card *ngIf\u003d\"this.githubEvents.isLoading$ | async\" style\u003d\"display: flex; justify-content: center; align-items: center\"\u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003cmat-progress-spinner color\u003d\"primary\" mode\u003d\"indeterminate\" diameter\u003d\"50\" strokeWidth\u003d\"5\"\u003e\u003c/mat-progress-spinner\u003e"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/mat-card\u003e"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003cmat-paginator [pageSize]\u003d\"20\" [pageSizeOptions]\u003d\"[10, 20, 50]\"\u003e\u003c/mat-paginator\u003e"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"NereusWB922":22,"-":48}},{"path":"src/app/activity-dashboard/event-tables/event-tables.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { animate, state, style, transition, trigger } from \u0027@angular/animations\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { AfterViewInit, Component, Input, OnInit, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import { MatDialog } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../../core/models/github-user.model\u0027;"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"import { ErrorHandlingService } from \u0027../../core/services/error-handling.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { GithubEventService } from \u0027../../core/services/githubevent.service\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../core/services/logging.service\u0027;"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import { EventWeekDetailsComponent } from \u0027../event-week-details/event-week-details.component\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import { EventWeek } from \u0027../event-week.model\u0027;"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import { GithubEventDataTable } from \u0027./GithubEventDataTable\u0027;"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"import { NoEventsError } from \u0027./no-events-error.model\u0027;"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"export enum ACTION_BUTTONS {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" VIEW_IN_WEB,"},{"lineNumber":17,"author":{"gitId":"-"},"content":" COLLAPSE"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":21,"author":{"gitId":"-"},"content":" selector: \u0027app-event-tables\u0027,"},{"lineNumber":22,"author":{"gitId":"-"},"content":" templateUrl: \u0027./event-tables.component.html\u0027,"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" styleUrls: [\u0027./event-tables.component.css\u0027]"},{"lineNumber":24,"author":{"gitId":"-"},"content":"})"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Angular Table Expandable Rows"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * ref: https://material.angular.io/components/table/examples#table-expandable-rows"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */"},{"lineNumber":30,"author":{"gitId":"-"},"content":"export class EventTablesComponent implements OnInit, AfterViewInit {"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Input() columnsToDisplay: string[];"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Input() expandedColumnsToDisplay: string[];"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Input() actions: ACTION_BUTTONS[];"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Input() actor?: GithubUser \u003d undefined;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Input() filters?: any \u003d undefined;"},{"lineNumber":36,"author":{"gitId":"-"},"content":""},{"lineNumber":37,"author":{"gitId":"-"},"content":" @ViewChild(MatSort, { static: true }) sort: MatSort;"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" githubEvents: GithubEventDataTable;"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"-"},"content":" public readonly action_buttons \u003d ACTION_BUTTONS;"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" constructor("},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" public githubEventService: GithubEventService,"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":" public dialog: MatDialog,"},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" private logger: LoggingService,"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" private errorHandling: ErrorHandlingService"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":" ) {}"},{"lineNumber":50,"author":{"gitId":"-"},"content":""},{"lineNumber":51,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.githubEvents \u003d new GithubEventDataTable(this.githubEventService, this.logger, this.sort, this.paginator, this.actor, this.filters);"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }"},{"lineNumber":54,"author":{"gitId":"-"},"content":""},{"lineNumber":55,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":56,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.githubEvents.loadEvents();"},{"lineNumber":58,"author":{"gitId":"-"},"content":" });"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"-"},"content":" reload() {"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.githubEvents.loadEvents();"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Formats the title text to account for those that contain long words."},{"lineNumber":67,"author":{"gitId":"-"},"content":" * @param title - Title of Event that is to be displayed in the Table Row."},{"lineNumber":68,"author":{"gitId":"-"},"content":" */"},{"lineNumber":69,"author":{"gitId":"-"},"content":" fitTitleText(title: string): string {"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Arbitrary Length of Characters beyond which an overflow occurs."},{"lineNumber":71,"author":{"gitId":"-"},"content":" const MAX_WORD_LENGTH \u003d 43;"},{"lineNumber":72,"author":{"gitId":"-"},"content":" const SPLITTER_TEXT \u003d \u0027 \u0027;"},{"lineNumber":73,"author":{"gitId":"-"},"content":" const ELLIPSES \u003d \u0027...\u0027;"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":" return title"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .split(SPLITTER_TEXT)"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .map((word) \u003d\u003e {"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (word.length \u003e MAX_WORD_LENGTH) {"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return word.substring(0, MAX_WORD_LENGTH - 5).concat(ELLIPSES);"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return word;"},{"lineNumber":82,"author":{"gitId":"-"},"content":" })"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .join(SPLITTER_TEXT);"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }"},{"lineNumber":85,"author":{"gitId":"-"},"content":""},{"lineNumber":86,"author":{"gitId":"-"},"content":" /** Not implemented yet. */"},{"lineNumber":87,"author":{"gitId":"-"},"content":" viewEventInBrowser(id: number, event: Event) {"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.logger.info(`EventTablesComponent: Opening Event ${id} on Github`);"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // window.open(\u0027https://github.com/\u0027, \u0027_blank\u0027);"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }"},{"lineNumber":91,"author":{"gitId":"-"},"content":""},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" /** Opens dialog to show the event details of the selected week. */"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" openDialog(eventWeek: EventWeek) {"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" if (eventWeek.events.length \u003c\u003d 0) {"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" this.errorHandling.handleError(new NoEventsError());"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":" return;"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }"},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":" this.dialog.open(EventWeekDetailsComponent, {"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" data: {"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" eventWeek,"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" expandedColumnsToDisplay: this.expandedColumnsToDisplay"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" });"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }"},{"lineNumber":105,"author":{"gitId":"-"},"content":""},{"lineNumber":106,"author":{"gitId":"-"},"content":" /** Returns color string of cell. Shade darkens with magnitude of number. */"},{"lineNumber":107,"author":{"gitId":"-"},"content":" colorCell(count: number) {"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (count \u003d\u003d\u003d 0) {"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return \u0027white\u0027;"},{"lineNumber":110,"author":{"gitId":"-"},"content":" } else if (count \u003e 0 \u0026\u0026 count \u003c\u003d 5) {"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return \u0027pale-green\u0027;"},{"lineNumber":112,"author":{"gitId":"-"},"content":" } else if (count \u003e 6) {"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return \u0027green\u0027;"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"NereusWB922":21,"-":95}},{"path":"src/app/activity-dashboard/event-tables/no-events-error.model.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"export class NoEventsError extends Error {"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":" constructor() {"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":" super(\u0027No events found for this week.\u0027);"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" Object.setPrototypeOf(this, NoEventsError.prototype);"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" }"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":"}"}],"authorContributionMap":{"NereusWB922":6}},{"path":"src/app/activity-dashboard/event-week-details/event-week-details.component.css","fileType":"css","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":".mat-cell {"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":" white-space: nowrap;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":" display: flex;"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" align-items: center;"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" justify-content: center;"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" text-align: center;"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" padding: 0;"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":".mat-header-cell {"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" display: flex;"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" align-items: center;"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" justify-content: center;"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" text-align: center;"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" padding: 0;"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":".mat-dialog-content {"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" min-width: 500px;"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":"}"}],"authorContributionMap":{"NereusWB922":20}},{"path":"src/app/activity-dashboard/event-week-details/event-week-details.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"\u003ch2 mat-dialog-title\u003eEvent Week Details\u003c/h2\u003e"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"\u003cmat-dialog-content class\u003d\"mat-typography\"\u003e"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-table [dataSource]\u003d\"data.eventWeek.events\"\u003e"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":" \u003cng-container matColumnDef\u003d\"{{ expandableColumn }}\" *ngFor\u003d\"let expandableColumn of data.expandedColumnsToDisplay\"\u003e"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-header-cell *matHeaderCellDef\u003e{{ expandableColumn }}\u003c/mat-header-cell\u003e"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-cell *matCellDef\u003d\"let property\"\u003e"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" {{ property[expandableColumn] }}"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" \u003c/mat-cell\u003e"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" \u003c/ng-container\u003e"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-header-row *matHeaderRowDef\u003d\"data.expandedColumnsToDisplay\"\u003e\u003c/mat-header-row\u003e"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" \u003cmat-row *matRowDef\u003d\"let property; columns: data.expandedColumnsToDisplay\"\u003e\u003c/mat-row\u003e"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" \u003c/mat-table\u003e"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":"\u003c/mat-dialog-content\u003e"}],"authorContributionMap":{"NereusWB922":13}},{"path":"src/app/activity-dashboard/event-week-details/event-week-details.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"NereusWB922"},"content":"import { Component, Inject } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"import { MAT_DIALOG_DATA } from \u0027@angular/material/dialog\u0027;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import { EventWeek } from \u0027../event-week.model\u0027;"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"export interface DialogData {"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" eventWeek: EventWeek;"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" expandedColumnsToDisplay: string[];"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":"}"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"@Component({"},{"lineNumber":11,"author":{"gitId":"NereusWB922"},"content":" selector: \u0027app-event-week-detail\u0027,"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":" templateUrl: \u0027./event-week-details.component.html\u0027,"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" styleUrls: [\u0027./event-week-details.component.css\u0027]"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":"})"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":"export class EventWeekDetailsComponent {"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" constructor(@Inject(MAT_DIALOG_DATA) public data: DialogData) {}"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"}"}],"authorContributionMap":{"NereusWB922":17}},{"path":"src/app/issues-viewer/card-view/card-view.component.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"Arif-Khalid"},"content":"import { AfterViewInit, Component, ElementRef, Input, OnDestroy, OnInit, ViewChild } from \u0027@angular/core\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { Observable } from \u0027rxjs\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { GithubUser } from \u0027../../core/models/github-user.model\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../core/models/issue.model\u0027;"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../core/services/issue.service\u0027;"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import { FilterableComponent, FilterableSource } from \u0027../../shared/issue-tables/filterableTypes\u0027;"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import { IssuesDataTable } from \u0027../../shared/issue-tables/IssuesDataTable\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"@Component({"},{"lineNumber":12,"author":{"gitId":"-"},"content":" selector: \u0027app-card-view\u0027,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" templateUrl: \u0027./card-view.component.html\u0027,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" styleUrls: [\u0027./card-view.component.css\u0027]"},{"lineNumber":15,"author":{"gitId":"-"},"content":"})"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Displays issues as Cards."},{"lineNumber":19,"author":{"gitId":"-"},"content":" */"},{"lineNumber":20,"author":{"gitId":"-"},"content":"export class CardViewComponent implements OnInit, AfterViewInit, OnDestroy, FilterableComponent {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Input() headers: string[];"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Input() assignee?: GithubUser \u003d undefined;"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Input() filters?: any \u003d undefined;"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Input() sort?: MatSort \u003d undefined;"},{"lineNumber":25,"author":{"gitId":"-"},"content":""},{"lineNumber":26,"author":{"gitId":"-"},"content":" @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" issues: IssuesDataTable;"},{"lineNumber":29,"author":{"gitId":"-"},"content":" issues$: Observable\u003cIssue[]\u003e;"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"Arif-Khalid"},"content":" isLoading \u003d true;"},{"lineNumber":32,"author":{"gitId":"Arif-Khalid"},"content":" issueLength \u003d 0;"},{"lineNumber":33,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":34,"author":{"gitId":"Arif-Khalid"},"content":" constructor(public element: ElementRef, public issueService: IssueService) {}"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"-"},"content":" ngOnInit() {"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.issues \u003d new IssuesDataTable(this.issueService, this.sort, this.paginator, this.headers, this.assignee, this.filters);"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }"},{"lineNumber":39,"author":{"gitId":"-"},"content":""},{"lineNumber":40,"author":{"gitId":"-"},"content":" ngAfterViewInit(): void {"},{"lineNumber":41,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.issues.loadIssues();"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.issues$ \u003d this.issues.connect();"},{"lineNumber":44,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":45,"author":{"gitId":"Arif-Khalid"},"content":" // Emit event when issues change"},{"lineNumber":46,"author":{"gitId":"Arif-Khalid"},"content":" this.issues$.subscribe((issues) \u003d\u003e {"},{"lineNumber":47,"author":{"gitId":"Arif-Khalid"},"content":" this.issueLength \u003d issues.length;"},{"lineNumber":48,"author":{"gitId":"Arif-Khalid"},"content":" });"},{"lineNumber":49,"author":{"gitId":"Arif-Khalid"},"content":""},{"lineNumber":50,"author":{"gitId":"Arif-Khalid"},"content":" // Emit event when loading state changes"},{"lineNumber":51,"author":{"gitId":"Arif-Khalid"},"content":" this.issues.isLoading$.subscribe((isLoadingUpdate) \u003d\u003e {"},{"lineNumber":52,"author":{"gitId":"Arif-Khalid"},"content":" this.isLoading \u003d isLoadingUpdate;"},{"lineNumber":53,"author":{"gitId":"Arif-Khalid"},"content":" });"},{"lineNumber":54,"author":{"gitId":"-"},"content":" });"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }"},{"lineNumber":56,"author":{"gitId":"-"},"content":""},{"lineNumber":57,"author":{"gitId":"-"},"content":" ngOnDestroy(): void {"},{"lineNumber":58,"author":{"gitId":"-"},"content":" setTimeout(() \u003d\u003e {"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.issues.disconnect();"},{"lineNumber":60,"author":{"gitId":"-"},"content":" });"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }"},{"lineNumber":62,"author":{"gitId":"-"},"content":""},{"lineNumber":63,"author":{"gitId":"-"},"content":" retrieveFilterable(): FilterableSource {"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return this.issues;"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"Arif-Khalid":15,"-":51}},{"path":"src/app/issues-viewer/issues-viewer.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"loading-spinner\" *ngIf\u003d\"this.phaseService.isChangingRepo | async; else elseBlock\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cmat-progress-spinner color\u003d\"primary\" mode\u003d\"indeterminate\" diameter\u003d\"50\" strokeWidth\u003d\"5\"\u003e \u003c/mat-progress-spinner\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":""},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cng-template #elseBlock\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003capp-filter-bar [views$]\u003d\"views\" #filterbar\u003e\u003c/app-filter-bar\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"wrapper\"\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003capp-card-view"},{"lineNumber":11,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let assignee of assignees\""},{"lineNumber":12,"author":{"gitId":"-"},"content":" class\u003d\"issue-table\""},{"lineNumber":13,"author":{"gitId":"Arif-Khalid"},"content":" #card"},{"lineNumber":14,"author":{"gitId":"Arif-Khalid"},"content":" [ngStyle]\u003d\"{ display: card.isLoading || card.issueLength \u003e 0 ? \u0027initial\u0027 : \u0027none\u0027 }\""},{"lineNumber":15,"author":{"gitId":"-"},"content":" [assignee]\u003d\"assignee\""},{"lineNumber":16,"author":{"gitId":"-"},"content":" [headers]\u003d\"this.displayedColumns\""},{"lineNumber":17,"author":{"gitId":"-"},"content":" [sort]\u003d\"filterbar.matSort\""},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003e\u003c/app-card-view\u003e"},{"lineNumber":19,"author":{"gitId":"Arif-Khalid"},"content":" \u003capp-card-view"},{"lineNumber":20,"author":{"gitId":"Arif-Khalid"},"content":" class\u003d\"issue-table\""},{"lineNumber":21,"author":{"gitId":"Arif-Khalid"},"content":" #card"},{"lineNumber":22,"author":{"gitId":"Arif-Khalid"},"content":" [ngStyle]\u003d\"{ display: card.isLoading || card.issueLength \u003e 0 ? \u0027initial\u0027 : \u0027none\u0027 }\""},{"lineNumber":23,"author":{"gitId":"Arif-Khalid"},"content":" [headers]\u003d\"this.displayedColumns\""},{"lineNumber":24,"author":{"gitId":"Arif-Khalid"},"content":" [sort]\u003d\"filterbar.matSort\""},{"lineNumber":25,"author":{"gitId":"Arif-Khalid"},"content":" \u003e"},{"lineNumber":26,"author":{"gitId":"Arif-Khalid"},"content":" \u003c/app-card-view\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/ng-template\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"Arif-Khalid":10,"-":19}},{"path":"src/app/shared/filter-bar/label-filter-bar/label-filter-bar.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cbutton mat-stroked-button *ngIf\u003d\"loaded\" [matMenuTriggerFor]\u003d\"menu\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" {{ selectedLabelNames.length \u003d\u003d 0 ? \u0027All\u0027 : selectedLabelNames.length }} Selected | {{ hiddenLabelNames?.size || 0 }} Hidden ▾"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/button\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cbutton mat-stroked-button disabled *ngIf\u003d\"!loaded\" color\u003d\"accent\"\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cmat-progress-bar mode\u003d\"query\"\u003e\u003c/mat-progress-bar\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c/button\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":""},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003cmat-menu #menu\u003d\"matMenu\" class\u003d\"popupmenu\"\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cdiv (click)\u003d\"$event.stopPropagation()\" class\u003d\"popup-container\"\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cmat-form-field appearance\u003d\"standard\" class\u003d\"input-field\"\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cmat-label\u003eLabels\u003c/mat-label\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cinput #input matInput placeholder\u003d\"Find labels\" /\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c/mat-form-field\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":""},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cbutton mat-button (click)\u003d\"removeAllSelection()\"\u003eRemove all\u003c/button\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"!hasLabels(input.value)\" class\u003d\"no-labels\"\u003eNo Labels Found!\u003c/div\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"scroll-container-wrapper\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"scroll-container\"\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cmat-selection-list [(ngModel)]\u003d\"selectedLabelNames\" (selectionChange)\u003d\"updateSelection()\"\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cmat-list-option"},{"lineNumber":24,"author":{"gitId":"-"},"content":" #option"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let label of this.labels$ | async\""},{"lineNumber":26,"author":{"gitId":"nknguyenhc"},"content":" [value]\u003d\"label.formattedName\""},{"lineNumber":27,"author":{"gitId":"nknguyenhc"},"content":" [selected]\u003d\"selectedLabelNames.includes(label.formattedName)\""},{"lineNumber":28,"author":{"gitId":"-"},"content":" class\u003d\"list-option\""},{"lineNumber":29,"author":{"gitId":"-"},"content":" [class.hidden]\u003d\"filter(input.value, label.name)\""},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"flexbox-container\"\u003e"},{"lineNumber":32,"author":{"gitId":"nknguyenhc"},"content":" \u003cbutton"},{"lineNumber":33,"author":{"gitId":"nknguyenhc"},"content":" mat-icon-button"},{"lineNumber":34,"author":{"gitId":"nknguyenhc"},"content":" *ngIf\u003d\"!hiddenLabelNames.has(label.formattedName)\""},{"lineNumber":35,"author":{"gitId":"nknguyenhc"},"content":" (click)\u003d\"hide(label.formattedName); $event.stopPropagation()\""},{"lineNumber":36,"author":{"gitId":"nknguyenhc"},"content":" \u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003evisibility\u003c/mat-icon\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":39,"author":{"gitId":"nknguyenhc"},"content":" \u003cbutton"},{"lineNumber":40,"author":{"gitId":"nknguyenhc"},"content":" mat-icon-button"},{"lineNumber":41,"author":{"gitId":"nknguyenhc"},"content":" *ngIf\u003d\"hiddenLabelNames.has(label.formattedName)\""},{"lineNumber":42,"author":{"gitId":"nknguyenhc"},"content":" (click)\u003d\"show(label.formattedName); $event.stopPropagation()\""},{"lineNumber":43,"author":{"gitId":"nknguyenhc"},"content":" \u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003evisibility_off\u003c/mat-icon\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cmat-chip"},{"lineNumber":47,"author":{"gitId":"-"},"content":" [ngStyle]\u003d\"labelService.setLabelStyle(label.color)\""},{"lineNumber":48,"author":{"gitId":"nknguyenhc"},"content":" [disabled]\u003d\"hiddenLabelNames.has(label.formattedName)\""},{"lineNumber":49,"author":{"gitId":"-"},"content":" (click)\u003d\"simulateClick(option); $event.stopPropagation()\""},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":" {{ label.formattedName }}"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/mat-chip\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/mat-list-option\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/mat-selection-list\u003e"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":59,"author":{"gitId":"-"},"content":"\u003c/mat-menu\u003e"}],"authorContributionMap":{"nknguyenhc":13,"-":46}},{"path":"src/app/shared/layout/header.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cmat-toolbar color\u003d\"primary\" style\u003d\"position: sticky; position: -webkit-sticky; top: 0; z-index: 1000\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":3,"author":{"gitId":"-"},"content":" *ngIf\u003d\"isBackButtonShown()\""},{"lineNumber":4,"author":{"gitId":"-"},"content":" mat-icon-button"},{"lineNumber":5,"author":{"gitId":"-"},"content":" class\u003d\"mat-toolbar mat-primary back-button\""},{"lineNumber":6,"author":{"gitId":"-"},"content":" style\u003d\"transform: scale(0.9)\""},{"lineNumber":7,"author":{"gitId":"-"},"content":" (click)\u003d\"goBack()\""},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003earrow_back_ios\u003c/mat-icon\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":11,"author":{"gitId":"MadLamprey"},"content":" \u003ca"},{"lineNumber":12,"author":{"gitId":"MadLamprey"},"content":" class\u003d\"mat-toolbar mat-primary\""},{"lineNumber":13,"author":{"gitId":"MadLamprey"},"content":" style\u003d\"text-decoration: none\""},{"lineNumber":14,"author":{"gitId":"MadLamprey"},"content":" [routerLink]\u003d\"phaseService.isRepoSet() ? phaseService.currentPhase : null\""},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003eWATcher v{{ this.getVersion() }}\u003c/a"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"phase-descriptor\" *ngIf\u003d\"auth.isAuthenticated()\" style\u003d\"margin-left: 10px\"\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" ({{ this.getPhaseDescription(phaseService.currentPhase) }})"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 this.phaseService.sessionData.sessionRepo.length \u003e 1\"\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cbutton mat-button [matMenuTriggerFor]\u003d\"menu\"\u003e\u003cmat-icon style\u003d\"color: white\"\u003eexpand_more\u003c/mat-icon\u003e\u003c/button\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cmat-menu #menu\u003d\"matMenu\"\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":25,"author":{"gitId":"-"},"content":" mat-menu-item"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *ngFor\u003d\"let sessionRepo of this.phaseService.sessionData.sessionRepo\""},{"lineNumber":27,"author":{"gitId":"-"},"content":" (click)\u003d\"this.routeToSelectedPhase(sessionRepo.phase)\""},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cspan\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cmat-icon [ngStyle]\u003d\"{ color: \u0027green\u0027, visibility: this.phaseService.currentPhase \u003d\u003d\u003d sessionRepo.phase ? \u0027visible\u0027 : \u0027hidden\u0027 }\""},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003edone\u003c/mat-icon"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" {{ this.getPhaseDescription(sessionRepo.phase) }}"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/mat-menu\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c!-- everything else --\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cspan style\u003d\"flex: 1 1 auto\"\u003e\u003c/span\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":""},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 phaseService.isRepoSet()\"\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"phase-descriptor\" style\u003d\"margin-left: 10px\"\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":" {{ this.currentRepo || \u0027No Repository Set\u0027 }}"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":48,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":49,"author":{"gitId":"-"},"content":" matTooltip\u003d\"{{ phaseService.isRepoSet() ? \u0027Change Repository\u0027 : \u0027Select Repository\u0027 }}\""},{"lineNumber":50,"author":{"gitId":"-"},"content":" (click)\u003d\"this.openChangeRepoDialog()\""},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eedit\u003c/mat-icon\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cspan style\u003d\"flex: 1 1 auto\"\u003e\u003c/span\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":""},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cbutton mat-button matTooltip\u003d\"Download WATcher Log\" (click)\u003d\"this.exportLogFile()\"\u003e"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003ereceipt\u003c/mat-icon\u003e"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cbutton mat-button matTooltip\u003d\"Give feedback about WATcher\" (click)\u003d\"openIssueTracker()\"\u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003email\u003c/mat-icon\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":""},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":66,"author":{"gitId":"-"},"content":" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 phaseService.isRepoSet() \u0026\u0026 isOpenUrlButtonShown()\""},{"lineNumber":67,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":68,"author":{"gitId":"-"},"content":" matTooltip\u003d\"View current page on GitHub\""},{"lineNumber":69,"author":{"gitId":"-"},"content":" (click)\u003d\"viewBrowser()\""},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003eopen_in_new\u003c/mat-icon\u003e"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":73,"author":{"gitId":"-"},"content":""},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"sync-spinner\" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 (this.isLoading$ | async); else notLoading\"\u003e"},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u003cmat-spinner class\u003d\"white-spinner\" [diameter]\u003d\"20\"\u003e\u003c/mat-spinner\u003e"},{"lineNumber":76,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":77,"author":{"gitId":"-"},"content":""},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003cng-template #notLoading\u003e"},{"lineNumber":79,"author":{"gitId":"-"},"content":" \u003cbutton"},{"lineNumber":80,"author":{"gitId":"-"},"content":" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 phaseService.isRepoSet() \u0026\u0026 isReloadButtonShown() \u0026\u0026 !this.isReloadButtonDisabled\""},{"lineNumber":81,"author":{"gitId":"-"},"content":" mat-button"},{"lineNumber":82,"author":{"gitId":"-"},"content":" matTooltip\u003d\"Synchronize with Github data\""},{"lineNumber":83,"author":{"gitId":"-"},"content":" (click)\u003d\"reload()\""},{"lineNumber":84,"author":{"gitId":"-"},"content":" \u003e"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Sync"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003cmat-icon\u003erefresh\u003c/mat-icon\u003e"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"sync-spinner\" *ngIf\u003d\"auth.isAuthenticated() \u0026\u0026 isReloadButtonShown() \u0026\u0026 this.isReloadButtonDisabled\"\u003e"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003cspan style\u003d\"font-size: 14px; margin-right: 7px\"\u003eSync\u003c/span\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003cmat-spinner class\u003d\"white-spinner\" [diameter]\u003d\"20\"\u003e\u003c/mat-spinner\u003e"},{"lineNumber":91,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u003c/ng-template\u003e"},{"lineNumber":93,"author":{"gitId":"-"},"content":""},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003cbutton *ngIf\u003d\"auth.isAuthenticated()\" mat-button matTooltip\u003d\"Log out\" (click)\u003d\"openLogOutDialog(); $event.stopPropagation()\"\u003e"},{"lineNumber":95,"author":{"gitId":"-"},"content":" ({{ userService.currentUser.loginId }})"},{"lineNumber":96,"author":{"gitId":"-"},"content":" \u003cmat-icon style\u003d\"margin-left: 2px\"\u003eexit_to_app\u003c/mat-icon\u003e"},{"lineNumber":97,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003c/mat-toolbar\u003e"}],"authorContributionMap":{"MadLamprey":4,"-":94}},{"path":"tests/app/auth/login/login.component.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { ComponentFixture, TestBed, waitForAsync } from \u0027@angular/core/testing\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { LoginComponent } from \u0027../../../../src/app/auth/login/login.component\u0027;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import { AuthService, AuthState } from \u0027../../../../src/app/core/services/auth.service\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { ErrorHandlingService } from \u0027../../../../src/app/core/services/error-handling.service\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { LoggingService } from \u0027../../../../src/app/core/services/logging.service\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"-"},"content":"describe(\u0027LoginComponent\u0027, () \u003d\u003e {"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" let authServiceSpy: jasmine.SpyObj\u003cAuthService\u003e;"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" let errorHandlingServiceSpy: jasmine.SpyObj\u003cErrorHandlingService\u003e;"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" let loggingServiceSpy: jasmine.SpyObj\u003cLoggingService\u003e;"},{"lineNumber":11,"author":{"gitId":"-"},"content":" let component: LoginComponent;"},{"lineNumber":12,"author":{"gitId":"-"},"content":" let fixture: ComponentFixture\u003cLoginComponent\u003e;"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":" beforeEach("},{"lineNumber":15,"author":{"gitId":"-"},"content":" waitForAsync(() \u003d\u003e {"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" authServiceSpy \u003d jasmine.createSpyObj\u003cAuthService\u003e(\u0027AuthService\u0027, [\u0027startOAuthProcess\u0027, \u0027changeAuthState\u0027]);"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" loggingServiceSpy \u003d jasmine.createSpyObj\u003cLoggingService\u003e(\u0027LoggingService\u0027, [\u0027info\u0027]);"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" errorHandlingServiceSpy \u003d jasmine.createSpyObj\u003cErrorHandlingService\u003e(\u0027ErrorHandlingService\u0027, [\u0027handleError\u0027]);"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" TestBed.configureTestingModule({"},{"lineNumber":21,"author":{"gitId":"-"},"content":" providers: ["},{"lineNumber":22,"author":{"gitId":"NereusWB922"},"content":" { provide: AuthService, useValue: authServiceSpy },"},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" { provide: LoggingService, useValue: loggingServiceSpy },"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" { provide: ErrorHandlingService, useValue: errorHandlingServiceSpy }"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ],"},{"lineNumber":26,"author":{"gitId":"-"},"content":" declarations: [LoginComponent]"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }).compileComponents();"},{"lineNumber":28,"author":{"gitId":"-"},"content":""},{"lineNumber":29,"author":{"gitId":"-"},"content":" fixture \u003d TestBed.createComponent(LoginComponent);"},{"lineNumber":30,"author":{"gitId":"-"},"content":" component \u003d fixture.componentInstance;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fixture.detectChanges();"},{"lineNumber":32,"author":{"gitId":"-"},"content":" })"},{"lineNumber":33,"author":{"gitId":"-"},"content":" );"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" it(\u0027should create\u0027, () \u003d\u003e {"},{"lineNumber":36,"author":{"gitId":"-"},"content":" expect(component).toBeTruthy();"},{"lineNumber":37,"author":{"gitId":"-"},"content":" });"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" it(\u0027startPublicOnlyLoginProcess should call startLoginProcess with false\u0027, () \u003d\u003e {"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" spyOn(component, \u0027startLoginProcess\u0027);"},{"lineNumber":41,"author":{"gitId":"-"},"content":""},{"lineNumber":42,"author":{"gitId":"NereusWB922"},"content":" component.startPublicOnlyLoginProcess();"},{"lineNumber":43,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" expect(component.startLoginProcess).toHaveBeenCalledWith(false);"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" });"},{"lineNumber":46,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":47,"author":{"gitId":"NereusWB922"},"content":" it(\u0027startIncludePrivateLoginProcess should call startLoginProcess with true\u0027, () \u003d\u003e {"},{"lineNumber":48,"author":{"gitId":"NereusWB922"},"content":" spyOn(component, \u0027startLoginProcess\u0027);"},{"lineNumber":49,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" component.startIncludePrivateLoginProcess();"},{"lineNumber":51,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":52,"author":{"gitId":"NereusWB922"},"content":" expect(component.startLoginProcess).toHaveBeenCalledWith(true);"},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" });"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":55,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should call authService.startOAuthProcess on startLoginProcess\u0027, () \u003d\u003e {"},{"lineNumber":56,"author":{"gitId":"NereusWB922"},"content":" const hasPrivateConsent \u003d false;"},{"lineNumber":57,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":58,"author":{"gitId":"NereusWB922"},"content":" component.startLoginProcess(hasPrivateConsent);"},{"lineNumber":59,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" expect(authServiceSpy.startOAuthProcess).toHaveBeenCalledWith(hasPrivateConsent);"},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" expect(loggingServiceSpy.info).toHaveBeenCalledWith(\u0027LoginComponent: Beginning login process\u0027);"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" });"},{"lineNumber":63,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should call error handling methods when error is thrown\u0027, () \u003d\u003e {"},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" const hasPrivateConsent \u003d false;"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" const errorMessage \u003d \u0027Error!\u0027;"},{"lineNumber":67,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":68,"author":{"gitId":"NereusWB922"},"content":" const error: Error \u003d new Error(errorMessage);"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" authServiceSpy.startOAuthProcess.and.throwError(error);"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":71,"author":{"gitId":"NereusWB922"},"content":" component.startLoginProcess(hasPrivateConsent);"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":73,"author":{"gitId":"NereusWB922"},"content":" expect(authServiceSpy.changeAuthState).toHaveBeenCalledWith(AuthState.NotAuthenticated);"},{"lineNumber":74,"author":{"gitId":"NereusWB922"},"content":" expect(errorHandlingServiceSpy.handleError).toHaveBeenCalledWith(error);"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" expect(loggingServiceSpy.info.calls.allArgs()).toEqual(["},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" [\u0027LoginComponent: Beginning login process\u0027],"},{"lineNumber":77,"author":{"gitId":"NereusWB922"},"content":" [`LoginComponent: Login process failed with an error: ${error}`]"},{"lineNumber":78,"author":{"gitId":"NereusWB922"},"content":" ]);"},{"lineNumber":79,"author":{"gitId":"-"},"content":" });"},{"lineNumber":80,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"NereusWB922":49,"-":31}},{"path":"tests/app/core/models/session-model.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { of } from \u0027rxjs\u0027;"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"import { Phase } from \u0027../../../../src/app/core/models/phase.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":4,"author":{"gitId":"-"},"content":" assertSessionDataIntegrity,"},{"lineNumber":5,"author":{"gitId":"-"},"content":" NO_VALID_OPEN_PHASES,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" OPENED_PHASE_REPO_UNDEFINED,"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" SESSION_DATA_MISSING_FIELDS,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" SESSION_DATA_UNAVAILABLE"},{"lineNumber":9,"author":{"gitId":"-"},"content":"} from \u0027../../../../src/app/core/models/session.model\u0027;"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":"import { VALID_SESSION_DATA, WATCHER_REPO } from \u0027../../../constants/session.constants\u0027;"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"-"},"content":"describe(\u0027Session Model\u0027, () \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" describe(\u0027assertSessionDataIntegrity()\u0027, () \u003d\u003e {"},{"lineNumber":14,"author":{"gitId":"-"},"content":" it(\u0027should throw error on unavailable session\u0027, () \u003d\u003e {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" of(undefined)"},{"lineNumber":16,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":17,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":18,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":19,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(SESSION_DATA_UNAVAILABLE))"},{"lineNumber":20,"author":{"gitId":"-"},"content":" });"},{"lineNumber":21,"author":{"gitId":"-"},"content":" });"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should throw error on session data with invalid session\u0027, () \u003d\u003e {"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: null })"},{"lineNumber":25,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":26,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":27,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(SESSION_DATA_MISSING_FIELDS))"},{"lineNumber":29,"author":{"gitId":"-"},"content":" });"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: [] })"},{"lineNumber":31,"author":{"gitId":"NereusWB922"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":32,"author":{"gitId":"NereusWB922"},"content":" .subscribe({"},{"lineNumber":33,"author":{"gitId":"NereusWB922"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":34,"author":{"gitId":"NereusWB922"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(SESSION_DATA_MISSING_FIELDS))"},{"lineNumber":35,"author":{"gitId":"-"},"content":" });"},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: \u0027repo\u0027 })"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":39,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(SESSION_DATA_MISSING_FIELDS))"},{"lineNumber":41,"author":{"gitId":"-"},"content":" });"},{"lineNumber":42,"author":{"gitId":"-"},"content":" });"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should throw error on session with invalid phases\u0027, () \u003d\u003e {"},{"lineNumber":45,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: [{ phase: \u0027invalidPhase\u0027 as Phase, repos: [WATCHER_REPO] }] })"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":48,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":49,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(NO_VALID_OPEN_PHASES))"},{"lineNumber":50,"author":{"gitId":"-"},"content":" });"},{"lineNumber":51,"author":{"gitId":"-"},"content":" });"},{"lineNumber":52,"author":{"gitId":"-"},"content":""},{"lineNumber":53,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should throw error on session data with invalid repo\u0027, () \u003d\u003e {"},{"lineNumber":54,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: [{ phase: Phase.issuesViewer, repo: undefined }] })"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":57,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":58,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(OPENED_PHASE_REPO_UNDEFINED))"},{"lineNumber":59,"author":{"gitId":"-"},"content":" });"},{"lineNumber":60,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: [{ phase: Phase.issuesViewer, repo: null }] })"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":63,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":64,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(OPENED_PHASE_REPO_UNDEFINED))"},{"lineNumber":65,"author":{"gitId":"-"},"content":" });"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: [{ phase: Phase.issuesViewer, repo: \u0027\u0027 }] })"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":69,"author":{"gitId":"-"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":70,"author":{"gitId":"-"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(OPENED_PHASE_REPO_UNDEFINED))"},{"lineNumber":71,"author":{"gitId":"-"},"content":" });"},{"lineNumber":72,"author":{"gitId":"NereusWB922"},"content":" of({ sessionRepo: [{ phase: Phase.issuesViewer, repo: [] }] })"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .subscribe({"},{"lineNumber":75,"author":{"gitId":"NereusWB922"},"content":" next: () \u003d\u003e fail(),"},{"lineNumber":76,"author":{"gitId":"NereusWB922"},"content":" error: (err) \u003d\u003e expect(err).toEqual(new Error(OPENED_PHASE_REPO_UNDEFINED))"},{"lineNumber":77,"author":{"gitId":"-"},"content":" });"},{"lineNumber":78,"author":{"gitId":"-"},"content":" });"},{"lineNumber":79,"author":{"gitId":"-"},"content":""},{"lineNumber":80,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should pass for valid session data\u0027, () \u003d\u003e {"},{"lineNumber":81,"author":{"gitId":"NereusWB922"},"content":" of(VALID_SESSION_DATA)"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .pipe(assertSessionDataIntegrity())"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" .subscribe((el) \u003d\u003e expect(el).toEqual(VALID_SESSION_DATA));"},{"lineNumber":84,"author":{"gitId":"-"},"content":" });"},{"lineNumber":85,"author":{"gitId":"-"},"content":" });"},{"lineNumber":86,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"NereusWB922":25,"-":61}},{"path":"tests/app/shared/issue-tables/issue-paginator.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { MatPaginator } from \u0027@angular/material/paginator\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { paginateData } from \u0027../../../../src/app/shared/issue-tables/issue-paginator\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":5,"author":{"gitId":"-"},"content":" ISSUE_WITH_ASSIGNEES,"},{"lineNumber":6,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION,"},{"lineNumber":7,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY"},{"lineNumber":9,"author":{"gitId":"-"},"content":"} from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"describe(\u0027issue-paginator\u0027, () \u003d\u003e {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" describe(\u0027paginateData()\u0027, () \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"-"},"content":" let dataSet_7: Issue[];"},{"lineNumber":14,"author":{"gitId":"-"},"content":" let paginator: MatPaginator;"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" const mediumSeverityIssueWithResponse: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION);"},{"lineNumber":16,"author":{"gitId":"NereusWB922"},"content":" const mediumSeverityIssueWithAssigneee: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_ASSIGNEES);"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" const lowSeverityFeatureFlawIssue: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY);"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" const highSeverityDocumentationBugIssue: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY);"},{"lineNumber":19,"author":{"gitId":"-"},"content":""},{"lineNumber":20,"author":{"gitId":"-"},"content":" beforeEach(() \u003d\u003e {"},{"lineNumber":21,"author":{"gitId":"-"},"content":" dataSet_7 \u003d ["},{"lineNumber":22,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithResponse,"},{"lineNumber":23,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithAssigneee,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" lowSeverityFeatureFlawIssue,"},{"lineNumber":25,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithResponse,"},{"lineNumber":26,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithAssigneee,"},{"lineNumber":27,"author":{"gitId":"-"},"content":" lowSeverityFeatureFlawIssue,"},{"lineNumber":28,"author":{"gitId":"-"},"content":" highSeverityDocumentationBugIssue"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":30,"author":{"gitId":"-"},"content":" paginator \u003d { pageSize: 3 } as MatPaginator;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" });"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" it(\u0027should set the length of paginator to the length of data\u0027, () \u003d\u003e {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" paginateData(paginator, dataSet_7);"},{"lineNumber":35,"author":{"gitId":"-"},"content":" expect(paginator.length).toEqual(7);"},{"lineNumber":36,"author":{"gitId":"-"},"content":" });"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":" it(\u0027should return list of issues according to page index\u0027, () \u003d\u003e {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" paginator.pageIndex \u003d 0;"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" // Returns issues index 0 to 2"},{"lineNumber":42,"author":{"gitId":"-"},"content":" const returnedList \u003d paginateData(paginator, dataSet_7);"},{"lineNumber":43,"author":{"gitId":"-"},"content":" expect(returnedList).toEqual([mediumSeverityIssueWithResponse, mediumSeverityIssueWithAssigneee, lowSeverityFeatureFlawIssue]);"},{"lineNumber":44,"author":{"gitId":"-"},"content":" });"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" it(\u0027should return list of issues in the previous page if there are no issues on the current page\u0027, () \u003d\u003e {"},{"lineNumber":47,"author":{"gitId":"-"},"content":" paginator.pageIndex \u003d 3;"},{"lineNumber":48,"author":{"gitId":"-"},"content":""},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Returns issues index 6 on page 2"},{"lineNumber":50,"author":{"gitId":"-"},"content":" const returnedList \u003d paginateData(paginator, dataSet_7);"},{"lineNumber":51,"author":{"gitId":"-"},"content":" expect(returnedList).toEqual([highSeverityDocumentationBugIssue]);"},{"lineNumber":52,"author":{"gitId":"-"},"content":" });"},{"lineNumber":53,"author":{"gitId":"-"},"content":" });"},{"lineNumber":54,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"NereusWB922":4,"-":50}},{"path":"tests/app/shared/issue-tables/issue-sorter.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { MatSort } from \u0027@angular/material/sort\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { getSortedData } from \u0027../../../../src/app/shared/issue-tables/issue-sorter\u0027;"},{"lineNumber":4,"author":{"gitId":"NereusWB922"},"content":"import {"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" ISSUE_UPDATED_EARLIER,"},{"lineNumber":6,"author":{"gitId":"NereusWB922"},"content":" ISSUE_UPDATED_LATER,"},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":" ISSUE_WITH_ASSIGNEES,"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":"} from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":10,"author":{"gitId":"-"},"content":""},{"lineNumber":11,"author":{"gitId":"-"},"content":"describe(\u0027issuer-sorter\u0027, () \u003d\u003e {"},{"lineNumber":12,"author":{"gitId":"-"},"content":" describe(\u0027getSortedData()\u0027, () \u003d\u003e {"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" const dummyIssue: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION);"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" const otherDummyIssue: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_ASSIGNEES);"},{"lineNumber":15,"author":{"gitId":"-"},"content":" const issuesList: Issue[] \u003d [dummyIssue, otherDummyIssue];"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" const issueUpdatedEarlier: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_UPDATED_EARLIER);"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" const issueUpdatedLater: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_UPDATED_LATER);"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" const issuesWithDifferentUpdatedDate: Issue[] \u003d [issueUpdatedEarlier, issueUpdatedLater];"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":" const matSort: MatSort \u003d new MatSort();"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"NereusWB922"},"content":" it(\u0027should return the same data if sort.active is not set\u0027, () \u003d\u003e {"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" const sortedData \u003d getSortedData(matSort, issuesList);"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" expect(sortedData).toEqual(issuesList);"},{"lineNumber":26,"author":{"gitId":"NereusWB922"},"content":" });"},{"lineNumber":27,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":" it(\u0027sorts issues based on their assignees correctly\u0027, () \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" matSort.active \u003d \u0027assignees\u0027;"},{"lineNumber":30,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":31,"author":{"gitId":"-"},"content":" const sortedIssuesByAssigneesAsc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByAssigneesAsc, dummyIssue, otherDummyIssue);"},{"lineNumber":33,"author":{"gitId":"-"},"content":""},{"lineNumber":34,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":35,"author":{"gitId":"-"},"content":" const sortedIssuesByAssigneesDesc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByAssigneesDesc, otherDummyIssue, dummyIssue);"},{"lineNumber":37,"author":{"gitId":"-"},"content":" });"},{"lineNumber":38,"author":{"gitId":"-"},"content":""},{"lineNumber":39,"author":{"gitId":"-"},"content":" it(\u0027sorts issues based on their string fields correctly\u0027, () \u003d\u003e {"},{"lineNumber":40,"author":{"gitId":"-"},"content":" matSort.active \u003d \u0027title\u0027;"},{"lineNumber":41,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":42,"author":{"gitId":"-"},"content":" const sortedIssuesByTitleAsc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByTitleAsc, dummyIssue, otherDummyIssue);"},{"lineNumber":44,"author":{"gitId":"-"},"content":""},{"lineNumber":45,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":46,"author":{"gitId":"-"},"content":" const sortedIssuesByTitleDesc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuesByTitleDesc, otherDummyIssue, dummyIssue);"},{"lineNumber":48,"author":{"gitId":"-"},"content":" });"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"NereusWB922"},"content":" it(\u0027sorts issues based on their id fields correctly\u0027, () \u003d\u003e {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" matSort.active \u003d \u0027id\u0027;"},{"lineNumber":52,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":53,"author":{"gitId":"-"},"content":" const sortedIssuedByIdAsc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuedByIdAsc, otherDummyIssue, dummyIssue);"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":57,"author":{"gitId":"-"},"content":" const sortedIssuedByIdDesc \u003d getSortedData(matSort, issuesList);"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertOrder(sortedIssuedByIdDesc, dummyIssue, otherDummyIssue);"},{"lineNumber":59,"author":{"gitId":"-"},"content":" });"},{"lineNumber":60,"author":{"gitId":"-"},"content":""},{"lineNumber":61,"author":{"gitId":"NereusWB922"},"content":" it(\u0027sorts issues based on their updated date fields correctly\u0027, () \u003d\u003e {"},{"lineNumber":62,"author":{"gitId":"NereusWB922"},"content":" matSort.active \u003d \u0027date\u0027;"},{"lineNumber":63,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027asc\u0027;"},{"lineNumber":64,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":65,"author":{"gitId":"NereusWB922"},"content":" const sortedIssuedByDateAsc \u003d getSortedData(matSort, issuesWithDifferentUpdatedDate);"},{"lineNumber":66,"author":{"gitId":"NereusWB922"},"content":" assertOrder(sortedIssuedByDateAsc, issueUpdatedEarlier, issueUpdatedLater);"},{"lineNumber":67,"author":{"gitId":"-"},"content":""},{"lineNumber":68,"author":{"gitId":"-"},"content":" matSort.direction \u003d \u0027desc\u0027;"},{"lineNumber":69,"author":{"gitId":"NereusWB922"},"content":" const sortedIssuedByDateDesc \u003d getSortedData(matSort, issuesWithDifferentUpdatedDate);"},{"lineNumber":70,"author":{"gitId":"NereusWB922"},"content":" assertOrder(sortedIssuedByDateDesc, issueUpdatedLater, issueUpdatedEarlier);"},{"lineNumber":71,"author":{"gitId":"-"},"content":" });"},{"lineNumber":72,"author":{"gitId":"-"},"content":" });"},{"lineNumber":73,"author":{"gitId":"-"},"content":"});"},{"lineNumber":74,"author":{"gitId":"-"},"content":""},{"lineNumber":75,"author":{"gitId":"-"},"content":"/**"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * This helper method helps to check if the sorted issues are in their"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * correct order based on the variable arguments provided."},{"lineNumber":78,"author":{"gitId":"-"},"content":" */"},{"lineNumber":79,"author":{"gitId":"-"},"content":"function assertOrder(sortedIssues: Issue[], ...expectedSortedIssues: Issue[]) {"},{"lineNumber":80,"author":{"gitId":"-"},"content":" for (let i \u003d 0; i \u003c sortedIssues.length; i++) {"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expect(sortedIssues[i].id).toBe(expectedSortedIssues[i].id);"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}"}],"authorContributionMap":{"NereusWB922":25,"-":58}},{"path":"tests/app/shared/issue-tables/search-filter.spec.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Issue } from \u0027../../../../src/app/core/models/issue.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { IssueService } from \u0027../../../../src/app/core/services/issue.service\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { TABLE_COLUMNS } from \u0027../../../../src/app/shared/issue-tables/issue-tables-columns\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { applySearchFilter } from \u0027../../../../src/app/shared/issue-tables/search-filter\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { USER_ANUBHAV } from \u0027../../../constants/data.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":7,"author":{"gitId":"-"},"content":" ISSUE_WITH_ASSIGNEES,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY"},{"lineNumber":11,"author":{"gitId":"-"},"content":"} from \u0027../../../constants/githubissue.constants\u0027;"},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"import { GITHUB_LABEL_FEATURE_FLAW } from \u0027../../../constants/githublabel.constants\u0027;"},{"lineNumber":13,"author":{"gitId":"-"},"content":""},{"lineNumber":14,"author":{"gitId":"-"},"content":"describe(\u0027search-filter\u0027, () \u003d\u003e {"},{"lineNumber":15,"author":{"gitId":"-"},"content":" describe(\u0027applySearchFilter()\u0027, () \u003d\u003e {"},{"lineNumber":16,"author":{"gitId":"-"},"content":" let searchKey: string;"},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":" const mediumSeverityIssueWithResponse: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION);"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" const mediumSeverityIssueWithAssigneee: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_ASSIGNEES);"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" const lowSeverityFeatureFlawIssue: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY);"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" const highSeverityDocumentationBugIssue: Issue \u003d Issue.createPhaseBugReportingIssue(ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY);"},{"lineNumber":21,"author":{"gitId":"-"},"content":""},{"lineNumber":22,"author":{"gitId":"-"},"content":" const issuesList: Issue[] \u003d ["},{"lineNumber":23,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithResponse,"},{"lineNumber":24,"author":{"gitId":"-"},"content":" mediumSeverityIssueWithAssigneee,"},{"lineNumber":25,"author":{"gitId":"-"},"content":" lowSeverityFeatureFlawIssue,"},{"lineNumber":26,"author":{"gitId":"-"},"content":" highSeverityDocumentationBugIssue"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ];"},{"lineNumber":28,"author":{"gitId":"NereusWB922"},"content":" const displayedColumns: string[] \u003d [TABLE_COLUMNS.ID, TABLE_COLUMNS.TITLE, TABLE_COLUMNS.ASSIGNEE, TABLE_COLUMNS.LABEL];"},{"lineNumber":29,"author":{"gitId":"-"},"content":" const issueService: IssueService \u003d new IssueService(null, null, null);"},{"lineNumber":30,"author":{"gitId":"-"},"content":""},{"lineNumber":31,"author":{"gitId":"-"},"content":" it(\u0027can filter for issues which are assigned to a specific user\u0027, () \u003d\u003e {"},{"lineNumber":32,"author":{"gitId":"-"},"content":" searchKey \u003d USER_ANUBHAV.loginId;"},{"lineNumber":33,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithAssigneee]);"},{"lineNumber":34,"author":{"gitId":"-"},"content":" });"},{"lineNumber":35,"author":{"gitId":"-"},"content":""},{"lineNumber":36,"author":{"gitId":"NereusWB922"},"content":" it(\u0027can filter for issues using label\u0027, () \u003d\u003e {"},{"lineNumber":37,"author":{"gitId":"NereusWB922"},"content":" searchKey \u003d GITHUB_LABEL_FEATURE_FLAW.name;"},{"lineNumber":38,"author":{"gitId":"NereusWB922"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([lowSeverityFeatureFlawIssue]);"},{"lineNumber":39,"author":{"gitId":"-"},"content":" });"},{"lineNumber":40,"author":{"gitId":"-"},"content":""},{"lineNumber":41,"author":{"gitId":"-"},"content":" it(\u0027can filter for issues that contain the search key in any other column\u0027, () \u003d\u003e {"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // Search by id of issue"},{"lineNumber":43,"author":{"gitId":"-"},"content":" searchKey \u003d mediumSeverityIssueWithResponse.id.toString();"},{"lineNumber":44,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithResponse]);"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Search by title of issue"},{"lineNumber":47,"author":{"gitId":"-"},"content":" searchKey \u003d mediumSeverityIssueWithAssigneee.title;"},{"lineNumber":48,"author":{"gitId":"-"},"content":" expect(applySearchFilter(searchKey, displayedColumns, issueService, issuesList)).toEqual([mediumSeverityIssueWithAssigneee]);"},{"lineNumber":49,"author":{"gitId":"-"},"content":" });"},{"lineNumber":50,"author":{"gitId":"-"},"content":" });"},{"lineNumber":51,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"NereusWB922":9,"-":42}},{"path":"tests/constants/githubissue.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { IssueState, IssueStateReason } from \u0027../../graphql/graphql-types\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":"import { GithubIssue } from \u0027../../src/app/core/models/github/github-issue.model\u0027;"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027../../src/app/core/models/github/github-label.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import { USER_ANUBHAV, USER_SHUMING } from \u0027./data.constants\u0027;"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import { EMPTY_TEAM_RESPONSE, PENDING_TUTOR_MODERATION } from \u0027./githubcomment.constants\u0027;"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import {"},{"lineNumber":7,"author":{"gitId":"-"},"content":" GITHUB_LABEL_DOCUMENTATION_BUG,"},{"lineNumber":8,"author":{"gitId":"-"},"content":" GITHUB_LABEL_FEATURE_FLAW,"},{"lineNumber":9,"author":{"gitId":"-"},"content":" GITHUB_LABEL_FUNCTIONALITY_BUG,"},{"lineNumber":10,"author":{"gitId":"-"},"content":" GITHUB_LABEL_HIGH_SEVERITY,"},{"lineNumber":11,"author":{"gitId":"-"},"content":" GITHUB_LABEL_LOW_SEVERITY,"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GITHUB_LABEL_MEDIUM_SEVERITY,"},{"lineNumber":13,"author":{"gitId":"-"},"content":" GITHUB_LABEL_TEAM_LABEL,"},{"lineNumber":14,"author":{"gitId":"-"},"content":" GITHUB_LABEL_TUTORIAL_LABEL"},{"lineNumber":15,"author":{"gitId":"-"},"content":"} from \u0027./githublabel.constants\u0027;"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"-"},"content":"const randomId: () \u003d\u003e string \u003d () \u003d\u003e {"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return Math.floor(Math.random() * 1000000000).toString();"},{"lineNumber":19,"author":{"gitId":"-"},"content":"};"},{"lineNumber":20,"author":{"gitId":"-"},"content":""},{"lineNumber":21,"author":{"gitId":"-"},"content":"const randomIssueNumber: () \u003d\u003e number \u003d () \u003d\u003e {"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return Math.round(Math.random() * 1000);"},{"lineNumber":23,"author":{"gitId":"-"},"content":"};"},{"lineNumber":24,"author":{"gitId":"-"},"content":""},{"lineNumber":25,"author":{"gitId":"-"},"content":"const randomISODate: (startDate?: Date, endDate?: Date) \u003d\u003e string \u003d ("},{"lineNumber":26,"author":{"gitId":"-"},"content":" startDate: Date \u003d new Date(2020, 1, 1),"},{"lineNumber":27,"author":{"gitId":"-"},"content":" endDate: Date \u003d new Date()"},{"lineNumber":28,"author":{"gitId":"-"},"content":") \u003d\u003e {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return new Date(startDate.getTime() + Math.random() * (startDate.getTime() - endDate.getTime())).toISOString();"},{"lineNumber":30,"author":{"gitId":"-"},"content":"};"},{"lineNumber":31,"author":{"gitId":"-"},"content":""},{"lineNumber":32,"author":{"gitId":"-"},"content":"const USER_ANUBHAV_DETAILS \u003d {"},{"lineNumber":33,"author":{"gitId":"-"},"content":" login: USER_ANUBHAV.loginId,"},{"lineNumber":34,"author":{"gitId":"-"},"content":" avatar_url: \u0027https://avatars1.githubusercontent.com/u/35621759?v\u003d4\u0027,"},{"lineNumber":35,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/anubh-v\u0027"},{"lineNumber":36,"author":{"gitId":"-"},"content":"};"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":"const USER_ANUBHAV_ASSIGNEE_DETAILS \u003d {"},{"lineNumber":39,"author":{"gitId":"-"},"content":" login: USER_ANUBHAV.loginId,"},{"lineNumber":40,"author":{"gitId":"-"},"content":" id: 35621759,"},{"lineNumber":41,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/anubh-v\u0027"},{"lineNumber":42,"author":{"gitId":"-"},"content":"};"},{"lineNumber":43,"author":{"gitId":"-"},"content":""},{"lineNumber":44,"author":{"gitId":"-"},"content":"const USER_SHUMING_DETAILS \u003d {"},{"lineNumber":45,"author":{"gitId":"-"},"content":" login: USER_SHUMING.loginId,"},{"lineNumber":46,"author":{"gitId":"-"},"content":" avatar_url: \u0027https://avatars0.githubusercontent.com/u/43642522?v\u003d4\u0027,"},{"lineNumber":47,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/geshuming\u0027"},{"lineNumber":48,"author":{"gitId":"-"},"content":"};"},{"lineNumber":49,"author":{"gitId":"-"},"content":""},{"lineNumber":50,"author":{"gitId":"-"},"content":"const USER_SHUMING_ASSIGNEE_DETAILS \u003d {"},{"lineNumber":51,"author":{"gitId":"-"},"content":" login: \u0027geshuming\u0027,"},{"lineNumber":52,"author":{"gitId":"-"},"content":" id: 43642522,"},{"lineNumber":53,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/users/geshuming\u0027"},{"lineNumber":54,"author":{"gitId":"-"},"content":"};"},{"lineNumber":55,"author":{"gitId":"-"},"content":""},{"lineNumber":56,"author":{"gitId":"-"},"content":"const ISSUE_BODY \u003d"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u0027# Issue Description\\n{original issue description}\\n\u0027 +"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \"# Team\u0027s Response\\n{team\u0027s response}\\n # Disputes\\n\\n\" +"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \"## :question: Issue Type\\n\\n### Team says:\\r\\n{the team\u0027s action that is being disputed}\\r\\n\\r\\n\" +"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \"### Tester says:\\r\\n{tester\u0027s objection}\\n\\n-------------------\\n## :question: Issue Severity\\n\\n\" +"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \"### Team says:\\r\\n{the team\u0027s action that is being disputed}\\r\\n\\r\\n\" +"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \"### Tester says:\\r\\n{tester\u0027s objection}\\n\\n-------------------\\n## :question: Not Related Question\\n\\n\" +"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \"### Team says:\\r\\n{the team\u0027s action that is being disputed}\\r\\n\\r\\n\" +"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \"### Tester says:\\r\\n{tester\u0027s objection}\\n\\n-------------------\\n\\n\";"},{"lineNumber":65,"author":{"gitId":"-"},"content":""},{"lineNumber":66,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_EMPTY_DESCRIPTION \u003d new GithubIssue({"},{"lineNumber":67,"author":{"gitId":"-"},"content":" id: \u0027574085971\u0027,"},{"lineNumber":68,"author":{"gitId":"-"},"content":" number: 92,"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":70,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":71,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":72,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-02T16:19:02Z\u0027,"},{"lineNumber":73,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":74,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":75,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":76,"author":{"gitId":"-"},"content":" title: \u0027App starts to lag when given large amount of input\u0027,"},{"lineNumber":77,"author":{"gitId":"-"},"content":" updated_at: \u00272020-03-13T13:37:32Z\u0027,"},{"lineNumber":78,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/92\u0027,"},{"lineNumber":79,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":80,"author":{"gitId":"-"},"content":"});"},{"lineNumber":81,"author":{"gitId":"-"},"content":""},{"lineNumber":82,"author":{"gitId":"NereusWB922"},"content":"export const ISSUE_UPDATED_EARLIER \u003d new GithubIssue({"},{"lineNumber":83,"author":{"gitId":"NereusWB922"},"content":" id: \u0027000000001\u0027,"},{"lineNumber":84,"author":{"gitId":"NereusWB922"},"content":" number: 1,"},{"lineNumber":85,"author":{"gitId":"NereusWB922"},"content":" assignees: [],"},{"lineNumber":86,"author":{"gitId":"NereusWB922"},"content":" comments: [],"},{"lineNumber":87,"author":{"gitId":"NereusWB922"},"content":" body: \u0027\u0027,"},{"lineNumber":88,"author":{"gitId":"NereusWB922"},"content":" created_at: \u00272020-09-02T16:19:02Z\u0027,"},{"lineNumber":89,"author":{"gitId":"NereusWB922"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":90,"author":{"gitId":"NereusWB922"},"content":" state: IssueState.Open,"},{"lineNumber":91,"author":{"gitId":"NereusWB922"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":92,"author":{"gitId":"NereusWB922"},"content":" title: \u0027App starts to lag when given large amount of input\u0027,"},{"lineNumber":93,"author":{"gitId":"NereusWB922"},"content":" updated_at: \u00272020-09-03T13:37:32Z\u0027,"},{"lineNumber":94,"author":{"gitId":"NereusWB922"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/93\u0027,"},{"lineNumber":95,"author":{"gitId":"NereusWB922"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":96,"author":{"gitId":"NereusWB922"},"content":"});"},{"lineNumber":97,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":98,"author":{"gitId":"NereusWB922"},"content":"export const ISSUE_UPDATED_LATER \u003d new GithubIssue({"},{"lineNumber":99,"author":{"gitId":"NereusWB922"},"content":" id: \u0027000000002\u0027,"},{"lineNumber":100,"author":{"gitId":"NereusWB922"},"content":" number: 2,"},{"lineNumber":101,"author":{"gitId":"NereusWB922"},"content":" assignees: [],"},{"lineNumber":102,"author":{"gitId":"NereusWB922"},"content":" comments: [],"},{"lineNumber":103,"author":{"gitId":"NereusWB922"},"content":" body: \u0027\u0027,"},{"lineNumber":104,"author":{"gitId":"NereusWB922"},"content":" created_at: \u00272020-10-02T16:19:02Z\u0027,"},{"lineNumber":105,"author":{"gitId":"NereusWB922"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":106,"author":{"gitId":"NereusWB922"},"content":" state: IssueState.Open,"},{"lineNumber":107,"author":{"gitId":"NereusWB922"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":108,"author":{"gitId":"NereusWB922"},"content":" title: \u0027App starts to lag when given large amount of input\u0027,"},{"lineNumber":109,"author":{"gitId":"NereusWB922"},"content":" updated_at: \u00272020-10-22T13:37:32Z\u0027,"},{"lineNumber":110,"author":{"gitId":"NereusWB922"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/94\u0027,"},{"lineNumber":111,"author":{"gitId":"NereusWB922"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":112,"author":{"gitId":"NereusWB922"},"content":"});"},{"lineNumber":113,"author":{"gitId":"NereusWB922"},"content":""},{"lineNumber":114,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_EMPTY_DESCRIPTION_LOW_SEVERITY \u003d new GithubIssue({"},{"lineNumber":115,"author":{"gitId":"-"},"content":" id: \u0027384830567\u0027,"},{"lineNumber":116,"author":{"gitId":"-"},"content":" number: 130,"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":118,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":119,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":120,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-02T16:19:02Z\u0027,"},{"lineNumber":121,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FEATURE_FLAW, GITHUB_LABEL_LOW_SEVERITY],"},{"lineNumber":122,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":123,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":124,"author":{"gitId":"-"},"content":" title: \u0027App is sometimes slow\u0027,"},{"lineNumber":125,"author":{"gitId":"-"},"content":" updated_at: \u00272020-03-13T13:37:32Z\u0027,"},{"lineNumber":126,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/130\u0027,"},{"lineNumber":127,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":128,"author":{"gitId":"-"},"content":"});"},{"lineNumber":129,"author":{"gitId":"-"},"content":""},{"lineNumber":130,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY \u003d new GithubIssue({"},{"lineNumber":131,"author":{"gitId":"-"},"content":" id: \u0027573957398\u0027,"},{"lineNumber":132,"author":{"gitId":"-"},"content":" number: 32,"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":134,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":135,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":136,"author":{"gitId":"-"},"content":" created_at: \u00272010-03-12T19:12:02Z\u0027,"},{"lineNumber":137,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_DOCUMENTATION_BUG, GITHUB_LABEL_HIGH_SEVERITY],"},{"lineNumber":138,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":139,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":140,"author":{"gitId":"-"},"content":" title: \u0027Too many typos\u0027,"},{"lineNumber":141,"author":{"gitId":"-"},"content":" updated_at: \u00272012-03-12T19:12:02Z\u0027,"},{"lineNumber":142,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/130\u0027,"},{"lineNumber":143,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":144,"author":{"gitId":"-"},"content":"});"},{"lineNumber":145,"author":{"gitId":"-"},"content":""},{"lineNumber":146,"author":{"gitId":"-"},"content":"export const DUPLICATED_ISSUE_WITH_EMPTY_DESCRIPTION_HIGH_SEVERITY \u003d new GithubIssue({"},{"lineNumber":147,"author":{"gitId":"-"},"content":" id: \u0027573957399\u0027,"},{"lineNumber":148,"author":{"gitId":"-"},"content":" number: 33,"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":150,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":151,"author":{"gitId":"-"},"content":" body: \u0027\u0027,"},{"lineNumber":152,"author":{"gitId":"-"},"content":" created_at: \u00272010-04-12T19:12:02Z\u0027,"},{"lineNumber":153,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_DOCUMENTATION_BUG, GITHUB_LABEL_HIGH_SEVERITY],"},{"lineNumber":154,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":155,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":156,"author":{"gitId":"-"},"content":" title: \u0027Too many typos 2\u0027,"},{"lineNumber":157,"author":{"gitId":"-"},"content":" updated_at: \u00272012-04-12T19:12:02Z\u0027,"},{"lineNumber":158,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/130\u0027,"},{"lineNumber":159,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":160,"author":{"gitId":"-"},"content":"});"},{"lineNumber":161,"author":{"gitId":"-"},"content":""},{"lineNumber":162,"author":{"gitId":"-"},"content":"export const ISSUE_WITH_ASSIGNEES \u003d new GithubIssue({"},{"lineNumber":163,"author":{"gitId":"-"},"content":" id: \u0027551732011\u0027,"},{"lineNumber":164,"author":{"gitId":"-"},"content":" number: 91,"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assignees: [USER_ANUBHAV_ASSIGNEE_DETAILS],"},{"lineNumber":166,"author":{"gitId":"-"},"content":" body: \u0027Screen freezes every few minutes\u0027,"},{"lineNumber":167,"author":{"gitId":"-"},"content":" created_at: \u00272020-01-18T07:01:45Z\u0027,"},{"lineNumber":168,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":169,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":170,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":171,"author":{"gitId":"-"},"content":" title: \u0027Screen freezes\u0027,"},{"lineNumber":172,"author":{"gitId":"-"},"content":" updated_at: \u00272020-03-02T12:50:02Z\u0027,"},{"lineNumber":173,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/91\u0027,"},{"lineNumber":174,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS,"},{"lineNumber":175,"author":{"gitId":"-"},"content":" comments: [EMPTY_TEAM_RESPONSE]"},{"lineNumber":176,"author":{"gitId":"-"},"content":"});"},{"lineNumber":177,"author":{"gitId":"-"},"content":""},{"lineNumber":178,"author":{"gitId":"-"},"content":"export const generateIssueWithRandomData: () \u003d\u003e GithubIssue \u003d () \u003d\u003e {"},{"lineNumber":179,"author":{"gitId":"-"},"content":" const created_and_updated_date: string \u003d randomISODate();"},{"lineNumber":180,"author":{"gitId":"-"},"content":" const issueNumber: number \u003d randomIssueNumber();"},{"lineNumber":181,"author":{"gitId":"-"},"content":" const severityLabels: GithubLabel[] \u003d [GITHUB_LABEL_LOW_SEVERITY, GITHUB_LABEL_MEDIUM_SEVERITY, GITHUB_LABEL_HIGH_SEVERITY];"},{"lineNumber":182,"author":{"gitId":"-"},"content":" const typeLabels: GithubLabel[] \u003d [GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_FEATURE_FLAW, GITHUB_LABEL_DOCUMENTATION_BUG];"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return new GithubIssue({"},{"lineNumber":184,"author":{"gitId":"-"},"content":" id: randomId(),"},{"lineNumber":185,"author":{"gitId":"-"},"content":" number: issueNumber,"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assignees: [],"},{"lineNumber":187,"author":{"gitId":"-"},"content":" comments: [],"},{"lineNumber":188,"author":{"gitId":"-"},"content":" body: `Issue No.: ${issueNumber}\\nSample Content.`,"},{"lineNumber":189,"author":{"gitId":"-"},"content":" created_at: created_and_updated_date,"},{"lineNumber":190,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, typeLabels[issueNumber % 3], severityLabels[issueNumber % 3]],"},{"lineNumber":191,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":192,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":193,"author":{"gitId":"-"},"content":" title: `Random Issue: ${issueNumber}`,"},{"lineNumber":194,"author":{"gitId":"-"},"content":" updated_at: created_and_updated_date,"},{"lineNumber":195,"author":{"gitId":"-"},"content":" url: `https://api.github.com/repos/CATcher-org/pe-results/issues/${issueNumber}`,"},{"lineNumber":196,"author":{"gitId":"-"},"content":" user: USER_ANUBHAV_DETAILS"},{"lineNumber":197,"author":{"gitId":"-"},"content":" });"},{"lineNumber":198,"author":{"gitId":"-"},"content":"};"},{"lineNumber":199,"author":{"gitId":"-"},"content":""},{"lineNumber":200,"author":{"gitId":"-"},"content":"export const ISSUE_PENDING_MODERATION \u003d new GithubIssue({"},{"lineNumber":201,"author":{"gitId":"-"},"content":" id: \u0027574674360\u0027,"},{"lineNumber":202,"author":{"gitId":"-"},"content":" number: 26,"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assignees: [USER_SHUMING_ASSIGNEE_DETAILS],"},{"lineNumber":204,"author":{"gitId":"-"},"content":" body: ISSUE_BODY,"},{"lineNumber":205,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-03T13:38:32Z\u0027,"},{"lineNumber":206,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FUNCTIONALITY_BUG, GITHUB_LABEL_MEDIUM_SEVERITY],"},{"lineNumber":207,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":208,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":209,"author":{"gitId":"-"},"content":" title: \u0027Basic Issue, Three Disputes, Unsure\u0027,"},{"lineNumber":210,"author":{"gitId":"-"},"content":" updated_at: \u00272020-08-15T06:39:40Z\u0027,"},{"lineNumber":211,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/26\u0027,"},{"lineNumber":212,"author":{"gitId":"-"},"content":" user: USER_SHUMING_DETAILS,"},{"lineNumber":213,"author":{"gitId":"-"},"content":" comments: [PENDING_TUTOR_MODERATION]"},{"lineNumber":214,"author":{"gitId":"-"},"content":"});"},{"lineNumber":215,"author":{"gitId":"-"},"content":""},{"lineNumber":216,"author":{"gitId":"-"},"content":"export const ISSUE_PENDING_MODERATION_HIGH_SEVERITY_FEATURE_FLAW \u003d new GithubIssue({"},{"lineNumber":217,"author":{"gitId":"-"},"content":" id: \u0027239538360\u0027,"},{"lineNumber":218,"author":{"gitId":"-"},"content":" number: 93,"},{"lineNumber":219,"author":{"gitId":"-"},"content":" assignees: [USER_SHUMING_ASSIGNEE_DETAILS],"},{"lineNumber":220,"author":{"gitId":"-"},"content":" body: ISSUE_BODY,"},{"lineNumber":221,"author":{"gitId":"-"},"content":" created_at: \u00272020-10-14T10:28:32Z\u0027,"},{"lineNumber":222,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_FEATURE_FLAW, GITHUB_LABEL_HIGH_SEVERITY],"},{"lineNumber":223,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":224,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":225,"author":{"gitId":"-"},"content":" title: \u0027Redundant buggy feature\u0027,"},{"lineNumber":226,"author":{"gitId":"-"},"content":" updated_at: \u00272020-11-25T13:19:40Z\u0027,"},{"lineNumber":227,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/26\u0027,"},{"lineNumber":228,"author":{"gitId":"-"},"content":" user: USER_SHUMING_DETAILS,"},{"lineNumber":229,"author":{"gitId":"-"},"content":" comments: [PENDING_TUTOR_MODERATION]"},{"lineNumber":230,"author":{"gitId":"-"},"content":"});"},{"lineNumber":231,"author":{"gitId":"-"},"content":""},{"lineNumber":232,"author":{"gitId":"-"},"content":"export const ISSUE_PENDING_MODERATION_LOW_SEVERITY_DOCUMENTATION_BUG \u003d new GithubIssue({"},{"lineNumber":233,"author":{"gitId":"-"},"content":" id: \u0027384756360\u0027,"},{"lineNumber":234,"author":{"gitId":"-"},"content":" number: 6,"},{"lineNumber":235,"author":{"gitId":"-"},"content":" assignees: [USER_SHUMING_ASSIGNEE_DETAILS],"},{"lineNumber":236,"author":{"gitId":"-"},"content":" body: ISSUE_BODY,"},{"lineNumber":237,"author":{"gitId":"-"},"content":" created_at: \u00272020-03-26T09:08:12Z\u0027,"},{"lineNumber":238,"author":{"gitId":"-"},"content":" labels: [GITHUB_LABEL_TEAM_LABEL, GITHUB_LABEL_TUTORIAL_LABEL, GITHUB_LABEL_DOCUMENTATION_BUG, GITHUB_LABEL_LOW_SEVERITY],"},{"lineNumber":239,"author":{"gitId":"-"},"content":" state: IssueState.Open,"},{"lineNumber":240,"author":{"gitId":"-"},"content":" stateReason: IssueStateReason.Reopened,"},{"lineNumber":241,"author":{"gitId":"-"},"content":" title: \u0027Documentation bug, too many typos\u0027,"},{"lineNumber":242,"author":{"gitId":"-"},"content":" updated_at: \u00272020-11-10T16:59:40Z\u0027,"},{"lineNumber":243,"author":{"gitId":"-"},"content":" url: \u0027https://api.github.com/repos/CATcher-org/pe-results/issues/26\u0027,"},{"lineNumber":244,"author":{"gitId":"-"},"content":" user: USER_SHUMING_DETAILS,"},{"lineNumber":245,"author":{"gitId":"-"},"content":" comments: [PENDING_TUTOR_MODERATION]"},{"lineNumber":246,"author":{"gitId":"-"},"content":"});"}],"authorContributionMap":{"NereusWB922":32,"-":214}},{"path":"tests/constants/githublabel.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { GithubLabel } from \u0027../../src/app/core/models/github/github-label.model\u0027;"},{"lineNumber":2,"author":{"gitId":"-"},"content":""},{"lineNumber":3,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_FUNCTIONALITY_BUG \u003d {"},{"lineNumber":4,"author":{"gitId":"-"},"content":" color: \u00279900cc\u0027,"},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":" name: \u0027type.FunctionalityBug\u0027"},{"lineNumber":6,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":7,"author":{"gitId":"-"},"content":""},{"lineNumber":8,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_FEATURE_FLAW \u003d {"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" color: \u0027d966ff\u0027,"},{"lineNumber":10,"author":{"gitId":"NereusWB922"},"content":" name: \u0027type.FeatureFlaw\u0027"},{"lineNumber":11,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":12,"author":{"gitId":"-"},"content":""},{"lineNumber":13,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_DOCUMENTATION_BUG \u003d {"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" color: \u0027d966ff\u0027,"},{"lineNumber":15,"author":{"gitId":"NereusWB922"},"content":" name: \u0027type.DocumentationBug\u0027"},{"lineNumber":16,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":17,"author":{"gitId":"-"},"content":""},{"lineNumber":18,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_LOW_SEVERITY \u003d {"},{"lineNumber":19,"author":{"gitId":"NereusWB922"},"content":" color: \u0027ffcccc\u0027,"},{"lineNumber":20,"author":{"gitId":"NereusWB922"},"content":" name: \u0027severity.Low\u0027"},{"lineNumber":21,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":22,"author":{"gitId":"-"},"content":""},{"lineNumber":23,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_HIGH_SEVERITY \u003d {"},{"lineNumber":24,"author":{"gitId":"NereusWB922"},"content":" color: \u0027ff6666\u0027,"},{"lineNumber":25,"author":{"gitId":"NereusWB922"},"content":" name: \u0027severity.High\u0027"},{"lineNumber":26,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":27,"author":{"gitId":"-"},"content":""},{"lineNumber":28,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_MEDIUM_SEVERITY \u003d {"},{"lineNumber":29,"author":{"gitId":"-"},"content":" color: \u0027ff9999\u0027,"},{"lineNumber":30,"author":{"gitId":"NereusWB922"},"content":" name: \u0027severity.Medium\u0027"},{"lineNumber":31,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_TUTORIAL_LABEL \u003d {"},{"lineNumber":34,"author":{"gitId":"-"},"content":" color: \u0027c2e0c6\u0027,"},{"lineNumber":35,"author":{"gitId":"NereusWB922"},"content":" name: \u0027tutorial.CS2103T-W12\u0027"},{"lineNumber":36,"author":{"gitId":"-"},"content":"} as GithubLabel;"},{"lineNumber":37,"author":{"gitId":"-"},"content":""},{"lineNumber":38,"author":{"gitId":"-"},"content":"export const GITHUB_LABEL_TEAM_LABEL \u003d {"},{"lineNumber":39,"author":{"gitId":"NereusWB922"},"content":" color: \u0027d4c5f9\u0027,"},{"lineNumber":40,"author":{"gitId":"NereusWB922"},"content":" name: \u0027team.3\u0027"},{"lineNumber":41,"author":{"gitId":"-"},"content":"} as GithubLabel;"}],"authorContributionMap":{"NereusWB922":13,"-":28}},{"path":"tests/constants/session.constants.ts","fileType":"ts","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import { Phase } from \u0027../../src/app/core/models/phase.model\u0027;"},{"lineNumber":2,"author":{"gitId":"NereusWB922"},"content":"import { Repo } from \u0027../../src/app/core/models/repo.model\u0027;"},{"lineNumber":3,"author":{"gitId":"NereusWB922"},"content":"import { SessionData, SessionRepo } from \u0027../../src/app/core/models/session.model\u0027;"},{"lineNumber":4,"author":{"gitId":"-"},"content":""},{"lineNumber":5,"author":{"gitId":"NereusWB922"},"content":"export const WATCHER_REPO: Repo \u003d Repo.of(\u0027CATcher-org/WATcher\u0027);"},{"lineNumber":6,"author":{"gitId":"-"},"content":""},{"lineNumber":7,"author":{"gitId":"NereusWB922"},"content":"const ISSUES_VIEWER_SESSION_REPO: SessionRepo \u003d {"},{"lineNumber":8,"author":{"gitId":"NereusWB922"},"content":" phase: Phase.issuesViewer,"},{"lineNumber":9,"author":{"gitId":"NereusWB922"},"content":" repos: [WATCHER_REPO]"},{"lineNumber":10,"author":{"gitId":"-"},"content":"};"},{"lineNumber":11,"author":{"gitId":"-"},"content":""},{"lineNumber":12,"author":{"gitId":"NereusWB922"},"content":"const ACTIVITY_DASHBOARD_SESSION_REPO: SessionRepo \u003d {"},{"lineNumber":13,"author":{"gitId":"NereusWB922"},"content":" phase: Phase.activityDashboard,"},{"lineNumber":14,"author":{"gitId":"NereusWB922"},"content":" repos: [WATCHER_REPO]"},{"lineNumber":15,"author":{"gitId":"-"},"content":"};"},{"lineNumber":16,"author":{"gitId":"-"},"content":""},{"lineNumber":17,"author":{"gitId":"NereusWB922"},"content":"export const VALID_SESSION_DATA: SessionData \u003d {"},{"lineNumber":18,"author":{"gitId":"NereusWB922"},"content":" sessionRepo: [ISSUES_VIEWER_SESSION_REPO, ACTIVITY_DASHBOARD_SESSION_REPO]"},{"lineNumber":19,"author":{"gitId":"-"},"content":"};"}],"authorContributionMap":{"NereusWB922":11,"-":8}}] diff --git a/CATcher-org_WATcher_main/commits.json b/CATcher-org_WATcher_main/commits.json new file mode 100644 index 0000000..770ea73 --- /dev/null +++ b/CATcher-org_WATcher_main/commits.json @@ -0,0 +1 @@ +{"authorDailyContributionsMap":{"xenosf":[],"sopa301":[],"mingyuanc":[],"jingting1412":[],"KevinEyo1":[],"LamJiuFong":[],"yiwen101":[],"jonasongg":[],"domoberzin":[],"asdfghjkxd":[],"yuanxi1":[],"supermii2":[],"marquestye":[],"nknguyenhc":[{"date":"2024-02-06","commitResults":[{"hash":"043311b90c12118a4d9d8468a64e1fc7021ad64d","isMergeCommit":false,"messageTitle":"Fix label filter not working (#230)","messageBody":"Fix label filter not working\r\n\r\nFilters takes the value of `label.formattedName` instead of `label.name`.","fileTypesAndContributionMap":{"html":{"insertions":13,"deletions":5}}}]}],"Arif-Khalid":[{"date":"2024-01-25","commitResults":[{"hash":"79602d69bd13e2ab8c06ab6d9a6eca8b4a61e8b0","isMergeCommit":false,"messageTitle":"Hide 0 issue columns (#223)","messageBody":"Hide 0 issue columns.\r\n\r\n0 Issue columns are shown.\r\n\r\nHiding issues with 0 columns reduces the clutter on screen, \r\ncreating a better user experience. \r\nIllogical columns such as issues that are unassigned when sorting by\r\npull requests are also removed inherently.\r\n\r\nLet\u0027s add logic to hide the columns when they have no issues \r\nassociated to them.","fileTypesAndContributionMap":{"html":{"insertions":10,"deletions":1},"ts":{"insertions":15,"deletions":2}}}]},{"date":"2024-02-06","commitResults":[{"hash":"cd0d7e9f2a5169307c0c92a89a33e24610381839","isMergeCommit":false,"messageTitle":"Remove unused services (#238)","messageBody":"Couple of unused services copied from CATcher.\r\n\r\nUnused code should be removed to simplify code base \r\nand improve developer experience.\r\n\r\nLet\u0027s remove these unused services.","fileTypesAndContributionMap":{"ts":{"insertions":0,"deletions":359}}}]}],"NereusWB922":[{"date":"2024-02-06","commitResults":[{"hash":"552868032ec6a8340d1f8c8d662ad22189d134f1","isMergeCommit":false,"messageTitle":"Improve activity dashboard design (#233)","messageBody":"Improve activity dashboard design\r\n\r\nThe ID column in the event table is not useful for the user.\r\n\r\nThe design of the dashboard is too simple. The event table\u0027s height is\r\nnot fixed, and the expanded event details might cause the table to be\r\ntoo long, which is very inconvenient.\r\n\r\nTo address this, let\u0027s hide the ID column, add some information about\r\nthe actor, fix the event table height and make it scrollable, and\r\nimplement a dialog to display event details.","fileTypesAndContributionMap":{"css":{"insertions":129,"deletions":10},"html":{"insertions":72,"deletions":67},"ts":{"insertions":48,"deletions":18}}}]},{"date":"2024-02-08","commitResults":[{"hash":"a6efcb9a2fa9bcd321c37a824e4d2aafa8d07a81","isMergeCommit":false,"messageTitle":"Refactor test cases","messageBody":"The test cases for the Login Component and Session Model are outdated. \r\n\r\nAdditionally, the Conflict Model has been removed. \r\n\r\nLet\u0027s refactor the test cases for the Login Component and Session Model \r\nand remove the test cases for the Conflict Model.\r\n","fileTypesAndContributionMap":{"ts":{"insertions":86,"deletions":106}}},{"hash":"339b319aaa87913d2109774f1fc6826d37992172","isMergeCommit":false,"messageTitle":"Refactor test cases for issue paginator","messageBody":"The test cases for the issue paginator are outdated. \r\n\r\nLet\u0027s refactor the test cases for the issue paginator.","fileTypesAndContributionMap":{"ts":{"insertions":4,"deletions":9}}},{"hash":"6dc82ffeb34973054ecfb3a10ea107f2c653c7cc","isMergeCommit":false,"messageTitle":"Refactor test cases for issue sorter","messageBody":"The test cases for the issue sorter are outdated. \r\n\r\nLet\u0027s refactor the test cases for the issue sorter.","fileTypesAndContributionMap":{"ts":{"insertions":57,"deletions":15}}},{"hash":"aefd63e82bad15390696d3aa88c9cbe93cdecaf4","isMergeCommit":false,"messageTitle":"Refactor github label constants","messageBody":"GithubLabel model\u0027s properties have been changed.\r\n\r\nLet\u0027s refactor the github label constants.","fileTypesAndContributionMap":{"ts":{"insertions":13,"deletions":29}}},{"hash":"bb4cb781ae5ba81e77cd83d789277530d37aaea6","isMergeCommit":false,"messageTitle":"Refactor test cases for search filter","messageBody":"The test cases for the search filter are outdated. \r\n\r\nLet\u0027s refactor the test cases for the search filter.","fileTypesAndContributionMap":{"ts":{"insertions":9,"deletions":48}}}]}],"dishenggg":[],"MadLamprey":[{"date":"2024-01-27","commitResults":[{"hash":"bb4a7f4063c0aa33b80188a83bfc610fe147950a","isMergeCommit":false,"messageTitle":"Prevent redirection when repo not set (#228)","messageBody":"Co-authored-by: Misra Aditya \u003ce1096355@u.nus.edu\u003e","fileTypesAndContributionMap":{"html":{"insertions":4,"deletions":1}}}]}],"Tim-Siu":[]},"authorFileTypeContributionMap":{"xenosf":{"js":0,"css":0,"html":0,"ts":0},"sopa301":{"js":0,"css":0,"html":0,"ts":0},"mingyuanc":{"js":0,"css":0,"html":0,"ts":0},"jingting1412":{"js":0,"css":0,"html":0,"ts":0},"KevinEyo1":{"js":0,"css":0,"html":0,"ts":0},"LamJiuFong":{"js":0,"css":0,"html":0,"ts":0},"yiwen101":{"js":0,"css":0,"html":0,"ts":0},"jonasongg":{"js":0,"css":0,"html":0,"ts":0},"domoberzin":{"js":0,"css":0,"html":0,"ts":0},"asdfghjkxd":{"js":0,"css":0,"html":0,"ts":0},"yuanxi1":{"js":0,"css":0,"html":0,"ts":0},"supermii2":{"js":0,"css":0,"html":0,"ts":0},"marquestye":{"js":0,"css":0,"html":0,"ts":0},"nknguyenhc":{"js":0,"css":0,"html":13,"ts":0},"Arif-Khalid":{"js":0,"css":0,"html":10,"ts":15},"NereusWB922":{"js":0,"css":129,"html":36,"ts":215},"dishenggg":{"js":0,"css":0,"html":0,"ts":0},"MadLamprey":{"js":0,"css":0,"html":4,"ts":0},"Tim-Siu":{"js":0,"css":0,"html":0,"ts":0}},"authorContributionVariance":{"xenosf":0.0,"sopa301":0.0,"mingyuanc":0.0,"jingting1412":0.0,"KevinEyo1":0.0,"LamJiuFong":0.0,"yiwen101":0.0,"jonasongg":0.0,"domoberzin":0.0,"asdfghjkxd":0.0,"yuanxi1":0.0,"supermii2":0.0,"marquestye":0.0,"nknguyenhc":4.562449,"Arif-Khalid":1821.7921,"NereusWB922":3604.3757,"dishenggg":0.0,"MadLamprey":0.3520408,"Tim-Siu":0.0},"authorDisplayNameMap":{"xenosf":"XENO..NONG","sopa301":"POON..RYAN","mingyuanc":"CHIN..YUAN","jingting1412":"WANG..TING","KevinEyo1":"EYO ..EVIN","LamJiuFong":"LAM ..FONG","yiwen101":"WANG..IWEN","jonasongg":"JONA.. WEI","domoberzin":"DOMI.. GIN","asdfghjkxd":"GEOR.. YAO","yuanxi1":"ZHU ..ANXI","supermii2":"ALVI..S NG","marquestye":"TYE ..QUES","nknguyenhc":"NGUY..UYEN","Arif-Khalid":"ARIF..ALID","NereusWB922":"NERE.. BIN","dishenggg":"YEO ..HENG","MadLamprey":"MISR..ITYA","Tim-Siu":"XU S..UYAO"}} diff --git a/TEAMMATES_teammates_master/authorship.json b/TEAMMATES_teammates_master/authorship.json new file mode 100644 index 0000000..c0325f5 --- /dev/null +++ b/TEAMMATES_teammates_master/authorship.json @@ -0,0 +1 @@ +[{"path":"src/web/app/components/comment-box/comment-row/comment-row.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003ctm-comment-edit-form *ngIf\u003d\"model.isEditing || mode \u003d\u003d\u003d CommentRowMode.ADD\""},{"lineNumber":2,"author":{"gitId":"-"},"content":" [mode]\u003d\"mode\""},{"lineNumber":3,"author":{"gitId":"-"},"content":" [model]\u003d\"model.commentEditFormModel\""},{"lineNumber":4,"author":{"gitId":"-"},"content":" (modelChange)\u003d\"triggerModelChange(\u0027commentEditFormModel\u0027, $event)\""},{"lineNumber":5,"author":{"gitId":"-"},"content":" [isVisibilityOptionEnabled]\u003d\"isVisibilityOptionEnabled\""},{"lineNumber":6,"author":{"gitId":"-"},"content":" [isDisabled]\u003d\"isDisabled\""},{"lineNumber":7,"author":{"gitId":"-"},"content":" [shouldHideSavingButton]\u003d\"shouldHideSavingButton\""},{"lineNumber":8,"author":{"gitId":"-"},"content":" [questionShowResponsesTo]\u003d\"questionShowResponsesTo\""},{"lineNumber":9,"author":{"gitId":"-"},"content":" [response]\u003d\"response\""},{"lineNumber":10,"author":{"gitId":"-"},"content":" [isFeedbackParticipantComment]\u003d\"isFeedbackParticipantComment\""},{"lineNumber":11,"author":{"gitId":"-"},"content":" [shouldHideClosingButton]\u003d\"shouldHideClosingButton\""},{"lineNumber":12,"author":{"gitId":"-"},"content":" (closeCommentBoxEvent)\u003d\"triggerCloseEditing()\""},{"lineNumber":13,"author":{"gitId":"-"},"content":" (saveCommentEvent)\u003d\"triggerSaveCommentEvent()\"\u003e\u003c/tm-comment-edit-form\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":""},{"lineNumber":15,"author":{"gitId":"-"},"content":"\u003cdiv class\u003d\"card\" *ngIf\u003d\"!model.isEditing \u0026\u0026 mode \u003d\u003d\u003d CommentRowMode.EDIT \u0026\u0026 model.originalComment\"\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"card-body\"\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row comment-row\"\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-12\"\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"by-response-giver text-secondary\" *ngIf\u003d\"isFeedbackParticipantComment\"\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Comment by response giver."},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/span\u003e"},{"lineNumber":22,"author":{"gitId":"yuanxi1"},"content":" \u003cng-container class\u003d\"text-secondary\" *ngIf\u003d\"!isFeedbackParticipantComment\"\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"comment-giver-name\"\u003e{{ model.commentGiverName ? model.commentGiverName : model.originalComment.commentGiver }} commented at \u003c/span\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"ngb-tooltip-class\" style\u003d\"margin-right: .25rem;\" [ngbTooltip]\u003d\"model.originalComment.createdAt | formatDateDetail: model.timezone!\"\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" {{ model.originalComment.createdAt | formatDateBrief: model.timezone! }}\u003c/span\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cng-container *ngIf\u003d\"model.originalComment.lastEditedAt \u0026\u0026 model.originalComment.lastEditedAt !\u003d\u003d model.originalComment.createdAt\"\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003ci class\u003d\"fas fa-circle dot-xs align-middle\" style\u003d\"margin-right: .25rem;\"\u003e\u003c/i\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cspan id\u003d\"last-editor-name\" style\u003d\"margin-right: .25rem;\" class\u003d\"ngb-tooltip-class\""},{"lineNumber":29,"author":{"gitId":"-"},"content":" [ngbTooltip]\u003d\"model.originalComment.lastEditedAt | formatDateDetail: model.timezone!\"\u003eedited by {{ model.lastEditorName ? model.lastEditorName : model.originalComment.lastEditorEmail }}\u003c/span\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/ng-container\u003e"},{"lineNumber":31,"author":{"gitId":"yuanxi1"},"content":" \u003c/ng-container\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":""},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003ci class\u003d\"fa fa-eye\" aria-hidden\u003d\"true\" ngbTooltip\u003d\"This response comment is visible to {{ visibilityStateMachine.getVisibilityTypesUnderVisibilityControl(CommentVisibilityControl.SHOW_COMMENT) | commentVisibilityTypesJointName }}\"\u003e\u003c/i\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":""},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"float-end\"\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cbutton type\u003d\"button\" class\u003d\"btn-edit-comment btn btn-outline-primary btn-sm\" *ngIf\u003d\"!shouldHideEditButton\" ngbTooltip\u003d\u0027Edit this comment\u0027"},{"lineNumber":37,"author":{"gitId":"-"},"content":" (click)\u003d\"triggerModelChange(\u0027isEditing\u0027, true)\" [disabled]\u003d\"isDisabled\"\u003e\u003ci class\u003d\"fas fa-pencil-alt\"\u003e\u003c/i\u003e\u003c/button\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cbutton type\u003d\"button\" class\u003d\"btn-delete-comment btn btn-outline-primary btn-sm btn-margin-left\" *ngIf\u003d\"!shouldHideDeleteButton\" ngbTooltip\u003d\u0027Delete this comment\u0027"},{"lineNumber":39,"author":{"gitId":"-"},"content":" (click)\u003d\"triggerDeleteCommentEvent()\" [disabled]\u003d\"isDisabled\"\u003e\u003ci class\u003d\"fas fa-trash\"\u003e\u003c/i\u003e\u003c/button\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"comment-text col-12\" [innerHTML]\u003d\"model.originalComment.commentText | safeHtml\"\u003e\u003c/div\u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"yuanxi1":2,"-":43}},{"path":"src/web/app/components/session-edit-form/session-edit-form.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"session-edit-form\" class\u003d\"card card-plain\"\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"close-header\" *ngIf\u003d\"formMode \u003d\u003d\u003d SessionEditFormMode.ADD\"\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u003cbutton type\u003d\"button\" class\u003d\"btn-close\" aria-label\u003d\"Close\" (click)\u003d\"closeEditFormHandler()\"\u003e\u003c/button\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"card-body\"\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row\" *ngIf\u003d\"formMode \u003d\u003d\u003d SessionEditFormMode.ADD\"\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-lg-7\"\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row mb-2\"\u003e"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-12 col-sm-3 session-heading-text\"\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003ch5\u003eCreate new\u003c/h5\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-12 col-sm-9 create-new-dropdown-div\"\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cselect id\u003d\"session-type\" class\u003d\"form-control form-select\" [ngModel]\u003d\"model.templateSessionName\" (ngModelChange)\u003d\"triggerModelChange(\u0027templateSessionName\u0027, $event)\"\u003e"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003coption *ngFor\u003d\"let templateSession of templateSessions\" [ngValue]\u003d\"templateSession.name\"\u003e{{ templateSession.name }}\u003c/option\u003e"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/select\u003e"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003ca type\u003d\"button\" class\u003d\"btn btn-link\" tmRouterLink\u003d\"/web/instructor/help\" [queryParams]\u003d\"{ questionId: \u0027sessions\u0027, section: \u0027sessions\u0027 }\" target\u003d\"_blank\" aria-label\u003d\"Help for feedback sessions\"\u003e\u003ci class\u003d\"fas fa-info-circle\"\u003e\u003c/i\u003e\u003c/a\u003e"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-lg-5\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row\"\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-12 col-sm-3 col-lg-1 session-heading-text\"\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003ch5\u003eOr\u003c/h5\u003e"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-12 col-sm-9 col-lg-11 text-md-start\"\u003e"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cbutton id\u003d\"btn-copy-session\" type\u003d\"button\" class\u003d\"btn btn-info\" (click)\u003d\"copyOthersHandler()\"\u003e"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cspan\u003eCopy from previous feedback sessions\u003c/span\u003e"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"padding-left-7px\"\u003e"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003ctm-ajax-loading *ngIf\u003d\"isCopyOtherSessionLoading\"\u003e\u003c/tm-ajax-loading\u003e"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row\" *ngIf\u003d\"formMode \u003d\u003d\u003d SessionEditFormMode.EDIT\"\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-12 text-center text-md-end session-form-buttons\"\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cbutton id\u003d\"btn-fs-edit\" type\u003d\"button\" class\u003d\"btn btn-primary\" (click)\u003d\"triggerModelChange(\u0027isEditable\u0027, true)\" *ngIf\u003d\"formMode \u003d\u003d\u003d SessionEditFormMode.EDIT \u0026\u0026 !model.isEditable \u0026\u0026 !model.isSaving\"\u003e\u003ci class\u003d\"fas fa-pencil-alt\"\u003e\u003c/i\u003e Edit\u003c/button\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cbutton id\u003d\"btn-fs-save\" type\u003d\"button\" class\u003d\"btn btn-primary\" (click)\u003d\"submitFormHandler()\" [disabled]\u003d\"model.isSaving\" *ngIf\u003d\"model.isEditable || model.isSaving\"\u003e\u003ctm-ajax-loading *ngIf\u003d\"model.isSaving\"\u003e\u003c/tm-ajax-loading\u003e \u003ci class\u003d\"fas fa-check\"\u003e\u003c/i\u003e Save\u003c/button\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cbutton type\u003d\"button\" class\u003d\"btn btn-primary\" ngbTooltip\u003d\"Discard changes to the feedback session\" (click)\u003d\"cancelHandler()\" *ngIf\u003d\"model.isEditable\" [disabled]\u003d\"model.isSaving\"\u003e\u003ci class\u003d\"fas fa-ban\"\u003e\u003c/i\u003e Cancel\u003c/button\u003e"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cbutton id\u003d\"btn-fs-delete\" type\u003d\"button\" class\u003d\"btn btn-primary\" ngbTooltip\u003d\"Delete the feedback session\" (click)\u003d\"deleteHandler()\" [disabled]\u003d\"model.isSaving\"\u003e\u003ctm-ajax-loading *ngIf\u003d\"model.isDeleting\"\u003e\u003c/tm-ajax-loading\u003e\u003ci class\u003d\"fas fa-trash\"\u003e\u003c/i\u003e Delete\u003c/button\u003e"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cbutton id\u003d\"btn-fs-copy\" type\u003d\"button\" class\u003d\"btn btn-primary\" ngbTooltip\u003d\"Copy this feedback session to other courses\" (click)\u003d\"copyHandler()\" [disabled]\u003d\"model.isSaving\"\u003e\u003ctm-ajax-loading *ngIf\u003d\"model.isCopying\"\u003e\u003c/tm-ajax-loading\u003e\u003ci class\u003d\"far fa-copy\"\u003e\u003c/i\u003e Copy\u003c/button\u003e"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":45,"author":{"gitId":"-"},"content":""},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"card border-primary margin-top-20px\"\u003e"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"card-body\"\u003e"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row text-center\"\u003e"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-2 text-md-end font-bold\" [ngClass]\u003d\"{\u0027col-form-label\u0027: formMode \u003d\u003d\u003d SessionEditFormMode.ADD}\"\u003e"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"ngb-tooltip-class\" ngbTooltip\u003d\"Course for which the feedback session is for.\"\u003eCourse ID\u003c/span\u003e"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-auto text-md-start\"\u003e"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"formMode \u003d\u003d\u003d SessionEditFormMode.ADD\"\u003e"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cselect id\u003d\"add-course-id\" class\u003d\"form-control form-select\" [ngClass]\u003d\"{\u0027is-invalid\u0027: courseCandidates.length \u003d\u003d\u003d 0}\" [ngModel]\u003d\"model.courseId\" (ngModelChange)\u003d\"courseIdChangeHandler($event)\" [disabled]\u003d\"courseCandidates.length \u003d\u003d\u003d 0\"\u003e"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003coption *ngFor\u003d\"let course of courseCandidates\" [ngValue]\u003d\"course.courseId\"\u003e{{ course.courseId }}\u003c/option\u003e"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/select\u003e"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"invalid-feedback\" *ngIf\u003d\"courseCandidates.length \u003d\u003d\u003d 0\"\u003e"},{"lineNumber":58,"author":{"gitId":"-"},"content":" There is no un-archived course."},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"edit-course-id\" *ngIf\u003d\"formMode \u003d\u003d\u003d SessionEditFormMode.EDIT\"\u003e {{ model.courseId }} \u003c/div\u003e"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cbr/\u003e"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row text-center\"\u003e"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-2 text-md-end font-bold\" [ngClass]\u003d\"{\u0027col-form-label\u0027: formMode \u003d\u003d\u003d SessionEditFormMode.ADD}\"\u003e"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Time Zone"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"time-zone\" class\u003d\"col-md-3 text-md-start\" [ngClass]\u003d\"{\u0027col-form-label\u0027: formMode \u003d\u003d\u003d SessionEditFormMode.ADD}\"\u003e"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"ngb-tooltip-class\" ngbTooltip\u003d\"To change this, edit the course settings. TEAMMATES automatically adjusts to match the current time offset in your area, including clock changes due to daylight saving time.\"\u003e{{ model.timeZone }}\u003c/span\u003e"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u003cbr/\u003e"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row text-center\"\u003e"},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-2 text-md-end font-bold\"\u003e"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Course Name"},{"lineNumber":77,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"course-name\" class\u003d\"col-md-10 text-md-start\"\u003e"},{"lineNumber":79,"author":{"gitId":"-"},"content":" {{ model.courseName }}"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":81,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003cbr/\u003e"},{"lineNumber":83,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row text-center\"\u003e"},{"lineNumber":84,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-2 text-md-end font-bold\"\u003e"},{"lineNumber":85,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"formMode \u003d\u003d\u003d SessionEditFormMode.ADD\" class\u003d\"ngb-tooltip-class\" ngbTooltip\u003d\"Enter the name of the feedback session e.g. Feedback Session 1.\"\u003eSession Name*\u003c/span\u003e"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003cspan *ngIf\u003d\"formMode !\u003d\u003d SessionEditFormMode.ADD\"\u003eSession Name\u003c/span\u003e"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-10 text-md-start\"\u003e"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"formMode \u003d\u003d\u003d SessionEditFormMode.ADD\"\u003e"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003cinput id\u003d\"add-session-name\" type\u003d\"text\" class\u003d\"form-control\" [ngModel]\u003d\"model.feedbackSessionName\" (ngModelChange)\u003d\"triggerModelChange(\u0027feedbackSessionName\u0027, $event)\" placeholder\u003d\"e.g. Feedback for Project Presentation 1\" maxlength\u003d\"64\" required #sessionName\u003d\"ngModel\" /\u003e"},{"lineNumber":91,"author":{"gitId":"-"},"content":" \u003cdiv [hidden]\u003d\"sessionName.valid || (sessionName.pristine \u0026\u0026 sessionName.untouched)\" class\u003d\"invalid-field\"\u003e"},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u003ci class\u003d\"fa fa-exclamation-circle\" aria-hidden\u003d\"true\"\u003e\u003c/i\u003e"},{"lineNumber":93,"author":{"gitId":"-"},"content":" The field Session Name should not be empty."},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003cdiv\u003e"},{"lineNumber":96,"author":{"gitId":"-"},"content":" {{FEEDBACK_SESSION_NAME_MAX_LENGTH - model.feedbackSessionName.length}} characters left"},{"lineNumber":97,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":98,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":99,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"edit-session-name\" *ngIf\u003d\"formMode \u003d\u003d\u003d SessionEditFormMode.EDIT\"\u003e {{ model.feedbackSessionName }} \u003c/div\u003e"},{"lineNumber":100,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u003cbr/\u003e"},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row text-center\"\u003e"},{"lineNumber":104,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-2 text-md-end font-bold\"\u003e"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"ngb-tooltip-class\" ngbTooltip\u003d\"Will be displayed at the top of the page when users respond to the session.\"\u003eInstructions\u003c/span\u003e"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-10 text-md-start\"\u003e"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u003ctm-rich-text-editor id\u003d\"instructions\" [richText]\u003d\"model.instructions\" (richTextChange)\u003d\"triggerModelChange(\u0027instructions\u0027, $event)\" [isDisabled]\u003d\"!model.isEditable\" [hasCharacterLimit]\u003d\"true\"\u003e\u003c/tm-rich-text-editor\u003e"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u003cbr/\u003e"},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row text-center\" *ngIf\u003d\"formMode \u003d\u003d\u003d SessionEditFormMode.EDIT\"\u003e"},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-2 text-md-end font-bold\"\u003e"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Submission Status"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"submission-status\" class\u003d\"col-md-4 text-md-start\"\u003e"},{"lineNumber":117,"author":{"gitId":"-"},"content":" {{ model.submissionStatus | submissionStatusName }}"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":119,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-2 text-md-end font-bold mt-3 mt-md-0\"\u003e"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Published Status"},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"published-status\" class\u003d\"col-md-4 text-md-start\"\u003e"},{"lineNumber":123,"author":{"gitId":"-"},"content":" {{ model.publishStatus | publishStatusName }}"},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":125,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":126,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":128,"author":{"gitId":"-"},"content":""},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"card border-primary margin-top-20px\"\u003e"},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"card-body\"\u003e"},{"lineNumber":131,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row text-center\"\u003e"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-4\"\u003e"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-12 text-md-start\"\u003e"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u003cdiv\u003e"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u003clabel class\u003d\"ngb-tooltip-class label-control font-bold\" ngbTooltip\u003d\"Users can start submitting responses.\"\u003e"},{"lineNumber":136,"author":{"gitId":"-"},"content":" Submission opening time"},{"lineNumber":137,"author":{"gitId":"-"},"content":" \u003c/label\u003e"},{"lineNumber":138,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":139,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row text-center align-items-center\"\u003e"},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"submission-start-date\" class\u003d\"col-md-7 col-xs-center\"\u003e"},{"lineNumber":142,"author":{"gitId":"-"},"content":" \u003ctm-datepicker [isDisabled]\u003d\"!model.isEditable\" (dateChangeCallback)\u003d\"triggerSubmissionOpeningDateModelChange(\u0027submissionStartDate\u0027, $event)\""},{"lineNumber":143,"author":{"gitId":"-"},"content":" [minDate]\u003d\"minDateForSubmissionStart\" [maxDate]\u003d\"maxDateForSubmissionStart\""},{"lineNumber":144,"author":{"gitId":"-"},"content":" [date]\u003d\"model.submissionStartDate\"\u003e\u003c/tm-datepicker\u003e"},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-5\"\u003e"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003ctm-timepicker id\u003d\"submission-start-time\" [isDisabled]\u003d\"!model.isEditable\" (timeChange)\u003d\"triggerModelChange(\u0027submissionStartTime\u0027, $event)\""},{"lineNumber":148,"author":{"gitId":"-"},"content":" [minDate]\u003d\"minDateForSubmissionStart\" [maxDate]\u003d\"maxDateForSubmissionStart\""},{"lineNumber":149,"author":{"gitId":"-"},"content":" [date]\u003d\"model.submissionStartDate\""},{"lineNumber":150,"author":{"gitId":"-"},"content":" [minTime]\u003d\"minTimeForSubmissionStart\" [maxTime]\u003d\"maxTimeForSubmissionStart\""},{"lineNumber":151,"author":{"gitId":"-"},"content":" [time]\u003d\"model.submissionStartTime\"\u003e\u003c/tm-timepicker\u003e"},{"lineNumber":152,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":153,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":154,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":155,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-4 border-left-gray\"\u003e"},{"lineNumber":156,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row text-center\"\u003e"},{"lineNumber":157,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-12 text-md-start ms-md-2\"\u003e"},{"lineNumber":158,"author":{"gitId":"-"},"content":" \u003clabel class\u003d\"ngb-tooltip-class label-control font-bold\" ngbTooltip\u003d\"No more submissions from users.\"\u003e"},{"lineNumber":159,"author":{"gitId":"-"},"content":" Submission closing time"},{"lineNumber":160,"author":{"gitId":"-"},"content":" \u003c/label\u003e"},{"lineNumber":161,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":162,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":163,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row align-items-center\"\u003e"},{"lineNumber":164,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"submission-end-date\" class\u003d\"col-md-7 col-xs-center\"\u003e"},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u003ctm-datepicker [isDisabled]\u003d\"!model.isEditable\" (dateChangeCallback)\u003d\"triggerModelChange(\u0027submissionEndDate\u0027, $event)\""},{"lineNumber":166,"author":{"gitId":"-"},"content":" [minDate]\u003d\"minDateForSubmissionEnd\" [maxDate]\u003d\"maxDateForSubmissionEnd\""},{"lineNumber":167,"author":{"gitId":"-"},"content":" [date]\u003d\"model.submissionEndDate\"\u003e\u003c/tm-datepicker\u003e"},{"lineNumber":168,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":169,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-5\"\u003e"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003ctm-timepicker id\u003d\"submission-end-time\" [isDisabled]\u003d\"!model.isEditable\" (timeChange)\u003d\"triggerModelChange(\u0027submissionEndTime\u0027, $event)\""},{"lineNumber":171,"author":{"gitId":"-"},"content":" [minDate]\u003d\"minDateForSubmissionEnd\" [maxDate]\u003d\"maxDateForSubmissionEnd\""},{"lineNumber":172,"author":{"gitId":"-"},"content":" [date]\u003d\"model.submissionEndDate\""},{"lineNumber":173,"author":{"gitId":"-"},"content":" [minTime]\u003d\"minTimeForSubmissionEnd\" [maxTime]\u003d\"maxTimeForSubmissionEnd\""},{"lineNumber":174,"author":{"gitId":"-"},"content":" [time]\u003d\"model.submissionEndTime\"\u003e\u003c/tm-timepicker\u003e"},{"lineNumber":175,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":177,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-4 border-left-gray\"\u003e"},{"lineNumber":179,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row text-center\"\u003e"},{"lineNumber":180,"author":{"gitId":"nknguyenhc"},"content":" \u003cdiv class\u003d\"col-12 text-md-start ms-md-2\"\u003e"},{"lineNumber":181,"author":{"gitId":"nknguyenhc"},"content":" \u003clabel for\u003d\"grace-period\" class\u003d\"ngb-tooltip-class control-label font-bold\" ngbTooltip\u003d\"Amount of time the system will continue accepting submissions after the specified deadline.\"\u003e"},{"lineNumber":182,"author":{"gitId":"-"},"content":" Grace period"},{"lineNumber":183,"author":{"gitId":"-"},"content":" \u003c/label\u003e"},{"lineNumber":184,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":185,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":186,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row text-center\"\u003e"},{"lineNumber":187,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-12\"\u003e"},{"lineNumber":188,"author":{"gitId":"-"},"content":" \u003cselect id\u003d\"grace-period\" class\u003d\"form-control form-select\" [ngModel]\u003d\"model.gracePeriod\" (ngModelChange)\u003d\"triggerModelChange(\u0027gracePeriod\u0027, $event)\" [disabled]\u003d\"!model.isEditable\"\u003e"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003coption *ngFor\u003d\"let graceMinute of [0, 5, 10, 15, 20, 25, 30]\" [ngValue]\u003d\"graceMinute\"\u003e{{ graceMinute + \u0027 min\u0027}}\u003c/option\u003e"},{"lineNumber":190,"author":{"gitId":"-"},"content":" \u003c/select\u003e"},{"lineNumber":191,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":192,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":193,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row\"\u003e"},{"lineNumber":194,"author":{"gitId":"-"},"content":" \u003ca class\u003d\"ps-3 pt-2\""},{"lineNumber":195,"author":{"gitId":"-"},"content":" *ngIf\u003d\"formMode !\u003d\u003d SessionEditFormMode.ADD\""},{"lineNumber":196,"author":{"gitId":"-"},"content":" tmRouterLink\u003d\"/web/instructor/sessions/individual-extension\""},{"lineNumber":197,"author":{"gitId":"-"},"content":" [queryParams]\u003d\"{ courseid: model.courseId, fsname: model.feedbackSessionName, preselectnonsubmitters: false }\"\u003e"},{"lineNumber":198,"author":{"gitId":"-"},"content":" Individual Deadline Extensions"},{"lineNumber":199,"author":{"gitId":"-"},"content":" \u003ci class\u003d\"fas fa-edit\"\u003e\u003c/i\u003e"},{"lineNumber":200,"author":{"gitId":"-"},"content":" \u003c/a\u003e"},{"lineNumber":201,"author":{"gitId":"-"},"content":" \u003ca class\u003d\"ps-3 pt-2 disabled-link ngb-tooltip-class\""},{"lineNumber":202,"author":{"gitId":"-"},"content":" *ngIf\u003d\"formMode \u003d\u003d\u003d SessionEditFormMode.ADD\""},{"lineNumber":203,"author":{"gitId":"-"},"content":" ngbTooltip\u003d\"You must save the new session before setting individual deadline extensions\"\u003e"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Individual Deadline Extensions"},{"lineNumber":205,"author":{"gitId":"-"},"content":" \u003ci class\u003d\"fas fa-edit\"\u003e\u003c/i\u003e"},{"lineNumber":206,"author":{"gitId":"-"},"content":" \u003c/a\u003e"},{"lineNumber":207,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":208,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":209,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":210,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":211,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":212,"author":{"gitId":"-"},"content":""},{"lineNumber":213,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"!model.hasVisibleSettingsPanelExpanded\" class\u003d\"margin-top-20px\"\u003e"},{"lineNumber":214,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"text-muted\"\u003eSession is visible at submission opening time, responses are only visible when you publish the results.\u003c/span\u003e"},{"lineNumber":215,"author":{"gitId":"-"},"content":" \u003cbutton id\u003d\"btn-change-visibility\" type\u003d\"button\" class\u003d\"btn btn-link\" (click)\u003d\"triggerModelChange(\u0027hasVisibleSettingsPanelExpanded\u0027, true)\" [disabled]\u003d\"!model.isEditable\"\u003e[Change]\u003c/button\u003e"},{"lineNumber":216,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":217,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"card border-primary margin-top-20px\" *ngIf\u003d\"model.hasVisibleSettingsPanelExpanded\" @collapseAnim\u003e"},{"lineNumber":218,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"card-body\"\u003e"},{"lineNumber":219,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row align-items-start\"\u003e"},{"lineNumber":220,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-6 text-center text-md-start\"\u003e"},{"lineNumber":221,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row ms-md-1\"\u003e"},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-12\"\u003e"},{"lineNumber":223,"author":{"gitId":"-"},"content":" \u003clabel class\u003d\"ngb-tooltip-class label-control font-bold\" ngbTooltip\u003d\"Session can be visible before it is open for submissions so that users can preview the questions.\"\u003eMake session visible \u003c/label\u003e"},{"lineNumber":224,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":225,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":226,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row mt-md-2 ms-md-1\"\u003e"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-2 mt-md-1\"\u003e"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"form-check\"\u003e"},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u003clabel class\u003d\"form-check-label\"\u003e"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u003cinput id\u003d\"session-visibility-custom\" class\u003d\"form-check-input\" type\u003d\"radio\" name\u003d\"sessionVisibleRadio\" [value]\u003d\"SessionVisibleSetting.CUSTOM\" [ngModel]\u003d\"model.sessionVisibleSetting\" (ngModelChange)\u003d\"triggerModelChange(\u0027sessionVisibleSetting\u0027, $event)\" [disabled]\u003d\"!model.isEditable\"\u003e"},{"lineNumber":231,"author":{"gitId":"-"},"content":" At"},{"lineNumber":232,"author":{"gitId":"-"},"content":" \u003c/label\u003e"},{"lineNumber":233,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":234,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":235,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"session-visibility-date\" class\u003d\"col-md-6\"\u003e"},{"lineNumber":236,"author":{"gitId":"-"},"content":" \u003ctm-datepicker [isDisabled]\u003d\"model.sessionVisibleSetting !\u003d\u003d SessionVisibleSetting.CUSTOM || !model.isEditable\""},{"lineNumber":237,"author":{"gitId":"-"},"content":" (dateChangeCallback)\u003d\"triggerModelChange(\u0027customSessionVisibleDate\u0027, $event)\""},{"lineNumber":238,"author":{"gitId":"-"},"content":" [minDate]\u003d\"minDateForSessionVisible\" [maxDate]\u003d\"maxDateForSessionVisible\""},{"lineNumber":239,"author":{"gitId":"-"},"content":" [date]\u003d\"model.customSessionVisibleDate\"\u003e\u003c/tm-datepicker\u003e"},{"lineNumber":240,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":241,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-4\"\u003e"},{"lineNumber":242,"author":{"gitId":"-"},"content":" \u003ctm-timepicker id\u003d\"session-visibility-time\" [isDisabled]\u003d\"model.sessionVisibleSetting !\u003d\u003d SessionVisibleSetting.CUSTOM || !model.isEditable\" (timeChange)\u003d\"triggerModelChange(\u0027customSessionVisibleTime\u0027, $event)\""},{"lineNumber":243,"author":{"gitId":"-"},"content":" [minDate]\u003d\"minDateForSessionVisible\" [maxDate]\u003d\"maxDateForSessionVisible\""},{"lineNumber":244,"author":{"gitId":"-"},"content":" [date]\u003d\"model.customSessionVisibleDate\""},{"lineNumber":245,"author":{"gitId":"-"},"content":" [minTime]\u003d\"minTimeForSessionVisible\" [maxTime]\u003d\"maxTimeForSessionVisible\""},{"lineNumber":246,"author":{"gitId":"-"},"content":" [time]\u003d\"model.customSessionVisibleTime\" \u003e\u003c/tm-timepicker\u003e"},{"lineNumber":247,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":248,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":249,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row mt-md-1 ms-md-3\"\u003e"},{"lineNumber":250,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-12 form-check\"\u003e"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u003clabel class\u003d\"form-check-label\"\u003e"},{"lineNumber":252,"author":{"gitId":"-"},"content":" \u003cinput id\u003d\"session-visibility-at-open\" class\u003d\"form-check-input\" type\u003d\"radio\" name\u003d\"sessionVisibleRadio\" [value]\u003d\"SessionVisibleSetting.AT_OPEN\" [ngModel]\u003d\"model.sessionVisibleSetting\" (ngModelChange)\u003d\"triggerModelChange(\u0027sessionVisibleSetting\u0027, $event)\" [disabled]\u003d\"!model.isEditable\"\u003e"},{"lineNumber":253,"author":{"gitId":"-"},"content":" Submission opening time"},{"lineNumber":254,"author":{"gitId":"-"},"content":" \u003c/label\u003e"},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":256,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":258,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-6 sessionVisibleRadio border-left-gray text-center text-md-start\"\u003e"},{"lineNumber":259,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row ms-md-1\"\u003e"},{"lineNumber":260,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-12\"\u003e"},{"lineNumber":261,"author":{"gitId":"-"},"content":" \u003clabel class\u003d\"ngb-tooltip-class label-control font-bold\" ngbTooltip\u003d\"Make responses for the feedback session visible to designated recipients.\"\u003eMake response visible \u003c/label\u003e"},{"lineNumber":262,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":263,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":264,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row mt-md-2 ms-md-1\"\u003e"},{"lineNumber":265,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-2 mt-md-1\"\u003e"},{"lineNumber":266,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"form-check\"\u003e"},{"lineNumber":267,"author":{"gitId":"-"},"content":" \u003clabel class\u003d\"form-check-label\"\u003e"},{"lineNumber":268,"author":{"gitId":"-"},"content":" \u003cinput id\u003d\"response-visibility-custom\" class\u003d\"form-check-input\" type\u003d\"radio\" name\u003d\"responseVisibleRadio\" [value]\u003d\"ResponseVisibleSetting.CUSTOM\" [ngModel]\u003d\"model.responseVisibleSetting\" (ngModelChange)\u003d\"triggerModelChange(\u0027responseVisibleSetting\u0027, $event)\" [disabled]\u003d\"!model.isEditable\"/\u003e"},{"lineNumber":269,"author":{"gitId":"-"},"content":" At"},{"lineNumber":270,"author":{"gitId":"-"},"content":" \u003c/label\u003e"},{"lineNumber":271,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":272,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":273,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"response-visibility-date\" class\u003d\"col-md-6\"\u003e"},{"lineNumber":274,"author":{"gitId":"-"},"content":" \u003ctm-datepicker [isDisabled]\u003d\"model.responseVisibleSetting !\u003d\u003d ResponseVisibleSetting.CUSTOM || !model.isEditable\""},{"lineNumber":275,"author":{"gitId":"-"},"content":" (dateChangeCallback)\u003d\"triggerModelChange(\u0027customResponseVisibleDate\u0027, $event)\""},{"lineNumber":276,"author":{"gitId":"-"},"content":" [minDate]\u003d\"minDateForResponseVisible\" [date]\u003d\"model.customResponseVisibleDate\"\u003e\u003c/tm-datepicker\u003e"},{"lineNumber":277,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":278,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-4\"\u003e"},{"lineNumber":279,"author":{"gitId":"-"},"content":" \u003ctm-timepicker id\u003d\"response-visibility-time\" [isDisabled]\u003d\"model.responseVisibleSetting !\u003d\u003d ResponseVisibleSetting.CUSTOM || !model.isEditable\" (timeChange)\u003d\"triggerModelChange(\u0027customResponseVisibleTime\u0027, $event)\""},{"lineNumber":280,"author":{"gitId":"-"},"content":" [minDate]\u003d\"minDateForResponseVisible\" [date]\u003d\"model.customResponseVisibleDate\""},{"lineNumber":281,"author":{"gitId":"-"},"content":" [minTime]\u003d\"minTimeForResponseVisible\" [time]\u003d\"model.customResponseVisibleTime\" \u003e\u003c/tm-timepicker\u003e"},{"lineNumber":282,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":283,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":284,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row mt-md-2 ms-md-1\"\u003e"},{"lineNumber":285,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-12\"\u003e"},{"lineNumber":286,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"form-check\"\u003e"},{"lineNumber":287,"author":{"gitId":"-"},"content":" \u003clabel class\u003d\"ngb-tooltip-class form-check-label\" ngbTooltip\u003d\"Same time as when the session becomes visible to users.\"\u003e"},{"lineNumber":288,"author":{"gitId":"-"},"content":" \u003cinput id\u003d\"response-visibility-immediately\" class\u003d\"form-check-input\" type\u003d\"radio\" name\u003d\"responseVisibleRadio\" [value]\u003d\"ResponseVisibleSetting.AT_VISIBLE\" [ngModel]\u003d\"model.responseVisibleSetting\" (ngModelChange)\u003d\"triggerModelChange(\u0027responseVisibleSetting\u0027, $event)\" [disabled]\u003d\"!model.isEditable\"\u003e"},{"lineNumber":289,"author":{"gitId":"-"},"content":" Immediately"},{"lineNumber":290,"author":{"gitId":"-"},"content":" \u003c/label\u003e"},{"lineNumber":291,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":292,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":293,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":294,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row mt-md-2 ms-md-1\"\u003e"},{"lineNumber":295,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-12\"\u003e"},{"lineNumber":296,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"form-check\"\u003e"},{"lineNumber":297,"author":{"gitId":"-"},"content":" \u003clabel class\u003d\"ngb-tooltip-class form-check-label\" ngbTooltip\u003d\"Remember to manually publish the responses for this session later on.\"\u003e"},{"lineNumber":298,"author":{"gitId":"-"},"content":" \u003cinput id\u003d\"response-visibility-manually\" class\u003d\"form-check-input\" type\u003d\"radio\" name\u003d\"responseVisibleRadio\" [value]\u003d\"ResponseVisibleSetting.LATER\" [ngModel]\u003d\"model.responseVisibleSetting\" (ngModelChange)\u003d\"triggerModelChange(\u0027responseVisibleSetting\u0027, $event)\" [disabled]\u003d\"!model.isEditable\"\u003e"},{"lineNumber":299,"author":{"gitId":"-"},"content":" Not now (publish manually)"},{"lineNumber":300,"author":{"gitId":"-"},"content":" \u003c/label\u003e"},{"lineNumber":301,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":302,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":303,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":304,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":305,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":306,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":307,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":308,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"!model.hasEmailSettingsPanelExpanded\"\u003e"},{"lineNumber":309,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"text-muted\"\u003eEmails are sent when session opens (within 15 minutes), 24 hrs before session closes and when results are published.\u003c/span\u003e"},{"lineNumber":310,"author":{"gitId":"-"},"content":" \u003cbutton id\u003d\"btn-change-email\" type\u003d\"button\" class\u003d\"btn btn-link\" (click)\u003d\"triggerModelChange(\u0027hasEmailSettingsPanelExpanded\u0027, true)\" [disabled]\u003d\"!model.isEditable\"\u003e[Change]\u003c/button\u003e"},{"lineNumber":311,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":312,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"card border-primary margin-top-20px\" *ngIf\u003d\"model.hasEmailSettingsPanelExpanded\" @collapseAnim\u003e"},{"lineNumber":313,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"card-body\"\u003e"},{"lineNumber":314,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-12 font-bold\"\u003e"},{"lineNumber":315,"author":{"gitId":"-"},"content":" Send emails for"},{"lineNumber":316,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":317,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row ms-md-1 mt-md-3\"\u003e"},{"lineNumber":318,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-4\"\u003e"},{"lineNumber":319,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"form-check form-check-inline\"\u003e"},{"lineNumber":320,"author":{"gitId":"-"},"content":" \u003clabel class\u003d\"ngb-tooltip-class form-check-label\" ngbTooltip\u003d\"Notify students when the session is open for submission.\"\u003e"},{"lineNumber":321,"author":{"gitId":"-"},"content":" \u003cinput id\u003d\"email-opening\" class\u003d\"form-check-input\" type\u003d\"checkbox\" checked disabled\u003eSession opening reminder"},{"lineNumber":322,"author":{"gitId":"-"},"content":" \u003c/label\u003e"},{"lineNumber":323,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":324,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":325,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-4\"\u003e"},{"lineNumber":326,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"form-check form-check-inline\"\u003e"},{"lineNumber":327,"author":{"gitId":"-"},"content":" \u003clabel class\u003d\"ngb-tooltip-class form-check-label\" ngbTooltip\u003d\"Remind students to submit 24 hours before the end of the session.\"\u003e"},{"lineNumber":328,"author":{"gitId":"-"},"content":" \u003cinput id\u003d\"email-closing\" class\u003d\"form-check-input\" type\u003d\"checkbox\" [ngModel]\u003d\"model.isClosingEmailEnabled\" (ngModelChange)\u003d\"triggerModelChange(\u0027isClosingEmailEnabled\u0027, $event)\" [disabled]\u003d\"!model.isEditable\"\u003e Session closing reminder"},{"lineNumber":329,"author":{"gitId":"-"},"content":" \u003c/label\u003e"},{"lineNumber":330,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":331,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":332,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-md-4\"\u003e"},{"lineNumber":333,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"form-check form-check-inline\"\u003e"},{"lineNumber":334,"author":{"gitId":"-"},"content":" \u003clabel class\u003d\"ngb-tooltip-class form-check-label\" ngbTooltip\u003d\"Notify students when the session results is published.\"\u003e"},{"lineNumber":335,"author":{"gitId":"-"},"content":" \u003cinput id\u003d\"email-published\" class\u003d\"form-check-input\" type\u003d\"checkbox\" [ngModel]\u003d\"model.isPublishedEmailEnabled\" (ngModelChange)\u003d\"triggerModelChange(\u0027isPublishedEmailEnabled\u0027, $event)\" [disabled]\u003d\"!model.isEditable\"\u003e Results published announcement"},{"lineNumber":336,"author":{"gitId":"-"},"content":" \u003c/label\u003e"},{"lineNumber":337,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":338,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":339,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":340,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":341,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":342,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"row margin-top-20px\"\u003e"},{"lineNumber":343,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"col-12 text-center\"\u003e"},{"lineNumber":344,"author":{"gitId":"-"},"content":" \u003cspan class\u003d\"loader\"\u003e\u003c/span\u003e"},{"lineNumber":345,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"formMode \u003d\u003d\u003d SessionEditFormMode.ADD\"\u003e"},{"lineNumber":346,"author":{"gitId":"-"},"content":" \u003cbutton id\u003d\"btn-create-session\" type\u003d\"button\" class\u003d\"btn btn-primary\" [disabled]\u003d\"courseCandidates.length \u003d\u003d\u003d 0 || model.isSaving || !model.feedbackSessionName\" (click)\u003d\"submitFormHandler()\"\u003e"},{"lineNumber":347,"author":{"gitId":"-"},"content":" \u003ctm-ajax-loading *ngIf\u003d\"model.isSaving\"\u003e\u003c/tm-ajax-loading\u003eCreate Feedback Session"},{"lineNumber":348,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":349,"author":{"gitId":"-"},"content":" \u003cp class\u003d\"text-danger margin-top-20px\" *ngIf\u003d\"courseCandidates.length \u003d\u003d\u003d 0\"\u003e\u003cb\u003eYou need to have an active(unarchived) course to create a session!\u003c/b\u003e\u003c/p\u003e"},{"lineNumber":350,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":351,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"formMode \u003d\u003d\u003d SessionEditFormMode.EDIT\"\u003e"},{"lineNumber":352,"author":{"gitId":"-"},"content":" \u003cbutton type\u003d\"button\" class\u003d\"btn btn-success\" [disabled]\u003d\"model.isSaving || !model.isEditable\" *ngIf\u003d\"formMode \u003d\u003d\u003d SessionEditFormMode.EDIT\" (click)\u003d\"submitFormHandler()\"\u003e"},{"lineNumber":353,"author":{"gitId":"-"},"content":" \u003ctm-ajax-loading *ngIf\u003d\"model.isSaving\"\u003e\u003c/tm-ajax-loading\u003eSave Changes"},{"lineNumber":354,"author":{"gitId":"-"},"content":" \u003c/button\u003e"},{"lineNumber":355,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":356,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":357,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":358,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":359,"author":{"gitId":"-"},"content":"\u003c/div\u003e"}],"authorContributionMap":{"nknguyenhc":2,"-":357}},{"path":"src/web/app/pages-instructor/instructor-student-records-page/instructor-student-records-page.component.html","fileType":"html","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003ch1 id\u003d\"records-header\"\u003e{{studentName}}\u0027s Records\u003csmall class\u003d\"text-muted text-break\"\u003e - {{courseId}}\u003c/small\u003e\u003c/h1\u003e"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003ch2\u003eRecords in feedback sessions\u003c/h2\u003e"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003ctm-loading-retry [shouldShowRetry]\u003d\"hasStudentResultsLoadingFailed\" [message]\u003d\"\u0027Failed to load student results\u0027\" (retryEvent)\u003d\"loadStudentResults()\"\u003e"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u003cdiv *tmIsLoading\u003d\"isStudentResultsLoading\"\u003e"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003cdiv *ngFor\u003d\"let session of sessionTabs\" class\u003d\"card card-default mb-4\"\u003e"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"card-header cursor-pointer\" (click)\u003d\"session.isCollapsed \u003d !session.isCollapsed\"\u003e"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003cstrong class\u003d\"text-break\"\u003eFeedback Session: {{ session.feedbackSession.feedbackSessionName }}\u003c/strong\u003e"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"card-header-btn-toolbar\"\u003e"},{"lineNumber":9,"author":{"gitId":"Tim-Siu"},"content":" \u003ctm-panel-chevron [isExpanded]\u003d\"!session.isCollapsed\" chevronColor\u003d\"black\"\u003e\u003c/tm-panel-chevron\u003e"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"card-body\" *ngIf\u003d\"!session.isCollapsed\" @collapseAnim\u003e"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003ctm-grq-rgq-view-responses *ngIf\u003d\"session.responsesReceivedByStudent.length \u003e 0\""},{"lineNumber":14,"author":{"gitId":"-"},"content":" [session]\u003d\"session.feedbackSession\""},{"lineNumber":15,"author":{"gitId":"-"},"content":" [responses]\u003d\"session.responsesReceivedByStudent\" [groupByTeam]\u003d\"false\" [section]\u003d\"\" [sectionType]\u003d\"\""},{"lineNumber":16,"author":{"gitId":"-"},"content":" [isGrq]\u003d\"false\" [instructorCommentTableModel]\u003d\"instructorCommentTableModel\""},{"lineNumber":17,"author":{"gitId":"-"},"content":" (saveNewCommentEvent)\u003d\"saveNewComment($event, session.feedbackSession.timeZone)\""},{"lineNumber":18,"author":{"gitId":"-"},"content":" (deleteCommentEvent)\u003d\"deleteComment($event)\""},{"lineNumber":19,"author":{"gitId":"-"},"content":" (updateCommentEvent)\u003d\"updateComment($event, session.feedbackSession.timeZone)\""},{"lineNumber":20,"author":{"gitId":"-"},"content":" [isExpandAll]\u003d\"true\"\u003e"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/tm-grq-rgq-view-responses\u003e"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"session.responsesReceivedByStudent.length \u003d\u003d\u003d 0\" class\u003d\"mb-3\"\u003e"},{"lineNumber":23,"author":{"gitId":"-"},"content":" No feedback responses for {{studentName}} ({{studentTeam}}) found."},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003ctm-grq-rgq-view-responses *ngIf\u003d\"session.responsesGivenByStudent.length \u003e 0\""},{"lineNumber":26,"author":{"gitId":"-"},"content":" [session]\u003d\"session.feedbackSession\""},{"lineNumber":27,"author":{"gitId":"-"},"content":" [responses]\u003d\"session.responsesGivenByStudent\" [groupByTeam]\u003d\"false\" [section]\u003d\"\" [sectionType]\u003d\"\""},{"lineNumber":28,"author":{"gitId":"-"},"content":" [isGrq]\u003d\"true\" [instructorCommentTableModel]\u003d\"instructorCommentTableModel\""},{"lineNumber":29,"author":{"gitId":"-"},"content":" (saveNewCommentEvent)\u003d\"saveNewComment($event, session.feedbackSession.timeZone)\""},{"lineNumber":30,"author":{"gitId":"-"},"content":" (deleteCommentEvent)\u003d\"deleteComment($event)\""},{"lineNumber":31,"author":{"gitId":"-"},"content":" (updateCommentEvent)\u003d\"updateComment($event, session.feedbackSession.timeZone)\""},{"lineNumber":32,"author":{"gitId":"-"},"content":" [isExpandAll]\u003d\"true\""},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003e\u003c/tm-grq-rgq-view-responses\u003e"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cdiv *ngIf\u003d\"session.responsesGivenByStudent.length \u003d\u003d\u003d 0\"\u003e"},{"lineNumber":35,"author":{"gitId":"-"},"content":" No feedback responses from {{studentName}} ({{studentTeam}}) found."},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/div\u003e"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003c/tm-loading-retry\u003e"}],"authorContributionMap":{"-":39,"Tim-Siu":1}}] diff --git a/TEAMMATES_teammates_master/commits.json b/TEAMMATES_teammates_master/commits.json new file mode 100644 index 0000000..0afef9e --- /dev/null +++ b/TEAMMATES_teammates_master/commits.json @@ -0,0 +1 @@ +{"authorDailyContributionsMap":{"xenosf":[],"sopa301":[],"mingyuanc":[],"jingting1412":[],"KevinEyo1":[],"LamJiuFong":[],"yiwen101":[],"jonasongg":[],"domoberzin":[],"asdfghjkxd":[],"yuanxi1":[{"date":"2023-12-28","commitResults":[{"hash":"5de8300549d6b06bd21d38f1d258bdcaebc6c443","isMergeCommit":false,"messageTitle":"[#12663] Instructor\u0027s Student Records Page: Tooltips for comments (#12676)","messageBody":"* Fix comment tooltip causing the text to go into next line\r\n\r\n* Update snapshot test\r\n\r\n---------\r\n\r\nCo-authored-by: YX Z \u003cyxz@YXs-MacBook-Air-2.local\u003e\r\nCo-authored-by: Wei Qing \u003c48304907+weiquu@users.noreply.github.com\u003e\r\nCo-authored-by: Dominic Lim \u003c46486515+domlimm@users.noreply.github.com\u003e\r\nCo-authored-by: Jason Qiu \u003cjason_qiu@hotmail.com\u003e","fileTypesAndContributionMap":{"html":{"insertions":2,"deletions":2}}}]}],"supermii2":[],"marquestye":[],"nknguyenhc":[{"date":"2023-12-25","commitResults":[{"hash":"a64f6605aec32e664527d017f7e2d9946010d4b2","isMergeCommit":false,"messageTitle":"[#12654] Instructor Edit Session Page: Bug in Grace Period Tooltip (#12675)","messageBody":"* Fix grace period tooltip\r\n\r\n* Update test cases\r\n\r\n---------\r\n\r\nCo-authored-by: Wei Qing \u003c48304907+weiquu@users.noreply.github.com\u003e\r\nCo-authored-by: Dominic Lim \u003c46486515+domlimm@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"html":{"insertions":2,"deletions":2}}}]}],"Arif-Khalid":[],"NereusWB922":[],"dishenggg":[],"MadLamprey":[],"Tim-Siu":[{"date":"2023-12-22","commitResults":[{"hash":"fdfdded21b473d79468a263a61b32985cce72ed3","isMergeCommit":false,"messageTitle":"[#3942] Instructor\u0027s Student Records Page: Feedback session panel chevron barely visible #12668 (#12673)","messageBody":"* Fix chevron color issue\r\n\r\n* Replace property binding with static value assignation","fileTypesAndContributionMap":{"html":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"xenosf":{"java":0,"js":0,"scss":0,"md":0,"py":0,"tag":0,"html":0,"ts":0},"sopa301":{"java":0,"js":0,"scss":0,"md":0,"py":0,"tag":0,"html":0,"ts":0},"mingyuanc":{"java":0,"js":0,"scss":0,"md":0,"py":0,"tag":0,"html":0,"ts":0},"jingting1412":{"java":0,"js":0,"scss":0,"md":0,"py":0,"tag":0,"html":0,"ts":0},"KevinEyo1":{"java":0,"js":0,"scss":0,"md":0,"py":0,"tag":0,"html":0,"ts":0},"LamJiuFong":{"java":0,"js":0,"scss":0,"md":0,"py":0,"tag":0,"html":0,"ts":0},"yiwen101":{"java":0,"js":0,"scss":0,"md":0,"py":0,"tag":0,"html":0,"ts":0},"jonasongg":{"java":0,"js":0,"scss":0,"md":0,"py":0,"tag":0,"html":0,"ts":0},"domoberzin":{"java":0,"js":0,"scss":0,"md":0,"py":0,"tag":0,"html":0,"ts":0},"asdfghjkxd":{"java":0,"js":0,"scss":0,"md":0,"py":0,"tag":0,"html":0,"ts":0},"yuanxi1":{"java":0,"js":0,"scss":0,"md":0,"py":0,"tag":0,"html":2,"ts":0},"supermii2":{"java":0,"js":0,"scss":0,"md":0,"py":0,"tag":0,"html":0,"ts":0},"marquestye":{"java":0,"js":0,"scss":0,"md":0,"py":0,"tag":0,"html":0,"ts":0},"nknguyenhc":{"java":0,"js":0,"scss":0,"md":0,"py":0,"tag":0,"html":2,"ts":0},"Arif-Khalid":{"java":0,"js":0,"scss":0,"md":0,"py":0,"tag":0,"html":0,"ts":0},"NereusWB922":{"java":0,"js":0,"scss":0,"md":0,"py":0,"tag":0,"html":0,"ts":0},"dishenggg":{"java":0,"js":0,"scss":0,"md":0,"py":0,"tag":0,"html":0,"ts":0},"MadLamprey":{"java":0,"js":0,"scss":0,"md":0,"py":0,"tag":0,"html":0,"ts":0},"Tim-Siu":{"java":0,"js":0,"scss":0,"md":0,"py":0,"tag":0,"html":1,"ts":0}},"authorContributionVariance":{"xenosf":0.0,"sopa301":0.0,"mingyuanc":0.0,"jingting1412":0.0,"KevinEyo1":0.0,"LamJiuFong":0.0,"yiwen101":0.0,"jonasongg":0.0,"domoberzin":0.0,"asdfghjkxd":0.0,"yuanxi1":0.55102044,"supermii2":0.0,"marquestye":0.0,"nknguyenhc":0.5510205,"Arif-Khalid":0.0,"NereusWB922":0.0,"dishenggg":0.0,"MadLamprey":0.0,"Tim-Siu":0.13775513},"authorDisplayNameMap":{"xenosf":"XENO..NONG","sopa301":"POON..RYAN","mingyuanc":"CHIN..YUAN","jingting1412":"WANG..TING","KevinEyo1":"EYO ..EVIN","LamJiuFong":"LAM ..FONG","yiwen101":"WANG..IWEN","jonasongg":"JONA.. WEI","domoberzin":"DOMI.. GIN","asdfghjkxd":"GEOR.. YAO","yuanxi1":"ZHU ..ANXI","supermii2":"ALVI..S NG","marquestye":"TYE ..QUES","nknguyenhc":"NGUY..UYEN","Arif-Khalid":"ARIF..ALID","NereusWB922":"NERE.. BIN","dishenggg":"YEO ..HENG","MadLamprey":"MISR..ITYA","Tim-Siu":"XU S..UYAO"}} diff --git a/archive.zip b/archive.zip new file mode 100644 index 0000000..7b480fb Binary files /dev/null and b/archive.zip differ diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..cce77ba Binary files /dev/null and b/favicon.ico differ diff --git a/fonts/titillium-web-all-400-normal.b2204c06.woff b/fonts/titillium-web-all-400-normal.b2204c06.woff new file mode 100644 index 0000000..761b03f Binary files /dev/null and b/fonts/titillium-web-all-400-normal.b2204c06.woff differ diff --git a/fonts/titillium-web-latin-400-normal.28c7a39b.woff2 b/fonts/titillium-web-latin-400-normal.28c7a39b.woff2 new file mode 100644 index 0000000..207b9e4 Binary files /dev/null and b/fonts/titillium-web-latin-400-normal.28c7a39b.woff2 differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..c0d9dad --- /dev/null +++ b/index.html @@ -0,0 +1,17 @@ + + +
+ + + + +