Column preview improvements
This commit is contained in:
parent
e27578ebe6
commit
35f2e2d526
@ -89,24 +89,25 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="csv-header-pill-content" [class.search-open]="isSearchOpen">
|
<div class="csv-header-pill-content" [class.search-open]="isSearchOpen">
|
||||||
<div
|
<div
|
||||||
class="csv-header-pill"
|
class="csv-header-pill-wrapper"
|
||||||
*ngFor="let field of filteredFields"
|
*ngFor="let field of filteredFields"
|
||||||
(mouseenter)="hoveredColumn = field.csvColumn"
|
(mouseenter)="setHoveredColumn(field.csvColumn)"
|
||||||
(mouseleave)="hoveredColumn = undefined"
|
(mouseleave)="setHoveredColumn()"
|
||||||
(click)="toggleFieldActive(field)"
|
(click)="toggleFieldActive(field)"
|
||||||
[class.selected]="isActive(field)"
|
|
||||||
>
|
>
|
||||||
<div class="name">
|
<div class="csv-header-pill" [class.selected]="isActive(field)">
|
||||||
{{ field.csvColumn }}
|
<div class="name">
|
||||||
</div>
|
{{ field.csvColumn }}
|
||||||
<div class="secondary">
|
</div>
|
||||||
<div class="entry-count small-label">{{ getEntries(field.csvColumn) }} entries</div>
|
<div class="secondary">
|
||||||
<div class="sample small-label">Sample: {{ getSample(field.csvColumn) }}</div>
|
<div class="entry-count small-label">{{ getEntries(field.csvColumn) }} entries</div>
|
||||||
|
<div class="sample small-label">Sample: {{ getSample(field.csvColumn) }}</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="center" [class.collapsed]="!previewExpanded">
|
<div class="center" [class.collapsed]="!previewExpanded" (mouseenter)="keepPreview = true" (mouseleave)="keepPreview = false; setHoveredColumn()">
|
||||||
<div class="csv-part-header">
|
<div class="csv-part-header">
|
||||||
<div class="all-caps-label">
|
<div class="all-caps-label">
|
||||||
{{ 'file-attributes-csv-import.csv-column' + (previewExpanded ? '' : '-preview') | translate }}
|
{{ 'file-attributes-csv-import.csv-column' + (previewExpanded ? '' : '-preview') | translate }}
|
||||||
@ -117,12 +118,13 @@
|
|||||||
></redaction-circle-button>
|
></redaction-circle-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="csv-part-content" [class.hidden]="!previewExpanded">
|
<div class="csv-part-content" [class.hidden]="!previewExpanded">
|
||||||
<div class="no-hovered-column" *ngIf="!hoveredColumn" translate="file-attributes-csv-import.no-hovered-column"></div>
|
<div class="no-column-data" *ngIf="!hoveredColumn" translate="file-attributes-csv-import.no-hovered-column"></div>
|
||||||
<ng-container *ngFor="let row of parseResult?.data || []">
|
<div class="no-column-data" *ngIf="hoveredColumn && !columnSample.length">
|
||||||
<div *ngIf="row[hoveredColumn]">
|
{{ 'file-attributes-csv-import.no-sample-data-for' | translate: { column: hoveredColumn } }}
|
||||||
{{ row[hoveredColumn] }}
|
</div>
|
||||||
</div>
|
<div *ngFor="let row of columnSample">
|
||||||
</ng-container>
|
{{ row }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content-container">
|
<div class="content-container">
|
||||||
@ -245,8 +247,8 @@
|
|||||||
<div
|
<div
|
||||||
class="table-item"
|
class="table-item"
|
||||||
*cdkVirtualFor="let field of activeFields"
|
*cdkVirtualFor="let field of activeFields"
|
||||||
(mouseenter)="hoveredColumn = field.csvColumn"
|
(mouseenter)="setHoveredColumn(field.csvColumn)"
|
||||||
(mouseleave)="hoveredColumn = undefined"
|
(mouseleave)="setHoveredColumn()"
|
||||||
>
|
>
|
||||||
<div class="pr-0" (click)="toggleFieldSelected(field.csvColumn)">
|
<div class="pr-0" (click)="toggleFieldSelected(field.csvColumn)">
|
||||||
<div *ngIf="!isFieldSelected(field.csvColumn)" class="select-oval"></div>
|
<div *ngIf="!isFieldSelected(field.csvColumn)" class="select-oval"></div>
|
||||||
|
|||||||
@ -92,7 +92,7 @@
|
|||||||
height: calc(100% - 51px);
|
height: calc(100% - 51px);
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
|
|
||||||
.no-hovered-column {
|
.no-column-data {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
margin: 0 10px;
|
margin: 0 10px;
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -104,7 +104,7 @@
|
|||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
> *:not(.no-hovered-column) {
|
> *:not(.no-column-data) {
|
||||||
height: 30px;
|
height: 30px;
|
||||||
border-bottom: 1px solid $separator;
|
border-bottom: 1px solid $separator;
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -121,44 +121,47 @@
|
|||||||
|
|
||||||
.csv-header-pill-content {
|
.csv-header-pill-content {
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
padding: 4px 10px;
|
padding: 7px 0;
|
||||||
background: $grey-2;
|
background: $grey-2;
|
||||||
height: calc(100% - 58px);
|
height: calc(100% - 64px);
|
||||||
@include no-scroll-bar;
|
@include no-scroll-bar;
|
||||||
|
|
||||||
&.search-open {
|
&.search-open {
|
||||||
height: calc(100% - 58px - 51px);
|
height: calc(100% - 58px - 51px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.csv-header-pill {
|
.csv-header-pill-wrapper {
|
||||||
min-height: 32px;
|
padding: 3px 10px;
|
||||||
margin: 6px auto;
|
|
||||||
border-radius: 8px;
|
|
||||||
padding: 10px;
|
|
||||||
background: $white;
|
|
||||||
cursor: pointer;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
|
|
||||||
.secondary {
|
.csv-header-pill {
|
||||||
|
min-height: 32px;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 10px;
|
||||||
|
background: $white;
|
||||||
|
cursor: pointer;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
flex-direction: column;
|
||||||
margin-top: 2px;
|
|
||||||
|
|
||||||
.entry-count {
|
.secondary {
|
||||||
white-space: nowrap;
|
display: flex;
|
||||||
margin-right: 10px;
|
justify-content: space-between;
|
||||||
|
margin-top: 2px;
|
||||||
|
|
||||||
|
.entry-count {
|
||||||
|
white-space: nowrap;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sample {
|
||||||
|
@include line-clamp(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.sample {
|
&.selected {
|
||||||
@include line-clamp(1);
|
background-color: $primary;
|
||||||
|
color: $white;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.selected {
|
|
||||||
background-color: $primary;
|
|
||||||
color: $white;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -43,6 +43,8 @@ export class FileAttributesCsvImportDialogComponent {
|
|||||||
public filteredFields: Field[];
|
public filteredFields: Field[];
|
||||||
public previewExpanded = true;
|
public previewExpanded = true;
|
||||||
public filteredKeyOptions: Observable<string[]>;
|
public filteredKeyOptions: Observable<string[]>;
|
||||||
|
public keepPreview = false;
|
||||||
|
public columnSample = [];
|
||||||
|
|
||||||
@ViewChild(CdkVirtualScrollViewport, { static: false }) cdkVirtualScrollViewport: CdkVirtualScrollViewport;
|
@ViewChild(CdkVirtualScrollViewport, { static: false }) cdkVirtualScrollViewport: CdkVirtualScrollViewport;
|
||||||
|
|
||||||
@ -223,4 +225,19 @@ export class FileAttributesCsvImportDialogComponent {
|
|||||||
|
|
||||||
this.dialogRef.close(true);
|
this.dialogRef.close(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public setHoveredColumn(column?: string) {
|
||||||
|
setTimeout(() => {
|
||||||
|
if (this.keepPreview && !column) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.hoveredColumn = column;
|
||||||
|
|
||||||
|
if (!column) {
|
||||||
|
this.columnSample = [];
|
||||||
|
} else {
|
||||||
|
this.columnSample = this.parseResult.data.filter((row) => !!row[column]).map((row) => row[column]);
|
||||||
|
}
|
||||||
|
}, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1179,6 +1179,7 @@
|
|||||||
"csv-column": "CSV Column",
|
"csv-column": "CSV Column",
|
||||||
"csv-column-preview": "CSV Column Preview",
|
"csv-column-preview": "CSV Column Preview",
|
||||||
"no-hovered-column": "Preview CSV column by hovering the entry.",
|
"no-hovered-column": "Preview CSV column by hovering the entry.",
|
||||||
|
"no-sample-data-for": "No sample data for {{column}}.",
|
||||||
"search": {
|
"search": {
|
||||||
"placeholder": "Search by column name..."
|
"placeholder": "Search by column name..."
|
||||||
},
|
},
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user