Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
473b9bc
NIFI-14319: init new registry app
sardell Jan 14, 2025
29427ea
NIFI-14319: add unit test coverage
sardell Mar 20, 2025
5f8dc66
NIFI-14319: update redirect value
sardell Mar 23, 2025
f6fa37f
Remove commented code in droplet filter
sardell Mar 23, 2025
22e6160
NIFI-14319: remove commented code from current user effects
sardell Mar 23, 2025
1ec52df
NIFI-14319: remove commented code from bucket reducer
sardell Mar 23, 2025
f70fb34
NIFI-14319: remove commented code from index.ts
sardell Mar 23, 2025
e35bad3
NIFI-14319: address initial feedback
sardell Apr 3, 2025
9c1df60
NIFI-14319: add wrongly removed favicon back to old project
sardell Apr 8, 2025
1957e5c
NIFI-14319: fix CI build failures
sardell Apr 9, 2025
824ab35
NIFI-14319: fix alt value used for registry logo
sardell Apr 28, 2025
2057175
NIFI-14319: review feedback
sardell Apr 29, 2025
5fdb0d4
NIFI-14319: address naming and formatting feedback
sardell May 2, 2025
2828a1d
NIFI-14319: address review feedback
sardell May 8, 2025
b37187d
NIFI-14319: refactor droplet table into standalone component
sardell May 13, 2025
8970ab9
NIFI-14319: align banner error handling with NiFi UX
sardell May 16, 2025
86d22c1
NIFI-14319: align file upload UX with NiFi UI
sardell May 19, 2025
d27760b
NIFI-14319: additional dialog header and button style tweaks
sardell May 19, 2025
d6933ec
NIFI-14319: update logo styling
sardell May 19, 2025
4af1541
NIFI-14319: error handling improvements
sardell May 21, 2025
63224a2
NIFI-14319: use NiFi file pick UX in import new flow dialog
sardell May 21, 2025
ab521cb
NIFI-14319: remove unused directory
sardell May 22, 2025
bbee0ea
NIFI-14319: cleanup action types and fix missing import description
sardell May 24, 2025
0900a29
NIFI-14319: address feedback
sardell Jul 16, 2025
7bafb18
NIFI-14319: move context error into shared lib
sardell Jul 18, 2025
2d8a592
NIFI-14319: remove current user code
sardell Jul 18, 2025
bb98b33
NIFI-14319: remove old context error code from registry
sardell Jul 21, 2025
6589dd7
NIFI-14319: update explorer naming to resources
sardell Jul 22, 2025
a51a72c
NIFI-14319: remove circular dependency
sardell Jul 25, 2025
65351c1
NIFI-14319: remove error abstractions from shared folder
sardell Sep 22, 2025
2571f59
NIFI-14319: update out-of-sync lock file
sardell Sep 22, 2025
4e1b1db
NIFI-14319: a few minor changes
sardell Sep 22, 2025
73ef78d
NIFI-14319: restore ignore path for favicon in old ui gitignore
sardell Sep 22, 2025
5a2f1a4
NIFI-14319: update lock file
sardell Sep 22, 2025
f0fe804
NIFI-14319: fix build issues
sardell Sep 22, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions nifi-frontend/src/main/frontend/apps/nifi-registry/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
{
"root": true,
"ignorePatterns": ["!**/*"],
"parserOptions": {
"ecmaVersion": "latest"
},
"overrides": [
{
"files": ["*.ts"],
"extends": [
"plugin:@nx/angular",
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@angular-eslint/recommended",
"plugin:@angular-eslint/template/process-inline-templates",
"plugin:prettier/recommended"
],
"rules": {
"@angular-eslint/directive-selector": [
"error",
{
"type": "attribute",
"prefix": "",
"style": "camelCase"
}
],
"@angular-eslint/component-selector": [
"error",
{
"type": "element",
"prefix": "",
"style": "kebab-case"
}
],
"@angular-eslint/component-class-suffix": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/no-non-null-assertion": "off",
"@typescript-eslint/no-this-alias": "warn",
"@typescript-eslint/no-unused-vars": "warn",
"no-useless-escape": "off",
"@angular-eslint/prefer-standalone": "off"
}
}
]
}
38 changes: 38 additions & 0 deletions nifi-frontend/src/main/frontend/apps/nifi-registry/jest.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

export default {
displayName: 'NiFi Registry',
preset: '../../jest.preset.js',
setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
coverageDirectory: '../../coverage/apps/nifi-registry',
transform: {
'^.+\\.(ts|mjs|js|html)$': [
'jest-preset-angular',
{
tsconfig: '<rootDir>/tsconfig.spec.json',
stringifyContentPathRegex: '\\.(html|svg)$'
}
]
},
transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'],
snapshotSerializers: [
'jest-preset-angular/build/serializers/no-ng-attributes',
'jest-preset-angular/build/serializers/ng-snapshot',
'jest-preset-angular/build/serializers/html-comment'
]
};
134 changes: 134 additions & 0 deletions nifi-frontend/src/main/frontend/apps/nifi-registry/project.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
{
"name": "nifi-registry",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"projectType": "application",
"generators": {
"@schematics/angular:component": {
"style": "scss"
}
},
"prefix": "app",
"sourceRoot": "apps/nifi-registry/src",
"targets": {
"build": {
"executor": "@nx/angular:application",
"outputs": ["{options.outputPath}"],
"options": {
"outputPath": "dist/nifi-registry",
"index": "apps/nifi-registry/src/index.html",
"browser": "apps/nifi-registry/src/main.ts",
"polyfills": ["zone.js"],
"tsConfig": "apps/nifi-registry/tsconfig.app.json",
"inlineStyleLanguage": "scss",
"assets": [
{
"glob": "**/*.svg",
"input": "libs/shared/src/assets/",
"output": "./assets"
}
],
"styles": ["apps/nifi-registry/src/styles.scss"],
"stylePreprocessorOptions": {
"includePaths": [""]
},
"scripts": [],
"preserveSymlinks": true
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "500kb",
"maximumError": "1mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "2kb",
"maximumError": "4kb"
}
],
"outputHashing": "all",
"optimization": true
},
"development": {
"optimization": false,
"extractLicenses": false,
"sourceMap": true,
"preserveSymlinks": true,
"namedChunks": true,
"outputHashing": "none",
"assets": [
{
"glob": "**/*.svg",
"input": "libs/shared/src/assets/",
"output": "./assets"
}
],
"fileReplacements": [
{
"replace": "apps/nifi-registry/src/environments/environment.ts",
"with": "apps/nifi-registry/src/environments/environment.development.ts"
}
]
}
},
"defaultConfiguration": "production"
},
"serve": {
"executor": "@nx/angular:dev-server",
"configurations": {
"production": {
"buildTarget": "nifi-registry:build:production"
},
"development": {
"buildTarget": "nifi-registry:build:development",
"servePath": "/nifi-registry"
}
},
"defaultConfiguration": "development",
"options": {
"proxyConfig": "apps/nifi-registry/proxy.config.mjs",
"buildTarget": "nifi-registry:build",
"port": 4204
},
"continuous": true
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
"options": {
"buildTarget": "nifi-registry:build"
}
},
"lint": {
"executor": "@nx/eslint:lint",
"outputs": ["{options.outputFile}"]
},
"lint:fix": {
"executor": "@nx/eslint:lint",
"options": {
"fix": true
},
"outputs": ["{options.outputFile}"]
},
"prettier": {
"executor": "nx:run-commands",
"options": {
"command": "npm run prettier"
}
},
"prettier:format": {
"executor": "nx:run-commands",
"options": {
"command": "npm run prettier-format"
}
},
"test": {
"executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
"jestConfig": "apps/nifi-registry/jest.config.ts"
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

const target = {
target: 'http://localhost:18080',
secure: false,
logLevel: 'debug',
changeOrigin: true,
headers: {
'X-ProxyScheme': 'http',
'X-ProxyPort': 4204
},
configure: (proxy, _options) => {
proxy.on('error', (err, _req, _res) => {
console.log('proxy error', err);
});
proxy.on('proxyReq', (proxyReq, req, _res) => {
console.log('Sending Request to the Target:', req.method, req.url);
});
proxy.on('proxyRes', (proxyRes, req, _res) => {
console.log('Received Response from the Target:', proxyRes.statusCode, req.url);
});
},
bypass: function (req) {
if (req.url.startsWith('/nifi-registry/')) {
return req.url;
}
}
};

export default {
'/**': target
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';

const routes: Routes = [
{
path: '',
redirectTo: 'explorer',
pathMatch: 'full'
},
{
path: 'explorer',
loadChildren: () => import('./pages/resources/feature/resources.module').then((m) => m.ResourcesModule)
},
// Backward compatibility: old app's default route
{
path: 'nifi-registry',
redirectTo: 'explorer',
pathMatch: 'full'
}
// TODO: buckets
// TODO: Users/groups
// TODO: Page not found
];

@NgModule({
imports: [
RouterModule.forRoot(routes, {
paramsInheritanceStrategy: 'always',
useHash: true
})
],
exports: [RouterModule]
})
export class AppRoutingModule {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one or more
~ contributor license agreements. See the NOTICE file distributed with
~ this work for additional information regarding copyright ownership.
~ The ASF licenses this file to You under the Apache License, Version 2.0
~ (the "License"); you may not use this file except in compliance with
~ the License. You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->

<div class="flex flex-col h-screen">
<header class="mb-5 nifi-registry-header">
<app-header></app-header>
</header>
<router-outlet></router-outlet>
</div>
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
Loading