TSK-403 refactor web application path

This commit is contained in:
Martin Rojas Miguel Angel 2018-03-23 11:01:46 +01:00 committed by Mustapha Zorgati
parent b2300339a8
commit 90b3371989
130 changed files with 369 additions and 328 deletions

View File

@ -9,19 +9,19 @@ cache:
directories:
- "$HOME/.m2"
- "workplace/node_modules"
- "admin/node_modules"
- "web/node_modules"
- "monitor/node_modules"
before_install:
- nvm install $NODE_VERSION
- npm install -g @angular/cli >/dev/null 2>&1
install:
- (cd workplace && npm install --no-progress && ng build --environment=prod --no-progress)
&& (cd admin && npm install --no-progress && npm run build:prod)
&& (cd web && npm install --no-progress && npm run build:prod)
&& (cd monitor && npm install --no-progress && ng build --environment=prod --no-progress)
&& mvn clean install -q -f lib/ -DskipTests=true -Dmaven.javadoc.skip=true -B
&& mvn clean install -q -f rest/ -DskipTests=true -Dmaven.javadoc.skip=true -B
script:
- (cd admin && npm run test-phantom)
- (cd web && npm run test-phantom)
&& mvn verify -f lib/
&& mvn verify -f rest/
&& lib/deployment/release.sh -ik -p lib/ -m "lib/taskana-core/ lib/taskana-spring/ lib/taskana-cdi/"

View File

@ -1,40 +0,0 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { MapValuesPipe } from '../../pipes/map-values.pipe';
import { SortComponent, Direction } from './sort.component';
describe('SortComponent', () => {
let component: SortComponent;
let fixture: ComponentFixture<SortComponent>;
let debugElement;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ SortComponent, MapValuesPipe ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(SortComponent);
component = fixture.componentInstance;
debugElement = fixture.debugElement.nativeElement;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
it('should change order when click on order ', () => {
expect(component.sort.sortDirection).toBe(Direction.ASC);
debugElement.querySelector('#sort-by-direction-desc').click();
expect(component.sort.sortDirection).toBe(Direction.DESC);
});
it('should change sort by when click on sort by ', () => {
expect(component.sort.sortBy).toBe('key');
debugElement.querySelector('#sort-by-name').click();
expect(component.sort.sortBy).toBe('name');
});
});

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 333.333 333.333"><defs><linearGradient id="b"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="a"><stop offset="0"/><stop offset="1" stop-opacity="0"/></linearGradient></defs><path d="M43.833 255.275c-20.93-33.066-38.055-61.759-38.055-63.763 0-5.608 17.891-32.476 21.625-32.476 3.905 0 79.417 118.13 79.417 124.238 0 5.927-17.542 32.12-21.511 32.12-2.18 0-17.224-21.805-41.476-60.119zm79.634 1.345C100.08 219.668 86.269 195.86 86.269 192.5c0-6.12 16.822-33.465 20.586-33.465 1.373 0 15.027 19.697 30.341 43.77l27.845 43.772 73.263-115.211C278.599 68 312.194 16.156 312.96 16.156c3.129 0 20.048 25.464 21.036 31.66.952 5.972-7.666 20.42-81.794 137.127-65.74 103.501-83.756 130.452-87.199 130.452-3.374 0-12.614-13.075-41.536-58.775zm29.963-79.472c-4.913-7.831-8.933-16.05-8.933-18.266 0-4.024 87.157-142.726 89.686-142.726 2.129 0 21.632 30.162 21.632 33.454 0 4.613-87.881 141.776-90.837 141.776-1.439 0-6.635-6.407-11.548-14.238z"/><text x="5.34" y="58.027" transform="scale(.7329 1.36446)" font-size="63.778" stroke-width="5.315"><tspan x="5.34" y="58.027">Taskana</tspan></text><flowRoot xml:space="preserve"><flowRegion><path d="M-64.918-13.229H514.35v435.45H-64.918z"/></flowRegion><flowPara/></flowRoot></svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

View File

0
admin/package-lock.json → web/package-lock.json generated Executable file → Normal file
View File

0
admin/package.json → web/package.json Executable file → Normal file
View File

View File

@ -1,21 +1,27 @@
import { async, ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing';
import { WorkbasketService } from '../../../services/workbasket.service';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { AngularSvgIconModule } from 'angular-svg-icon';
import { HttpClientModule } from '@angular/common/http';
import { HttpModule, JsonpModule } from '@angular/http';
import { Workbasket } from 'app/model/workbasket';
import { SpinnerComponent } from '../../../shared/spinner/spinner.component';
import { AlertService, AlertModel, AlertType } from '../../../services/alert.service';
import { GeneralMessageModalComponent } from '../../../shared/general-message-modal/general-message-modal.component';
import { Links } from '../../../model/links';
import { AngularSvgIconModule } from 'angular-svg-icon';
import { Observable } from 'rxjs/Observable';
import { Workbasket } from 'app/models/workbasket';
import { AlertModel, AlertType } from 'app/models/alert';
import { Links } from 'app/models/links';
import { WorkbasketAccessItems } from 'app/models/workbasket-access-items';
import { WorkbasketAccessItemsResource } from 'app/models/workbasket-access-items-resource';
import { ICONTYPES } from 'app/models/type';
import { AccessItemsComponent } from './access-items.component';
import { WorkbasketAccessItems } from '../../../model/workbasket-access-items';
import { WorkbasketAccessItemsResource } from '../../../model/workbasket-access-items-resource';
import { ICONTYPES } from '../../../model/type';
import { ErrorModalService } from '../../../services/error-modal.service';
import { SavingWorkbasketService, SavingInformation } from '../../../services/saving-workbaskets/saving-workbaskets.service';
import { SpinnerComponent } from 'app/shared/spinner/spinner.component';
import { GeneralMessageModalComponent } from 'app/shared/general-message-modal/general-message-modal.component';
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
import { SavingWorkbasketService, SavingInformation } from 'app/services/saving-workbaskets/saving-workbaskets.service';
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
import { AlertService } from 'app/services/alert/alert.service';
describe('AccessItemsComponent', () => {
let component: AccessItemsComponent;

View File

@ -1,16 +1,17 @@
import { Component, OnInit, Input, AfterViewInit, OnDestroy } from '@angular/core';
import { Subscription } from 'rxjs/Subscription';
import { Workbasket } from '../../../model/workbasket';
import { WorkbasketAccessItems } from '../../../model/workbasket-access-items';
import { Workbasket } from 'app/models/workbasket';
import { WorkbasketAccessItems } from 'app/models/workbasket-access-items';
import { WorkbasketAccessItemsResource } from 'app/models/workbasket-access-items-resource';
import { ErrorModel } from 'app/models/modal-error';
import { ACTION } from 'app/models/action';
import { AlertModel, AlertType } from 'app/models/alert';
import { WorkbasketService } from '../../../services/workbasket.service';
import { AlertService, AlertModel, AlertType } from '../../../services/alert.service';
import { WorkbasketAccessItemsResource } from '../../../model/workbasket-access-items-resource';
import { ErrorModalService } from '../../../services/error-modal.service';
import { ErrorModel } from '../../../model/modal-error';
import { SavingWorkbasketService, SavingInformation } from '../../../services/saving-workbaskets/saving-workbaskets.service';
import { ACTION } from '../../../model/action';
import { SavingWorkbasketService, SavingInformation } from 'app/services/saving-workbaskets/saving-workbaskets.service';
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
import { AlertService } from 'app/services/alert/alert.service';
declare var $: any;

View File

@ -1,28 +1,30 @@
import { Input } from '@angular/core';
import { Input, Component } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { Observable } from 'rxjs/Observable';
import { AngularSvgIconModule } from 'angular-svg-icon';
import { HttpClientModule } from '@angular/common/http';
import { HttpModule, JsonpModule } from '@angular/http';
import { DistributionTargetsComponent, Side } from './distribution-targets.component';
import { SpinnerComponent } from '../../../shared/spinner/spinner.component';
import { GeneralMessageModalComponent } from '../../../shared/general-message-modal/general-message-modal.component';
import { IconTypeComponent } from '../../../shared/type-icon/icon-type.component';
import { SelectWorkBasketPipe } from '../../../pipes/seleted-workbasket.pipe';
import { WorkbasketSummaryResource } from '../../../model/workbasket-summary-resource';
import { WorkbasketSummary } from '../../../model/workbasket-summary';
import { Links } from '../../../model/links';
import { Component } from '@angular/core';
import { WorkbasketService } from '../../../services/workbasket.service';
import { AlertService } from '../../../services/alert.service';
import { Observable } from 'rxjs/Observable';
import { Workbasket } from '../../../model/workbasket';
import { WorkbasketDistributionTargetsResource } from '../../../model/workbasket-distribution-targets-resource';
import { FilterModel } from '../../../shared/filter/filter.component';
import { WorkbasketSummaryResource } from 'app/models/workbasket-summary-resource';
import { WorkbasketSummary } from 'app/models/workbasket-summary';
import { ICONTYPES } from 'app/models/type';
import { Links } from 'app/models/links';
import { FilterModel } from 'app/models/filter';
import { Workbasket } from 'app/models/workbasket';
import { WorkbasketDistributionTargetsResource } from 'app/models/workbasket-distribution-targets-resource';
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
import { AlertService } from 'app/services/alert/alert.service';
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
import { SavingWorkbasketService, SavingInformation } from 'app/services/saving-workbaskets/saving-workbaskets.service';
import { DualListComponent } from './dual-list/dual-list.component';
import { ICONTYPES } from '../../../model/type';
import { ErrorModalService } from '../../../services/error-modal.service';
import { SavingWorkbasketService, SavingInformation } from '../../../services/saving-workbaskets/saving-workbaskets.service';
import { DistributionTargetsComponent, Side } from './distribution-targets.component';
import { SpinnerComponent } from 'app/shared/spinner/spinner.component';
import { GeneralMessageModalComponent } from 'app/shared/general-message-modal/general-message-modal.component';
import { IconTypeComponent } from 'app/shared/type-icon/icon-type.component';
import { SelectWorkBasketPipe } from 'app/pipes/selectedWorkbasket/seleted-workbasket.pipe';
const workbasketSummaryResource: WorkbasketSummaryResource = new WorkbasketSummaryResource({
'workbaskets': new Array<WorkbasketSummary>(

View File

@ -1,21 +1,19 @@
import { Component, OnInit, Input, OnDestroy } from '@angular/core';
import { Workbasket } from '../../../model/workbasket';
import { WorkbasketSummary } from '../../../model/workbasket-summary';
import { WorkbasketAccessItems } from '../../../model/workbasket-access-items';
import { FilterModel } from '../../../shared/filter/filter.component'
import { TREE_ACTIONS, KEYS, IActionMapping, ITreeOptions } from 'angular-tree-component';
import { WorkbasketService } from '../../../services/workbasket.service';
import { AlertService, AlertModel, AlertType } from '../../../services/alert.service';
import { Subscription } from 'rxjs/Subscription';
import { element } from 'protractor';
import { WorkbasketSummaryResource } from '../../../model/workbasket-summary-resource';
import { WorkbasketDistributionTargetsResource } from '../../../model/workbasket-distribution-targets-resource';
import { SavingWorkbasketService, SavingInformation } from '../../../services/saving-workbaskets/saving-workbaskets.service';
import { ErrorModalService } from '../../../services/error-modal.service';
import { ErrorModel } from '../../../model/modal-error';
import { ACTION } from '../../../model/action';
import { Workbasket } from 'app/models/workbasket';
import { WorkbasketSummary } from 'app/models/workbasket-summary';
import { WorkbasketAccessItems } from 'app/models/workbasket-access-items';
import { WorkbasketSummaryResource } from 'app/models/workbasket-summary-resource';
import { WorkbasketDistributionTargetsResource } from 'app/models/workbasket-distribution-targets-resource';
import { ErrorModel } from 'app/models/modal-error';
import { ACTION } from 'app/models/action';
import { AlertModel, AlertType } from 'app/models/alert';
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
import { AlertService } from 'app/services/alert/alert.service';
import { SavingWorkbasketService, SavingInformation } from 'app/services/saving-workbaskets/saving-workbaskets.service';
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
export enum Side {
LEFT,

View File

@ -1,5 +1,5 @@
.dual-list {
min-height: 300px;
min-height: 290px;
padding: 0px;
background-color: #f5f5f5;
border: 1px solid #e3e3e3;
@ -27,12 +27,12 @@
}
overflow-x: hidden;
overflow-y: scroll;
overflow-y: auto;
@media screen and (max-width: 991px){
max-height: 38vh;
max-height: 35vh;
}
max-height: 78vh;
max-height: 75vh;
}

View File

@ -1,6 +1,6 @@
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
import { WorkbasketSummary } from '../../../../model/workbasket-summary';
import { FilterModel } from '../../../../shared/filter/filter.component';
import { WorkbasketSummary } from 'app/models/workbasket-summary';
import { FilterModel } from 'app/models/filter';
import { filter } from 'rxjs/operators';
import { Side } from '../distribution-targets.component';

View File

@ -1,24 +1,27 @@
import { async, ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing';
import { WorkbasketService } from '../../../services/workbasket.service';
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
import { WorkbasketInformationComponent } from './workbasket-information.component';
import { FormsModule } from '@angular/forms';
import { AngularSvgIconModule } from 'angular-svg-icon';
import { HttpClientModule } from '@angular/common/http';
import { HttpModule, JsonpModule } from '@angular/http';
import { Workbasket } from 'app/model/workbasket';
import { IconTypeComponent } from '../../../shared/type-icon/icon-type.component';
import { SpinnerComponent } from '../../../shared/spinner/spinner.component';
import { GeneralMessageModalComponent } from '../../../shared/general-message-modal/general-message-modal.component';
import { MapValuesPipe } from '../../../pipes/map-values.pipe';
import { RemoveNoneTypePipe } from '../../../pipes/remove-none-type';
import { AlertService } from '../../../services/alert.service';
import { RouterTestingModule } from '@angular/router/testing';
import { Links } from '../../../model/links';
import { Observable } from 'rxjs/Observable';
import { ICONTYPES } from '../../../model/type';
import { ErrorModalService } from '../../../services/error-modal.service';
import { SavingWorkbasketService, SavingInformation } from '../../../services/saving-workbaskets/saving-workbaskets.service';
import { ACTION } from '../../../model/action';
import { Workbasket } from 'app/models/workbasket';
import { ICONTYPES } from 'app/models/type';
import { ACTION } from 'app/models/action';
import { Links } from 'app/models/links';
import { IconTypeComponent } from 'app/shared/type-icon/icon-type.component';
import { SpinnerComponent } from 'app/shared/spinner/spinner.component';
import { GeneralMessageModalComponent } from 'app/shared/general-message-modal/general-message-modal.component';
import { MapValuesPipe } from 'app/pipes/mapValues/map-values.pipe';
import { RemoveNoneTypePipe } from 'app/pipes/removeNoneType/remove-none-type.pipe';
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
import { SavingWorkbasketService, SavingInformation } from 'app/services/saving-workbaskets/saving-workbaskets.service';
import { AlertService } from 'app/services/alert/alert.service';
describe('InformationComponent', () => {
let component: WorkbasketInformationComponent;

View File

@ -1,17 +1,20 @@
import { Component, OnInit, Input, Output, OnDestroy } from '@angular/core';
import { Workbasket } from '../../../model/workbasket';
import { WorkbasketService } from '../../../services/workbasket.service';
import { IconTypeComponent } from '../../../shared/type-icon/icon-type.component';
import { Subscription } from 'rxjs/Subscription';
import { AlertService, AlertModel, AlertType } from '../../../services/alert.service';
import { ActivatedRoute, Params, Router, NavigationStart } from '@angular/router';
import { ICONTYPES } from '../../../model/type';
import { ErrorModalService } from '../../../services/error-modal.service';
import { ErrorModel } from '../../../model/modal-error';
import { DatePipe } from '@angular/common';
import { ActivatedRoute, Params, Router, NavigationStart } from '@angular/router';
import { Subscription } from 'rxjs/Subscription';
import { IconTypeComponent } from 'app/shared/type-icon/icon-type.component';
import { ICONTYPES } from 'app/models/type';
import { ErrorModel } from 'app/models/modal-error';
import { ACTION } from 'app/models/action';
import { Workbasket } from 'app/models/workbasket';
import { AlertService } from 'app/services/alert/alert.service';
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
import { FormGroup } from '@angular/forms';
import { ACTION } from '../../../model/action';
import { SavingWorkbasketService, SavingInformation } from '../../../services/saving-workbaskets/saving-workbaskets.service';
import { SavingWorkbasketService, SavingInformation } from 'app/services/saving-workbaskets/saving-workbaskets.service';
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
import { AlertModel, AlertType } from 'app/models/alert';
const dateFormat = 'yyyy-MM-ddTHH:mm:ss';
const dateLocale = 'en-US';

View File

@ -1,43 +1,42 @@
import { Component, Input } from '@angular/core';
import { async, ComponentFixture, TestBed, } from '@angular/core/testing';
import { WorkbasketDetailsComponent } from './workbasket-details.component';
import { NoAccessComponent } from '../noAccess/no-access.component';
import { WorkbasketInformationComponent } from './information/workbasket-information.component';
import { AccessItemsComponent } from './access-items/access-items.component';
import { DistributionTargetsComponent } from './distribution-targets/distribution-targets.component';
import { DualListComponent } from './distribution-targets//dual-list/dual-list.component';
import { Workbasket } from 'app/model/workbasket';
import { Observable } from 'rxjs/Observable';
import { SpinnerComponent } from '../../shared/spinner/spinner.component';
import { IconTypeComponent } from '../../shared/type-icon/icon-type.component';
import { MapValuesPipe } from '../../pipes/map-values.pipe';
import { RemoveNoneTypePipe } from '../../pipes/remove-none-type';
import { SelectWorkBasketPipe } from '../../pipes/seleted-workbasket.pipe';
import { AlertComponent } from '../../shared/alert/alert.component';
import { GeneralMessageModalComponent } from '../../shared/general-message-modal/general-message-modal.component';
import { Links } from 'app/model/links';
import { WorkbasketAccessItems } from '../../model/workbasket-access-items';
import { WorkbasketService } from '../../services/workbasket.service';
import { MasterAndDetailService } from '../../services/master-and-detail.service';
import { PermissionService } from '../../services/permission.service';
import { AlertService } from '../../services/alert.service';
import { ErrorModalService } from '../../services/error-modal.service';
import { SavingWorkbasketService } from '../../services/saving-workbaskets/saving-workbaskets.service';
import { RouterTestingModule } from '@angular/router/testing';
import { Router, Routes } from '@angular/router';
import { FormsModule } from '@angular/forms';
import { AngularSvgIconModule } from 'angular-svg-icon';
import { HttpClientModule } from '@angular/common/http';
import { HttpModule } from '@angular/http';
import { WorkbasketSummary } from '../../model/workbasket-summary';
import { WorkbasketSummaryResource } from '../../model/workbasket-summary-resource';
import { WorkbasketAccessItemsResource } from '../../model/workbasket-access-items-resource';
import { ICONTYPES } from '../../model/type';
import { Router, Routes } from '@angular/router';
import { ACTION } from '../../model/action';
import { Observable } from 'rxjs/Observable';
import { Workbasket } from 'app/models/workbasket';
import { WorkbasketSummary } from 'app/models/workbasket-summary';
import { WorkbasketSummaryResource } from 'app/models/workbasket-summary-resource';
import { ACTION } from 'app/models/action';
import { WorkbasketAccessItemsResource } from 'app/models/workbasket-access-items-resource';
import { ICONTYPES } from 'app/models/type';
import { Links } from 'app/models/links';
import { WorkbasketAccessItems } from 'app/models/workbasket-access-items';
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
import { MasterAndDetailService } from 'app/services/masterAndDetail/master-and-detail.service';
import { PermissionService } from 'app/services/permission/permission.service';
import { AlertService } from 'app/services/alert/alert.service';
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
import { SavingWorkbasketService } from 'app/services/saving-workbaskets/saving-workbaskets.service';
import { WorkbasketDetailsComponent } from './workbasket-details.component';
import { NoAccessComponent } from './noAccess/no-access.component';
import { WorkbasketInformationComponent } from './information/workbasket-information.component';
import { AccessItemsComponent } from './access-items/access-items.component';
import { DistributionTargetsComponent } from './distribution-targets/distribution-targets.component';
import { DualListComponent } from './distribution-targets//dual-list/dual-list.component';
import { SpinnerComponent } from 'app/shared/spinner/spinner.component';
import { IconTypeComponent } from 'app/shared/type-icon/icon-type.component';
import { AlertComponent } from 'app/shared/alert/alert.component';
import { GeneralMessageModalComponent } from 'app/shared/general-message-modal/general-message-modal.component';
import { MapValuesPipe } from 'app/pipes/mapValues/map-values.pipe';
import { RemoveNoneTypePipe } from 'app/pipes/removeNoneType/remove-none-type.pipe';
import { SelectWorkBasketPipe } from 'app/pipes/selectedWorkbasket/seleted-workbasket.pipe';
@Component({
selector: 'taskana-filter',

View File

@ -1,16 +1,19 @@
import { Component, OnInit, Input, Output, EventEmitter, OnDestroy } from '@angular/core';
import { Workbasket } from '../../model/workbasket';
import { WorkbasketService } from '../../services/workbasket.service'
import { MasterAndDetailService } from '../../services/master-and-detail.service'
import { ActivatedRoute, Params, Router, NavigationStart } from '@angular/router';
import { PermissionService } from '../../services/permission.service';
import { Subscription } from 'rxjs/Subscription';
import { WorkbasketSummary } from '../../model/workbasket-summary';
import { WorkbasketSummaryResource } from '../../model/workbasket-summary-resource';
import { ICONTYPES } from '../../model/type';
import { ErrorModel } from '../../model/modal-error';
import { ErrorModalService } from '../../services/error-modal.service';
import { ACTION } from '../../model/action';
import { Workbasket } from 'app/models/workbasket';
import { WorkbasketSummary } from 'app/models/workbasket-summary';
import { WorkbasketSummaryResource } from 'app/models/workbasket-summary-resource';
import { ICONTYPES } from 'app/models/type';
import { ErrorModel } from 'app/models/modal-error';
import { ACTION } from 'app/models/action';
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
import { WorkbasketService } from 'app/services/workbasket/workbasket.service'
import { PermissionService } from 'app/services/permission/permission.service';
import { MasterAndDetailService } from 'app/services/masterAndDetail/master-and-detail.service'
@Component({
selector: 'taskana-workbasket-details',

View File

@ -1,23 +1,30 @@
import { Component } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { Observable } from 'rxjs/Observable';
import { Router, Routes } from '@angular/router';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { AngularSvgIconModule } from 'angular-svg-icon';
import { HttpModule } from '@angular/http';
import { HttpClientModule } from '@angular/common/http';
import { Router, Routes } from '@angular/router';
import { RouterTestingModule } from '@angular/router/testing';
import { ErrorModalService } from '../../../services/error-modal.service';
import { WorkbasketService } from '../../../services/workbasket.service';
import { RequestInProgressService } from '../../../services/request-in-progress.service';
import { AlertService } from '../../../services/alert.service';
import { SortComponent, SortingModel } from '../../../shared/sort/sort.component';
import { FilterComponent, FilterModel } from '../../../shared/filter/filter.component';
import { IconTypeComponent } from '../../../shared/type-icon/icon-type.component';
import { MapValuesPipe } from '../../../pipes/map-values.pipe';
import { WorkbasketSummary } from 'app/models/workbasket-summary';
import { Links } from 'app/models/links';
import { FilterModel } from 'app/models/filter';
import { SortingModel } from 'app/models/sorting';
import { SortComponent } from 'app/shared/sort/sort.component';
import { FilterComponent } from 'app/shared/filter/filter.component';
import { IconTypeComponent } from 'app/shared/type-icon/icon-type.component';
import { WorkbasketListToolbarComponent } from './workbasket-list-toolbar.component';
import { Component } from '@angular/core';
import { WorkbasketSummary } from '../../../model/workbasket-summary';
import { Links } from '../../../model/links';
import { Observable } from 'rxjs/Observable';
import { MapValuesPipe } from 'app/pipes/mapValues/map-values.pipe';
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
import { AlertService } from 'app/services/alert/alert.service';
@Component({
selector: 'taskana-dummy-detail',

View File

@ -1,14 +1,17 @@
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
import { SortingModel } from '../../../shared/sort/sort.component';
import { FilterModel } from '../../../shared/filter/filter.component';
import { WorkbasketService } from '../../../services/workbasket.service';
import { Subscription } from 'rxjs/Subscription';
import { WorkbasketSummary } from '../../../model/workbasket-summary';
import { Router, ActivatedRoute } from '@angular/router';
import { ErrorModel } from '../../../model/modal-error';
import { ErrorModalService } from '../../../services/error-modal.service';
import { RequestInProgressService } from '../../../services/request-in-progress.service';
import { AlertService, AlertModel, AlertType } from '../../../services/alert.service';
import { SortingModel } from 'app/models/sorting';
import { FilterModel } from 'app/models/filter';
import { Subscription } from 'rxjs/Subscription';
import { WorkbasketSummary } from 'app/models/workbasket-summary';
import { ErrorModel } from 'app/models/modal-error';
import { AlertModel, AlertType } from 'app/models/alert';
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
import { AlertService} from 'app/services/alert/alert.service';
@Component({
selector: 'taskana-workbasket-list-toolbar',

View File

@ -1,33 +1,39 @@
import { Component } from '@angular/core';
import { async, ComponentFixture, TestBed, tick, fakeAsync } from '@angular/core/testing';
import { WorkbasketListComponent } from './workbasket-list.component';
import { WorkbasketListToolbarComponent } from './workbasket-list-toolbar/workbasket-list-toolbar.component';
import { Observable } from 'rxjs/Observable';
import { AngularSvgIconModule } from 'angular-svg-icon';
import { HttpClientModule } from '@angular/common/http';
import { WorkbasketSummary } from '../../model/workbasket-summary';
import { WorkbasketService } from '../../services/workbasket.service';
import { HttpModule } from '@angular/http';
import { Router, Routes } from '@angular/router';
import { RouterTestingModule } from '@angular/router/testing';
import { Observable } from 'rxjs/Observable';
import { SpinnerComponent } from '../../shared/spinner/spinner.component';
import { FilterModel } from '../../shared/filter/filter.component';
import { SortComponent } from '../../shared/sort/sort.component';
import { IconTypeComponent } from '../../shared/type-icon/icon-type.component';
import { RemoveNoneTypePipe } from '../../pipes/remove-none-type';
import { MapValuesPipe } from '../../pipes/map-values.pipe';
import { WorkbasketSummaryResource } from '../../model/workbasket-summary-resource';
import { Links } from '../../model/links';
import { ErrorModalService } from '../../services/error-modal.service';
import { RequestInProgressService } from '../../services/request-in-progress.service';
import { AlertService } from '../../services/alert.service';
import { WorkbasketSummary } from 'app/models/workbasket-summary';
import { Links } from 'app/models/links';
import { WorkbasketSummaryResource } from 'app/models/workbasket-summary-resource';
import { FilterModel } from 'app/models/filter';
import { ErrorModalService } from 'app/services/errorModal/error-modal.service';
import { RequestInProgressService } from 'app/services/requestInProgress/request-in-progress.service';
import { AlertService } from 'app/services/alert/alert.service';
import { WorkbasketService } from 'app/services/workbasket/workbasket.service';
import { WorkbasketListComponent } from './workbasket-list.component';
import { WorkbasketListToolbarComponent } from './workbasket-list-toolbar/workbasket-list-toolbar.component';
import { IconTypeComponent } from 'app/shared/type-icon/icon-type.component';
import { SpinnerComponent } from 'app/shared/spinner/spinner.component';
import { SortComponent } from 'app/shared/sort/sort.component';
import { RemoveNoneTypePipe } from 'app/pipes/removeNoneType/remove-none-type.pipe';
import { MapValuesPipe } from 'app/pipes/mapValues/map-values.pipe';
@Component({
selector: 'taskana-dummy-detail',
template: 'dummydetail'
})
export class DummyDetailComponent {
}
@Component({
@ -58,6 +64,7 @@ describe('WorkbasketListComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [WorkbasketListComponent, DummyDetailComponent, SpinnerComponent, FilterComponent, WorkbasketListToolbarComponent,
RemoveNoneTypePipe, IconTypeComponent, SortComponent, MapValuesPipe],
imports: [

View File

@ -1,11 +1,13 @@
import { Component, OnInit, EventEmitter, OnDestroy, ChangeDetectorRef } from '@angular/core';
import { WorkbasketSummaryResource } from '../../model/workbasket-summary-resource';
import { WorkbasketSummary } from '../../model/workbasket-summary';
import { WorkbasketService } from '../../services/workbasket.service'
import { Subscription } from 'rxjs/Subscription';
import { FilterModel } from '../../shared/filter/filter.component'
import { Direction, SortingModel } from '../../shared/sort/sort.component'
import { Router, ActivatedRoute } from '@angular/router';
import { Subscription } from 'rxjs/Subscription';
import { WorkbasketSummaryResource } from 'app/models/workbasket-summary-resource';
import { WorkbasketSummary } from 'app/models/workbasket-summary';
import { FilterModel } from 'app/models/filter'
import { SortingModel } from 'app/models/sorting';
import { WorkbasketService } from 'app/services/workbasket/workbasket.service'
@Component({
selector: 'taskana-workbasket-list',

View File

@ -1,10 +1,10 @@
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { AppComponent } from './app.component';
import { WorkbasketListComponent } from './workbasket/list/workbasket-list.component';
import { WorkbasketDetailsComponent } from './workbasket/details/workbasket-details.component';
import { WorkbasketListComponent } from './administration/workbasket/master/list/workbasket-list.component';
import { WorkbasketDetailsComponent } from './administration/workbasket/details/workbasket-details.component';
import { MasterAndDetailComponent } from './shared/masterAndDetail/master-and-detail.component';
import { NoAccessComponent } from './workbasket/noAccess/no-access.component';
import { NoAccessComponent } from './administration/workbasket/details/noAccess/no-access.component';
const appRoutes: Routes = [
{

View File

@ -1,16 +1,18 @@
import { TestBed, async, inject, tick, fakeAsync } from '@angular/core/testing';
import { Router, Routes } from '@angular/router';
import { AppComponent } from './app.component';
import { AngularSvgIconModule } from 'angular-svg-icon';
import { RouterTestingModule } from '@angular/router/testing';
import { HttpClientModule } from '@angular/common/http';
import { Router, Routes } from '@angular/router';
import { ErrorModalService } from './services/errorModal/error-modal.service';
import { RequestInProgressService } from './services/requestInProgress/request-in-progress.service';
import { AlertService } from './services/alert/alert.service';
import { GeneralMessageModalComponent } from './shared/general-message-modal/general-message-modal.component'
import { SpinnerComponent } from './shared/spinner/spinner.component'
import { ErrorModalService } from './services/error-modal.service';
import { RequestInProgressService } from './services/request-in-progress.service';
import { AlertComponent } from './shared/alert/alert.component';
import { AlertService } from './services/alert.service';
describe('AppComponent', () => {

View File

@ -1,9 +1,11 @@
import { Component, OnInit } from '@angular/core';
import { environment } from '../environments/environment';
import { Router, NavigationStart } from '@angular/router';
import { ErrorModalService } from './services/error-modal.service';
import { ErrorModel } from './model/modal-error';
import { RequestInProgressService } from './services/request-in-progress.service';
import { ErrorModel } from './models/modal-error';
import { ErrorModalService } from './services/errorModal/error-modal.service';
import { RequestInProgressService } from './services/requestInProgress/request-in-progress.service';
@Component({
selector: 'taskana-root',

View File

@ -1,3 +1,4 @@
// tslint:disable:max-line-length
/**
* Modules
*/
@ -16,14 +17,14 @@ import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
* Components
*/
import { AppComponent } from './app.component';
import { WorkbasketListComponent } from './workbasket/list/workbasket-list.component';
import { WorkbasketListToolbarComponent } from './workbasket/list/workbasket-list-toolbar/workbasket-list-toolbar.component'
import { WorkbasketDetailsComponent } from './workbasket/details/workbasket-details.component';
import { WorkbasketInformationComponent } from './workbasket/details/information/workbasket-information.component';
import { DistributionTargetsComponent } from './workbasket/details/distribution-targets/distribution-targets.component';
import { DualListComponent } from './workbasket/details/distribution-targets/dual-list/dual-list.component';
import { AccessItemsComponent } from './workbasket/details/access-items/access-items.component';
import { NoAccessComponent } from './workbasket/noAccess/no-access.component';
import { WorkbasketListComponent } from './administration/workbasket/master/list/workbasket-list.component';
import { WorkbasketListToolbarComponent } from './administration/workbasket/master/list/workbasket-list-toolbar/workbasket-list-toolbar.component'
import { WorkbasketDetailsComponent } from './administration/workbasket/details/workbasket-details.component';
import { WorkbasketInformationComponent } from './administration/workbasket/details/information/workbasket-information.component';
import { DistributionTargetsComponent } from './administration/workbasket/details/distribution-targets/distribution-targets.component';
import { DualListComponent } from './administration/workbasket/details/distribution-targets/dual-list/dual-list.component';
import { AccessItemsComponent } from './administration/workbasket/details/access-items/access-items.component';
import { NoAccessComponent } from './administration/workbasket/details/noAccess/no-access.component';
import { SpinnerComponent } from './shared/spinner/spinner.component';
import { FilterComponent } from './shared/filter/filter.component';
import { IconTypeComponent } from './shared/type-icon/icon-type.component';
@ -37,14 +38,14 @@ import { MasterAndDetailComponent } from './shared/masterAndDetail/master-and-de
/**
* Services
*/
import { WorkbasketService } from './services/workbasket.service';
import { MasterAndDetailService } from './services/master-and-detail.service';
import { HttpClientInterceptor } from './services/http-client-interceptor.service';
import { PermissionService } from './services/permission.service';
import { WorkbasketService } from './services/workbasket/workbasket.service';
import { MasterAndDetailService } from './services/masterAndDetail/master-and-detail.service';
import { HttpClientInterceptor } from './services/httpClientInterceptor/http-client-interceptor.service';
import { PermissionService } from './services/permission/permission.service';
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { AlertService } from './services/alert.service';
import { ErrorModalService } from './services/error-modal.service';
import { RequestInProgressService } from './services/request-in-progress.service';
import { AlertService } from './services/alert/alert.service';
import { ErrorModalService } from './services/errorModal/error-modal.service';
import { RequestInProgressService } from './services/requestInProgress/request-in-progress.service';
import { SavingWorkbasketService } from './services/saving-workbaskets/saving-workbaskets.service';
@ -52,9 +53,9 @@ import { SavingWorkbasketService } from './services/saving-workbaskets/saving-wo
/**
* Pipes
*/
import { MapValuesPipe } from './pipes/map-values.pipe';
import { RemoveNoneTypePipe } from './pipes/remove-none-type';
import { SelectWorkBasketPipe } from './pipes/seleted-workbasket.pipe';
import { MapValuesPipe } from './pipes/mapValues/map-values.pipe';
import { RemoveNoneTypePipe } from './pipes/removeNoneType/remove-none-type.pipe';
import { SelectWorkBasketPipe } from './pipes/selectedWorkbasket/seleted-workbasket.pipe';
const MODULES = [
BrowserModule,
@ -111,3 +112,5 @@ const DECLARATIONS = [
bootstrap: [AppComponent]
})
export class AppModule { }
// tslint:enable:max-line-length

View File

@ -0,0 +1,15 @@
export enum AlertType {
SUCCESS = 'success',
INFO = 'info',
WARNING = 'warning',
DANGER = 'danger',
}
export class AlertModel {
constructor(public type: string = AlertType.SUCCESS,
public text: string = 'Success',
public autoClosing: boolean = true,
public closingDelay: number = 2500) {
}
}

View File

@ -0,0 +1,14 @@
export class FilterModel {
type: string;
name: string;
description: string;
owner: string;
key: string;
constructor(type: string = '', name: string = '', description: string = '', owner: string = '', key: string = '') {
this.type = type;
this.name = name;
this.description = description;
this.owner = owner;
this.key = key;
}
}

View File

@ -0,0 +1,14 @@
export enum Direction {
ASC = 'asc',
DESC = 'desc'
};
export class SortingModel {
sortBy: string;
sortDirection: string;
constructor(sortBy: string = 'key', sortDirection: Direction = Direction.ASC) {
this.sortBy = sortBy;
this.sortDirection = sortDirection;
}
}

View File

@ -1,23 +1,7 @@
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';
import { Observable } from 'rxjs/Observable';
export enum AlertType {
SUCCESS = 'success',
INFO = 'info',
WARNING = 'warning',
DANGER = 'danger',
}
export class AlertModel {
constructor(public type: string = AlertType.SUCCESS,
public text: string = 'Success',
public autoClosing: boolean = true,
public closingDelay: number = 2500) {
}
}
import { AlertModel } from 'app/models/alert';
@Injectable()
export class AlertService {

View File

@ -1,9 +1,7 @@
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';
import { Observable } from 'rxjs/Observable';
import { ErrorModel } from '../model/modal-error';
import { ErrorModel } from 'app/models/modal-error';
@Injectable()
export class ErrorModalService {

View File

@ -3,7 +3,7 @@ import { HttpClientModule } from '@angular/common/http';
import { HttpModule } from '@angular/http';
import { HttpClientInterceptor } from './http-client-interceptor.service';
import { PermissionService } from './permission.service';
import { PermissionService } from 'app/services/permission/permission.service';
describe('HttpExtensionService', () => {
beforeEach(() => {

View File

@ -4,7 +4,7 @@ import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/catch';
import 'rxjs/add/observable/throw';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { PermissionService } from './permission.service';
import { PermissionService } from 'app/services/permission/permission.service';
@Injectable()
export class HttpClientInterceptor implements HttpInterceptor {

View File

@ -3,7 +3,6 @@ import { Subject } from 'rxjs/Subject';
import { Observable } from 'rxjs/Observable';
export class SavingInformation {
constructor(public url: string,
public workbasketId: string) {
}

View File

@ -1,9 +1,9 @@
import { TestBed, inject, async } from '@angular/core/testing';
import { WorkbasketService } from './workbasket.service';
import { Direction } from '../shared/sort/sort.component';
import { HttpModule, Http } from '@angular/http';
import { HttpClientModule, HttpClient } from '@angular/common/http';
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
import { WorkbasketService } from './workbasket.service';
import { Direction } from 'app/models/sorting';
describe('WorkbasketService ', () => {

View File

@ -1,16 +1,17 @@
import { Injectable } from '@angular/core';
import { HttpClientModule, HttpClient, HttpHeaders, HttpResponse, HttpErrorResponse } from '@angular/common/http';
import { WorkbasketSummary } from '../model/workbasket-summary';
import { Workbasket } from '../model/workbasket';
import { WorkbasketAccessItems } from '../model/workbasket-access-items';
import { environment } from '../../environments/environment';
import { Direction } from '../shared/sort/sort.component';
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';
import { map } from 'rxjs/operator/map';
import { WorkbasketSummaryResource } from '../model/workbasket-summary-resource';
import { WorkbasketAccessItemsResource } from '../model/workbasket-access-items-resource';
import { WorkbasketDistributionTargetsResource } from '../model/workbasket-distribution-targets-resource';
import { environment } from 'app/../environments/environment';
import { WorkbasketSummary } from 'app//models/workbasket-summary';
import { Workbasket } from 'app/models/workbasket';
import { WorkbasketAccessItems } from 'app/models/workbasket-access-items';
import { WorkbasketSummaryResource } from 'app/models/workbasket-summary-resource';
import { WorkbasketAccessItemsResource } from 'app/models/workbasket-access-items-resource';
import { WorkbasketDistributionTargetsResource } from 'app/models/workbasket-distribution-targets-resource';
import { Direction } from 'app/models/sorting';
@Injectable()
export class WorkbasketService {
@ -163,7 +164,6 @@ export class WorkbasketService {
}
private handleError(error: Response | any) {
// In a real world app, you might use a remote logging infrastructure
let errMsg: string;
if (error instanceof Response) {
const body = error.json() || '';

View File

@ -1,6 +1,6 @@
.footer{
position: absolute;
position: fixed;
bottom: 0;
width: 100%;
margin-bottom: 0px;

View File

@ -1,7 +1,8 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { AlertService, AlertModel, AlertType } from '../../services/alert.service';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { AlertModel, AlertType } from 'app/models/alert';
import { AlertService } from 'app/services/alert/alert.service';
import { AlertComponent } from './alert.component';
describe('AlertComponent', () => {

View File

@ -1,20 +1,22 @@
import { Component, OnInit } from '@angular/core';
import { AlertService, AlertModel } from '../../services/alert.service';
import { trigger, state, style, animate, transition } from '@angular/animations';
import { AlertModel } from 'app/models/alert';
import { AlertService } from 'app/services/alert/alert.service';
@Component({
selector: 'taskana-alert',
templateUrl: './alert.component.html',
styleUrls: ['./alert.component.scss'],
animations: [
trigger('alertState', [
state('in', style({ transform: 'translateY(0)' })),
state('in', style({ transform: 'translateY(0)', overflow: 'hidden' })),
transition('void => *', [
style({ transform: 'translateY(100%)' }),
style({ transform: 'translateY(100%)', overflow: 'hidden' }),
animate(100)
]),
transition('* => void', [
animate(100, style({ transform: 'translateY(100%)' }))
animate(100, style({ transform: 'translateY(100%)', overflow: 'hidden' }))
])
])
]

View File

@ -3,9 +3,11 @@ import { FormsModule } from '@angular/forms';
import { AngularSvgIconModule } from 'angular-svg-icon';
import { HttpClientModule } from '@angular/common/http';
import { HttpModule } from '@angular/http';
import { FilterModel } from 'app/models/filter';
import { IconTypeComponent } from '../type-icon/icon-type.component';
import { FilterComponent, FilterModel } from './filter.component';
import { MapValuesPipe } from '../../pipes/map-values.pipe';
import { FilterComponent } from './filter.component';
import { MapValuesPipe } from 'app/pipes/mapValues/map-values.pipe';
describe('FilterComponent', () => {
let component: FilterComponent,

View File

@ -1,21 +1,7 @@
import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';
import { IconTypeComponent } from '../type-icon/icon-type.component'
import { ICONTYPES } from '../../model/type';
export class FilterModel {
type: string;
name: string;
description: string;
owner: string;
key: string;
constructor(type: string = '', name: string = '', description: string = '', owner: string = '', key: string = '') {
this.type = type;
this.name = name;
this.description = description;
this.owner = owner;
this.key = key;
}
}
import { ICONTYPES } from 'app/models/type';
import { FilterModel } from 'app/models/filter';
@Component({
selector: 'taskana-filter',

View File

@ -1,12 +1,12 @@
import { Location } from '@angular/common';
import { Component, OnInit, OnDestroy } from '@angular/core';
import { TestBed, async, inject, fakeAsync } from '@angular/core/testing';
import { MasterAndDetailComponent } from './master-and-detail.component';
import { RouterTestingModule } from '@angular/router/testing';
import { Router, Routes, ActivatedRoute, NavigationStart, RouterEvent } from '@angular/router';
import { AngularSvgIconModule } from 'angular-svg-icon';
import { HttpClientModule } from '@angular/common/http';
import { MasterAndDetailService } from '../../services/master-and-detail.service'
import { MasterAndDetailService } from '../../services/masterAndDetail/master-and-detail.service'
import { MasterAndDetailComponent } from './master-and-detail.component';
@Component({
@ -27,7 +27,7 @@ export class DummyDetailComponent {
describe('MasterAndDetailComponent ', () => {
let component, fixture, debugElement, location, router;
let component, fixture, debugElement, router;
const routes: Routes = [
{
@ -66,7 +66,6 @@ describe('MasterAndDetailComponent ', () => {
fixture = TestBed.createComponent(MasterAndDetailComponent);
component = fixture.debugElement.componentInstance;
debugElement = fixture.debugElement.nativeElement;
location = TestBed.get(Location);
router = TestBed.get(Router);
router.initialNavigation();

View File

@ -1,6 +1,6 @@
import { Component, OnInit, OnDestroy } from '@angular/core';
import { Router, Routes, ActivatedRoute, NavigationStart, RouterEvent } from '@angular/router';
import { MasterAndDetailService } from '../../services/master-and-detail.service'
import { MasterAndDetailService } from 'app/services/masterAndDetail/master-and-detail.service'
@Component({
selector: 'taskana-master-and-detail',

View File

@ -0,0 +1,41 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { MapValuesPipe } from 'app/pipes/mapValues/map-values.pipe';
import { SortComponent } from './sort.component';
import { Direction } from 'app/models/sorting';
describe('SortComponent', () => {
let component: SortComponent;
let fixture: ComponentFixture<SortComponent>;
let debugElement;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [SortComponent, MapValuesPipe]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(SortComponent);
component = fixture.componentInstance;
debugElement = fixture.debugElement.nativeElement;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
it('should change order when click on order ', () => {
expect(component.sort.sortDirection).toBe(Direction.ASC);
debugElement.querySelector('#sort-by-direction-desc').click();
expect(component.sort.sortDirection).toBe(Direction.DESC);
});
it('should change sort by when click on sort by ', () => {
expect(component.sort.sortBy).toBe('key');
debugElement.querySelector('#sort-by-name').click();
expect(component.sort.sortBy).toBe('name');
});
});

View File

@ -1,19 +1,5 @@
import { Component, OnInit, Output, EventEmitter } from '@angular/core';
export enum Direction {
ASC = 'asc',
DESC = 'desc'
};
export class SortingModel {
sortBy: string;
sortDirection: string;
constructor(sortBy: string = 'key', sortDirection: Direction = Direction.ASC) {
this.sortBy = sortBy;
this.sortDirection = sortDirection;
}
}
import { SortingModel, Direction } from 'app/models/sorting';
@Component({
selector: 'taskana-sort',

Some files were not shown because too many files have changed in this diff Show More