[NIFI-13142] configure typography (#8745)

* [NIFI-13142] configure typography

* remove Roboto Slab

* adjust letter spacing

* one font

* material theme

* update purple theme font to Comic Sans

* material theme

* align primary node indicator

This closes #8745
This commit is contained in:
Scott Aslan 2024-05-06 16:47:32 -04:00 committed by GitHub
parent 2711f9d8cf
commit b87e9c8d9d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
59 changed files with 760 additions and 686 deletions

View File

@ -28,7 +28,6 @@
"@angular/router": "^17.1.3",
"@ctrl/ngx-codemirror": "^7.0.0",
"@fontsource/roboto": "^5.0.12",
"@fontsource/roboto-slab": "^5.0.19",
"@ngrx/effects": "^17.1.0",
"@ngrx/router-store": "^17.1.0",
"@ngrx/store": "^17.1.0",
@ -41,7 +40,6 @@
"ngx-skeleton-loader": "^8.1.0",
"rxjs": "~7.8.1",
"tslib": "^2.6.2",
"webfontloader": "^1.6.28",
"zone.js": "0.14.4"
},
"devDependencies": {
@ -64,7 +62,6 @@
"@types/d3": "^7.4.3",
"@types/humanize-duration": "^3.27.3",
"@types/jest": "^29.5.12",
"@types/webfontloader": "^1.6.38",
"@typescript-eslint/eslint-plugin": "6.21.0",
"@typescript-eslint/parser": "6.21.0",
"autoprefixer": "^10.4.16",

View File

@ -23,6 +23,4 @@
</div>
}
<div class="mat-app-background">
<router-outlet></router-outlet>
</div>
<router-outlet></router-outlet>

View File

@ -20,7 +20,7 @@
<navigation></navigation>
</header>
<div class="px-5">
<h3 class="text-xl bold primary-color">Access Policies</h3>
<h3 class="primary-color">Access Policies</h3>
</div>
<div class="px-5 flex-1">
<router-outlet></router-outlet>

View File

@ -20,7 +20,7 @@
<navigation></navigation>
</header>
<div class="px-5 flex-1 flex flex-col">
<h3 class="text-xl bold primary-color">NiFi Bulletin Board</h3>
<h3 class="primary-color">NiFi Bulletin Board</h3>
<bulletin-board class="flex-1"></bulletin-board>
</div>
</div>

View File

@ -20,7 +20,7 @@
<navigation></navigation>
</header>
<div class="px-5 flex-1 flex flex-col gap-y-2">
<h3 class="text-xl bold primary-color">NiFi Cluster</h3>
<h3 class="primary-color">NiFi Cluster</h3>
<error-banner></error-banner>
@if (getTabLinks(); as tabs) {
<!-- Don't show the tab bar if there is only 1 tab to show -->

View File

@ -20,7 +20,7 @@
<navigation></navigation>
</header>
<div class="px-5 flex-1 flex flex-col">
<h3 class="text-xl bold primary-color">NiFi Counters</h3>
<h3 class="primary-color">NiFi Counters</h3>
<counter-listing class="flex-1"></counter-listing>
</div>
</div>

View File

@ -20,7 +20,7 @@
<navigation></navigation>
</header>
<div class="px-5 flex-1 flex flex-col">
<h3 class="text-xl bold primary-color">Flow Configuration History</h3>
<h3 class="primary-color">Flow Configuration History</h3>
<flow-configuration-history-listing class="flex-1"></flow-configuration-history-listing>
</div>
</div>

View File

@ -17,7 +17,6 @@
import { Injectable } from '@angular/core';
import * as d3 from 'd3';
import * as WebFont from 'webfontloader';
import { Store } from '@ngrx/store';
import { CanvasState } from '../state';
import { refreshBirdseyeView, transformComplete } from '../state/transform/transform.actions';
@ -67,23 +66,6 @@ export class CanvasView {
) {}
public init(svg: any, canvas: any): void {
WebFont.load({
custom: {
families: ['Roboto', 'Roboto Slab', 'flowfont', 'FontAwesome']
},
active: function () {
// re-render once the fonts have loaded, without the fonts
// positions of elements on the canvas may be incorrect
self.processorManager.render();
self.processGroupManager.render();
self.remoteProcessGroupManager.render();
self.portManager.render();
self.labelManager.render();
self.funnelManager.render();
self.connectionManager.render();
}
});
this.svg = svg;
this.canvas = canvas;

View File

@ -90,6 +90,11 @@
/*
All components
*/
g.component {
font-family: mat.get-theme-typography($material-theme, body-1, font-family);
}
.transparent {
fill: transparent;
}
@ -146,6 +151,7 @@
text.stats-label {
@extend .surface-contrast;
font-family: mat.get-theme-typography($material-theme, body-1, font-family);
}
text.stats-value {
@ -256,6 +262,10 @@
Connection
*/
g.connection {
font-family: mat.get-theme-typography($material-theme, body-1, font-family);
}
g.connection rect.body {
fill: if($is-dark, $nifi-theme-surface-palette-darker, $nifi-theme-surface-palette-lighter);
}
@ -427,6 +437,7 @@
text.process-group-contents-count {
fill: $material-theme-accent-palette-default;
font-family: mat.get-theme-typography($material-theme, body-1, font-family);
}
g.process-group.drop rect.border {

View File

@ -43,10 +43,6 @@
All components
*/
g.component {
font-family: Roboto;
}
g.component rect.border.unauthorized {
stroke-width: 3;
stroke-dasharray: 4;
@ -63,7 +59,6 @@
text.stats-label {
font-size: 12px;
font-family: Roboto Slab;
}
text.stats-value {
@ -206,10 +201,6 @@
Connection
*/
g.connection {
font-family: Roboto;
}
g.connection rect.border.unauthorized {
stroke-width: 1.5;
stroke-dasharray: 3, 3;
@ -372,7 +363,6 @@
text.process-group-contents-count {
font-size: 15px;
font-weight: 500;
font-family: Roboto, sans-serif;
}
g.process-group.drop rect.border {

View File

@ -34,7 +34,6 @@ div.navigation-control {
.navigation-control-title {
font-size: 12px;
font-family: 'Roboto Slab';
letter-spacing: 0.05rem;
}
}

View File

@ -34,7 +34,6 @@ div.operation-control {
.operation-control-title {
font-size: 12px;
font-family: 'Roboto Slab';
letter-spacing: 0.05rem;
}

View File

@ -24,12 +24,6 @@
font-style: normal;
}
.status-value {
white-space: nowrap;
font-weight: 500;
text-shadow: none;
}
.controller-bulletins {
cursor: default;
}

View File

@ -28,7 +28,10 @@
[title]="getVersionControlTooltip(breadcrumb)"></div>
}
@if (isCurrentProcessGroupBreadcrumb(breadcrumb)) {
<a #currentProcessGroup class="current-process-group" [routerLink]="['/process-groups', breadcrumb.id]">
<a
#currentProcessGroup
class="current-process-group font-bold"
[routerLink]="['/process-groups', breadcrumb.id]">
{{ getBreadcrumbLabel(breadcrumb) }}
</a>
} @else {

View File

@ -21,7 +21,6 @@
}
a.current-process-group {
font-weight: bold;
text-decoration: none;
}
}

View File

@ -20,7 +20,7 @@
<navigation></navigation>
</header>
<div class="px-5 flex-1 flex flex-col">
<h3 class="text-xl bold primary-color">Controller Services</h3>
<h3 class="primary-color">Controller Services</h3>
@if (serviceState$ | async; as serviceState) {
@if (isInitialLoading(serviceState)) {
<div>

View File

@ -20,7 +20,7 @@
<navigation></navigation>
</header>
<div class="px-5 flex-1 flex flex-col">
<h3 class="text-xl bold primary-color pb-5">Manage Remote Ports</h3>
<h3 class="primary-color pb-5">Manage Remote Ports</h3>
@if (portsState$ | async; as portsState) {
<div class="grid-container grid grid-cols-2">
<div class="col-span-1 pr-5">

View File

@ -17,7 +17,7 @@
<div class="login-form w-96 flex flex-col gap-y-5">
<div class="flex justify-between items-center">
<div class="login-title primary-color">Log In</div>
<h3 class="primary-color">Log In</h3>
<div class="flex gap-x-2">
@if (hasToken()) {
<a (click)="logout()">log out</a>

View File

@ -16,12 +16,6 @@
*/
.login-form {
.login-title {
font-size: 18px;
font-weight: 600;
font-family: Roboto Slab;
}
.mat-mdc-form-field {
width: 100%;
}

View File

@ -20,7 +20,7 @@
<navigation></navigation>
</header>
<div class="px-5 flex-1 flex flex-col">
<h3 class="text-xl bold primary-color">Parameter Contexts</h3>
<h3 class="primary-color">Parameter Contexts</h3>
<parameter-context-listing class="flex-1"></parameter-context-listing>
</div>
</div>

View File

@ -22,7 +22,7 @@
<ul>
@if (authorizedProcessGroupReferences.length > 0) {
<li>
<h4>
<h4 class="primary-color">
<b>Process Groups ({{ authorizedProcessGroupReferences.length }})</b>
</h4>
<ul class="nested">
@ -36,7 +36,7 @@
}
@if (unauthorizedProcessGroupReferences.length > 0) {
<li>
<h4>
<h4 class="primary-color">
<b>Unauthorized ({{ unauthorizedProcessGroupReferences.length }})</b>
</h4>
<ul class="nested">

View File

@ -19,7 +19,7 @@
<header class="nifi-header">
<navigation></navigation>
</header>
<h3 class="px-5 text-xl bold primary-color">Provenance</h3>
<h3 class="px-5 primary-color">Provenance</h3>
<div class="px-5 flex-1">
<router-outlet></router-outlet>
</div>

View File

@ -41,6 +41,12 @@
svg {
text.event-type {
@extend .surface-contrast;
font-family: mat.get-theme-typography($material-theme, body-1, font-family);
}
text.event-type.expand-parents,
text.event-type.expand-children {
font-family: mat.get-theme-typography($material-theme, body-1, font-family);
}
path.link.selected {

View File

@ -30,7 +30,6 @@
}
text.event-type {
font-family: Roboto;
font-size: 11px;
font-style: normal;
font-weight: normal;
@ -39,7 +38,6 @@
text.event-type.expand-parents,
text.event-type.expand-children {
font-weight: 500;
font-family: 'Roboto';
font-style: normal;
font-size: 13px;
}

View File

@ -24,7 +24,7 @@
<div class="absolute inset-0 flex gap-x-4">
<div class="w-full flex flex-col gap-y-3">
<div class="flex flex-col">
<div class="flowfile-header primary-color">FlowFile Details</div>
<div class="flowfile-header font-bold primary-color">FlowFile Details</div>
</div>
<div class="flex flex-col">
<div>UUID</div>
@ -106,7 +106,7 @@
</div>
<div class="w-full flex flex-col gap-y-3">
<div class="flex flex-col">
<div class="flowfile-header primary-color">Content Claim</div>
<div class="flowfile-header font-bold primary-color">Content Claim</div>
</div>
<div
class="flex flex-col gap-y-3"
@ -181,7 +181,7 @@
<div class="tab-content py-4">
<div class="absolute inset-0 flex flex-col gap-y-4">
<div class="flex">
<div class="flowfile-header primary-color">Attribute Values</div>
<div class="flowfile-header font-bold primary-color">Attribute Values</div>
</div>
<div class="flex flex-col">
<div *ngFor="let attribute of request.flowfile.attributes | keyvalue">

View File

@ -31,9 +31,7 @@
.flowfile-header {
font-size: 15px;
font-family: 'Roboto Slab';
font-style: normal;
font-weight: bold;
}
}
}

View File

@ -16,7 +16,7 @@
-->
<div class="flowfile-table h-full flex flex-col gap-y-2">
<h3 class="text-xl bold queue-listing-header primary-color">{{ connectionLabel }}</h3>
<h3 class="queue-listing-header primary-color">{{ connectionLabel }}</h3>
<error-banner></error-banner>
<div class="flex justify-between">
<div class="accent-color font-medium">

View File

@ -20,7 +20,7 @@
<navigation></navigation>
</header>
<div class="px-5 flex-1 flex flex-col">
<h3 class="text-xl bold primary-color">NiFi Settings</h3>
<h3 class="primary-color">NiFi Settings</h3>
<div class="settings-tabs">
<nav mat-tab-nav-bar color="primary" [tabPanel]="tabPanel">
@for (tab of tabLinks; track tab) {

View File

@ -42,9 +42,7 @@
<ng-template #parameterContexts let-references let-label="label">
@if (references.length > 0) {
<li>
<h4>
<span class="accent-color font-medium">{{ label }}</span> ({{ references.length }})
</h4>
<h4 class="accent-color">{{ label }} ({{ references.length }})</h4>
<div class="references">
@for (reference of references; track reference) {
<div class="flex items-center gap-x-2">
@ -61,9 +59,7 @@
<ng-template #unauthorized let-references let-label="label">
@if (references.length > 0) {
<li>
<h4>
<span class="accent-color font-medium">{{ label }}</span> ({{ references.length }})
</h4>
<h4 class="accent-color">{{ label }} ({{ references.length }})</h4>
<div class="references">
@for (reference of references; track reference) {
<div class="flex items-center gap-x-2">

View File

@ -20,7 +20,7 @@
<navigation></navigation>
</header>
<div class="px-5 flex-1 flex flex-col gap-y-2">
<h3 class="text-xl bold primary-color">
<h3 class="primary-color">
@if (selectedClusterNode$ | async; as selectedNode) {
@if (selectedNode.id !== 'All') {
{{ selectedNode.address }} Summary

View File

@ -65,7 +65,7 @@
<div class="flex align-middle">
@if (item.processorStatusSnapshot.executionNode === 'PRIMARY') {
<div
class="primary-node-only border surface-contrast mt-0.5 mr-1"
class="primary-node-only border surface-contrast mr-1 font-bold"
title="This component is only scheduled to execute on the Primary Node">
P
</div>

View File

@ -14,6 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
.processor-status-table {
.listing-table {
.mat-column-moreDetails {
@ -28,13 +29,12 @@
width: 74px;
}
}
.primary-node-only {
font-family: Roboto;
font-size: 10px;
font-weight: bold;
line-height: 14px;
width: 16px;
height: 16px;
line-height: 13px;
width: 14px;
height: 15px;
border-radius: 8px;
float: left;
text-align: center;

View File

@ -20,7 +20,7 @@
<navigation></navigation>
</header>
<div class="px-5 flex-1 flex flex-col">
<h3 class="text-xl bold user-header primary-color">NiFi Users</h3>
<h3 class="user-header primary-color">NiFi Users</h3>
<user-listing class="flex-1"></user-listing>
</div>
</div>

View File

@ -16,7 +16,7 @@
-->
<div class="user-access-policies">
<h3 mat-dialog-title>User Policies</h3>
<h2 mat-dialog-title>User Policies</h2>
<mat-dialog-content>
<div class="flex flex-col justify-between gap-y-3">
<div class="flex flex-col">

View File

@ -81,7 +81,7 @@
<ng-template #nonService let-references let-referenceTypeLabel="referenceTypeLabel">
@if (references.length > 0) {
<li>
<h4>
<h4 class="primary-color">
<span class="accent-color font-medium">{{ referenceTypeLabel }}</span>
({{ references.length }})
</h4>
@ -121,7 +121,7 @@
<ng-template #service let-references>
@if (references.length > 0) {
<li>
<h4><span class="accent-color font-medium">Controller Services</span> ({{ references.length }})</h4>
<h4 class="accent-color">Controller Services ({{ references.length }})</h4>
<div class="references">
@for (service of references; track service) {
<div class="flex flex-col">
@ -171,7 +171,7 @@
<ng-template #unauthorized let-references>
@if (references.length > 0) {
<li>
<h4><span class="accent-color font-medium">Unauthorized</span> ({{ references.length }})</h4>
<h4 class="accent-color">Unauthorized ({{ references.length }})</h4>
<div class="references">
@for (reference of references; track reference) {
<div class="flex">

View File

@ -14,24 +14,23 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<section tabindex="0" (keyup)="navigateSelectionList($event)">
<div class="extension-creation-dialog p-4 flex flex-col justify-between gap-y-3">
<div class="flex justify-between items-center">
<h3 class="text-lg">Add {{ componentType }}</h3>
<div>
<mat-form-field>
<mat-label>Filter types</mat-label>
<input
matInput
class="px-1.5 py-1 w-64"
type="text"
(keyup)="filterTypes($event)"
cdkFocusInitial
placeholder="Filter types..." />
</mat-form-field>
</div>
<div class="extension-creation-dialog" (keyup)="navigateSelectionList($event)">
<div class="flex justify-between items-center">
<h2 mat-dialog-title>Add {{ componentType }}</h2>
<div class="pt-5 pr-5">
<mat-form-field>
<mat-label>Filter types</mat-label>
<input
matInput
class="px-1.5 py-1 w-64"
type="text"
(keyup)="filterTypes($event)"
tabindex="0"
placeholder="Filter types..." />
</mat-form-field>
</div>
</div>
<mat-dialog-content>
<div class="listing-table select-none">
<div class="h-96 overflow-y-auto overflow-x-hidden">
<table
@ -102,10 +101,10 @@
</table>
</div>
</div>
<div class="flex flex-col">
<div class="flex flex-col pt-3">
@if (selectedType) {
<div class="flex items-center">
<div class="selected-type-name accent-color">
<div class="selected-type-name font-medium accent-color">
{{ formatType(selectedType) }}
</div>
<div class="selected-type-bundle surface-color">{{ formatBundle(selectedType) }}</div>
@ -117,15 +116,15 @@
<div class="no-selected-type unset surface-color">No type selected</div>
}
</div>
<div class="flex justify-end gap-x-2">
<button mat-button mat-dialog-close>Cancel</button>
<button
[disabled]="selectedType == null || saving"
color="primary"
(click)="createExtension(selectedType)"
mat-button>
<span *nifiSpinner="saving">Add</span>
</button>
</div>
</div>
</section>
</mat-dialog-content>
<mat-dialog-actions align="end">
<button mat-button mat-dialog-close>Cancel</button>
<button
[disabled]="selectedType == null || saving"
color="primary"
(click)="createExtension(selectedType)"
mat-button>
<span *nifiSpinner="saving">Add</span>
</button>
</mat-dialog-actions>
</div>

View File

@ -34,7 +34,6 @@
.selected-type-name {
font-size: 16px;
font-weight: 500;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;

View File

@ -19,7 +19,7 @@
@use '@angular/material' as mat;
@use '../../../../../node_modules/@angular/material/core/theming/inspection' as inspection;
@mixin generate-theme($material-theme) {
@mixin generate-theme($material-theme, $nifi-theme) {
// Get the color config from the theme.
$material-theme-color-config: mat.get-color-config($material-theme);
@ -55,6 +55,7 @@
.current-user {
@extend .primary-contrast;
font-family: mat.get-theme-typography($material-theme, body-1, font-family);
}
a {

View File

@ -21,9 +21,6 @@
}
.current-user {
font-family: 'Roboto Slab';
font-style: normal;
font-weight: normal;
font-size: 12px;
max-width: 250px;
text-overflow: ellipsis;

View File

@ -17,7 +17,7 @@
<div class="page-content w-1/2 flex flex-col gap-y-5">
<div class="flex justify-between items-center gap-x-3">
<div class="title whitespace-nowrap overflow-hidden text-ellipsis" [title]="title">{{ title }}</div>
<h3 class="primary-color whitespace-nowrap overflow-hidden text-ellipsis" [title]="title">{{ title }}</h3>
<div class="flex gap-x-3">
@if (hasToken()) {
<a (click)="logout()" class="whitespace-nowrap">log out</a>

View File

@ -14,11 +14,3 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
.page-content {
.title {
font-size: 18px;
font-weight: 600;
font-family: Roboto Slab;
}
}

View File

@ -25,7 +25,7 @@
<ng-template #pgListing let-pg>
<ul>
<li>
<h4>
<h4 class="primary-color">
<b>{{ pg.name }}</b>
</h4>
@if (parameterReferenceMap.get(pg.id); as references) {
@ -53,7 +53,7 @@
<ng-template #processor let-references>
@if (references.length > 0) {
<li>
<h4><span class="accent-color font-medium">Processors</span> ({{ references.length }})</h4>
<h4 class="accent-color">Processors ({{ references.length }})</h4>
<div class="references">
@for (reference of references; track reference) {
<div class="flex items-center gap-x-2">
@ -88,7 +88,7 @@
<ng-template #service let-references>
@if (references.length > 0) {
<li>
<h4><span class="accent-color font-medium">Controller Services</span> ({{ references.length }})</h4>
<h4 class="accent-color">Controller Services ({{ references.length }})</h4>
<div class="references">
@for (service of references; track service) {
<div class="flex flex-col">
@ -124,7 +124,7 @@
<ng-template #unauthorized let-references>
@if (references.length > 0) {
<li>
<h4><span class="accent-color font-medium">Unauthorized</span> ({{ references.length }})</h4>
<h4 class="accent-color">Unauthorized ({{ references.length }})</h4>
<div class="references">
@for (reference of references; track reference) {
<div class="flex">

View File

@ -187,7 +187,7 @@
</div>
<div class="w-full flex flex-col gap-y-3">
<div class="flex flex-col">
<div class="event-header primary-color">
<div class="event-header font-bold primary-color">
Parent FlowFiles ({{ request.event.parentUuids.length }})
</div>
<ng-container
@ -197,7 +197,7 @@
"></ng-container>
</div>
<div class="flex flex-col">
<div class="event-header primary-color">
<div class="event-header font-bold primary-color">
Child FlowFiles ({{ request.event.childUuids.length }})
</div>
<ng-container
@ -224,7 +224,7 @@
<div class="tab-content py-4">
<div class="absolute inset-0 flex flex-col gap-y-4">
<div class="flex justify-between">
<div class="event-header primary-color">Attribute Values</div>
<div class="event-header font-bold primary-color">Attribute Values</div>
<div class="flex items-center gap-x-1">
<mat-checkbox color="primary" [(ngModel)]="onlyShowModifiedAttributes"></mat-checkbox>
<div>Show modified attributes only</div>
@ -257,7 +257,7 @@
<div class="absolute inset-0 flex flex-col gap-y-4">
<div class="flex gap-x-4">
<div class="w-full">
<div class="event-header primary-color">Input Claim</div>
<div class="event-header font-bold primary-color">Input Claim</div>
<div class="flex flex-col gap-y-3">
<div>
<div>Container</div>
@ -323,7 +323,7 @@
</div>
</div>
<div class="w-full">
<div class="event-header primary-color">Output Claim</div>
<div class="event-header font-bold primary-color">Output Claim</div>
<div class="flex flex-col gap-y-3">
<div>
<div>Container</div>
@ -390,7 +390,7 @@
</div>
</div>
<div class="flex flex-col">
<div class="event-header primary-color">Replay</div>
<div class="event-header font-bold primary-color">Replay</div>
<div
*ngIf="request.event.replayAvailable; else replayNotAvailable"
class="flex flex-col gap-y-3">

View File

@ -31,9 +31,6 @@
.event-header {
font-size: 15px;
font-family: 'Roboto Slab';
font-style: normal;
font-weight: bold;
}
}
}

View File

@ -27,7 +27,9 @@
<div class="inset-0 flex gap-y-4">
<div class="flex flex-col flex-1 gap-y-4">
<section>
<div class="section-header">Heap ({{ systemDiagnostics.heapUtilization }})</div>
<div class="section-header font-bold">
Heap ({{ systemDiagnostics.heapUtilization }})
</div>
<div class="flex flex-col gap-y-3">
<div class="flex flex-col">
<div>Max</div>
@ -56,7 +58,7 @@
</div>
</section>
<section>
<div class="section-header primary-color">Garbage Collection</div>
<div class="section-header font-bold primary-color">Garbage Collection</div>
@if (sortedGarbageCollections) {
<div class="flex flex-col gap-y-3">
@for (gc of sortedGarbageCollections; track gc) {
@ -73,7 +75,7 @@
</div>
<div class="flex flex-col flex-1 gap-y-4">
<section>
<div class="section-header">Non Heap</div>
<div class="section-header font-bold">Non Heap</div>
<div class="flex flex-col gap-y-3">
<div class="flex flex-col">
<div>Max</div>
@ -102,7 +104,7 @@
</div>
</section>
<section>
<div class="section-header">Runtime</div>
<div class="section-header font-bold">Runtime</div>
<div class="flex flex-col gap-y-3">
<div class="flex flex-col">
<div>Uptime</div>
@ -148,7 +150,7 @@
</div>
</div>
<section class="flex flex-col pr-4">
<div class="section-header">FlowFile Repository Usage</div>
<div class="section-header font-bold">FlowFile Repository Usage</div>
<div>
<div class="capitalize">Usage:</div>
<mat-progress-bar
@ -168,7 +170,7 @@
</div>
</section>
<section class="flex flex-col pr-4">
<div class="section-header">Content Repository Usage</div>
<div class="section-header font-bold">Content Repository Usage</div>
<div class="repository-storage-container flex flex-col gap-y-2">
@for (repo of systemDiagnostics.contentRepositoryStorageUsage; track repo) {
<div>
@ -185,7 +187,7 @@
</div>
</section>
<section class="flex flex-col pr-4">
<div class="section-header">Provenance Repository Usage</div>
<div class="section-header font-bold">Provenance Repository Usage</div>
<div class="repository-storage-container flex flex-col gap-y-2">
@for (repo of systemDiagnostics.provenanceRepositoryStorageUsage; track repo) {
<div>
@ -207,37 +209,37 @@
<div class="tab-content py-4 h-full w-full">
<div class="inset-0 flex flex-col gap-y-4">
<section>
<div class="section-header">NiFi</div>
<div class="section-header font-bold">NiFi</div>
<dl class="setting-attributes-list">
<dt>NiFi Version</dt>
<dt class="font-bold">NiFi Version</dt>
<dd>{{ systemDiagnostics.versionInfo.niFiVersion }}</dd>
<dt>Tag</dt>
<dt class="font-bold">Tag</dt>
<dd>{{ systemDiagnostics.versionInfo.buildTag }}</dd>
<dt>Build Date/Time</dt>
<dt class="font-bold">Build Date/Time</dt>
<dd>{{ systemDiagnostics.versionInfo.buildTimestamp }}</dd>
<dt>Branch</dt>
<dt class="font-bold">Branch</dt>
<dd>{{ systemDiagnostics.versionInfo.buildBranch }}</dd>
<dt>Revision</dt>
<dt class="font-bold">Revision</dt>
<dd>{{ systemDiagnostics.versionInfo.buildRevision }}</dd>
</dl>
</section>
<section>
<div class="section-header">Java</div>
<div class="section-header font-bold">Java</div>
<dl class="setting-attributes-list">
<dt>Version</dt>
<dt class="font-bold">Version</dt>
<dd>{{ systemDiagnostics.versionInfo.javaVersion }}</dd>
<dt>Vendor</dt>
<dt class="font-bold">Vendor</dt>
<dd>{{ systemDiagnostics.versionInfo.javaVendor }}</dd>
</dl>
</section>
<section>
<div class="section-header">Operating System</div>
<div class="section-header font-bold">Operating System</div>
<dl class="setting-attributes-list">
<dt>Name</dt>
<dt class="font-bold">Name</dt>
<dd>{{ systemDiagnostics.versionInfo.osName }}</dd>
<dt>Version</dt>
<dt class="font-bold">Version</dt>
<dd>{{ systemDiagnostics.versionInfo.osVersion }}</dd>
<dt>Architecture</dt>
<dt class="font-bold">Architecture</dt>
<dd>{{ systemDiagnostics.versionInfo.osArchitecture }}</dd>
</dl>
</section>

View File

@ -26,9 +26,6 @@
.section-header {
font-size: 15px;
font-family: 'Roboto Slab';
font-style: normal;
font-weight: bold;
}
}
@ -37,7 +34,6 @@
float: left;
clear: left;
padding: 0 0.5em 0.2em 0;
font-weight: bold;
}
dd {
margin-left: 9em;

View File

@ -18,7 +18,7 @@
<div class="el-function-tooltip tooltip" [style.left.px]="left" [style.bottom.px]="bottom">
@if (data?.elFunction; as elFunction) {
<div class="flex flex-col gap-y-3">
<div class="el-name">{{ elFunction.name }}</div>
<div class="el-name font-bold">{{ elFunction.name }}</div>
@if (hasDescription(elFunction)) {
<div>{{ elFunction.description }}</div>
}

View File

@ -20,16 +20,11 @@
width: 400px;
.el-name {
font-weight: bold;
font-family: monospace;
font-size: 16px;
margin-bottom: 10px;
}
div.el-header {
font-weight: bold;
}
ul.el-arguments {
list-style-type: disc;
list-style-position: inside;

View File

@ -18,7 +18,7 @@
<div class="tooltip parameter-tip" [style.left.px]="left" [style.bottom.px]="bottom">
@if (data?.parameter; as parameter) {
<div class="flex flex-col gap-y-3">
<div class="parameter-name">{{ parameter.name }}</div>
<div class="parameter-name font-bold">{{ parameter.name }}</div>
@if (hasDescription(parameter)) {
<div>{{ parameter.description }}</div>
} @else {

View File

@ -20,7 +20,6 @@
width: 400px;
.parameter-name {
font-weight: 700;
font-family: monospace;
font-size: 16px;
margin-bottom: 10px;

View File

@ -23,7 +23,7 @@
<div class="flex items-baseline gap-x-3">
<div class="fa fa-check"></div>
<div class="flex flex-col">
<div>Expression Language (EL) supported</div>
<div class="font-bold">Expression Language (EL) supported</div>
<div>
After beginning with the start delimiter <span class="hint-pattern">$&#123;</span> use the
keystroke <span class="hint-keystroke">control+space</span> to see a list of available
@ -42,10 +42,11 @@
<div class="flex items-baseline gap-x-3">
<div class="fa fa-check"></div>
<div class="flex flex-col">
<div>Parameters (PARAM) supported</div>
<div class="font-bold">Parameters (PARAM) supported</div>
<div>
After beginning with the start delimiter <span class="hint-pattern">#&#123;</span> use the
keystroke <span class="hint-keystroke">control+space</span> to see a list of available
After beginning with the start delimiter
<span class="hint-pattern font-normal">#&#123;</span> use the keystroke
<span class="hint-keystroke font-light">control+space</span> to see a list of available
parameters.
</div>
</div>

View File

@ -18,10 +18,8 @@
.hint-pattern {
padding: 0 2px;
letter-spacing: 1px;
font-weight: 400;
}
.hint-keystroke {
font-weight: 300;
font-style: italic;
}

View File

@ -28,15 +28,11 @@
body {
margin: 0;
font-family: Roboto, 'Helvetica Neue', sans-serif;
}
a {
font-size: 13px;
cursor: pointer;
font-weight: normal;
display: inline-block;
font-family: Roboto;
text-decoration: underline;
text-underline-offset: 3px;
}
@ -47,8 +43,6 @@
border-radius: 2px;
border-width: 1px;
font-size: 13px;
font-family: Roboto;
font-weight: 400;
word-wrap: break-word;
white-space: normal;
@ -60,8 +54,6 @@
.property-editor {
font-size: 13px;
font-family: Roboto;
font-weight: 400;
}
.blank,
@ -276,6 +268,28 @@
$material-theme-accent-palette-darker,
$material-theme-accent-palette-lighter
)};
//font-family: mat.get-theme-typography($material-theme, body-1, font-family);
}
.mat-h2,
.mat-typography .mat-h2,
.mat-typography h2 {
// Because angular material typography adds bottom margin
margin: unset;
}
.mat-h3,
.mat-typography .mat-h3,
.mat-typography h3 {
// Because angular material typography adds bottom margin
margin: unset;
}
.mat-h4,
.mat-typography .mat-h4,
.mat-typography h4 {
// Because angular material typography adds bottom margin
margin: unset;
}
.cdk-drop-list {

View File

@ -63,7 +63,7 @@ $warn-light-palette: (
600: #ec3030,
700: #ff1507,
800: #ff0000,
900: #ba554a, // g.component rect.border.unauthorized, #connection-full-drop-shadow feFlood, text.restricted, g.connection rect.border.unauthorized, g.connection path.connection-path.full, g.connection path.connection-path.unauthorized, .controller-bulletins.has-bulletins, path.link.selected, g.event circle.selected
900: #ba554a,
contrast: (
50: rgba(#000000, 0.87),
100: rgba(#000000, 0.87),
@ -100,6 +100,31 @@ $material-accent-light: mat.define-palette($material-accent-light-palette, 500,
// warn material palette color default hue must have enough contrast on top of the mat-app-background. For light mode this is a minimum of 600 up to 900.
$warn-light: mat.define-palette($warn-light-palette, 400, 200, 900);
@use '@fontsource/roboto/latin.css' as roboto-normal;
@use '@fontsource/roboto/latin-300-italic.css' as roboto-light-italic;
@use '@fontsource/roboto/latin-400-italic.css' as roboto-normal-italic;
//https://m2.material.io/design/typography/the-type-system.html#type-scale
$typography-config: mat.define-typography-config(
$font-family: Roboto,
//h2
$headline-6: mat.define-typography-level(16px, 24px, 400, $letter-spacing: 0.5px),
//h3
$subtitle-1: mat.define-typography-level(20px, 20px, 700),
//h4
$subtitle-2: mat.define-typography-level(14px, 26px, 400, $letter-spacing: 0.4375px),
//body
$body-1: mat.define-typography-level(16px, 24px, 400),
//body2
$body-2: mat.define-typography-level(14px, 14px, 400),
//caption <mat-error> or <mat-hint>
$caption: mat.define-typography-level(12px, 20px, 400, $letter-spacing: 0.4px),
//button
$button: mat.define-typography-level(16px, 24px, 400),
);
@include mat.typography-hierarchy($typography-config);
// Create the theme objects. We can extract the values we need from the theme passed into the mixins.
$material-theme-light: mat.define-light-theme(
(
@ -108,7 +133,7 @@ $material-theme-light: mat.define-light-theme(
accent: $material-accent-light,
warn: $warn-light
),
//typography: mat.define-typography-config(), // TODO: typography
typography: $typography-config,
density: -3
)
);
@ -138,8 +163,8 @@ $material-theme-dark: mat.define-dark-theme(
accent: $material-accent-dark,
warn: $warn-dark
),
density: 0,
typography: mat.define-typography-config(),
typography: $typography-config,
density: 0
)
);

View File

@ -114,7 +114,6 @@ $nifi-theme-light: mat.define-light-theme(
accent: $success-light-palette,
warn: $caution-light-palette
),
//typography: mat.define-typography-config(), // TODO: typography
density: -3
)
);
@ -132,7 +131,6 @@ $nifi-theme-dark: mat.define-dark-theme(
accent: $success-dark-palette,
warn: $caution-dark-palette,
),
//typography: mat.define-typography-config(), // TODO: typography
density: -3
)
);

View File

@ -30,6 +30,27 @@ $material-primary-light: mat.define-palette($material-primary-light-palette, 800
$material-accent-light: mat.define-palette($material-accent-light-palette, 600, 50, A700);
$warn-light: mat.define-palette($warn-light-palette, 400, 200, 900);
//https://m2.material.io/design/typography/the-type-system.html#type-scale
$typography-config: mat.define-typography-config(
$font-family: "Comic Sans MS, Tahoma",
//h2
$headline-6: mat.define-typography-level(16px, 24px, 400, $letter-spacing: 0.5px),
//h3
$subtitle-1: mat.define-typography-level(20px, 20px, 700),
//h4
$subtitle-2: mat.define-typography-level(14px, 26px, 400, $letter-spacing: 0.4375px),
//body
$body-1: mat.define-typography-level(16px, 24px, 400),
//body2
$body-2: mat.define-typography-level(14px, 14px, 400),
//caption <mat-error> or <mat-hint>
$caption: mat.define-typography-level(12px, 20px, 400, $letter-spacing: 0.4px),
//button
$button: mat.define-typography-level(16px, 24px, 400),
);
@include mat.typography-hierarchy($typography-config);
// Create the theme objects. We can extract the values we need from the theme passed into the mixins.
$material-theme-light: mat.define-light-theme(
(
@ -38,6 +59,7 @@ $material-theme-light: mat.define-light-theme(
accent: $material-accent-light,
warn: $warn-light
),
typography: $typography-config,
density: -3
)
);
@ -54,6 +76,7 @@ $material-theme-dark: mat.define-dark-theme(
accent: $material-accent-dark,
warn: $warn-dark
),
typography: $typography-config,
density: -3
)
);

View File

@ -22,10 +22,8 @@
<title>NiFi</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" type="image/svg+xml" href="assets/icons/nifi-drop.svg" />
<link rel="preconnect" href="https://fonts.gstatic.com" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
</head>
<body class="mat-app-background">
<body class="mat-app-background mat-typography">
<nifi></nifi>
</body>
</html>

View File

@ -42,10 +42,6 @@
@use 'app/pages/summary/ui/processor-status-listing/processor-status-table/processor-status-table.component-theme' as processor-status-table;
// Plus imports for other components in your app.
@use '@fontsource/roboto/latin.css' as roboto-normal;
@use '@fontsource/roboto/latin-300-italic.css' as roboto-light-italic;
@use '@fontsource/roboto/latin-400-italic.css' as roboto-normal-italic;
@use '@fontsource/roboto-slab/latin.css' as roboto-slab-normal;
@use 'assets/fonts/flowfont/flowfont.css';
@use 'font-awesome/css/font-awesome.min.css';
@use 'codemirror/lib/codemirror.css';
@ -90,7 +86,7 @@
@include provenance.generate-theme($material-theme-light, $nifi-theme-light);
@include lineage.generate-theme($material-theme-light, $nifi-theme-light);
@include context-menu.generate-theme($material-theme-light, $nifi-theme-light);
@include navigation.generate-theme($material-theme-light);
@include navigation.generate-theme($material-theme-light, $nifi-theme-light);
@include nf-editor.generate-theme($material-theme-light, $nifi-theme-light);
@include status-history.generate-theme($nifi-theme-light);
@include property-hint-tip.generate-theme($material-theme-light, $nifi-theme-light);
@ -118,7 +114,7 @@
@include provenance.generate-theme($material-theme-dark, $nifi-theme-dark);
@include lineage.generate-theme($material-theme-dark, $nifi-theme-dark);
@include context-menu.generate-theme($material-theme-dark, $nifi-theme-dark);
@include navigation.generate-theme($material-theme-dark);
@include navigation.generate-theme($material-theme-dark, $nifi-theme-dark);
@include nf-editor.generate-theme($material-theme-dark, $nifi-theme-dark);
@include status-history.generate-theme($nifi-theme-dark);
@include property-hint-tip.generate-theme($material-theme-dark, $nifi-theme-dark);