Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GUACAMOLE-1085: Migrate frontend to angular #896

Draft
wants to merge 65 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
7b3d89c
GUACAMOLE-1085: Remove AngularJS frontend
leonard2901 Jun 20, 2023
3f49a5a
GUACAMOLE-1085: Add Angular frontend to src/main/guacamole-frontend
leonard2901 Jun 20, 2023
4fde9ac
GUACAMOLE-1085: Update Angular to v16.1
leonard2901 Jun 20, 2023
ce84b24
GUACAMOLE-1085: Add Angular library guacamole-fronted-lib
leonard2901 Jun 20, 2023
54be728
GUACAMOLE-1085: Add Angular library guacamole-fronted-ext-lib
leonard2901 Jun 20, 2023
24c6885
GUACAMOLE-1085: Include Angular projects in maven build
leonard2901 Jun 21, 2023
bbf4a3a
GUACAMOLE-1085: Add the frontend-lib as a dependency to the frontend
leonard2901 Jun 21, 2023
a80d5ff
GUACAMOLE-1085: fix: the event service now handles subscribers correctly
leonard2901 Jun 22, 2023
a2b0595
GUACAMOLE-1085: Switch to Firefox for karma tests, remove empty test …
leonard2901 Jun 22, 2023
7b72a08
GUACAMOLE-1085: Add Cypress e2e tests for the frontend
leonard2901 Jun 22, 2023
10b2f4a
GUACAMOLE-1085: fix: reset password field after login failed
leonard2901 Jun 22, 2023
6edb703
GUACAMOLE-1085: Add ESLint to the frontend project
leonard2901 Jun 22, 2023
52af100
GUACAMOLE-1085: Fix some linter errors
leonard2901 Jun 22, 2023
77f859f
GUACAMOLE-1085: Add Module Federation to app
leonard2901 Jun 22, 2023
d1dfabd
GUACAMOLE-1085: Move the form field service to the extension library
leonard2901 Jun 22, 2023
cb6b1e4
GUACAMOLE-1085: Add the extension library as a dependency to the fron…
leonard2901 Jun 22, 2023
feec8ef
GUACAMOLE-1085: Add an example for an extension which adds routes and…
leonard2901 Jun 22, 2023
c0c6f57
GUACAMOLE-1085: Move the lib and ext-lib to the frontend workspace
leonard2901 Jun 23, 2023
e0f3e5a
GUACAMOLE-1085: Prefer event emitter rather than functions as inputs
leonard2901 Jun 23, 2023
c687c8d
GUACAMOLE-1085: Fix client resizing and drop behaviour
leonard2901 Jun 23, 2023
1723252
GUACAMOLE-1085: Set Angular version to 16.1.1
leonard2901 Jun 25, 2023
4d21aa3
GUACAMOLE-1085: Add missing documentation
leonard2901 Jun 25, 2023
a6a716f
GUACAMOLE-1085: Migrate the guacGroupListFilter directive
leonard2901 Jun 26, 2023
21d9f09
GUACAMOLE-1085: Set the page title on the initial page load
leonard2901 Jun 27, 2023
efd3210
GUACAMOLE-1085: Set the CSS body class on the initial page load
leonard2901 Jun 28, 2023
1fefb39
GUACAMOLE-1085: Refresh the session view after stopping sessions
leonard2901 Jun 28, 2023
b6a3a30
GUACAMOLE-1085: Ensure new pages always start with clear keyboard state
leonard2901 Jun 28, 2023
45b234b
GUACAMOLE-1085: Migrate more components
leonard2901 Jun 28, 2023
fecc717
GUACAMOLE-1085: Fix sorting in data tables
leonard2901 Jun 29, 2023
79b6bbe
GUACAMOLE-1085: Fix some broken tests
leonard2901 Jun 29, 2023
e312de5
GUACAMOLE-1085: Complete extension loading via module federation
leonard2901 Jun 29, 2023
2d684d1
GUACAMOLE-1085: Clean up some TODOs
leonard2901 Jun 29, 2023
8d77d62
GUACAMOLE-1085: Rename form component inputs
leonard2901 Jun 29, 2023
dd535d7
GUACAMOLE-1085: Move canonicalize function to translation service
leonard2901 Jun 29, 2023
d6fc03b
GUACAMOLE-1085: Migrate connection history player
leonard2901 Jun 30, 2023
0136e75
GUACAMOLE-1085: Prefer single quotes and 'const'
leonard2901 Jun 30, 2023
b558595
GUACAMOLE-1085: Use "@:...:@" to reference another translation file
leonard2901 Jun 30, 2023
8ff3761
GUACAMOLE-1085: Edit README files
leonard2901 Jun 30, 2023
fbc9e11
GUACAMOLE-1085: Exclude Angular build directories from RAT checks
leonard2901 Jun 30, 2023
da228ba
GUACAMOLE-1085: Add dependency for jquery
leonard2901 Feb 6, 2024
7b287b2
GUACAMOLE-1085: Migrate IconService
leonard2901 Feb 6, 2024
1552b9c
GUACAMOLE-1085: Show an empty cell in the user settings component if …
leonard2901 Feb 6, 2024
b0b089a
GUACAMOLE-1085: Update JSDoc
leonard2901 Feb 19, 2024
6f3d0e8
GUACAMOLE-1085: Migrate ConnectionPermissionEditor Component
leonard2901 Feb 19, 2024
e705368
GUACAMOLE-1085: Fix login form placeholder text
leonard2901 Feb 19, 2024
a30f047
GUACAMOLE-1085: Fix IdentifierSetEditor Component
leonard2901 Feb 19, 2024
dd874e9
GUACAMOLE-1085: Add TODOs for missing JSDoc
leonard2901 Feb 21, 2024
4bdd0c6
GUACAMOLE-1085: Fix Typo
leonard2901 Feb 21, 2024
3ad6311
GUACAMOLE-1085: Fix in MangeConnection Component
leonard2901 Feb 21, 2024
122d98f
GUACAMOLE-1085: Fix MangeConnectionGroup Component
leonard2901 Feb 21, 2024
adfae99
GUACAMOLE-1085: Migrate ManageSharingProfile Component
leonard2901 Feb 21, 2024
294ae5e
GUACAMOLE-1085: Fix form field alignment
leonard2901 Feb 21, 2024
66fe9f3
GUACAMOLE-1085: Update user menu styles
leonard2901 Feb 22, 2024
7926446
GUACAMOLE-1085: Reorder routes
leonard2901 Apr 12, 2024
58c3c0b
GUACAMOLE-1085: Add fallback route
leonard2901 Apr 12, 2024
f788bad
GUACAMOLE-1085: Migrate GuacDropDirective
leonard2901 Apr 12, 2024
7001428
GUACAMOLE-1085: Migrate connection import
leonard2901 Apr 15, 2024
e3ed892
GUACAMOLE-1085: Update .ratignore
leonard2901 Apr 17, 2024
0ff6a4d
GUACAMOLE-1085: Update licence text
leonard2901 Apr 17, 2024
bdf5839
GUACAMOLE-1085: Update package-lock.json
leonard2901 Apr 17, 2024
93db067
GUACAMOLE-1085: Use TypeScript types form DefinitelyTyped for guacamo…
leonard2901 Apr 18, 2024
6bef292
GUACAMOLE-1085: Organize imports
leonard2901 Apr 18, 2024
de99a84
GUACAMOLE-1085: Reformat TypeScript code
leonard2901 Apr 18, 2024
e4ab2cc
GUACAMOLE-1085: Reformat HTML
leonard2901 Apr 18, 2024
dcd54db
GUACAMOLE-1085: Fix missing inputs in connection form after changing …
leonard2901 Apr 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
42 changes: 42 additions & 0 deletions doc/guacamole-frontend-extension-example/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# See http://help.github.com/ignore-files/ for more about ignoring files.

# Compiled output
/dist
/tmp
/out-tsc
/bazel-out

# Node
/node_modules
npm-debug.log
yarn-error.log

# IDEs and editors
.idea/
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace

# Visual Studio Code
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
.history/*

# Miscellaneous
/.angular/cache
.sass-cache/
/connect.lock
/coverage
/libpeerconnection.log
testem.log
/typings

# System files
.DS_Store
Thumbs.db
40 changes: 40 additions & 0 deletions doc/guacamole-frontend-extension-example/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Frontend Extension Example

This project was generated with [Angular CLI](https://github.com/angular/angular-cli)
version 16.1.1 using the following steps:

```bash
# Create a new minimal Angular project
ng new guacamole-frontend-extension-example \
--minimal \
--prefix guac \
--routing \
--skip-tests \
--skip-install \
--standalone \
--view-encapsulation None

# ... manually set the version of @angular dependencies to "16.1.1" in the package.json

cd guacamole-frontend-extension-example

npm install

# Add support for module federation
ng add @angular-architects/module-federation --project guacamole-frontend-extension-example --type remote --port 4202

# Add the frontend extension library
npm install ..\..\guacamole\src\main\guacamole-frontend\dist\guacamole-frontend-ext-lib

```

Add `"src/app/extension.config.ts"` to `tsconfig.app.json` `files` array.


## Development server

Run `ng serve` for a dev server. Navigate to `http://localhost:4202/`. The application will automatically reload if you change any of the source files.

## Build

Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory.
118 changes: 118 additions & 0 deletions doc/guacamole-frontend-extension-example/angular.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"guacamole-frontend-extension-example": {
"projectType": "application",
"schematics": {
"@schematics/angular:component": {
"inlineTemplate": true,
"inlineStyle": true,
"skipTests": true,
"standalone": true
},
"@schematics/angular:class": {
"skipTests": true
},
"@schematics/angular:directive": {
"skipTests": true,
"standalone": true
},
"@schematics/angular:guard": {
"skipTests": true
},
"@schematics/angular:interceptor": {
"skipTests": true
},
"@schematics/angular:pipe": {
"skipTests": true,
"standalone": true
},
"@schematics/angular:resolver": {
"skipTests": true
},
"@schematics/angular:service": {
"skipTests": true
}
},
"root": "",
"sourceRoot": "src",
"prefix": "guac",
"architect": {
"build": {
"builder": "ngx-build-plus:browser",
"options": {
"outputPath": "dist/guacamole-frontend-extension-example",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": [
"zone.js"
],
"tsConfig": "tsconfig.app.json",
"assets": [
],
"styles": [
"src/styles.css"
],
"scripts": [],
"extraWebpackConfig": "webpack.config.js",
"commonChunk": false
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "500kb",
"maximumError": "1mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "2kb",
"maximumError": "4kb"
}
],
"outputHashing": "all",
"extraWebpackConfig": "webpack.prod.config.js"
},
"development": {
"buildOptimizer": false,
"optimization": false,
"vendorChunk": true,
"extractLicenses": false,
"sourceMap": true,
"namedChunks": true
}
},
"defaultConfiguration": "production"
},
"serve": {
"builder": "ngx-build-plus:dev-server",
"configurations": {
"production": {
"browserTarget": "guacamole-frontend-extension-example:build:production",
"extraWebpackConfig": "webpack.prod.config.js"
},
"development": {
"browserTarget": "guacamole-frontend-extension-example:build:development"
}
},
"defaultConfiguration": "development",
"options": {
"port": 4202,
"publicHost": "http://localhost:4202",
"extraWebpackConfig": "webpack.config.js"
}
},
"extract-i18n": {
"builder": "ngx-build-plus:extract-i18n",
"options": {
"browserTarget": "guacamole-frontend-extension-example:build",
"extraWebpackConfig": "webpack.config.js"
}
}
}
}
}
}
Loading