diff --git a/web/src/app/administration/classification/details/classification-details.component.html b/web/src/app/administration/classification/details/classification-details.component.html index 1f17dea8d..937888dce 100644 --- a/web/src/app/administration/classification/details/classification-details.component.html +++ b/web/src/app/administration/classification/details/classification-details.component.html @@ -17,7 +17,7 @@ -

{{classification.name}}  +

{{classification.name}}  [{{classification.type}}] {{badgeMessage}}

@@ -74,32 +74,25 @@
-
- - -
-
-
- - + +
-
+
+ + +
diff --git a/web/src/app/administration/classification/master/list/classification-list.component.html b/web/src/app/administration/classification/master/list/classification-list.component.html index b51b06d06..76cf6b769 100644 --- a/web/src/app/administration/classification/master/list/classification-list.component.html +++ b/web/src/app/administration/classification/master/list/classification-list.component.html @@ -11,10 +11,32 @@
-
+
+ + +
+
+
+
- + + +
+

There are no classifications

+ +
+
\ No newline at end of file diff --git a/web/src/app/administration/classification/master/list/classification-list.component.scss b/web/src/app/administration/classification/master/list/classification-list.component.scss index 6604bd281..6de39ee98 100644 --- a/web/src/app/administration/classification/master/list/classification-list.component.scss +++ b/web/src/app/administration/classification/master/list/classification-list.component.scss @@ -9,15 +9,33 @@ .tab-align{ margin-bottom: 0px; - border-bottom: 1px solid #ddd; + border-bottom: 1px dotted #ddd; &>div{ margin: 6px 0px; } } input.filter-input { + border: solid 1px grey; margin: 10px 2px; height: 32px; width: 100%; padding-left: 10px; } + +.category-filter { + margin: 7px 2px; +} + +.dropdown-menu-classification{ + margin-left: 15px; + min-width: 0px; +} + +.btn-classification-list { + border: 0px solid transparent; +} + +.container-no-items { + top: 20vh; +} diff --git a/web/src/app/administration/classification/master/list/classification-list.component.spec.ts b/web/src/app/administration/classification/master/list/classification-list.component.spec.ts index 51a65d7e6..d212eb80f 100644 --- a/web/src/app/administration/classification/master/list/classification-list.component.spec.ts +++ b/web/src/app/administration/classification/master/list/classification-list.component.spec.ts @@ -5,6 +5,8 @@ import { HttpClient, HttpClientModule } from '@angular/common/http'; import { Observable } from 'rxjs/Observable'; import { Routes } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; +import { AngularSvgIconModule } from 'angular-svg-icon'; +import { HttpModule } from '@angular/http'; import { TreeNodeModel } from 'app/models/tree-node'; @@ -12,6 +14,8 @@ import { ClassificationListComponent } from './classification-list.component'; import { ImportExportComponent } from 'app/administration/components/import-export/import-export.component'; import { SpinnerComponent } from 'app/shared/spinner/spinner.component'; import { ClassificationTypesSelectorComponent } from 'app/shared/classification-types-selector/classification-types-selector.component'; +import { IconTypeComponent } from 'app/administration/components/type-icon/icon-type.component'; +import { MapValuesPipe } from 'app/shared/pipes/mapValues/map-values.pipe'; import { WorkbasketService } from 'app/administration/services/workbasket/workbasket.service'; import { WorkbasketDefinitionService } from 'app/administration/services/workbasket-definition/workbasket-definition.service'; @@ -31,6 +35,7 @@ class TaskanaTreeComponent { @Input() treeNodes; @Input() selectNodeId; @Input() filterText; + @Input() filterIcon; } @Component({ @@ -57,8 +62,8 @@ describe('ClassificationListComponent', () => { beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [ClassificationListComponent, ImportExportComponent, SpinnerComponent, ClassificationTypesSelectorComponent, - TaskanaTreeComponent, DummyDetailComponent], - imports: [HttpClientModule, RouterTestingModule.withRoutes(routes), FormsModule], + TaskanaTreeComponent, DummyDetailComponent, IconTypeComponent, MapValuesPipe], + imports: [HttpClientModule, RouterTestingModule.withRoutes(routes), FormsModule, AngularSvgIconModule, HttpModule], providers: [ HttpClient, WorkbasketDefinitionService, AlertService, ClassificationsService, DomainService, ClassificationDefinitionService, ErrorModalService, ClassificationTypesService, RequestInProgressService diff --git a/web/src/app/administration/classification/master/list/classification-list.component.ts b/web/src/app/administration/classification/master/list/classification-list.component.ts index e98ed153a..291e8c061 100644 --- a/web/src/app/administration/classification/master/list/classification-list.component.ts +++ b/web/src/app/administration/classification/master/list/classification-list.component.ts @@ -17,12 +17,16 @@ import { ClassificationTypesService } from 'app/administration/services/classifi export class ClassificationListComponent implements OnInit, OnDestroy { + selectedCategory = ''; selectedId: string; selectionToImport = ImportType.CLASSIFICATIONS; requestInProgress = false; initialized = false; inputValue: string; + allCategories: Map = new Map([['', 'None'], ['EXTERNAL', 'External'], + ['AUTOMATIC', 'Automatic'], ['MANUAL', 'manual'], ['CLOSED', 'closed']]); + classifications: Array = []; classificationsTypes: Array = []; classificationTypeSelected: string; @@ -75,6 +79,10 @@ export class ClassificationListComponent implements OnInit, OnDestroy { this.router.navigate([{ outlets: { detail: [`new-classification/${this.selectedId}`] } }], { relativeTo: this.route }); } + selectCategory(category: string) { + this.selectedCategory = category; + } + private performRequest(forceRequest = false) { if (this.initialized && !forceRequest) { return; diff --git a/web/src/app/administration/components/import-export/import-export.component.html b/web/src/app/administration/components/import-export/import-export.component.html index edceeaff4..447d38108 100644 --- a/web/src/app/administration/components/import-export/import-export.component.html +++ b/web/src/app/administration/components/import-export/import-export.component.html @@ -1,14 +1,8 @@ - - + - \ No newline at end of file diff --git a/web/src/app/shared/master-and-detail/master-and-detail.component.scss b/web/src/app/shared/master-and-detail/master-and-detail.component.scss index 064ef66f7..d274d7961 100644 --- a/web/src/app/shared/master-and-detail/master-and-detail.component.scss +++ b/web/src/app/shared/master-and-detail/master-and-detail.component.scss @@ -1,24 +1,4 @@ -.container-no-detail .no-detail-icon { - - display: block; - width: 150px; - height: 150px; - fill: grey; - margin: 20px auto; - -} - -.container-no-detail{ - top:30vh; - height: 65vh; -} - .center-block.no-detail { text-align: center; } - -.vertical-right-divider { - border-right: 1px solid #ccc; -} - diff --git a/web/src/app/shared/tree/tree.component.html b/web/src/app/shared/tree/tree.component.html index 3106eab69..291e9320e 100644 --- a/web/src/app/shared/tree/tree.component.html +++ b/web/src/app/shared/tree/tree.component.html @@ -11,4 +11,4 @@ - {{ node.data.name }} - \ No newline at end of file + diff --git a/web/src/app/shared/tree/tree.component.ts b/web/src/app/shared/tree/tree.component.ts index ef13568dd..cbb7fb9d3 100644 --- a/web/src/app/shared/tree/tree.component.ts +++ b/web/src/app/shared/tree/tree.component.ts @@ -20,8 +20,11 @@ export class TaskanaTreeComponent implements OnInit, AfterViewChecked { @Input() selectNodeId: string; @Output() selectNodeIdChanged = new EventEmitter(); @Input() filterText: string; + @Input() filterIcon: string; + private filterTextOld: string + private filterIconOld: string private beforeFilteringState: ITreeState; options: ITreeOptions = { @@ -58,11 +61,18 @@ export class TaskanaTreeComponent implements OnInit, AfterViewChecked { } else if (!this.selectNodeId && this.tree.treeModel.getActiveNode()) { this.unSelectActiveNode(); } + if (this.filterTextOld !== this.filterText) { this.filterTextOld = this.filterText; this.filterNodes(this.filterText); this.manageTreeState(); } + if (this.filterIconOld !== this.filterIcon) { + this.filterIconOld = this.filterIcon; + this.filterNodes(this.filterIcon); + this.manageTreeState(); + } + } onActivate(treeNode: any) { @@ -104,9 +114,11 @@ export class TaskanaTreeComponent implements OnInit, AfterViewChecked { private filterNodes(text) { this.tree.treeModel.filterNodes((node) => { return (node.data.name.toUpperCase().includes(text.toUpperCase()) - || node.data.key.toUpperCase().includes(text.toUpperCase())); + || node.data.key.toUpperCase().includes(text.toUpperCase()) + || node.data.category.toUpperCase().includes(text.toUpperCase())); }); } + private manageTreeState() { if (this.filterText === '') { this.tree.treeModel.collapseAll(); diff --git a/web/src/assets/_site.scss b/web/src/assets/_site.scss index cf311d4a1..29378f16d 100644 --- a/web/src/assets/_site.scss +++ b/web/src/assets/_site.scss @@ -298,3 +298,26 @@ li.list-group-item:hover, { background-color: #f5f5f5; } +.vertical-right-divider { + border-right: 1px solid #ccc; +} +.horizontal-bottom-divider { + border-bottom: 1px solid #ccc; +} + +.empty-icon { + display: block; + width: 150px; + height: 150px; + fill: grey; + margin: 20px auto; +} + +.container-no-items { + top:30vh; + height: 65vh; +} + +.center-block { + text-align: center; +} diff --git a/web/src/assets/icons/export.svg b/web/src/assets/icons/export.svg new file mode 100644 index 000000000..b95c6a5ce --- /dev/null +++ b/web/src/assets/icons/export.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/icons/import.svg b/web/src/assets/icons/import.svg new file mode 100644 index 000000000..2034317e4 --- /dev/null +++ b/web/src/assets/icons/import.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/icons/wb-add.svg b/web/src/assets/icons/wb-add.svg index 57276bd6b..7bb252dc2 100644 --- a/web/src/assets/icons/wb-add.svg +++ b/web/src/assets/icons/wb-add.svg @@ -1,67 +1 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - + \ No newline at end of file diff --git a/web/src/index.html b/web/src/index.html index bec342a8c..c428ddf0e 100644 --- a/web/src/index.html +++ b/web/src/index.html @@ -6,7 +6,7 @@ Administration - + diff --git a/web/src/logo.ico b/web/src/logo.ico new file mode 100644 index 000000000..b394b95f1 Binary files /dev/null and b/web/src/logo.ico differ diff --git a/web/src/taskana.ico b/web/src/taskana.ico deleted file mode 100644 index beb791e12..000000000 Binary files a/web/src/taskana.ico and /dev/null differ