From 06dc09c8da61c06cf571386187dce0995781b6f2 Mon Sep 17 00:00:00 2001 From: pkupczyk <piotr.kupczyk@id.ethz.ch> Date: Thu, 12 Aug 2021 18:17:24 +0200 Subject: [PATCH] SSDM-11506 : Improve initial loading time of NG UI - move the bundle generation to openbis_standard_technologies --- .../public/resources/api/v3/.gitignore | 2 ++ .../public/resources/api/v3/bundle/build.sh | 25 --------------- openbis_ng_ui/build.gradle | 7 ++-- openbis_standard_technologies/.gitignore | 1 + openbis_standard_technologies/build.gradle | 20 ++++++++++-- openbis_standard_technologies/package.json | 8 +++++ .../resource/js/v3/.gitignore | 1 + .../resource/js/v3/build.sh | 32 +++++++++++++++++++ .../resource/js/v3}/config.bundle.template.js | 4 +++ .../resource/js/v3}/r.config.template.js | 1 - .../resource/js/v3}/r.js | 0 11 files changed, 70 insertions(+), 31 deletions(-) create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/.gitignore delete mode 100755 openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/bundle/build.sh create mode 100644 openbis_standard_technologies/package.json create mode 100644 openbis_standard_technologies/resource/js/v3/.gitignore create mode 100755 openbis_standard_technologies/resource/js/v3/build.sh rename {openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/bundle => openbis_standard_technologies/resource/js/v3}/config.bundle.template.js (91%) rename {openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/bundle => openbis_standard_technologies/resource/js/v3}/r.config.template.js (94%) rename {openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/bundle => openbis_standard_technologies/resource/js/v3}/r.js (100%) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/.gitignore b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/.gitignore new file mode 100644 index 00000000000..de4bae125ed --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/.gitignore @@ -0,0 +1,2 @@ +config.bundle.js +openbis.bundle.js \ No newline at end of file diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/bundle/build.sh b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/bundle/build.sh deleted file mode 100755 index 5890b1829bb..00000000000 --- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/bundle/build.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -pushd $(dirname $0) > /dev/null - -# create temporary output folder -rm -rvf output -mkdir output - -# create a list of all *.js files from 'as', 'dss' and 'util' folders -find ../as ../dss ../util -name "*.js" | sed 's/^..\//"/g' | sed 's/.js$/",/g' > output/files.js - -# create config files from their templates by replacing '__FILES__' with a content of 'files.js' -cat r.config.template.js | sed -e '\|__FILES__|{' -e 'r output/files.js' -e 'd' -e '}' > output/r.config.js -cat config.bundle.template.js | sed -e '\|__FILES__|{' -e 'r output/files.js' -e 'd' -e '}' > output/config.bundle.js - -# create a JS bundle with all *.js files -node r.js -o output/r.config.js - -# copy relevant output files to resource folder -cp output/config.bundle.js output/openbis.bundle.js ../ - -# remove temporary output folder -rm -rvf output - -popd > /dev/null \ No newline at end of file diff --git a/openbis_ng_ui/build.gradle b/openbis_ng_ui/build.gradle index e42b1e0fb66..2be6dcbfc18 100644 --- a/openbis_ng_ui/build.gradle +++ b/openbis_ng_ui/build.gradle @@ -5,11 +5,12 @@ buildscript { url "https://plugins.gradle.org/m2/" } } + dependencies { + classpath 'com.moowork.gradle:gradle-node-plugin:1.2.0' + } } -plugins { - id "com.moowork.node" version "1.2.0" -} +apply plugin: "com.moowork.node" configure(allprojects) { apply plugin:'base' diff --git a/openbis_standard_technologies/.gitignore b/openbis_standard_technologies/.gitignore index 44068dcafbe..e88629274f8 100644 --- a/openbis_standard_technologies/.gitignore +++ b/openbis_standard_technologies/.gitignore @@ -1,6 +1,7 @@ /targets /bin /build/ +/node/ /.idea/ *.iml *.eml \ No newline at end of file diff --git a/openbis_standard_technologies/build.gradle b/openbis_standard_technologies/build.gradle index fb17d04db03..e6f6c70be18 100644 --- a/openbis_standard_technologies/build.gradle +++ b/openbis_standard_technologies/build.gradle @@ -6,12 +6,14 @@ buildscript { dependencies { classpath 'apache:commons-codec:1.10', 'owasp:dependency-check-gradle:3.1.2', - 'paleozogt:symzip-plugin:0.10.1' + 'paleozogt:symzip-plugin:0.10.1', + 'com.moowork.gradle:gradle-node-plugin:1.2.0' } } apply plugin: org.owasp.dependencycheck.gradle.DependencyCheckPlugin apply plugin: "org.paleozogt.symzip" +apply plugin: "com.moowork.node" dependencyCheck { failBuildOnCVSS = 7 // 0 - 4 = low, 4 - 7 = medium, 7 - 9 = high, 9-10 = critical @@ -185,7 +187,21 @@ task untarGwt(type: Copy) { into gwtBuildDir } -task copyOpenbisStaticResources(type: Copy, dependsOn: untarGwt) { +node { + download = true + version = '10.22.0' + workDir = file("${projectDir}/node/nodejs") + nodeModulesDir = file("${projectDir}") +} + +task bundleOpenbisStaticResources(type: Exec) { + dependsOn 'untarGwt' + dependsOn 'npmInstall' + commandLine 'bash', '-c', "${projectDir}/resource/js/v3/build.sh" +} + +task copyOpenbisStaticResources(type: Copy) { + dependsOn 'bundleOpenbisStaticResources' from "${project(':openbis').projectDir}/source/java/ch/systemsx/cisd/openbis/public" into gwtModuleBuildDir } diff --git a/openbis_standard_technologies/package.json b/openbis_standard_technologies/package.json new file mode 100644 index 00000000000..c0cb0f5c17f --- /dev/null +++ b/openbis_standard_technologies/package.json @@ -0,0 +1,8 @@ +{ + "name": "dummy-package-json", + "version": "0.0.1", + "description": "This configuration file is required by NodeJS gradle plugin which is used to bundle all JS files together", + "scripts": {}, + "devDependencies": {}, + "dependencies": {} +} diff --git a/openbis_standard_technologies/resource/js/v3/.gitignore b/openbis_standard_technologies/resource/js/v3/.gitignore new file mode 100644 index 00000000000..3602361dafe --- /dev/null +++ b/openbis_standard_technologies/resource/js/v3/.gitignore @@ -0,0 +1 @@ +temp \ No newline at end of file diff --git a/openbis_standard_technologies/resource/js/v3/build.sh b/openbis_standard_technologies/resource/js/v3/build.sh new file mode 100755 index 00000000000..c4e0122053b --- /dev/null +++ b/openbis_standard_technologies/resource/js/v3/build.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +pushd $(dirname $0) > /dev/null + +OPENBIS_STANDARD_TECHNOLOGIES_DIR=../../.. +OPENBIS_DIR=../../../../openbis + +CURRENT_DIR=$(pwd) +TEMP_DIR=${CURRENT_DIR}/temp + +V3_DIR=$OPENBIS_DIR/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3 + +# create an empty temporary folder +rm -rvf $TEMP_DIR +mkdir -p $TEMP_DIR + +# create a list of all *.js files from chosen V3 folders +cd $V3_DIR +find ./as ./dss ./util -name "*.js" | sed 's/^.\//"/g' | sed 's/.js$/",/g' > $TEMP_DIR/files.js + +# create config files from their templates by replacing '__FILES__' with a content of 'files.js' +cd $CURRENT_DIR +cat r.config.template.js | sed -e '\|__FILES__|{' -e "r $TEMP_DIR/files.js" -e 'd' -e '}' > $TEMP_DIR/r.config.js +cat config.bundle.template.js | sed -e '\|__FILES__|{' -e "r $TEMP_DIR/files.js" -e 'd' -e '}' > $TEMP_DIR/config.bundle.js + +# create a JS bundle using NodeJS binary installed by NodeJS gradle plugin +$OPENBIS_STANDARD_TECHNOLOGIES_DIR/node/nodejs/node-*/bin/node r.js -o $TEMP_DIR/r.config.js baseUrl=$V3_DIR + +# copy relevant files to the V3 public folder +cp $TEMP_DIR/config.bundle.js $TEMP_DIR/openbis.bundle.js $V3_DIR + +popd > /dev/null \ No newline at end of file diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/bundle/config.bundle.template.js b/openbis_standard_technologies/resource/js/v3/config.bundle.template.js similarity index 91% rename from openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/bundle/config.bundle.template.js rename to openbis_standard_technologies/resource/js/v3/config.bundle.template.js index f49edcda3be..ac7c455be22 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/bundle/config.bundle.template.js +++ b/openbis_standard_technologies/resource/js/v3/config.bundle.template.js @@ -18,6 +18,10 @@ var require = (function () { baseUrl: getBaseUrl(), bundles: { 'openbis.bundle': [ + 'jquery', + 'stjs', + 'underscore', + 'moment', // __FILES__ // diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/bundle/r.config.template.js b/openbis_standard_technologies/resource/js/v3/r.config.template.js similarity index 94% rename from openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/bundle/r.config.template.js rename to openbis_standard_technologies/resource/js/v3/r.config.template.js index ce3ff84dab8..8e46ef030a6 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/bundle/r.config.template.js +++ b/openbis_standard_technologies/resource/js/v3/r.config.template.js @@ -1,5 +1,4 @@ ({ - baseUrl: '../../', include: [ // __FILES__ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/bundle/r.js b/openbis_standard_technologies/resource/js/v3/r.js similarity index 100% rename from openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/bundle/r.js rename to openbis_standard_technologies/resource/js/v3/r.js -- GitLab