From c4e13b1c084986290d2d053660ed3cab16a7945f Mon Sep 17 00:00:00 2001 From: miguelmartinrojas Date: Tue, 15 May 2018 10:56:37 +0200 Subject: [PATCH] TSK-488 Add classification improvements --- .../classification-details.component.html | 25 +++---- .../list/classification-list.component.html | 28 +++++++- .../list/classification-list.component.scss | 20 +++++- .../classification-list.component.spec.ts | 9 ++- .../list/classification-list.component.ts | 8 +++ .../import-export.component.html | 12 +--- .../import-export.component.spec.ts | 4 +- .../type-icon/icon-type.component.html | 2 +- .../type-icon/icon-type.component.ts | 11 +++ .../master-and-detail.component.html | 6 +- .../master-and-detail.component.scss | 20 ------ web/src/app/shared/tree/tree.component.html | 2 +- web/src/app/shared/tree/tree.component.ts | 14 +++- web/src/assets/_site.scss | 23 ++++++ web/src/assets/icons/export.svg | 1 + web/src/assets/icons/import.svg | 1 + web/src/assets/icons/wb-add.svg | 68 +----------------- web/src/index.html | 2 +- web/src/logo.ico | Bin 0 -> 11342 bytes web/src/taskana.ico | Bin 18471 -> 0 bytes 20 files changed, 130 insertions(+), 126 deletions(-) create mode 100644 web/src/assets/icons/export.svg create mode 100644 web/src/assets/icons/import.svg create mode 100644 web/src/logo.ico delete mode 100644 web/src/taskana.ico 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 0000000000000000000000000000000000000000..b394b95f1605f1c041b067ed6169e4046bd12537 GIT binary patch literal 11342 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 D_jh^z