From 9de46207697a1324090f614b2d64e6c29ebf877d Mon Sep 17 00:00:00 2001
From: Armand Bahi <armand.bahi@veremes.com>
Date: Wed, 23 Jan 2019 16:10:01 +0100
Subject: [PATCH] =?UTF-8?q?Lecture=20des=20images=20pr=C3=A9sentes=20sur?=
 =?UTF-8?q?=20le=20serveur?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../component/file_picker/file_picker.js      | 78 ++++++++++++++-----
 1 file changed, 57 insertions(+), 21 deletions(-)

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 8106201d..36e8e680 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
@@ -70,14 +70,59 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
                         }
                     }
 
+                    /**
+                     * Lit les images déjà présentes à partir de leur URL
+                     * @param  {array} aAvaliableFiles tableau d'URL
+                     * @return {promise}
+                     */
+                    scope['addExistingFiles'] = function(aAvaliableFiles) {
+
+                        var deferred = $q.defer();
+
+                        if (goog.isArray(aAvaliableFiles)) {
+
+                            var iCounter = 0;
+
+                            for (var i = 0; i < aAvaliableFiles.length; i++) {
+                                ajaxRequest({
+                                    'method': 'GET',
+                                    'url': aAvaliableFiles[i],
+                                    'headers': {
+                                        'Accept': 'application/x-vm-json'
+                                    },
+                                    'scope': this.$scope_,
+                                    'responseType': 'blob',
+                                    'success': function(response) {
+
+                                        iCounter++;
+                                        if (goog.isDefAndNotNull(response['data'])) {
+                                            var oBlob = response['data'];
+                                            scope['aFiles'].push(oBlob);
+                                        }
+                                        if (iCounter === aAvaliableFiles.length) {
+                                            deferred.resolve();
+                                        }
+                                    },
+                                    'error': function(response) {
+                                        iCounter++;
+                                        if (iCounter === aAvaliableFiles.length) {
+                                            deferred.resolve();
+                                        }
+                                    }
+                                });
+
+                            }
+                        }
+
+                        return deferred.promise;
+                    }
+
                     /**
                      * Download the given file
                      * @param  {object} oFile
                      */
                     scope['downloadFile'] = function(oFile) {
 
-                        console.log("downloadFile: ", oFile);
-
                         var oBlob;
                         var sFileName = oFile['name'];
 
@@ -115,27 +160,8 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
                     scope['initBootstrapFileInputs'] = function() {
 
                         var deferred = $q.defer();
-
-                        if (!goog.isDefAndNotNull(scope["field"]["display_width"])) {
-                            scope["field"]["display_width"] = "100%";
-                        }
-                        // Si sélection d'un fichier à uploader : sauve ses paramètres.
-                        element[0].addEventListener("change", function () {
-                            var oFileList = {
-                                "aFiles": this.files
-                            };
-                            if (goog.isDefAndNotNull(scope["field"]["width"]) && goog.isDefAndNotNull(scope["field"]["height"])) {
-                                oFileList["width"] = scope["field"]["width"];
-                                oFileList["height"] = scope["field"]["height"];
-                            }
-
-                            scope["oFormValues"][scope["sFormDefinitionName"]][element[0].name] = oFileList;
-                        }, false);
-
-                        // Intégration du plugin "bootstrap-fileinput" dans tous les champ d'upload de fichiers.
                         setTimeout(function () {
                             var oInput = $(element).find('#' + scope['field']['id']);
-                            // $(oInput)["fileinput"](oOptions);
                             deferred.resolve(oInput);
                         });
 
@@ -331,6 +357,16 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
                                 oInput[0]['files_vitis'] = scope['aFiles'];
                             });
                         });
+
+                        // Affiche les images présentes sur le serveur
+                        var aAvaliableFiles = scope["oFormValues"][scope["sFormDefinitionName"]][scope['field'].name];
+                        if (goog.isDefAndNotNull(aAvaliableFiles)) {
+                            scope['addExistingFiles'](aAvaliableFiles).then(function(){
+
+                                // Initialise l'affichage des images
+                                scope['initPreview']();
+                            });
+                        }
                     });
 
                     // Initialise l'affichage des images
-- 
GitLab