From 661f1de8f6e5fba094495fca3214de2e2a152499 Mon Sep 17 00:00:00 2001
From: Thijs Kinkhorst <thijs@kinkhorst.com>
Date: Wed, 24 Apr 2019 18:19:31 +0000
Subject: [PATCH] Improve newui metadata converter

- Make textarea and code-box monospace (might be subjective)
- Jump to converted data after form submit
- Make file upload label work

Closes: #1094
---
 .../admin/templates/metadata_converter.twig   | 24 +++++++++++++------
 src/css/default.scss                          |  4 ++++
 templates/metadata-converter.twig             | 21 ++++++++++++----
 3 files changed, 37 insertions(+), 12 deletions(-)

diff --git a/modules/admin/templates/metadata_converter.twig b/modules/admin/templates/metadata_converter.twig
index c21c5fb00..785fe0f36 100644
--- a/modules/admin/templates/metadata_converter.twig
+++ b/modules/admin/templates/metadata_converter.twig
@@ -7,20 +7,19 @@
     {%- include "@admin/includes/menu.twig" %}
 
     <h2>{{ pagetitle }}</h2>
-    <form method="post" class="pure-form" enctype="multipart/form-data">
+    <form method="post" class="pure-form" enctype="multipart/form-data" action="#converted">
         <h3> {% trans 'XML metadata' %}</h3>
         <div class="pure-control-group">
-            <textarea name="xmldata" rows="20" class="text-area edge">{{ xmldata }}</textarea>
+            <textarea name="xmldata" rows="20" class="text-area edge xmldata">{{ xmldata }}</textarea>
         </div>
         <br>
         <div class="center">
             <div class="pure-button-group two-elements" role="group">
                 <label class="pure-button">
                     <span class="fa fa-folder-open"></span>{{ 'or select a file:'|trans }}
-                    <input type="file" name="xmlfile" class="hidden" multiple>
+                    <input type="file" name="xmlfile" class="hidden" id="file-input">
                 </label>
-                {#needs translation#}
-                <label id="show-file" class="pure-button hollow show-files" disabled>No file selected.</label>
+                <label id="show-file" class="pure-button hollow show-files" disabled>{{ 'No file selected.'|trans }}</label>
             </div>
             <br>
             <button class="pure-button pure-button-red pure-input-1-3">{{ 'Parse'|trans }}</button>
@@ -29,7 +28,7 @@
 
     {% if output -%}
     <br>
-    <h2>{{ 'Converted metadata'|trans }}</h2>
+    <h2 id="converted">{{ 'Converted metadata'|trans }}</h2>
         {% for type, text in output if text -%}
 {# spaceless is to work around a clipboard.js bug that would add extra whitespace #}
 {% spaceless %}
@@ -50,4 +49,15 @@
         {%- endfor -%}
     {% endif -%}
 {% endblock content -%}
-
+{% block postload %}
+<script>
+    $('body').on('change', '#file-input', function () {
+        var files = this.files;
+        var fileNames = [];
+        for (var i = 0; i < files.length; i++) {
+            fileNames.push(files.item(i).name);
+        }
+        $('#show-file').html(fileNames.join(", "));
+    });
+</script>
+{% endblock postload %}
diff --git a/src/css/default.scss b/src/css/default.scss
index 77a9fb011..4e992dfc7 100644
--- a/src/css/default.scss
+++ b/src/css/default.scss
@@ -115,6 +115,9 @@ pre, code, kbd, samp, tt {
   //background-color: rgba(0, 0, 0, .1);
   padding: 0 .2rem;
 }
+.xmldata {
+  font-family: monospace;
+}
 
 /************************************************************
  * BUTTONS
@@ -469,6 +472,7 @@ CONTENT
   width: 100%;
   height: 100%;
   white-space: pre-wrap;
+  font-family: monospace;
   &::selection {
     color: black;
     background: $lighYellow;
diff --git a/templates/metadata-converter.twig b/templates/metadata-converter.twig
index 3aabdebed..8c7b5291e 100644
--- a/templates/metadata-converter.twig
+++ b/templates/metadata-converter.twig
@@ -4,17 +4,17 @@
 {% set i=1 %}
 {% block content %}
     <h1>{{ pagetitle }}</h1>
-    <form method="post" class="pure-form" enctype="multipart/form-data">
+    <form method="post" class="pure-form" enctype="multipart/form-data" action="#converted">
         <h3>{% trans 'XML metadata' %}</h3>
         <div class="pure-control-group">
-            <textarea name="xmldata" rows="20" class="text-area edge">{{ xmldata }}</textarea>
+            <textarea name="xmldata" rows="20" class="text-area edge xmldata">{{ xmldata }}</textarea>
         </div>
         <br>
         <div class="center">
             <div class="pure-button-group two-elements" role="group">
                 <label class="pure-button">
                     <span class="fa fa-folder-open"></span>{{ 'or select a file:'|trans }}
-                    <input type="file" name="xmlfile" class="hidden" multiple>
+                    <input type="file" name="xmlfile" class="hidden" id="file-input">
                 </label>
                 <label id="show-file" class="pure-button hollow show-files" disabled>{{ 'No file selected.'|trans }}</label>
             </div>
@@ -25,7 +25,7 @@
 
     {% if output -%}
     <br>
-    <h2>{{ 'Converted metadata'|trans }}</h2>
+    <h2 id="converted">{{ 'Converted metadata'|trans }}</h2>
         {% for type, text in output if text -%}
 {# spaceless is to work around a clipboard.js bug that would add extra whitespace #}
 {% spaceless %}
@@ -46,4 +46,15 @@
         {%- endfor -%}
     {% endif -%}
 {% endblock content -%}
-
+{% block postload %}
+<script>
+    $('body').on('change', '#file-input', function () {
+        var files = this.files;
+        var fileNames = [];
+        for (var i = 0; i < files.length; i++) {
+            fileNames.push(files.item(i).name);
+        }
+        $('#show-file').html(fileNames.join(", "));
+    });
+</script>
+{% endblock postload %}
-- 
GitLab