From 45b82ee114e80c7ae148837ad773fba9fb23b55a Mon Sep 17 00:00:00 2001
From: Armand Bahi <armand.bahi@veremes.com>
Date: Mon, 14 Jan 2019 17:18:24 +0100
Subject: [PATCH] optimisation

---
 .../component/file_picker/file_picker.html    |  6 +-
 .../component/file_picker/file_picker.js      | 69 ++++++++++++++-----
 2 files changed, 55 insertions(+), 20 deletions(-)

diff --git a/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.html b/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.html
index 803ca465..74c36fce 100644
--- a/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.html
+++ b/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.html
@@ -8,9 +8,9 @@
     <!-- Visioneuse Images -->
     <div ng-if="field.type === 'image_wsdata'" class="preview-images-zone">
         <div ng-repeat="image in aPreviewImages"
-             ng-class="{'preview-image-small' : aPreviewImages.length > 4}"
+             ng-class="{'preview-image-small' : aPreviewImages.length > 1}"
              class="preview-image preview-show-{{$index}}">
-            <div class="image-cancel" data-no="{{$index}}" ng-click="removeImage(image)">x</div>
+            <div class="image-cancel" data-no="{{$index}}" ng-click="removeFile(image)">x</div>
             <div class="image-zone"><img id="pro-img-{{$index}}" ng-src="{{image.src}}"></div>
             <div class="tools-edit-image">
                 <a href="javascript:void(0)"
@@ -22,7 +22,7 @@
             </div>
         </div>
         <div ng-if="!field.displayOnly"
-             ng-class="{'preview-image-small' : aPreviewImages.length > 4}"
+             ng-class="{'preview-image-small' : aPreviewImages.length > 1}"
              class="preview-image preview-show-{{$index}}">
             <div class="image-add" ng-click="searchNewFile()"><span class="icon-plus"></span></div>
         </div>
diff --git a/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js b/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js
index 6de54f6e..a4f8d77f 100644
--- a/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js
+++ b/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js
@@ -61,8 +61,6 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
                                 scope['aFiles'].push(files[i]);
                             }
                         }
-
-                        console.log("scope['aFiles']: ", scope['aFiles']);
                     }
 
                     /**
@@ -105,26 +103,51 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
                      */
                     scope['initImagesPreview'] = function() {
 
-                        scope['aPreviewImages'] = [];
+                        // Vide les images qui ont étés supprimées de aFiles
+                        var bIsPresent;
+                        for (var i = scope['aPreviewImages'].length - 1; i >= 0; i--) {
+                            bIsPresent = false;
+                            for (var ii = 0; ii < scope['aFiles'].length; ii++) {
+                                if (!bIsPresent) {
+                                    if(scope['aPreviewImages'][i]['name'] === scope['aFiles'][ii]['name']){
+                                        bIsPresent = true;
+                                    }
+                                }
+                            }
+                            if (!bIsPresent) {
+                                scope['aPreviewImages'].splice(i, 1);
+                            }
+                        }
 
+                        // Ajoute les nouvelles images
                         var file;
                         for (var i = 0; i < scope['aFiles'].length; i++) {
+                            bIsPresent = false;
                             file = scope['aFiles'][i];
 
                             if (!file.type.match('image')) continue;
 
-                            var picReader = new FileReader();
-                            picReader.addEventListener('load', angular.bind(this, function (file, event) {
-                                var picFile = event.target;
-                                scope.$applyAsync(function(){
-                                    scope['aPreviewImages'].push({
-                                        'name': file['name'],
-                                        'src': picFile['result']
-                                    });
-                                });
-                            }, file));
+                            // Vérifie que l'image ne soit pas déjà ajoutée
+                            for (var ii = 0; ii < scope['aPreviewImages'].length; ii++) {
+                                if(scope['aFiles'][i]['name'] === scope['aPreviewImages'][ii]['name']){
+                                    bIsPresent = true;
+                                }
+                            }
 
-                            picReader.readAsDataURL(file);
+                            // Ajoute les nouvelles images
+                            if (!bIsPresent) {
+                                var picReader = new FileReader();
+                                picReader.addEventListener('load', angular.bind(this, function (file, event) {
+                                    var picFile = event.target;
+                                    scope.$applyAsync(function(){
+                                        scope['aPreviewImages'].push({
+                                            'name': file['name'],
+                                            'src': picFile['result']
+                                        });
+                                    });
+                                }, file));
+                                picReader.readAsDataURL(file);
+                            }
                         }
                     }
 
@@ -145,13 +168,25 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
                     }
 
                     /**
-                     * Remove the given image
+                     * Remove the given file
                      * @param  {object} oImage
                      * @export
                      */
-                    scope['removeImage'] = function(oImage) {
-                        console.log("removeImage: ", oImage);
+                    scope['removeFile'] = function(oFile) {
+                        console.log("removeFile: ", oFile);
 
+                        for (var i = 0; i < scope['aFiles'].length; i++) {
+                            if(scope['aFiles'][i]['name'] === oFile['name']){
+                                scope['aFiles'].splice(i, 1);
+                            }
+                        }
+
+                        // Affichage des images
+                        if (scope['field']['type'] === 'image_wsdata') {
+                            setTimeout(function () {
+                                scope['initImagesPreview']();
+                            });
+                        }
                     }
 
                     /**
-- 
GitLab