From 6331948e7a7f4c0f0cd7789c1a51a15beb20b8cb Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Fri, 4 Jun 2021 14:59:05 +0200 Subject: ui: Enable React Strict Mode via Next.js This change enables React Strict Mode via Next.js configuration in order to highlight potential problems with the web application. --- opendc-web/opendc-web-ui/next.config.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 opendc-web/opendc-web-ui/next.config.js (limited to 'opendc-web/opendc-web-ui/next.config.js') diff --git a/opendc-web/opendc-web-ui/next.config.js b/opendc-web/opendc-web-ui/next.config.js new file mode 100644 index 00000000..c282d6e2 --- /dev/null +++ b/opendc-web/opendc-web-ui/next.config.js @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2021 AtLarge Research + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +module.exports = { + reactStrictMode: true, +} -- cgit v1.2.3 From f5e6ad3c77c09de246b6b85309fb4d8eb4d36023 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Fri, 4 Jun 2021 14:58:34 +0200 Subject: ui: Add support for linting via ESLint --- opendc-web/opendc-web-ui/next.config.js | 3 +++ 1 file changed, 3 insertions(+) (limited to 'opendc-web/opendc-web-ui/next.config.js') diff --git a/opendc-web/opendc-web-ui/next.config.js b/opendc-web/opendc-web-ui/next.config.js index c282d6e2..44ebfff6 100644 --- a/opendc-web/opendc-web-ui/next.config.js +++ b/opendc-web/opendc-web-ui/next.config.js @@ -22,4 +22,7 @@ module.exports = { reactStrictMode: true, + experimental: { + eslint: true, + }, } -- cgit v1.2.3 From 829be3c973f5ca837431c3ca10909412b675e668 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Thu, 15 Jul 2021 15:10:04 +0200 Subject: refactor(ui): Extract OpenDC landing page from web interface This change extracts the landing page from the web interface in order to separate the development of the two. This allows the landing page to be developed independently of the actual OpenDC web application. --- opendc-web/opendc-web-ui/next.config.js | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'opendc-web/opendc-web-ui/next.config.js') diff --git a/opendc-web/opendc-web-ui/next.config.js b/opendc-web/opendc-web-ui/next.config.js index 44ebfff6..97580fa0 100644 --- a/opendc-web/opendc-web-ui/next.config.js +++ b/opendc-web/opendc-web-ui/next.config.js @@ -25,4 +25,13 @@ module.exports = { experimental: { eslint: true, }, + async redirects() { + return [ + { + source: '/', + destination: '/projects', + permanent: true, + }, + ] + }, } -- cgit v1.2.3 From 1ab168fb80fbf3958fbadda00d1c6714cad66c86 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Thu, 3 Jun 2021 17:57:46 +0200 Subject: feat(ui): Add initial support for PatternFly 4 framework This change adds support in our Next.js application for the PatternFly 4 design framework. This framework is built by RedHat and provides several components that are useful for the space in which OpenDC operates. --- opendc-web/opendc-web-ui/next.config.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'opendc-web/opendc-web-ui/next.config.js') diff --git a/opendc-web/opendc-web-ui/next.config.js b/opendc-web/opendc-web-ui/next.config.js index 97580fa0..56263c86 100644 --- a/opendc-web/opendc-web-ui/next.config.js +++ b/opendc-web/opendc-web-ui/next.config.js @@ -20,7 +20,14 @@ * SOFTWARE. */ -module.exports = { +// PatternFly 4 uses global CSS imports in its distribution files. Therefore, +// we need to transpile the modules before we can use them. +const withTM = require('next-transpile-modules')([ + '@patternfly/react-core', + '@patternfly/react-styles', +]) + +module.exports = withTM({ reactStrictMode: true, experimental: { eslint: true, @@ -34,4 +41,4 @@ module.exports = { }, ] }, -} +}) -- cgit v1.2.3 From 803e13b32cf0ff8b496649fb0a4d6e32400e98a4 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Wed, 14 Jul 2021 22:23:40 +0200 Subject: feat(ui): Migrate to PatternFly 4 design framework This change is a rewrite of the existing OpenDC frontend in order to migrate to the PatternFly 4 design framework. PatternFly is used by Red Hat for various computing related services such as OpenShift, Red Hat Virtualization and Cockpit. Since their design requirements are very similar to those of OpenDC (modeling computing services), migrating to PatternFly 4 allows us to re-use design choices from these services. See https://www.patternfly.org/v4/ for more information about PatternFly. --- opendc-web/opendc-web-ui/next.config.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'opendc-web/opendc-web-ui/next.config.js') diff --git a/opendc-web/opendc-web-ui/next.config.js b/opendc-web/opendc-web-ui/next.config.js index 56263c86..9092adc4 100644 --- a/opendc-web/opendc-web-ui/next.config.js +++ b/opendc-web/opendc-web-ui/next.config.js @@ -25,6 +25,8 @@ const withTM = require('next-transpile-modules')([ '@patternfly/react-core', '@patternfly/react-styles', + '@patternfly/react-table', + '@patternfly/react-tokens', ]) module.exports = withTM({ -- cgit v1.2.3 From dc65123da856a09fe346ccd851cb4b78ad07ce5c Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Mon, 19 Jul 2021 11:48:18 +0200 Subject: perf(ui): Split transpiled modules into separate chunk This change updates the Next.js/Webpack configuration of the OpenDC frontend to split transpiled modules into a separate chunk during development. This prevents the duplication of the transpiled modules across the compiled files. --- opendc-web/opendc-web-ui/next.config.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'opendc-web/opendc-web-ui/next.config.js') diff --git a/opendc-web/opendc-web-ui/next.config.js b/opendc-web/opendc-web-ui/next.config.js index 9092adc4..1dfe4156 100644 --- a/opendc-web/opendc-web-ui/next.config.js +++ b/opendc-web/opendc-web-ui/next.config.js @@ -43,4 +43,18 @@ module.exports = withTM({ }, ] }, + webpack: (config, options) => { + if (options.dev) { + config.optimization.splitChunks = { + cacheGroups: { + vendor: { + test: /[\\/]node_modules[\\/]/, + name: 'transpiled-modules', + chunks: 'all', + }, + }, + } + } + return config + } }) -- cgit v1.2.3