webstaff: teach egJsonExporter about generators
authorGalen Charlton <gmc@esilibrary.com>
Wed, 16 Nov 2016 02:20:24 +0000 (21:20 -0500)
committerKathy Lussier <klussier@masslnc.org>
Tue, 22 Nov 2016 19:10:06 +0000 (14:10 -0500)
This patch adds an attribute called 'generator' to the eg-json-exporter
directive as an alternative to using 'container' to pass a JavaScript
object. 'generator' should be a function that returns a promise with
the data to be exported.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Open-ILS/web/js/ui/default/staff/services/file.js

index 473f4fe..83e0d29 100644 (file)
@@ -31,12 +31,20 @@ angular.module('egCoreMod')
     return {
         scope: {
             container: '=',
+            generator: '=',
             defaultFileName: '='
         },
         link: function (scope, element, attributes) {
             element.bind('click', function (clickEvent) {
-                var data = new Blob([JSON.stringify(scope.container)], {type : 'application/json'});
-                FileSaver.saveAs(data, scope.defaultFileName);
+                if (scope.generator) {
+                    scope.generator().then(function(value) {
+                        var data = new Blob([JSON.stringify(value)], {type : 'application/json'});
+                        FileSaver.saveAs(data, scope.defaultFileName);
+                    });
+                } else {
+                    var data = new Blob([JSON.stringify(scope.container)], {type : 'application/json'});
+                    FileSaver.saveAs(data, scope.defaultFileName);
+                }
             });
         }
     }