Add CSV filetype filter options Vandelay CSV export
authorBill Erickson <berick@esilibrary.com>
Wed, 31 Aug 2011 20:05:50 +0000 (16:05 -0400)
committerMike Rylander <mrylander@gmail.com>
Wed, 7 Sep 2011 20:14:37 +0000 (16:14 -0400)
Includes generic support for specifying default filename, extension, and
new filter types for the XUL NsIFilePicker wrapper

Signed-off-by: Bill Erickson <berick@esilibrary.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Open-ILS/web/js/dojo/openils/XUL.js
Open-ILS/web/js/ui/default/vandelay/vandelay.js

index 8e367da..9d93f2e 100644 (file)
@@ -148,7 +148,7 @@ if(!dojo._hasResource["openils.XUL"]) {
         }
     };
 
-    openils.XUL.contentToFileSaveDialog = function(content, windowTitle) {
+    openils.XUL.contentToFileSaveDialog = function(content, windowTitle, dispositionArgs) {
         var api = new openils.XUL.SimpleXPCOM();
         api.getPrivilegeManager().enablePrivilege("UniversalXPConnect");
 
@@ -156,6 +156,29 @@ if(!dojo._hasResource["openils.XUL"]) {
         picker.init(
             window, windowTitle || "Save File", api.FP.iface.modeSave
         );
+
+        if (dispositionArgs) {
+            /**
+             * https://developer.mozilla.org/En/NsIFilePicker
+             * Example: 
+             * { defaultString : 'MyExport.csv',
+                 defaultExtension : '.csv',
+                 filterName : 'CSV',
+                 filterExtension : '*.csv',
+                 filterAll : true } */
+
+            picker.defaultString = dispositionArgs.defaultString;
+            picker.defaultExtension = dispositionArgs.defaultExtension;
+            if (dispositionArgs.filterName) {
+                picker.appendFilter(
+                    dispositionArgs.filterName,
+                    dispositionArgs.filterExtension
+                );
+            }
+            if (dispositionArgs.filterAll) 
+                picker.appendFilters(picker.filterAll)
+        }
+
         var result = picker.show();
         if (picker.file &&
                 (result == api.FP.iface.returnOK ||
index 75da815..e166db7 100644 (file)
@@ -462,7 +462,13 @@ function exportHandler(type, response) {
             break;
             case 'csv':
                 //content = content.replace(/\\t/g,'\t'); // if we really wanted to do .tsv instead
-                openils.XUL.contentToFileSaveDialog(content);
+                openils.XUL.contentToFileSaveDialog(content, null, {
+                    defaultString : 'VandelayExport.csv',
+                    defaultExtension : '.csv',
+                    filterName : 'CSV',
+                    filterExtension : '*.csv',
+                    filterAll : true
+                } );
             break;
             default:
                 alert('response = ' + response + '\tcontent:\n' + content);