diff --git a/web/angular/src/app/TranslatedPaginatorConfiguration.ts b/web/angular/src/app/TranslatedPaginatorConfiguration.ts new file mode 100644 index 0000000..79f63f5 --- /dev/null +++ b/web/angular/src/app/TranslatedPaginatorConfiguration.ts @@ -0,0 +1,28 @@ +import {MatPaginatorIntl} from "@angular/material"; +import {TranslateService} from "@ngx-translate/core"; + +export function TranslatedPaginator(translate: TranslateService) { + + const paginatorIntl = new MatPaginatorIntl(); + + getTranslations(translate, paginatorIntl); + + translate.onLangChange.subscribe(() => { + getTranslations(translate, paginatorIntl) + }); + + return paginatorIntl; +} + +function getTranslations(tr: TranslateService, p: MatPaginatorIntl) { + + tr.get("logs.first_page_label").subscribe((t) => p.firstPageLabel = t); + tr.get("logs.last_page_label").subscribe((t) => p.lastPageLabel = t); + tr.get("logs.items_per_page").subscribe((t) => p.itemsPerPageLabel = t); + tr.get("logs.next_page").subscribe((t) => p.nextPageLabel = t); + tr.get("logs.prev_page").subscribe((t) => p.previousPageLabel = t); + tr.get("logs.of").subscribe((of) => + p.getRangeLabel = (page, pageSize, length) => `${page * pageSize + 1}-${Math.min(pageSize * (page + 1), length)} ${of} ${length}` + ); + +} diff --git a/web/angular/src/app/api.service.ts b/web/angular/src/app/api.service.ts index 4d60604..2e805e1 100755 --- a/web/angular/src/app/api.service.ts +++ b/web/angular/src/app/api.service.ts @@ -13,7 +13,7 @@ export class ApiService { } getLogs() { - return this.http.post(this.url + "/logs", "{\"level\":\"info\", \"since\":10000}"); + return this.http.post(this.url + "/logs", "{\"level\":6, \"since\":1}"); } getProjects() { diff --git a/web/angular/src/app/app.component.css b/web/angular/src/app/app.component.css index 37aa71c..1417e5b 100755 --- a/web/angular/src/app/app.component.css +++ b/web/angular/src/app/app.component.css @@ -1,3 +1,10 @@ .nav-spacer { flex: 1 1 auto; } + +.icon { + padding: 0 14px; +} + +.nav-link { +} diff --git a/web/angular/src/app/app.component.html b/web/angular/src/app/app.component.html index f8509a6..0b2ebdd 100755 --- a/web/angular/src/app/app.component.html +++ b/web/angular/src/app/app.component.html @@ -1,8 +1,9 @@ - {{ "nav.title" | translate }} + + + + - favorite - delete @@ -12,12 +13,6 @@ - diff --git a/web/angular/src/app/app.module.ts b/web/angular/src/app/app.module.ts index 9497248..fa6974e 100755 --- a/web/angular/src/app/app.module.ts +++ b/web/angular/src/app/app.module.ts @@ -17,6 +17,7 @@ import { MatIconModule, MatInputModule, MatMenuModule, + MatPaginatorIntl, MatPaginatorModule, MatSelectModule, MatSliderModule, @@ -36,8 +37,9 @@ import {CreateProjectComponent} from './create-project/create-project.component' import {FormsModule, ReactiveFormsModule} from "@angular/forms"; import {UpdateProjectComponent} from './update-project/update-project.component'; import {SnackBarComponent} from "./messenger/snack-bar.component"; -import {TranslateLoader, TranslateModule} from "@ngx-translate/core"; +import {TranslateLoader, TranslateModule, TranslateService} from "@ngx-translate/core"; import {TranslateHttpLoader} from "@ngx-translate/http-loader"; +import {TranslatedPaginator} from "./TranslatedPaginatorConfiguration"; export function createTranslateLoader(http: HttpClient) { @@ -95,6 +97,7 @@ export function createTranslateLoader(http: HttpClient) { providers: [ ApiService, MessengerService, + {provide: MatPaginatorIntl, useFactory: TranslatedPaginator, deps: [TranslateService]} ], entryComponents: [ SnackBarComponent, diff --git a/web/angular/src/app/logs/logs.component.html b/web/angular/src/app/logs/logs.component.html index 782e545..fe4994c 100644 --- a/web/angular/src/app/logs/logs.component.html +++ b/web/angular/src/app/logs/logs.component.html @@ -1,32 +1,40 @@ -
- - - - +
+
+ + + +
- - Level - {{entry.level}} - - - Time - {{entry.timestamp}} - - - Message - {{entry.message}} - - - Data - -
{{entry.data}}
-
-
+ - - - + + {{"logs.level" | translate}} + {{entry.level}} + + + {{"logs.time" | translate}} + {{entry.timestamp}} + + + {{"logs.message" | translate}} + {{entry.message}} + + + {{"logs.data" | translate}} + +
{{entry.data}}
+
+
- + + + + + +
+
diff --git a/web/angular/src/app/logs/logs.component.ts b/web/angular/src/app/logs/logs.component.ts index 5bd22c0..1d9f2f8 100644 --- a/web/angular/src/app/logs/logs.component.ts +++ b/web/angular/src/app/logs/logs.component.ts @@ -45,7 +45,7 @@ export class LogsComponent implements OnInit { message: entry.message, timestamp: moment.unix(entry.timestamp).toISOString(), data: JSON.stringify(JSON.parse(entry.data), null, 2), - level: entry.level.toUpperCase() + level: entry.level } }); } diff --git a/web/angular/src/assets/i18n/en.json b/web/angular/src/assets/i18n/en.json index 65bb994..86a1c61 100644 --- a/web/angular/src/assets/i18n/en.json +++ b/web/angular/src/assets/i18n/en.json @@ -1,6 +1,23 @@ { "nav": { "title": "task_tracker", - "langSelect": "Language" + "langSelect": "Language", + "logs": "Logs", + "project_list": "Projects", + "new_project": "New Project" + }, + "logs": { + "filter": "Filter", + "time": "Time", + "level": "Level", + "message": "Message", + "data": "Details", + "first_page_label": "First page", + "last_page_label": "Last page", + "of": "of", + "items_per_page": "Items per page", + "next_page": "Next page", + "prev_page": "Previous page" + } } diff --git a/web/angular/src/assets/i18n/fr.json b/web/angular/src/assets/i18n/fr.json index d5df126..8ae38ba 100644 --- a/web/angular/src/assets/i18n/fr.json +++ b/web/angular/src/assets/i18n/fr.json @@ -1,6 +1,23 @@ { "nav": { "title": "task_tracker (fr)", - "langSelect": "Langue" + "langSelect": "Langue", + "logs": "Journal", + "project_list": "Projets", + "new_project": "Nouveau projet" + }, + "logs": { + "filter": "Filtrer", + "time": "Date", + "level": "Niveau", + "message": "Message", + "data": "Details", + "first_page_label": "Première page", + "last_page_label": "Dernière page", + "of": "de", + "items_per_page": "Items par page", + "next_page": "Page suivante", + "prev_page": "Page précédante" } } + diff --git a/web/angular/src/styles.css b/web/angular/src/styles.css index 2246283..8d87d32 100644 --- a/web/angular/src/styles.css +++ b/web/angular/src/styles.css @@ -1,36 +1,51 @@ /* You can add global styles to this file, and also import other style files */ @import "~@angular/material/prebuilt-themes/indigo-pink.css"; -.line-new { - fill: none; - stroke: #31a6a2; - stroke-width: 3; +body { + margin: 0; } -.line-failed { - fill: none; - stroke: #8c2627; - stroke-width: 3; +.nav-title { + font-weight: bold; + font-size: 18px; } -.line-closed { - fill: none; - stroke: #62f24b; - stroke-width: 3; + +.container { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + margin-top: 15px; } -.overlay { - fill: none; - pointer-events: all; +@media (min-width: 576px) { + .container { + max-width: 540px; + } } -/* Style the dots by assigning a fill and stroke */ -.dot { - fill: #ffab00; - stroke: #fff; +@media (min-width: 768px) { + .container { + max-width: 720px; + } } -.focus circle { - fill: none; - stroke: steelblue; +@media (min-width: 992px) { + .container { + max-width: 960px; + } +} + +@media (min-width: 1200px) { + .container { + max-width: 1140px; + } +} + +@media (min-width: 1600px) { + .container { + max-width: 1440px; + } }