rearrange entries

This commit is contained in:
Dan Percic 2021-05-10 09:08:26 +03:00
parent 7b31e4c59c
commit 26f9e5a0af
154 changed files with 1213 additions and 1085 deletions

View File

@ -1,4 +1,2 @@
<router-outlet></router-outlet> <router-outlet></router-outlet>
<redaction-full-page-loading-indicator <redaction-full-page-loading-indicator [displayed]="appLoadStateService.loading | async"></redaction-full-page-loading-indicator>
[displayed]="appLoadStateService.loading | async"
></redaction-full-page-loading-indicator>

View File

@ -1,19 +1,19 @@
<section> <section>
<p class="heading-xl" [translate]="'auth-error.heading'" *ngIf="!configuredAdminName && !configuredAdminUrl"></p> <p *ngIf="!configuredAdminName && !configuredAdminUrl" [translate]="'auth-error.heading'" class="heading-xl"></p>
<p <p
class="heading-xl"
[innerHTML]="'auth-error.heading-with-name-and-link' | translate: { adminName: configuredAdminName, adminUrl: configuredAdminUrl }"
*ngIf="configuredAdminName && configuredAdminUrl" *ngIf="configuredAdminName && configuredAdminUrl"
[innerHTML]="'auth-error.heading-with-name-and-link' | translate: { adminName: configuredAdminName, adminUrl: configuredAdminUrl }"
class="heading-xl"
></p> ></p>
<p <p
class="heading-xl"
[innerHTML]="'auth-error.heading-with-name' | translate: { adminName: configuredAdminName }"
*ngIf="configuredAdminName && !configuredAdminUrl" *ngIf="configuredAdminName && !configuredAdminUrl"
[innerHTML]="'auth-error.heading-with-name' | translate: { adminName: configuredAdminName }"
class="heading-xl"
></p> ></p>
<p <p
class="heading-xl"
[innerHTML]="'auth-error.heading-with-link' | translate: { adminName: configuredAdminName }"
*ngIf="!configuredAdminName && configuredAdminUrl" *ngIf="!configuredAdminName && configuredAdminUrl"
[innerHTML]="'auth-error.heading-with-link' | translate: { adminName: configuredAdminName }"
class="heading-xl"
></p> ></p>
<a (click)="logout()" [translate]="'auth-error.logout'"></a> <a (click)="logout()" [translate]="'auth-error.logout'"></a>
</section> </section>

View File

@ -1,7 +1,7 @@
<div class="red-top-bar"> <div class="red-top-bar">
<div class="top-bar-row"> <div class="top-bar-row">
<div class="menu-placeholder" *ngIf="!permissionsService.isUser()"></div> <div *ngIf="!permissionsService.isUser()" class="menu-placeholder"></div>
<div class="menu visible-lt-lg" *ngIf="permissionsService.isUser()"> <div *ngIf="permissionsService.isUser()" class="menu visible-lt-lg">
<button [matMenuTriggerFor]="menuNav" mat-flat-button> <button [matMenuTriggerFor]="menuNav" mat-flat-button>
<mat-icon svgIcon="red:menu"></mat-icon> <mat-icon svgIcon="red:menu"></mat-icon>
</button> </button>
@ -19,36 +19,36 @@
</button> </button>
</mat-menu> </mat-menu>
</div> </div>
<div class="menu flex-2 visible-lg breadcrumbs-container" *ngIf="permissionsService.isUser()"> <div *ngIf="permissionsService.isUser()" class="menu flex-2 visible-lg breadcrumbs-container">
<a <a
class="breadcrumb"
routerLink="/main/projects"
translate="top-bar.navigation-items.projects"
routerLinkActive="active"
*ngIf="projectsView" *ngIf="projectsView"
[routerLinkActiveOptions]="{ exact: true }" [routerLinkActiveOptions]="{ exact: true }"
class="breadcrumb"
routerLink="/main/projects"
routerLinkActive="active"
translate="top-bar.navigation-items.projects"
></a> ></a>
<a class="breadcrumb back" redactionNavigateLastProjectsScreen *ngIf="!projectsView"> <a *ngIf="!projectsView" class="breadcrumb back" redactionNavigateLastProjectsScreen>
<mat-icon svgIcon="red:expand"></mat-icon> <mat-icon svgIcon="red:expand"></mat-icon>
{{ 'top-bar.navigation-items.back' | translate }} {{ 'top-bar.navigation-items.back' | translate }}
</a> </a>
<ng-container *ngIf="projectsView"> <ng-container *ngIf="projectsView">
<mat-icon class="primary" *ngIf="!appStateService.activeProject" svgIcon="red:arrow-down"></mat-icon> <mat-icon *ngIf="!appStateService.activeProject" class="primary" svgIcon="red:arrow-down"></mat-icon>
<mat-icon *ngIf="appStateService.activeProject" svgIcon="red:arrow-right"></mat-icon> <mat-icon *ngIf="appStateService.activeProject" svgIcon="red:arrow-right"></mat-icon>
<a <a
*ngIf="appStateService.activeProject" *ngIf="appStateService.activeProject"
class="breadcrumb"
[routerLink]="'/main/projects/' + appStateService.activeProjectId"
routerLinkActive="active"
[routerLinkActiveOptions]="{ exact: true }" [routerLinkActiveOptions]="{ exact: true }"
[routerLink]="'/main/projects/' + appStateService.activeProjectId"
class="breadcrumb"
routerLinkActive="active"
> >
{{ appStateService.activeProject.project.projectName }} {{ appStateService.activeProject.project.projectName }}
</a> </a>
<mat-icon svgIcon="red:arrow-right" *ngIf="appStateService.activeFile"></mat-icon> <mat-icon *ngIf="appStateService.activeFile" svgIcon="red:arrow-right"></mat-icon>
<a <a
*ngIf="appStateService.activeFile" *ngIf="appStateService.activeFile"
class="breadcrumb"
[routerLink]="'/main/projects/' + appStateService.activeProjectId + '/file/' + appStateService.activeFile.fileId" [routerLink]="'/main/projects/' + appStateService.activeProjectId + '/file/' + appStateService.activeFile.fileId"
class="breadcrumb"
routerLinkActive="active" routerLinkActive="active"
> >
{{ appStateService.activeFile.filename }} {{ appStateService.activeFile.filename }}
@ -60,16 +60,16 @@
<redaction-logo></redaction-logo> <redaction-logo></redaction-logo>
</redaction-hidden-action> </redaction-hidden-action>
<div class="app-name">{{ titleService.getTitle() }}</div> <div class="app-name">{{ titleService.getTitle() }}</div>
<span class="dev-mode" *ngIf="userPreferenceService.areDevFeaturesEnabled" translate="dev-mode"></span> <span *ngIf="userPreferenceService.areDevFeaturesEnabled" class="dev-mode" translate="dev-mode"></span>
</div> </div>
<div class="menu right flex-2"> <div class="menu right flex-2">
<redaction-notifications class="mr-8" *ngIf="userPreferenceService.areDevFeaturesEnabled"></redaction-notifications> <redaction-notifications *ngIf="userPreferenceService.areDevFeaturesEnabled" class="mr-8"></redaction-notifications>
<redaction-user-button [user]="user" [matMenuTriggerFor]="userMenu" [showDot]="showPendingDownloadsDot"></redaction-user-button> <redaction-user-button [matMenuTriggerFor]="userMenu" [showDot]="showPendingDownloadsDot" [user]="user"></redaction-user-button>
<mat-menu #userMenu="matMenu" class="user-menu" xPosition="before"> <mat-menu #userMenu="matMenu" class="user-menu" xPosition="before">
<button [routerLink]="'/main/my-profile'" mat-menu-item translate="top-bar.navigation-items.my-account.children.my-profile"></button> <button [routerLink]="'/main/my-profile'" mat-menu-item translate="top-bar.navigation-items.my-account.children.my-profile"></button>
<button <button
*ngIf="permissionsService.isManager() || permissionsService.isUserAdmin()"
(click)="appStateService.reset()" (click)="appStateService.reset()"
*ngIf="permissionsService.isManager() || permissionsService.isUserAdmin()"
[routerLink]="'/main/admin'" [routerLink]="'/main/admin'"
mat-menu-item mat-menu-item
translate="top-bar.navigation-items.my-account.children.admin" translate="top-bar.navigation-items.my-account.children.admin"
@ -82,7 +82,7 @@
></button> ></button>
<button [matMenuTriggerFor]="language" mat-menu-item translate="top-bar.navigation-items.my-account.children.language.label"></button> <button [matMenuTriggerFor]="language" mat-menu-item translate="top-bar.navigation-items.my-account.children.language.label"></button>
<mat-menu #language="matMenu"> <mat-menu #language="matMenu">
<button *ngFor="let lang of languages" (click)="changeLanguage(lang)" mat-menu-item translate> <button (click)="changeLanguage(lang)" *ngFor="let lang of languages" mat-menu-item translate>
top-bar.navigation-items.my-account.children.language.{{ lang }} top-bar.navigation-items.my-account.children.language.{{ lang }}
</button> </button>
</mat-menu> </mat-menu>

View File

@ -1,32 +1,20 @@
<div class="row" [style.display]="state.value === 'inactive' ? 'none' : ''"> <div [style.display]="state.value === 'inactive' ? 'none' : ''" class="row">
<div *ngIf="title" [class]="options.titleClass" [attr.aria-label]="title"> <div *ngIf="title" [attr.aria-label]="title" [class]="options.titleClass">
{{ title }} {{ title }}
</div> </div>
<div <div *ngIf="message && options.enableHtml" [class]="options.messageClass" [innerHTML]="message" aria-live="polite" role="alert"></div>
*ngIf="message && options.enableHtml" <div *ngIf="message && !options.enableHtml" [attr.aria-label]="message" [class]="options.messageClass" aria-live="polite" role="alert">
role="alert"
aria-live="polite"
[class]="options.messageClass"
[innerHTML]="message"
></div>
<div
*ngIf="message && !options.enableHtml"
role="alert"
aria-live="polite"
[class]="options.messageClass"
[attr.aria-label]="message"
>
{{ message }} {{ message }}
</div> </div>
<div class="actions-wrapper" *ngIf="actions && actions.length"> <div *ngIf="actions && actions.length" class="actions-wrapper">
<a *ngFor="let action of actions" (click)="callAction($event, action.action)"> <a (click)="callAction($event, action.action)" *ngFor="let action of actions">
{{ action.title }} {{ action.title }}
</a> </a>
</div> </div>
</div> </div>
<div class="text-right"> <div class="text-right">
<a *ngIf="options.closeButton" (click)="remove()" class="toast-close-button"> <a (click)="remove()" *ngIf="options.closeButton" class="toast-close-button">
<mat-icon svgIcon="red:close"></mat-icon> <mat-icon svgIcon="red:close"></mat-icon>
</a> </a>
</div> </div>

View File

@ -3,9 +3,9 @@
<div class="overlay-shadow"></div> <div class="overlay-shadow"></div>
<div class="dialog"> <div class="dialog">
<div class="dialog-header"> <div class="dialog-header">
<div class="heading-l" [translate]="'user-profile.title'"></div> <div [translate]="'user-profile.title'" class="heading-l"></div>
</div> </div>
<form [formGroup]="formGroup" (submit)="save()"> <form (submit)="save()" [formGroup]="formGroup">
<div class="dialog-content"> <div class="dialog-content">
<div class="dialog-content-left"> <div class="dialog-content-left">
<div class="red-input-group required"> <div class="red-input-group required">

View File

@ -1,12 +1,12 @@
<div class="menu flex-2 visible-lg breadcrumbs-container"> <div class="menu flex-2 visible-lg breadcrumbs-container">
<a class="breadcrumb" [routerLink]="'/main/admin/project-templates'" translate="project-templates" *ngIf="root || !!appStateService.activeRuleSet"></a> <a *ngIf="root || !!appStateService.activeRuleSet" [routerLink]="'/main/admin/project-templates'" class="breadcrumb" translate="project-templates"></a>
<ng-container *ngIf="appStateService.activeRuleSet"> <ng-container *ngIf="appStateService.activeRuleSet">
<mat-icon svgIcon="red:arrow-right"></mat-icon> <mat-icon svgIcon="red:arrow-right"></mat-icon>
<a <a
class="breadcrumb ml-0"
[routerLink]="'/main/admin/project-templates/' + appStateService.activeRuleSetId"
[class.active]="!appStateService.activeDictionaryType" [class.active]="!appStateService.activeDictionaryType"
[routerLink]="'/main/admin/project-templates/' + appStateService.activeRuleSetId"
class="breadcrumb ml-0"
> >
{{ appStateService.activeRuleSet.name }} {{ appStateService.activeRuleSet.name }}
</a> </a>
@ -15,8 +15,8 @@
<ng-container *ngIf="appStateService.activeDictionary"> <ng-container *ngIf="appStateService.activeDictionary">
<mat-icon svgIcon="red:arrow-right"></mat-icon> <mat-icon svgIcon="red:arrow-right"></mat-icon>
<a <a
class="breadcrumb ml-0"
[routerLink]="'/main/admin/project-templates/' + appStateService.activeRuleSetId + '/dictionaries/' + appStateService.activeDictionaryType" [routerLink]="'/main/admin/project-templates/' + appStateService.activeRuleSetId + '/dictionaries/' + appStateService.activeDictionaryType"
class="breadcrumb ml-0"
routerLinkActive="active" routerLinkActive="active"
> >
{{ appStateService.activeDictionary.label }} {{ appStateService.activeDictionary.label }}

View File

@ -1,109 +1,109 @@
<ngx-charts-chart <ngx-charts-chart
[view]="[width + legendSpacing, height]" (legendLabelActivate)="onActivate($event)"
[showLegend]="legend" (legendLabelClick)="onClick($event)"
[legendOptions]="legendOptions" (legendLabelDeactivate)="onDeactivate($event)"
[activeEntries]="activeEntries" [activeEntries]="activeEntries"
[animations]="animations" [animations]="animations"
(legendLabelClick)="onClick($event)" [legendOptions]="legendOptions"
(legendLabelActivate)="onActivate($event)" [showLegend]="legend"
(legendLabelDeactivate)="onDeactivate($event)" [view]="[width + legendSpacing, height]"
> >
<svg:g [attr.transform]="transform" class="bar-chart chart"> <svg:g [attr.transform]="transform" class="bar-chart chart">
<svg:g <svg:g
ngx-charts-x-axis
*ngIf="xAxis"
[xScale]="xScale"
[dims]="dims"
[showLabel]="showXAxisLabel"
[labelText]="xAxisLabel"
[tickFormatting]="xAxisTickFormatting"
(dimensionsChanged)="updateXAxisHeight($event)" (dimensionsChanged)="updateXAxisHeight($event)"
*ngIf="xAxis"
[dims]="dims"
[labelText]="xAxisLabel"
[showLabel]="showXAxisLabel"
[tickFormatting]="xAxisTickFormatting"
[xScale]="xScale"
ngx-charts-x-axis
></svg:g> ></svg:g>
<svg:g <svg:g
ngx-charts-y-axis (dimensionsChanged)="updateYAxisWidth($event)"
*ngIf="yAxis" *ngIf="yAxis"
[yScale]="yScale"
[dims]="dims" [dims]="dims"
[yOrient]="yOrientLeft" [labelText]="yAxisLabel"
[showGridLines]="showGridLines" [showGridLines]="showGridLines"
[showLabel]="showYAxisLabel" [showLabel]="showYAxisLabel"
[labelText]="yAxisLabel"
[tickFormatting]="yAxisTickFormatting" [tickFormatting]="yAxisTickFormatting"
(dimensionsChanged)="updateYAxisWidth($event)" [yOrient]="yOrientLeft"
[yScale]="yScale"
ngx-charts-y-axis
></svg:g> ></svg:g>
<svg:g <svg:g
ngx-charts-y-axis (dimensionsChanged)="updateYAxisWidth($event)"
*ngIf="yAxis" *ngIf="yAxis"
[yScale]="yScaleLine"
[dims]="dims" [dims]="dims"
[yOrient]="yOrientRight" [labelText]="yAxisLabelRight"
[showGridLines]="showGridLines" [showGridLines]="showGridLines"
[showLabel]="showRightYAxisLabel" [showLabel]="showRightYAxisLabel"
[labelText]="yAxisLabelRight"
[tickFormatting]="yRightAxisTickFormatting" [tickFormatting]="yRightAxisTickFormatting"
(dimensionsChanged)="updateYAxisWidth($event)" [yOrient]="yOrientRight"
[yScale]="yScaleLine"
ngx-charts-y-axis
></svg:g> ></svg:g>
<svg:g <svg:g
ngx-combo-charts-series-vertical (activate)="onActivate($event)"
[xScale]="xScale" (bandwidth)="updateLineWidth($event)"
[yScale]="yScale" (deactivate)="onDeactivate($event)"
[colors]="colors"
[series]="results"
[seriesLine]="lineChart"
[dims]="dims"
[gradient]="gradient"
[tooltipDisabled]="true"
[activeEntries]="activeEntries" [activeEntries]="activeEntries"
[animations]="animations" [animations]="animations"
[colors]="colors"
[dims]="dims"
[gradient]="gradient"
[noBarWhenZero]="noBarWhenZero" [noBarWhenZero]="noBarWhenZero"
(activate)="onActivate($event)" [seriesLine]="lineChart"
(deactivate)="onDeactivate($event)" [series]="results"
(bandwidth)="updateLineWidth($event)" [tooltipDisabled]="true"
[xScale]="xScale"
[yScale]="yScale"
ngx-combo-charts-series-vertical
></svg:g> ></svg:g>
</svg:g> </svg:g>
<svg:g [attr.transform]="transform" class="line-chart chart"> <svg:g [attr.transform]="transform" class="line-chart chart">
<svg:g> <svg:g>
<svg:g *ngFor="let series of lineChart; trackBy: trackBy"> <svg:g *ngFor="let series of lineChart; trackBy: trackBy">
<svg:g <svg:g
ngx-charts-line-series [activeEntries]="activeEntries"
[animations]="animations"
[colors]="colorsLine"
[curve]="curve"
[data]="series"
[rangeFillOpacity]="rangeFillOpacity"
[scaleType]="scaleType"
[xScale]="xScaleLine" [xScale]="xScaleLine"
[yScale]="yScaleLine" [yScale]="yScaleLine"
[colors]="colorsLine" ngx-charts-line-series
[data]="series"
[activeEntries]="activeEntries"
[scaleType]="scaleType"
[curve]="curve"
[rangeFillOpacity]="rangeFillOpacity"
[animations]="animations"
/> />
</svg:g> </svg:g>
<svg:g <svg:g
ngx-charts-tooltip-area
*ngIf="!tooltipDisabled"
[dims]="dims"
[xSet]="xSet"
[xScale]="xScaleLine"
[yScale]="yScaleLine"
[results]="combinedSeries"
[colors]="colorsLine"
[tooltipDisabled]="tooltipDisabled"
(hover)="updateHoveredVertical($event)" (hover)="updateHoveredVertical($event)"
*ngIf="!tooltipDisabled"
[colors]="colorsLine"
[dims]="dims"
[results]="combinedSeries"
[tooltipDisabled]="tooltipDisabled"
[xScale]="xScaleLine"
[xSet]="xSet"
[yScale]="yScaleLine"
ngx-charts-tooltip-area
/> />
<svg:g *ngFor="let series of lineChart"> <svg:g *ngFor="let series of lineChart">
<svg:g <svg:g
ngx-charts-circle-series (activate)="onActivate($event)"
[xScale]="xScaleLine" (deactivate)="onDeactivate($event)"
[yScale]="yScaleLine" [activeEntries]="activeEntries"
[colors]="colorsLine" [colors]="colorsLine"
[data]="series" [data]="series"
[scaleType]="scaleType" [scaleType]="scaleType"
[visibleValue]="hoveredVertical"
[activeEntries]="activeEntries"
[tooltipDisabled]="tooltipDisabled" [tooltipDisabled]="tooltipDisabled"
(activate)="onActivate($event)" [visibleValue]="hoveredVertical"
(deactivate)="onDeactivate($event)" [xScale]="xScaleLine"
[yScale]="yScaleLine"
ngx-charts-circle-series
/> />
</svg:g> </svg:g>
</svg:g> </svg:g>

View File

@ -2,18 +2,18 @@
<redaction-circle-button <redaction-circle-button
(action)="openDeleteRuleSetDialog($event)" (action)="openDeleteRuleSetDialog($event)"
*ngIf="permissionsService.isAdmin()" *ngIf="permissionsService.isAdmin()"
icon="red:trash"
tooltip="project-templates-listing.action.delete" tooltip="project-templates-listing.action.delete"
type="dark-bg" type="dark-bg"
icon="red:trash"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button <redaction-circle-button
(action)="openEditRuleSetDialog($event)" (action)="openEditRuleSetDialog($event)"
*ngIf="permissionsService.isAdmin()" *ngIf="permissionsService.isAdmin()"
icon="red:edit"
tooltip="project-templates-listing.action.edit" tooltip="project-templates-listing.action.edit"
type="dark-bg" type="dark-bg"
icon="red:edit"
> >
</redaction-circle-button> </redaction-circle-button>
</div> </div>

View File

@ -1,15 +1,15 @@
<div class="all-caps-label" [translate]="type"></div> <div [translate]="type" class="all-caps-label"></div>
<ng-container *ngFor="let item of items[type]"> <ng-container *ngFor="let item of items[type]">
<div <div
class="item"
*ngIf=" *ngIf="
(!item.onlyAdmin || permissionsService.isAdmin()) && (!item.onlyAdmin || permissionsService.isAdmin()) &&
(!item.onlyDevMode || userPreferenceService.areDevFeaturesEnabled) && (!item.onlyDevMode || userPreferenceService.areDevFeaturesEnabled) &&
(!item.userManagerOnly || permissionsService.canManageUsers()) (!item.userManagerOnly || permissionsService.canManageUsers())
" "
[routerLink]="prefix + item.screen"
[routerLinkActiveOptions]="{ exact: false }" [routerLinkActiveOptions]="{ exact: false }"
[routerLink]="prefix + item.screen"
class="item"
routerLinkActive="active" routerLinkActive="active"
> >
{{ item.label || item.screen | translate }} {{ item.label || item.screen | translate }}

View File

@ -1,5 +1,5 @@
<div class="collapsed-wrapper"> <div class="collapsed-wrapper">
<redaction-circle-button (action)="toggleCollapse.emit()" icon="red:expand" tooltipPosition="before" tooltip="user-stats.expand"></redaction-circle-button> <redaction-circle-button (action)="toggleCollapse.emit()" icon="red:expand" tooltip="user-stats.expand" tooltipPosition="before"></redaction-circle-button>
<div class="all-caps-label" translate="user-stats.title"></div> <div class="all-caps-label" translate="user-stats.title"></div>
</div> </div>
@ -16,10 +16,10 @@
<div class="mt-44"> <div class="mt-44">
<redaction-simple-doughnut-chart <redaction-simple-doughnut-chart
[config]="chartData" [config]="chartData"
[strokeWidth]="15"
[radius]="63" [radius]="63"
[strokeWidth]="15"
[subtitle]="'user-stats.chart.users'" [subtitle]="'user-stats.chart.users'"
totalType="sum"
direction="row" direction="row"
totalType="sum"
></redaction-simple-doughnut-chart> ></redaction-simple-doughnut-chart>
</div> </div>

View File

@ -13,15 +13,15 @@
</ng-container> </ng-container>
<div class="first-row"> <div class="first-row">
<div class="red-input-group required" *ngIf="!dictionary"> <div *ngIf="!dictionary" class="red-input-group required">
<label translate="add-edit-dictionary.form.name"></label> <label translate="add-edit-dictionary.form.name"></label>
<input formControlName="type" name="type" type="text" placeholder="{{ 'add-edit-dictionary.form.name-placeholder' | translate }}" /> <input formControlName="type" name="type" placeholder="{{ 'add-edit-dictionary.form.name-placeholder' | translate }}" type="text" />
<span class="hint" translate="add-edit-dictionary.form.name-hint"></span> <span class="hint" translate="add-edit-dictionary.form.name-hint"></span>
</div> </div>
<div class="red-input-group required w-75"> <div class="red-input-group required w-75">
<label translate="add-edit-dictionary.form.rank"></label> <label translate="add-edit-dictionary.form.rank"></label>
<input formControlName="rank" name="rank" type="number" placeholder="{{ 'add-edit-dictionary.form.rank-placeholder' | translate }}" /> <input formControlName="rank" name="rank" placeholder="{{ 'add-edit-dictionary.form.rank-placeholder' | translate }}" type="number" />
</div> </div>
<div class="red-input-group required"> <div class="red-input-group required">
@ -30,19 +30,19 @@
class="hex-color-input" class="hex-color-input"
formControlName="hexColor" formControlName="hexColor"
name="hexColor" name="hexColor"
type="text"
placeholder="{{ 'add-edit-dictionary.form.color-placeholder' | translate }}" placeholder="{{ 'add-edit-dictionary.form.color-placeholder' | translate }}"
type="text"
/> />
<div <div
class="input-icon" (colorPickerChange)="dictionaryForm.get('hexColor').setValue($event)"
[style.background]="dictionaryForm.get('hexColor').value"
[colorPicker]="dictionaryForm.get('hexColor').value" [colorPicker]="dictionaryForm.get('hexColor').value"
[cpOutputFormat]="'hex'" [cpOutputFormat]="'hex'"
(colorPickerChange)="dictionaryForm.get('hexColor').setValue($event)" [style.background]="dictionaryForm.get('hexColor').value"
class="input-icon"
> >
<mat-icon <mat-icon
svgIcon="red:color-picker"
*ngIf="!dictionaryForm.get('hexColor').value || dictionaryForm.get('hexColor').value?.length === 0" *ngIf="!dictionaryForm.get('hexColor').value || dictionaryForm.get('hexColor').value?.length === 0"
svgIcon="red:color-picker"
></mat-icon> ></mat-icon>
</div> </div>
</div> </div>
@ -51,30 +51,30 @@
<div class="red-input-group w-450"> <div class="red-input-group w-450">
<label translate="add-edit-dictionary.form.description"></label> <label translate="add-edit-dictionary.form.description"></label>
<textarea <textarea
redactionHasScrollbar
rows="4"
formControlName="description" formControlName="description"
name="description" name="description"
type="text"
placeholder="{{ 'add-edit-dictionary.form.description-placeholder' | translate }}" placeholder="{{ 'add-edit-dictionary.form.description-placeholder' | translate }}"
redactionHasScrollbar
rows="4"
type="text"
></textarea> ></textarea>
</div> </div>
<div class="red-input-group slider-row"> <div class="red-input-group slider-row">
<mat-button-toggle-group name="hint" formControlName="hint" appearance="legacy"> <mat-button-toggle-group appearance="legacy" formControlName="hint" name="hint">
<mat-button-toggle [value]="false"> {{ 'add-edit-dictionary.form.redaction' | translate }}</mat-button-toggle> <mat-button-toggle [value]="false"> {{ 'add-edit-dictionary.form.redaction' | translate }}</mat-button-toggle>
<mat-button-toggle [value]="true"> {{ 'add-edit-dictionary.form.hint' | translate }}</mat-button-toggle> <mat-button-toggle [value]="true"> {{ 'add-edit-dictionary.form.hint' | translate }}</mat-button-toggle>
</mat-button-toggle-group> </mat-button-toggle-group>
</div> </div>
<div class="red-input-group"> <div class="red-input-group">
<mat-checkbox name="caseSensitive" formControlName="caseSensitive" color="primary"> <mat-checkbox color="primary" formControlName="caseSensitive" name="caseSensitive">
{{ 'add-edit-dictionary.form.case-sensitive' | translate }} {{ 'add-edit-dictionary.form.case-sensitive' | translate }}
</mat-checkbox> </mat-checkbox>
</div> </div>
<div class="red-input-group"> <div class="red-input-group">
<mat-checkbox name="addToDictionaryAction" formControlName="addToDictionaryAction" color="primary"> <mat-checkbox color="primary" formControlName="addToDictionaryAction" name="addToDictionaryAction">
{{ 'add-edit-dictionary.form.add-to-dictionary-action' | translate }} {{ 'add-edit-dictionary.form.add-to-dictionary-action' | translate }}
</mat-checkbox> </mat-checkbox>
</div> </div>
@ -87,5 +87,5 @@
</div> </div>
</form> </form>
<redaction-circle-button icon="red:close" mat-dialog-close class="dialog-close"></redaction-circle-button> <redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
</section> </section>

View File

@ -7,7 +7,7 @@
<div class="dialog-content"> <div class="dialog-content">
<div class="red-input-group required w-300"> <div class="red-input-group required w-300">
<label translate="add-edit-project-template.form.name"></label> <label translate="add-edit-project-template.form.name"></label>
<input formControlName="name" name="name" type="text" placeholder="{{ 'add-edit-project-template.form.name-placeholder' | translate }}" /> <input formControlName="name" name="name" placeholder="{{ 'add-edit-project-template.form.name-placeholder' | translate }}" type="text" />
</div> </div>
<div class="red-input-group w-400"> <div class="red-input-group w-400">
@ -15,19 +15,19 @@
<textarea <textarea
formControlName="description" formControlName="description"
name="description" name="description"
type="text"
rows="4"
placeholder="{{ 'add-edit-project-template.form.description-placeholder' | translate }}" placeholder="{{ 'add-edit-project-template.form.description-placeholder' | translate }}"
rows="4"
type="text"
></textarea> ></textarea>
</div> </div>
<div class="validity"> <div class="validity">
<div> <div>
<mat-checkbox [checked]="hasValidFrom" (change)="hasValidFrom = !hasValidFrom" class="filter-menu-checkbox" color="primary"> <mat-checkbox (change)="hasValidFrom = !hasValidFrom" [checked]="hasValidFrom" class="filter-menu-checkbox" color="primary">
{{ 'add-edit-project-template.form.valid-from' | translate }} {{ 'add-edit-project-template.form.valid-from' | translate }}
</mat-checkbox> </mat-checkbox>
<mat-checkbox [checked]="hasValidTo" (change)="hasValidTo = !hasValidTo" class="filter-menu-checkbox" color="primary"> <mat-checkbox (change)="hasValidTo = !hasValidTo" [checked]="hasValidTo" class="filter-menu-checkbox" color="primary">
{{ 'add-edit-project-template.form.valid-to' | translate }} {{ 'add-edit-project-template.form.valid-to' | translate }}
</mat-checkbox> </mat-checkbox>
</div> </div>
@ -35,8 +35,8 @@
<div> <div>
<div class="red-input-group datepicker-wrapper"> <div class="red-input-group datepicker-wrapper">
<ng-container *ngIf="hasValidFrom"> <ng-container *ngIf="hasValidFrom">
<input placeholder="dd/mm/yy" [matDatepicker]="fromPicker" formControlName="validFrom" /> <input [matDatepicker]="fromPicker" formControlName="validFrom" placeholder="dd/mm/yy" />
<mat-datepicker-toggle matSuffix [for]="fromPicker"> <mat-datepicker-toggle [for]="fromPicker" matSuffix>
<mat-icon matDatepickerToggleIcon svgIcon="red:calendar"></mat-icon> <mat-icon matDatepickerToggleIcon svgIcon="red:calendar"></mat-icon>
</mat-datepicker-toggle> </mat-datepicker-toggle>
<mat-datepicker #fromPicker></mat-datepicker> <mat-datepicker #fromPicker></mat-datepicker>
@ -45,8 +45,8 @@
<div class="red-input-group datepicker-wrapper"> <div class="red-input-group datepicker-wrapper">
<ng-container *ngIf="hasValidTo"> <ng-container *ngIf="hasValidTo">
<input placeholder="dd/mm/yy" [matDatepicker]="toPicker" formControlName="validTo" /> <input [matDatepicker]="toPicker" formControlName="validTo" placeholder="dd/mm/yy" />
<mat-datepicker-toggle matSuffix [for]="toPicker"> <mat-datepicker-toggle [for]="toPicker" matSuffix>
<mat-icon matDatepickerToggleIcon svgIcon="red:calendar"></mat-icon> <mat-icon matDatepickerToggleIcon svgIcon="red:calendar"></mat-icon>
</mat-datepicker-toggle> </mat-datepicker-toggle>
<mat-datepicker #toPicker></mat-datepicker> <mat-datepicker #toPicker></mat-datepicker>
@ -58,17 +58,17 @@
<p class="download-includes">{{ 'download-includes' | translate }}</p> <p class="download-includes">{{ 'download-includes' | translate }}</p>
<div class="space-between"> <div class="space-between">
<redaction-select <redaction-select
class="w-410" [label]="'report-type.label' | translate: { length: this.ruleSetForm.controls['reportTypes'].value.length }"
[options]="reportTypesEnum" [options]="reportTypesEnum"
[translatePrefix]="'report-type.'" [translatePrefix]="'report-type.'"
[label]="'report-type.label' | translate: { length: this.ruleSetForm.controls['reportTypes'].value.length }" class="w-410"
formControlName="reportTypes" formControlName="reportTypes"
></redaction-select> ></redaction-select>
<redaction-select <redaction-select
class="w-410" [label]="'download-type.label' | translate: { length: this.ruleSetForm.controls['downloadFileTypes'].value.length }"
[options]="downloadTypesEnum" [options]="downloadTypesEnum"
[translatePrefix]="'download-type.'" [translatePrefix]="'download-type.'"
[label]="'download-type.label' | translate: { length: this.ruleSetForm.controls['downloadFileTypes'].value.length }" class="w-410"
formControlName="downloadFileTypes" formControlName="downloadFileTypes"
></redaction-select> ></redaction-select>
</div> </div>
@ -81,5 +81,5 @@
</div> </div>
</form> </form>
<redaction-circle-button icon="red:close" mat-dialog-close class="dialog-close"></redaction-circle-button> <redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
</section> </section>

View File

@ -28,7 +28,7 @@
<div class="red-input-group"> <div class="red-input-group">
<label translate="add-edit-user.form.role"></label> <label translate="add-edit-user.form.role"></label>
<div class="roles-wrapper"> <div class="roles-wrapper">
<mat-checkbox [formControlName]="role" *ngFor="let role of ROLES" color="primary"> <mat-checkbox *ngFor="let role of ROLES" [formControlName]="role" color="primary">
{{ 'roles.' + role | translate }} {{ 'roles.' + role | translate }}
</mat-checkbox> </mat-checkbox>
</div> </div>
@ -40,11 +40,11 @@
{{ (user ? 'add-edit-user.actions.save-changes' : 'add-edit-user.actions.save') | translate }} {{ (user ? 'add-edit-user.actions.save-changes' : 'add-edit-user.actions.save') | translate }}
</button> </button>
<redaction-icon-button *ngIf="user" icon="red:trash" type="show-bg" (action)="delete()" text="add-edit-user.actions.delete"></redaction-icon-button> <redaction-icon-button (action)="delete()" *ngIf="user" icon="red:trash" text="add-edit-user.actions.delete" type="show-bg"></redaction-icon-button>
<div class="all-caps-label cancel" mat-dialog-close translate="add-edit-user.actions.cancel"></div> <div class="all-caps-label cancel" mat-dialog-close translate="add-edit-user.actions.cancel"></div>
</div> </div>
</form> </form>
<redaction-circle-button icon="red:close" mat-dialog-close class="dialog-close"></redaction-circle-button> <redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
</section> </section>

View File

@ -3,7 +3,7 @@
{{ 'confirm-delete-file-attribute.title.' + type | translate: { name: fileAttribute?.label } }} {{ 'confirm-delete-file-attribute.title.' + type | translate: { name: fileAttribute?.label } }}
</div> </div>
<div class="inline-dialog-toast toast-error" *ngIf="showToast"> <div *ngIf="showToast" class="inline-dialog-toast toast-error">
<div translate="confirm-delete-file-attribute.toast-error"></div> <div translate="confirm-delete-file-attribute.toast-error"></div>
<a (click)="showToast = false" class="toast-close-button"> <a (click)="showToast = false" class="toast-close-button">
<mat-icon svgIcon="red:close"></mat-icon> <mat-icon svgIcon="red:close"></mat-icon>
@ -16,18 +16,18 @@
<mat-checkbox <mat-checkbox
*ngFor="let checkbox of checkboxes; let idx = index" *ngFor="let checkbox of checkboxes; let idx = index"
[(ngModel)]="checkbox.value" [(ngModel)]="checkbox.value"
color="primary"
[class.error]="!checkbox.value && showToast" [class.error]="!checkbox.value && showToast"
color="primary"
> >
{{ 'confirm-delete-file-attribute.' + checkbox.label | translate }} {{ 'confirm-delete-file-attribute.' + checkbox.label | translate }}
</mat-checkbox> </mat-checkbox>
</div> </div>
<div class="dialog-actions"> <div class="dialog-actions">
<button color="primary" mat-flat-button (click)="deleteFileAttribute()"> <button (click)="deleteFileAttribute()" color="primary" mat-flat-button>
{{ 'confirm-delete-file-attribute.delete.' + type | translate }} {{ 'confirm-delete-file-attribute.delete.' + type | translate }}
</button> </button>
<div class="all-caps-label cancel" (click)="cancel()" [translate]="'confirm-delete-file-attribute.cancel.' + type"></div> <div (click)="cancel()" [translate]="'confirm-delete-file-attribute.cancel.' + type" class="all-caps-label cancel"></div>
</div> </div>
<redaction-circle-button icon="red:close" mat-dialog-close class="dialog-close"></redaction-circle-button> <redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
</section> </section>

View File

@ -1,7 +1,7 @@
<section class="dialog"> <section class="dialog">
<div class="dialog-header heading-l" [translate]="'confirm-delete-users.title.' + type"></div> <div [translate]="'confirm-delete-users.title.' + type" class="dialog-header heading-l"></div>
<div class="inline-dialog-toast toast-error" *ngIf="showToast"> <div *ngIf="showToast" class="inline-dialog-toast toast-error">
<div translate="confirm-delete-users.toast-error"></div> <div translate="confirm-delete-users.toast-error"></div>
<a (click)="showToast = false" class="toast-close-button"> <a (click)="showToast = false" class="toast-close-button">
<mat-icon svgIcon="red:close"></mat-icon> <mat-icon svgIcon="red:close"></mat-icon>
@ -14,18 +14,18 @@
<mat-checkbox <mat-checkbox
*ngFor="let checkbox of checkboxes; let idx = index" *ngFor="let checkbox of checkboxes; let idx = index"
[(ngModel)]="checkbox.value" [(ngModel)]="checkbox.value"
color="primary"
[class.error]="!checkbox.value && showToast" [class.error]="!checkbox.value && showToast"
color="primary"
> >
{{ 'confirm-delete-users.' + checkbox.label | translate: { projectsCount: projectsCount } }} {{ 'confirm-delete-users.' + checkbox.label | translate: { projectsCount: projectsCount } }}
</mat-checkbox> </mat-checkbox>
</div> </div>
<div class="dialog-actions"> <div class="dialog-actions">
<button color="primary" mat-flat-button (click)="deleteUser()"> <button (click)="deleteUser()" color="primary" mat-flat-button>
{{ 'confirm-delete-users.delete.' + type | translate }} {{ 'confirm-delete-users.delete.' + type | translate }}
</button> </button>
<div class="all-caps-label cancel" (click)="cancel()" [translate]="'confirm-delete-users.cancel.' + type"></div> <div (click)="cancel()" [translate]="'confirm-delete-users.cancel.' + type" class="all-caps-label cancel"></div>
</div> </div>
<redaction-circle-button icon="red:close" mat-dialog-close class="dialog-close"></redaction-circle-button> <redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
</section> </section>

View File

@ -1,5 +1,5 @@
<section class="dialog"> <section class="dialog">
<div class="dialog-header heading-l" [translate]="'default-colors-screen.types.' + this.colorKey"></div> <div [translate]="'default-colors-screen.types.' + this.colorKey" class="dialog-header heading-l"></div>
<form (submit)="saveColors()" [formGroup]="colorForm"> <form (submit)="saveColors()" [formGroup]="colorForm">
<div class="dialog-content"> <div class="dialog-content">
@ -9,17 +9,17 @@
class="hex-color-input" class="hex-color-input"
formControlName="color" formControlName="color"
name="color" name="color"
type="text"
placeholder="{{ 'edit-color-dialog.form.color-placeholder' | translate }}" placeholder="{{ 'edit-color-dialog.form.color-placeholder' | translate }}"
type="text"
/> />
<div <div
class="input-icon" (colorPickerChange)="colorForm.get('color').setValue($event)"
[style.background]="colorForm.get('color').value"
[colorPicker]="colorForm.get('color').value" [colorPicker]="colorForm.get('color').value"
[cpOutputFormat]="'hex'" [cpOutputFormat]="'hex'"
(colorPickerChange)="colorForm.get('color').setValue($event)" [style.background]="colorForm.get('color').value"
class="input-icon"
> >
<mat-icon svgIcon="red:color-picker" *ngIf="!colorForm.get('color').value || colorForm.get('color').value?.length === 0"></mat-icon> <mat-icon *ngIf="!colorForm.get('color').value || colorForm.get('color').value?.length === 0" svgIcon="red:color-picker"></mat-icon>
</div> </div>
</div> </div>
</div> </div>
@ -31,5 +31,5 @@
</div> </div>
</form> </form>
<redaction-circle-button icon="red:close" mat-dialog-close class="dialog-close"></redaction-circle-button> <redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
</section> </section>

View File

@ -13,39 +13,39 @@
<ng-container *ngIf="areSomeEntitiesSelected"> <ng-container *ngIf="areSomeEntitiesSelected">
<redaction-circle-button <redaction-circle-button
[matMenuTriggerFor]="readOnlyMenu" [matMenuTriggerFor]="readOnlyMenu"
icon="red:read-only"
tooltip="file-attributes-csv-import.table-header.actions.read-only" tooltip="file-attributes-csv-import.table-header.actions.read-only"
type="dark-bg" type="dark-bg"
icon="red:read-only"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button <redaction-circle-button
(action)="deactivateSelection()" (action)="deactivateSelection()"
icon="red:trash"
tooltip="file-attributes-csv-import.table-header.actions.remove-selected" tooltip="file-attributes-csv-import.table-header.actions.remove-selected"
type="dark-bg" type="dark-bg"
icon="red:trash"
> >
</redaction-circle-button> </redaction-circle-button>
<div class="separator"></div> <div class="separator"></div>
<redaction-chevron-button text="file-attributes-csv-import.table-header.actions.type" [matMenuTriggerFor]="typeMenu"></redaction-chevron-button> <redaction-chevron-button [matMenuTriggerFor]="typeMenu" text="file-attributes-csv-import.table-header.actions.type"></redaction-chevron-button>
<mat-menu #readOnlyMenu="matMenu" class="no-padding-bottom"> <mat-menu #readOnlyMenu="matMenu" class="no-padding-bottom">
<button <button
mat-menu-item
(click)="setAttributeForSelection('readonly', true)" (click)="setAttributeForSelection('readonly', true)"
mat-menu-item
translate="file-attributes-csv-import.table-header.actions.enable-read-only" translate="file-attributes-csv-import.table-header.actions.enable-read-only"
></button> ></button>
<button <button
mat-menu-item
(click)="setAttributeForSelection('readonly', false)" (click)="setAttributeForSelection('readonly', false)"
mat-menu-item
translate="file-attributes-csv-import.table-header.actions.disable-read-only" translate="file-attributes-csv-import.table-header.actions.disable-read-only"
></button> ></button>
</mat-menu> </mat-menu>
<mat-menu #typeMenu="matMenu" class="no-padding-bottom"> <mat-menu #typeMenu="matMenu" class="no-padding-bottom">
<button *ngFor="let type of typeOptions" mat-menu-item (click)="setAttributeForSelection('type', type)"> <button (click)="setAttributeForSelection('type', type)" *ngFor="let type of typeOptions" mat-menu-item>
{{ 'file-attribute-types.' + type | translate }} {{ 'file-attribute-types.' + type | translate }}
</button> </button>
</mat-menu> </mat-menu>
@ -55,21 +55,21 @@
<div class="table-header" redactionSyncWidth="table-item"> <div class="table-header" redactionSyncWidth="table-item">
<div class="select-oval-placeholder"></div> <div class="select-oval-placeholder"></div>
<redaction-table-col-name label="file-attributes-csv-import.table-col-names.name" class="name"></redaction-table-col-name> <redaction-table-col-name class="name" label="file-attributes-csv-import.table-col-names.name"></redaction-table-col-name>
<redaction-table-col-name label="file-attributes-csv-import.table-col-names.type"></redaction-table-col-name> <redaction-table-col-name label="file-attributes-csv-import.table-col-names.type"></redaction-table-col-name>
<redaction-table-col-name <redaction-table-col-name
label="file-attributes-csv-import.table-col-names.read-only"
class="flex-center" class="flex-center"
label="file-attributes-csv-import.table-col-names.read-only"
leftIcon="red:read-only" leftIcon="red:read-only"
></redaction-table-col-name> ></redaction-table-col-name>
<redaction-table-col-name <redaction-table-col-name
class="flex-center"
label="file-attributes-csv-import.table-col-names.primary" label="file-attributes-csv-import.table-col-names.primary"
rightIcon="red:status-info" rightIcon="red:status-info"
rightIconTooltip="file-attributes-csv-import.table-col-names.primary-info-tooltip" rightIconTooltip="file-attributes-csv-import.table-col-names.primary-info-tooltip"
class="flex-center"
></redaction-table-col-name> ></redaction-table-col-name>
<div></div> <div></div>
@ -81,45 +81,45 @@
<cdk-virtual-scroll-viewport [itemSize]="50" redactionHasScrollbar> <cdk-virtual-scroll-viewport [itemSize]="50" redactionHasScrollbar>
<!-- Table lines --> <!-- Table lines -->
<div <div
class="table-item"
*cdkVirtualFor="let field of displayedEntities"
(mouseenter)="setHoveredColumn.emit(field.csvColumn)" (mouseenter)="setHoveredColumn.emit(field.csvColumn)"
(mouseleave)="setHoveredColumn.emit()" (mouseleave)="setHoveredColumn.emit()"
*cdkVirtualFor="let field of displayedEntities"
class="table-item"
> >
<div class="selection-column" (click)="toggleEntitySelected($event, field)"> <div (click)="toggleEntitySelected($event, field)" class="selection-column">
<redaction-round-checkbox [active]="isEntitySelected(field)"></redaction-round-checkbox> <redaction-round-checkbox [active]="isEntitySelected(field)"></redaction-round-checkbox>
</div> </div>
<div class="name" [class.editing]="field.editingName"> <div [class.editing]="field.editingName" class="name">
<div *ngIf="!field.editingName"> <div *ngIf="!field.editingName">
{{ field.name }} {{ field.name }}
</div> </div>
<form (submit)="field.editingName = false; field.name = field.temporaryName" *ngIf="field.editingName"> <form (submit)="field.editingName = false; field.name = field.temporaryName" *ngIf="field.editingName">
<div class="red-input-group w-200"> <div class="red-input-group w-200">
<input name="name" [(ngModel)]="field.temporaryName" /> <input [(ngModel)]="field.temporaryName" name="name" />
</div> </div>
</form> </form>
<redaction-circle-button <redaction-circle-button
class="edit-name-button"
*ngIf="!field.editingName"
(action)="field.editingName = true" (action)="field.editingName = true"
*ngIf="!field.editingName"
class="edit-name-button"
icon="red:edit"
tooltip="file-attributes-csv-import.action.edit-name" tooltip="file-attributes-csv-import.action.edit-name"
type="dark-bg" type="dark-bg"
icon="red:edit"
> >
</redaction-circle-button> </redaction-circle-button>
<ng-container *ngIf="field.editingName"> <ng-container *ngIf="field.editingName">
<redaction-circle-button <redaction-circle-button
(action)="field.editingName = false; field.name = field.temporaryName" (action)="field.editingName = false; field.name = field.temporaryName"
icon="red:check"
tooltip="file-attributes-csv-import.action.save-name" tooltip="file-attributes-csv-import.action.save-name"
type="dark-bg" type="dark-bg"
icon="red:check"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button <redaction-circle-button
(action)="field.editingName = false; field.temporaryName = field.name" (action)="field.editingName = false; field.temporaryName = field.name"
icon="red:close"
tooltip="file-attributes-csv-import.action.cancel-edit-name" tooltip="file-attributes-csv-import.action.cancel-edit-name"
type="dark-bg" type="dark-bg"
icon="red:close"
> >
</redaction-circle-button> </redaction-circle-button>
</ng-container> </ng-container>
@ -146,9 +146,9 @@
<redaction-circle-button <redaction-circle-button
(action)="field.primaryAttribute = false; toggleFieldActive.emit(field)" (action)="field.primaryAttribute = false; toggleFieldActive.emit(field)"
[removeTooltip]="true" [removeTooltip]="true"
icon="red:trash"
tooltip="file-attributes-csv-import.action.remove" tooltip="file-attributes-csv-import.action.remove"
type="dark-bg" type="dark-bg"
icon="red:trash"
> >
</redaction-circle-button> </redaction-circle-button>
</div> </div>

View File

@ -1,5 +1,5 @@
<section class="dialog"> <section class="dialog">
<div translate="file-attributes-csv-import.title" class="dialog-header heading-l"></div> <div class="dialog-header heading-l" translate="file-attributes-csv-import.title"></div>
<div class="dialog-content"> <div class="dialog-content">
<div class="sub-header"> <div class="sub-header">
@ -10,18 +10,18 @@
</div> </div>
</div> </div>
<div class="right"> <div class="right">
<form [formGroup]="baseConfigForm" (submit)="changedParseConfig && readFile()"> <form (submit)="changedParseConfig && readFile()" [formGroup]="baseConfigForm">
<div class="red-input-group required w-250"> <div class="red-input-group required w-250">
<mat-form-field floatLabel="always"> <mat-form-field floatLabel="always">
<mat-label>{{ 'file-attributes-csv-import.key-column' | translate }}</mat-label> <mat-label>{{ 'file-attributes-csv-import.key-column' | translate }}</mat-label>
<input <input
type="text"
[placeholder]="'file-attributes-csv-import.key-column-placeholder' | translate"
matInput
formControlName="filenameMappingColumnHeaderName"
[matAutocomplete]="auto" [matAutocomplete]="auto"
[placeholder]="'file-attributes-csv-import.key-column-placeholder' | translate"
formControlName="filenameMappingColumnHeaderName"
matInput
type="text"
/> />
<mat-autocomplete autoActiveFirstOption #auto="matAutocomplete"> <mat-autocomplete #auto="matAutocomplete" autoActiveFirstOption>
<mat-option *ngFor="let field of filteredKeyOptions | async" [value]="field"> <mat-option *ngFor="let field of filteredKeyOptions | async" [value]="field">
{{ field }} {{ field }}
</mat-option> </mat-option>
@ -32,25 +32,25 @@
<div class="red-input-group required w-110"> <div class="red-input-group required w-110">
<label translate="file-attributes-csv-import.delimiter"></label> <label translate="file-attributes-csv-import.delimiter"></label>
<input <input
[placeholder]="'file-attributes-csv-import.delimiter-placeholder' | translate"
formControlName="delimiter" formControlName="delimiter"
name="delimiter" name="delimiter"
type="text" type="text"
[placeholder]="'file-attributes-csv-import.delimiter-placeholder' | translate"
/> />
</div> </div>
<div class="red-input-group required w-160"> <div class="red-input-group required w-160">
<label translate="file-attributes-csv-import.encoding"></label> <label translate="file-attributes-csv-import.encoding"></label>
<input <input
[placeholder]="'file-attributes-csv-import.encoding-placeholder' | translate"
formControlName="encoding" formControlName="encoding"
name="encoding" name="encoding"
type="text" type="text"
[placeholder]="'file-attributes-csv-import.encoding-placeholder' | translate"
/> />
</div> </div>
<redaction-circle-button <redaction-circle-button
*ngIf="changedParseConfig"
(action)="readFile()" (action)="readFile()"
*ngIf="changedParseConfig"
icon="red:check" icon="red:check"
tooltip="file-attributes-csv-import.parse-csv" tooltip="file-attributes-csv-import.parse-csv"
></redaction-circle-button> ></redaction-circle-button>
@ -68,40 +68,40 @@
</div> </div>
<div class="actions"> <div class="actions">
<redaction-circle-button <redaction-circle-button
icon="red:search"
(click)="isSearchOpen = !isSearchOpen" (click)="isSearchOpen = !isSearchOpen"
[attr.aria-expanded]="isSearchOpen" [attr.aria-expanded]="isSearchOpen"
icon="red:search"
></redaction-circle-button> ></redaction-circle-button>
<div class="quick-activation"> <div class="quick-activation">
<span <span
class="all-caps-label primary pointer"
(click)="activateAll()" (click)="activateAll()"
class="all-caps-label primary pointer"
translate="file-attributes-csv-import.quick-activation.all" translate="file-attributes-csv-import.quick-activation.all"
></span> ></span>
<span <span
class="all-caps-label primary pointer"
(click)="deactivateAll()" (click)="deactivateAll()"
class="all-caps-label primary pointer"
translate="file-attributes-csv-import.quick-activation.none" translate="file-attributes-csv-import.quick-activation.none"
></span> ></span>
</div> </div>
</div> </div>
</div> </div>
<div class="search-input-container" *ngIf="isSearchOpen"> <div *ngIf="isSearchOpen" class="search-input-container">
<redaction-search-input <redaction-search-input
[form]="searchForm" [form]="searchForm"
placeholder="file-attributes-csv-import.search.placeholder" placeholder="file-attributes-csv-import.search.placeholder"
width="full" width="full"
></redaction-search-input> ></redaction-search-input>
</div> </div>
<div class="csv-header-pill-content" [class.search-open]="isSearchOpen"> <div [class.search-open]="isSearchOpen" class="csv-header-pill-content">
<div <div
class="csv-header-pill-wrapper" (click)="toggleFieldActive(field)"
*ngFor="let field of displayedEntities"
(mouseenter)="setHoveredColumn(field.csvColumn)" (mouseenter)="setHoveredColumn(field.csvColumn)"
(mouseleave)="setHoveredColumn()" (mouseleave)="setHoveredColumn()"
(click)="toggleFieldActive(field)" *ngFor="let field of displayedEntities"
class="csv-header-pill-wrapper"
> >
<div class="csv-header-pill" [class.selected]="isActive(field)"> <div [class.selected]="isActive(field)" class="csv-header-pill">
<div class="name"> <div class="name">
{{ field.csvColumn }} {{ field.csvColumn }}
</div> </div>
@ -113,19 +113,19 @@
</div> </div>
</div> </div>
</div> </div>
<div class="center" [class.collapsed]="!previewExpanded" (mouseenter)="keepPreview = true" (mouseleave)="keepPreview = false; setHoveredColumn()"> <div (mouseenter)="keepPreview = true" (mouseleave)="keepPreview = false; setHoveredColumn()" [class.collapsed]="!previewExpanded" class="center">
<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 }}
</div> </div>
<redaction-circle-button <redaction-circle-button
[icon]="previewExpanded ? 'red:expand' : 'red:collapse'"
(click)="previewExpanded = !previewExpanded" (click)="previewExpanded = !previewExpanded"
[icon]="previewExpanded ? 'red:expand' : 'red:collapse'"
></redaction-circle-button> ></redaction-circle-button>
</div> </div>
<div class="csv-part-content" [class.hidden]="!previewExpanded"> <div [class.hidden]="!previewExpanded" class="csv-part-content">
<div class="no-column-data" *ngIf="!hoveredColumn" translate="file-attributes-csv-import.no-hovered-column"></div> <div *ngIf="!hoveredColumn" class="no-column-data" translate="file-attributes-csv-import.no-hovered-column"></div>
<div class="no-column-data" *ngIf="hoveredColumn && !columnSample.length"> <div *ngIf="hoveredColumn && !columnSample.length" class="no-column-data">
{{ 'file-attributes-csv-import.no-sample-data-for' | translate: { column: hoveredColumn } }} {{ 'file-attributes-csv-import.no-sample-data-for' | translate: { column: hoveredColumn } }}
</div> </div>
<div *ngFor="let row of columnSample"> <div *ngFor="let row of columnSample">
@ -135,21 +135,21 @@
</div> </div>
<div class="content-container"> <div class="content-container">
<redaction-active-fields-listing <redaction-active-fields-listing
[(allEntities)]="activeFields"
(setHoveredColumn)="setHoveredColumn($event)" (setHoveredColumn)="setHoveredColumn($event)"
(toggleFieldActive)="toggleFieldActive($event)" (toggleFieldActive)="toggleFieldActive($event)"
[(allEntities)]="activeFields"
></redaction-active-fields-listing> ></redaction-active-fields-listing>
</div> </div>
</div> </div>
</div> </div>
<div class="dialog-actions"> <div class="dialog-actions">
<button color="primary" mat-flat-button (click)="save()" [disabled]="changedParseConfig || baseConfigForm.invalid"> <button (click)="save()" [disabled]="changedParseConfig || baseConfigForm.invalid" color="primary" mat-flat-button>
{{ 'file-attributes-csv-import.save.label' | translate }} {{ 'file-attributes-csv-import.save.label' | translate }}
</button> </button>
<div class="all-caps-label cancel" (click)="dialogRef.close()">{{ 'file-attributes-csv-import.cancel' | translate }}</div> <div (click)="dialogRef.close()" class="all-caps-label cancel">{{ 'file-attributes-csv-import.cancel' | translate }}</div>
</div> </div>
<redaction-circle-button icon="red:close" mat-dialog-close class="dialog-close"></redaction-circle-button> <redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
</section> </section>

View File

@ -5,7 +5,7 @@
<div class="dialog-content"> <div class="dialog-content">
<div class="red-input-group required w-300"> <div class="red-input-group required w-300">
<label translate="smtp-auth-config.form.username"></label> <label translate="smtp-auth-config.form.username"></label>
<input formControlName="user" name="user" type="text" placeholder="{{ 'smtp-auth-config.form.username-placeholder' | translate }}" /> <input formControlName="user" name="user" placeholder="{{ 'smtp-auth-config.form.username-placeholder' | translate }}" type="text" />
</div> </div>
<div class="red-input-group required w-300"> <div class="red-input-group required w-300">
@ -22,5 +22,5 @@
</div> </div>
</form> </form>
<redaction-circle-button icon="red:close" mat-dialog-close class="dialog-close"></redaction-circle-button> <redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
</section> </section>

View File

@ -5,7 +5,7 @@
<div class="flex-1 actions"> <div class="flex-1 actions">
<redaction-rule-set-actions></redaction-rule-set-actions> <redaction-rule-set-actions></redaction-rule-set-actions>
<redaction-circle-button [routerLink]="['../..']" tooltip="common.close" tooltipPosition="below" icon="red:close"></redaction-circle-button> <redaction-circle-button [routerLink]="['../..']" icon="red:close" tooltip="common.close" tooltipPosition="below"></redaction-circle-button>
</div> </div>
</div> </div>
@ -23,14 +23,14 @@
<div class="table-header" redactionSyncWidth="table-item"> <div class="table-header" redactionSyncWidth="table-item">
<redaction-table-col-name <redaction-table-col-name
label="default-colors-screen.table-col-names.key"
column="key"
(toggleSort)="toggleSort($event)" (toggleSort)="toggleSort($event)"
[activeSortingOption]="sortingOption" [activeSortingOption]="sortingOption"
[withSort]="true" [withSort]="true"
column="key"
label="default-colors-screen.table-col-names.key"
></redaction-table-col-name> ></redaction-table-col-name>
<redaction-table-col-name label="default-colors-screen.table-col-names.color" class="flex-center"></redaction-table-col-name> <redaction-table-col-name class="flex-center" label="default-colors-screen.table-col-names.color"></redaction-table-col-name>
<div></div> <div></div>
<div class="scrollbar-placeholder"></div> <div class="scrollbar-placeholder"></div>
@ -38,13 +38,13 @@
<cdk-virtual-scroll-viewport [itemSize]="80" redactionHasScrollbar> <cdk-virtual-scroll-viewport [itemSize]="80" redactionHasScrollbar>
<!-- Table lines --> <!-- Table lines -->
<div class="table-item" *cdkVirtualFor="let color of allEntities | sortBy: sortingOption.order:sortingOption.column"> <div *cdkVirtualFor="let color of allEntities | sortBy: sortingOption.order:sortingOption.column" class="table-item">
<div> <div>
<div class="table-item-title heading" [translate]="'default-colors-screen.types.' + color.key"></div> <div [translate]="'default-colors-screen.types.' + color.key" class="table-item-title heading"></div>
</div> </div>
<div class="color-wrapper"> <div class="color-wrapper">
<div class="color-square" [ngStyle]="{ 'background-color': color.value }"></div> <div [ngStyle]="{ 'background-color': color.value }" class="color-square"></div>
</div> </div>
<div class="actions-container"> <div class="actions-container">
@ -52,9 +52,9 @@
<redaction-circle-button <redaction-circle-button
(action)="openEditColorDialog($event, color)" (action)="openEditColorDialog($event, color)"
*ngIf="permissionsService.isAdmin()" *ngIf="permissionsService.isAdmin()"
icon="red:edit"
tooltip="default-colors-screen.action.edit" tooltip="default-colors-screen.action.edit"
type="dark-bg" type="dark-bg"
icon="red:edit"
> >
</redaction-circle-button> </redaction-circle-button>
</div> </div>

View File

@ -5,7 +5,7 @@
<div class="flex-1 actions"> <div class="flex-1 actions">
<redaction-rule-set-actions></redaction-rule-set-actions> <redaction-rule-set-actions></redaction-rule-set-actions>
<redaction-circle-button [routerLink]="['../..']" tooltip="common.close" tooltipPosition="below" icon="red:close"></redaction-circle-button> <redaction-circle-button [routerLink]="['../..']" icon="red:close" tooltip="common.close" tooltipPosition="below"></redaction-circle-button>
</div> </div>
</div> </div>
@ -32,9 +32,9 @@
<redaction-search-input [form]="searchForm" [placeholder]="'dictionary-listing.search'"></redaction-search-input> <redaction-search-input [form]="searchForm" [placeholder]="'dictionary-listing.search'"></redaction-search-input>
<div class="actions"> <div class="actions">
<redaction-icon-button <redaction-icon-button
(action)="openAddEditDictionaryDialog()"
*ngIf="permissionsService.isAdmin()" *ngIf="permissionsService.isAdmin()"
icon="red:plus" icon="red:plus"
(action)="openAddEditDictionaryDialog()"
text="dictionary-listing.add-new" text="dictionary-listing.add-new"
type="primary" type="primary"
></redaction-icon-button> ></redaction-icon-button>
@ -42,36 +42,36 @@
</div> </div>
</div> </div>
<div class="table-header" redactionSyncWidth="table-item" [class.no-data]="!allEntities.length"> <div [class.no-data]="!allEntities.length" class="table-header" redactionSyncWidth="table-item">
<div class="select-oval-placeholder"></div> <div class="select-oval-placeholder"></div>
<redaction-table-col-name <redaction-table-col-name
label="dictionary-listing.table-col-names.type"
column="label"
(toggleSort)="toggleSort($event)" (toggleSort)="toggleSort($event)"
[activeSortingOption]="sortingOption" [activeSortingOption]="sortingOption"
[withSort]="true" [withSort]="true"
column="label"
label="dictionary-listing.table-col-names.type"
></redaction-table-col-name> ></redaction-table-col-name>
<redaction-table-col-name <redaction-table-col-name
label="dictionary-listing.table-col-names.order-of-importance"
column="rank"
class="flex-center"
(toggleSort)="toggleSort($event)" (toggleSort)="toggleSort($event)"
[activeSortingOption]="sortingOption" [activeSortingOption]="sortingOption"
[withSort]="true" [withSort]="true"
class="flex-center"
column="rank"
label="dictionary-listing.table-col-names.order-of-importance"
></redaction-table-col-name> ></redaction-table-col-name>
<redaction-table-col-name label="dictionary-listing.table-col-names.hint-redaction" class="flex-center"></redaction-table-col-name> <redaction-table-col-name class="flex-center" label="dictionary-listing.table-col-names.hint-redaction"></redaction-table-col-name>
<div></div> <div></div>
<div class="scrollbar-placeholder"></div> <div class="scrollbar-placeholder"></div>
</div> </div>
<redaction-empty-state <redaction-empty-state
*ngIf="!allEntities.length"
icon="red:dictionary"
(action)="openAddEditDictionaryDialog()" (action)="openAddEditDictionaryDialog()"
*ngIf="!allEntities.length"
[showButton]="permissionsService.isAdmin()" [showButton]="permissionsService.isAdmin()"
icon="red:dictionary"
screen="dictionary-listing" screen="dictionary-listing"
></redaction-empty-state> ></redaction-empty-state>
@ -79,16 +79,16 @@
<cdk-virtual-scroll-viewport [itemSize]="80" redactionHasScrollbar> <cdk-virtual-scroll-viewport [itemSize]="80" redactionHasScrollbar>
<div <div
class="table-item pointer"
*cdkVirtualFor="let dict of displayedEntities | sortBy: sortingOption.order:sortingOption.column" *cdkVirtualFor="let dict of displayedEntities | sortBy: sortingOption.order:sortingOption.column"
[routerLink]="[dict.type]" [routerLink]="[dict.type]"
class="table-item pointer"
> >
<div class="selection-column" (click)="toggleEntitySelected($event, dict)"> <div (click)="toggleEntitySelected($event, dict)" class="selection-column">
<redaction-round-checkbox [active]="isEntitySelected(dict)"></redaction-round-checkbox> <redaction-round-checkbox [active]="isEntitySelected(dict)"></redaction-round-checkbox>
</div> </div>
<div> <div>
<div class="color-square" [ngStyle]="{ 'background-color': dict.hexColor }"></div> <div [ngStyle]="{ 'background-color': dict.hexColor }" class="color-square"></div>
<div class="dict-name"> <div class="dict-name">
<div class="table-item-title heading"> <div class="table-item-title heading">
{{ dict.label }} {{ dict.label }}
@ -119,18 +119,18 @@
<redaction-circle-button <redaction-circle-button
(action)="openDeleteDictionaryDialog($event, dict)" (action)="openDeleteDictionaryDialog($event, dict)"
*ngIf="permissionsService.isAdmin()" *ngIf="permissionsService.isAdmin()"
icon="red:trash"
tooltip="dictionary-listing.action.delete" tooltip="dictionary-listing.action.delete"
type="dark-bg" type="dark-bg"
icon="red:trash"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button <redaction-circle-button
(action)="openAddEditDictionaryDialog($event, dict)" (action)="openAddEditDictionaryDialog($event, dict)"
*ngIf="permissionsService.isAdmin()" *ngIf="permissionsService.isAdmin()"
icon="red:edit"
tooltip="dictionary-listing.action.edit" tooltip="dictionary-listing.action.edit"
type="dark-bg" type="dark-bg"
icon="red:edit"
> >
</redaction-circle-button> </redaction-circle-button>
</div> </div>
@ -144,11 +144,11 @@
<redaction-simple-doughnut-chart <redaction-simple-doughnut-chart
*ngIf="allEntities.length" *ngIf="allEntities.length"
[config]="chartData" [config]="chartData"
[strokeWidth]="15" [counterText]="'dictionary-listing.stats.charts.entries' | translate"
[radius]="82" [radius]="82"
[strokeWidth]="15"
[subtitle]="'dictionary-listing.stats.charts.types'" [subtitle]="'dictionary-listing.stats.charts.types'"
totalType="count" totalType="count"
[counterText]="'dictionary-listing.stats.charts.entries' | translate"
></redaction-simple-doughnut-chart> ></redaction-simple-doughnut-chart>
</div> </div>
</div> </div>

View File

@ -6,46 +6,46 @@
<redaction-circle-button <redaction-circle-button
(action)="openDeleteDictionaryDialog($event)" (action)="openDeleteDictionaryDialog($event)"
*ngIf="permissionsService.isAdmin()" *ngIf="permissionsService.isAdmin()"
icon="red:trash"
tooltip="dictionary-overview.action.delete" tooltip="dictionary-overview.action.delete"
tooltipPosition="below" tooltipPosition="below"
type="dark-bg" type="dark-bg"
icon="red:trash"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button <redaction-circle-button
(action)="openEditDictionaryDialog($event)" (action)="openEditDictionaryDialog($event)"
*ngIf="permissionsService.isAdmin()" *ngIf="permissionsService.isAdmin()"
icon="red:edit"
tooltip="dictionary-overview.action.edit" tooltip="dictionary-overview.action.edit"
tooltipPosition="below" tooltipPosition="below"
type="dark-bg" type="dark-bg"
icon="red:edit"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button <redaction-circle-button
(action)="download()" (action)="download()"
icon="red:download"
tooltip="dictionary-overview.action.download" tooltip="dictionary-overview.action.download"
tooltipPosition="below" tooltipPosition="below"
icon="red:download"
></redaction-circle-button> ></redaction-circle-button>
<redaction-circle-button <redaction-circle-button
*ngIf="permissionsService.isAdmin()"
(action)="fileInput.click()" (action)="fileInput.click()"
*ngIf="permissionsService.isAdmin()"
icon="red:upload"
tooltip="dictionary-overview.action.upload" tooltip="dictionary-overview.action.upload"
tooltipPosition="below" tooltipPosition="below"
icon="red:upload"
></redaction-circle-button> ></redaction-circle-button>
<input #fileInput (change)="upload($event)" hidden class="file-upload-input" type="file" accept="text/plain" /> <input #fileInput (change)="upload($event)" accept="text/plain" class="file-upload-input" hidden type="file" />
<redaction-circle-button <redaction-circle-button
class="ml-6"
[routerLink]="['..']" [routerLink]="['..']"
class="ml-6"
icon="red:close"
tooltip="common.close" tooltip="common.close"
tooltipPosition="below" tooltipPosition="below"
icon="red:close"
></redaction-circle-button> ></redaction-circle-button>
</div> </div>
</div> </div>
@ -59,31 +59,31 @@
<div class="actions-bar"> <div class="actions-bar">
<div class="red-input-group w-450 mr-32"> <div class="red-input-group w-450 mr-32">
<input <input
[class.with-matches]="searchText.length > 0"
type="text"
[(ngModel)]="searchText"
(keyup)="searchChanged(searchText)"
#inputElement #inputElement
(keyup)="searchChanged(searchText)"
[(ngModel)]="searchText"
[class.with-matches]="searchText.length > 0"
placeholder="{{ 'dictionary-overview.search' | translate }}" placeholder="{{ 'dictionary-overview.search' | translate }}"
type="text"
/> />
<div class="input-icons"> <div class="input-icons">
<div class="no-input" *ngIf="searchText.length === 0"> <div *ngIf="searchText.length === 0" class="no-input">
<mat-icon svgIcon="red:search"></mat-icon> <mat-icon svgIcon="red:search"></mat-icon>
</div> </div>
<div class="with-input" *ngIf="searchText.length > 0"> <div *ngIf="searchText.length > 0" class="with-input">
<div class="search-match-text"> <div class="search-match-text">
{{ currentMatch + '/' + searchPositions.length }} {{ currentMatch + '/' + searchPositions.length }}
</div> </div>
<mat-icon svgIcon="red:arrow-up" class="pointer" (click)="previousSearchMatch()"></mat-icon> <mat-icon (click)="previousSearchMatch()" class="pointer" svgIcon="red:arrow-up"></mat-icon>
<mat-icon svgIcon="red:arrow-down" class="pointer" (click)="nextSearchMatch()"></mat-icon> <mat-icon (click)="nextSearchMatch()" class="pointer" svgIcon="red:arrow-down"></mat-icon>
<mat-icon svgIcon="red:close" (click)="searchChanged(''); inputElement.focus()" class="pointer"></mat-icon> <mat-icon (click)="searchChanged(''); inputElement.focus()" class="pointer" svgIcon="red:close"></mat-icon>
</div> </div>
</div> </div>
</div> </div>
<form class="compare-form" [formGroup]="compareForm"> <form [formGroup]="compareForm" class="compare-form">
<div class="red-input-group mr-16"> <div class="red-input-group mr-16">
<mat-checkbox formControlName="active" color="primary"> {{ 'dictionary-overview.compare.compare' | translate }} </mat-checkbox> <mat-checkbox color="primary" formControlName="active"> {{ 'dictionary-overview.compare.compare' | translate }} </mat-checkbox>
</div> </div>
<div class="red-input-group w-200 mr-8"> <div class="red-input-group w-200 mr-8">
<mat-select formControlName="ruleSet"> <mat-select formControlName="ruleSet">
@ -105,16 +105,16 @@
<div class="editor-container"> <div class="editor-container">
<ace-editor <ace-editor
#editorComponent #editorComponent
[mode]="'text'"
[theme]="'eclipse'"
[options]="aceOptions"
[readOnly]="!permissionsService.isAdmin()"
(textChanged)="textChanged($event)" (textChanged)="textChanged($event)"
[autoUpdateContent]="true" [autoUpdateContent]="true"
[mode]="'text'"
[options]="aceOptions"
[readOnly]="!permissionsService.isAdmin()"
[theme]="'eclipse'"
class="ace-redaction" class="ace-redaction"
> >
</ace-editor> </ace-editor>
<div class="no-dictionary-selected" *ngIf="compareForm.get('active').value && compareForm.get('dictionary').value === selectDictionary"> <div *ngIf="compareForm.get('active').value && compareForm.get('dictionary').value === selectDictionary" class="no-dictionary-selected">
<mat-icon svgIcon="red:dictionary"></mat-icon> <mat-icon svgIcon="red:dictionary"></mat-icon>
<span class="heading-l" translate="dictionary-overview.select-dictionary"></span> <span class="heading-l" translate="dictionary-overview.select-dictionary"></span>
</div> </div>
@ -122,23 +122,23 @@
#compareEditorComponent #compareEditorComponent
*ngIf="compareForm.get('active').value && compareForm.get('dictionary').value !== selectDictionary" *ngIf="compareForm.get('active').value && compareForm.get('dictionary').value !== selectDictionary"
[mode]="'text'" [mode]="'text'"
[theme]="'eclipse'"
[options]="aceOptions" [options]="aceOptions"
[readOnly]="true" [readOnly]="true"
[theme]="'eclipse'"
class="ace-redaction" class="ace-redaction"
> >
</ace-editor> </ace-editor>
</div> </div>
<div class="changes-box" *ngIf="hasChanges && permissionsService.isAdmin()" [class.offset]="compareForm.get('active').value"> <div *ngIf="hasChanges && permissionsService.isAdmin()" [class.offset]="compareForm.get('active').value" class="changes-box">
<redaction-icon-button icon="red:check" (action)="saveEntries()" text="dictionary-overview.save-changes" type="primary"></redaction-icon-button> <redaction-icon-button (action)="saveEntries()" icon="red:check" text="dictionary-overview.save-changes" type="primary"></redaction-icon-button>
<div class="all-caps-label cancel" (click)="revert()" translate="dictionary-overview.revert-changes"></div> <div (click)="revert()" class="all-caps-label cancel" translate="dictionary-overview.revert-changes"></div>
</div> </div>
</div> </div>
<div class="right-container"> <div class="right-container">
<div class="dictionary-header"> <div class="dictionary-header">
<div class="color-box" [style.backgroundColor]="dictionary.hexColor"></div> <div [style.backgroundColor]="dictionary.hexColor" class="color-box"></div>
<div class="heading-xl"> <div class="heading-xl">
{{ dictionary.type | humanize }} {{ dictionary.type | humanize }}
</div> </div>
@ -166,7 +166,7 @@
</div> </div>
</div> </div>
<div class="pb-32 mt-20" *ngIf="!!dictionary.description"> <div *ngIf="!!dictionary.description" class="pb-32 mt-20">
<div class="heading" translate="dictionary-overview.dictionary-details.description"></div> <div class="heading" translate="dictionary-overview.dictionary-details.description"></div>
<div class="mt-8">{{ dictionary.description }}</div> <div class="mt-8">{{ dictionary.description }}</div>
</div> </div>

View File

@ -102,6 +102,7 @@
flex: 1; flex: 1;
justify-content: flex-end; justify-content: flex-end;
align-items: center; align-items: center;
.red-input-group { .red-input-group {
margin-top: 0; margin-top: 0;
} }

View File

@ -3,7 +3,7 @@
<redaction-admin-breadcrumbs class="flex-1"></redaction-admin-breadcrumbs> <redaction-admin-breadcrumbs class="flex-1"></redaction-admin-breadcrumbs>
<div class="actions flex-1"> <div class="actions flex-1">
<redaction-circle-button [routerLink]="['../..']" tooltip="common.close" tooltipPosition="below" icon="red:close"></redaction-circle-button> <redaction-circle-button [routerLink]="['../..']" icon="red:close" tooltip="common.close" tooltipPosition="below"></redaction-circle-button>
</div> </div>
</div> </div>
@ -27,11 +27,11 @@
</span> </span>
<redaction-circle-button <redaction-circle-button
(click)="openConfirmDeleteAttributeDialog($event)"
*ngIf="areSomeEntitiesSelected" *ngIf="areSomeEntitiesSelected"
icon="red:trash"
tooltip="file-attributes-listing.bulk-actions.delete" tooltip="file-attributes-listing.bulk-actions.delete"
type="dark-bg" type="dark-bg"
icon="red:trash"
(click)="openConfirmDeleteAttributeDialog($event)"
> >
</redaction-circle-button> </redaction-circle-button>
@ -39,19 +39,19 @@
<div class="attributes-actions-container"> <div class="attributes-actions-container">
<redaction-search-input [form]="searchForm" [placeholder]="'file-attributes-listing.search'"></redaction-search-input> <redaction-search-input [form]="searchForm" [placeholder]="'file-attributes-listing.search'"></redaction-search-input>
<input #fileInput (change)="importCSV($event.target['files'])" class="csv-input" type="file" accept=".csv" /> <input #fileInput (change)="importCSV($event.target['files'])" accept=".csv" class="csv-input" type="file" />
<redaction-circle-button <redaction-circle-button
(action)="fileInput.click()" (action)="fileInput.click()"
icon="red:upload"
tooltip="file-attributes-listing.upload-csv" tooltip="file-attributes-listing.upload-csv"
tooltipPosition="above" tooltipPosition="above"
icon="red:upload"
type="dark-bg" type="dark-bg"
></redaction-circle-button> ></redaction-circle-button>
<redaction-icon-button <redaction-icon-button
icon="red:plus"
(action)="openAddEditAttributeDialog($event)" (action)="openAddEditAttributeDialog($event)"
icon="red:plus"
text="file-attributes-listing.add-new" text="file-attributes-listing.add-new"
type="primary" type="primary"
></redaction-icon-button> ></redaction-icon-button>
@ -62,37 +62,37 @@
<div class="select-oval-placeholder"></div> <div class="select-oval-placeholder"></div>
<redaction-table-col-name <redaction-table-col-name
label="file-attributes-listing.table-col-names.name"
(toggleSort)="toggleSort($event)" (toggleSort)="toggleSort($event)"
[activeSortingOption]="sortingOption" [activeSortingOption]="sortingOption"
[withSort]="true" [withSort]="true"
column="label" column="label"
label="file-attributes-listing.table-col-names.name"
></redaction-table-col-name> ></redaction-table-col-name>
<redaction-table-col-name <redaction-table-col-name
label="file-attributes-listing.table-col-names.type"
(toggleSort)="toggleSort($event)" (toggleSort)="toggleSort($event)"
[activeSortingOption]="sortingOption" [activeSortingOption]="sortingOption"
[withSort]="true" [withSort]="true"
column="type" column="type"
label="file-attributes-listing.table-col-names.type"
></redaction-table-col-name> ></redaction-table-col-name>
<redaction-table-col-name <redaction-table-col-name
label="file-attributes-listing.table-col-names.read-only"
class="flex-center"
(toggleSort)="toggleSort($event)" (toggleSort)="toggleSort($event)"
[activeSortingOption]="sortingOption" [activeSortingOption]="sortingOption"
[withSort]="true" [withSort]="true"
class="flex-center"
column="editable" column="editable"
label="file-attributes-listing.table-col-names.read-only"
></redaction-table-col-name> ></redaction-table-col-name>
<redaction-table-col-name label="file-attributes-listing.table-col-names.csv-column"></redaction-table-col-name> <redaction-table-col-name label="file-attributes-listing.table-col-names.csv-column"></redaction-table-col-name>
<redaction-table-col-name <redaction-table-col-name
class="flex-center"
label="file-attributes-listing.table-col-names.primary" label="file-attributes-listing.table-col-names.primary"
rightIcon="red:status-info" rightIcon="red:status-info"
rightIconTooltip="file-attributes-listing.table-col-names.primary-info-tooltip" rightIconTooltip="file-attributes-listing.table-col-names.primary-info-tooltip"
class="flex-center"
></redaction-table-col-name> ></redaction-table-col-name>
<div></div> <div></div>
@ -100,7 +100,7 @@
<div class="scrollbar-placeholder"></div> <div class="scrollbar-placeholder"></div>
</div> </div>
<redaction-empty-state *ngIf="!allEntities.length" screen="file-attributes-listing" icon="red:attribute"></redaction-empty-state> <redaction-empty-state *ngIf="!allEntities.length" icon="red:attribute" screen="file-attributes-listing"></redaction-empty-state>
<redaction-empty-state <redaction-empty-state
*ngIf="allEntities.length && !displayedEntities.length" *ngIf="allEntities.length && !displayedEntities.length"
@ -110,8 +110,8 @@
<cdk-virtual-scroll-viewport [itemSize]="80" redactionHasScrollbar> <cdk-virtual-scroll-viewport [itemSize]="80" redactionHasScrollbar>
<!-- Table lines --> <!-- Table lines -->
<div class="table-item" *cdkVirtualFor="let attribute of displayedEntities | sortBy: sortingOption.order:sortingOption.column"> <div *cdkVirtualFor="let attribute of displayedEntities | sortBy: sortingOption.order:sortingOption.column" class="table-item">
<div class="selection-column" (click)="toggleEntitySelected($event, attribute)"> <div (click)="toggleEntitySelected($event, attribute)" class="selection-column">
<redaction-round-checkbox [active]="isEntitySelected(attribute)"></redaction-round-checkbox> <redaction-round-checkbox [active]="isEntitySelected(attribute)"></redaction-round-checkbox>
</div> </div>
@ -119,36 +119,36 @@
<span>{{ attribute.label }}</span> <span>{{ attribute.label }}</span>
</div> </div>
<div class="small-label" [translate]="'file-attribute-types.' + attribute.type"></div> <div [translate]="'file-attribute-types.' + attribute.type" class="small-label"></div>
<div class="center read-only"> <div class="center read-only">
<mat-icon <mat-icon
svgIcon="red:read-only"
*ngIf="!attribute.editable" *ngIf="!attribute.editable"
[matTooltip]="'file-attributes-listing.read-only' | translate" [matTooltip]="'file-attributes-listing.read-only' | translate"
matTooltipPosition="above" matTooltipPosition="above"
svgIcon="red:read-only"
></mat-icon> ></mat-icon>
</div> </div>
<div class="small-label"> <div class="small-label">
{{ attribute.csvColumnHeader }} {{ attribute.csvColumnHeader }}
</div> </div>
<div class="center"> <div class="center">
<redaction-round-checkbox *ngIf="attribute.primaryAttribute" [size]="18" [active]="true"></redaction-round-checkbox> <redaction-round-checkbox *ngIf="attribute.primaryAttribute" [active]="true" [size]="18"></redaction-round-checkbox>
</div> </div>
<div class="actions-container"> <div class="actions-container">
<div class="action-buttons"> <div class="action-buttons">
<redaction-circle-button <redaction-circle-button
(action)="openAddEditAttributeDialog($event, attribute)" (action)="openAddEditAttributeDialog($event, attribute)"
icon="red:edit"
tooltip="file-attributes-listing.action.edit" tooltip="file-attributes-listing.action.edit"
type="dark-bg" type="dark-bg"
icon="red:edit"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button <redaction-circle-button
(action)="openConfirmDeleteAttributeDialog($event, attribute)" (action)="openConfirmDeleteAttributeDialog($event, attribute)"
icon="red:trash"
tooltip="file-attributes-listing.action.delete" tooltip="file-attributes-listing.action.delete"
type="dark-bg" type="dark-bg"
icon="red:trash"
> >
</redaction-circle-button> </redaction-circle-button>
</div> </div>

View File

@ -5,7 +5,7 @@
<div class="flex-1 actions"> <div class="flex-1 actions">
<redaction-rule-set-actions></redaction-rule-set-actions> <redaction-rule-set-actions></redaction-rule-set-actions>
<redaction-circle-button [routerLink]="['../..']" tooltip="common.close" tooltipPosition="below" icon="red:close"></redaction-circle-button> <redaction-circle-button [routerLink]="['../..']" icon="red:close" tooltip="common.close" tooltipPosition="below"></redaction-circle-button>
</div> </div>
</div> </div>
@ -17,20 +17,20 @@
<div class="editor-container"> <div class="editor-container">
<ace-editor <ace-editor
#editorComponent #editorComponent
[mode]="'java'"
[theme]="'eclipse'"
[options]="aceOptions"
[readOnly]="!permissionsService.isAdmin()"
(textChanged)="textChanged($event)" (textChanged)="textChanged($event)"
[autoUpdateContent]="true" [autoUpdateContent]="true"
[mode]="'java'"
[options]="aceOptions"
[readOnly]="!permissionsService.isAdmin()"
[text]="rules" [text]="rules"
[theme]="'eclipse'"
class="ace-redaction" class="ace-redaction"
> >
</ace-editor> </ace-editor>
</div> </div>
<div class="changes-box" *ngIf="hasChanges && permissionsService.isAdmin()"> <div *ngIf="hasChanges && permissionsService.isAdmin()" class="changes-box">
<redaction-icon-button icon="red:check" (action)="save()" text="rules-screen.save-changes" type="primary"></redaction-icon-button> <redaction-icon-button (action)="save()" icon="red:check" text="rules-screen.save-changes" type="primary"></redaction-icon-button>
<div (click)="revert()" translate="rules-screen.revert-changes" class="all-caps-label cancel"></div> <div (click)="revert()" class="all-caps-label cancel" translate="rules-screen.revert-changes"></div>
</div> </div>
</div> </div>
</section> </section>

View File

@ -3,7 +3,7 @@
<redaction-admin-breadcrumbs class="flex-1"></redaction-admin-breadcrumbs> <redaction-admin-breadcrumbs class="flex-1"></redaction-admin-breadcrumbs>
<div class="actions flex-1"> <div class="actions flex-1">
<redaction-circle-button [routerLink]="['../..']" tooltip="common.close" tooltipPosition="below" icon="red:close"></redaction-circle-button> <redaction-circle-button [routerLink]="['../..']" icon="red:close" tooltip="common.close" tooltipPosition="below"></redaction-circle-button>
</div> </div>
</div> </div>
@ -14,31 +14,31 @@
<div class="content-container"> <div class="content-container">
<div #viewer class="viewer"></div> <div #viewer class="viewer"></div>
<div class="changes-box" *ngIf="changed && permissionsService.isAdmin()"> <div *ngIf="changed && permissionsService.isAdmin()" class="changes-box">
<redaction-icon-button <redaction-icon-button
(action)="save()"
[disabled]="configForm.invalid" [disabled]="configForm.invalid"
icon="red:check" icon="red:check"
(action)="save()"
text="watermark-screen.action.save" text="watermark-screen.action.save"
type="primary" type="primary"
></redaction-icon-button> ></redaction-icon-button>
<div (click)="revert()" translate="watermark-screen.action.revert" class="all-caps-label cancel"></div> <div (click)="revert()" class="all-caps-label cancel" translate="watermark-screen.action.revert"></div>
</div> </div>
</div> </div>
<div class="right-container" redactionHasScrollbar> <div class="right-container" redactionHasScrollbar>
<div class="heading-xl" [translate]="'watermark-screen.title'"></div> <div [translate]="'watermark-screen.title'" class="heading-xl"></div>
<form [formGroup]="configForm" (keyup)="configChanged()"> <form (keyup)="configChanged()" [formGroup]="configForm">
<div class="red-input-group w-300"> <div class="red-input-group w-300">
<textarea <textarea
redactionHasScrollbar
formControlName="text"
[placeholder]="'watermark-screen.form.text-placeholder' | translate"
(mousemove)="triggerChanges()" (mousemove)="triggerChanges()"
[placeholder]="'watermark-screen.form.text-placeholder' | translate"
class="w-full" class="w-full"
formControlName="text"
name="text" name="text"
type="text" redactionHasScrollbar
rows="4" rows="4"
type="text"
></textarea> ></textarea>
</div> </div>
@ -46,11 +46,11 @@
<label class="all-caps-label mb-8" translate="watermark-screen.form.orientation"></label> <label class="all-caps-label mb-8" translate="watermark-screen.form.orientation"></label>
<div class="square-options"> <div class="square-options">
<div <div
(click)="setValue('orientation', option)"
*ngFor="let option of ['VERTICAL', 'HORIZONTAL', 'DIAGONAL']"
[class.active]="configForm.get('orientation').value === option" [class.active]="configForm.get('orientation').value === option"
[class.disabled]="configForm.get('orientation').disabled" [class.disabled]="configForm.get('orientation').disabled"
[ngClass]="option" [ngClass]="option"
(click)="setValue('orientation', option)"
*ngFor="let option of ['VERTICAL', 'HORIZONTAL', 'DIAGONAL']"
> >
<span>ABC</span> <span>ABC</span>
</div> </div>
@ -59,33 +59,33 @@
<div class="red-input-group"> <div class="red-input-group">
<label class="all-caps-label" translate="watermark-screen.form.font-size"></label> <label class="all-caps-label" translate="watermark-screen.form.font-size"></label>
<mat-slider formControlName="fontSize" min="5" max="50" color="primary" (change)="configChanged()"></mat-slider> <mat-slider (change)="configChanged()" color="primary" formControlName="fontSize" max="50" min="5"></mat-slider>
</div> </div>
<div class="red-input-group"> <div class="red-input-group">
<label class="all-caps-label" translate="watermark-screen.form.opacity"></label> <label class="all-caps-label" translate="watermark-screen.form.opacity"></label>
<mat-slider formControlName="opacity" min="1" color="primary" (change)="configChanged()"></mat-slider> <mat-slider (change)="configChanged()" color="primary" formControlName="opacity" min="1"></mat-slider>
</div> </div>
<div class="red-input-group w-150"> <div class="red-input-group w-150">
<label class="all-caps-label mb-5" translate="watermark-screen.form.color"></label> <label class="all-caps-label mb-5" translate="watermark-screen.form.color"></label>
<input <input
formControlName="hexColor"
class="hex-color-input" class="hex-color-input"
formControlName="hexColor"
name="hexColor" name="hexColor"
type="text"
placeholder="{{ 'add-edit-dictionary.form.color-placeholder' | translate }}" placeholder="{{ 'add-edit-dictionary.form.color-placeholder' | translate }}"
type="text"
/> />
<div <div
class="input-icon" (colorPickerChange)="setValue('hexColor', $event)"
[class.disabled]="configForm.get('hexColor').disabled" [class.disabled]="configForm.get('hexColor').disabled"
[style.background]="configForm.get('hexColor').value"
[colorPicker]="configForm.get('hexColor').value" [colorPicker]="configForm.get('hexColor').value"
[cpDisabled]="configForm.get('hexColor').disabled" [cpDisabled]="configForm.get('hexColor').disabled"
[cpOutputFormat]="'hex'" [cpOutputFormat]="'hex'"
[cpPosition]="'top-right'" [cpPosition]="'top-right'"
[cpUseRootViewContainer]="true" [cpUseRootViewContainer]="true"
(colorPickerChange)="setValue('hexColor', $event)" [style.background]="configForm.get('hexColor').value"
class="input-icon"
> >
<mat-icon <mat-icon
*ngIf="!configForm.get('hexColor')?.value || configForm.get('hexColor').value?.length === 0" *ngIf="!configForm.get('hexColor')?.value || configForm.get('hexColor').value?.length === 0"
@ -98,9 +98,6 @@
<label class="all-caps-label mb-8" translate="watermark-screen.form.font-type"></label> <label class="all-caps-label mb-8" translate="watermark-screen.form.font-type"></label>
<div class="square-options"> <div class="square-options">
<div <div
[class.active]="configForm.get('fontType').value === option.value"
[class.disabled]="configForm.get('fontType').disabled"
[ngClass]="option.value"
(click)="setValue('fontType', option.value)" (click)="setValue('fontType', option.value)"
*ngFor=" *ngFor="
let option of [ let option of [
@ -109,6 +106,9 @@
{ value: 'courier', display: 'Courier' } { value: 'courier', display: 'Courier' }
] ]
" "
[class.active]="configForm.get('fontType').value === option.value"
[class.disabled]="configForm.get('fontType').disabled"
[ngClass]="option.value"
> >
{{ option.display }} {{ option.display }}
</div> </div>

View File

@ -1,87 +1,87 @@
<div [class.visible]="menuOpen" *ngIf="canPerformAnnotationActions" class="annotation-actions"> <div *ngIf="canPerformAnnotationActions" [class.visible]="menuOpen" class="annotation-actions">
<redaction-circle-button <redaction-circle-button
(action)="annotationActionsService.forceRedaction($event, [annotation], annotationsChanged)" (action)="annotationActionsService.forceRedaction($event, [annotation], annotationsChanged)"
type="dark-bg"
*ngIf="annotationPermissions.canForceRedaction" *ngIf="annotationPermissions.canForceRedaction"
tooltipPosition="before"
tooltip="annotation-actions.force-redaction.label"
icon="red:thumb-up" icon="red:thumb-up"
tooltip="annotation-actions.force-redaction.label"
tooltipPosition="before"
type="dark-bg"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button <redaction-circle-button
(action)="annotationActionsService.convertRecommendationToAnnotation($event, [annotation], annotationsChanged)" (action)="annotationActionsService.convertRecommendationToAnnotation($event, [annotation], annotationsChanged)"
type="dark-bg"
*ngIf="annotationPermissions.canAcceptRecommendation" *ngIf="annotationPermissions.canAcceptRecommendation"
tooltipPosition="before"
tooltip="annotation-actions.accept-recommendation.label"
icon="red:check" icon="red:check"
tooltip="annotation-actions.accept-recommendation.label"
tooltipPosition="before"
type="dark-bg"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button <redaction-circle-button
(action)="annotationActionsService.markAsFalsePositive($event, [annotation], annotationsChanged)" (action)="annotationActionsService.markAsFalsePositive($event, [annotation], annotationsChanged)"
type="dark-bg"
*ngIf="annotationPermissions.canMarkTextOnlyAsFalsePositive && !annotationPermissions.canPerformMultipleRemoveActions" *ngIf="annotationPermissions.canMarkTextOnlyAsFalsePositive && !annotationPermissions.canPerformMultipleRemoveActions"
tooltipPosition="before"
tooltip="annotation-actions.remove-annotation.false-positive"
icon="red:thumb-down" icon="red:thumb-down"
tooltip="annotation-actions.remove-annotation.false-positive"
tooltipPosition="before"
type="dark-bg"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button <redaction-circle-button
(action)="annotationActionsService.acceptSuggestion($event, [annotation], annotationsChanged)" (action)="annotationActionsService.acceptSuggestion($event, [annotation], annotationsChanged)"
type="dark-bg"
*ngIf="annotationPermissions.canAcceptSuggestion" *ngIf="annotationPermissions.canAcceptSuggestion"
tooltipPosition="before"
tooltip="annotation-actions.accept-suggestion.label"
icon="red:check" icon="red:check"
tooltip="annotation-actions.accept-suggestion.label"
tooltipPosition="before"
type="dark-bg"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button <redaction-circle-button
(action)="annotationActionsService.undoDirectAction($event, [annotation], annotationsChanged)" (action)="annotationActionsService.undoDirectAction($event, [annotation], annotationsChanged)"
*ngIf="annotationPermissions.canUndo" *ngIf="annotationPermissions.canUndo"
type="dark-bg"
icon="red:undo" icon="red:undo"
tooltipPosition="before"
tooltip="annotation-actions.undo" tooltip="annotation-actions.undo"
tooltipPosition="before"
type="dark-bg"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button <redaction-circle-button
(action)="hideAnnotation($event)" (action)="hideAnnotation($event)"
*ngIf="annotation.isImage && viewerAnnotation?.isVisible()" *ngIf="annotation.isImage && viewerAnnotation?.isVisible()"
type="dark-bg"
icon="red:visibility-off" icon="red:visibility-off"
tooltipPosition="before"
tooltip="annotation-actions.hide" tooltip="annotation-actions.hide"
tooltipPosition="before"
type="dark-bg"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button <redaction-circle-button
(action)="showAnnotation($event)" (action)="showAnnotation($event)"
*ngIf="annotation.isImage && !viewerAnnotation?.isVisible()" *ngIf="annotation.isImage && !viewerAnnotation?.isVisible()"
type="dark-bg"
icon="red:visibility" icon="red:visibility"
tooltipPosition="before"
tooltip="annotation-actions.show" tooltip="annotation-actions.show"
tooltipPosition="before"
type="dark-bg"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button <redaction-circle-button
(action)="annotationActionsService.rejectSuggestion($event, [annotation], annotationsChanged)" (action)="annotationActionsService.rejectSuggestion($event, [annotation], annotationsChanged)"
type="dark-bg"
icon="red:close"
*ngIf="annotationPermissions.canRejectSuggestion" *ngIf="annotationPermissions.canRejectSuggestion"
tooltipPosition="before" icon="red:close"
tooltip="annotation-actions.reject-suggestion" tooltip="annotation-actions.reject-suggestion"
tooltipPosition="before"
type="dark-bg"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-annotation-remove-actions <redaction-annotation-remove-actions
[annotations]="[annotation]"
[(menuOpen)]="menuOpen" [(menuOpen)]="menuOpen"
[annotationsChanged]="annotationsChanged" [annotationsChanged]="annotationsChanged"
[annotations]="[annotation]"
></redaction-annotation-remove-actions> ></redaction-annotation-remove-actions>
</div> </div>

View File

@ -1,37 +1,37 @@
<redaction-circle-button <redaction-circle-button
(action)="suggestRemoveAnnotations($event, false)" (action)="suggestRemoveAnnotations($event, false)"
[type]="btnType"
icon="red:trash"
*ngIf="permissions.canRemoveOrSuggestToRemoveOnlyHere && permissions.canNotPerformMultipleRemoveActions" *ngIf="permissions.canRemoveOrSuggestToRemoveOnlyHere && permissions.canNotPerformMultipleRemoveActions"
[tooltipPosition]="tooltipPosition" [tooltipPosition]="tooltipPosition"
[type]="btnType"
icon="red:trash"
tooltip="annotation-actions.suggest-remove-annotation" tooltip="annotation-actions.suggest-remove-annotation"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button <redaction-circle-button
*ngIf="permissions.canPerformMultipleRemoveActions"
(action)="openMenu($event)" (action)="openMenu($event)"
*ngIf="permissions.canPerformMultipleRemoveActions"
[class.active]="menuOpen" [class.active]="menuOpen"
[matMenuTriggerFor]="menu" [matMenuTriggerFor]="menu"
[tooltipPosition]="tooltipPosition" [tooltipPosition]="tooltipPosition"
tooltip="annotation-actions.suggest-remove-annotation"
[type]="btnType" [type]="btnType"
icon="red:trash" icon="red:trash"
tooltip="annotation-actions.suggest-remove-annotation"
> >
</redaction-circle-button> </redaction-circle-button>
<mat-menu #menu="matMenu" (closed)="onMenuClosed()" xPosition="before"> <mat-menu #menu="matMenu" (closed)="onMenuClosed()" xPosition="before">
<div (click)="suggestRemoveAnnotations($event, true)" mat-menu-item *ngIf="permissions.canRemoveOrSuggestToRemoveFromDictionary"> <div (click)="suggestRemoveAnnotations($event, true)" *ngIf="permissions.canRemoveOrSuggestToRemoveFromDictionary" mat-menu-item>
<redaction-annotation-icon [type]="'rhombus'" [label]="'S'" [color]="dictionaryColor"></redaction-annotation-icon> <redaction-annotation-icon [color]="dictionaryColor" [label]="'S'" [type]="'rhombus'"></redaction-annotation-icon>
<div [translate]="'annotation-actions.remove-annotation.remove-from-dict'"></div> <div [translate]="'annotation-actions.remove-annotation.remove-from-dict'"></div>
</div> </div>
<div (click)="suggestRemoveAnnotations($event, false)" mat-menu-item *ngIf="permissions.canRemoveOrSuggestToRemoveOnlyHere"> <div (click)="suggestRemoveAnnotations($event, false)" *ngIf="permissions.canRemoveOrSuggestToRemoveOnlyHere" mat-menu-item>
<redaction-annotation-icon [type]="'rhombus'" [label]="'S'" [color]="suggestionColor"></redaction-annotation-icon> <redaction-annotation-icon [color]="suggestionColor" [label]="'S'" [type]="'rhombus'"></redaction-annotation-icon>
<div translate="annotation-actions.remove-annotation.only-here"></div> <div translate="annotation-actions.remove-annotation.only-here"></div>
</div> </div>
<div (click)="markAsFalsePositive($event)" mat-menu-item *ngIf="permissions.canMarkAsFalsePositive"> <div (click)="markAsFalsePositive($event)" *ngIf="permissions.canMarkAsFalsePositive" mat-menu-item>
<mat-icon svgIcon="red:thumb-down" class="false-positive-icon"></mat-icon> <mat-icon class="false-positive-icon" svgIcon="red:thumb-down"></mat-icon>
<div translate="annotation-actions.remove-annotation.false-positive"></div> <div translate="annotation-actions.remove-annotation.false-positive"></div>
</div> </div>
</mat-menu> </mat-menu>

View File

@ -2,31 +2,31 @@
<redaction-circle-button <redaction-circle-button
(action)="delete()" (action)="delete()"
*ngIf="canDelete" *ngIf="canDelete"
icon="red:trash"
tooltip="project-overview.bulk.delete" tooltip="project-overview.bulk.delete"
type="dark-bg" type="dark-bg"
icon="red:trash"
></redaction-circle-button> ></redaction-circle-button>
<redaction-circle-button <redaction-circle-button
(action)="assign()" (action)="assign()"
*ngIf="canAssign" *ngIf="canAssign"
icon="red:assign"
tooltip="project-overview.bulk.assign" tooltip="project-overview.bulk.assign"
type="dark-bg" type="dark-bg"
icon="red:assign"
></redaction-circle-button> ></redaction-circle-button>
<redaction-file-download-btn [project]="project" [file]="selectedFiles"> </redaction-file-download-btn> <redaction-file-download-btn [file]="selectedFiles" [project]="project"></redaction-file-download-btn>
<redaction-circle-button <redaction-circle-button
(action)="setToUnderApproval()" (action)="setToUnderApproval()"
*ngIf="canSetToUnderApproval" *ngIf="canSetToUnderApproval"
icon="red:ready-for-approval"
tooltip="project-overview.under-approval" tooltip="project-overview.under-approval"
type="dark-bg" type="dark-bg"
icon="red:ready-for-approval"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button (action)="setToUnderReview()" *ngIf="canSetToUnderReview" tooltip="project-overview.under-review" type="dark-bg" icon="red:undo"> <redaction-circle-button (action)="setToUnderReview()" *ngIf="canSetToUnderReview" icon="red:undo" tooltip="project-overview.under-review" type="dark-bg">
</redaction-circle-button> </redaction-circle-button>
<!-- Approved--> <!-- Approved-->
@ -34,24 +34,24 @@
(action)="approveDocuments()" (action)="approveDocuments()"
*ngIf="isReadyForApproval" *ngIf="isReadyForApproval"
[disabled]="!canApprove" [disabled]="!canApprove"
type="dark-bg"
icon="red:approved"
[tooltip]="canApprove ? 'project-overview.approve' : 'project-overview.approve-disabled'" [tooltip]="canApprove ? 'project-overview.approve' : 'project-overview.approve-disabled'"
icon="red:approved"
type="dark-bg"
> >
</redaction-circle-button> </redaction-circle-button>
<!-- Back to approval --> <!-- Back to approval -->
<redaction-circle-button (action)="setToUnderApproval()" *ngIf="canUndoApproval" tooltip="project-overview.under-approval" type="dark-bg" icon="red:undo"> <redaction-circle-button (action)="setToUnderApproval()" *ngIf="canUndoApproval" icon="red:undo" tooltip="project-overview.under-approval" type="dark-bg">
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button (action)="ocr()" *ngIf="canOcr" tooltip="project-overview.ocr-file" type="dark-bg" icon="red:ocr"></redaction-circle-button> <redaction-circle-button (action)="ocr()" *ngIf="canOcr" icon="red:ocr" tooltip="project-overview.ocr-file" type="dark-bg"></redaction-circle-button>
<redaction-circle-button <redaction-circle-button
(action)="reanalyse()" (action)="reanalyse()"
*ngIf="canReanalyse" *ngIf="canReanalyse"
icon="red:refresh"
tooltip="project-overview.bulk.reanalyse" tooltip="project-overview.bulk.reanalyse"
type="dark-bg" type="dark-bg"
icon="red:refresh"
></redaction-circle-button> ></redaction-circle-button>
</ng-container> </ng-container>

View File

@ -34,7 +34,7 @@
<form (submit)="addComment()" *ngIf="addingComment && permissionsService.canAddComment()" [formGroup]="commentForm"> <form (submit)="addComment()" *ngIf="addingComment && permissionsService.canAddComment()" [formGroup]="commentForm">
<div class="red-input-group"> <div class="red-input-group">
<input [placeholder]="translateService.instant('comments.add-comment')" formControlName="comment" name="comment" type="text" class="w-full" /> <input [placeholder]="translateService.instant('comments.add-comment')" class="w-full" formControlName="comment" name="comment" type="text" />
</div> </div>
</form> </form>

View File

@ -42,6 +42,7 @@
.comment-icon.comment-owner { .comment-icon.comment-owner {
display: none; display: none;
} }
.trash-icon.comment-owner { .trash-icon.comment-owner {
display: initial; display: initial;
} }

View File

@ -1,23 +1,23 @@
<div class="right-title heading" translate="file-preview.tabs.document-info.label"> <div class="right-title heading" translate="file-preview.tabs.document-info.label">
<div> <div>
<redaction-circle-button <redaction-circle-button
icon="red:edit"
(action)="edit()" (action)="edit()"
tooltipPosition="before" icon="red:edit"
tooltip="file-preview.tabs.document-info.edit" tooltip="file-preview.tabs.document-info.edit"
tooltipPosition="before"
></redaction-circle-button> ></redaction-circle-button>
<redaction-circle-button <redaction-circle-button
icon="red:close"
(action)="closeDocumentInfoView.emit()" (action)="closeDocumentInfoView.emit()"
tooltipPosition="before" icon="red:close"
tooltip="file-preview.tabs.document-info.close" tooltip="file-preview.tabs.document-info.close"
tooltipPosition="before"
></redaction-circle-button> ></redaction-circle-button>
</div> </div>
</div> </div>
<div class="right-content" redactionHasScrollbar> <div class="right-content" redactionHasScrollbar>
<div class="section"> <div class="section">
<div class="attribute" *ngFor="let attr of fileAttributesConfig?.fileAttributeConfigs"> <div *ngFor="let attr of fileAttributesConfig?.fileAttributeConfigs" class="attribute">
<div class="small-label">{{ attr.label }}:</div> <div class="small-label">{{ attr.label }}:</div>
<div>{{ (file.fileAttributes?.attributeIdToValue)[attr.id] || '-' }}</div> <div>{{ (file.fileAttributes?.attributeIdToValue)[attr.id] || '-' }}</div>
</div> </div>

View File

@ -1,4 +1,4 @@
<div class="action-buttons" [class.active]="actionMenuOpen" *ngIf="screen === 'project-overview'"> <div *ngIf="screen === 'project-overview'" [class.active]="actionMenuOpen" class="action-buttons">
<ng-container *ngTemplateOutlet="actions"></ng-container> <ng-container *ngTemplateOutlet="actions"></ng-container>
<redaction-status-bar <redaction-status-bar
*ngIf="fileStatus.isWorkable" *ngIf="fileStatus.isWorkable"
@ -41,21 +41,21 @@
<!-- download redacted file--> <!-- download redacted file-->
<redaction-file-download-btn <redaction-file-download-btn
[file]="fileStatus"
[project]="appStateService.activeProject"
[tooltipClass]="'small'" [tooltipClass]="'small'"
[tooltipPosition]="tooltipPosition" [tooltipPosition]="tooltipPosition"
[type]="buttonType" [type]="buttonType"
[project]="appStateService.activeProject"
[file]="fileStatus"
> >
</redaction-file-download-btn> </redaction-file-download-btn>
<redaction-circle-button <redaction-circle-button
*ngIf="screen === 'file-preview'"
(action)="toggleViewDocumentInfo()" (action)="toggleViewDocumentInfo()"
*ngIf="screen === 'file-preview'"
[attr.aria-expanded]="activeDocumentInfo"
icon="red:status-info"
tooltip="file-preview.document-info" tooltip="file-preview.document-info"
tooltipPosition="below" tooltipPosition="below"
icon="red:status-info"
[attr.aria-expanded]="activeDocumentInfo"
></redaction-circle-button> ></redaction-circle-button>
<!-- Ready for approval--> <!-- Ready for approval-->
@ -86,9 +86,9 @@
*ngIf="permissionsService.isReadyForApproval(fileStatus)" *ngIf="permissionsService.isReadyForApproval(fileStatus)"
[disabled]="!permissionsService.canApprove(fileStatus)" [disabled]="!permissionsService.canApprove(fileStatus)"
[tooltipPosition]="tooltipPosition" [tooltipPosition]="tooltipPosition"
[tooltip]="permissionsService.canApprove(fileStatus) ? 'project-overview.approve' : 'project-overview.approve-disabled'"
[type]="buttonType" [type]="buttonType"
icon="red:approved" icon="red:approved"
[tooltip]="permissionsService.canApprove(fileStatus) ? 'project-overview.approve' : 'project-overview.approve-disabled'"
> >
</redaction-circle-button> </redaction-circle-button>
@ -117,10 +117,10 @@
<redaction-circle-button <redaction-circle-button
(action)="reanalyseFile($event, fileStatus, 100)" (action)="reanalyseFile($event, fileStatus, 100)"
*ngIf="permissionsService.canReanalyseFile(fileStatus) && screen === 'file-preview'" *ngIf="permissionsService.canReanalyseFile(fileStatus) && screen === 'file-preview'"
tooltipPosition="below"
icon="red:refresh" icon="red:refresh"
tooltip="file-preview.reanalyse-notification" tooltip="file-preview.reanalyse-notification"
tooltipClass="warn small" tooltipClass="warn small"
tooltipPosition="below"
type="warn" type="warn"
> >
</redaction-circle-button> </redaction-circle-button>
@ -140,11 +140,11 @@
<div class="red-input-group"> <div class="red-input-group">
<mat-slide-toggle <mat-slide-toggle
(click)="toggleAnalysis($event)" (click)="toggleAnalysis($event)"
[disabled]="!permissionsService.isManager()"
[checked]="!fileStatus?.isExcluded" [checked]="!fileStatus?.isExcluded"
[matTooltip]="toggleTooltip | translate"
[matTooltipPosition]="tooltipPosition"
[class.mr-24]="screen === 'project-overview'" [class.mr-24]="screen === 'project-overview'"
[disabled]="!permissionsService.isManager()"
[matTooltipPosition]="tooltipPosition"
[matTooltip]="toggleTooltip | translate"
color="primary" color="primary"
> >
</mat-slide-toggle> </mat-slide-toggle>

View File

@ -75,7 +75,7 @@
</div> </div>
</div> </div>
<div style="overflow: hidden; width: 100%;"> <div style="overflow: hidden; width: 100%">
<div attr.anotation-page-header="{{ activeViewerPage }}" class="page-separator"> <div attr.anotation-page-header="{{ activeViewerPage }}" class="page-separator">
<span *ngIf="!!activeViewerPage" class="all-caps-label" <span *ngIf="!!activeViewerPage" class="all-caps-label"
><span translate="page"></span> {{ activeViewerPage }} - {{ displayedAnnotations[activeViewerPage]?.annotations?.length || 0 }} ><span translate="page"></span> {{ activeViewerPage }} - {{ displayedAnnotations[activeViewerPage]?.annotations?.length || 0 }}

View File

@ -1,9 +1,9 @@
<div class="needs-work"> <div class="needs-work">
<redaction-annotation-icon *ngIf="reanalysisRequired()" type="square" label="A" [color]="analysisColor"></redaction-annotation-icon> <redaction-annotation-icon *ngIf="reanalysisRequired()" [color]="analysisColor" label="A" type="square"></redaction-annotation-icon>
<redaction-annotation-icon *ngIf="hasUpdates" type="square" label="U" [color]="updatedColor"></redaction-annotation-icon> <redaction-annotation-icon *ngIf="hasUpdates" [color]="updatedColor" label="U" type="square"></redaction-annotation-icon>
<redaction-annotation-icon *ngIf="needsWorkInput.hasRedactions" type="square" label="R" [color]="redactionColor"></redaction-annotation-icon> <redaction-annotation-icon *ngIf="needsWorkInput.hasRedactions" [color]="redactionColor" label="R" type="square"></redaction-annotation-icon>
<redaction-annotation-icon *ngIf="hasImages" type="square" label="I" [color]="imageColor"></redaction-annotation-icon> <redaction-annotation-icon *ngIf="hasImages" [color]="imageColor" label="I" type="square"></redaction-annotation-icon>
<redaction-annotation-icon *ngIf="needsWorkInput.hintsOnly" type="circle" label="H" [color]="hintColor"></redaction-annotation-icon> <redaction-annotation-icon *ngIf="needsWorkInput.hintsOnly" [color]="hintColor" label="H" type="circle"></redaction-annotation-icon>
<redaction-annotation-icon *ngIf="needsWorkInput.hasRequests" type="rhombus" label="S" [color]="suggestionColor"></redaction-annotation-icon> <redaction-annotation-icon *ngIf="needsWorkInput.hasRequests" [color]="suggestionColor" label="S" type="rhombus"></redaction-annotation-icon>
<mat-icon svgIcon="red:comment" *ngIf="hasAnnotationComments"></mat-icon> <mat-icon *ngIf="hasAnnotationComments" svgIcon="red:comment"></mat-icon>
</div> </div>

View File

@ -1,14 +1,14 @@
<div <div
class="page-wrapper"
[class.read]="read"
[class.active]="active"
[id]="'quick-nav-page-' + number"
(click)="pageSelected.emit(number)" (click)="pageSelected.emit(number)"
(dblclick)="toggleReadState()" (dblclick)="toggleReadState()"
[class.active]="active"
[class.read]="read"
[id]="'quick-nav-page-' + number"
class="page-wrapper"
> >
<mat-icon svgIcon="red:page"></mat-icon> <mat-icon svgIcon="red:page"></mat-icon>
<div class="text"> <div class="text">
{{ number }} {{ number }}
</div> </div>
<div class="dot" *ngIf="activeSelection"></div> <div *ngIf="activeSelection" class="dot"></div>
</div> </div>

View File

@ -25,8 +25,8 @@
<redaction-initials-avatar <redaction-initials-avatar
[userId]="appStateService.activeProject.project.ownerId" [userId]="appStateService.activeProject.project.ownerId"
[withName]="true" [withName]="true"
size="large"
color="gray" color="gray"
size="large"
></redaction-initials-avatar> ></redaction-initials-avatar>
</div> </div>
</div> </div>
@ -34,8 +34,8 @@
<div class="mt-16"> <div class="mt-16">
<div class="all-caps-label" translate="project-details.members"></div> <div class="all-caps-label" translate="project-details.members"></div>
<redaction-team-members <redaction-team-members
[memberIds]="memberIds"
(openAssignProjectMembersDialog)="openAssignProjectMembersDialog.emit()" (openAssignProjectMembersDialog)="openAssignProjectMembersDialog.emit()"
[memberIds]="memberIds"
[perLine]="9" [perLine]="9"
></redaction-team-members> ></redaction-team-members>
</div> </div>
@ -58,7 +58,7 @@
</div> </div>
</div> </div>
<div class="pb-32 small-label stats-subtitle" [class.mt-24]="!hasFiles"> <div [class.mt-24]="!hasFiles" class="pb-32 small-label stats-subtitle">
<div> <div>
<mat-icon svgIcon="red:document"></mat-icon> <mat-icon svgIcon="red:document"></mat-icon>
<span>{{ 'project-overview.project-details.stats.documents' | translate: { count: appStateService.activeProject.files.length } }}</span> <span>{{ 'project-overview.project-details.stats.documents' | translate: { count: appStateService.activeProject.files.length } }}</span>
@ -93,7 +93,7 @@
</div> </div>
</div> </div>
<div class="pb-32" *ngIf="!!appStateService.activeProject.project.description"> <div *ngIf="!!appStateService.activeProject.project.description" class="pb-32">
<div class="heading" translate="project-overview.project-details.description"></div> <div class="heading" translate="project-overview.project-details.description"></div>
<div class="mt-8">{{ appStateService.activeProject.project.description }}</div> <div class="mt-8">{{ appStateService.activeProject.project.description }}</div>
</div> </div>

View File

@ -1,38 +1,38 @@
<redaction-status-bar [config]="getProjectStatusConfig(project)"></redaction-status-bar> <redaction-status-bar [config]="getProjectStatusConfig(project)"></redaction-status-bar>
<div class="action-buttons" [class.active]="actionMenuOpen"> <div [class.active]="actionMenuOpen" class="action-buttons">
<redaction-circle-button <redaction-circle-button
(action)="openDeleteProjectDialog($event, project)" (action)="openDeleteProjectDialog($event, project)"
*ngIf="permissionsService.canDeleteProject(project)" *ngIf="permissionsService.canDeleteProject(project)"
icon="red:trash"
tooltip="project-listing.delete.action" tooltip="project-listing.delete.action"
type="dark-bg" type="dark-bg"
icon="red:trash"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button <redaction-circle-button
(action)="openEditProjectDialog($event, project)" (action)="openEditProjectDialog($event, project)"
*ngIf="permissionsService.isManager()" *ngIf="permissionsService.isManager()"
icon="red:edit"
tooltip="project-listing.edit.action" tooltip="project-listing.edit.action"
type="dark-bg" type="dark-bg"
icon="red:edit"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button <redaction-circle-button
(action)="openAssignProjectOwnerDialog($event, project)" (action)="openAssignProjectOwnerDialog($event, project)"
*ngIf="permissionsService.isManager()" *ngIf="permissionsService.isManager()"
icon="red:assign"
tooltip="project-listing.assign.action" tooltip="project-listing.assign.action"
type="dark-bg" type="dark-bg"
icon="red:assign"
> >
</redaction-circle-button> </redaction-circle-button>
<redaction-circle-button <redaction-circle-button
*ngIf="permissionsService.displayReanalyseBtn(project)"
(action)="reanalyseProject($event, project)" (action)="reanalyseProject($event, project)"
*ngIf="permissionsService.displayReanalyseBtn(project)"
icon="red:refresh"
tooltip="project-listing.reanalyse.action" tooltip="project-listing.reanalyse.action"
type="dark-bg" type="dark-bg"
icon="red:refresh"
> >
</redaction-circle-button> </redaction-circle-button>

View File

@ -1,8 +1,8 @@
<div> <div>
<redaction-simple-doughnut-chart <redaction-simple-doughnut-chart
[config]="projectsChartData" [config]="projectsChartData"
[strokeWidth]="15"
[radius]="80" [radius]="80"
[strokeWidth]="15"
[subtitle]="'project-listing.stats.charts.projects'" [subtitle]="'project-listing.stats.charts.projects'"
></redaction-simple-doughnut-chart> ></redaction-simple-doughnut-chart>
@ -26,11 +26,11 @@
</div> </div>
<div> <div>
<redaction-simple-doughnut-chart <redaction-simple-doughnut-chart
[config]="documentsChartData"
[strokeWidth]="15"
[radius]="80"
[subtitle]="'project-listing.stats.charts.total-documents'"
[filter]="filters.statusFilters"
(toggleFilter)="toggleFilter('statusFilters', $event)" (toggleFilter)="toggleFilter('statusFilters', $event)"
[config]="documentsChartData"
[filter]="filters.statusFilters"
[radius]="80"
[strokeWidth]="15"
[subtitle]="'project-listing.stats.charts.total-documents'"
></redaction-simple-doughnut-chart> ></redaction-simple-doughnut-chart>
</div> </div>

View File

@ -1,29 +1,29 @@
<div class="flex container" #container> <div #container class="flex container">
<div <div
*ngFor="let userId of displayedMembers"
class="member"
[class.large-spacing]="largeSpacing"
[class.can-remove]="canRemoveMember(userId)"
(click)="canRemoveMember(userId) && remove.emit(userId)" (click)="canRemoveMember(userId) && remove.emit(userId)"
*ngFor="let userId of displayedMembers"
[class.can-remove]="canRemoveMember(userId)"
[class.large-spacing]="largeSpacing"
class="member"
> >
<redaction-initials-avatar [userId]="userId" size="large" color="gray"></redaction-initials-avatar> <redaction-initials-avatar [userId]="userId" color="gray" size="large"></redaction-initials-avatar>
<div class="remove" *ngIf="canRemoveMember(userId)"> <div *ngIf="canRemoveMember(userId)" class="remove">
<mat-icon svgIcon="red:close"></mat-icon> <mat-icon svgIcon="red:close"></mat-icon>
</div> </div>
</div> </div>
<div *ngIf="overflowCount && !expandedTeam" class="member pointer" [class.large-spacing]="largeSpacing"> <div *ngIf="overflowCount && !expandedTeam" [class.large-spacing]="largeSpacing" class="member pointer">
<div class="oval large white-dark" (click)="toggleExpandedTeam()">+{{ overflowCount }}</div> <div (click)="toggleExpandedTeam()" class="oval large white-dark">+{{ overflowCount }}</div>
</div> </div>
<redaction-circle-button <redaction-circle-button
class="member"
[class.large-spacing]="largeSpacing"
(action)="openAssignProjectMembersDialog.emit()" (action)="openAssignProjectMembersDialog.emit()"
icon="red:plus"
*ngIf="permissionsService.isManager() && canAdd" *ngIf="permissionsService.isManager() && canAdd"
type="primary" [class.large-spacing]="largeSpacing"
[small]="true" [small]="true"
class="member"
icon="red:plus"
tooltip="project-details.assign-members" tooltip="project-details.assign-members"
type="primary"
> >
</redaction-circle-button> </redaction-circle-button>
</div> </div>
<div class="all-caps-label see-less pointer" *ngIf="expandedTeam" translate="project-details.see-less" (click)="toggleExpandedTeam()"></div> <div (click)="toggleExpandedTeam()" *ngIf="expandedTeam" class="all-caps-label see-less pointer" translate="project-details.see-less"></div>

View File

@ -1 +1 @@
<redaction-annotation-icon [color]="color" [type]="type" [label]="label"> </redaction-annotation-icon> <redaction-annotation-icon [color]="color" [label]="label" [type]="type"></redaction-annotation-icon>

View File

@ -1,15 +1,15 @@
<ng-container *ngIf="!filter.icon"> <ng-container *ngIf="!filter.icon">
<redaction-annotation-icon *ngIf="filter.key === 'redaction'" type="square" label="R" [color]="dictionaryColor"></redaction-annotation-icon> <redaction-annotation-icon *ngIf="filter.key === 'redaction'" [color]="dictionaryColor" label="R" type="square"></redaction-annotation-icon>
<redaction-annotation-icon *ngIf="filter.key === 'recommendation'" type="hexagon" label="R" [color]="dictionaryColor"></redaction-annotation-icon> <redaction-annotation-icon *ngIf="filter.key === 'recommendation'" [color]="dictionaryColor" label="R" type="hexagon"></redaction-annotation-icon>
<redaction-annotation-icon *ngIf="filter.key === 'hint'" type="circle" label="H" [color]="dictionaryColor"></redaction-annotation-icon> <redaction-annotation-icon *ngIf="filter.key === 'hint'" [color]="dictionaryColor" label="H" type="circle"></redaction-annotation-icon>
<redaction-annotation-icon *ngIf="filter.key === 'manual-redaction'" type="square" label="M" [color]="dictionaryColor"></redaction-annotation-icon> <redaction-annotation-icon *ngIf="filter.key === 'manual-redaction'" [color]="dictionaryColor" label="M" type="square"></redaction-annotation-icon>
<redaction-annotation-icon *ngIf="filter.key === 'skipped'" type="square" label="S" [color]="dictionaryColor"></redaction-annotation-icon> <redaction-annotation-icon *ngIf="filter.key === 'skipped'" [color]="dictionaryColor" label="S" type="square"></redaction-annotation-icon>
<redaction-annotation-icon *ngIf="isSuggestion(filter.key)" type="rhombus" label="S" [color]="dictionaryColor"></redaction-annotation-icon> <redaction-annotation-icon *ngIf="isSuggestion(filter.key)" [color]="dictionaryColor" label="S" type="rhombus"></redaction-annotation-icon>
<redaction-annotation-icon *ngIf="needsAnalysis(filter.key)" type="square" label="A" [color]="dictionaryColor"></redaction-annotation-icon> <redaction-annotation-icon *ngIf="needsAnalysis(filter.key)" [color]="dictionaryColor" label="A" type="square"></redaction-annotation-icon>
<redaction-annotation-icon *ngIf="filter.key === 'declined-suggestion'" type="rhombus" label="S" [color]="dictionaryColor"></redaction-annotation-icon> <redaction-annotation-icon *ngIf="filter.key === 'declined-suggestion'" [color]="dictionaryColor" label="S" type="rhombus"></redaction-annotation-icon>
<redaction-annotation-icon *ngIf="filter.key === 'none'" label="-" color="transparent" type="none"></redaction-annotation-icon> <redaction-annotation-icon *ngIf="filter.key === 'none'" color="transparent" label="-" type="none"></redaction-annotation-icon>
<redaction-annotation-icon *ngIf="filter.key === 'updated'" type="square" label="U" [color]="dictionaryColor"></redaction-annotation-icon> <redaction-annotation-icon *ngIf="filter.key === 'updated'" [color]="dictionaryColor" label="U" type="square"></redaction-annotation-icon>
<redaction-annotation-icon *ngIf="filter.key === 'image'" type="square" label="I" [color]="dictionaryColor"></redaction-annotation-icon> <redaction-annotation-icon *ngIf="filter.key === 'image'" [color]="dictionaryColor" label="I" type="square"></redaction-annotation-icon>
</ng-container> </ng-container>
<ng-container *ngIf="filter.icon"> <ng-container *ngIf="filter.icon">

View File

@ -9,21 +9,21 @@
<div class="red-input-group required w-300"> <div class="red-input-group required w-300">
<label translate="project-listing.add-edit-dialog.form.name.label"></label> <label translate="project-listing.add-edit-dialog.form.name.label"></label>
<input <input
[placeholder]="'project-listing.add-edit-dialog.form.name.placeholder' | translate"
formControlName="projectName" formControlName="projectName"
name="projectName" name="projectName"
type="text" type="text"
[placeholder]="'project-listing.add-edit-dialog.form.name.placeholder' | translate"
/> />
</div> </div>
<div class="red-input-group required w-400"> <div class="red-input-group required w-400">
<mat-form-field floatLabel="always"> <mat-form-field floatLabel="always">
<mat-label>{{ 'project-listing.add-edit-dialog.form.template' | translate }}</mat-label> <mat-label>{{ 'project-listing.add-edit-dialog.form.template' | translate }}</mat-label>
<mat-select formControlName="ruleSetId" style="width: 100%;" (valueChange)="ruleSetChanged($event)"> <mat-select (valueChange)="ruleSetChanged($event)" formControlName="ruleSetId" style="width: 100%">
<mat-option <mat-option
*ngFor="let ruleSet of ruleSets" *ngFor="let ruleSet of ruleSets"
[value]="ruleSet.ruleSetId"
[matTooltip]="ruleSet.description ? ruleSet.description : ruleSet.name" [matTooltip]="ruleSet.description ? ruleSet.description : ruleSet.name"
[value]="ruleSet.ruleSetId"
matTooltipPosition="after" matTooltipPosition="after"
> >
{{ ruleSet.name }} {{ ruleSet.name }}
@ -35,23 +35,23 @@
<div class="red-input-group w-400"> <div class="red-input-group w-400">
<label translate="project-listing.add-edit-dialog.form.description.label"></label> <label translate="project-listing.add-edit-dialog.form.description.label"></label>
<textarea <textarea
redactionHasScrollbar [placeholder]="'project-listing.add-edit-dialog.form.description.placeholder' | translate"
formControlName="description" formControlName="description"
name="description" name="description"
type="text" redactionHasScrollbar
rows="5" rows="5"
[placeholder]="'project-listing.add-edit-dialog.form.description.placeholder' | translate" type="text"
></textarea> ></textarea>
</div> </div>
<div class="due-date"> <div class="due-date">
<mat-checkbox [checked]="hasDueDate" (change)="hasDueDate = !hasDueDate" class="filter-menu-checkbox" color="primary"> <mat-checkbox (change)="hasDueDate = !hasDueDate" [checked]="hasDueDate" class="filter-menu-checkbox" color="primary">
{{ 'project-listing.add-edit-dialog.form.due-date' | translate }} {{ 'project-listing.add-edit-dialog.form.due-date' | translate }}
</mat-checkbox> </mat-checkbox>
<div class="red-input-group datepicker-wrapper" *ngIf="hasDueDate"> <div *ngIf="hasDueDate" class="red-input-group datepicker-wrapper">
<input placeholder="dd/mm/yy" [matDatepicker]="picker" formControlName="dueDate" /> <input [matDatepicker]="picker" formControlName="dueDate" placeholder="dd/mm/yy" />
<mat-datepicker-toggle matSuffix [for]="picker"> <mat-datepicker-toggle [for]="picker" matSuffix>
<mat-icon matDatepickerToggleIcon svgIcon="red:calendar"></mat-icon> <mat-icon matDatepickerToggleIcon svgIcon="red:calendar"></mat-icon>
</mat-datepicker-toggle> </mat-datepicker-toggle>
<mat-datepicker #picker></mat-datepicker> <mat-datepicker #picker></mat-datepicker>
@ -61,17 +61,17 @@
<p class="download-includes">{{ 'download-includes' | translate }}</p> <p class="download-includes">{{ 'download-includes' | translate }}</p>
<div class="space-between"> <div class="space-between">
<redaction-select <redaction-select
class="w-410" [label]="'report-type.label' | translate: { length: reportTypesLength }"
[options]="reportTypesEnum" [options]="reportTypesEnum"
[translatePrefix]="'report-type.'" [translatePrefix]="'report-type.'"
[label]="'report-type.label' | translate: { length: reportTypesLength }" class="w-410"
formControlName="reportTypes" formControlName="reportTypes"
></redaction-select> ></redaction-select>
<redaction-select <redaction-select
class="w-410" [label]="'download-type.label' | translate: { length: downloadFileTypesLength }"
[options]="downloadTypesEnum" [options]="downloadTypesEnum"
[translatePrefix]="'download-type.'" [translatePrefix]="'download-type.'"
[label]="'download-type.label' | translate: { length: downloadFileTypesLength }" class="w-410"
formControlName="downloadFileTypes" formControlName="downloadFileTypes"
></redaction-select> ></redaction-select>
</div> </div>
@ -83,15 +83,15 @@
</button> </button>
<redaction-icon-button <redaction-icon-button
[disabled]="disabled || !changed"
(action)="saveProjectAndAddMembers()" (action)="saveProjectAndAddMembers()"
*ngIf="!project?.projectId" *ngIf="!project?.projectId"
text="project-listing.add-edit-dialog.actions.save-and-add-members" [disabled]="disabled || !changed"
icon="red:assign" icon="red:assign"
text="project-listing.add-edit-dialog.actions.save-and-add-members"
type="show-bg" type="show-bg"
></redaction-icon-button> ></redaction-icon-button>
</div> </div>
</form> </form>
<redaction-circle-button icon="red:close" mat-dialog-close class="dialog-close"></redaction-circle-button> <redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
</section> </section>

View File

@ -2,7 +2,7 @@
<div [translate]="'assign-' + data.type + '-owner.dialog.title'" class="dialog-header heading-l"></div> <div [translate]="'assign-' + data.type + '-owner.dialog.title'" class="dialog-header heading-l"></div>
<form (submit)="saveUsers()" [formGroup]="usersForm"> <form (submit)="saveUsers()" [formGroup]="usersForm">
<div class="dialog-content" [class.no-padding-bottom]="data.type === 'project'"> <div [class.no-padding-bottom]="data.type === 'project'" class="dialog-content">
<div class="red-input-group w-300"> <div class="red-input-group w-300">
<mat-form-field floatLabel="always"> <mat-form-field floatLabel="always">
<mat-label>{{ 'assign-' + data.type + '-owner.dialog.single-user' | translate }}</mat-label> <mat-label>{{ 'assign-' + data.type + '-owner.dialog.single-user' | translate }}</mat-label>
@ -14,53 +14,53 @@
</mat-form-field> </mat-form-field>
</div> </div>
<ng-container *ngIf="data.type === 'project'"> <ng-container *ngIf="data.type === 'project'">
<div class="all-caps-label mt-16" [translate]="'assign-' + data.type + '-owner.dialog.approvers'"></div> <div [translate]="'assign-' + data.type + '-owner.dialog.approvers'" class="all-caps-label mt-16"></div>
<redaction-team-members <redaction-team-members
[memberIds]="selectedApproversList"
[canAdd]="false"
[largeSpacing]="true"
[canRemove]="true"
[unremovableMembers]="[selectedSingleUser]"
(remove)="toggleSelected($event)" (remove)="toggleSelected($event)"
[canAdd]="false"
[canRemove]="true"
[largeSpacing]="true"
[memberIds]="selectedApproversList"
[perLine]="13" [perLine]="13"
[unremovableMembers]="[selectedSingleUser]"
></redaction-team-members> ></redaction-team-members>
<pre <pre
*ngIf="selectedApproversList.length === 0" *ngIf="selectedApproversList.length === 0"
class="info"
[innerHTML]="'assign-' + data.type + '-owner.dialog.no-approvers' | translate" [innerHTML]="'assign-' + data.type + '-owner.dialog.no-approvers' | translate"
class="info"
></pre> ></pre>
<div class="all-caps-label mt-16" [translate]="'assign-' + data.type + '-owner.dialog.reviewers'"></div> <div [translate]="'assign-' + data.type + '-owner.dialog.reviewers'" class="all-caps-label mt-16"></div>
<redaction-team-members <redaction-team-members
[memberIds]="selectedReviewersList"
[canAdd]="false"
[largeSpacing]="true"
[canRemove]="true"
[unremovableMembers]="[selectedSingleUser]"
(remove)="toggleSelected($event)" (remove)="toggleSelected($event)"
[canAdd]="false"
[canRemove]="true"
[largeSpacing]="true"
[memberIds]="selectedReviewersList"
[perLine]="13" [perLine]="13"
[unremovableMembers]="[selectedSingleUser]"
></redaction-team-members> ></redaction-team-members>
<pre <pre
*ngIf="selectedReviewersList.length === 0" *ngIf="selectedReviewersList.length === 0"
class="info"
[innerHTML]="'assign-' + data.type + '-owner.dialog.no-reviewers' | translate" [innerHTML]="'assign-' + data.type + '-owner.dialog.no-reviewers' | translate"
class="info"
></pre> ></pre>
<redaction-search-input <redaction-search-input
[width]="560"
[form]="searchForm" [form]="searchForm"
[placeholder]="'assign-' + data.type + '-owner.dialog.search' | translate" [placeholder]="'assign-' + data.type + '-owner.dialog.search' | translate"
[width]="560"
class="search-container" class="search-container"
></redaction-search-input> ></redaction-search-input>
<div class="members-list"> <div class="members-list">
<div *ngFor="let userId of multiUsersSelectOptions" [class.selected]="isMemberSelected(userId)" (click)="toggleSelected(userId)"> <div (click)="toggleSelected(userId)" *ngFor="let userId of multiUsersSelectOptions" [class.selected]="isMemberSelected(userId)">
<redaction-initials-avatar [userId]="userId" [withName]="true" size="large"></redaction-initials-avatar> <redaction-initials-avatar [userId]="userId" [withName]="true" size="large"></redaction-initials-avatar>
<div class="actions"> <div class="actions">
<div class="make-approver" (click)="toggleApprover(userId, $event)"> <div (click)="toggleApprover(userId, $event)" class="make-approver">
<redaction-round-checkbox class="mr-8" [active]="isApprover(userId)"></redaction-round-checkbox> <redaction-round-checkbox [active]="isApprover(userId)" class="mr-8"></redaction-round-checkbox>
<span [translate]="'assign-' + data.type + '-owner.dialog.make-approver'"></span> <span [translate]="'assign-' + data.type + '-owner.dialog.make-approver'"></span>
</div> </div>
<mat-icon *ngIf="!isOwner(userId)" [svgIcon]="'red:' + (isMemberSelected(userId) ? 'close' : 'check')"></mat-icon> <mat-icon *ngIf="!isOwner(userId)" [svgIcon]="'red:' + (isMemberSelected(userId) ? 'close' : 'check')"></mat-icon>
@ -75,9 +75,9 @@
{{ 'assign-' + data.type + '-owner.dialog.save' | translate }} {{ 'assign-' + data.type + '-owner.dialog.save' | translate }}
</button> </button>
<div class="all-caps-label pointer cancel" [translate]="'assign-' + data.type + '-owner.dialog.cancel'" mat-dialog-close></div> <div [translate]="'assign-' + data.type + '-owner.dialog.cancel'" class="all-caps-label pointer cancel" mat-dialog-close></div>
</div> </div>
</form> </form>
<redaction-circle-button icon="red:close" mat-dialog-close class="dialog-close"></redaction-circle-button> <redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
</section> </section>

View File

@ -3,7 +3,7 @@
<form (submit)="saveDocumentInfo()" [formGroup]="documentInfoForm"> <form (submit)="saveDocumentInfo()" [formGroup]="documentInfoForm">
<div class="dialog-content"> <div class="dialog-content">
<div class="red-input-group w-300" *ngFor="let attr of attributes"> <div *ngFor="let attr of attributes" class="red-input-group w-300">
<label>{{ attr.label }}</label> <label>{{ attr.label }}</label>
<input [formControlName]="attr.id" [name]="attr.id" type="text" /> <input [formControlName]="attr.id" [name]="attr.id" type="text" />
</div> </div>
@ -15,5 +15,5 @@
</div> </div>
</form> </form>
<redaction-circle-button icon="red:close" mat-dialog-close class="dialog-close"></redaction-circle-button> <redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
</section> </section>

View File

@ -1,12 +1,12 @@
<section class="dialog"> <section class="dialog">
<form (submit)="handleForceRedaction()" [formGroup]="redactionForm"> <form (submit)="handleForceRedaction()" [formGroup]="redactionForm">
<div class="dialog-header heading-l" [translate]="'manual-annotation.dialog.header.force'"></div> <div [translate]="'manual-annotation.dialog.header.force'" class="dialog-header heading-l"></div>
<div class="dialog-content"> <div class="dialog-content">
<div class="red-input-group required w-400"> <div class="red-input-group required w-400">
<label translate="manual-annotation.dialog.content.reason"></label> <label translate="manual-annotation.dialog.content.reason"></label>
<mat-select formControlName="reason" class="full-width" [placeholder]="'manual-annotation.dialog.content.reason-placeholder' | translate"> <mat-select [placeholder]="'manual-annotation.dialog.content.reason-placeholder' | translate" class="full-width" formControlName="reason">
<mat-option *ngFor="let option of legalOptions" [value]="option" [matTooltip]="option.description"> <mat-option *ngFor="let option of legalOptions" [matTooltip]="option.description" [value]="option">
{{ option.label }} {{ option.label }}
</mat-option> </mat-option>
</mat-select> </mat-select>
@ -14,21 +14,21 @@
<div class="red-input-group w-400"> <div class="red-input-group w-400">
<label translate="manual-annotation.dialog.content.legalBasis"></label> <label translate="manual-annotation.dialog.content.legalBasis"></label>
<input type="text" [value]="redactionForm.get('reason').value?.legalBasis" disabled /> <input [value]="redactionForm.get('reason').value?.legalBasis" disabled type="text" />
</div> </div>
<div class="red-input-group w-300" [class.required]="!isDocumentAdmin"> <div [class.required]="!isDocumentAdmin" class="red-input-group w-300">
<label translate="manual-annotation.dialog.content.comment"></label> <label translate="manual-annotation.dialog.content.comment"></label>
<textarea redactionHasScrollbar formControlName="comment" name="comment" type="text" rows="4"></textarea> <textarea formControlName="comment" name="comment" redactionHasScrollbar rows="4" type="text"></textarea>
</div> </div>
</div> </div>
<div class="dialog-actions"> <div class="dialog-actions">
<button color="primary" mat-flat-button [disabled]="!redactionForm.valid" type="submit"> <button [disabled]="!redactionForm.valid" color="primary" mat-flat-button type="submit">
{{ 'manual-annotation.dialog.actions.save' | translate }} {{ 'manual-annotation.dialog.actions.save' | translate }}
</button> </button>
</div> </div>
</form> </form>
<redaction-circle-button icon="red:close" mat-dialog-close class="dialog-close"></redaction-circle-button> <redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
</section> </section>

View File

@ -1,6 +1,6 @@
<section class="dialog"> <section class="dialog">
<form (submit)="handleAddRedaction()" [formGroup]="redactionForm"> <form (submit)="handleAddRedaction()" [formGroup]="redactionForm">
<div class="dialog-header heading-l" [translate]="title"></div> <div [translate]="title" class="dialog-header heading-l"></div>
<div class="dialog-content"> <div class="dialog-content">
<ng-container *ngIf="manualRedactionEntryWrapper.annotationType === 'TEXT'"> <ng-container *ngIf="manualRedactionEntryWrapper.annotationType === 'TEXT'">
@ -16,34 +16,34 @@
</div> </div>
</ng-container> </ng-container>
<div class="red-input-group required w-400" *ngIf="!isDictionaryRequest"> <div *ngIf="!isDictionaryRequest" class="red-input-group required w-400">
<label translate="manual-annotation.dialog.content.reason"></label> <label translate="manual-annotation.dialog.content.reason"></label>
<mat-select formControlName="reason" class="full-width" [placeholder]="'manual-annotation.dialog.content.reason-placeholder' | translate"> <mat-select [placeholder]="'manual-annotation.dialog.content.reason-placeholder' | translate" class="full-width" formControlName="reason">
<mat-option *ngFor="let option of legalOptions" [value]="option" [matTooltip]="option.description" matTooltipPosition="after"> <mat-option *ngFor="let option of legalOptions" [matTooltip]="option.description" [value]="option" matTooltipPosition="after">
{{ option.label }} {{ option.label }}
</mat-option> </mat-option>
</mat-select> </mat-select>
</div> </div>
<div class="red-input-group w-400" *ngIf="!isDictionaryRequest"> <div *ngIf="!isDictionaryRequest" class="red-input-group w-400">
<label translate="manual-annotation.dialog.content.legalBasis"></label> <label translate="manual-annotation.dialog.content.legalBasis"></label>
<input type="text" [value]="redactionForm.get('reason').value?.legalBasis" disabled /> <input [value]="redactionForm.get('reason').value?.legalBasis" disabled type="text" />
</div> </div>
<div class="red-input-group w-300" [class.required]="!isDocumentAdmin"> <div [class.required]="!isDocumentAdmin" class="red-input-group w-300">
<label translate="manual-annotation.dialog.content.comment"></label> <label translate="manual-annotation.dialog.content.comment"></label>
<textarea redactionHasScrollbar formControlName="comment" name="comment" type="text" rows="4"></textarea> <textarea formControlName="comment" name="comment" redactionHasScrollbar rows="4" type="text"></textarea>
</div> </div>
<div class="red-input-group required w-300" *ngIf="isDictionaryRequest && !isFalsePositiveRequest"> <div *ngIf="isDictionaryRequest && !isFalsePositiveRequest" class="red-input-group required w-300">
<label translate="manual-annotation.dialog.content.dictionary"></label> <label translate="manual-annotation.dialog.content.dictionary"></label>
<mat-select formControlName="dictionary"> <mat-select formControlName="dictionary">
<mat-select-trigger>{{ displayedDictionaryLabel }}</mat-select-trigger> <mat-select-trigger>{{ displayedDictionaryLabel }}</mat-select-trigger>
<mat-option <mat-option
*ngFor="let dictionary of redactionDictionaries" *ngFor="let dictionary of redactionDictionaries"
[value]="dictionary.type"
[matTooltip]="dictionary.description" [matTooltip]="dictionary.description"
[value]="dictionary.type"
matTooltipPosition="after" matTooltipPosition="after"
> >
<span> <span>
@ -55,11 +55,11 @@
</div> </div>
<div class="dialog-actions"> <div class="dialog-actions">
<button color="primary" mat-flat-button [disabled]="!redactionForm.valid" type="submit"> <button [disabled]="!redactionForm.valid" color="primary" mat-flat-button type="submit">
{{ 'manual-annotation.dialog.actions.save' | translate }} {{ 'manual-annotation.dialog.actions.save' | translate }}
</button> </button>
</div> </div>
</form> </form>
<redaction-circle-button icon="red:close" mat-dialog-close class="dialog-close"></redaction-circle-button> <redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
</section> </section>

View File

@ -12,7 +12,7 @@
| translate | translate
}} }}
<div class="content-wrapper" *ngIf="data.removeFromDictionary"> <div *ngIf="data.removeFromDictionary" class="content-wrapper">
<table class="default-table"> <table class="default-table">
<thead> <thead>
<tr> <tr>
@ -45,5 +45,5 @@
</button> </button>
</div> </div>
<redaction-circle-button icon="red:close" mat-dialog-close class="dialog-close"></redaction-circle-button> <redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
</section> </section>

View File

@ -2,28 +2,28 @@
<div class="page-header"> <div class="page-header">
<div class="flex flex-1"> <div class="flex flex-1">
<div <div
class="red-tab"
[matTooltip]="'file-preview.standard-tooltip' | translate"
[class.active]="viewMode === 'STANDARD'"
(click)="switchView('STANDARD')" (click)="switchView('STANDARD')"
[class.active]="viewMode === 'STANDARD'"
[matTooltip]="'file-preview.standard-tooltip' | translate"
class="red-tab"
> >
{{ 'file-preview.standard' | translate }} {{ 'file-preview.standard' | translate }}
</div> </div>
<div <div
class="red-tab" (click)="canSwitchToDeltaView && switchView('DELTA')"
[matTooltip]="'file-preview.delta-tooltip' | translate"
[class.active]="viewMode === 'DELTA'" [class.active]="viewMode === 'DELTA'"
[class.disabled]="!canSwitchToDeltaView" [class.disabled]="!canSwitchToDeltaView"
(click)="canSwitchToDeltaView && switchView('DELTA')" [matTooltip]="'file-preview.delta-tooltip' | translate"
class="red-tab"
> >
{{ 'file-preview.delta' | translate }} {{ 'file-preview.delta' | translate }}
</div> </div>
<div <div
class="red-tab" (click)="canSwitchToRedactedView && switchView('REDACTED')"
[matTooltip]="'file-preview.redacted-tooltip' | translate"
[class.active]="viewMode === 'REDACTED'" [class.active]="viewMode === 'REDACTED'"
[class.disabled]="!canSwitchToRedactedView" [class.disabled]="!canSwitchToRedactedView"
(click)="canSwitchToRedactedView && switchView('REDACTED')" [matTooltip]="'file-preview.redacted-tooltip' | translate"
class="red-tab"
> >
{{ 'file-preview.redacted' | translate }} {{ 'file-preview.redacted' | translate }}
</div> </div>
@ -76,13 +76,13 @@
<mat-select formControlName="reviewer"> <mat-select formControlName="reviewer">
<mat-select-trigger> <mat-select-trigger>
<redaction-initials-avatar <redaction-initials-avatar
size="small"
[userId]="reviewerForm.get('reviewer').value" [userId]="reviewerForm.get('reviewer').value"
[withName]="true" [withName]="true"
size="small"
></redaction-initials-avatar> ></redaction-initials-avatar>
</mat-select-trigger> </mat-select-trigger>
<mat-option *ngFor="let reviewerId of this.appStateService.activeProject.memberIds" [value]="reviewerId"> <mat-option *ngFor="let reviewerId of this.appStateService.activeProject.memberIds" [value]="reviewerId">
<redaction-initials-avatar size="small" [userId]="reviewerId" [withName]="true"></redaction-initials-avatar> <redaction-initials-avatar [userId]="reviewerId" [withName]="true" size="small"></redaction-initials-avatar>
</mat-option> </mat-option>
</mat-select> </mat-select>
</div> </div>
@ -136,34 +136,34 @@
<redaction-file-actions <redaction-file-actions
(actionPerformed)="fileActionPerformed($event)" (actionPerformed)="fileActionPerformed($event)"
[activeDocumentInfo]="viewDocumentInfo"
*ngIf="viewReady" *ngIf="viewReady"
[activeDocumentInfo]="viewDocumentInfo"
></redaction-file-actions> ></redaction-file-actions>
<redaction-circle-button <redaction-circle-button
(action)="toggleFullScreen()" (action)="toggleFullScreen()"
[icon]="fullScreen ? 'red:exit-fullscreen' : 'red:fullscreen'" [icon]="fullScreen ? 'red:exit-fullscreen' : 'red:fullscreen'"
class="ml-2"
tooltip="file-preview.fullscreen" tooltip="file-preview.fullscreen"
tooltipPosition="below" tooltipPosition="below"
class="ml-2"
></redaction-circle-button> ></redaction-circle-button>
<!-- Dev Mode Features--> <!-- Dev Mode Features-->
<redaction-circle-button <redaction-circle-button
*ngIf="userPreferenceService.areDevFeaturesEnabled"
(action)="downloadOriginalFile()" (action)="downloadOriginalFile()"
icon="red:download" *ngIf="userPreferenceService.areDevFeaturesEnabled"
type="primary"
class="ml-8" class="ml-8"
icon="red:download"
tooltip="file-preview.download-original-file" tooltip="file-preview.download-original-file"
tooltipPosition="below" tooltipPosition="below"
type="primary"
></redaction-circle-button> ></redaction-circle-button>
<!-- End Dev Mode Features--> <!-- End Dev Mode Features-->
<redaction-circle-button <redaction-circle-button
(action)="closeFullScreen()"
*ngIf="!fullScreen" *ngIf="!fullScreen"
[routerLink]="['/main/projects/' + appStateService.activeProjectId]" [routerLink]="['/main/projects/' + appStateService.activeProjectId]"
(action)="closeFullScreen()"
class="ml-8" class="ml-8"
icon="red:close" icon="red:close"
tooltip="common.close" tooltip="common.close"
@ -177,63 +177,63 @@
<div class="red-content-inner"> <div class="red-content-inner">
<div class="content-container"> <div class="content-container">
<redaction-pdf-viewer <redaction-pdf-viewer
*ngIf="displayPDFViewer"
(keyUp)="handleKeyEvent($event)"
(annotationSelected)="handleAnnotationSelected($event)" (annotationSelected)="handleAnnotationSelected($event)"
(manualAnnotationRequested)="openManualAnnotationDialog($event)"
(annotationsChanged)="annotationsChangedByReviewAction($event)" (annotationsChanged)="annotationsChangedByReviewAction($event)"
(keyUp)="handleKeyEvent($event)"
(manualAnnotationRequested)="openManualAnnotationDialog($event)"
(pageChanged)="viewerPageChanged($event)" (pageChanged)="viewerPageChanged($event)"
(viewerReady)="viewerReady($event)" (viewerReady)="viewerReady($event)"
*ngIf="displayPDFViewer"
[annotations]="annotations"
[canPerformActions]="canPerformAnnotationActions" [canPerformActions]="canPerformAnnotationActions"
[fileData]="displayData" [fileData]="displayData"
[fileStatus]="appStateService.activeFile" [fileStatus]="appStateService.activeFile"
[shouldDeselectAnnotationsOnPageChange]="shouldDeselectAnnotationsOnPageChange"
[annotations]="annotations"
[multiSelectActive]="!!fileWorkloadComponent?.multiSelectActive" [multiSelectActive]="!!fileWorkloadComponent?.multiSelectActive"
[shouldDeselectAnnotationsOnPageChange]="shouldDeselectAnnotationsOnPageChange"
></redaction-pdf-viewer> ></redaction-pdf-viewer>
</div> </div>
<div class="right-container"> <div class="right-container">
<redaction-empty-state <redaction-empty-state
*ngIf="viewReady && appStateService.activeFile.isExcluded && !viewDocumentInfo" *ngIf="viewReady && appStateService.activeFile.isExcluded && !viewDocumentInfo"
[horizontalPadding]="40"
icon="red:needs-work" icon="red:needs-work"
text="file-preview.tabs.is-excluded" text="file-preview.tabs.is-excluded"
[horizontalPadding]="40"
></redaction-empty-state> ></redaction-empty-state>
<redaction-document-info <redaction-document-info
(closeDocumentInfoView)="viewDocumentInfo = false"
*ngIf="viewReady && viewDocumentInfo" *ngIf="viewReady && viewDocumentInfo"
[file]="fileData.fileStatus.fileStatus" [file]="fileData.fileStatus.fileStatus"
(closeDocumentInfoView)="viewDocumentInfo = false"
> >
</redaction-document-info> </redaction-document-info>
<redaction-file-workload <redaction-file-workload
*ngIf="!appStateService.activeFile.isExcluded"
#fileWorkloadComponent #fileWorkloadComponent
[annotations]="annotations" (annotationsChanged)="annotationsChangedByReviewAction($event)"
[selectedAnnotations]="selectedAnnotations"
[activeViewerPage]="activeViewerPage"
[(shouldDeselectAnnotationsOnPageChange)]="shouldDeselectAnnotationsOnPageChange"
[dialogRef]="dialogRef"
[primaryFilters]="primaryFilters"
[secondaryFilters]="secondaryFilters"
[fileData]="fileData"
[hideSkipped]="hideSkipped"
[annotationActionsTemplate]="annotationActionsTemplate"
(selectAnnotations)="selectAnnotations($event)"
(deselectAnnotations)="deselectAnnotations($event)" (deselectAnnotations)="deselectAnnotations($event)"
(selectAnnotations)="selectAnnotations($event)"
(selectPage)="selectPage($event)" (selectPage)="selectPage($event)"
(toggleSkipped)="toggleSkipped($event)" (toggleSkipped)="toggleSkipped($event)"
(annotationsChanged)="annotationsChangedByReviewAction($event)" *ngIf="!appStateService.activeFile.isExcluded"
[(shouldDeselectAnnotationsOnPageChange)]="shouldDeselectAnnotationsOnPageChange"
[activeViewerPage]="activeViewerPage"
[annotationActionsTemplate]="annotationActionsTemplate"
[annotations]="annotations"
[dialogRef]="dialogRef"
[fileData]="fileData"
[hideSkipped]="hideSkipped"
[primaryFilters]="primaryFilters"
[secondaryFilters]="secondaryFilters"
[selectedAnnotations]="selectedAnnotations"
></redaction-file-workload> ></redaction-file-workload>
</div> </div>
</div> </div>
</section> </section>
<redaction-full-page-loading-indicator [displayed]="!viewReady" [showIndicator]="!this.loadingMessage"> <redaction-full-page-loading-indicator [displayed]="!viewReady" [showIndicator]="!this.loadingMessage">
<h1 class="heading-l loading" *ngIf="loadingMessage">{{ loadingMessage | translate }}</h1> <h1 *ngIf="loadingMessage" class="heading-l loading">{{ loadingMessage | translate }}</h1>
<div class="analysis-progress" *ngIf="loadingMessage"> <div *ngIf="loadingMessage" class="analysis-progress">
<mat-progress-bar [mode]="indeterminateMode ? 'indeterminate' : 'determinate'" [value]="analysisProgress"></mat-progress-bar> <mat-progress-bar [mode]="indeterminateMode ? 'indeterminate' : 'determinate'" [value]="analysisProgress"></mat-progress-bar>
</div> </div>
</redaction-full-page-loading-indicator> </redaction-full-page-loading-indicator>

View File

@ -6,34 +6,34 @@
#statusFilter #statusFilter
(filtersChanged)="filtersChanged()" (filtersChanged)="filtersChanged()"
[filterLabel]="'filters.status'" [filterLabel]="'filters.status'"
[primaryFilters]="statusFilters"
[icon]="'red:status'" [icon]="'red:status'"
[primaryFilters]="statusFilters"
></redaction-filter> ></redaction-filter>
<redaction-filter <redaction-filter
#peopleFilter #peopleFilter
(filtersChanged)="filtersChanged()" (filtersChanged)="filtersChanged()"
[filterLabel]="'filters.people'" [filterLabel]="'filters.people'"
[primaryFilters]="peopleFilters"
[icon]="'red:user'" [icon]="'red:user'"
[primaryFilters]="peopleFilters"
></redaction-filter> ></redaction-filter>
<redaction-filter <redaction-filter
#needsWorkFilter #needsWorkFilter
(filtersChanged)="filtersChanged()" (filtersChanged)="filtersChanged()"
[filterLabel]="'filters.needs-work'" [filterLabel]="'filters.needs-work'"
[filterTemplate]="needsWorkTemplate" [filterTemplate]="needsWorkTemplate"
[primaryFilters]="needsWorkFilters"
[icon]="'red:needs-work'" [icon]="'red:needs-work'"
[primaryFilters]="needsWorkFilters"
></redaction-filter> ></redaction-filter>
<redaction-filter <redaction-filter
*ngIf="ruleSetFilters.length > 1"
#ruleSetFilter #ruleSetFilter
(filtersChanged)="filtersChanged()" (filtersChanged)="filtersChanged()"
*ngIf="ruleSetFilters.length > 1"
[filterLabel]="'filters.rulesets'" [filterLabel]="'filters.rulesets'"
[primaryFilters]="ruleSetFilters"
[icon]="'red:template'" [icon]="'red:template'"
[primaryFilters]="ruleSetFilters"
></redaction-filter> ></redaction-filter>
<redaction-search-input [form]="searchForm" [placeholder]="'project-listing.search'"></redaction-search-input> <redaction-search-input [form]="searchForm" [placeholder]="'project-listing.search'"></redaction-search-input>
<div class="reset-filters" *ngIf="hasActiveFilters" (click)="resetFilters()" translate="reset-filters"></div> <div (click)="resetFilters()" *ngIf="hasActiveFilters" class="reset-filters" translate="reset-filters"></div>
</div> </div>
<redaction-icon-button <redaction-icon-button
(action)="openAddProjectDialog()" (action)="openAddProjectDialog()"
@ -65,18 +65,18 @@
<redaction-table-col-name label="project-listing.table-col-names.needs-work"></redaction-table-col-name> <redaction-table-col-name label="project-listing.table-col-names.needs-work"></redaction-table-col-name>
<redaction-table-col-name label="project-listing.table-col-names.owner" class="user-column"></redaction-table-col-name> <redaction-table-col-name class="user-column" label="project-listing.table-col-names.owner"></redaction-table-col-name>
<redaction-table-col-name class="flex-end" label="project-listing.table-col-names.status"></redaction-table-col-name> <redaction-table-col-name class="flex-end" label="project-listing.table-col-names.status"></redaction-table-col-name>
<div class="scrollbar-placeholder"></div> <div class="scrollbar-placeholder"></div>
</div> </div>
<redaction-empty-state <redaction-empty-state
(action)="openAddProjectDialog()"
*ngIf="!allEntities.length" *ngIf="!allEntities.length"
[showButton]="permissionsService.isManager()"
icon="red:folder" icon="red:folder"
screen="project-listing" screen="project-listing"
(action)="openAddProjectDialog()"
[showButton]="permissionsService.isManager()"
></redaction-empty-state> ></redaction-empty-state>
<redaction-empty-state *ngIf="allEntities.length && !displayedEntities.length" screen="project-listing" type="no-match"></redaction-empty-state> <redaction-empty-state *ngIf="allEntities.length && !displayedEntities.length" screen="project-listing" type="no-match"></redaction-empty-state>
@ -137,8 +137,8 @@
<div class="right-container" redactionHasScrollbar> <div class="right-container" redactionHasScrollbar>
<redaction-project-listing-details <redaction-project-listing-details
*ngIf="allEntities.length"
(filtersChanged)="filtersChanged($event)" (filtersChanged)="filtersChanged($event)"
*ngIf="allEntities.length"
[documentsChartData]="documentsChartData" [documentsChartData]="documentsChartData"
[filters]="detailsContainerFilters" [filters]="detailsContainerFilters"
[projectsChartData]="projectsChartData" [projectsChartData]="projectsChartData"

View File

@ -6,78 +6,78 @@
#statusFilter #statusFilter
(filtersChanged)="filtersChanged()" (filtersChanged)="filtersChanged()"
[filterLabel]="'filters.status'" [filterLabel]="'filters.status'"
[primaryFilters]="statusFilters"
[icon]="'red:status'" [icon]="'red:status'"
[primaryFilters]="statusFilters"
></redaction-filter> ></redaction-filter>
<redaction-filter <redaction-filter
#peopleFilter #peopleFilter
(filtersChanged)="filtersChanged()" (filtersChanged)="filtersChanged()"
[filterLabel]="'filters.assigned-people'" [filterLabel]="'filters.assigned-people'"
[primaryFilters]="peopleFilters"
[icon]="'red:user'" [icon]="'red:user'"
[primaryFilters]="peopleFilters"
></redaction-filter> ></redaction-filter>
<redaction-filter <redaction-filter
#needsWorkFilter #needsWorkFilter
(filtersChanged)="filtersChanged()" (filtersChanged)="filtersChanged()"
[filterLabel]="'filters.needs-work'" [filterLabel]="'filters.needs-work'"
[filterTemplate]="needsWorkTemplate" [filterTemplate]="needsWorkTemplate"
[primaryFilters]="needsWorkFilters"
[icon]="'red:needs-work'" [icon]="'red:needs-work'"
[primaryFilters]="needsWorkFilters"
></redaction-filter> ></redaction-filter>
<redaction-search-input [form]="searchForm" [placeholder]="'project-overview.search'"></redaction-search-input> <redaction-search-input [form]="searchForm" [placeholder]="'project-overview.search'"></redaction-search-input>
<div class="reset-filters" *ngIf="hasActiveFilters" (click)="resetFilters()" translate="reset-filters"></div> <div (click)="resetFilters()" *ngIf="hasActiveFilters" class="reset-filters" translate="reset-filters"></div>
</div> </div>
<div class="actions"> <div class="actions">
<redaction-circle-button <redaction-circle-button
*ngIf="permissionsService.isManagerAndOwner()"
(action)="openEditProjectDialog($event)" (action)="openEditProjectDialog($event)"
*ngIf="permissionsService.isManagerAndOwner()"
icon="red:edit"
tooltip="project-overview.header-actions.edit" tooltip="project-overview.header-actions.edit"
tooltipPosition="below" tooltipPosition="below"
icon="red:edit"
></redaction-circle-button> ></redaction-circle-button>
<redaction-circle-button <redaction-circle-button
*ngIf="permissionsService.canDeleteProject()"
(action)="openDeleteProjectDialog($event)" (action)="openDeleteProjectDialog($event)"
*ngIf="permissionsService.canDeleteProject()"
icon="red:trash"
tooltip="project-overview.header-actions.delete" tooltip="project-overview.header-actions.delete"
tooltipPosition="below" tooltipPosition="below"
icon="red:trash"
></redaction-circle-button> ></redaction-circle-button>
<redaction-circle-button <redaction-circle-button
*ngIf="permissionsService.isManagerAndOwner()"
(action)="openAssignProjectMembersDialog()" (action)="openAssignProjectMembersDialog()"
*ngIf="permissionsService.isManagerAndOwner()"
icon="red:assign"
tooltip="project-overview.header-actions.assign" tooltip="project-overview.header-actions.assign"
tooltipPosition="below" tooltipPosition="below"
icon="red:assign"
></redaction-circle-button> ></redaction-circle-button>
<redaction-file-download-btn [project]="activeProject" tooltipPosition="below" [file]="allEntities"></redaction-file-download-btn> <redaction-file-download-btn [file]="allEntities" [project]="activeProject" tooltipPosition="below"></redaction-file-download-btn>
<redaction-circle-button <redaction-circle-button
*ngIf="permissionsService.displayReanalyseBtn()"
(action)="reanalyseProject()" (action)="reanalyseProject()"
*ngIf="permissionsService.displayReanalyseBtn()"
[tooltip]="'project-overview.new-rule.toast.actions.reanalyse-all'" [tooltip]="'project-overview.new-rule.toast.actions.reanalyse-all'"
type="warn" icon="red:refresh"
tooltipClass="warn small" tooltipClass="warn small"
tooltipPosition="below" tooltipPosition="below"
icon="red:refresh" type="warn"
></redaction-circle-button> ></redaction-circle-button>
<redaction-circle-button <redaction-circle-button
class="ml-14"
(action)="fileInput.click()" (action)="fileInput.click()"
class="ml-14"
icon="red:upload"
tooltip="project-overview.header-actions.upload-document" tooltip="project-overview.header-actions.upload-document"
tooltipPosition="below" tooltipPosition="below"
icon="red:upload"
type="primary" type="primary"
></redaction-circle-button> ></redaction-circle-button>
<redaction-circle-button <redaction-circle-button
class="ml-6"
[routerLink]="['/main/projects/']" [routerLink]="['/main/projects/']"
class="ml-6"
icon="red:close"
tooltip="common.close" tooltip="common.close"
tooltipPosition="below" tooltipPosition="below"
icon="red:close"
></redaction-circle-button> ></redaction-circle-button>
</div> </div>
</div> </div>
@ -85,7 +85,7 @@
<div class="overlay-shadow"></div> <div class="overlay-shadow"></div>
<div class="red-content-inner"> <div class="red-content-inner">
<div class="content-container" [class.extended]="collapsedDetails"> <div [class.extended]="collapsedDetails" class="content-container">
<div class="header-item"> <div class="header-item">
<div class="select-all-container"> <div class="select-all-container">
<redaction-round-checkbox <redaction-round-checkbox
@ -100,12 +100,12 @@
</span> </span>
<redaction-project-overview-bulk-actions <redaction-project-overview-bulk-actions
[selectedFileIds]="selectedEntitiesIds"
(reload)="bulkActionPerformed()" (reload)="bulkActionPerformed()"
[selectedFileIds]="selectedEntitiesIds"
></redaction-project-overview-bulk-actions> ></redaction-project-overview-bulk-actions>
</div> </div>
<div class="table-header" redactionSyncWidth="table-item" [class.no-data]="!allEntities.length"> <div [class.no-data]="!allEntities.length" class="table-header" redactionSyncWidth="table-item">
<!-- Table column names--> <!-- Table column names-->
<div class="select-oval-placeholder"></div> <div class="select-oval-placeholder"></div>
@ -131,9 +131,9 @@
(toggleSort)="toggleSort($event)" (toggleSort)="toggleSort($event)"
[activeSortingOption]="sortingOption" [activeSortingOption]="sortingOption"
[withSort]="true" [withSort]="true"
class="user-column"
column="reviewerName" column="reviewerName"
label="project-overview.table-col-names.assigned-to" label="project-overview.table-col-names.assigned-to"
class="user-column"
></redaction-table-col-name> ></redaction-table-col-name>
<redaction-table-col-name <redaction-table-col-name
@ -156,11 +156,11 @@
</div> </div>
<redaction-empty-state <redaction-empty-state
(action)="fileInput.click()"
*ngIf="!allEntities.length" *ngIf="!allEntities.length"
buttonIcon="red:upload"
icon="red:document" icon="red:document"
screen="project-overview" screen="project-overview"
(action)="fileInput.click()"
buttonIcon="red:upload"
></redaction-empty-state> ></redaction-empty-state>
<redaction-empty-state *ngIf="allEntities.length && !displayedEntities.length" screen="project-overview" type="no-match"></redaction-empty-state> <redaction-empty-state *ngIf="allEntities.length && !displayedEntities.length" screen="project-overview" type="no-match"></redaction-empty-state>
@ -168,12 +168,12 @@
<cdk-virtual-scroll-viewport [itemSize]="80" redactionHasScrollbar> <cdk-virtual-scroll-viewport [itemSize]="80" redactionHasScrollbar>
<div <div
*cdkVirtualFor="let fileStatus of displayedEntities | sortBy: sortingOption.order:sortingOption.column; trackBy: fileId" *cdkVirtualFor="let fileStatus of displayedEntities | sortBy: sortingOption.order:sortingOption.column; trackBy: fileId"
[class.disabled]="fileStatus.isExcluded"
[class.pointer]="permissionsService.canOpenFile(fileStatus)" [class.pointer]="permissionsService.canOpenFile(fileStatus)"
[routerLink]="fileLink(fileStatus)" [routerLink]="fileLink(fileStatus)"
class="table-item" class="table-item"
[class.disabled]="fileStatus.isExcluded"
> >
<div class="selection-column" (click)="toggleEntitySelected($event, fileStatus)"> <div (click)="toggleEntitySelected($event, fileStatus)" class="selection-column">
<redaction-round-checkbox [active]="isEntitySelected(fileStatus)"></redaction-round-checkbox> <redaction-round-checkbox [active]="isEntitySelected(fileStatus)"></redaction-round-checkbox>
</div> </div>
@ -184,19 +184,19 @@
[class.error]="fileStatus.isError" [class.error]="fileStatus.isError"
class="table-item-title text-overflow" class="table-item-title text-overflow"
> >
<span matTooltipPosition="above" [matTooltip]="fileStatus.filename"> <span [matTooltip]="fileStatus.filename" matTooltipPosition="above">
{{ fileStatus.filename }} {{ fileStatus.filename }}
</span> </span>
</div> </div>
</div> </div>
<div class="small-label stats-subtitle" *ngIf="fileStatus.primaryAttribute"> <div *ngIf="fileStatus.primaryAttribute" class="small-label stats-subtitle">
<div class="primary-attribute text-overflow"> <div class="primary-attribute text-overflow">
<span matTooltipPosition="above" [matTooltip]="fileStatus.primaryAttribute"> <span [matTooltip]="fileStatus.primaryAttribute" matTooltipPosition="above">
{{ fileStatus.primaryAttribute }} {{ fileStatus.primaryAttribute }}
</span> </span>
</div> </div>
</div> </div>
<div class="small-label stats-subtitle" *ngIf="fileStatus.ocrTime"> <div *ngIf="fileStatus.ocrTime" class="small-label stats-subtitle">
<div [matTooltipPosition]="'above'" [matTooltip]="'project-overview.ocr-performed' | translate"> <div [matTooltipPosition]="'above'" [matTooltip]="'project-overview.ocr-performed' | translate">
<mat-icon svgIcon="red:ocr"></mat-icon> <mat-icon svgIcon="red:ocr"></mat-icon>
{{ fileStatus.ocrTime | date: 'mediumDate' }} {{ fileStatus.ocrTime | date: 'mediumDate' }}
@ -212,7 +212,7 @@
<!-- always show A for error--> <!-- always show A for error-->
<div *ngIf="fileStatus.isError"> <div *ngIf="fileStatus.isError">
<redaction-annotation-icon type="square" label="A" color="#dd4d50"></redaction-annotation-icon> <redaction-annotation-icon color="#dd4d50" label="A" type="square"></redaction-annotation-icon>
</div> </div>
<div *ngIf="!fileStatus.isError"> <div *ngIf="!fileStatus.isError">
@ -248,9 +248,9 @@
></redaction-status-bar> ></redaction-status-bar>
<redaction-file-actions <redaction-file-actions
[fileStatus]="fileStatus"
(actionPerformed)="calculateData()" (actionPerformed)="calculateData()"
*ngIf="!fileStatus.isProcessing" *ngIf="!fileStatus.isProcessing"
[fileStatus]="fileStatus"
class="mr-4" class="mr-4"
></redaction-file-actions> ></redaction-file-actions>
</div> </div>
@ -259,13 +259,13 @@
</cdk-virtual-scroll-viewport> </cdk-virtual-scroll-viewport>
</div> </div>
<div class="right-container" redactionHasScrollbar [class.collapsed]="collapsedDetails"> <div [class.collapsed]="collapsedDetails" class="right-container" redactionHasScrollbar>
<redaction-project-details <redaction-project-details
#projectDetailsComponent #projectDetailsComponent
(openAssignProjectMembersDialog)="openAssignProjectMembersDialog()"
[filters]="detailsContainerFilters"
(filtersChanged)="filtersChanged($event)" (filtersChanged)="filtersChanged($event)"
(openAssignProjectMembersDialog)="openAssignProjectMembersDialog()"
(toggleCollapse)="toggleCollapsedDetails()" (toggleCollapse)="toggleCollapsedDetails()"
[filters]="detailsContainerFilters"
></redaction-project-details> ></redaction-project-details>
</div> </div>
</div> </div>

View File

@ -90,6 +90,7 @@ cdk-virtual-scroll-viewport {
.reanalyse-link { .reanalyse-link {
color: $accent; color: $accent;
text-decoration: underline; text-decoration: underline;
&:hover { &:hover {
color: lighten($accent, 10%); color: lighten($accent, 10%);
} }

View File

@ -1,3 +1,3 @@
<div #icon class="icon" [class.hint]="isHint" [class.request]="isRequest" [class.recommendation]="isRecommendation" [class.none]="type === 'none'"> <div #icon [class.hint]="isHint" [class.none]="type === 'none'" [class.recommendation]="isRecommendation" [class.request]="isRequest" class="icon">
<span>{{ label || dictType.label.charAt(0) }}</span> <span>{{ label || dictType.label.charAt(0) }}</span>
</div> </div>

View File

@ -1,5 +1,5 @@
<button mat-button [class.overlay]="showDot" [class.primary]="primary"> <button [class.overlay]="showDot" [class.primary]="primary" mat-button>
<span [translate]="text"></span> <span [translate]="text"></span>
<mat-icon svgIcon="red:arrow-down" class="chevron-icon"></mat-icon> <mat-icon class="chevron-icon" svgIcon="red:arrow-down"></mat-icon>
</button> </button>
<div class="dot" *ngIf="showDot"></div> <div *ngIf="showDot" class="dot"></div>

View File

@ -2,14 +2,14 @@
<button <button
(click)="performAction($event)" (click)="performAction($event)"
[class.dark-bg]="type === 'dark-bg'" [class.dark-bg]="type === 'dark-bg'"
[class.overlay]="showDot"
[class.primary]="type === 'primary'" [class.primary]="type === 'primary'"
[class.small]="small"
[class.warn]="type === 'warn'" [class.warn]="type === 'warn'"
[disabled]="disabled" [disabled]="disabled"
[class.small]="small"
[class.overlay]="showDot"
mat-icon-button mat-icon-button
> >
<mat-icon [svgIcon]="icon"></mat-icon> <mat-icon [svgIcon]="icon"></mat-icon>
</button> </button>
<div class="dot" *ngIf="showDot"></div> <div *ngIf="showDot" class="dot"></div>
</div> </div>

View File

@ -1,9 +1,9 @@
<redaction-circle-button <redaction-circle-button
[disabled]="!canDownloadFiles"
(action)="downloadFiles($event)" (action)="downloadFiles($event)"
[disabled]="!canDownloadFiles"
[tooltipClass]="tooltipClass" [tooltipClass]="tooltipClass"
[tooltipPosition]="tooltipPosition" [tooltipPosition]="tooltipPosition"
[type]="type"
[tooltip]="canDownloadFiles ? 'project-overview.download-file' : 'project-overview.download-file-disabled'" [tooltip]="canDownloadFiles ? 'project-overview.download-file' : 'project-overview.download-file-disabled'"
[type]="type"
icon="red:download" icon="red:download"
></redaction-circle-button> ></redaction-circle-button>

View File

@ -1,14 +1,14 @@
<button <button
mat-button (click)="action.emit($event)"
[class.has-icon]="!!icon"
[class.overlay]="showDot" [class.overlay]="showDot"
[class.primary]="type === 'primary'" [class.primary]="type === 'primary'"
(click)="action.emit($event)"
[class.show-bg]="type === 'show-bg'" [class.show-bg]="type === 'show-bg'"
[disabled]="disabled" [disabled]="disabled"
[class.has-icon]="!!icon" mat-button
type="button" type="button"
> >
<mat-icon [svgIcon]="icon" *ngIf="icon"></mat-icon> <mat-icon *ngIf="icon" [svgIcon]="icon"></mat-icon>
<span [translate]="text"></span> <span [translate]="text"></span>
</button> </button>
<div class="dot" *ngIf="showDot"></div> <div *ngIf="showDot" class="dot"></div>

View File

@ -1,5 +1,5 @@
<button mat-button [class.overlay]="showDot"> <button [class.overlay]="showDot" mat-button>
<redaction-initials-avatar size="small" [userId]="user?.id" [withName]="true"></redaction-initials-avatar> <redaction-initials-avatar [userId]="user?.id" [withName]="true" size="small"></redaction-initials-avatar>
<mat-icon svgIcon="red:arrow-down"></mat-icon> <mat-icon svgIcon="red:arrow-down"></mat-icon>
</button> </button>
<div class="dot" *ngIf="showDot"></div> <div *ngIf="showDot" class="dot"></div>

View File

@ -1,4 +1,4 @@
<div class="wrapper" #wrapper [class.inactive]="!active && !indeterminate" [class.red-bg]="type === 'red-bg'"> <div #wrapper [class.inactive]="!active && !indeterminate" [class.red-bg]="type === 'red-bg'" class="wrapper">
<mat-icon *ngIf="active && !indeterminate" svgIcon="red:radio-selected"></mat-icon> <mat-icon *ngIf="active && !indeterminate" svgIcon="red:radio-selected"></mat-icon>
<mat-icon *ngIf="indeterminate" svgIcon="red:radio-indeterminate"></mat-icon> <mat-icon *ngIf="indeterminate" svgIcon="red:radio-indeterminate"></mat-icon>
</div> </div>

View File

@ -1 +1 @@
<redaction-annotation-icon [color]="color" [type]="type" [label]="label"> </redaction-annotation-icon> <redaction-annotation-icon [color]="color" [label]="label" [type]="type"></redaction-annotation-icon>

View File

@ -1,9 +1,9 @@
<div <div
class="empty-state"
[ngStyle]="{ 'padding-top': verticalPadding + 'px', 'padding-left': horizontalPadding + 'px', 'padding-right': horizontalPadding + 'px' }" [ngStyle]="{ 'padding-top': verticalPadding + 'px', 'padding-left': horizontalPadding + 'px', 'padding-right': horizontalPadding + 'px' }"
class="empty-state"
> >
<mat-icon [svgIcon]="icon"></mat-icon> <mat-icon [svgIcon]="icon"></mat-icon>
<div class="heading-l" [translate]="text || screen + '.' + type + '.title'"></div> <div [translate]="text || screen + '.' + type + '.title'" class="heading-l"></div>
<redaction-icon-button *ngIf="showButton" (action)="action.emit()" [icon]="buttonIcon" [text]="screen + '.no-data.action'" type="primary"> <redaction-icon-button (action)="action.emit()" *ngIf="showButton" [icon]="buttonIcon" [text]="screen + '.no-data.action'" type="primary">
</redaction-icon-button> </redaction-icon-button>
</div> </div>

View File

@ -1,20 +1,20 @@
<redaction-icon-button <redaction-icon-button
*ngIf="!chevron" *ngIf="!chevron"
[text]="filterLabel"
[icon]="icon" [icon]="icon"
[matMenuTriggerFor]="filterMenu" [matMenuTriggerFor]="filterMenu"
[showDot]="hasActiveFilters" [showDot]="hasActiveFilters"
[text]="filterLabel"
></redaction-icon-button> ></redaction-icon-button>
<redaction-chevron-button *ngIf="chevron" [text]="filterLabel" [matMenuTriggerFor]="filterMenu" [showDot]="hasActiveFilters"></redaction-chevron-button> <redaction-chevron-button *ngIf="chevron" [matMenuTriggerFor]="filterMenu" [showDot]="hasActiveFilters" [text]="filterLabel"></redaction-chevron-button>
<mat-menu #filterMenu="matMenu" xPosition="before" (closed)="applyFilters()"> <mat-menu #filterMenu="matMenu" (closed)="applyFilters()" xPosition="before">
<div (mouseleave)="filterMouseLeave()" (mouseenter)="filterMouseEnter()" [class.pb-24]="secondaryFilters?.length === 0"> <div (mouseenter)="filterMouseEnter()" (mouseleave)="filterMouseLeave()" [class.pb-24]="secondaryFilters?.length === 0">
<div class="filter-menu-header"> <div class="filter-menu-header">
<div class="all-caps-label" translate="filter-menu.filter-types"></div> <div class="all-caps-label" translate="filter-menu.filter-types"></div>
<div class="actions"> <div class="actions">
<div class="all-caps-label primary pointer" [translate]="'actions.all'" (click)="activateAllFilters(); $event.stopPropagation()"></div> <div (click)="activateAllFilters(); $event.stopPropagation()" [translate]="'actions.all'" class="all-caps-label primary pointer"></div>
<div class="all-caps-label primary pointer" [translate]="'actions.none'" (click)="deactivateAllFilters(); $event.stopPropagation()"></div> <div (click)="deactivateAllFilters(); $event.stopPropagation()" [translate]="'actions.none'" class="all-caps-label primary pointer"></div>
</div> </div>
</div> </div>
<div *ngFor="let filter of primaryFilters"> <div *ngFor="let filter of primaryFilters">
@ -22,7 +22,7 @@
*ngTemplateOutlet="defaultFilterTemplate; context: { filter: filter, atLeastOneIsExpandable: atLeastOneFilterIsExpandable }" *ngTemplateOutlet="defaultFilterTemplate; context: { filter: filter, atLeastOneIsExpandable: atLeastOneFilterIsExpandable }"
></ng-template> ></ng-template>
</div> </div>
<div class="filter-options" *ngIf="secondaryFilters?.length > 0"> <div *ngIf="secondaryFilters?.length > 0" class="filter-options">
<div class="filter-menu-options"> <div class="filter-menu-options">
<div class="all-caps-label" translate="filter-menu.filter-options"></div> <div class="all-caps-label" translate="filter-menu.filter-options"></div>
</div> </div>
@ -39,19 +39,17 @@
{{ _(filter)?.label }} {{ _(filter)?.label }}
</ng-template> </ng-template>
<ng-template #defaultFilterTemplate let-filter="filter" let-atLeastOneIsExpandable="atLeastOneIsExpandable"> <ng-template #defaultFilterTemplate let-atLeastOneIsExpandable="atLeastOneIsExpandable" let-filter="filter">
<div class="mat-menu-item flex" (click)="toggleFilterExpanded($event, filter)"> <div (click)="toggleFilterExpanded($event, filter)" class="mat-menu-item flex">
<div class="arrow-wrapper" *ngIf="isExpandable(filter)"> <div *ngIf="isExpandable(filter)" class="arrow-wrapper">
<mat-icon *ngIf="_(filter).expanded" svgIcon="red:arrow-down" color="accent"></mat-icon> <mat-icon *ngIf="_(filter).expanded" color="accent" svgIcon="red:arrow-down"></mat-icon>
<mat-icon *ngIf="!_(filter).expanded" color="accent" svgIcon="red:arrow-right"></mat-icon> <mat-icon *ngIf="!_(filter).expanded" color="accent" svgIcon="red:arrow-right"></mat-icon>
</div> </div>
<div class="arrow-wrapper spacer" *ngIf="atLeastOneIsExpandable && !isExpandable(filter)"> <div *ngIf="atLeastOneIsExpandable && !isExpandable(filter)" class="arrow-wrapper spacer">&nbsp;</div>
&nbsp;
</div>
<mat-checkbox <mat-checkbox
(click)="filterCheckboxClicked($event, filter)"
[checked]="_(filter).checked" [checked]="_(filter).checked"
[indeterminate]="_(filter).indeterminate" [indeterminate]="_(filter).indeterminate"
(click)="filterCheckboxClicked($event, filter)"
class="filter-menu-checkbox" class="filter-menu-checkbox"
> >
<ng-template *ngTemplateOutlet="filterTemplate ? filterTemplate : defaultFilterLabelTemplate; context: { filter: filter }"></ng-template> <ng-template *ngTemplateOutlet="filterTemplate ? filterTemplate : defaultFilterLabelTemplate; context: { filter: filter }"></ng-template>
@ -59,8 +57,8 @@
<ng-template *ngTemplateOutlet="actionsTemplate ? actionsTemplate : null; context: { filter: filter }"></ng-template> <ng-template *ngTemplateOutlet="actionsTemplate ? actionsTemplate : null; context: { filter: filter }"></ng-template>
</div> </div>
<div *ngIf="_(filter).filters?.length && _(filter).expanded"> <div *ngIf="_(filter).filters?.length && _(filter).expanded">
<div *ngFor="let subFilter of _(filter).filters" class="padding-left mat-menu-item" (click)="$event.stopPropagation()"> <div (click)="$event.stopPropagation()" *ngFor="let subFilter of _(filter).filters" class="padding-left mat-menu-item">
<mat-checkbox [checked]="subFilter.checked" (click)="filterCheckboxClicked($event, subFilter, filter)"> <mat-checkbox (click)="filterCheckboxClicked($event, subFilter, filter)" [checked]="subFilter.checked">
<ng-template *ngTemplateOutlet="filterTemplate ? filterTemplate : defaultFilterLabelTemplate; context: { filter: subFilter }"></ng-template> <ng-template *ngTemplateOutlet="filterTemplate ? filterTemplate : defaultFilterLabelTemplate; context: { filter: subFilter }"></ng-template>
</mat-checkbox> </mat-checkbox>
<ng-template *ngTemplateOutlet="actionsTemplate ? actionsTemplate : null; context: { filter: subFilter }"></ng-template> <ng-template *ngTemplateOutlet="actionsTemplate ? actionsTemplate : null; context: { filter: subFilter }"></ng-template>

View File

@ -1,5 +1,5 @@
<section class="full-page-load-section" *ngIf="displayed"></section> <section *ngIf="displayed" class="full-page-load-section"></section>
<section class="full-page-load-spinner" *ngIf="displayed"> <section *ngIf="displayed" class="full-page-load-spinner">
<mat-spinner diameter="40" *ngIf="showIndicator"></mat-spinner> <mat-spinner *ngIf="showIndicator" diameter="40"></mat-spinner>
<ng-content></ng-content> <ng-content></ng-content>
</section> </section>

View File

@ -6,7 +6,7 @@
> >
{{ initials }} {{ initials }}
</div> </div>
<div *ngIf="withName" class="clamp-2 username" [class.disabled]="disabled"> <div *ngIf="withName" [class.disabled]="disabled" class="clamp-2 username">
{{ displayName || ('initials-avatar.unassigned' | translate) }} {{ displayName || ('initials-avatar.unassigned' | translate) }}
</div> </div>
</div> </div>

View File

@ -1,7 +1,7 @@
<div translate="pagination.previous" class="page" [class.disabled]="currentPage < 2" (click)="selectPage(currentPage - 1)"></div> <div (click)="selectPage(currentPage - 1)" [class.disabled]="currentPage < 2" class="page" translate="pagination.previous"></div>
<span>|</span> <span>|</span>
<div *ngFor="let page of displayedPages" class="page" [class.dots]="page === '...'" [class.active]="page === currentPage" (click)="selectPage(page)"> <div (click)="selectPage(page)" *ngFor="let page of displayedPages" [class.active]="page === currentPage" [class.dots]="page === '...'" class="page">
{{ displayValue(page) }} {{ displayValue(page) }}
</div> </div>
<span>|</span> <span>|</span>
<div translate="pagination.next" class="page" [class.disabled]="currentPage === totalPages - 1" (click)="selectPage(currentPage + 1)"></div> <div (click)="selectPage(currentPage + 1)" [class.disabled]="currentPage === totalPages - 1" class="page" translate="pagination.next"></div>

View File

@ -1,7 +1,7 @@
<form [formGroup]="form"> <form [formGroup]="form">
<div class="red-input-group" [style.width]="computedWidth" [style.max-width]="computedWidth"> <div [style.max-width]="computedWidth" [style.width]="computedWidth" class="red-input-group">
<input [placeholder]="placeholder | translate" class="with-icon mt-0" formControlName="query" name="query" type="text" /> <input [placeholder]="placeholder | translate" class="with-icon mt-0" formControlName="query" name="query" type="text" />
<mat-icon *ngIf="!hasContent" class="icon-right" svgIcon="red:search"></mat-icon> <mat-icon *ngIf="!hasContent" class="icon-right" svgIcon="red:search"></mat-icon>
<mat-icon *ngIf="hasContent" class="icon-right pointer" svgIcon="red:close" (click)="clearContent()"></mat-icon> <mat-icon (click)="clearContent()" *ngIf="hasContent" class="icon-right pointer" svgIcon="red:close"></mat-icon>
</div> </div>
</form> </form>

View File

@ -2,13 +2,13 @@
<div class="label-header space-between"> <div class="label-header space-between">
<div class="all-caps-label">{{ label }}</div> <div class="all-caps-label">{{ label }}</div>
<div class="actions"> <div class="actions">
<div class="all-caps-label primary pointer" [translate]="'actions.all'" (click)="selectAll($event)"></div> <div (click)="selectAll($event)" [translate]="'actions.all'" class="all-caps-label primary pointer"></div>
<div class="all-caps-label primary pointer" [translate]="'actions.none'" (click)="deselectAll($event)"></div> <div (click)="deselectAll($event)" [translate]="'actions.none'" class="all-caps-label primary pointer"></div>
</div> </div>
</div> </div>
<mat-chip-list class="options flex-center" selectable [multiple]="multiple" [disabled]="disabled"> <mat-chip-list [disabled]="disabled" [multiple]="multiple" class="options flex-center" selectable>
<mat-chip *ngFor="let option of options" #chip="matChip" (click)="toggleSelection(chip)" [value]="option"> <mat-chip #chip="matChip" (click)="toggleSelection(chip)" *ngFor="let option of options" [value]="option">
{{ translatePrefix + option | translate }} {{ translatePrefix + option | translate }}
</mat-chip> </mat-chip>
</mat-chip-list> </mat-chip-list>

View File

@ -1,32 +1,31 @@
<div [class]="'container flex ' + direction"> <div [class]="'container flex ' + direction">
<svg attr.height="{{ size }}" attr.width="{{ size }}" attr.viewBox="0 0 {{ size }} {{ size }}" [style.min-width]="size" class="donut-chart"> <svg [style.min-width]="size" attr.height="{{ size }}" attr.viewBox="0 0 {{ size }} {{ size }}" attr.width="{{ size }}" class="donut-chart">
<g *ngFor="let value of parsedConfig; let i = index"> <g *ngFor="let value of parsedConfig; let i = index">
<circle <circle
*ngIf="exists(i)" *ngIf="exists(i)"
[attr.stroke]="value.color.includes('#') ? value.color : ''"
[class]="value.color"
attr.cx="{{ cx }}" attr.cx="{{ cx }}"
attr.cy="{{ cy }}" attr.cy="{{ cy }}"
attr.r="{{ radius }}" attr.r="{{ radius }}"
[class]="value.color"
[attr.stroke]="value.color.includes('#') ? value.color : ''"
attr.stroke-width="{{ strokeWidth }}"
attr.stroke-dasharray="{{ circumference }}" attr.stroke-dasharray="{{ circumference }}"
attr.stroke-dashoffset="{{ calculateStrokeDashOffset(value.value) }}" attr.stroke-dashoffset="{{ calculateStrokeDashOffset(value.value) }}"
fill="transparent" attr.stroke-width="{{ strokeWidth }}"
attr.transform="{{ returnCircleTransformValue(i) }}" attr.transform="{{ returnCircleTransformValue(i) }}"
fill="transparent"
/> />
</g> </g>
</svg> </svg>
<div class="text-container" [style]="'height: ' + size + 'px; width: ' + size + 'px; padding: ' + strokeWidth + 'px;'"> <div [style]="'height: ' + size + 'px; width: ' + size + 'px; padding: ' + strokeWidth + 'px;'" class="text-container">
<div class="heading-xl">{{ displayedDataTotal }}</div> <div class="heading-xl">{{ displayedDataTotal }}</div>
<div class="mt-5">{{ subtitle | translate }}</div> <div class="mt-5">{{ subtitle | translate }}</div>
</div> </div>
<div class="breakdown-container"> <div class="breakdown-container">
<div> <div>
<div *ngFor="let val of parsedConfig" [class.active]="val.checked" [class.filter-disabled]="!filter" (click)="selectValue(val)"> <div (click)="selectValue(val)" *ngFor="let val of parsedConfig" [class.active]="val.checked" [class.filter-disabled]="!filter">
<redaction-status-bar <redaction-status-bar
[small]="true"
[config]="[ [config]="[
{ {
length: val.value, length: val.value,
@ -35,6 +34,7 @@
cssClass: val.color === 'PROCESSING' || val.color === 'OCR_PROCESSING' ? 'loading' : '' cssClass: val.color === 'PROCESSING' || val.color === 'OCR_PROCESSING' ? 'loading' : ''
} }
]" ]"
[small]="true"
> >
</redaction-status-bar> </redaction-status-bar>
</div> </div>

View File

@ -1,5 +1,5 @@
<div class="rectangle-container" [ngClass]="{ small: small }"> <div [ngClass]="{ small: small }" class="rectangle-container">
<div *ngFor="let rect of config" class="section-wrapper" [style]="'flex: ' + (rect.length || 1) + ';'"> <div *ngFor="let rect of config" [style]="'flex: ' + (rect.length || 1) + ';'" class="section-wrapper">
<div <div
[className]="'rectangle ' + rect.color" [className]="'rectangle ' + rect.color"
[ngStyle]="{ [ngStyle]="{

View File

@ -1,8 +1,8 @@
<div (click)="withSort && toggleSort.emit(column)" [class.pointer]="withSort" [ngClass]="class"> <div (click)="withSort && toggleSort.emit(column)" [class.pointer]="withSort" [ngClass]="class">
<mat-icon *ngIf="!!leftIcon" [svgIcon]="leftIcon"></mat-icon> <mat-icon *ngIf="!!leftIcon" [svgIcon]="leftIcon"></mat-icon>
<span [translate]="label" class="all-caps-label"></span> <span [translate]="label" class="all-caps-label"></span>
<mat-icon *ngIf="!!rightIcon" [svgIcon]="rightIcon" [matTooltip]="rightIconTooltip | translate" matTooltipPosition="above"></mat-icon> <mat-icon *ngIf="!!rightIcon" [matTooltip]="rightIconTooltip | translate" [svgIcon]="rightIcon" matTooltipPosition="above"></mat-icon>
<div class="sort-arrows-container" *ngIf="withSort" [class.force-display]="activeSortingOption.column === column"> <div *ngIf="withSort" [class.force-display]="activeSortingOption.column === column" class="sort-arrows-container">
<mat-icon *ngIf="activeSortingOption?.order === 'asc'" svgIcon="red:sort-asc"></mat-icon> <mat-icon *ngIf="activeSortingOption?.order === 'asc'" svgIcon="red:sort-asc"></mat-icon>
<mat-icon *ngIf="activeSortingOption?.order === 'desc'" svgIcon="red:sort-desc"></mat-icon> <mat-icon *ngIf="activeSortingOption?.order === 'desc'" svgIcon="red:sort-desc"></mat-icon>
</div> </div>

View File

@ -16,5 +16,5 @@
</button> </button>
</div> </div>
<redaction-circle-button icon="red:close" mat-dialog-close class="dialog-close"></redaction-circle-button> <redaction-circle-button class="dialog-close" icon="red:close" mat-dialog-close></redaction-circle-button>
</section> </section>

View File

@ -4,14 +4,14 @@
<div class="dialog-content"> <div class="dialog-content">
<p [innerHTML]="'overwrite-files-dialog.question' | translate: { filename: filename }"></p> <p [innerHTML]="'overwrite-files-dialog.question' | translate: { filename: filename }"></p>
<mat-checkbox [checked]="remember" (change)="remember = !remember" color="primary" class="flex-1"> <mat-checkbox (change)="remember = !remember" [checked]="remember" class="flex-1" color="primary">
{{ 'overwrite-files-dialog.options.remember' | translate }} {{ 'overwrite-files-dialog.options.remember' | translate }}
</mat-checkbox> </mat-checkbox>
</div> </div>
<div class="dialog-actions"> <div class="dialog-actions">
<button (click)="selectOption('overwrite')" color="primary" mat-flat-button translate="overwrite-files-dialog.options.overwrite"></button> <button (click)="selectOption('overwrite')" color="primary" mat-flat-button translate="overwrite-files-dialog.options.overwrite"></button>
<redaction-icon-button text="overwrite-files-dialog.options.skip" (action)="selectOption('skip')" type="show-bg"></redaction-icon-button> <redaction-icon-button (action)="selectOption('skip')" text="overwrite-files-dialog.options.skip" type="show-bg"></redaction-icon-button>
<div class="all-caps-label cancel" (click)="cancel()" translate="overwrite-files-dialog.options.cancel"></div> <div (click)="cancel()" class="all-caps-label cancel" translate="overwrite-files-dialog.options.cancel"></div>
</div> </div>
</section> </section>

View File

@ -1,5 +1,5 @@
<section (mouseout)="close()"> <section (mouseout)="close()">
<mat-icon svgIcon="red:upload" class="upload-icon"></mat-icon> <mat-icon class="upload-icon" svgIcon="red:upload"></mat-icon>
<div class="heading-xl"> <div class="heading-xl">
{{ 'project-overview.upload-files' | translate }} {{ 'project-overview.upload-files' | translate }}
</div> </div>

View File

@ -4,50 +4,50 @@
{{ 'upload-status.dialog.title' | translate: { len: uploadService.files.length } }} {{ 'upload-status.dialog.title' | translate: { len: uploadService.files.length } }}
</div> </div>
<redaction-circle-button [icon]="'red:status-' + (collapsed ? 'expand' : 'collapse')"></redaction-circle-button> <redaction-circle-button [icon]="'red:status-' + (collapsed ? 'expand' : 'collapse')"></redaction-circle-button>
<redaction-circle-button icon="red:close" (action)="closeDialog()"></redaction-circle-button> <redaction-circle-button (action)="closeDialog()" icon="red:close"></redaction-circle-button>
</div> </div>
<div [hidden]="collapsed" class="upload-download-list"> <div [hidden]="collapsed" class="upload-download-list">
<div *ngFor="let projectId of uploadService.activeProjectKeys"> <div *ngFor="let projectId of uploadService.activeProjectKeys">
<div class="project-name-wrapper all-caps-label"> <div class="project-name-wrapper all-caps-label">
<span>{{ uploadService.groupedFiles[projectId][0].projectName }}</span> <span>{{ uploadService.groupedFiles[projectId][0].projectName }}</span>
</div> </div>
<div *ngFor="let model of uploadService.groupedFiles[projectId]" class="upload-download-list-item" [class.error]="model.error"> <div *ngFor="let model of uploadService.groupedFiles[projectId]" [class.error]="model.error" class="upload-download-list-item">
<div> <div>
<div class="upload-download-line"> <div class="upload-download-line">
<div <div
[class.complete]="model.completed && !model.error"
[matTooltip]="model.file?.name" [matTooltip]="model.file?.name"
class="upload-download-item-name flex-1" class="upload-download-item-name flex-1"
[class.complete]="model.completed && !model.error"
matTooltipPosition="above" matTooltipPosition="above"
> >
{{ model.file?.name }} {{ model.file?.name }}
</div> </div>
<div class="progress" *ngIf="!model.error">{{ model.progress }}%</div> <div *ngIf="!model.error" class="progress">{{ model.progress }}%</div>
</div> </div>
<div class="error-message" *ngIf="model.error"> <div *ngIf="model.error" class="error-message">
{{ model.error?.message }} {{ model.error?.message }}
</div> </div>
</div> </div>
<div class="upload-download-progress" *ngIf="!model.error"> <div *ngIf="!model.error" class="upload-download-progress">
<mat-progress-bar [value]="model.progress" color="primary" mode="determinate" [class.green]="model.completed"></mat-progress-bar> <mat-progress-bar [class.green]="model.completed" [value]="model.progress" color="primary" mode="determinate"></mat-progress-bar>
</div> </div>
<div class="actions" [class.error]="model.error" *ngIf="model.error || !model.completed"> <div *ngIf="model.error || !model.completed" [class.error]="model.error" class="actions">
<redaction-circle-button <redaction-circle-button
(action)="uploadItem(model)"
*ngIf="model.error && !model.sizeError" *ngIf="model.error && !model.sizeError"
icon="red:refresh" icon="red:refresh"
tooltip="upload-status.dialog.actions.re-upload" tooltip="upload-status.dialog.actions.re-upload"
(action)="uploadItem(model)"
type="dark-bg"
tooltipPosition="before" tooltipPosition="before"
type="dark-bg"
></redaction-circle-button> ></redaction-circle-button>
<redaction-circle-button <redaction-circle-button
(action)="cancelItem(model)"
icon="red:close" icon="red:close"
tooltip="upload-status.dialog.actions.cancel" tooltip="upload-status.dialog.actions.cancel"
(action)="cancelItem(model)"
type="dark-bg"
tooltipPosition="before" tooltipPosition="before"
type="dark-bg"
></redaction-circle-button> ></redaction-circle-button>
</div> </div>
</div> </div>

View File

@ -120,6 +120,7 @@
&:not(.error):hover { &:not(.error):hover {
background-color: $grey-2; background-color: $grey-2;
.actions { .actions {
display: flex; display: flex;
} }

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="100px" height="100px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg height="100px" version="1.1" viewBox="0 0 100 100" width="100px" xmlns="http://www.w3.org/2000/svg">
<g id="analyse" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd" id="analyse" stroke="none" stroke-width="1">
<path d="M16.5,89 L16.5,100 L0,100 L0,89 L16.5,89 Z M44.5,89 L44.5,100 L28,100 L28,89 L44.5,89 Z M72,89 L72,100 L55.5,100 L55.5,89 L72,89 Z M100,89 L100,100 L83.5,100 L83.5,89 L100,89 Z M16.5,66.5 L16.5,77.5 L0,77.5 L0,66.5 L16.5,66.5 Z M44.5,66.5 L44.5,77.5 L28,77.5 L28,66.5 L44.5,66.5 Z M72,66.5 L72,77.5 L55.5,77.5 L55.5,66.5 L72,66.5 Z M100,66.5 L100,77.5 L83.5,77.5 L83.5,66.5 L100,66.5 Z M16.5,44.5 L16.5,55.5 L0,55.5 L0,44.5 L16.5,44.5 Z M44.5,44.5 L44.5,55.5 L28,55.5 L28,44.5 L44.5,44.5 Z M100,44.5 L100,55.5 L83.5,55.5 L83.5,44.5 L100,44.5 Z M44.5,22 L44.5,33 L28,33 L28,22 L44.5,22 Z M100,22 L100,33 L83.5,33 L83.5,22 L100,22 Z M44.5,0 L44.5,11 L28,11 L28,0 L44.5,0 Z" id="Combined-Shape" fill="currentColor" fill-rule="nonzero"></path> <path
d="M16.5,89 L16.5,100 L0,100 L0,89 L16.5,89 Z M44.5,89 L44.5,100 L28,100 L28,89 L44.5,89 Z M72,89 L72,100 L55.5,100 L55.5,89 L72,89 Z M100,89 L100,100 L83.5,100 L83.5,89 L100,89 Z M16.5,66.5 L16.5,77.5 L0,77.5 L0,66.5 L16.5,66.5 Z M44.5,66.5 L44.5,77.5 L28,77.5 L28,66.5 L44.5,66.5 Z M72,66.5 L72,77.5 L55.5,77.5 L55.5,66.5 L72,66.5 Z M100,66.5 L100,77.5 L83.5,77.5 L83.5,66.5 L100,66.5 Z M16.5,44.5 L16.5,55.5 L0,55.5 L0,44.5 L16.5,44.5 Z M44.5,44.5 L44.5,55.5 L28,55.5 L28,44.5 L44.5,44.5 Z M100,44.5 L100,55.5 L83.5,55.5 L83.5,44.5 L100,44.5 Z M44.5,22 L44.5,33 L28,33 L28,22 L44.5,22 Z M100,22 L100,33 L83.5,33 L83.5,22 L100,22 Z M44.5,0 L44.5,11 L28,11 L28,0 L44.5,0 Z"
fill="currentColor" fill-rule="nonzero" id="Combined-Shape"></path>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -1,10 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg height="14px" version="1.1" viewBox="0 0 14 14" width="14px" xmlns="http://www.w3.org/2000/svg">
<g id="Styleguide" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd" id="Styleguide" stroke="none" stroke-width="1">
<g id="Styleguide-Actions" transform="translate(-62.000000, -567.000000)" fill="currentColor" fill-rule="nonzero"> <g fill="currentColor" fill-rule="nonzero" id="Styleguide-Actions"
transform="translate(-62.000000, -567.000000)">
<g id="Group-6" transform="translate(52.000000, 557.000000)"> <g id="Group-6" transform="translate(52.000000, 557.000000)">
<g id="status" transform="translate(10.000000, 10.000000)"> <g id="status" transform="translate(10.000000, 10.000000)">
<path d="M14,0 L14,11.2 L11.2,11.2 L11.2,14 L0,14 L0,2.8 L2.8,2.8 L2.8,0 L14,0 Z M2.8,4.2 L1.4,4.2 L1.4,12.6 L9.8,12.6 L9.8,11.2 L2.8,11.2 L2.8,4.2 Z M12.6,1.4 L4.2,1.4 L4.2,9.8 L12.6,9.8 L12.6,1.4 Z M10.36,3.36 L11.34,4.34 L7.84,7.84 L5.74,5.74 L6.72,4.76 L7.84,5.88 L10.36,3.36 Z" id="approved"></path> <path
d="M14,0 L14,11.2 L11.2,11.2 L11.2,14 L0,14 L0,2.8 L2.8,2.8 L2.8,0 L14,0 Z M2.8,4.2 L1.4,4.2 L1.4,12.6 L9.8,12.6 L9.8,11.2 L2.8,11.2 L2.8,4.2 Z M12.6,1.4 L4.2,1.4 L4.2,9.8 L12.6,9.8 L12.6,1.4 Z M10.36,3.36 L11.34,4.34 L7.84,7.84 L5.74,5.74 L6.72,4.76 L7.84,5.88 L10.36,3.36 Z"
id="approved"></path>
</g> </g>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 936 B

After

Width:  |  Height:  |  Size: 952 B

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg height="14px" version="1.1" viewBox="0 0 14 14" width="14px" xmlns="http://www.w3.org/2000/svg">
<g id="Styleguide" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd" id="Styleguide" stroke="none" stroke-width="1">
<g id="Styleguide-Buttons" transform="translate(-469.000000, -757.000000)"> <g id="Styleguide-Buttons" transform="translate(-469.000000, -757.000000)">
<rect x="0" y="0" width="904" height="906"></rect> <rect height="906" width="904" x="0" y="0"></rect>
<rect id="Rectangle" x="359" y="747" width="134" height="34" rx="17"></rect> <rect height="34" id="Rectangle" rx="17" width="134" x="359" y="747"></rect>
<g id="right" transform="translate(469.000000, 757.000000)" fill="currentColor"> <g fill="currentColor" id="right" transform="translate(469.000000, 757.000000)">
<polygon id="Fill-1" points="7 9 10 5 4 5"></polygon> <polygon id="Fill-1" points="7 9 10 5 4 5"></polygon>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 716 B

After

Width:  |  Height:  |  Size: 673 B

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg height="14px" version="1.1" viewBox="0 0 14 14" width="14px" xmlns="http://www.w3.org/2000/svg">
<g id="right_expandable" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd" id="right_expandable" stroke="none" stroke-width="1">
<polygon id="Fill-1" fill="currentColor" transform="translate(7.000000, 7.000000) rotate(-90.000000) translate(-7.000000, -7.000000) " points="7 9 10 5 4 5"></polygon> <polygon fill="currentColor" id="Fill-1"
points="7 9 10 5 4 5"
transform="translate(7.000000, 7.000000) rotate(-90.000000) translate(-7.000000, -7.000000) "></polygon>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 469 B

After

Width:  |  Height:  |  Size: 460 B

View File

@ -1,40 +1,39 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg <svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
width="14px"
height="14px" height="14px"
viewBox="0 0 14 14" id="svg101"
version="1.1" version="1.1"
id="svg101"> viewBox="0 0 14 14"
width="14px"
xmlns="http://www.w3.org/2000/svg">
<defs <defs
id="defs105" /> id="defs105" />
<g <g
fill="none"
fill-rule="evenodd"
id="Styleguide" id="Styleguide"
stroke="none" stroke="none"
stroke-width="1" stroke-width="1">
fill="none"
fill-rule="evenodd">
<g <g
id="Styleguide-Buttons" id="Styleguide-Buttons"
transform="translate(-469.000000, -757.000000)"> transform="translate(-469.000000, -757.000000)">
<rect <rect
x="0"
y="0"
width="904"
height="906" height="906"
id="rect94" /> id="rect94"
width="904"
x="0"
y="0" />
<rect <rect
id="Rectangle"
x="359"
y="747"
width="134"
height="34" height="34"
rx="17" /> id="Rectangle"
rx="17"
width="134"
x="359"
y="747" />
<g <g
fill="currentColor"
id="right" id="right"
transform="rotate(180,241.5,385.5)" transform="rotate(180,241.5,385.5)">
fill="currentColor">
<polygon <polygon
id="Fill-1" id="Fill-1"
points="4,5 7,9 10,5 " /> points="4,5 7,9 10,5 " />

Before

Width:  |  Height:  |  Size: 918 B

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -1,21 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg height="14px" version="1.1" viewBox="0 0 14 14" width="14px" xmlns="http://www.w3.org/2000/svg">
<defs> <defs>
<rect id="path-1" x="0" y="61" width="1440" height="50"></rect> <rect height="50" id="path-1" width="1440" x="0" y="61"></rect>
<filter x="-0.5%" y="-10.0%" width="101.0%" height="128.0%" filterUnits="objectBoundingBox" id="filter-2"> <filter filterUnits="objectBoundingBox" height="128.0%" id="filter-2" width="101.0%" x="-0.5%" y="-10.0%">
<feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> <feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur> <feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="2"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0.88627451 0 0 0 0 0.894117647 0 0 0 0 0.91372549 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix> <feColorMatrix in="shadowBlurOuter1"
type="matrix" values="0 0 0 0 0.88627451 0 0 0 0 0.894117647 0 0 0 0 0.91372549 0 0 0 1 0"></feColorMatrix>
</filter> </filter>
</defs> </defs>
<g id="Assignee" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd" id="Assignee" stroke="none" stroke-width="1">
<g id="01.-Unassigned" transform="translate(-1066.000000, -79.000000)"> <g id="01.-Unassigned" transform="translate(-1066.000000, -79.000000)">
<g id="Header-Document"> <g id="Header-Document">
<g id="Group-13" transform="translate(917.000000, 69.000000)" fill="currentColor" fill-rule="nonzero"> <g fill="currentColor" fill-rule="nonzero" id="Group-13" transform="translate(917.000000, 69.000000)">
<g id="Group-6" transform="translate(139.000000, 0.000000)"> <g id="Group-6" transform="translate(139.000000, 0.000000)">
<g id="status" transform="translate(10.000000, 10.000000)"> <g id="status" transform="translate(10.000000, 10.000000)">
<path d="M4.61951123,7.00768239 L4.6192693,8.41063592 C2.85882948,8.544763 1.4982383,9.93223022 1.40509185,11.7054415 L1.4,11.9 L1.4,12.6 L4.619,12.599 L4.62,14 L0,14 L0,11.9 C0,9.26418483 2.0228531,7.15039627 4.61951123,7.00768239 Z M4.9,0.7 C6.44,0.7 7.7,1.96 7.7,3.5 C7.7,5.04 6.44,6.3 4.9,6.3 C3.36,6.3 2.1,5.04 2.1,3.5 C2.1,1.96 3.36,0.7 4.9,0.7 Z M4.9,2.1 C4.13,2.1 3.5,2.73 3.5,3.5 C3.5,4.27 4.13,4.9 4.9,4.9 C5.67,4.9 6.3,4.27 6.3,3.5 C6.3,2.73 5.67,2.1 4.9,2.1 Z" id="Combined-Shape"></path> <path
<polygon id="Path" points="8.05 7 9.03 7.98 7.28 9.8 14 9.8 14 11.2 7.28 11.2 9.03 13.02 8.05 14 4.62 10.5"></polygon> d="M4.61951123,7.00768239 L4.6192693,8.41063592 C2.85882948,8.544763 1.4982383,9.93223022 1.40509185,11.7054415 L1.4,11.9 L1.4,12.6 L4.619,12.599 L4.62,14 L0,14 L0,11.9 C0,9.26418483 2.0228531,7.15039627 4.61951123,7.00768239 Z M4.9,0.7 C6.44,0.7 7.7,1.96 7.7,3.5 C7.7,5.04 6.44,6.3 4.9,6.3 C3.36,6.3 2.1,5.04 2.1,3.5 C2.1,1.96 3.36,0.7 4.9,0.7 Z M4.9,2.1 C4.13,2.1 3.5,2.73 3.5,3.5 C3.5,4.27 4.13,4.9 4.9,4.9 C5.67,4.9 6.3,4.27 6.3,3.5 C6.3,2.73 5.67,2.1 4.9,2.1 Z"
id="Combined-Shape"></path>
<polygon id="Path"
points="8.05 7 9.03 7.98 7.28 9.8 14 9.8 14 11.2 7.28 11.2 9.03 13.02 8.05 14 4.62 10.5"></polygon>
</g> </g>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="100px" height="100px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg height="100px" version="1.1" viewBox="0 0 100 100" width="100px" xmlns="http://www.w3.org/2000/svg">
<g id="assign" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd" id="assign" stroke="none" stroke-width="1">
<path d="M35,50 C54.5,50 70,65.5 70,85 L70,85 L70,100 L0,100 L0,85 C0,65.5 15.5,50 35,50 Z M35,60 C21,60 10,71 10,85 L10,85 L10,90 L60,90 L60,85 C60,71 49,60 35,60 Z M35,5 C46,5 55,14 55,25 C55,36 46,45 35,45 C24,45 15,36 15,25 C15,14 24,5 35,5 Z M85,0 L85,15 L100,15 L100,25 L85,25 L85,40 L75,40 L75,25 L60,25 L60,15 L75,15 L75,0 L85,0 Z M35,15 C29.5,15 25,19.5 25,25 C25,30.5 29.5,35 35,35 C40.5,35 45,30.5 45,25 C45,19.5 40.5,15 35,15 Z" id="Combined-Shape" fill="currentColor" fill-rule="nonzero"></path> <path
d="M35,50 C54.5,50 70,65.5 70,85 L70,85 L70,100 L0,100 L0,85 C0,65.5 15.5,50 35,50 Z M35,60 C21,60 10,71 10,85 L10,85 L10,90 L60,90 L60,85 C60,71 49,60 35,60 Z M35,5 C46,5 55,14 55,25 C55,36 46,45 35,45 C24,45 15,36 15,25 C15,14 24,5 35,5 Z M85,0 L85,15 L100,15 L100,25 L85,25 L85,40 L75,40 L75,25 L60,25 L60,15 L75,15 L75,0 L85,0 Z M35,15 C29.5,15 25,19.5 25,25 C25,30.5 29.5,35 35,35 C40.5,35 45,30.5 45,25 C45,19.5 40.5,15 35,15 Z"
fill="currentColor" fill-rule="nonzero" id="Combined-Shape"></path>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 804 B

After

Width:  |  Height:  |  Size: 785 B

View File

@ -1,10 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg height="14px" version="1.1" viewBox="0 0 14 14" width="14px" xmlns="http://www.w3.org/2000/svg">
<g id="Styleguide" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd" id="Styleguide" stroke="none" stroke-width="1">
<g id="Styleguide-Actions" transform="translate(-608.000000, -651.000000)" fill="currentColor" fill-rule="nonzero"> <g fill="currentColor" fill-rule="nonzero" id="Styleguide-Actions"
transform="translate(-608.000000, -651.000000)">
<g id="Group-6" transform="translate(598.000000, 641.000000)"> <g id="Group-6" transform="translate(598.000000, 641.000000)">
<g id="status" transform="translate(10.000000, 10.000000)"> <g id="status" transform="translate(10.000000, 10.000000)">
<path d="M14,8.8817842e-15 L14,6.7673716 L7.2326284,13.5347432 C6.612286,14.1550856 5.59718026,14.1550856 4.97683787,13.5347432 L4.97683787,13.5347432 L0.465256798,9.02316213 C-0.155085599,8.40281974 -0.155085599,7.387714 0.465256798,6.7673716 L0.465256798,6.7673716 L7.2326284,8.8817842e-15 L14,8.8817842e-15 Z M12.4209466,1.57905337 L7.90936556,1.57905337 L1.59315206,7.89526687 L6.10473313,12.4068479 L12.4209466,6.09063444 L12.4209466,1.57905337 Z M9.48841893,3.3836858 C9.79987861,3.07222612 10.3048545,3.07222612 10.6163142,3.3836858 C10.9277739,3.69514548 10.9277739,4.20012139 10.6163142,4.51158107 C10.3048545,4.82304075 9.79987861,4.82304075 9.48841893,4.51158107 C9.17695925,4.20012139 9.17695925,3.69514548 9.48841893,3.3836858 Z" id="Combined-Shape"></path> <path
d="M14,8.8817842e-15 L14,6.7673716 L7.2326284,13.5347432 C6.612286,14.1550856 5.59718026,14.1550856 4.97683787,13.5347432 L4.97683787,13.5347432 L0.465256798,9.02316213 C-0.155085599,8.40281974 -0.155085599,7.387714 0.465256798,6.7673716 L0.465256798,6.7673716 L7.2326284,8.8817842e-15 L14,8.8817842e-15 Z M12.4209466,1.57905337 L7.90936556,1.57905337 L1.59315206,7.89526687 L6.10473313,12.4068479 L12.4209466,6.09063444 L12.4209466,1.57905337 Z M9.48841893,3.3836858 C9.79987861,3.07222612 10.3048545,3.07222612 10.6163142,3.3836858 C10.9277739,3.69514548 10.9277739,4.20012139 10.6163142,4.51158107 C10.3048545,4.82304075 9.79987861,4.82304075 9.48841893,4.51158107 C9.17695925,4.20012139 9.17695925,3.69514548 9.48841893,3.3836858 Z"
id="Combined-Shape"></path>
</g> </g>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1,8 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="100px" height="100px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg height="100px" version="1.1" viewBox="0 0 100 100" width="100px" xmlns="http://www.w3.org/2000/svg">
<g id="calendar" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd" id="calendar" stroke="none" stroke-width="1">
<path d="M35,70 L35,80 L25,80 L25,70 L35,70 Z M55,70 L55,80 L45,80 L45,70 L55,70 Z M35,55 L35,65 L25,65 L25,55 L35,55 Z M55,55 L55,65 L45,65 L45,55 L55,55 Z M75,55 L75,65 L65,65 L65,55 L75,55 Z M55,40 L55,50 L45,50 L45,40 L55,40 Z M75,40 L75,50 L65,50 L65,40 L75,40 Z" id="Combined-Shape" fill="currentColor" fill-rule="nonzero"></path> <path
<path d="M90,0 L10,0 C4.5,0 0,4.5 0,10 L0,90 C0,95.5 4.5,100 10,100 L90,100 C95.5,100 100,95.5 100,90 L100,10 C100,4.5 95.5,0 90,0 Z M10,90 L10,10 L90,10 L90,90 L10,90 Z" id="Shape" fill="currentColor" fill-rule="nonzero"></path> d="M35,70 L35,80 L25,80 L25,70 L35,70 Z M55,70 L55,80 L45,80 L45,70 L55,70 Z M35,55 L35,65 L25,65 L25,55 L35,55 Z M55,55 L55,65 L45,65 L45,55 L55,55 Z M75,55 L75,65 L65,65 L65,55 L75,55 Z M55,40 L55,50 L45,50 L45,40 L55,40 Z M75,40 L75,50 L65,50 L65,40 L75,40 Z"
<path d="M90,20 L10,20 C4.5,20 0,24.5 0,30 L0,90 C0,95.5 4.5,100 10,100 L90,100 C95.5,100 100,95.5 100,90 L100,30 C100,24.5 95.5,20 90,20 Z M10,90 L10,30 L90,30 L90,90 L10,90 Z" id="Shape" fill="currentColor" fill-rule="nonzero"></path> fill="currentColor" fill-rule="nonzero" id="Combined-Shape"></path>
<path
d="M90,0 L10,0 C4.5,0 0,4.5 0,10 L0,90 C0,95.5 4.5,100 10,100 L90,100 C95.5,100 100,95.5 100,90 L100,10 C100,4.5 95.5,0 90,0 Z M10,90 L10,10 L90,10 L90,90 L10,90 Z"
fill="currentColor" fill-rule="nonzero" id="Shape"></path>
<path
d="M90,20 L10,20 C4.5,20 0,24.5 0,30 L0,90 C0,95.5 4.5,100 10,100 L90,100 C95.5,100 100,95.5 100,90 L100,30 C100,24.5 95.5,20 90,20 Z M10,90 L10,30 L90,30 L90,90 L10,90 Z"
fill="currentColor" fill-rule="nonzero" id="Shape"></path>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,13 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="10px" height="10px" viewBox="0 0 10 10" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg height="10px" version="1.1" viewBox="0 0 10 10" width="10px" xmlns="http://www.w3.org/2000/svg">
<g id="Settings" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd" id="Settings" stroke="none" stroke-width="1">
<g id="02.3-Dictionary-Details" transform="translate(-1111.000000, -204.000000)"> <g id="02.3-Dictionary-Details" transform="translate(-1111.000000, -204.000000)">
<rect x="0" y="0" width="1440" height="705"></rect> <rect height="705" width="1440" x="0" y="0"></rect>
<g id="Group-9" transform="translate(1086.000000, 111.000000)" fill="currentColor" opacity="0.5"> <g fill="currentColor" id="Group-9" opacity="0.5" transform="translate(1086.000000, 111.000000)">
<g id="Group-8" transform="translate(25.000000, 69.000000)"> <g id="Group-8" transform="translate(25.000000, 69.000000)">
<g id="Group-19" transform="translate(0.000000, 22.000000)"> <g id="Group-19" transform="translate(0.000000, 22.000000)">
<g id="status" transform="translate(0.000000, 2.000000)"> <g id="status" transform="translate(0.000000, 2.000000)">
<path d="M6.72413793,0.7 C7.00968966,0.7 7.24137931,0.931689655 7.24137931,1.21724138 L7.24137931,1.21724138 L7.24137931,2.76896552 L6.20689655,2.76896552 L6.20689655,1.73448276 L4.13793103,1.73448276 L4.13793103,8.2862069 L5.51724138,8.2862069 L5.51724138,9.32068966 L1.72413793,9.32068966 L1.72413793,8.2862069 L3.10344828,8.2862069 L3.10344828,1.73448276 L1.03448276,1.73448276 L1.03448276,2.76896552 L7.01660952e-15,2.76896552 L7.01660952e-15,1.21724138 C7.01660952e-15,0.931689655 0.231689655,0.7 0.517241379,0.7 L0.517241379,0.7 Z M8.27586207,4.14834483 L8.27586207,5.52765517 L9.82758621,5.52765517 L9.82758621,6.56213793 L8.27586207,6.56213793 L8.27586207,7.90844828 C8.27586207,8.11722931 8.44491379,8.28627586 8.65368966,8.28627586 L8.65368966,8.28627586 L10,8.28627586 L10,9.32075862 L8.65368966,9.32075862 C7.8737931,9.32075862 7.24137931,8.68834483 7.24137931,7.90844828 L7.24137931,7.90844828 L7.24137931,6.56213793 L5.86206897,6.56213793 L5.86206897,5.52765517 L7.24137931,5.52765517 L7.24137931,4.14834483 L8.27586207,4.14834483 Z" id="Combined-Shape"></path> <path
d="M6.72413793,0.7 C7.00968966,0.7 7.24137931,0.931689655 7.24137931,1.21724138 L7.24137931,1.21724138 L7.24137931,2.76896552 L6.20689655,2.76896552 L6.20689655,1.73448276 L4.13793103,1.73448276 L4.13793103,8.2862069 L5.51724138,8.2862069 L5.51724138,9.32068966 L1.72413793,9.32068966 L1.72413793,8.2862069 L3.10344828,8.2862069 L3.10344828,1.73448276 L1.03448276,1.73448276 L1.03448276,2.76896552 L7.01660952e-15,2.76896552 L7.01660952e-15,1.21724138 C7.01660952e-15,0.931689655 0.231689655,0.7 0.517241379,0.7 L0.517241379,0.7 Z M8.27586207,4.14834483 L8.27586207,5.52765517 L9.82758621,5.52765517 L9.82758621,6.56213793 L8.27586207,6.56213793 L8.27586207,7.90844828 C8.27586207,8.11722931 8.44491379,8.28627586 8.65368966,8.28627586 L8.65368966,8.28627586 L10,8.28627586 L10,9.32075862 L8.65368966,9.32075862 C7.8737931,9.32075862 7.24137931,8.68834483 7.24137931,7.90844828 L7.24137931,7.90844828 L7.24137931,6.56213793 L5.86206897,6.56213793 L5.86206897,5.52765517 L7.24137931,5.52765517 L7.24137931,4.14834483 L8.27586207,4.14834483 Z"
id="Combined-Shape"></path>
</g> </g>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -1,5 +1,5 @@
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" <svg id="Capa_1" style="enable-background:new 0 0 426.667 426.667;" version="1.1" viewBox="0 0 426.667 426.667" x="0px"
viewBox="0 0 426.667 426.667" style="enable-background:new 0 0 426.667 426.667;" xml:space="preserve"> xml:space="preserve" xmlns="http://www.w3.org/2000/svg" y="0px">
<g> <g>
<g> <g>
<path d="M421.876,56.307c-6.548-6.78-17.352-6.968-24.132-0.42c-0.142,0.137-0.282,0.277-0.42,0.42L119.257,334.375 <path d="M421.876,56.307c-6.548-6.78-17.352-6.968-24.132-0.42c-0.142,0.137-0.282,0.277-0.42,0.42L119.257,334.375

Before

Width:  |  Height:  |  Size: 535 B

After

Width:  |  Height:  |  Size: 536 B

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="100px" height="100px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg"> <svg height="100px" version="1.1" viewBox="0 0 100 100" width="100px" xmlns="http://www.w3.org/2000/svg">
<g id="close" stroke="none" stroke-width="1" fill="currentColor" fill-rule="evenodd"> <g fill="currentColor" fill-rule="evenodd" id="close" stroke="none" stroke-width="1">
<path <path
d="M93,0 L100,7 L57,50 L100,93 L93,100 L50,57 L7,100 L3.55271368e-15,93 L43,50 L3.55271368e-15,7 L7,0 L50,43 L93,0 Z" d="M93,0 L100,7 L57,50 L100,93 L93,100 L50,57 L7,100 L3.55271368e-15,93 L43,50 L3.55271368e-15,7 L7,0 L50,43 L93,0 Z"
id="Combined-Shape" fill-rule="nonzero"></path> fill-rule="nonzero" id="Combined-Shape"></path>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 455 B

After

Width:  |  Height:  |  Size: 455 B

View File

@ -1,12 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg height="14px" version="1.1" viewBox="0 0 14 14" width="14px" xmlns="http://www.w3.org/2000/svg">
<g id="Projects-&amp;-Documents" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd" id="Projects-&amp;-Documents" stroke="none" stroke-width="1">
<g id="04.-Document-Hover" transform="translate(-1400.000000, -137.000000)"> <g id="04.-Document-Hover" transform="translate(-1400.000000, -137.000000)">
<rect x="0" y="0" width="1440" height="980"></rect> <rect height="980" width="1440" x="0" y="0"></rect>
<g id="Project-details" transform="translate(1111.000000, 127.000000)" fill="currentColor" fill-rule="nonzero"> <g fill="currentColor" fill-rule="nonzero" id="Project-details"
transform="translate(1111.000000, 127.000000)">
<g id="Group-6" transform="translate(279.000000, 0.000000)"> <g id="Group-6" transform="translate(279.000000, 0.000000)">
<g id="status" transform="translate(10.000000, 10.000000)"> <g id="status" transform="translate(10.000000, 10.000000)">
<polygon id="Path" points="9.17 3.5 8.19 4.48 9.94 6.3 1.4 6.3 1.4 7.7 9.94 7.7 8.19 9.52 9.17 10.5 12.6 7"></polygon> <polygon id="Path"
points="9.17 3.5 8.19 4.48 9.94 6.3 1.4 6.3 1.4 7.7 9.94 7.7 8.19 9.52 9.17 10.5 12.6 7"></polygon>
</g> </g>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 950 B

After

Width:  |  Height:  |  Size: 955 B

View File

@ -1,5 +1,5 @@
<svg id="Capa_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" <svg id="Capa_1" style="enable-background:new 0 0 464.736 464.736;" viewBox="0 0 464.736 464.736" x="0px"
viewBox="0 0 464.736 464.736" style="enable-background:new 0 0 464.736 464.736;" xml:space="preserve"> xml:space="preserve" xmlns="http://www.w3.org/2000/svg" y="0px">
<g> <g>
<path d="M446.598,18.143c-24.183-24.184-63.393-24.191-87.592-0.008l-16.717,16.717c-8.98-8.979-23.525-8.979-32.504,0 <path d="M446.598,18.143c-24.183-24.184-63.393-24.191-87.592-0.008l-16.717,16.717c-8.98-8.979-23.525-8.979-32.504,0
c-8.981,8.972-8.981,23.533,0,32.505l5.416,5.419L134.613,253.377h-0.016l-62.685,62.691c-4.982,4.982-7.919,11.646-8.235,18.684 c-8.981,8.972-8.981,23.533,0,32.505l5.416,5.419L134.613,253.377h-0.016l-62.685,62.691c-4.982,4.982-7.919,11.646-8.235,18.684

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,10 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg height="14px" version="1.1" viewBox="0 0 14 14" width="14px" xmlns="http://www.w3.org/2000/svg">
<g id="Comments" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd" id="Comments" stroke="none" stroke-width="1">
<g id="02.-Show-More/Less" transform="translate(-1159.000000, -306.000000)"> <g id="02.-Show-More/Less" transform="translate(-1159.000000, -306.000000)">
<g id="Group-3" transform="translate(1159.000000, 306.000000)" fill="currentColor" fill-rule="nonzero"> <g fill="currentColor" fill-rule="nonzero" id="Group-3" transform="translate(1159.000000, 306.000000)">
<g id="Group-3"> <g id="Group-3">
<path d="M7,12.8947368 C6.718,12.8947368 6.342,12.8947368 5.966,12.8026316 L5.684,12.8026316 L2.3,14 L2.3,10.9605263 L2.018,10.6842105 C0.984,9.48684211 0.42,8.01315789 0.42,6.44736842 C0.42,2.85526316 3.334,0 7,0 C10.666,0 13.58,2.85526316 13.58,6.44736842 C13.58,10.0394737 10.666,12.8947368 7,12.8947368 Z" id="Shape"></path> <path
d="M7,12.8947368 C6.718,12.8947368 6.342,12.8947368 5.966,12.8026316 L5.684,12.8026316 L2.3,14 L2.3,10.9605263 L2.018,10.6842105 C0.984,9.48684211 0.42,8.01315789 0.42,6.44736842 C0.42,2.85526316 3.334,0 7,0 C10.666,0 13.58,2.85526316 13.58,6.44736842 C13.58,10.0394737 10.666,12.8947368 7,12.8947368 Z"
id="Shape"></path>
</g> </g>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 919 B

After

Width:  |  Height:  |  Size: 924 B

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="100px" height="100px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg"> <svg height="100px" version="1.1" viewBox="0 0 100 100" width="100px" xmlns="http://www.w3.org/2000/svg">
<g id="comments" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd" id="comments" stroke="none" stroke-width="1">
<path <path
d="M50,0 C25,0 5,20 5,45 C5,55.5 8.5,65 15,73 L15,100 L44,89.5 C46.5,90 48,90 50,90 C75,90 95,70 95,45 C95,20 75,0 50,0 Z M50,80 C48.5,80 46.5,80 44.5,79.5 L43,79.5 L25,86 L25,69.5 L23.5,68 C18,61.5 15,53.5 15,45 C15,25.5 30.5,10 50,10 C69.5,10 85,25.5 85,45 C85,64.5 69.5,80 50,80 Z" d="M50,0 C25,0 5,20 5,45 C5,55.5 8.5,65 15,73 L15,100 L44,89.5 C46.5,90 48,90 50,90 C75,90 95,70 95,45 C95,20 75,0 50,0 Z M50,80 C48.5,80 46.5,80 44.5,79.5 L43,79.5 L25,86 L25,69.5 L23.5,68 C18,61.5 15,53.5 15,45 C15,25.5 30.5,10 50,10 C69.5,10 85,25.5 85,45 C85,64.5 69.5,80 50,80 Z"
id="Shape" fill="currentColor" fill-rule="nonzero"></path> fill="currentColor" fill-rule="nonzero" id="Shape"></path>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 628 B

After

Width:  |  Height:  |  Size: 628 B

View File

@ -1,12 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="10px" height="10px" viewBox="0 0 10 10" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg height="10px" version="1.1" viewBox="0 0 10 10" width="10px" xmlns="http://www.w3.org/2000/svg">
<g id="Settings" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd" id="Settings" stroke="none" stroke-width="1">
<g id="01.0-Rule-Sets" transform="translate(-40.000000, -241.000000)"> <g id="01.0-Rule-Sets" transform="translate(-40.000000, -241.000000)">
<rect x="0" y="0" width="1440" height="705"></rect> <rect height="705" width="1440" x="0" y="0"></rect>
<rect id="Rectangle" x="0" y="193" width="1440" height="80"></rect> <rect height="80" id="Rectangle" width="1440" x="0" y="193"></rect>
<g id="Group-16" transform="translate(40.000000, 239.000000)" fill="currentColor" fill-rule="nonzero" > <g fill="currentColor" fill-rule="nonzero" id="Group-16" transform="translate(40.000000, 239.000000)">
<g id="status" transform="translate(0.000000, 2.000000)"> <g id="status" transform="translate(0.000000, 2.000000)">
<path d="M9.5,0 L9.5,10 L2,10 C1.15,10 0.5,9.35 0.5,8.5 L0.5,8.5 L0.5,1.5 C0.5,0.65 1.15,0 2,0 L2,0 L9.5,0 Z M2.5,1 L2,1 C1.7,1 1.5,1.2 1.5,1.5 L1.5,1.5 L1.5,8.5 C1.5,8.8 1.7,9 2,9 L2,9 L2.5,9 L2.5,1 Z M8.5,1 L3.5,1 L3.5,9 L8.5,9 L8.5,1 Z M7.5,2 L7.5,5 L4.5,5 L4.5,2 L7.5,2 Z M6.5,3 L5.5,3 L5.5,4 L6.5,4 L6.5,3 Z" id="Combined-Shape"></path> <path
d="M9.5,0 L9.5,10 L2,10 C1.15,10 0.5,9.35 0.5,8.5 L0.5,8.5 L0.5,1.5 C0.5,0.65 1.15,0 2,0 L2,0 L9.5,0 Z M2.5,1 L2,1 C1.7,1 1.5,1.2 1.5,1.5 L1.5,1.5 L1.5,8.5 C1.5,8.8 1.7,9 2,9 L2,9 L2.5,9 L2.5,1 Z M8.5,1 L3.5,1 L3.5,9 L8.5,9 L8.5,1 Z M7.5,2 L7.5,5 L4.5,5 L4.5,2 L7.5,2 Z M6.5,3 L5.5,3 L5.5,4 L6.5,4 L6.5,3 Z"
id="Combined-Shape"></path>
</g> </g>
</g> </g>
<g id="Group-20" transform="translate(0.000000, 163.000000)"></g> <g id="Group-20" transform="translate(0.000000, 163.000000)"></g>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="100px" height="100px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg height="100px" version="1.1" viewBox="0 0 100 100" width="100px" xmlns="http://www.w3.org/2000/svg">
<g id="document" stroke="none" stroke-width="1" fill="currentColor" fill-rule="evenodd"> <g fill="currentColor" fill-rule="evenodd" id="document" stroke="none" stroke-width="1">
<path d="M90,0 L90,100 L10,100 L10,0 L90,0 Z M80,10 L20,10 L20,90 L80,90 L80,10 Z M50,60 L50,70 L30,70 L30,60 L50,60 Z M70,40 L70,50 L30,50 L30,40 L70,40 Z M70,20 L70,30 L30,30 L30,20 L70,20 Z" id="Combined-Shape" fill-rule="nonzero"></path> <path
d="M90,0 L90,100 L10,100 L10,0 L90,0 Z M80,10 L20,10 L20,90 L80,90 L80,10 Z M50,60 L50,70 L30,70 L30,60 L50,60 Z M70,40 L70,50 L30,50 L30,40 L70,40 Z M70,20 L70,30 L30,30 L30,20 L70,20 Z"
fill-rule="nonzero" id="Combined-Shape"></path>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 548 B

After

Width:  |  Height:  |  Size: 528 B

View File

@ -4,9 +4,11 @@
<g id="XMLID_27_"> <g id="XMLID_27_">
<path d="M310.607,154.391l-150-149.997c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0,21.213 <path d="M310.607,154.391l-150-149.997c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0,21.213
l139.393,139.39L139.394,304.394c-5.857,5.858-5.857,15.355,0,21.213c2.929,2.929,6.768,4.393,10.606,4.393 l139.393,139.39L139.394,304.394c-5.857,5.858-5.857,15.355,0,21.213c2.929,2.929,6.768,4.393,10.606,4.393
s7.678-1.464,10.607-4.394l150-150.003c2.813-2.813,4.393-6.628,4.393-10.606C315,161.019,313.42,157.204,310.607,154.391z" id="XMLID_28_"/> s7.678-1.464,10.607-4.394l150-150.003c2.813-2.813,4.393-6.628,4.393-10.606C315,161.019,313.42,157.204,310.607,154.391z"
id="XMLID_28_" />
<path d="M195.001,164.996c0-3.979-1.581-7.794-4.394-10.607L40.606,4.393c-5.858-5.858-15.355-5.858-21.213,0.001 <path d="M195.001,164.996c0-3.979-1.581-7.794-4.394-10.607L40.606,4.393c-5.858-5.858-15.355-5.858-21.213,0.001
c-5.857,5.858-5.857,15.355,0.001,21.213l139.394,139.39L19.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213 c-5.857,5.858-5.857,15.355,0.001,21.213l139.394,139.39L19.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213
C22.322,328.536,26.161,330,30,330s7.678-1.464,10.607-4.394l150.001-150.004C193.42,172.79,195.001,168.974,195.001,164.996z" id="XMLID_29_"/> C22.322,328.536,26.161,330,30,330s7.678-1.464,10.607-4.394l150.001-150.004C193.42,172.79,195.001,168.974,195.001,164.996z"
id="XMLID_29_" />
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 936 B

After

Width:  |  Height:  |  Size: 960 B

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="100px" height="100px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg height="100px" version="1.1" viewBox="0 0 100 100" width="100px" xmlns="http://www.w3.org/2000/svg">
<g id="download" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd" id="download" stroke="none" stroke-width="1">
<path d="M10,60 L10,90 L90,90 L90,60 L100,60 L100,100 L0,100 L0,60 L10,60 Z M55,0 L55,61 L68,48 L75,55 L50,80 L25,55 L32,48 L45,61 L45,0 L55,0 Z" id="Combined-Shape" fill="currentColor" fill-rule="nonzero"></path> <path
d="M10,60 L10,90 L90,90 L90,60 L100,60 L100,100 L0,100 L0,60 L10,60 Z M55,0 L55,61 L68,48 L75,55 L50,80 L25,55 L32,48 L45,61 L45,0 L55,0 Z"
fill="currentColor" fill-rule="nonzero" id="Combined-Shape"></path>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 511 B

After

Width:  |  Height:  |  Size: 492 B

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="100px" height="100px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg height="100px" version="1.1" viewBox="0 0 100 100" width="100px" xmlns="http://www.w3.org/2000/svg">
<g id="edit" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd" id="edit" stroke="none" stroke-width="1">
<path d="M97.0465218,17 L83.0398073,3 C79.0378889,-1 72.5347714,-1 69.0330928,3 L0,71.5 L0,100 L28.5136688,100 L97.0465218,31 C102.54916,25.5 99.047481,19 97.0465218,17 Z M24.0115105,90 L10.0047961,90 L10.0047961,76 L62.0297356,24 L76.03645,38 L24.0115105,90 Z M83.0398073,31 L69.0330928,17 L76.03645,10 L90.0431645,24 L83.0398073,31 Z" id="Shape" fill="currentColor" fill-rule="nonzero"></path> <path
d="M97.0465218,17 L83.0398073,3 C79.0378889,-1 72.5347714,-1 69.0330928,3 L0,71.5 L0,100 L28.5136688,100 L97.0465218,31 C102.54916,25.5 99.047481,19 97.0465218,17 Z M24.0115105,90 L10.0047961,90 L10.0047961,76 L62.0297356,24 L76.03645,38 L24.0115105,90 Z M83.0398073,31 L69.0330928,17 L76.03645,10 L90.0431645,24 L83.0398073,31 Z"
fill="currentColor" fill-rule="nonzero" id="Shape"></path>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 689 B

After

Width:  |  Height:  |  Size: 670 B

View File

@ -1,13 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="10px" height="10px" viewBox="0 0 10 10" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg height="10px" version="1.1" viewBox="0 0 10 10" width="10px" xmlns="http://www.w3.org/2000/svg">
<g id="Settings" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd" id="Settings" stroke="none" stroke-width="1">
<g id="01.-Dictionaries" transform="translate(-72.000000, -241.000000)"> <g id="01.-Dictionaries" transform="translate(-72.000000, -241.000000)">
<rect x="0" y="0" width="1440" height="705"></rect> <rect height="705" width="1440" x="0" y="0"></rect>
<g id="Dictionary" transform="translate(0.000000, 193.000000)"> <g id="Dictionary" transform="translate(0.000000, 193.000000)">
<rect id="Rectangle" x="0" y="0" width="1086" height="80"></rect> <rect height="80" id="Rectangle" width="1086" x="0" y="0"></rect>
<g id="Group-16" transform="translate(72.000000, 46.000000)" fill="currentColor" fill-rule="nonzero"> <g fill="currentColor" fill-rule="nonzero" id="Group-16" transform="translate(72.000000, 46.000000)">
<g id="status" transform="translate(0.000000, 2.000000)"> <g id="status" transform="translate(0.000000, 2.000000)">
<path d="M5,7.5 L5,8.5 L0,8.5 L0,7.5 L5,7.5 Z M10,5.5 L10,6.5 L0,6.5 L0,5.5 L10,5.5 Z M10,3.5 L10,4.5 L0,4.5 L0,3.5 L10,3.5 Z M10,1.5 L10,2.5 L0,2.5 L0,1.5 L10,1.5 Z" id="Combined-Shape"></path> <path
d="M5,7.5 L5,8.5 L0,8.5 L0,7.5 L5,7.5 Z M10,5.5 L10,6.5 L0,6.5 L0,5.5 L10,5.5 Z M10,3.5 L10,4.5 L0,4.5 L0,3.5 L10,3.5 Z M10,1.5 L10,2.5 L0,2.5 L0,1.5 L10,1.5 Z"
id="Combined-Shape"></path>
</g> </g>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,10 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg height="20px" version="1.1" viewBox="0 0 20 20" width="20px" xmlns="http://www.w3.org/2000/svg">
<!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch --> <!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
<defs></defs> <defs></defs>
<g id="Upload" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd" id="Upload" stroke="none" stroke-width="1">
<g id="Upload-Errors-01" transform="translate(-1388.000000, -622.000000)" fill="currentColor"> <g fill="currentColor" id="Upload-Errors-01" transform="translate(-1388.000000, -622.000000)">
<path d="M1405.075,639.075 C1406.88516,637.26484 1408,634.761 1408,632 C1408,629.2398 1406.88516,626.7352 1405.075,624.925 C1403.26484,623.1148 1400.761,622 1398,622 C1395.2398,622 1392.7352,623.11484 1390.925,624.925 C1389.1148,626.73516 1388,629.239 1388,632 C1388,634.7602 1389.11484,637.2648 1390.925,639.075 C1392.73516,640.8852 1395.239,642 1398,642 C1400.7602,642 1403.2648,640.88516 1405.075,639.075 Z M1399.3532,635.8578 C1399.3532,635.10858 1398.75008,634.50468 1398.00008,634.50468 C1397.25086,634.50468 1396.62898,635.1078 1396.62898,635.8578 C1396.62898,636.60702 1397.25086,637.2289 1398.00008,637.2289 C1398.7493,637.2289 1399.3532,636.60702 1399.3532,635.8578 Z M1398.00008,633.1336 C1397.50632,633.1336 1397.1407,632.73126 1397.08602,632.21954 L1396.62898,628.14294 C1396.55554,627.42966 1397.30554,626.77184 1398.00008,626.77184 C1398.69462,626.77184 1399.44462,627.42966 1399.3532,628.14294 L1398.91414,632.21954 C1398.85945,632.73126 1398.49382,633.1336 1398.00008,633.1336 Z" id="error_icon"></path> <path
d="M1405.075,639.075 C1406.88516,637.26484 1408,634.761 1408,632 C1408,629.2398 1406.88516,626.7352 1405.075,624.925 C1403.26484,623.1148 1400.761,622 1398,622 C1395.2398,622 1392.7352,623.11484 1390.925,624.925 C1389.1148,626.73516 1388,629.239 1388,632 C1388,634.7602 1389.11484,637.2648 1390.925,639.075 C1392.73516,640.8852 1395.239,642 1398,642 C1400.7602,642 1403.2648,640.88516 1405.075,639.075 Z M1399.3532,635.8578 C1399.3532,635.10858 1398.75008,634.50468 1398.00008,634.50468 C1397.25086,634.50468 1396.62898,635.1078 1396.62898,635.8578 C1396.62898,636.60702 1397.25086,637.2289 1398.00008,637.2289 C1398.7493,637.2289 1399.3532,636.60702 1399.3532,635.8578 Z M1398.00008,633.1336 C1397.50632,633.1336 1397.1407,632.73126 1397.08602,632.21954 L1396.62898,628.14294 C1396.55554,627.42966 1397.30554,626.77184 1398.00008,626.77184 C1398.69462,626.77184 1399.44462,627.42966 1399.3532,628.14294 L1398.91414,632.21954 C1398.85945,632.73126 1398.49382,633.1336 1398.00008,633.1336 Z"
id="error_icon"></path>
</g> </g>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="100px" height="100px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg height="100px" version="1.1" viewBox="0 0 100 100" width="100px" xmlns="http://www.w3.org/2000/svg">
<g id="minimize" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd" id="minimize" stroke="none" stroke-width="1">
<path d="M40,60 L40,90 L30,90 L30,77 L7,100 L0,93 L23,70 L10,70 L10,60 L40,60 Z M90,60 L90,70 L77,70 L100,93 L93,100 L70,77 L70,90 L60,90 L60,60 L90,60 Z M93,0 L100,7 L77,30 L90,30 L90,40 L60,40 L60,10 L70,10 L70,23 L93,0 Z M7,0 L30,23 L30,10 L40,10 L40,40 L10,40 L10,30 L23,30 L0,7 L7,0 Z" id="Combined-Shape" fill="currentColor" fill-rule="nonzero"></path> <path
d="M40,60 L40,90 L30,90 L30,77 L7,100 L0,93 L23,70 L10,70 L10,60 L40,60 Z M90,60 L90,70 L77,70 L100,93 L93,100 L70,77 L70,90 L60,90 L60,60 L90,60 Z M93,0 L100,7 L77,30 L90,30 L90,40 L60,40 L60,10 L70,10 L70,23 L93,0 Z M7,0 L30,23 L30,10 L40,10 L40,40 L10,40 L10,30 L23,30 L0,7 L7,0 Z"
fill="currentColor" fill-rule="nonzero" id="Combined-Shape"></path>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 656 B

After

Width:  |  Height:  |  Size: 637 B

View File

@ -1,13 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg height="14px" version="1.1" viewBox="0 0 14 14" width="14px" xmlns="http://www.w3.org/2000/svg">
<g id="Projects-&amp;-Documents" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g fill="none" fill-rule="evenodd" id="Projects-&amp;-Documents" stroke="none" stroke-width="1">
<g id="04.-Collapsed-Details" transform="translate(-1403.000000, -137.000000)"> <g id="04.-Collapsed-Details" transform="translate(-1403.000000, -137.000000)">
<rect x="0" y="0" width="1440" height="980"></rect> <rect height="980" width="1440" x="0" y="0"></rect>
<rect id="Rectangle" x="1380" y="111" width="60" height="1500"></rect> <rect height="1500" id="Rectangle" width="60" x="1380" y="111"></rect>
<g id="Group-6" transform="translate(1393.000000, 127.000000)"> <g id="Group-6" transform="translate(1393.000000, 127.000000)">
<rect id="Rectangle" x="0" y="0" width="34" height="34" rx="17"></rect> <rect height="34" id="Rectangle" rx="17" width="34" x="0" y="0"></rect>
<g id="status" transform="translate(17.000000, 17.000000) scale(-1, 1) translate(-17.000000, -17.000000) translate(10.000000, 10.000000)" fill="currentColor" fill-rule="nonzero"> <g fill="currentColor"
<polygon id="Path" points="9.17 3.5 8.19 4.48 9.94 6.3 1.4 6.3 1.4 7.7 9.94 7.7 8.19 9.52 9.17 10.5 12.6 7"></polygon> fill-rule="nonzero"
id="status" transform="translate(17.000000, 17.000000) scale(-1, 1) translate(-17.000000, -17.000000) translate(10.000000, 10.000000)">
<polygon id="Path"
points="9.17 3.5 8.19 4.48 9.94 6.3 1.4 6.3 1.4 7.7 9.94 7.7 8.19 9.52 9.17 10.5 12.6 7"></polygon>
</g> </g>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

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