diff --git a/.gitignore b/.gitignore index 54bfd20..8f746f0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # See http://help.github.com/ignore-files/ for more about ignoring files. # compiled output +/semantic /dist /tmp /out-tsc diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 16d8349..3fa81f4 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -3,29 +3,42 @@ import {Subscription} from "rxjs/Subscription"; import {TimerObservable} from "rxjs/observable/TimerObservable"; import {KanbanService} from "./kanban/shared/kanban.service"; +import {Router} from "@angular/router"; + +const TIMER_JIRA_REFRESH = 60000; +const TIMER_PAGE_SWITCH = 300000; -const RENEW_TIMER_INITIAL = 300000; -const RENEW_TIMER_PERIOD = 300000; @Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrls: ['./app.component.css'] + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.css'] }) -export class AppComponent implements OnInit, OnDestroy{ - title = 'app'; - authRenewTimer: Subscription; +export class AppComponent implements OnInit, OnDestroy { - constructor( private kanbanService: KanbanService ) {} + reloadJiraIssueTimer: Subscription; + pageSwitchTimer: Subscription; - public ngOnInit() { - let timer = TimerObservable.create(RENEW_TIMER_INITIAL, RENEW_TIMER_PERIOD); - this.authRenewTimer = timer.subscribe(() => { - this.kanbanService.reload(); - }); - } + constructor( + private kanbanService: KanbanService, + private router: Router + ) {} - public ngOnDestroy() { - this.authRenewTimer.unsubscribe(); - } + public ngOnInit() { + let timer1 = TimerObservable.create(TIMER_JIRA_REFRESH, TIMER_JIRA_REFRESH); + this.reloadJiraIssueTimer = timer1.subscribe(() => { + this.kanbanService.reload(); + }); + let timer2 = TimerObservable.create(TIMER_PAGE_SWITCH, TIMER_PAGE_SWITCH); + this.pageSwitchTimer = timer2.subscribe(() => { + // navigate to next page + // this.router.navigate(); + console.log("pageSwitch"); + }); + } + + public ngOnDestroy() { + this.reloadJiraIssueTimer.unsubscribe(); + this.pageSwitchTimer.unsubscribe(); + } } diff --git a/src/app/kanban/kanban-board/kanban-board.component.html b/src/app/kanban/kanban-board/kanban-board.component.html index 8e4a084..d0d8679 100644 --- a/src/app/kanban/kanban-board/kanban-board.component.html +++ b/src/app/kanban/kanban-board/kanban-board.component.html @@ -1,12 +1,12 @@
+ rowHeading="INBOX" [kanbanEntries]="kanbanBoard.inbox">
+ rowHeading="INPROGRESS" [kanbanEntries]="kanbanBoard.inProgress">
+ rowHeading="VERIFICATION" [kanbanEntries]="kanbanBoard.verification">
+ rowHeading="DÖNER" [kanbanEntries]="kanbanBoard.done"> diff --git a/src/app/kanban/kanban-entry-card/kanban-entry-card.component.css b/src/app/kanban/kanban-entry-card/kanban-entry-card.component.css deleted file mode 100644 index e69de29..0000000 diff --git a/src/app/kanban/kanban-entry-card/kanban-entry-card.component.html b/src/app/kanban/kanban-entry-card/kanban-entry-card.component.html deleted file mode 100644 index 28c3131..0000000 --- a/src/app/kanban/kanban-entry-card/kanban-entry-card.component.html +++ /dev/null @@ -1,17 +0,0 @@ -
-
- -
-
- {{kanbanEntry.assignee?.name}} -
- {{kanbanEntry.summary}} -
-
-
- - - 22 Friends - -
-
diff --git a/src/app/kanban/kanban-entry-card/kanban-entry-card.component.spec.ts b/src/app/kanban/kanban-entry-card/kanban-entry-card.component.spec.ts deleted file mode 100644 index 56393fe..0000000 --- a/src/app/kanban/kanban-entry-card/kanban-entry-card.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { KanbanEntryCardComponent } from './kanban-entry-card.component'; - -describe('KanbanEntryCardComponent', () => { - let component: KanbanEntryCardComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ KanbanEntryCardComponent ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(KanbanEntryCardComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should be created', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src/app/kanban/kanban-entry-card/kanban-entry-card.component.ts b/src/app/kanban/kanban-entry-card/kanban-entry-card.component.ts deleted file mode 100644 index 5fb7b85..0000000 --- a/src/app/kanban/kanban-entry-card/kanban-entry-card.component.ts +++ /dev/null @@ -1,25 +0,0 @@ -import {Component, Input, OnInit} from '@angular/core'; - -import {environment} from "../../../environments/environment"; -import {KanbanEntry} from "../shared/kanban-entry.model"; - -@Component({ - selector: 'app-kanban-entry-card', - templateUrl: './kanban-entry-card.component.html', - styleUrls: ['./kanban-entry-card.component.css'] -}) -export class KanbanEntryCardComponent implements OnInit { - @Input() kanbanEntries: Array; - - constructor() {} - - ngOnInit() {} - - public avatarUrl(avatar: string): string { - try { - return environment.apiUri + avatar; - } catch (e) { - return ""; - } - } -} diff --git a/src/app/kanban/kanban-entry-item/kanban-entry-item.component.html b/src/app/kanban/kanban-entry-item/kanban-entry-item.component.html index af29494..77f5784 100644 --- a/src/app/kanban/kanban-entry-item/kanban-entry-item.component.html +++ b/src/app/kanban/kanban-entry-item/kanban-entry-item.component.html @@ -1,3 +1,4 @@ +

{{rowHeading}}

@@ -5,7 +6,7 @@
- +
diff --git a/src/app/kanban/kanban-entry-item/kanban-entry-item.component.ts b/src/app/kanban/kanban-entry-item/kanban-entry-item.component.ts index f7e2d92..d31f29b 100644 --- a/src/app/kanban/kanban-entry-item/kanban-entry-item.component.ts +++ b/src/app/kanban/kanban-entry-item/kanban-entry-item.component.ts @@ -12,6 +12,7 @@ const DEFAULT_AVATAR = '/assets/riddler.png'; }) export class KanbanEntryItemComponent implements OnInit { @Input() kanbanEntries: Array; + @Input() rowHeading: string = ""; constructor() {} diff --git a/src/app/kanban/kanban.module.ts b/src/app/kanban/kanban.module.ts index ef793cb..8bc89b0 100644 --- a/src/app/kanban/kanban.module.ts +++ b/src/app/kanban/kanban.module.ts @@ -6,8 +6,8 @@ import { KanbanBoardComponent } from './kanban-board/kanban-board.component'; import { KanbanService } from './shared/kanban.service'; import { KanbanEntryItemComponent } from './kanban-entry-item/kanban-entry-item.component'; -import { KanbanEntryCardComponent } from './kanban-entry-card/kanban-entry-card.component'; import { PriorityColorPipe } from './shared/priority-color.pipe'; +import { ShortenTextPipe } from './shared/shorten-text.pipe'; @NgModule({ imports: [ @@ -17,8 +17,8 @@ import { PriorityColorPipe } from './shared/priority-color.pipe'; declarations: [ KanbanBoardComponent, KanbanEntryItemComponent, - KanbanEntryCardComponent, PriorityColorPipe, + ShortenTextPipe, ], providers: [ KanbanService, diff --git a/src/app/kanban/shared/kanban-entry.model.ts b/src/app/kanban/shared/kanban-entry.model.ts index d0c0039..c229647 100644 --- a/src/app/kanban/shared/kanban-entry.model.ts +++ b/src/app/kanban/shared/kanban-entry.model.ts @@ -9,6 +9,8 @@ export class KanbanEntry { public issueType: JiraIssueType; public status: JiraStatus; public assignee: JiraAssignee; + public issuePriority: string + public issuePriorityIcon: string; public prio: number; public functionalAreas: Array; public externalId: string; diff --git a/src/app/kanban/shared/priority-color.pipe.ts b/src/app/kanban/shared/priority-color.pipe.ts index 290504b..729dabe 100644 --- a/src/app/kanban/shared/priority-color.pipe.ts +++ b/src/app/kanban/shared/priority-color.pipe.ts @@ -5,7 +5,7 @@ import {Pipe, PipeTransform} from '@angular/core'; }) export class PriorityColorPipe implements PipeTransform { - transform(value: any, args?: any): any { + transform(value: any, prioIcon: string = ""): any { let mhrMatch = /(\[.*mhr\])/ig; value = value.replace(mhrMatch, (fullMatch: string, mhrMatched: string) => { return `${mhrMatched} `; @@ -26,7 +26,7 @@ export class PriorityColorPipe implements PipeTransform { value = value.replace(xlMatch, (fullMatch: string, mhrMatched: string) => { return `${mhrMatched} `; }); - return value; + return (prioIcon ? ` ` : "") + value; } } diff --git a/src/app/kanban/shared/shorten-text.pipe.spec.ts b/src/app/kanban/shared/shorten-text.pipe.spec.ts new file mode 100644 index 0000000..b3affd8 --- /dev/null +++ b/src/app/kanban/shared/shorten-text.pipe.spec.ts @@ -0,0 +1,8 @@ +import { ShortenTextPipe } from './shorten-text.pipe'; + +describe('ShortenTextPipe', () => { + it('create an instance', () => { + const pipe = new ShortenTextPipe(); + expect(pipe).toBeTruthy(); + }); +}); diff --git a/src/app/kanban/shared/shorten-text.pipe.ts b/src/app/kanban/shared/shorten-text.pipe.ts new file mode 100644 index 0000000..e36b585 --- /dev/null +++ b/src/app/kanban/shared/shorten-text.pipe.ts @@ -0,0 +1,14 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'shortenText' +}) +export class ShortenTextPipe implements PipeTransform { + + transform(value: string, length: number = 120): any { + return value.length > length + ? (value.substring(0,length) + '...') + : value; + } + +} diff --git a/src/styles.css b/src/styles.css index dcfc8f1..1489d98 100644 --- a/src/styles.css +++ b/src/styles.css @@ -1,10 +1,11 @@ /* You can add global styles to this file, and also import other style files */ body { background-color: #303030 !important; - color: #cccccc !important; + color: #eeeeee !important; margin-top: 1em !important; margin-bottom: 1em !important; overflow: hidden; + font-weight: bold !important; } .ui.fullwide-container { @@ -14,7 +15,7 @@ body { .match-mhr { text-justify: none; - color: red; + color: mediumpurple; } .match-s { @@ -29,7 +30,7 @@ body { .match-l { text-justify: none; - color: yellow; + color: #ffbf00; } .match-xl { @@ -40,3 +41,8 @@ body { .over-wip { background-color: rgba(194,59,34, 0.3); } + +.prio-icon { + display: inline-block; + vertical-align: middle; +}