diff mbox series

[v2,4/4] www: Add reworked web page with bootstrap, dropzone and websocket support

Message ID 1518813722-4297-4-git-send-email-stefan@herbrechtsmeier.net
State Changes Requested
Headers show
Series [v2,1/4] ipc: Make char buf pomiter parameter of ipc_inst_start_ext function const | expand

Commit Message

Stefan Herbrechtsmeier Feb. 16, 2018, 8:42 p.m. UTC
From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>

The new web page uses WebSocket for the asynchronous communication with the
backend, allows a visualization of different image sources and automatically
reloads the web page after a connection lost.

Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>

---
The documation isn't finished and the project name swupdate-www
needs to be adapted to the real project name. Furthermore the
images need to be replaced.

Changes in v2:
- Add package task to generate a production package
- Disable the axaj timeout to support large files and slow servers
- Recall delayed tryReload function only if status is not equal timeout
- Enable javascript code fix in npm lint script
- Remove trailing spaces and add newline at end of index.html file
- Add license header to gulfile
- Preserve license comments
- Update Bootstrap to version 4
- Add Font Awesome icons and spinner
- Rework web page design
- Add SPDX license identifier
- Escape detail messages
- Rework JavaScript code
- Use scss to customize bootstrap
- Add css and scss linter
- Add background image
- Rework favicon and logo
- Reorganize web application files
- Rework the documentation

 www2/README.md             |  82 ++++++++++++++++++++++++
 www2/css/swupdate.css      |  32 ++++++++++
 www2/gulpfile.js           | 121 +++++++++++++++++++++++++++++++++++
 www2/images/background.jpg | Bin 0 -> 96114 bytes
 www2/images/favicon.png    | Bin 0 -> 301 bytes
 www2/images/logo.png       | Bin 0 -> 301 bytes
 www2/index.html            | 136 +++++++++++++++++++++++++++++++++++++++
 www2/js/swupdate.js        | 155 +++++++++++++++++++++++++++++++++++++++++++++
 www2/package.json          |  47 ++++++++++++++
 www2/scss/bootstrap.scss   |  18 ++++++
 10 files changed, 591 insertions(+)
 create mode 100644 www2/README.md
 create mode 100644 www2/css/swupdate.css
 create mode 100755 www2/gulpfile.js
 create mode 100755 www2/images/background.jpg
 create mode 100755 www2/images/favicon.png
 create mode 100755 www2/images/logo.png
 create mode 100755 www2/index.html
 create mode 100755 www2/js/swupdate.js
 create mode 100755 www2/package.json
 create mode 100644 www2/scss/bootstrap.scss

Comments

Stefano Babic Feb. 18, 2018, 11:18 a.m. UTC | #1
Hi Stefan,

On 16/02/2018 21:42, stefan@herbrechtsmeier.net wrote:
> From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
> 
> The new web page uses WebSocket for the asynchronous communication with the
> backend, allows a visualization of different image sources and automatically
> reloads the web page after a connection lost.
> 
> Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
> 
> ---
> The documation isn't finished and the project name swupdate-www
> needs to be adapted to the real project name. Furthermore the
> images need to be replaced.

ok, this is just a directive for users.

> 
> Changes in v2:
> - Add package task to generate a production package
> - Disable the axaj timeout to support large files and slow servers
> - Recall delayed tryReload function only if status is not equal timeout
> - Enable javascript code fix in npm lint script
> - Remove trailing spaces and add newline at end of index.html file
> - Add license header to gulfile
> - Preserve license comments
> - Update Bootstrap to version 4
> - Add Font Awesome icons and spinner
> - Rework web page design
> - Add SPDX license identifier
> - Escape detail messages
> - Rework JavaScript code
> - Use scss to customize bootstrap
> - Add css and scss linter
> - Add background image
> - Rework favicon and logo
> - Reorganize web application files
> - Rework the documentation
> 
>  www2/README.md             |  82 ++++++++++++++++++++++++
>  www2/css/swupdate.css      |  32 ++++++++++
>  www2/gulpfile.js           | 121 +++++++++++++++++++++++++++++++++++
>  www2/images/background.jpg | Bin 0 -> 96114 bytes
>  www2/images/favicon.png    | Bin 0 -> 301 bytes
>  www2/images/logo.png       | Bin 0 -> 301 bytes
>  www2/index.html            | 136 +++++++++++++++++++++++++++++++++++++++
>  www2/js/swupdate.js        | 155 +++++++++++++++++++++++++++++++++++++++++++++
>  www2/package.json          |  47 ++++++++++++++
>  www2/scss/bootstrap.scss   |  18 ++++++
>  10 files changed, 591 insertions(+)
>  create mode 100644 www2/README.md
>  create mode 100644 www2/css/swupdate.css
>  create mode 100755 www2/gulpfile.js
>  create mode 100755 www2/images/background.jpg
>  create mode 100755 www2/images/favicon.png
>  create mode 100755 www2/images/logo.png
>  create mode 100755 www2/index.html
>  create mode 100755 www2/js/swupdate.js
>  create mode 100755 www2/package.json
>  create mode 100644 www2/scss/bootstrap.scss
> 
> diff --git a/www2/README.md b/www2/README.md
> new file mode 100644
> index 0000000..85266a4
> --- /dev/null
> +++ b/www2/README.md

See my explanation later about additional repo, I changed my mind. Why
don't we put this into the documentation in .rst format ?

> @@ -0,0 +1,82 @@
> +# SWUpdate Web Application
> +
> +The SWUpdate web application uses the [Node.js](https://nodejs.org/en/) package
> +manager and [gulp](https://gulpjs.com/) as build tool.
> +I depends on [Bootstrap 4](https://getbootstrap.com/),

	s/I depends/It depends/

> +[Font Awesome 5](https://fontawesome.com/) and
> +[Dropzone.js](http://www.dropzonejs.com/).
> +
> +The web application uses WebSocket for the asynchronous communication with the
> +backend, allows a visualization of different image sources, automatically
> +reloads the web page after a connection lost and restarts the system
> +via a post update command.
> +
> +
> +## Install
> +
> +1. Unpack a released `swupdate-www.tar.gz` archive to your `www` direcotry

	s/direcotry/directory/

> +
> +        tar -xzf swupdate-www.tar.gz -C /www
> +

ok, this is something we can tune. I have thought again about adding a
new repo for this, and taking account that the resulting website with
npm has a very small footprint, it is something we can avoid. Addin a
new repo can confuse users. I consider the possibility to add the
resulting website into the examples directory. This makes changes to
support it into meta-swupdate quite trivial. What do you think ?


> +2. Run the web application
> +
> +        swupdate -w "-r /www" -p "reboot"

I would just add a note to inform that the parameters to mongoose server
are changing. Instead of "-document_root" with have just "-r" (root).

> +
> +
> +## Customize
> +
> +You could replace the `logo.png`, `favicon.png` and `background.jpg`

I was impressed from the big logo in the background by starting the
application :-). I was just not used of and layout differs from V1.
Anyway, SWUpdate is growing as project, the image can also grow :-D

> images
> +inside the `images` directory. Furthermore you could customize the Bootstrap
> +colors and settings inside the `scss/bootstrap.scss` file. The latter needs a
> +rebuild of the code.

Fine. This is just what most users need.

> +
> +
> +## Develop
> +
> +1. Clone the code:
> +
> +        git clone https://github.com/sbabic/swupdate-www.git
> +        cd swupdate-www
> +
> +2. Install the dependencies
> +
> +        npm install

I would add a note about npm version. We need a quite new version to
build it.

Current version in LTS distro (I tested in Ubuntu) are very old and
build does not work.

> +
> +3. Build the web application
> +
> +        npm run build
> +
> +4. Run the web application
> +
> +        swupdate -w "-r ./dist" -p "echo reboot"

This implies that swupdate is already instelled on the system and
reached from the path.

> +
> +5. Pack the web application
> +
> +        npm run package

Required ? We have alread "dist" and this is what we have to packed with
meta-swupdate.

> +
> +
> +## Maintainer
> +
> +Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
> +
> +
> +## Contribute
> +
> +You can submit your patches (or post questions regarding the project) to the
> +swupdate Mailing List:
> +
> +    swupdate@googlegroups.com
> +
> +Please read in the corresponding chapter in the SWUpdate documentation
> +how to contribute to the project.
> +
> +Additional run the linter before any commit and add a prefix to the patches
> +
> +    npm run lint
> +
> +    git format-patch -s --subject-prefix='swupdate-www][PATCH' <revision range>
> +
> +
> +## License

I guess this part can be dropped if we let all stuff into the project.
Then the general rules apply and there is already a "contribution" page.

> +
> +MIT
> diff --git a/www2/css/swupdate.css b/www2/css/swupdate.css
> new file mode 100644
> index 0000000..a37d3d1
> --- /dev/null
> +++ b/www2/css/swupdate.css
> @@ -0,0 +1,32 @@
> +/*!
> + * Copyright (C) 2017-2018 Weidmüller Interface GmbH & Co. KG
> + * Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
> + *
> + * SPDX-License-Identifier: MIT
> + */
> +
> +body {
> +  background-attachment: fixed;
> +  background-image: url("../images/background.jpg");
> +  background-position: center;
> +  background-repeat: no-repeat;
> +  background-size: cover;
> +}
> +
> +.dropzone {
> +  background: #ffffff;
> +  background: rgba(255,255,255,0.75);
> +  min-height: 200px;
> +}
> +
> +.dropzone .dz-preview .dz-image {
> +  width: 220px;
> +}
> +
> +[data-toggle="collapse"] i:before {
> +  content: "\f139";
> +}
> +
> +[data-toggle="collapse"].collapsed i:before {
> +  content: "\f13a";
> +}
> diff --git a/www2/gulpfile.js b/www2/gulpfile.js
> new file mode 100755
> index 0000000..a99b460
> --- /dev/null
> +++ b/www2/gulpfile.js
> @@ -0,0 +1,121 @@
> +/*!
> + * Copyright (C) 2017-2018 Weidmüller Interface GmbH & Co. KG
> + * Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
> + *
> + * SPDX-License-Identifier: MIT
> + */
> +
> +var cleanCSS = require('gulp-clean-css')
> +var del = require('del')
> +var gulp = require('gulp')
> +var gzip = require('gulp-gzip')
> +var imagemin = require('gulp-imagemin')
> +var filter = require('gulp-filter')
> +var htmlmin = require('gulp-htmlmin')
> +var minify = require('gulp-minify')
> +var rename = require('gulp-rename')
> +var replace = require('gulp-replace')
> +var sass = require('gulp-sass')
> +var tar = require('gulp-tar')
> +var useref = require('gulp-useref')
> +
> +gulp.task('sass', ['clean'], () => {
> +  return gulp.src('scss/*.scss')
> +    .pipe(sass().on('error', sass.logError))
> +    .pipe(cleanCSS({ compatibility: '*' }))
> +    .pipe(rename({
> +      suffix: '.min'
> +    }))
> +    .pipe(gulp.dest('dist/css'))
> +})
> +
> +gulp.task('minify-css', ['clean'], () => {
> +  return gulp.src('css/*.css')
> +    .pipe(cleanCSS({ compatibility: '*' }))
> +    .pipe(rename({
> +      suffix: '.min'
> +    }))
> +    .pipe(gulp.dest('dist/css'))
> +})
> +
> +gulp.task('minify-js', ['clean'], () => {
> +  return gulp.src('js/*.js')
> +    .pipe(minify({
> +      ext: {
> +        min: '.min.js'
> +      },
> +      noSource: true,
> +      preserveComments: 'some'
> +    }))
> +    .pipe(gulp.dest('dist/js'))
> +})
> +
> +gulp.task('minify-html', ['clean'], () => {
> +  return gulp.src('*.html')
> +    .pipe(replace('node_modules/bootstrap/dist/css', 'css'))
> +    .pipe(useref({ noconcat: true }))
> +    .pipe(filter('*.html'))
> +    .pipe(replace(/node_modules\/.*\/([^/]+)\.css/g, 'css/$1.css'))
> +    .pipe(replace(/node_modules\/.*\/([^/]+)\.js/g, 'js/$1.js'))
> +    .pipe(replace('.css', '.min.css'))
> +    .pipe(replace('.js', '.min.js'))
> +    .pipe(htmlmin({ collapseWhitespace: true }))
> +    .pipe(gulp.dest('dist'))
> +})
> +
> +gulp.task('copy-css', ['clean'], () => {
> +  return gulp.src('*.html')
> +    .pipe(useref({ noconcat: true }))
> +    .pipe(filter('**/*.css'))
> +    .pipe(rename({
> +      dirname: 'css',
> +      suffix: '.min'
> +    }))
> +    .pipe(cleanCSS({ compatibility: '*' }))
> +    .pipe(gulp.dest('dist'))
> +})
> +
> +gulp.task('copy-js', ['clean'], () => {
> +  return gulp.src('*.html')
> +    .pipe(useref({ noconcat: true }))
> +    .pipe(filter('**/*.js'))
> +    .pipe(rename({
> +      dirname: 'js'
> +    }))
> +    .pipe(minify({
> +      ext: {
> +        min: '.min.js'
> +      },
> +      noSource: true,
> +      preserveComments: 'some'
> +    }))
> +    .pipe(gulp.dest('dist'))
> +})
> +
> +gulp.task('copy-fonts', ['clean'], () => {
> +  return gulp.src([
> +    'node_modules/@fortawesome/fontawesome-free-webfonts/webfonts/fa-solid-900.{ttf,woff,woff2}'
> +  ])
> +  .pipe(gulp.dest('dist/webfonts'))
> +})
> +
> +gulp.task('resize-images', ['clean'], () => {
> +  return gulp.src('./images/*')
> +    .pipe(imagemin({ verbose: true }))
> +    .pipe(gulp.dest('./dist/images'))
> +})
> +
> +gulp.task('package', ['build'], () => {
> +  return gulp.src('dist/**')
> +    .pipe(tar('swupdate-www.tar'))
> +    .pipe(gzip())
> +    .pipe(gulp.dest('prod'))
> +})
> +
> +gulp.task('clean', () => {
> +  return del('dist/**', { force: true })
> +})
> +
> +gulp.task('build', ['copy-css', 'copy-js', 'copy-fonts', 'sass', 'minify-css', 'minify-js', 'minify-html', 'resize-images'])
> +
> +gulp.task('default', ['build'])
> diff --git a/www2/images/background.jpg b/www2/images/background.jpg
> new file mode 100755
> index 0000000000000000000000000000000000000000..5cfceda6397ed471dd9a50fb8dd0a850cf089122
> GIT binary patch
> literal 96114
> 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
> 
> literal 0
> HcmV?d00001
> 
> diff --git a/www2/images/favicon.png b/www2/images/favicon.png
> new file mode 100755
> index 0000000000000000000000000000000000000000..04c50a937604e51321891e6f48370d3410cec742
> GIT binary patch
> literal 301
> zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvg8-ipS0GIih_aXA25Mj|3GxeO
> zaCmkj4a7<Ec6VXuV3qX%aySb-B8wRqxP?HN@zUM8KR`kD5>H=O_D4(tTzaY>M18V>
> zLS>#Vjv*T7b0;|p9Z=w4-urdN`fo3PIvnTIGI6l9*yJeLoV@1192p^P$CIrthFuRP
> z-DwMY@My~dUG{tH9!}xD(arR&i){uY(~WG=ie?5EHjnZf|2ma-Gp-VR<XH7raNRMx
> u$(vUv*<EgnPyf@ukat!8CjRLChq+hx+C+1`t853lfWgz%&t;ucLK6T^rBrzU
> 
> literal 0
> HcmV?d00001
> 
> diff --git a/www2/images/logo.png b/www2/images/logo.png
> new file mode 100755
> index 0000000000000000000000000000000000000000..04c50a937604e51321891e6f48370d3410cec742
> GIT binary patch
> literal 301
> zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvg8-ipS0GIih_aXA25Mj|3GxeO
> zaCmkj4a7<Ec6VXuV3qX%aySb-B8wRqxP?HN@zUM8KR`kD5>H=O_D4(tTzaY>M18V>
> zLS>#Vjv*T7b0;|p9Z=w4-urdN`fo3PIvnTIGI6l9*yJeLoV@1192p^P$CIrthFuRP
> z-DwMY@My~dUG{tH9!}xD(arR&i){uY(~WG=ie?5EHjnZf|2ma-Gp-VR<XH7raNRMx
> u$(vUv*<EgnPyf@ukat!8CjRLChq+hx+C+1`t853lfWgz%&t;ucLK6T^rBrzU
> 
> literal 0
> HcmV?d00001
> 
> diff --git a/www2/index.html b/www2/index.html
> new file mode 100755
> index 0000000..1ff2bbb
> --- /dev/null
> +++ b/www2/index.html
> @@ -0,0 +1,136 @@
> +<!doctype html>
> +<html lang="en">
> +
> +<head>
> +  <meta charset="utf-8">
> +  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
> +
> +  <link rel="icon" href="/favicon.png" type="image/png">
> +
> +  <link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.css">
> +  <!-- build:css -->
> +  <link rel="stylesheet" href="node_modules/dropzone/dist/dropzone.css">
> +  <link rel="stylesheet" href="node_modules/@fortawesome/fontawesome-free-webfonts/css/fontawesome.css">
> +  <link rel="stylesheet" href="node_modules/@fortawesome/fontawesome-free-webfonts/css/fa-solid.css">
> +  <link rel="stylesheet" href="css/swupdate.css">
> +  <!-- endbuild -->
> +
> +  <!-- build:js -->
> +  <script src="node_modules/jquery/dist/jquery.js"></script>
> +  <script src="node_modules/bootstrap/dist/js/bootstrap.js"></script>
> +  <script src="node_modules/dropzone/dist/dropzone.js"></script>
> +  <!-- endbuild -->
> +  <script src="js/swupdate.js"></script>
> +
> +  <title>SWUpdate - Software Update for Embedded Systems</title>
> +</head>
> +
> +<body>
> +  <!-- Navigation Header -->
> +  <nav class="navbar sticky-top navbar-expand-sm navbar-dark bg-primary">
> +    <div class="container">
> +      <a class="navbar-brand" href="#">
> +        <img class="d-inline-block align-top" src="images/logo.png" alt="">
> +      </a>
> +      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
> +        <span class="navbar-toggler-icon"></span>
> +      </button>
> +      <div class="collapse navbar-collapse" id="navbarText">
> +        <ul class="navbar-nav ml-auto">
> +          <li class="nav-item">
> +            <a id="swu-restart" class="nav-link" href="#"><i class="fas fa-sync"></i> Restart System</a>
> +          </li>
> +        </ul>
> +      </div>
> +    </div>
> +  </nav>
> +
> +  <!-- Use Bootstrap Grid Container -->
> +  <div class="container">
> +    <!-- Header -->
> +    <div class="jumbotron my-3">
> +      <h1 class="display-4">SWUpdate</h1>
> +      <p class="lead">Software update for embedded systems</p>
> +      <p>Upload an software image below or restart the system at the top right.</p>
> +    </div>
> +
> +    <div class="row my-3">
> +      <div class="col">
> +        <div class="card">
> +          <div class="card-header pb-0">
> +            <h5><i class="fas fa-wrench"></i> Software Update</h5>
> +          </div>
> +          <div class="card-body">
> +            <!-- Dropzone Button for drag&drop files -->
> +            <form class="dropzone border rounded mb-3" id="dropzone" action="/upload" method="post" enctype="multipart/form-data">
> +              <div class="dz-default dz-message">
> +                <span class="dz-message">Click hier or drop a software update image.</span>
> +              </div>
> +            </form>
> +
> +            <!-- Status -->
> +            <div id="swu-idle" class="alert alert-secondary">
> +              <i class="fas fa-info-circle"></i> Update not started
> +            </div>
> +            <div id="swu-run" class="alert alert-warning" style="display: none;">
> +              <i class="fas fa-exclamation-triangle"></i>
> +              Updating may take a few minutes, please don't turn off the power.
> +            </div>
> +            <div id="swu-success" class="alert alert-success" style="display: none;">
> +              <i class="fas fa-check-circle"></i> Successful updated
> +            </div>
> +            <div id="swu-failure" class="alert alert-danger" style="display: none;">
> +              <i class="fas fa-times-circle"></i> Update failed
> +            </div>
> +            <div id="swu-done" class="alert alert-info" style="display: none;">
> +              <i class="fas fa-sync"></i> Restarting system
> +            </div>
> +
> +            <!-- Progress -->
> +            <i id="swu-progress-spinner" class="fas"></i>
> +            <strong id="swu-progress-run" style="display: none;">Updating:</strong>
> +            <span id="swu-progress-name"></span>
> +            <span id="swu-progress-value" class="float-right"></span>
> +            <div class="progress">
> +              <div id="swu-progress-bar" class="progress-bar progress-bar-striped" role="progressbar"></div>
> +            </div>
> +          </div>
> +        </div>
> +      </div>
> +    </div>
> +
> +    <!-- Messages -->
> +    <div class="row my-3">
> +      <div class="col">
> +        <div class="card">
> +          <div class="card-header" id="headingMessages">
> +            <a class="h5 collapsed" data-toggle="collapse" href="#collapseMessages" aria-expanded="false" aria-controls="collapseMessages">
> +              <i class="fas"></i> Messages
> +            </a>
> +          </div>
> +          <div id="collapseMessages" class="collapse" aria-labelledby="headingMessages">
> +            <div class="card-body" id="messages"></div>
> +          </div>
> +        </div>
> +      </div>
> +    </div>
> +
> +    <!-- Restart -->
> +    <div id="swu-restart-modal" class="modal fade" tabindex="-1" role="dialog">
> +      <div class="modal-dialog modal-dialog-centered" role="document">
> +        <div class="modal-content">
> +          <div class="modal-body p-3 mb-2">
> +            <div class="media">
> +              <i class="fas fa-spinner fa-spin fa-3x align-self-center mr-3"></i>
> +              <div class="media-body align-self-center">
> +                <h5 class="mt-0 mb-0">The system will restart. Please be patient, as restarting takes about one minute.</h5>
> +              </div>
> +            </div>
> +          </div>
> +        </div>
> +      </div>
> +    </div>
> +  </div>
> +</body>
> +
> +</html>
> diff --git a/www2/js/swupdate.js b/www2/js/swupdate.js
> new file mode 100755
> index 0000000..f89b47d
> --- /dev/null
> +++ b/www2/js/swupdate.js
> @@ -0,0 +1,155 @@
> +/*!
> + * Copyright (C) 2017-2018 Weidmüller Interface GmbH & Co. KG
> + * Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
> + *
> + * SPDX-License-Identifier: MIT
> + */
> +
> +/* global $, Dropzone, WebSocket */
> +
> +function restart () {
> +  $.post('restart', {}, function (data) {
> +    showRestart()
> +  })
> +}
> +
> +function showRestart () {
> +  $('#swu-restart-modal').modal({backdrop: 'static', keyboard: false})
> +  window.setTimeout(tryReload, 3000)
> +}
> +
> +function tryReload () {
> +  $.ajax({
> +    cache: false,
> +    timeout: 1000,
> +    success: function (response) {
> +      window.location.reload(true)
> +    },
> +    error: function (xhr, textStatus, errorThrown) {
> +      if (textStatus === 'timeout') { tryReload() } else { window.setTimeout(tryReload, 1000) }
> +    }
> +  })
> +}
> +
> +function updateStatus (status) {
> +  $('#swu-idle').hide()
> +  $('#swu-success').hide()
> +  $('#swu-failure').hide()
> +  $('#swu-done').hide()
> +  $('#swu-run').hide()
> +
> +  switch (status) {
> +    case 'IDLE':
> +      $('#swu-idle').show()
> +      break
> +    case 'START':
> +    case 'RUN':
> +      $('#swu-run').show()
> +      break
> +    case 'SUCCESS':
> +      $('#swu-success').show()
> +      break
> +    case 'FAILURE':
> +      $('#swu-failure').show()
> +      break
> +    case 'DONE':
> +      $('#swu-done').show()
> +      break
> +    default:
> +      break
> +  }
> +}
> +
> +var updateProgressBarStatus = (function (status) {
> +  var s = ''
> +
> +  return function (status) {
> +    $('#swu-progress-bar')
> +    .removeClass('bg-danger bg-success progress-bar-animated')
> +    $('#swu-progress-spinner')
> +    .removeClass('fa-spinner fa-spin')
> +    $('#swu-progress-run').hide()
> +
> +    switch (status) {
> +      case 'START':
> +        updateProgressBar(0, '', '')
> +        break
> +      case 'RUN':
> +        $('#swu-progress-bar').addClass('progress-bar-animated')
> +        $('#swu-progress-spinner')
> +          .addClass('fa-spinner fa-spin')
> +        $('#swu-progress-run').show()
> +        break
> +      case 'SUCCESS':
> +        $('#swu-progress-bar')
> +          .addClass('bg-success')
> +        break
> +      case 'FAILURE':
> +        if (s !== 'START' || s !== 'RUN') { updateProgressBar(0, '', '') }
> +        $('#swu-progress-bar')
> +          .addClass('bg-danger')
> +        break
> +      default:
> +        break
> +    }
> +    s = status
> +  }
> +})()
> +
> +function updateProgressBar (percent, name, value) {
> +  $('#swu-progress-value').text(value)
> +  $('#swu-progress-name').text(name)
> +  $('#swu-progress-bar')
> +    .css('width', percent + '%')
> +    .attr('aria-valuenow', percent)
> +}
> +
> +Dropzone.options.dropzone = {
> +  timeout: 0,
> +  clickable: true,
> +  acceptedFiles: '.swu'
> +}
> +
> +window.onload = function () {
> +  var protocol
> +
> +  $('#swu-restart').click(restart)
> +
> +  if (window.location.protocol === 'https:') { protocol = 'wss:' } else { protocol = 'ws:' }
> +
> +  var ws = new WebSocket(protocol + '//' + window.location.host + '/ws')
> +
> +  ws.onopen = function (event) {
> +    updateStatus('IDLE')
> +  }
> +
> +  ws.onclose = function (event) {
> +    showRestart()
> +  }
> +
> +  ws.onmessage = function (event) {
> +    var msg = JSON.parse(event.data)
> +
> +    switch (msg.type) {
> +      case 'message':
> +        var p = $('<p></p>')
> +        p.text(msg.text)
> +        p.addClass('mb-1')
> +        if (msg.level <= 3) { p.addClass('text-danger') }
> +        $('#messages').append(p)
> +        break
> +      case 'status':
> +        updateStatus(msg.status)
> +        updateProgressBarStatus(msg.status)
> +        break
> +      case 'source':
> +        break
> +      case 'step':
> +        var percent = Math.round((100 * (Number(msg.step) - 1) + Number(msg.percent)) / Number(msg.number))
> +        var value = percent + '%' + ' (' + msg.step + ' of ' + msg.number + ')'
> +
> +        updateProgressBar(percent, msg.name, value)
> +        break
> +    }
> +  }
> +}
> diff --git a/www2/package.json b/www2/package.json
> new file mode 100755
> index 0000000..7ded5d0
> --- /dev/null
> +++ b/www2/package.json
> @@ -0,0 +1,47 @@
> +{
> +  "name": "swupdate",
> +  "version": "0.1.0",
> +  "description": "Software Update for Embedded Systems Web Front End",
> +  "main": "index.html",
> +  "scripts": {
> +    "htmlhint": "htmlhint *.html",
> +    "standard": "standard --fix *.js",
> +    "lint": "standard --fix && htmlhint && sass-lint -v scss/* && csslint css/*",
> +    "build": "gulp build",
> +    "package": "gulp package",
> +    "clean": "gulp clean"
> +  },
> +  "author": "Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>",
> +  "license": "MIT",
> +  "devDependencies": {
> +    "csslint": "^1.0.5",
> +    "del": "^3.0.0",
> +    "gulp": "^3.9.1",
> +    "gulp-clean-css": "^3.9.0",
> +    "gulp-filter": "^5.1.0",
> +    "gulp-gzip": "^1.4.1",
> +    "gulp-html-replace": "^1.6.2",
> +    "gulp-htmlmin": "^4.0.0",
> +    "gulp-imagemin": "^4.1.0",
> +    "gulp-minify": "^2.1.0",
> +    "gulp-rename": "^1.2.2",
> +    "gulp-replace": "^0.6.1",
> +    "gulp-sass": "^3.1.0",
> +    "gulp-tar": "^2.1.0",
> +    "gulp-useref": "^3.1.4",
> +    "htmlhint": "^0.9.13",
> +    "sass-lint": "^1.12.1",
> +    "standard": "^10.0.3"
> +  },
> +  "dependencies": {
> +    "@fortawesome/fontawesome-free-webfonts": "^1.0.3",
> +    "bootstrap": "^4.0.0",
> +    "dropzone": "5.2.0",
> +    "jquery": "^3.3.1"
> +  },
> +  "standard": {
> +    "ignore": [
> +      "dist"
> +    ]
> +  }
> +}
> diff --git a/www2/scss/bootstrap.scss b/www2/scss/bootstrap.scss
> new file mode 100644
> index 0000000..c4a4dad
> --- /dev/null
> +++ b/www2/scss/bootstrap.scss
> @@ -0,0 +1,18 @@
> +/*!
> + * Copyright (C) 2017-2018 Weidmüller Interface GmbH & Co. KG
> + * Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
> + *
> + * SPDX-License-Identifier: MIT
> + */
> +
> +$theme-colors: (
> +);
> +
> +$transparent: rgba(255, 255, 255, .75);
> +
> +$jumbotron-bg: $transparent;
> +$card-bg: $transparent;
> +
> +$progress-height: 1.5rem !default;
> +
> +@import 'node_modules/bootstrap/scss/bootstrap';
> 

It looks that this version fixes an issue I saw with V1, that is
"messages" were not updated after first run (or I remember wrong). It
works flawlessly, good job !

Best regards,
Stefano
Herbrechtsmeier Dr.-Ing. , Stefan Feb. 19, 2018, 9:33 a.m. UTC | #2
Hi Stefano,

> -----Ursprüngliche Nachricht-----
> Von: Stefano Babic [mailto:sbabic@denx.de]
> Gesendet: Sonntag, 18. Februar 2018 12:18
> An: stefan@herbrechtsmeier.net; swupdate@googlegroups.com
> Cc: Herbrechtsmeier Dr.-Ing. , Stefan
> <Stefan.Herbrechtsmeier@weidmueller.com>
> Betreff: Re: [swupdate] [PATCH v2 4/4] www: Add reworked web page with
> bootstrap, dropzone and websocket support
>
> On 16/02/2018 21:42, stefan@herbrechtsmeier.net wrote:
> > From: Stefan Herbrechtsmeier
> <stefan.herbrechtsmeier@weidmueller.com>
> >
> > The new web page uses WebSocket for the asynchronous communication
> with the
> > backend, allows a visualization of different image sources and automatically
> > reloads the web page after a connection lost.
> >
> > Signed-off-by: Stefan Herbrechtsmeier
> <stefan.herbrechtsmeier@weidmueller.com>
> >
> > ---
> > The documation isn't finished and the project name swupdate-www
> > needs to be adapted to the real project name. Furthermore the
> > images need to be replaced.
>
> ok, this is just a directive for users.

The images in the example must be replaced also. The line width in the logo and icon are too small. Can you generate the images or send me the vector image of the logo? Furthermore the background image is only a placeholder. It should be replaced by a real image / texture with CC0 copyright or a white image. An example would be https://pixabay.com/de/leiterbahn-platine-technologie-3157431/

> > Changes in v2:
> > - Add package task to generate a production package
> > - Disable the axaj timeout to support large files and slow servers
> > - Recall delayed tryReload function only if status is not equal timeout
> > - Enable javascript code fix in npm lint script
> > - Remove trailing spaces and add newline at end of index.html file
> > - Add license header to gulfile
> > - Preserve license comments
> > - Update Bootstrap to version 4
> > - Add Font Awesome icons and spinner
> > - Rework web page design
> > - Add SPDX license identifier
> > - Escape detail messages
> > - Rework JavaScript code
> > - Use scss to customize bootstrap
> > - Add css and scss linter
> > - Add background image
> > - Rework favicon and logo
> > - Reorganize web application files
> > - Rework the documentation
> >
> >  www2/README.md             |  82 ++++++++++++++++++++++++
> >  www2/css/swupdate.css      |  32 ++++++++++
> >  www2/gulpfile.js           | 121 +++++++++++++++++++++++++++++++++++
> >  www2/images/background.jpg | Bin 0 -> 96114 bytes
> >  www2/images/favicon.png    | Bin 0 -> 301 bytes
> >  www2/images/logo.png       | Bin 0 -> 301 bytes
> >  www2/index.html            | 136
> +++++++++++++++++++++++++++++++++++++++
> >  www2/js/swupdate.js        | 155
> +++++++++++++++++++++++++++++++++++++++++++++
> >  www2/package.json          |  47 ++++++++++++++
> >  www2/scss/bootstrap.scss   |  18 ++++++
> >  10 files changed, 591 insertions(+)
> >  create mode 100644 www2/README.md
> >  create mode 100644 www2/css/swupdate.css
> >  create mode 100755 www2/gulpfile.js
> >  create mode 100755 www2/images/background.jpg
> >  create mode 100755 www2/images/favicon.png
> >  create mode 100755 www2/images/logo.png
> >  create mode 100755 www2/index.html
> >  create mode 100755 www2/js/swupdate.js
> >  create mode 100755 www2/package.json
> >  create mode 100644 www2/scss/bootstrap.scss
> >
> > diff --git a/www2/README.md b/www2/README.md
> > new file mode 100644
> > index 0000000..85266a4
> > --- /dev/null
> > +++ b/www2/README.md
>
> See my explanation later about additional repo, I changed my mind. Why
> don't we put this into the documentation in .rst format ?

If we use the same repo I could move it to the documentation. Otherwise I would only add a small documentation with a link to the other project.

> > @@ -0,0 +1,82 @@
> > +# SWUpdate Web Application
> > +
> > +The SWUpdate web application uses the
> [Node.js](https://nodejs.org/en/) package
> > +manager and [gulp](https://gulpjs.com/) as build tool.
> > +I depends on [Bootstrap 4](https://getbootstrap.com/),
>
>       s/I depends/It depends/

Thank you for the spot. Fixed.

>
> > +[Font Awesome 5](https://fontawesome.com/) and
> > +[Dropzone.js](http://www.dropzonejs.com/).
> > +
> > +The web application uses WebSocket for the asynchronous
> communication with the
> > +backend, allows a visualization of different image sources, automatically
> > +reloads the web page after a connection lost and restarts the system
> > +via a post update command.
> > +
> > +
> > +## Install
> > +
> > +1. Unpack a released `swupdate-www.tar.gz` archive to your `www`
> direcotry
>
>       s/direcotry/directory/
>

Fixed

> > +
> > +        tar -xzf swupdate-www.tar.gz -C /www
> > +
>
> ok, this is something we can tune. I have thought again about adding a
> new repo for this, and taking account that the resulting website with
> npm has a very small footprint, it is something we can avoid. Addin a
> new repo can confuse users. I consider the possibility to add the
> resulting website into the examples directory. This makes changes to
> support it into meta-swupdate quite trivial. What do you think ?

What about the npm project? Do you want to keep it also in the repo?

I see different use cases:
- Use the web application direct (from the examples directory)
- Use the web application (from the examples directory) and replace some images via a bbappend of the swupdate recipes
- Use an adapted web application and replace the whole application via a bbappend or separated recipes.

In the latter case the developer only changes the web application and generate a tar.gz package.

I have rethink about the separation and because the web application need the backend for the development (tests) we should keep the projects together. But in this case we should remove the old www example or move it to the examples directory. Furthermore we should rename the directory of the new web application because www suggest ready to use content.

> > +2. Run the web application
> > +
> > +        swupdate -w "-r /www" -p "reboot"
>
> I would just add a note to inform that the parameters to mongoose server
> are changing. Instead of "-document_root" with have just "-r" (root).

The listing is a "how to get started". We should add a separate section for the webserver with this warning in the documentation.

> > +
> > +
> > +## Customize
> > +
> > +You could replace the `logo.png`, `favicon.png` and `background.jpg`
>
> I was impressed from the big logo in the background by starting the
> application :-). I was just not used of and layout differs from V1.
> Anyway, SWUpdate is growing as project, the image can also grow :-D

:-)

It was only a place holder and should be replaced because it doesn't look nice with the transparent boxes.

> > images
> > +inside the `images` directory. Furthermore you could customize the
> Bootstrap
> > +colors and settings inside the `scss/bootstrap.scss` file. The latter needs a
> > +rebuild of the code.
>
> Fine. This is just what most users need.
>
> > +
> > +
> > +## Develop
> > +
> > +1. Clone the code:
> > +
> > +        git clone https://github.com/sbabic/swupdate-www.git
> > +        cd swupdate-www
> > +
> > +2. Install the dependencies
> > +
> > +        npm install
>
> I would add a note about npm version. We need a quite new version to
> build it.

I will add the minimum required version.

>
> Current version in LTS distro (I tested in Ubuntu) are very old and
> build does not work.

The maintenance for the node.js version ends in April 2018.

> > +
> > +3. Build the web application
> > +
> > +        npm run build
> > +
> > +4. Run the web application
> > +
> > +        swupdate -w "-r ./dist" -p "echo reboot"
>
> This implies that swupdate is already instelled on the system and
> reached from the path.

I will replace it by an relative path and add a comment about a prebuild swupdate above the list.

> > +
> > +5. Pack the web application
> > +
> > +        npm run package
>
> Required ? We have alread "dist" and this is what we have to packed with
> meta-swupdate.

This is needed if somebody customize the project and want to release the changes internal.

> > +
> > +
> > +## Maintainer
> > +
> > +Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
> > +
> > +
> > +## Contribute
> > +
> > +You can submit your patches (or post questions regarding the project) to
> the
> > +swupdate Mailing List:
> > +
> > +    swupdate@googlegroups.com
> > +
> > +Please read in the corresponding chapter in the SWUpdate
> documentation
> > +how to contribute to the project.
> > +
> > +Additional run the linter before any commit and add a prefix to the
> patches
> > +
> > +    npm run lint
> > +
> > +    git format-patch -s --subject-prefix='swupdate-www][PATCH' <revision
> range>
> > +
> > +
> > +## License
>
> I guess this part can be dropped if we let all stuff into the project.
> Then the general rules apply and there is already a "contribution" page.

You are right.

> > +
> > +MIT
> > diff --git a/www2/css/swupdate.css b/www2/css/swupdate.css
> > new file mode 100644
> > index 0000000..a37d3d1

[snip]

> It looks that this version fixes an issue I saw with V1, that is
> "messages" were not updated after first run (or I remember wrong).It
> works flawlessly, good job !

Thanks and best regards

Stefan Herbrechtsmeier
Software Developer Embedded Systems

Weidmüller – Your partner in Industrial Connectivity
We look forward to sharing ideas with you – Let’s connect.

Weidmueller Interface GmbH & Co. KG
Klingenbergstraße 16, 32758 Detmold, Germany
Email: Stefan.Herbrechtsmeier@weidmueller.com – Web: www.weidmueller.com
Stefano Babic Feb. 19, 2018, 11:53 a.m. UTC | #3
Hi Stefan,

On 19/02/2018 10:33, Stefan.Herbrechtsmeier@weidmueller.com wrote:
> Hi Stefano,
> 
>> -----Ursprüngliche Nachricht-----
>> Von: Stefano Babic [mailto:sbabic@denx.de]
>> Gesendet: Sonntag, 18. Februar 2018 12:18
>> An: stefan@herbrechtsmeier.net; swupdate@googlegroups.com
>> Cc: Herbrechtsmeier Dr.-Ing. , Stefan
>> <Stefan.Herbrechtsmeier@weidmueller.com>
>> Betreff: Re: [swupdate] [PATCH v2 4/4] www: Add reworked web page with
>> bootstrap, dropzone and websocket support
>>
>> On 16/02/2018 21:42, stefan@herbrechtsmeier.net wrote:
>>> From: Stefan Herbrechtsmeier
>> <stefan.herbrechtsmeier@weidmueller.com>
>>>
>>> The new web page uses WebSocket for the asynchronous communication
>> with the
>>> backend, allows a visualization of different image sources and automatically
>>> reloads the web page after a connection lost.
>>>
>>> Signed-off-by: Stefan Herbrechtsmeier
>> <stefan.herbrechtsmeier@weidmueller.com>
>>>
>>> ---
>>> The documation isn't finished and the project name swupdate-www
>>> needs to be adapted to the real project name. Furthermore the
>>> images need to be replaced.
>>
>> ok, this is just a directive for users.
> 
> The images in the example must be replaced also. The line width in the logo and icon are too small.

Right, the logo at least. It is small and it is affected by aliasing.

> Can you generate the images or send me the vector image of the logo?

Bad..there is no SVG in the repo. I attach a regenerated SVG from PNG, I
will check if I find the original. I agree that the SVG should be stored
into the repo, too (doc/source/images/ ?).

> Furthermore the background image is only a placeholder. It should be replaced by a real image / texture with CC0 copyright or a white image. An example would be https://pixabay.com/de/leiterbahn-platine-technologie-3157431/

I have tried with an image from SWUpdate's flyer - not bad, very blue. I
have also attached it if you find ok.

> 
>>> Changes in v2:
>>> - Add package task to generate a production package
>>> - Disable the axaj timeout to support large files and slow servers
>>> - Recall delayed tryReload function only if status is not equal timeout
>>> - Enable javascript code fix in npm lint script
>>> - Remove trailing spaces and add newline at end of index.html file
>>> - Add license header to gulfile
>>> - Preserve license comments
>>> - Update Bootstrap to version 4
>>> - Add Font Awesome icons and spinner
>>> - Rework web page design
>>> - Add SPDX license identifier
>>> - Escape detail messages
>>> - Rework JavaScript code
>>> - Use scss to customize bootstrap
>>> - Add css and scss linter
>>> - Add background image
>>> - Rework favicon and logo
>>> - Reorganize web application files
>>> - Rework the documentation
>>>
>>>  www2/README.md             |  82 ++++++++++++++++++++++++
>>>  www2/css/swupdate.css      |  32 ++++++++++
>>>  www2/gulpfile.js           | 121 +++++++++++++++++++++++++++++++++++
>>>  www2/images/background.jpg | Bin 0 -> 96114 bytes
>>>  www2/images/favicon.png    | Bin 0 -> 301 bytes
>>>  www2/images/logo.png       | Bin 0 -> 301 bytes
>>>  www2/index.html            | 136
>> +++++++++++++++++++++++++++++++++++++++
>>>  www2/js/swupdate.js        | 155
>> +++++++++++++++++++++++++++++++++++++++++++++
>>>  www2/package.json          |  47 ++++++++++++++
>>>  www2/scss/bootstrap.scss   |  18 ++++++
>>>  10 files changed, 591 insertions(+)
>>>  create mode 100644 www2/README.md
>>>  create mode 100644 www2/css/swupdate.css
>>>  create mode 100755 www2/gulpfile.js
>>>  create mode 100755 www2/images/background.jpg
>>>  create mode 100755 www2/images/favicon.png
>>>  create mode 100755 www2/images/logo.png
>>>  create mode 100755 www2/index.html
>>>  create mode 100755 www2/js/swupdate.js
>>>  create mode 100755 www2/package.json
>>>  create mode 100644 www2/scss/bootstrap.scss
>>>
>>> diff --git a/www2/README.md b/www2/README.md
>>> new file mode 100644
>>> index 0000000..85266a4
>>> --- /dev/null
>>> +++ b/www2/README.md
>>
>> See my explanation later about additional repo, I changed my mind. Why
>> don't we put this into the documentation in .rst format ?
> 
> If we use the same repo I could move it to the documentation.

+1

> Otherwise I would only add a small documentation with a link to the other project.
> 
>>> @@ -0,0 +1,82 @@
>>> +# SWUpdate Web Application
>>> +
>>> +The SWUpdate web application uses the
>> [Node.js](https://nodejs.org/en/) package
>>> +manager and [gulp](https://gulpjs.com/) as build tool.
>>> +I depends on [Bootstrap 4](https://getbootstrap.com/),
>>
>>       s/I depends/It depends/
> 
> Thank you for the spot. Fixed.
> 
>>
>>> +[Font Awesome 5](https://fontawesome.com/) and
>>> +[Dropzone.js](http://www.dropzonejs.com/).
>>> +
>>> +The web application uses WebSocket for the asynchronous
>> communication with the
>>> +backend, allows a visualization of different image sources, automatically
>>> +reloads the web page after a connection lost and restarts the system
>>> +via a post update command.
>>> +
>>> +
>>> +## Install
>>> +
>>> +1. Unpack a released `swupdate-www.tar.gz` archive to your `www`
>> direcotry
>>
>>       s/direcotry/directory/
>>
> 
> Fixed
> 
>>> +
>>> +        tar -xzf swupdate-www.tar.gz -C /www
>>> +
>>
>> ok, this is something we can tune. I have thought again about adding a
>> new repo for this, and taking account that the resulting website with
>> npm has a very small footprint, it is something we can avoid. Addin a
>> new repo can confuse users. I consider the possibility to add the
>> resulting website into the examples directory. This makes changes to
>> support it into meta-swupdate quite trivial. What do you think ?
> 
> What about the npm project? Do you want to keep it also in the repo?
> 

Yes. This lets also write a recipe for the website with "inherit npm".
It should be not the default case, because I know support for nodejs is
in OE sometimes tricky, and Ilkka's repo does not contain all branches
as in Yocto, most goes just into master.

But we could have a swupdate-www package that is built directly from
source after running "npm run build"

> I see different use cases:
> - Use the web application direct (from the examples directory)
> - Use the web application (from the examples directory) and replace some images via a bbappend of the swupdate recipes

The use case affects at least 90% of users. I put the few pages in www
as an example to be extended, expecting that they were high reworked to
better fit products. But time shows me that I was wrong, and sustomers /
users are just taking this example as it is and they just replace the Logo.

I am expecting the same for the future. That means, if we put the
results in examples/, we can add a a package for it in SWUpdate's recipe
and most users are happy with their .bbappend.


> - Use an adapted web application and replace the whole application via a bbappend or separated recipes.

I would like to have this, too, that the reason to add the www with the
documentation you provide to start with Web Development.

> 
> In the latter case the developer only changes the web application and generate a tar.gz package.
> 
> I have rethink about the separation and because the web application need the backend for the development (tests) we should keep the projects together.

+1

> But in this case we should remove the old www example or move it to the examples directory.

+1

It was my idea, too. Something like examples/www/legacy for the old one,
and examples/www/current (or whatever) for the new one.

> Furthermore we should rename the directory of the new web application because www suggest ready to use content.

Yes, it should be www again.

> 
>>> +2. Run the web application
>>> +
>>> +        swupdate -w "-r /www" -p "reboot"
>>
>> I would just add a note to inform that the parameters to mongoose server
>> are changing. Instead of "-document_root" with have just "-r" (root).
> 
> The listing is a "how to get started". We should add a separate section for the webserver with this warning in the documentation.

ok

> 
>>> +
>>> +
>>> +## Customize
>>> +
>>> +You could replace the `logo.png`, `favicon.png` and `background.jpg`
>>
>> I was impressed from the big logo in the background by starting the
>> application :-). I was just not used of and layout differs from V1.
>> Anyway, SWUpdate is growing as project, the image can also grow :-D
> 
> :-)
> 
> It was only a place holder and should be replaced because it doesn't look nice with the transparent boxes.

ok

> 
>>> images
>>> +inside the `images` directory. Furthermore you could customize the
>> Bootstrap
>>> +colors and settings inside the `scss/bootstrap.scss` file. The latter needs a
>>> +rebuild of the code.
>>
>> Fine. This is just what most users need.
>>
>>> +
>>> +
>>> +## Develop
>>> +
>>> +1. Clone the code:
>>> +
>>> +        git clone https://github.com/sbabic/swupdate-www.git
>>> +        cd swupdate-www
>>> +
>>> +2. Install the dependencies
>>> +
>>> +        npm install
>>
>> I would add a note about npm version. We need a quite new version to
>> build it.
> 
> I will add the minimum required version.
> 
>>
>> Current version in LTS distro (I tested in Ubuntu) are very old and
>> build does not work.
> 
> The maintenance for the node.js version ends in April 2018.
> 
>>> +
>>> +3. Build the web application
>>> +
>>> +        npm run build
>>> +
>>> +4. Run the web application
>>> +
>>> +        swupdate -w "-r ./dist" -p "echo reboot"
>>
>> This implies that swupdate is already instelled on the system and
>> reached from the path.
> 
> I will replace it by an relative path and add a comment about a prebuild swupdate above the list.
> 
>>> +
>>> +5. Pack the web application
>>> +
>>> +        npm run package
>>
>> Required ? We have alread "dist" and this is what we have to packed with
>> meta-swupdate.
> 
> This is needed if somebody customize the project and want to release the changes internal.
> 
>>> +
>>> +
>>> +## Maintainer
>>> +
>>> +Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
>>> +
>>> +
>>> +## Contribute
>>> +
>>> +You can submit your patches (or post questions regarding the project) to
>> the
>>> +swupdate Mailing List:
>>> +
>>> +    swupdate@googlegroups.com
>>> +
>>> +Please read in the corresponding chapter in the SWUpdate
>> documentation
>>> +how to contribute to the project.
>>> +
>>> +Additional run the linter before any commit and add a prefix to the
>> patches
>>> +
>>> +    npm run lint
>>> +
>>> +    git format-patch -s --subject-prefix='swupdate-www][PATCH' <revision
>> range>
>>> +
>>> +
>>> +## License
>>
>> I guess this part can be dropped if we let all stuff into the project.
>> Then the general rules apply and there is already a "contribution" page.
> 
> You are right.
> 
>>> +
>>> +MIT
>>> diff --git a/www2/css/swupdate.css b/www2/css/swupdate.css
>>> new file mode 100644
>>> index 0000000..a37d3d1
> 
> [snip]
> 
>> It looks that this version fixes an issue I saw with V1, that is
>> "messages" were not updated after first run (or I remember wrong).It
>> works flawlessly, good job !
> 
> Thanks and best regards
> 

Best regards,
Stefano Babic
Storm, Christian Feb. 19, 2018, 12:53 p.m. UTC | #4
Hi Stefano,

> [...]
> > Can you generate the images or send me the vector image of the logo?
> 
> Bad..there is no SVG in the repo. I attach a regenerated SVG from PNG, I
> will check if I find the original.

Wow, that's quite large: 15K. I happened to recreate an SVG version
of the logo myself, find it attached. It's 3.3K in case you don't
find the original source... Don't know if that reflects the PNG logo
in the same beauty as yours though...


Kind regards,
   Christian
Herbrechtsmeier Dr.-Ing. , Stefan Feb. 19, 2018, 2:04 p.m. UTC | #5
Hi Stefano,

> -----Ursprüngliche Nachricht-----
> Von: Stefano Babic [mailto:sbabic@denx.de]
> Gesendet: Montag, 19. Februar 2018 12:53
> An: Herbrechtsmeier Dr.-Ing. , Stefan
> <Stefan.Herbrechtsmeier@weidmueller.com>; sbabic@denx.de;
> stefan@herbrechtsmeier.net; swupdate@googlegroups.com
> Betreff: Re: AW: [swupdate] [PATCH v2 4/4] www: Add reworked web page
> with bootstrap, dropzone and websocket support
>
> On 19/02/2018 10:33, Stefan.Herbrechtsmeier@weidmueller.com wrote:
> > Hi Stefano,
> >
> >> -----Ursprüngliche Nachricht-----
> >> Von: Stefano Babic [mailto:sbabic@denx.de]
> >> Gesendet: Sonntag, 18. Februar 2018 12:18
> >> An: stefan@herbrechtsmeier.net; swupdate@googlegroups.com
> >> Cc: Herbrechtsmeier Dr.-Ing. , Stefan
> >> <Stefan.Herbrechtsmeier@weidmueller.com>
> >> Betreff: Re: [swupdate] [PATCH v2 4/4] www: Add reworked web page
> >> with bootstrap, dropzone and websocket support
> >>
> >> On 16/02/2018 21:42, stefan@herbrechtsmeier.net wrote:
> >>> From: Stefan Herbrechtsmeier
> >> <stefan.herbrechtsmeier@weidmueller.com>
> >>>
> >>> The new web page uses WebSocket for the asynchronous
> communication
> >> with the
> >>> backend, allows a visualization of different image sources and
> >>> automatically reloads the web page after a connection lost.
> >>>
> >>> Signed-off-by: Stefan Herbrechtsmeier
> >> <stefan.herbrechtsmeier@weidmueller.com>
> >>>
> >>> ---
> >>> The documation isn't finished and the project name swupdate-www
> >>> needs to be adapted to the real project name. Furthermore the images
> >>> need to be replaced.
> >>
> >> ok, this is just a directive for users.
> >
> > The images in the example must be replaced also. The line width in the logo
> and icon are too small.
>
> Right, the logo at least. It is small and it is affected by aliasing.
>
> > Can you generate the images or send me the vector image of the logo?
>
> Bad..there is no SVG in the repo. I attach a regenerated SVG from PNG, I will
> check if I find the original. I agree that the SVG should be stored into the
> repo, too (doc/source/images/ ?).

This would be nice. But I fear the logo need some rework because it doesn't scale very well.

> > Furthermore the background image is only a placeholder. It should be
> > replaced by a real image / texture with CC0 copyright or a white
> > image. An example would be
> > https://pixabay.com/de/leiterbahn-platine-technologie-3157431/
>
> I have tried with an image from SWUpdate's flyer - not bad, very blue. I have
> also attached it if you find ok.

I would remove the text and perspective and may be use a lighter blue. Furthermore it need a higher resolution and you need to clarify the copyright.

> >>> Changes in v2:
> >>> - Add package task to generate a production package
> >>> - Disable the axaj timeout to support large files and slow servers
> >>> - Recall delayed tryReload function only if status is not equal
> >>> timeout
> >>> - Enable javascript code fix in npm lint script
> >>> - Remove trailing spaces and add newline at end of index.html file
> >>> - Add license header to gulfile
> >>> - Preserve license comments
> >>> - Update Bootstrap to version 4
> >>> - Add Font Awesome icons and spinner
> >>> - Rework web page design
> >>> - Add SPDX license identifier
> >>> - Escape detail messages
> >>> - Rework JavaScript code
> >>> - Use scss to customize bootstrap
> >>> - Add css and scss linter
> >>> - Add background image
> >>> - Rework favicon and logo
> >>> - Reorganize web application files
> >>> - Rework the documentation
> >>>
> >>>  www2/README.md             |  82 ++++++++++++++++++++++++
> >>>  www2/css/swupdate.css      |  32 ++++++++++
> >>>  www2/gulpfile.js           | 121
> +++++++++++++++++++++++++++++++++++
> >>>  www2/images/background.jpg | Bin 0 -> 96114 bytes
> >>>  www2/images/favicon.png    | Bin 0 -> 301 bytes
> >>>  www2/images/logo.png       | Bin 0 -> 301 bytes
> >>>  www2/index.html            | 136
> >> +++++++++++++++++++++++++++++++++++++++
> >>>  www2/js/swupdate.js        | 155
> >> +++++++++++++++++++++++++++++++++++++++++++++
> >>>  www2/package.json          |  47 ++++++++++++++
> >>>  www2/scss/bootstrap.scss   |  18 ++++++
> >>>  10 files changed, 591 insertions(+)  create mode 100644
> >>> www2/README.md  create mode 100644 www2/css/swupdate.css
> create
> >>> mode 100755 www2/gulpfile.js  create mode 100755
> >>> www2/images/background.jpg  create mode 100755
> >>> www2/images/favicon.png  create mode 100755
> www2/images/logo.png
> >>> create mode 100755 www2/index.html  create mode 100755
> >>> www2/js/swupdate.js  create mode 100755 www2/package.json  create
> >>> mode 100644 www2/scss/bootstrap.scss
> >>>
> >>> diff --git a/www2/README.md b/www2/README.md new file mode
> 100644
> >>> index 0000000..85266a4
> >>> --- /dev/null
> >>> +++ b/www2/README.md
> >>
> >> See my explanation later about additional repo, I changed my mind. Why
> >> don't we put this into the documentation in .rst format ?
> >
> > If we use the same repo I could move it to the documentation.
>
> +1
>
> > Otherwise I would only add a small documentation with a link to the other
> project.
> >
> >>> @@ -0,0 +1,82 @@
> >>> +# SWUpdate Web Application
> >>> +
> >>> +The SWUpdate web application uses the
> >> [Node.js](https://nodejs.org/en/) package
> >>> +manager and [gulp](https://gulpjs.com/) as build tool.
> >>> +I depends on [Bootstrap 4](https://getbootstrap.com/),
> >>
> >>       s/I depends/It depends/
> >
> > Thank you for the spot. Fixed.
> >
> >>
> >>> +[Font Awesome 5](https://fontawesome.com/) and
> >>> +[Dropzone.js](http://www.dropzonejs.com/).
> >>> +
> >>> +The web application uses WebSocket for the asynchronous
> >> communication with the
> >>> +backend, allows a visualization of different image sources,
> automatically
> >>> +reloads the web page after a connection lost and restarts the system
> >>> +via a post update command.
> >>> +
> >>> +
> >>> +## Install
> >>> +
> >>> +1. Unpack a released `swupdate-www.tar.gz` archive to your `www`
> >> direcotry
> >>
> >>       s/direcotry/directory/
> >>
> >
> > Fixed
> >
> >>> +
> >>> +        tar -xzf swupdate-www.tar.gz -C /www
> >>> +
> >>
> >> ok, this is something we can tune. I have thought again about adding a
> >> new repo for this, and taking account that the resulting website with
> >> npm has a very small footprint, it is something we can avoid. Addin a
> >> new repo can confuse users. I consider the possibility to add the
> >> resulting website into the examples directory. This makes changes to
> >> support it into meta-swupdate quite trivial. What do you think ?
> >
> > What about the npm project? Do you want to keep it also in the repo?
> >
>
> Yes. This lets also write a recipe for the website with "inherit npm".
> It should be not the default case, because I know support for nodejs is
> in OE sometimes tricky, and Ilkka's repo does not contain all branches
> as in Yocto, most goes just into master.

I don't like the current npm integration. The whole implementation bypass most of the OE features and doesn't works correct. The web application needs npm only for the dependencies and generates all needed files in the dist directory. At the end the whole node_modules directory could be removed and most of the collected license information don't matter for the distributed code.

It is much easier to generate a tar.gz package and publish the package somewhere. This package can be fetched by OE and simple unpacked to the desired directory.

> But we could have a swupdate-www package that is built directly from
> source after running "npm run build"
>
> > I see different use cases:
> > - Use the web application direct (from the examples directory)
> > - Use the web application (from the examples directory) and replace some
> images via a bbappend of the swupdate recipes
>
> The use case affects at least 90% of users. I put the few pages in www
> as an example to be extended, expecting that they were high reworked to
> better fit products. But time shows me that I was wrong, and sustomers /
> users are just taking this example as it is and they just replace the Logo.
>
> I am expecting the same for the future. That means, if we put the
> results in examples/, we can add a a package for it in SWUpdate's recipe
> and most users are happy with their .bbappend.

Maybe the recipe could check for the image files in the WORKDIR and if available copy them over the example files. This would minimize the bbappend to a simple append of the SCR_URI.

> > - Use an adapted web application and replace the whole application via a
> bbappend or separated recipes.
>
> I would like to have this, too, that the reason to add the www with the
> documentation you provide to start with Web Development.
>
> >
> > In the latter case the developer only changes the web application and
> generate a tar.gz package.
> >
> > I have rethink about the separation and because the web application need
> the backend for the development (tests) we should keep the projects
> together.
>
> +1
>
> > But in this case we should remove the old www example or move it to the
> examples directory.
>
> +1
>
> It was my idea, too. Something like examples/www/legacy for the old one,
> and examples/www/current (or whatever) for the new one.

What about the version numbers (v1 / v2)  to match with the Config.

>
> > Furthermore we should rename the directory of the new web application
> because www suggest ready to use content.
>
> Yes, it should be www again.

I would rename it to web-app to make clear that you could not simple copy the content to your www directory.

[snip]

Best regards

Stefan Herbrechtsmeier
Software Developer Embedded Systems

Weidmüller – Your partner in Industrial Connectivity
We look forward to sharing ideas with you – Let’s connect.

Weidmueller Interface GmbH & Co. KG
Klingenbergstraße 16, 32758 Detmold, Germany
Email: Stefan.Herbrechtsmeier@weidmueller.com – Web: www.weidmueller.com
Stefano Babic Feb. 19, 2018, 2:46 p.m. UTC | #6
Hi Stefan,

On 19/02/2018 15:04, Stefan.Herbrechtsmeier@weidmueller.com wrote:
> Hi Stefano,
> 

[snip]


>>> The images in the example must be replaced also. The line width in the logo
>> and icon are too small.
>>
>> Right, the logo at least. It is small and it is affected by aliasing.
>>
>>> Can you generate the images or send me the vector image of the logo?
>>
>> Bad..there is no SVG in the repo. I attach a regenerated SVG from PNG, I will
>> check if I find the original. I agree that the SVG should be stored into the
>> repo, too (doc/source/images/ ?).
> 
> This would be nice. But I fear the logo need some rework because it doesn't scale very well.

Check if the SVG sent by Christian can fit.

> 
>>> Furthermore the background image is only a placeholder. It should be
>>> replaced by a real image / texture with CC0 copyright or a white
>>> image. An example would be
>>> https://pixabay.com/de/leiterbahn-platine-technologie-3157431/
>>
>> I have tried with an image from SWUpdate's flyer - not bad, very blue. I have
>> also attached it if you find ok.
> 
> I would remove the text and perspective and may be use a lighter blue. Furthermore it need a higher resolution and you need to clarify the copyright.

Wolfgang in CC is one of the author of image. The copyright is one
thing, the second one is the license. Do you have any proposal for a
Picture's license  inside a FOSS project ? As the rest of software, we
should add a meaningful license for the file.

>> Yes. This lets also write a recipe for the website with "inherit npm".
>> It should be not the default case, because I know support for nodejs is
>> in OE sometimes tricky, and Ilkka's repo does not contain all branches
>> as in Yocto, most goes just into master.
> 
> I don't like the current npm integration. The whole implementation bypass most of the OE features and doesn't works correct. 

Yes, I mentioned that it is "tricky" ;-)

>The web application needs npm only for the dependencies and generates all needed files in the dist directory. At the end the whole node_modules directory could be removed and most of the collected license information don't >matter for the distributed code.
> 
> It is much easier to generate a tar.gz package and publish the package somewhere. This package can be fetched by OE and simple unpacked to the desired directory.

ok - then we go for this way. We let code in to allow users to build
themselves, but we stored the ready to use result.

> 
>> But we could have a swupdate-www package that is built directly from
>> source after running "npm run build"
>>
>>> I see different use cases:
>>> - Use the web application direct (from the examples directory)
>>> - Use the web application (from the examples directory) and replace some
>> images via a bbappend of the swupdate recipes
>>
>> The use case affects at least 90% of users. I put the few pages in www
>> as an example to be extended, expecting that they were high reworked to
>> better fit products. But time shows me that I was wrong, and sustomers /
>> users are just taking this example as it is and they just replace the Logo.
>>
>> I am expecting the same for the future. That means, if we put the
>> results in examples/, we can add a a package for it in SWUpdate's recipe
>> and most users are happy with their .bbappend.
> 
> Maybe the recipe could check for the image files in the WORKDIR and if available copy them over the example files. This would minimize the bbappend to a simple append of the SCR_URI.

Well, but this is not automatically done by bitbake ? If I add files in
SRC_URI in a bbappend, they replace the original ones. We get this
without effort in OE.

> 
>>> - Use an adapted web application and replace the whole application via a
>> bbappend or separated recipes.
>>
>> I would like to have this, too, that the reason to add the www with the
>> documentation you provide to start with Web Development.
>>
>>>
>>> In the latter case the developer only changes the web application and
>> generate a tar.gz package.
>>>
>>> I have rethink about the separation and because the web application need
>> the backend for the development (tests) we should keep the projects
>> together.
>>
>> +1
>>
>>> But in this case we should remove the old www example or move it to the
>> examples directory.
>>
>> +1
>>
>> It was my idea, too. Something like examples/www/legacy for the old one,
>> and examples/www/current (or whatever) for the new one.
> 
> What about the version numbers (v1 / v2)  to match with the Config.

Fine with me.

> 
>>
>>> Furthermore we should rename the directory of the new web application
>> because www suggest ready to use content.
>>
>> Yes, it should be www again.
> 
> I would rename it to web-app to make clear that you could not simple copy the content to your www directory.

ok, agree.

Best regards,
Stefano Babic
Herbrechtsmeier Dr.-Ing. , Stefan Feb. 19, 2018, 3:16 p.m. UTC | #7
Hi Stefano,

> -----Ursprüngliche Nachricht-----
> Von: Stefano Babic [mailto:sbabic@denx.de]
> Gesendet: Montag, 19. Februar 2018 15:47
> An: Herbrechtsmeier Dr.-Ing. , Stefan
> <Stefan.Herbrechtsmeier@weidmueller.com>; sbabic@denx.de;
> stefan@herbrechtsmeier.net; swupdate@googlegroups.com
> Cc: Wolfgang Denk <wd@denx.de>
> Betreff: Re: AW: AW: [swupdate] [PATCH v2 4/4] www: Add reworked web
> page with bootstrap, dropzone and websocket support
>
> On 19/02/2018 15:04, Stefan.Herbrechtsmeier@weidmueller.com wrote:
>
> [snip]
>
>
> >>> The images in the example must be replaced also. The line width in
> >>> the logo
> >> and icon are too small.
> >>
> >> Right, the logo at least. It is small and it is affected by aliasing.
> >>
> >>> Can you generate the images or send me the vector image of the logo?
> >>
> >> Bad..there is no SVG in the repo. I attach a regenerated SVG from
> >> PNG, I will check if I find the original. I agree that the SVG should
> >> be stored into the repo, too (doc/source/images/ ?).
> >
> > This would be nice. But I fear the logo need some rework because it
> doesn't scale very well.
>
> Check if the SVG sent by Christian can fit.

I will check.

> >>> Furthermore the background image is only a placeholder. It should be
> >>> replaced by a real image / texture with CC0 copyright or a white
> >>> image. An example would be
> >>> https://pixabay.com/de/leiterbahn-platine-technologie-3157431/
> >>
> >> I have tried with an image from SWUpdate's flyer - not bad, very
> >> blue. I have also attached it if you find ok.
> >
> > I would remove the text and perspective and may be use a lighter blue.
> Furthermore it need a higher resolution and you need to clarify the
> copyright.
>
> Wolfgang in CC is one of the author of image. The copyright is one thing, the
> second one is the license. Do you have any proposal for a Picture's license
> inside a FOSS project ? As the rest of software, we should add a meaningful
> license for the file.

I think for an image you should use a Creative Commons license.

[snip]

> >>> I see different use cases:
> >>> - Use the web application direct (from the examples directory)
> >>> - Use the web application (from the examples directory) and replace
> >>> some
> >> images via a bbappend of the swupdate recipes
> >>
> >> The use case affects at least 90% of users. I put the few pages in
> >> www as an example to be extended, expecting that they were high
> >> reworked to better fit products. But time shows me that I was wrong,
> >> and sustomers / users are just taking this example as it is and they just
> replace the Logo.
> >>
> >> I am expecting the same for the future. That means, if we put the
> >> results in examples/, we can add a a package for it in SWUpdate's
> >> recipe and most users are happy with their .bbappend.
> >
> > Maybe the recipe could check for the image files in the WORKDIR and if
> available copy them over the example files. This would minimize the
> bbappend to a simple append of the SCR_URI.
>
> Well, but this is not automatically done by bitbake ? If I add files in SRC_URI in
> a bbappend, they replace the original ones. We get this without effort in OE.

A simple bbappend with the following content should work:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"

SRC_URI_append = "\
    file://background.jpg \
    file://favicon.png \
    file://logo.png \
"

And something like the following in the bb:
do_install_append () {
    for IMG in background.jpg favicon.png logo.png; do
        if [ -e ${WORKDIR}/${IMG} ] ; then
            rm ${D}/www/images/${IMG}
            install -m 644 ${WORKDIR}/${IMG} ${D}/www/images/
        fi
    done
}

Best regards

Stefan Herbrechtsmeier
Software Developer Embedded Systems

Weidmüller – Your partner in Industrial Connectivity
We look forward to sharing ideas with you – Let’s connect.

Weidmueller Interface GmbH & Co. KG
Klingenbergstraße 16, 32758 Detmold, Germany
Email: Stefan.Herbrechtsmeier@weidmueller.com – Web: www.weidmueller.com
Wolfgang Denk Feb. 19, 2018, 3:46 p.m. UTC | #8
Dear Stefan,

In message <531ADB0D40411F4DAE16FC92133DDBF12D353BD2@SRVDE355.weidmueller.com> you wrote:
> 
> > Wolfgang in CC is one of the author of image. The copyright is one thing, the
> > second one is the license. Do you have any proposal for a Picture's license
> > inside a FOSS project ? As the rest of software, we should add a meaningful
> > license for the file.
> 
> I think for an image you should use a Creative Commons license.

Do you have a recommendation?  I feel we should allow unrestricted
distribution and use, but I don't want to allow modifications.

At first glance, Attribution-NoDerivatives 4.0 International (CC
BY-ND 4.0) seems to provide exactly that, except on closer look you
still can "roduce and reproduce, but not Share, Adapted Material"
(section 2(a)(1)(B)).

So what I'm looking for is something like "CC BY-ND 4.0 without 2(a)(1)(B).

Is there such a thing?

Best regards,

Wolfgang Denk
Herbrechtsmeier Dr.-Ing. , Stefan Feb. 19, 2018, 4:46 p.m. UTC | #9
Hi Wolfgang,

> -----Ursprüngliche Nachricht-----
> Von: Wolfgang Denk [mailto:wd@denx.de]
> Gesendet: Montag, 19. Februar 2018 16:47
> An: Herbrechtsmeier Dr.-Ing. , Stefan
> <Stefan.Herbrechtsmeier@weidmueller.com>
> Cc: sbabic@denx.de; stefan@herbrechtsmeier.net;
> swupdate@googlegroups.com
> Betreff: Re: AW: AW: AW: [swupdate] [PATCH v2 4/4] www: Add reworked
> web page with bootstrap, dropzone and websocket support
>
> In message
> <531ADB0D40411F4DAE16FC92133DDBF12D353BD2@SRVDE355.weidmueller.
> com> you wrote:
> >
> > > Wolfgang in CC is one of the author of image. The copyright is one
> > > thing, the second one is the license. Do you have any proposal for a
> > > Picture's license inside a FOSS project ? As the rest of software,
> > > we should add a meaningful license for the file.
> >
> > I think for an image you should use a Creative Commons license.
>
> Do you have a recommendation?  I feel we should allow unrestricted
> distribution and use, but I don't want to allow modifications.
>
> At first glance, Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0)
> seems to provide exactly that, except on closer look you still can "roduce and
> reproduce, but not Share, Adapted Material"
> (section 2(a)(1)(B)).

This allows you to manipulate  the image (produce a Adapted Material) without the right to use (Share) the manipulated image. In practical this means that you can do what you want with the image if you don't show it to someone else.

> So what I'm looking for is something like "CC BY-ND 4.0 without 2(a)(1)(B).

The problem I see is the question what is an "Adapted Material". Does the web application with the boxes overlaying the image are already an "Adapted Material"? Furthermore how should we provide the name of the creator and attribution parties, a copyright notice, a license notice, a disclaimer notice, and a link to the material inside the web application. At the moment we have no visible license information inside the web application. Therefore I would prefer to use a CC0 image.

This leads me to the question what is the license of the SWUpdate logo?

Please keep in mind that my company use its own images in the web application. I only need some appropriated default images for other users.

Best regards

Stefan Herbrechtsmeier
Software Developer Embedded Systems

Weidmüller – Your partner in Industrial Connectivity
We look forward to sharing ideas with you – Let’s connect.

Weidmueller Interface GmbH & Co. KG
Klingenbergstraße 16, 32758 Detmold, Germany
Email: Stefan.Herbrechtsmeier@weidmueller.com – Web: www.weidmueller.com
Stefano Babic Feb. 19, 2018, 7:24 p.m. UTC | #10
Hi Stefan,

On 19/02/2018 17:46, Stefan.Herbrechtsmeier@weidmueller.com wrote:
> Hi Wolfgang,
> 
>> -----Ursprüngliche Nachricht-----
>> Von: Wolfgang Denk [mailto:wd@denx.de]
>> Gesendet: Montag, 19. Februar 2018 16:47
>> An: Herbrechtsmeier Dr.-Ing. , Stefan
>> <Stefan.Herbrechtsmeier@weidmueller.com>
>> Cc: sbabic@denx.de; stefan@herbrechtsmeier.net;
>> swupdate@googlegroups.com
>> Betreff: Re: AW: AW: AW: [swupdate] [PATCH v2 4/4] www: Add reworked
>> web page with bootstrap, dropzone and websocket support
>>
>> In message
>> <531ADB0D40411F4DAE16FC92133DDBF12D353BD2@SRVDE355.weidmueller.
>> com> you wrote:
>>>
>>>> Wolfgang in CC is one of the author of image. The copyright is one
>>>> thing, the second one is the license. Do you have any proposal for a
>>>> Picture's license inside a FOSS project ? As the rest of software,
>>>> we should add a meaningful license for the file.
>>>
>>> I think for an image you should use a Creative Commons license.
>>
>> Do you have a recommendation?  I feel we should allow unrestricted
>> distribution and use, but I don't want to allow modifications.
>>
>> At first glance, Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0)
>> seems to provide exactly that, except on closer look you still can "roduce and
>> reproduce, but not Share, Adapted Material"
>> (section 2(a)(1)(B)).
> 
> This allows you to manipulate  the image (produce a Adapted Material) without the right to use (Share) the manipulated image. In practical this means that you can do what you want with the image if you don't show it to someone else.
> 
>> So what I'm looking for is something like "CC BY-ND 4.0 without 2(a)(1)(B).
> 
> The problem I see is the question what is an "Adapted Material". Does the web application with the boxes overlaying the image are already an "Adapted Material"? Furthermore how should we provide the name of the creator and attribution parties, a copyright notice, a license notice, a disclaimer notice, and a link to the material inside the web application. At the moment we have no visible license information inside the web application. Therefore I would prefer to use a CC0 image.
> 
> This leads me to the question what is the license of the SWUpdate logo?

Currently, as it is not set differently, it belongs to the project and
it is GPLv2. But storing the SVG, let me add meta information to the SVG
file and I could set it to a CC license.

> 
> Please keep in mind that my company use its own images in the web application. I only need some appropriated default images for other users.

Right, the same here. Customers won't use it - but it is good to have a
placeholder that is not transparent, else nobody knows aboit.

Anyway, the images can be updated later in follow up patches - the issue
with license raised from the discussion but it is not strictly related
to the patch.

It is fine for me to have just a placeholder.

Best regards,
Stefano Babic
Wolfgang Denk Feb. 20, 2018, 9:02 a.m. UTC | #11
Dear Stefan,

In message <531ADB0D40411F4DAE16FC92133DDBF12D353C84@SRVDE355.weidmueller.com> you wrote:
> 
> > > I think for an image you should use a Creative Commons license.
> >
> > Do you have a recommendation?  I feel we should allow unrestricted
> > distribution and use, but I don't want to allow modifications.
> >
> > At first glance, Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0)
> > seems to provide exactly that, except on closer look you still can "roduce and
> > reproduce, but not Share, Adapted Material"
> > (section 2(a)(1)(B)).
> 
> This allows you to manipulate  the image (produce a Adapted
> Material) without the right to use (Share) the manipulated image.
> In practical this means that you can do what you want with the
> image if you don't show it to someone else.

IANAL, but I think this is not quite correct.  "Share" IMO always
talks about third parties. If for example a big company (say,
Google, Microsoft, Intel, ...) decides to modify the graphics and
use it internally within their company, this would not be considered
sharing, as no third parties are involved.

Or am I wrong?

> > So what I'm looking for is something like "CC BY-ND 4.0 without 2(a)(1)(B).
> 
> The problem I see is the question what is an "Adapted Material".
> Does the web application with the boxes overlaying the image are
> already an "Adapted Material"? Furthermore how should we provide
> the name of the creator and attribution parties, a copyright
> notice, a license notice, a disclaimer notice, and a link to the
> material inside the web application. At the moment we have no
> visible license information inside the web application.

Agreed.  We are working on that.

> Therefore I would prefer to use a CC0 image.

This is not possible with the image under discussion, sorry.

> This leads me to the question what is the license of the SWUpdate logo?

This is for Stefano to answer...

> Please keep in mind that my company use its own images in the web
> application. I only need some appropriated default images for
> other users.

Fully understood and much appreciated!  Thanks!

Best regards,

Wolfgang Denk
diff mbox series

Patch

diff --git a/www2/README.md b/www2/README.md
new file mode 100644
index 0000000..85266a4
--- /dev/null
+++ b/www2/README.md
@@ -0,0 +1,82 @@ 
+# SWUpdate Web Application
+
+The SWUpdate web application uses the [Node.js](https://nodejs.org/en/) package
+manager and [gulp](https://gulpjs.com/) as build tool.
+I depends on [Bootstrap 4](https://getbootstrap.com/),
+[Font Awesome 5](https://fontawesome.com/) and
+[Dropzone.js](http://www.dropzonejs.com/).
+
+The web application uses WebSocket for the asynchronous communication with the
+backend, allows a visualization of different image sources, automatically
+reloads the web page after a connection lost and restarts the system
+via a post update command.
+
+
+## Install
+
+1. Unpack a released `swupdate-www.tar.gz` archive to your `www` direcotry
+
+        tar -xzf swupdate-www.tar.gz -C /www
+
+2. Run the web application
+
+        swupdate -w "-r /www" -p "reboot"
+
+
+## Customize
+
+You could replace the `logo.png`, `favicon.png` and `background.jpg` images
+inside the `images` directory. Furthermore you could customize the Bootstrap
+colors and settings inside the `scss/bootstrap.scss` file. The latter needs a
+rebuild of the code.
+
+
+## Develop
+
+1. Clone the code:
+
+        git clone https://github.com/sbabic/swupdate-www.git
+        cd swupdate-www
+
+2. Install the dependencies
+
+        npm install
+
+3. Build the web application
+
+        npm run build
+
+4. Run the web application
+
+        swupdate -w "-r ./dist" -p "echo reboot"
+
+5. Pack the web application
+
+        npm run package
+
+
+## Maintainer
+
+Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
+
+
+## Contribute
+
+You can submit your patches (or post questions regarding the project) to the
+swupdate Mailing List:
+
+    swupdate@googlegroups.com
+
+Please read in the corresponding chapter in the SWUpdate documentation
+how to contribute to the project.
+
+Additional run the linter before any commit and add a prefix to the patches
+
+    npm run lint
+
+    git format-patch -s --subject-prefix='swupdate-www][PATCH' <revision range>
+
+
+## License
+
+MIT
diff --git a/www2/css/swupdate.css b/www2/css/swupdate.css
new file mode 100644
index 0000000..a37d3d1
--- /dev/null
+++ b/www2/css/swupdate.css
@@ -0,0 +1,32 @@ 
+/*!
+ * Copyright (C) 2017-2018 Weidmüller Interface GmbH & Co. KG
+ * Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+body {
+  background-attachment: fixed;
+  background-image: url("../images/background.jpg");
+  background-position: center;
+  background-repeat: no-repeat;
+  background-size: cover;
+}
+
+.dropzone {
+  background: #ffffff;
+  background: rgba(255,255,255,0.75);
+  min-height: 200px;
+}
+
+.dropzone .dz-preview .dz-image {
+  width: 220px;
+}
+
+[data-toggle="collapse"] i:before {
+  content: "\f139";
+}
+
+[data-toggle="collapse"].collapsed i:before {
+  content: "\f13a";
+}
diff --git a/www2/gulpfile.js b/www2/gulpfile.js
new file mode 100755
index 0000000..a99b460
--- /dev/null
+++ b/www2/gulpfile.js
@@ -0,0 +1,121 @@ 
+/*!
+ * Copyright (C) 2017-2018 Weidmüller Interface GmbH & Co. KG
+ * Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+var cleanCSS = require('gulp-clean-css')
+var del = require('del')
+var gulp = require('gulp')
+var gzip = require('gulp-gzip')
+var imagemin = require('gulp-imagemin')
+var filter = require('gulp-filter')
+var htmlmin = require('gulp-htmlmin')
+var minify = require('gulp-minify')
+var rename = require('gulp-rename')
+var replace = require('gulp-replace')
+var sass = require('gulp-sass')
+var tar = require('gulp-tar')
+var useref = require('gulp-useref')
+
+gulp.task('sass', ['clean'], () => {
+  return gulp.src('scss/*.scss')
+    .pipe(sass().on('error', sass.logError))
+    .pipe(cleanCSS({ compatibility: '*' }))
+    .pipe(rename({
+      suffix: '.min'
+    }))
+    .pipe(gulp.dest('dist/css'))
+})
+
+gulp.task('minify-css', ['clean'], () => {
+  return gulp.src('css/*.css')
+    .pipe(cleanCSS({ compatibility: '*' }))
+    .pipe(rename({
+      suffix: '.min'
+    }))
+    .pipe(gulp.dest('dist/css'))
+})
+
+gulp.task('minify-js', ['clean'], () => {
+  return gulp.src('js/*.js')
+    .pipe(minify({
+      ext: {
+        min: '.min.js'
+      },
+      noSource: true,
+      preserveComments: 'some'
+    }))
+    .pipe(gulp.dest('dist/js'))
+})
+
+gulp.task('minify-html', ['clean'], () => {
+  return gulp.src('*.html')
+    .pipe(replace('node_modules/bootstrap/dist/css', 'css'))
+    .pipe(useref({ noconcat: true }))
+    .pipe(filter('*.html'))
+    .pipe(replace(/node_modules\/.*\/([^/]+)\.css/g, 'css/$1.css'))
+    .pipe(replace(/node_modules\/.*\/([^/]+)\.js/g, 'js/$1.js'))
+    .pipe(replace('.css', '.min.css'))
+    .pipe(replace('.js', '.min.js'))
+    .pipe(htmlmin({ collapseWhitespace: true }))
+    .pipe(gulp.dest('dist'))
+})
+
+gulp.task('copy-css', ['clean'], () => {
+  return gulp.src('*.html')
+    .pipe(useref({ noconcat: true }))
+    .pipe(filter('**/*.css'))
+    .pipe(rename({
+      dirname: 'css',
+      suffix: '.min'
+    }))
+    .pipe(cleanCSS({ compatibility: '*' }))
+    .pipe(gulp.dest('dist'))
+})
+
+gulp.task('copy-js', ['clean'], () => {
+  return gulp.src('*.html')
+    .pipe(useref({ noconcat: true }))
+    .pipe(filter('**/*.js'))
+    .pipe(rename({
+      dirname: 'js'
+    }))
+    .pipe(minify({
+      ext: {
+        min: '.min.js'
+      },
+      noSource: true,
+      preserveComments: 'some'
+    }))
+    .pipe(gulp.dest('dist'))
+})
+
+gulp.task('copy-fonts', ['clean'], () => {
+  return gulp.src([
+    'node_modules/@fortawesome/fontawesome-free-webfonts/webfonts/fa-solid-900.{ttf,woff,woff2}'
+  ])
+  .pipe(gulp.dest('dist/webfonts'))
+})
+
+gulp.task('resize-images', ['clean'], () => {
+  return gulp.src('./images/*')
+    .pipe(imagemin({ verbose: true }))
+    .pipe(gulp.dest('./dist/images'))
+})
+
+gulp.task('package', ['build'], () => {
+  return gulp.src('dist/**')
+    .pipe(tar('swupdate-www.tar'))
+    .pipe(gzip())
+    .pipe(gulp.dest('prod'))
+})
+
+gulp.task('clean', () => {
+  return del('dist/**', { force: true })
+})
+
+gulp.task('build', ['copy-css', 'copy-js', 'copy-fonts', 'sass', 'minify-css', 'minify-js', 'minify-html', 'resize-images'])
+
+gulp.task('default', ['build'])
diff --git a/www2/images/background.jpg b/www2/images/background.jpg
new file mode 100755
index 0000000000000000000000000000000000000000..5cfceda6397ed471dd9a50fb8dd0a850cf089122
GIT binary patch
literal 96114
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

literal 0
HcmV?d00001

diff --git a/www2/images/favicon.png b/www2/images/favicon.png
new file mode 100755
index 0000000000000000000000000000000000000000..04c50a937604e51321891e6f48370d3410cec742
GIT binary patch
literal 301
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvg8-ipS0GIih_aXA25Mj|3GxeO
zaCmkj4a7<Ec6VXuV3qX%aySb-B8wRqxP?HN@zUM8KR`kD5>H=O_D4(tTzaY>M18V>
zLS>#Vjv*T7b0;|p9Z=w4-urdN`fo3PIvnTIGI6l9*yJeLoV@1192p^P$CIrthFuRP
z-DwMY@My~dUG{tH9!}xD(arR&i){uY(~WG=ie?5EHjnZf|2ma-Gp-VR<XH7raNRMx
u$(vUv*<EgnPyf@ukat!8CjRLChq+hx+C+1`t853lfWgz%&t;ucLK6T^rBrzU

literal 0
HcmV?d00001

diff --git a/www2/images/logo.png b/www2/images/logo.png
new file mode 100755
index 0000000000000000000000000000000000000000..04c50a937604e51321891e6f48370d3410cec742
GIT binary patch
literal 301
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvg8-ipS0GIih_aXA25Mj|3GxeO
zaCmkj4a7<Ec6VXuV3qX%aySb-B8wRqxP?HN@zUM8KR`kD5>H=O_D4(tTzaY>M18V>
zLS>#Vjv*T7b0;|p9Z=w4-urdN`fo3PIvnTIGI6l9*yJeLoV@1192p^P$CIrthFuRP
z-DwMY@My~dUG{tH9!}xD(arR&i){uY(~WG=ie?5EHjnZf|2ma-Gp-VR<XH7raNRMx
u$(vUv*<EgnPyf@ukat!8CjRLChq+hx+C+1`t853lfWgz%&t;ucLK6T^rBrzU

literal 0
HcmV?d00001

diff --git a/www2/index.html b/www2/index.html
new file mode 100755
index 0000000..1ff2bbb
--- /dev/null
+++ b/www2/index.html
@@ -0,0 +1,136 @@ 
+<!doctype html>
+<html lang="en">
+
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+
+  <link rel="icon" href="/favicon.png" type="image/png">
+
+  <link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.css">
+  <!-- build:css -->
+  <link rel="stylesheet" href="node_modules/dropzone/dist/dropzone.css">
+  <link rel="stylesheet" href="node_modules/@fortawesome/fontawesome-free-webfonts/css/fontawesome.css">
+  <link rel="stylesheet" href="node_modules/@fortawesome/fontawesome-free-webfonts/css/fa-solid.css">
+  <link rel="stylesheet" href="css/swupdate.css">
+  <!-- endbuild -->
+
+  <!-- build:js -->
+  <script src="node_modules/jquery/dist/jquery.js"></script>
+  <script src="node_modules/bootstrap/dist/js/bootstrap.js"></script>
+  <script src="node_modules/dropzone/dist/dropzone.js"></script>
+  <!-- endbuild -->
+  <script src="js/swupdate.js"></script>
+
+  <title>SWUpdate - Software Update for Embedded Systems</title>
+</head>
+
+<body>
+  <!-- Navigation Header -->
+  <nav class="navbar sticky-top navbar-expand-sm navbar-dark bg-primary">
+    <div class="container">
+      <a class="navbar-brand" href="#">
+        <img class="d-inline-block align-top" src="images/logo.png" alt="">
+      </a>
+      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
+        <span class="navbar-toggler-icon"></span>
+      </button>
+      <div class="collapse navbar-collapse" id="navbarText">
+        <ul class="navbar-nav ml-auto">
+          <li class="nav-item">
+            <a id="swu-restart" class="nav-link" href="#"><i class="fas fa-sync"></i> Restart System</a>
+          </li>
+        </ul>
+      </div>
+    </div>
+  </nav>
+
+  <!-- Use Bootstrap Grid Container -->
+  <div class="container">
+    <!-- Header -->
+    <div class="jumbotron my-3">
+      <h1 class="display-4">SWUpdate</h1>
+      <p class="lead">Software update for embedded systems</p>
+      <p>Upload an software image below or restart the system at the top right.</p>
+    </div>
+
+    <div class="row my-3">
+      <div class="col">
+        <div class="card">
+          <div class="card-header pb-0">
+            <h5><i class="fas fa-wrench"></i> Software Update</h5>
+          </div>
+          <div class="card-body">
+            <!-- Dropzone Button for drag&drop files -->
+            <form class="dropzone border rounded mb-3" id="dropzone" action="/upload" method="post" enctype="multipart/form-data">
+              <div class="dz-default dz-message">
+                <span class="dz-message">Click hier or drop a software update image.</span>
+              </div>
+            </form>
+
+            <!-- Status -->
+            <div id="swu-idle" class="alert alert-secondary">
+              <i class="fas fa-info-circle"></i> Update not started
+            </div>
+            <div id="swu-run" class="alert alert-warning" style="display: none;">
+              <i class="fas fa-exclamation-triangle"></i>
+              Updating may take a few minutes, please don't turn off the power.
+            </div>
+            <div id="swu-success" class="alert alert-success" style="display: none;">
+              <i class="fas fa-check-circle"></i> Successful updated
+            </div>
+            <div id="swu-failure" class="alert alert-danger" style="display: none;">
+              <i class="fas fa-times-circle"></i> Update failed
+            </div>
+            <div id="swu-done" class="alert alert-info" style="display: none;">
+              <i class="fas fa-sync"></i> Restarting system
+            </div>
+
+            <!-- Progress -->
+            <i id="swu-progress-spinner" class="fas"></i>
+            <strong id="swu-progress-run" style="display: none;">Updating:</strong>
+            <span id="swu-progress-name"></span>
+            <span id="swu-progress-value" class="float-right"></span>
+            <div class="progress">
+              <div id="swu-progress-bar" class="progress-bar progress-bar-striped" role="progressbar"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <!-- Messages -->
+    <div class="row my-3">
+      <div class="col">
+        <div class="card">
+          <div class="card-header" id="headingMessages">
+            <a class="h5 collapsed" data-toggle="collapse" href="#collapseMessages" aria-expanded="false" aria-controls="collapseMessages">
+              <i class="fas"></i> Messages
+            </a>
+          </div>
+          <div id="collapseMessages" class="collapse" aria-labelledby="headingMessages">
+            <div class="card-body" id="messages"></div>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <!-- Restart -->
+    <div id="swu-restart-modal" class="modal fade" tabindex="-1" role="dialog">
+      <div class="modal-dialog modal-dialog-centered" role="document">
+        <div class="modal-content">
+          <div class="modal-body p-3 mb-2">
+            <div class="media">
+              <i class="fas fa-spinner fa-spin fa-3x align-self-center mr-3"></i>
+              <div class="media-body align-self-center">
+                <h5 class="mt-0 mb-0">The system will restart. Please be patient, as restarting takes about one minute.</h5>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</body>
+
+</html>
diff --git a/www2/js/swupdate.js b/www2/js/swupdate.js
new file mode 100755
index 0000000..f89b47d
--- /dev/null
+++ b/www2/js/swupdate.js
@@ -0,0 +1,155 @@ 
+/*!
+ * Copyright (C) 2017-2018 Weidmüller Interface GmbH & Co. KG
+ * Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+/* global $, Dropzone, WebSocket */
+
+function restart () {
+  $.post('restart', {}, function (data) {
+    showRestart()
+  })
+}
+
+function showRestart () {
+  $('#swu-restart-modal').modal({backdrop: 'static', keyboard: false})
+  window.setTimeout(tryReload, 3000)
+}
+
+function tryReload () {
+  $.ajax({
+    cache: false,
+    timeout: 1000,
+    success: function (response) {
+      window.location.reload(true)
+    },
+    error: function (xhr, textStatus, errorThrown) {
+      if (textStatus === 'timeout') { tryReload() } else { window.setTimeout(tryReload, 1000) }
+    }
+  })
+}
+
+function updateStatus (status) {
+  $('#swu-idle').hide()
+  $('#swu-success').hide()
+  $('#swu-failure').hide()
+  $('#swu-done').hide()
+  $('#swu-run').hide()
+
+  switch (status) {
+    case 'IDLE':
+      $('#swu-idle').show()
+      break
+    case 'START':
+    case 'RUN':
+      $('#swu-run').show()
+      break
+    case 'SUCCESS':
+      $('#swu-success').show()
+      break
+    case 'FAILURE':
+      $('#swu-failure').show()
+      break
+    case 'DONE':
+      $('#swu-done').show()
+      break
+    default:
+      break
+  }
+}
+
+var updateProgressBarStatus = (function (status) {
+  var s = ''
+
+  return function (status) {
+    $('#swu-progress-bar')
+    .removeClass('bg-danger bg-success progress-bar-animated')
+    $('#swu-progress-spinner')
+    .removeClass('fa-spinner fa-spin')
+    $('#swu-progress-run').hide()
+
+    switch (status) {
+      case 'START':
+        updateProgressBar(0, '', '')
+        break
+      case 'RUN':
+        $('#swu-progress-bar').addClass('progress-bar-animated')
+        $('#swu-progress-spinner')
+          .addClass('fa-spinner fa-spin')
+        $('#swu-progress-run').show()
+        break
+      case 'SUCCESS':
+        $('#swu-progress-bar')
+          .addClass('bg-success')
+        break
+      case 'FAILURE':
+        if (s !== 'START' || s !== 'RUN') { updateProgressBar(0, '', '') }
+        $('#swu-progress-bar')
+          .addClass('bg-danger')
+        break
+      default:
+        break
+    }
+    s = status
+  }
+})()
+
+function updateProgressBar (percent, name, value) {
+  $('#swu-progress-value').text(value)
+  $('#swu-progress-name').text(name)
+  $('#swu-progress-bar')
+    .css('width', percent + '%')
+    .attr('aria-valuenow', percent)
+}
+
+Dropzone.options.dropzone = {
+  timeout: 0,
+  clickable: true,
+  acceptedFiles: '.swu'
+}
+
+window.onload = function () {
+  var protocol
+
+  $('#swu-restart').click(restart)
+
+  if (window.location.protocol === 'https:') { protocol = 'wss:' } else { protocol = 'ws:' }
+
+  var ws = new WebSocket(protocol + '//' + window.location.host + '/ws')
+
+  ws.onopen = function (event) {
+    updateStatus('IDLE')
+  }
+
+  ws.onclose = function (event) {
+    showRestart()
+  }
+
+  ws.onmessage = function (event) {
+    var msg = JSON.parse(event.data)
+
+    switch (msg.type) {
+      case 'message':
+        var p = $('<p></p>')
+        p.text(msg.text)
+        p.addClass('mb-1')
+        if (msg.level <= 3) { p.addClass('text-danger') }
+        $('#messages').append(p)
+        break
+      case 'status':
+        updateStatus(msg.status)
+        updateProgressBarStatus(msg.status)
+        break
+      case 'source':
+        break
+      case 'step':
+        var percent = Math.round((100 * (Number(msg.step) - 1) + Number(msg.percent)) / Number(msg.number))
+        var value = percent + '%' + ' (' + msg.step + ' of ' + msg.number + ')'
+
+        updateProgressBar(percent, msg.name, value)
+        break
+    }
+  }
+}
diff --git a/www2/package.json b/www2/package.json
new file mode 100755
index 0000000..7ded5d0
--- /dev/null
+++ b/www2/package.json
@@ -0,0 +1,47 @@ 
+{
+  "name": "swupdate",
+  "version": "0.1.0",
+  "description": "Software Update for Embedded Systems Web Front End",
+  "main": "index.html",
+  "scripts": {
+    "htmlhint": "htmlhint *.html",
+    "standard": "standard --fix *.js",
+    "lint": "standard --fix && htmlhint && sass-lint -v scss/* && csslint css/*",
+    "build": "gulp build",
+    "package": "gulp package",
+    "clean": "gulp clean"
+  },
+  "author": "Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>",
+  "license": "MIT",
+  "devDependencies": {
+    "csslint": "^1.0.5",
+    "del": "^3.0.0",
+    "gulp": "^3.9.1",
+    "gulp-clean-css": "^3.9.0",
+    "gulp-filter": "^5.1.0",
+    "gulp-gzip": "^1.4.1",
+    "gulp-html-replace": "^1.6.2",
+    "gulp-htmlmin": "^4.0.0",
+    "gulp-imagemin": "^4.1.0",
+    "gulp-minify": "^2.1.0",
+    "gulp-rename": "^1.2.2",
+    "gulp-replace": "^0.6.1",
+    "gulp-sass": "^3.1.0",
+    "gulp-tar": "^2.1.0",
+    "gulp-useref": "^3.1.4",
+    "htmlhint": "^0.9.13",
+    "sass-lint": "^1.12.1",
+    "standard": "^10.0.3"
+  },
+  "dependencies": {
+    "@fortawesome/fontawesome-free-webfonts": "^1.0.3",
+    "bootstrap": "^4.0.0",
+    "dropzone": "5.2.0",
+    "jquery": "^3.3.1"
+  },
+  "standard": {
+    "ignore": [
+      "dist"
+    ]
+  }
+}
diff --git a/www2/scss/bootstrap.scss b/www2/scss/bootstrap.scss
new file mode 100644
index 0000000..c4a4dad
--- /dev/null
+++ b/www2/scss/bootstrap.scss
@@ -0,0 +1,18 @@ 
+/*!
+ * Copyright (C) 2017-2018 Weidmüller Interface GmbH & Co. KG
+ * Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+$theme-colors: (
+);
+
+$transparent: rgba(255, 255, 255, .75);
+
+$jumbotron-bg: $transparent;
+$card-bg: $transparent;
+
+$progress-height: 1.5rem !default;
+
+@import 'node_modules/bootstrap/scss/bootstrap';