From e00e6918f90aee6e07670bca45252621ebbce3d1 Mon Sep 17 00:00:00 2001 From: Rongrong Chai Date: Mon, 13 Nov 2023 18:03:47 +0000 Subject: [PATCH 01/12] add caption for number of challenges without start date --- .../statistics-viewer.component.ts | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts b/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts index 2d327cc3cf..0c13c2654c 100644 --- a/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts +++ b/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts @@ -27,6 +27,8 @@ export class StatisticsViewerComponent implements OnInit, OnDestroy { chartOptions!: EChartsOption; + undatedChallengeCounts = 0; + ngOnInit() { // update plot's data this.chartDataSubscription = this.homeDataService @@ -75,10 +77,27 @@ export class StatisticsViewerComponent implements OnInit, OnDestroy { }, // disable default clicking silent: true, - // make bar plot rise from left to right instead of rising all together in the same time + // make bar plot rise from left to right + // instead of rising all together in the same time animationDelay: (dataIndex: number) => dataIndex * 100, }, ], + graphic: + this.undatedChallengeCounts > 0 + ? { + elements: [ + { + type: 'text', + style: { + text: `*An additional ${this.undatedChallengeCounts} challenges without start dates are not displayed in the plot`, + fill: '#888', + }, + left: 'center', + bottom: 5, + }, + ], + } + : undefined, }) ); } From 52445e28802ca91fc1478b3b6ea90e1306bc3ac8 Mon Sep 17 00:00:00 2001 From: Rongrong Chai Date: Mon, 13 Nov 2023 18:20:22 +0000 Subject: [PATCH 02/12] update challenge analystic service to get undatedChallengeCounts & some missing updates on challenge service as well --- .../api/ChallengeAnalyticsApiDelegate.java | 2 +- .../service/model/dto/ChallengeDto.java | 6 ++-- .../model/dto/ChallengesPerYearDto.java | 31 +++++++++++++++++-- .../service/ChallengeAnalyticsService.java | 7 ++++- .../src/main/resources/openapi.yaml | 18 +++++++---- .../src/lib/model/challengesPerYear.ts | 1 + .../build/challenge.openapi.yaml | 5 +++ .../api-description/build/openapi.yaml | 5 +++ .../components/schemas/ChallengesPerYear.yaml | 5 +++ 9 files changed, 67 insertions(+), 13 deletions(-) diff --git a/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/api/ChallengeAnalyticsApiDelegate.java b/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/api/ChallengeAnalyticsApiDelegate.java index 10f033c974..8c96f9e6fb 100644 --- a/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/api/ChallengeAnalyticsApiDelegate.java +++ b/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/api/ChallengeAnalyticsApiDelegate.java @@ -34,7 +34,7 @@ default ResponseEntity getChallengesPerYear() { for (MediaType mediaType : MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { String exampleString = - "{ \"challengeCounts\" : [ 0, 0 ], \"years\" : [ \"years\", \"years\" ] }"; + "{ \"undatedChallengeCounts\" : 0, \"challengeCounts\" : [ 0, 0 ], \"years\" : [ \"years\", \"years\" ] }"; ApiUtil.setExampleResponse(request, "application/json", exampleString); break; } diff --git a/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/model/dto/ChallengeDto.java b/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/model/dto/ChallengeDto.java index a26bb9e533..9c4cba0914 100644 --- a/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/model/dto/ChallengeDto.java +++ b/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/model/dto/ChallengeDto.java @@ -121,7 +121,7 @@ public ChallengeDto slug(String slug) { */ @NotNull @Pattern(regexp = "^[a-z0-9]+(?:-[a-z0-9]+)*$") - @Size(min = 3, max = 60) + @Size(min = 3, max = 255) @Schema( name = "slug", example = "awesome-challenge", @@ -146,7 +146,7 @@ public ChallengeDto name(String name) { * @return name */ @NotNull - @Size(min = 3, max = 60) + @Size(min = 3, max = 255) @Schema(name = "name", description = "The name of the challenge.", required = true) public String getName() { return name; @@ -191,7 +191,7 @@ public ChallengeDto description(String description) { * @return description */ @NotNull - @Size(min = 0, max = 280) + @Size(min = 0, max = 1000) @Schema( name = "description", example = "This is an example description of the challenge.", diff --git a/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/model/dto/ChallengesPerYearDto.java b/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/model/dto/ChallengesPerYearDto.java index ced4cfd28f..6dd0df0744 100644 --- a/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/model/dto/ChallengesPerYearDto.java +++ b/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/model/dto/ChallengesPerYearDto.java @@ -26,6 +26,9 @@ public class ChallengesPerYearDto { @Valid private List challengeCounts = new ArrayList<>(); + @JsonProperty("undatedChallengeCounts") + private Integer undatedChallengeCounts = 0; + public ChallengesPerYearDto years(List years) { this.years = years; return this; @@ -82,6 +85,26 @@ public void setChallengeCounts(List challengeCounts) { this.challengeCounts = challengeCounts; } + public ChallengesPerYearDto undatedChallengeCounts(Integer undatedChallengeCounts) { + this.undatedChallengeCounts = undatedChallengeCounts; + return this; + } + + /** + * Get undatedChallengeCounts + * + * @return undatedChallengeCounts + */ + @NotNull + @Schema(name = "undatedChallengeCounts", example = "0", required = true) + public Integer getUndatedChallengeCounts() { + return undatedChallengeCounts; + } + + public void setUndatedChallengeCounts(Integer undatedChallengeCounts) { + this.undatedChallengeCounts = undatedChallengeCounts; + } + @Override public boolean equals(Object o) { if (this == o) { @@ -92,12 +115,13 @@ public boolean equals(Object o) { } ChallengesPerYearDto challengesPerYear = (ChallengesPerYearDto) o; return Objects.equals(this.years, challengesPerYear.years) - && Objects.equals(this.challengeCounts, challengesPerYear.challengeCounts); + && Objects.equals(this.challengeCounts, challengesPerYear.challengeCounts) + && Objects.equals(this.undatedChallengeCounts, challengesPerYear.undatedChallengeCounts); } @Override public int hashCode() { - return Objects.hash(years, challengeCounts); + return Objects.hash(years, challengeCounts, undatedChallengeCounts); } @Override @@ -106,6 +130,9 @@ public String toString() { sb.append("class ChallengesPerYearDto {\n"); sb.append(" years: ").append(toIndentedString(years)).append("\n"); sb.append(" challengeCounts: ").append(toIndentedString(challengeCounts)).append("\n"); + sb.append(" undatedChallengeCounts: ") + .append(toIndentedString(undatedChallengeCounts)) + .append("\n"); sb.append("}"); return sb.toString(); } diff --git a/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/service/ChallengeAnalyticsService.java b/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/service/ChallengeAnalyticsService.java index 73848f9937..077c83589a 100644 --- a/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/service/ChallengeAnalyticsService.java +++ b/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/service/ChallengeAnalyticsService.java @@ -17,7 +17,12 @@ public ChallengesPerYearDto getChallengesPerYear() { "2018", "2019", "2020", "2021", "2022", "2023"); List challengeCounts = Arrays.asList(5, 8, 12, 16, 21, 27, 31, 38, 45, 54, 80, 91, 110, 129, 177, 203, 226); + Integer undatedChallengeCounts = 50; - return ChallengesPerYearDto.builder().years(years).challengeCounts(challengeCounts).build(); + return ChallengesPerYearDto.builder() + .years(years) + .challengeCounts(challengeCounts) + .undatedChallengeCounts(undatedChallengeCounts) + .build(); } } diff --git a/apps/openchallenges/challenge-service/src/main/resources/openapi.yaml b/apps/openchallenges/challenge-service/src/main/resources/openapi.yaml index db8936b592..d92dffdc86 100644 --- a/apps/openchallenges/challenge-service/src/main/resources/openapi.yaml +++ b/apps/openchallenges/challenge-service/src/main/resources/openapi.yaml @@ -560,13 +560,13 @@ components: ChallengeSlug: description: The slug of the challenge. example: awesome-challenge - maxLength: 60 + maxLength: 255 minLength: 3 pattern: "^[a-z0-9]+(?:-[a-z0-9]+)*$" type: string ChallengeName: description: The name of the challenge. - maxLength: 60 + maxLength: 255 minLength: 3 type: string ChallengeHeadline: @@ -578,7 +578,7 @@ components: ChallengeDescription: description: The description of the challenge. example: This is an example description of the challenge. - maxLength: 280 + maxLength: 1000 minLength: 0 type: string ChallengePlatformId: @@ -721,13 +721,13 @@ components: slug: description: The slug of the challenge. example: awesome-challenge - maxLength: 60 + maxLength: 255 minLength: 3 pattern: "^[a-z0-9]+(?:-[a-z0-9]+)*$" type: string name: description: The name of the challenge. - maxLength: 60 + maxLength: 255 minLength: 3 type: string headline: @@ -739,7 +739,7 @@ components: description: description: The description of the challenge. example: This is an example description of the challenge. - maxLength: 280 + maxLength: 1000 minLength: 0 type: string doi: @@ -876,6 +876,7 @@ components: ChallengesPerYear: description: An object example: + undatedChallengeCounts: 0 challengeCounts: - 0 - 0 @@ -891,8 +892,13 @@ components: items: type: integer type: array + undatedChallengeCounts: + default: 0 + example: 0 + type: integer required: - challengeCounts + - undatedChallengeCounts - years type: object x-java-class-annotations: diff --git a/libs/openchallenges/api-client-angular/src/lib/model/challengesPerYear.ts b/libs/openchallenges/api-client-angular/src/lib/model/challengesPerYear.ts index 58adc2eb92..03f801298d 100644 --- a/libs/openchallenges/api-client-angular/src/lib/model/challengesPerYear.ts +++ b/libs/openchallenges/api-client-angular/src/lib/model/challengesPerYear.ts @@ -17,5 +17,6 @@ export interface ChallengesPerYear { years: Array; challengeCounts: Array; + undatedChallengeCounts: number; } diff --git a/libs/openchallenges/api-description/build/challenge.openapi.yaml b/libs/openchallenges/api-description/build/challenge.openapi.yaml index 47e9d26e0e..e150ccb7a3 100644 --- a/libs/openchallenges/api-description/build/challenge.openapi.yaml +++ b/libs/openchallenges/api-description/build/challenge.openapi.yaml @@ -614,9 +614,14 @@ components: type: array items: type: integer + undatedChallengeCounts: + type: integer + default: 0 + example: 0 required: - years - challengeCounts + - undatedChallengeCounts x-java-class-annotations: - '@lombok.Builder' ChallengeInputDataTypeSort: diff --git a/libs/openchallenges/api-description/build/openapi.yaml b/libs/openchallenges/api-description/build/openapi.yaml index e8700d7be9..ea3f59137b 100644 --- a/libs/openchallenges/api-description/build/openapi.yaml +++ b/libs/openchallenges/api-description/build/openapi.yaml @@ -768,9 +768,14 @@ components: type: array items: type: integer + undatedChallengeCounts: + type: integer + default: 0 + example: 0 required: - years - challengeCounts + - undatedChallengeCounts x-java-class-annotations: - '@lombok.Builder' ChallengeInputDataTypeSort: diff --git a/libs/openchallenges/api-description/src/components/schemas/ChallengesPerYear.yaml b/libs/openchallenges/api-description/src/components/schemas/ChallengesPerYear.yaml index ea6c790cf7..daf6808e07 100644 --- a/libs/openchallenges/api-description/src/components/schemas/ChallengesPerYear.yaml +++ b/libs/openchallenges/api-description/src/components/schemas/ChallengesPerYear.yaml @@ -9,8 +9,13 @@ properties: type: array items: type: integer + undatedChallengeCounts: + type: integer + default: 0 + example: 0 required: - years - challengeCounts + - undatedChallengeCounts x-java-class-annotations: - '@lombok.Builder' From 4eea2f246b564d600bce8debc5786c8fa1de9143 Mon Sep 17 00:00:00 2001 From: Rongrong Chai Date: Mon, 13 Nov 2023 18:24:33 +0000 Subject: [PATCH 03/12] add static value for undatedChallengeCounts --- .../service/service/ChallengeAnalyticsService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/service/ChallengeAnalyticsService.java b/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/service/ChallengeAnalyticsService.java index 077c83589a..f024ffd389 100644 --- a/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/service/ChallengeAnalyticsService.java +++ b/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/service/ChallengeAnalyticsService.java @@ -20,9 +20,9 @@ public ChallengesPerYearDto getChallengesPerYear() { Integer undatedChallengeCounts = 50; return ChallengesPerYearDto.builder() - .years(years) - .challengeCounts(challengeCounts) - .undatedChallengeCounts(undatedChallengeCounts) - .build(); + .years(years) + .challengeCounts(challengeCounts) + .undatedChallengeCounts(undatedChallengeCounts) + .build(); } } From e824fad9fb6aaee9217f0817decc9ae93abae20b Mon Sep 17 00:00:00 2001 From: Rongrong Chai Date: Mon, 13 Nov 2023 18:30:05 +0000 Subject: [PATCH 04/12] update ts file --- .../lib/statistics-viewer/statistics-viewer.component.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts b/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts index 0c13c2654c..0a2637d6a4 100644 --- a/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts +++ b/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts @@ -83,13 +83,15 @@ export class StatisticsViewerComponent implements OnInit, OnDestroy { }, ], graphic: - this.undatedChallengeCounts > 0 + res.undatedChallengeCounts > 0 ? { elements: [ { type: 'text', style: { - text: `*An additional ${this.undatedChallengeCounts} challenges without start dates are not displayed in the plot`, + text: + `*An additional ${res.undatedChallengeCounts} challenges ` + + `without start dates are not displayed in the plot`, fill: '#888', }, left: 'center', From a9bd4d39a22223a0ce5be3c6941461e36edb8e2a Mon Sep 17 00:00:00 2001 From: Rongrong Chai Date: Mon, 13 Nov 2023 20:15:54 +0000 Subject: [PATCH 05/12] update name --- .../api/ChallengeAnalyticsApiDelegate.java | 2 +- .../model/dto/ChallengesPerYearDto.java | 30 ++++++++-------- .../service/ChallengeAnalyticsService.java | 4 +-- .../src/main/resources/openapi.yaml | 6 ++-- .../src/lib/model/challengesPerYear.ts | 2 +- .../build/challenge.openapi.yaml | 4 +-- .../api-description/build/openapi.yaml | 4 +-- .../components/schemas/ChallengesPerYear.yaml | 4 +-- .../statistics-viewer.component.ts | 35 +++++++++---------- 9 files changed, 44 insertions(+), 47 deletions(-) diff --git a/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/api/ChallengeAnalyticsApiDelegate.java b/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/api/ChallengeAnalyticsApiDelegate.java index 8c96f9e6fb..1ae9c34d2f 100644 --- a/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/api/ChallengeAnalyticsApiDelegate.java +++ b/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/api/ChallengeAnalyticsApiDelegate.java @@ -34,7 +34,7 @@ default ResponseEntity getChallengesPerYear() { for (MediaType mediaType : MediaType.parseMediaTypes(request.getHeader("Accept"))) { if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) { String exampleString = - "{ \"undatedChallengeCounts\" : 0, \"challengeCounts\" : [ 0, 0 ], \"years\" : [ \"years\", \"years\" ] }"; + "{ \"undatedChallengeCount\" : 0, \"challengeCounts\" : [ 0, 0 ], \"years\" : [ \"years\", \"years\" ] }"; ApiUtil.setExampleResponse(request, "application/json", exampleString); break; } diff --git a/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/model/dto/ChallengesPerYearDto.java b/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/model/dto/ChallengesPerYearDto.java index 6dd0df0744..afa5df39bf 100644 --- a/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/model/dto/ChallengesPerYearDto.java +++ b/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/model/dto/ChallengesPerYearDto.java @@ -26,8 +26,8 @@ public class ChallengesPerYearDto { @Valid private List challengeCounts = new ArrayList<>(); - @JsonProperty("undatedChallengeCounts") - private Integer undatedChallengeCounts = 0; + @JsonProperty("undatedChallengeCount") + private Integer undatedChallengeCount = 0; public ChallengesPerYearDto years(List years) { this.years = years; @@ -85,24 +85,24 @@ public void setChallengeCounts(List challengeCounts) { this.challengeCounts = challengeCounts; } - public ChallengesPerYearDto undatedChallengeCounts(Integer undatedChallengeCounts) { - this.undatedChallengeCounts = undatedChallengeCounts; + public ChallengesPerYearDto undatedChallengeCount(Integer undatedChallengeCount) { + this.undatedChallengeCount = undatedChallengeCount; return this; } /** - * Get undatedChallengeCounts + * Get undatedChallengeCount * - * @return undatedChallengeCounts + * @return undatedChallengeCount */ @NotNull - @Schema(name = "undatedChallengeCounts", example = "0", required = true) - public Integer getUndatedChallengeCounts() { - return undatedChallengeCounts; + @Schema(name = "undatedChallengeCount", example = "0", required = true) + public Integer getUndatedChallengeCount() { + return undatedChallengeCount; } - public void setUndatedChallengeCounts(Integer undatedChallengeCounts) { - this.undatedChallengeCounts = undatedChallengeCounts; + public void setUndatedChallengeCount(Integer undatedChallengeCount) { + this.undatedChallengeCount = undatedChallengeCount; } @Override @@ -116,12 +116,12 @@ public boolean equals(Object o) { ChallengesPerYearDto challengesPerYear = (ChallengesPerYearDto) o; return Objects.equals(this.years, challengesPerYear.years) && Objects.equals(this.challengeCounts, challengesPerYear.challengeCounts) - && Objects.equals(this.undatedChallengeCounts, challengesPerYear.undatedChallengeCounts); + && Objects.equals(this.undatedChallengeCount, challengesPerYear.undatedChallengeCount); } @Override public int hashCode() { - return Objects.hash(years, challengeCounts, undatedChallengeCounts); + return Objects.hash(years, challengeCounts, undatedChallengeCount); } @Override @@ -130,8 +130,8 @@ public String toString() { sb.append("class ChallengesPerYearDto {\n"); sb.append(" years: ").append(toIndentedString(years)).append("\n"); sb.append(" challengeCounts: ").append(toIndentedString(challengeCounts)).append("\n"); - sb.append(" undatedChallengeCounts: ") - .append(toIndentedString(undatedChallengeCounts)) + sb.append(" undatedChallengeCount: ") + .append(toIndentedString(undatedChallengeCount)) .append("\n"); sb.append("}"); return sb.toString(); diff --git a/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/service/ChallengeAnalyticsService.java b/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/service/ChallengeAnalyticsService.java index f024ffd389..655793c62c 100644 --- a/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/service/ChallengeAnalyticsService.java +++ b/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/service/ChallengeAnalyticsService.java @@ -17,12 +17,12 @@ public ChallengesPerYearDto getChallengesPerYear() { "2018", "2019", "2020", "2021", "2022", "2023"); List challengeCounts = Arrays.asList(5, 8, 12, 16, 21, 27, 31, 38, 45, 54, 80, 91, 110, 129, 177, 203, 226); - Integer undatedChallengeCounts = 50; + Integer undatedChallengeCount = 50; return ChallengesPerYearDto.builder() .years(years) .challengeCounts(challengeCounts) - .undatedChallengeCounts(undatedChallengeCounts) + .undatedChallengeCount(undatedChallengeCount) .build(); } } diff --git a/apps/openchallenges/challenge-service/src/main/resources/openapi.yaml b/apps/openchallenges/challenge-service/src/main/resources/openapi.yaml index d92dffdc86..c0094e312d 100644 --- a/apps/openchallenges/challenge-service/src/main/resources/openapi.yaml +++ b/apps/openchallenges/challenge-service/src/main/resources/openapi.yaml @@ -876,7 +876,7 @@ components: ChallengesPerYear: description: An object example: - undatedChallengeCounts: 0 + undatedChallengeCount: 0 challengeCounts: - 0 - 0 @@ -892,13 +892,13 @@ components: items: type: integer type: array - undatedChallengeCounts: + undatedChallengeCount: default: 0 example: 0 type: integer required: - challengeCounts - - undatedChallengeCounts + - undatedChallengeCount - years type: object x-java-class-annotations: diff --git a/libs/openchallenges/api-client-angular/src/lib/model/challengesPerYear.ts b/libs/openchallenges/api-client-angular/src/lib/model/challengesPerYear.ts index 03f801298d..c6e49a6d1d 100644 --- a/libs/openchallenges/api-client-angular/src/lib/model/challengesPerYear.ts +++ b/libs/openchallenges/api-client-angular/src/lib/model/challengesPerYear.ts @@ -17,6 +17,6 @@ export interface ChallengesPerYear { years: Array; challengeCounts: Array; - undatedChallengeCounts: number; + undatedChallengeCount: number; } diff --git a/libs/openchallenges/api-description/build/challenge.openapi.yaml b/libs/openchallenges/api-description/build/challenge.openapi.yaml index e150ccb7a3..099db5e8d5 100644 --- a/libs/openchallenges/api-description/build/challenge.openapi.yaml +++ b/libs/openchallenges/api-description/build/challenge.openapi.yaml @@ -614,14 +614,14 @@ components: type: array items: type: integer - undatedChallengeCounts: + undatedChallengeCount: type: integer default: 0 example: 0 required: - years - challengeCounts - - undatedChallengeCounts + - undatedChallengeCount x-java-class-annotations: - '@lombok.Builder' ChallengeInputDataTypeSort: diff --git a/libs/openchallenges/api-description/build/openapi.yaml b/libs/openchallenges/api-description/build/openapi.yaml index ea3f59137b..367758086b 100644 --- a/libs/openchallenges/api-description/build/openapi.yaml +++ b/libs/openchallenges/api-description/build/openapi.yaml @@ -768,14 +768,14 @@ components: type: array items: type: integer - undatedChallengeCounts: + undatedChallengeCount: type: integer default: 0 example: 0 required: - years - challengeCounts - - undatedChallengeCounts + - undatedChallengeCount x-java-class-annotations: - '@lombok.Builder' ChallengeInputDataTypeSort: diff --git a/libs/openchallenges/api-description/src/components/schemas/ChallengesPerYear.yaml b/libs/openchallenges/api-description/src/components/schemas/ChallengesPerYear.yaml index daf6808e07..416aeb9c80 100644 --- a/libs/openchallenges/api-description/src/components/schemas/ChallengesPerYear.yaml +++ b/libs/openchallenges/api-description/src/components/schemas/ChallengesPerYear.yaml @@ -9,13 +9,13 @@ properties: type: array items: type: integer - undatedChallengeCounts: + undatedChallengeCount: type: integer default: 0 example: 0 required: - years - challengeCounts - - undatedChallengeCounts + - undatedChallengeCount x-java-class-annotations: - '@lombok.Builder' diff --git a/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts b/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts index 0a2637d6a4..49a45b1faa 100644 --- a/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts +++ b/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts @@ -27,8 +27,6 @@ export class StatisticsViewerComponent implements OnInit, OnDestroy { chartOptions!: EChartsOption; - undatedChallengeCounts = 0; - ngOnInit() { // update plot's data this.chartDataSubscription = this.homeDataService @@ -82,24 +80,23 @@ export class StatisticsViewerComponent implements OnInit, OnDestroy { animationDelay: (dataIndex: number) => dataIndex * 100, }, ], - graphic: - res.undatedChallengeCounts > 0 - ? { - elements: [ - { - type: 'text', - style: { - text: - `*An additional ${res.undatedChallengeCounts} challenges ` + - `without start dates are not displayed in the plot`, - fill: '#888', - }, - left: 'center', - bottom: 5, + graphic: res.undatedChallengeCount + ? { + elements: [ + { + type: 'text', + style: { + text: + `*An additional ${res.undatedChallengeCount} challenges ` + + `without start dates are not displayed in the plot`, + fill: '#888', }, - ], - } - : undefined, + left: 'center', + bottom: 5, + }, + ], + } + : undefined, }) ); } From 99c23aeceff0091ac212e171aa649b62dcb2e374 Mon Sep 17 00:00:00 2001 From: Rongrong Chai Date: Tue, 14 Nov 2023 16:54:57 +0000 Subject: [PATCH 06/12] set min value --- .../service/model/dto/ChallengesPerYearDto.java | 3 ++- .../challenge-service/src/main/resources/openapi.yaml | 1 + .../api-description/build/challenge.openapi.yaml | 1 + libs/openchallenges/api-description/build/openapi.yaml | 1 + .../src/components/schemas/ChallengesPerYear.yaml | 1 + .../src/lib/challenge-search.component.ts | 10 ++++++++-- 6 files changed, 14 insertions(+), 3 deletions(-) diff --git a/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/model/dto/ChallengesPerYearDto.java b/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/model/dto/ChallengesPerYearDto.java index afa5df39bf..bca5a8708f 100644 --- a/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/model/dto/ChallengesPerYearDto.java +++ b/apps/openchallenges/challenge-service/src/main/java/org/sagebionetworks/openchallenges/challenge/service/model/dto/ChallengesPerYearDto.java @@ -91,11 +91,12 @@ public ChallengesPerYearDto undatedChallengeCount(Integer undatedChallengeCount) } /** - * Get undatedChallengeCount + * Get undatedChallengeCount minimum: 0 * * @return undatedChallengeCount */ @NotNull + @Min(0) @Schema(name = "undatedChallengeCount", example = "0", required = true) public Integer getUndatedChallengeCount() { return undatedChallengeCount; diff --git a/apps/openchallenges/challenge-service/src/main/resources/openapi.yaml b/apps/openchallenges/challenge-service/src/main/resources/openapi.yaml index c0094e312d..2b617074c8 100644 --- a/apps/openchallenges/challenge-service/src/main/resources/openapi.yaml +++ b/apps/openchallenges/challenge-service/src/main/resources/openapi.yaml @@ -895,6 +895,7 @@ components: undatedChallengeCount: default: 0 example: 0 + minimum: 0 type: integer required: - challengeCounts diff --git a/libs/openchallenges/api-description/build/challenge.openapi.yaml b/libs/openchallenges/api-description/build/challenge.openapi.yaml index 099db5e8d5..9513b6e44d 100644 --- a/libs/openchallenges/api-description/build/challenge.openapi.yaml +++ b/libs/openchallenges/api-description/build/challenge.openapi.yaml @@ -617,6 +617,7 @@ components: undatedChallengeCount: type: integer default: 0 + minimum: 0 example: 0 required: - years diff --git a/libs/openchallenges/api-description/build/openapi.yaml b/libs/openchallenges/api-description/build/openapi.yaml index 367758086b..664a983309 100644 --- a/libs/openchallenges/api-description/build/openapi.yaml +++ b/libs/openchallenges/api-description/build/openapi.yaml @@ -771,6 +771,7 @@ components: undatedChallengeCount: type: integer default: 0 + minimum: 0 example: 0 required: - years diff --git a/libs/openchallenges/api-description/src/components/schemas/ChallengesPerYear.yaml b/libs/openchallenges/api-description/src/components/schemas/ChallengesPerYear.yaml index 416aeb9c80..de38992236 100644 --- a/libs/openchallenges/api-description/src/components/schemas/ChallengesPerYear.yaml +++ b/libs/openchallenges/api-description/src/components/schemas/ChallengesPerYear.yaml @@ -12,6 +12,7 @@ properties: undatedChallengeCount: type: integer default: 0 + minimum: 0 example: 0 required: - years diff --git a/libs/openchallenges/challenge-search/src/lib/challenge-search.component.ts b/libs/openchallenges/challenge-search/src/lib/challenge-search.component.ts index 21a02aba84..6938ceeb8c 100644 --- a/libs/openchallenges/challenge-search/src/lib/challenge-search.component.ts +++ b/libs/openchallenges/challenge-search/src/lib/challenge-search.component.ts @@ -231,8 +231,14 @@ export class ChallengeSearchComponent // update the total number of challenges in database with empty query this.challengeService - .listChallenges({}) - .subscribe((page) => (this.totalChallengesCount = page.totalElements)); + .listChallenges({ pageSize: 1000 }) + .subscribe((page) => { + this.totalChallengesCount = page.totalElements; + + const num = page.challenges.filter((c) => c.startDate !== null).length; + // const res = this.processData(page.challenges); + console.log(num); + }); // update platform filter values this.challengeSearchDataService From dcbf37648c180de59119a38be7b38f1816ec23f5 Mon Sep 17 00:00:00 2001 From: Rongrong Chai <73901500+rrchai@users.noreply.github.com> Date: Tue, 14 Nov 2023 13:02:23 -0500 Subject: [PATCH 07/12] Update libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts Co-authored-by: Thomas Schaffter --- .../src/lib/statistics-viewer/statistics-viewer.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts b/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts index 49a45b1faa..2a2c46ef45 100644 --- a/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts +++ b/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts @@ -88,7 +88,7 @@ export class StatisticsViewerComponent implements OnInit, OnDestroy { style: { text: `*An additional ${res.undatedChallengeCount} challenges ` + - `without start dates are not displayed in the plot`, + `without known start dates are not displayed.`, fill: '#888', }, left: 'center', From f0385e53bfe899bb08d1d566676b540b62da4246 Mon Sep 17 00:00:00 2001 From: Rongrong Chai Date: Tue, 14 Nov 2023 18:17:11 +0000 Subject: [PATCH 08/12] increase fontSize and adjust alignment --- .../src/lib/statistics-viewer/statistics-viewer.component.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts b/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts index 49a45b1faa..828d696241 100644 --- a/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts +++ b/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts @@ -26,6 +26,7 @@ export class StatisticsViewerComponent implements OnInit, OnDestroy { private chartDataSubscription: Subscription | undefined; chartOptions!: EChartsOption; + undatedChallengeCount = 0; ngOnInit() { // update plot's data @@ -90,8 +91,9 @@ export class StatisticsViewerComponent implements OnInit, OnDestroy { `*An additional ${res.undatedChallengeCount} challenges ` + `without start dates are not displayed in the plot`, fill: '#888', + fontSize: '1em', }, - left: 'center', + left: '25%', bottom: 5, }, ], From 9870d0d061be3785f8faaa5432fe6b477dd688f2 Mon Sep 17 00:00:00 2001 From: Rongrong Chai Date: Tue, 14 Nov 2023 18:19:39 +0000 Subject: [PATCH 09/12] remove unused code --- .../challenge-search/src/lib/challenge-search.component.ts | 5 ++--- .../src/lib/statistics-viewer/statistics-viewer.component.ts | 1 - 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/libs/openchallenges/challenge-search/src/lib/challenge-search.component.ts b/libs/openchallenges/challenge-search/src/lib/challenge-search.component.ts index 6938ceeb8c..998ec1eabd 100644 --- a/libs/openchallenges/challenge-search/src/lib/challenge-search.component.ts +++ b/libs/openchallenges/challenge-search/src/lib/challenge-search.component.ts @@ -235,9 +235,8 @@ export class ChallengeSearchComponent .subscribe((page) => { this.totalChallengesCount = page.totalElements; - const num = page.challenges.filter((c) => c.startDate !== null).length; - // const res = this.processData(page.challenges); - console.log(num); + // const num = page.challenges.filter((c) => c.startDate !== null).length; + // console.log(num); }); // update platform filter values diff --git a/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts b/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts index e9c497054f..3e9f5dbb94 100644 --- a/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts +++ b/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts @@ -26,7 +26,6 @@ export class StatisticsViewerComponent implements OnInit, OnDestroy { private chartDataSubscription: Subscription | undefined; chartOptions!: EChartsOption; - undatedChallengeCount = 0; ngOnInit() { // update plot's data From d6186ad4948fec0fe697d69c601a758a471613da Mon Sep 17 00:00:00 2001 From: Rongrong Chai Date: Tue, 14 Nov 2023 18:20:25 +0000 Subject: [PATCH 10/12] speed up query a bit --- .../challenge-search/src/lib/challenge-search.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/openchallenges/challenge-search/src/lib/challenge-search.component.ts b/libs/openchallenges/challenge-search/src/lib/challenge-search.component.ts index 998ec1eabd..6fd318d586 100644 --- a/libs/openchallenges/challenge-search/src/lib/challenge-search.component.ts +++ b/libs/openchallenges/challenge-search/src/lib/challenge-search.component.ts @@ -231,7 +231,7 @@ export class ChallengeSearchComponent // update the total number of challenges in database with empty query this.challengeService - .listChallenges({ pageSize: 1000 }) + .listChallenges({ pageSize: 1, pageNumber: 0 }) .subscribe((page) => { this.totalChallengesCount = page.totalElements; From fb098b2ce203aeecafdfc61922ba70a6a4780d8d Mon Sep 17 00:00:00 2001 From: Rongrong Chai <73901500+rrchai@users.noreply.github.com> Date: Thu, 16 Nov 2023 12:27:11 -0500 Subject: [PATCH 11/12] update text --- .../src/lib/statistics-viewer/statistics-viewer.component.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts b/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts index 3e9f5dbb94..68c8862206 100644 --- a/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts +++ b/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts @@ -87,8 +87,8 @@ export class StatisticsViewerComponent implements OnInit, OnDestroy { type: 'text', style: { text: - `*An additional ${res.undatedChallengeCount} challenges ` + - `without known start dates are not displayed.`, + `*The OC database includes additional ${res.undatedChallengeCount} challenges ` + + `without known start dates.`, fill: '#888', fontSize: '1em', }, From 84c979088afc0d373d51a9e52711112b9f7d0ef0 Mon Sep 17 00:00:00 2001 From: Rongrong Chai Date: Thu, 16 Nov 2023 17:30:51 +0000 Subject: [PATCH 12/12] correct gramma --- .../src/lib/statistics-viewer/statistics-viewer.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts b/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts index 68c8862206..e6f276fb38 100644 --- a/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts +++ b/libs/openchallenges/home/src/lib/statistics-viewer/statistics-viewer.component.ts @@ -87,7 +87,7 @@ export class StatisticsViewerComponent implements OnInit, OnDestroy { type: 'text', style: { text: - `*The OC database includes additional ${res.undatedChallengeCount} challenges ` + + `*The OC database includes an additional ${res.undatedChallengeCount} challenges ` + `without known start dates.`, fill: '#888', fontSize: '1em',