From aabcb3dc8c60beab90238c86d08b492103a2bd81 Mon Sep 17 00:00:00 2001 From: Florent Poittevin <florent.poittevin@unige.ch> Date: Wed, 9 Mar 2022 09:24:02 +0100 Subject: [PATCH] feat: display changelog into update dialog --- package-lock.json | 107 ++++++++++++++++++ package.json | 5 +- projects/solidify-frontend/package.json | 1 + .../update-version/update-version.dialog.html | 4 + .../update-version/update-version.dialog.scss | 50 ++++++++ .../update-version/update-version.dialog.ts | 13 +++ 6 files changed, 178 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8963ed56e..766366ae4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -81,6 +81,7 @@ "karma-jasmine": "4.0.1", "karma-jasmine-html-reporter": "1.7.0", "license-checker-rseidelsohn": "3.1.0", + "markdown-it": "12.3.2", "ng-packagr": "13.2.1", "patch-package": "6.4.7", "protractor": "7.0.0", @@ -13840,6 +13841,16 @@ "dev": true, "license": "MIT" }, + "node_modules/linkify-it": { + "version": "3.0.3", + "resolved": "https://nexus.unige.ch/repository/npm-all/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^1.0.1" + } + }, "node_modules/load-json-file": { "version": "4.0.0", "resolved": "https://nexus.unige.ch/repository/npm-all/load-json-file/-/load-json-file-4.0.0.tgz", @@ -14200,6 +14211,47 @@ "node": ">=0.10.0" } }, + "node_modules/markdown-it": { + "version": "12.3.2", + "resolved": "https://nexus.unige.ch/repository/npm-all/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://nexus.unige.ch/repository/npm-all/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "2.1.0", + "resolved": "https://nexus.unige.ch/repository/npm-all/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://nexus.unige.ch/repository/npm-all/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true, + "license": "MIT" + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://nexus.unige.ch/repository/npm-all/media-typer/-/media-typer-0.3.0.tgz", @@ -20755,6 +20807,13 @@ "node": "*" } }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://nexus.unige.ch/repository/npm-all/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true, + "license": "MIT" + }, "node_modules/uglify-js": { "version": "3.15.0", "resolved": "https://nexus.unige.ch/repository/npm-all/uglify-js/-/uglify-js-3.15.0.tgz", @@ -31526,6 +31585,15 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "linkify-it": { + "version": "3.0.3", + "resolved": "https://nexus.unige.ch/repository/npm-all/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, "load-json-file": { "version": "4.0.0", "resolved": "https://nexus.unige.ch/repository/npm-all/load-json-file/-/load-json-file-4.0.0.tgz", @@ -31784,6 +31852,39 @@ "object-visit": "^1.0.0" } }, + "markdown-it": { + "version": "12.3.2", + "resolved": "https://nexus.unige.ch/repository/npm-all/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "requires": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://nexus.unige.ch/repository/npm-all/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "entities": { + "version": "2.1.0", + "resolved": "https://nexus.unige.ch/repository/npm-all/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true + } + } + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://nexus.unige.ch/repository/npm-all/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, "media-typer": { "version": "0.3.0", "resolved": "https://nexus.unige.ch/repository/npm-all/media-typer/-/media-typer-0.3.0.tgz", @@ -36360,6 +36461,12 @@ "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", "dev": true }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://nexus.unige.ch/repository/npm-all/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, "uglify-js": { "version": "3.15.0", "resolved": "https://nexus.unige.ch/repository/npm-all/uglify-js/-/uglify-js-3.15.0.tgz", diff --git a/package.json b/package.json index 419bbc50e..15b05c888 100644 --- a/package.json +++ b/package.json @@ -82,8 +82,8 @@ "@angular/cli": "13.2.1", "@angular/compiler-cli": "13.2.1", "@angular/language-service": "13.2.1", - "@commitlint/cli": "16.1.0", - "@commitlint/config-conventional": "16.0.0", + "@commitlint/cli": "16.2.1", + "@commitlint/config-conventional": "16.2.1", "@schematics/angular": "13.2.1", "@types/jasmine": "3.10.3", "@types/jasminewd2": "2.0.10", @@ -108,6 +108,7 @@ "karma-jasmine": "4.0.1", "karma-jasmine-html-reporter": "1.7.0", "license-checker-rseidelsohn": "3.1.0", + "markdown-it": "12.3.2", "ng-packagr": "13.2.1", "patch-package": "6.4.7", "protractor": "7.0.0", diff --git a/projects/solidify-frontend/package.json b/projects/solidify-frontend/package.json index 61b512d5e..cefc5acb8 100644 --- a/projects/solidify-frontend/package.json +++ b/projects/solidify-frontend/package.json @@ -43,6 +43,7 @@ "core-js": "^3.21.0", "moment": "^2.29.1", "ng2-pdf-viewer": "7.0.2", + "markdown-it": "12.3.2", "@elastic/apm-rum-angular": "2.1.3", "docx-preview": "0.1.8", "ngx-highlightjs": "6.1.1", diff --git a/projects/solidify-frontend/src/lib/components/dialogs/update-version/update-version.dialog.html b/projects/solidify-frontend/src/lib/components/dialogs/update-version/update-version.dialog.html index b9810f41d..0d7e3c01a 100644 --- a/projects/solidify-frontend/src/lib/components/dialogs/update-version/update-version.dialog.html +++ b/projects/solidify-frontend/src/lib/components/dialogs/update-version/update-version.dialog.html @@ -1,5 +1,9 @@ <solidify-base-action-dialog [titleToTranslate]="labelTranslate.updateVersionDialogTitle | translate"> {{labelTranslate.updateVersionDialogBody | translate}} + <div *ngIf="changelogMarkdown" + class="changelog" + [innerHTML]="changelogMarkdown" + ></div> </solidify-base-action-dialog> <div mat-dialog-actions> <button [mat-dialog-close]="" diff --git a/projects/solidify-frontend/src/lib/components/dialogs/update-version/update-version.dialog.scss b/projects/solidify-frontend/src/lib/components/dialogs/update-version/update-version.dialog.scss index 71d86a79c..1e89c1324 100644 --- a/projects/solidify-frontend/src/lib/components/dialogs/update-version/update-version.dialog.scss +++ b/projects/solidify-frontend/src/lib/components/dialogs/update-version/update-version.dialog.scss @@ -1 +1,51 @@ @import "../../../scss/abstracts/abstracts"; + +:host { + .changelog { + white-space: break-spaces; + background: $extra-light-grey; + border-radius: 10px; + padding: 20px; + margin-top: 20px; + + ::ng-deep { + display: grid; + grid-gap: 10px; + + h1 { + margin: 0; + text-align: center; + text-transform: uppercase; + font-size: 18px; + } + + > p { + display: none; + } + + h2 { + margin: 0; + } + + h3 { + margin: 0; + } + + ul { + display: grid; + grid-gap: 4px; + + li { + list-style: circle; + margin-left: 15px; + } + } + } + } +} + +@include isInDarkMode { + .changelog { + background: $dark-mode-toolbar; + } +} diff --git a/projects/solidify-frontend/src/lib/components/dialogs/update-version/update-version.dialog.ts b/projects/solidify-frontend/src/lib/components/dialogs/update-version/update-version.dialog.ts index 457bf1f0a..3884ce245 100644 --- a/projects/solidify-frontend/src/lib/components/dialogs/update-version/update-version.dialog.ts +++ b/projects/solidify-frontend/src/lib/components/dialogs/update-version/update-version.dialog.ts @@ -21,6 +21,7 @@ * ----------------------------------------------------------------------------------------------%% */ +import {HttpClient} from "@angular/common/http"; import { ChangeDetectionStrategy, Component, @@ -30,6 +31,8 @@ import { MAT_DIALOG_DATA, MatDialogRef, } from "@angular/material/dialog"; +import md from "markdown-it"; +import {tap} from "rxjs/operators"; import {ButtonColorEnum} from "../../../enums/button-color.enum"; import {LABEL_TRANSLATE} from "../../../injection-tokens/label-to-translate.injection-token"; import {LabelTranslateInterface} from "../../../models/label-translate.model"; @@ -44,12 +47,22 @@ import {AbstractDialog} from "../abstract/abstract.dialog"; changeDetection: ChangeDetectionStrategy.OnPush, }) export class UpdateVersionDialog extends AbstractDialog<UpdateVersionDialogData, void> { + changelogMarkdown: any; + constructor(protected readonly _dialogRef: MatDialogRef<UpdateVersionDialog>, private readonly _appStatusService: AppStatusService, + private readonly _httpClient: HttpClient, @Inject(LABEL_TRANSLATE) readonly labelTranslate: LabelTranslateInterface, @Inject(MAT_DIALOG_DATA) readonly data: UpdateVersionDialogData, ) { super(_dialogRef, data); + + this.subscribe(this._httpClient.get("RELEASE_NOTES.md", {responseType: "text"}).pipe( + tap(changelog => { + const markdownIt = md(); + this.changelogMarkdown = markdownIt.render(changelog); + }), + )); } update(): void { -- GitLab