UNPKG

angular-ui-grid

Version:

A data grid for Angular

2 lines 6.48 kB
/*! For license information please see ui-grid.importer.min.js.LICENSE.txt */ (()=>{var e={226:e=>{e.exports='<li\n class="ui-grid-menu-item">\n <form>\n <input\n class="ui-grid-importer-file-chooser"\n type="file"\n id="files"\n name="files[]"/>\n </form>\n</li>\n'},901:e=>{e.exports="<div ui-grid-importer-menu-item></div>"},805:()=>{!function(){"use strict";var e=angular.module("ui.grid.importer",["ui.grid"]);e.constant("uiGridImporterConstants",{featureName:"importer"}),e.service("uiGridImporterService",["$q","uiGridConstants","uiGridImporterConstants","gridUtil","$compile","$interval","i18nService","$window",function(e,r,t,i,o,n,a,s){var l={initializeGrid:function(e,r){r.importer={$scope:e},this.defaultGridOptions(r.options);var t={events:{importer:{}},methods:{importer:{importFile:function(e){l.importThisFile(r,e)}}}};r.api.registerEventsFromObject(t.events),r.api.registerMethodsFromObject(t.methods),r.options.enableImporter&&r.options.importerShowMenu&&(r.api.core.addToGridMenu?l.addToMenu(r):n((function(){r.api.core.addToGridMenu&&l.addToMenu(r)}),100,1))},defaultGridOptions:function(e){e.enableImporter||void 0===e.enableImporter?s.hasOwnProperty("File")&&s.hasOwnProperty("FileReader")&&s.hasOwnProperty("FileList")&&s.hasOwnProperty("Blob")?e.enableImporter=!0:(i.logError("The File APIs are not fully supported in this browser, grid importer cannot be used."),e.enableImporter=!1):e.enableImporter=!1,e.importerProcessHeaders=e.importerProcessHeaders||l.processHeaders,e.importerHeaderFilter=e.importerHeaderFilter||function(e){return e},e.importerErrorCallback&&"function"==typeof e.importerErrorCallback||delete e.importerErrorCallback,!0!==e.enableImporter||e.importerDataAddCallback||(i.logError("You have not set an importerDataAddCallback, importer is disabled"),e.enableImporter=!1),e.importerShowMenu=!1!==e.importerShowMenu,e.importerObjectCallback=e.importerObjectCallback||function(e,r){return r}},addToMenu:function(e){e.api.core.addToGridMenu(e,[{title:a.getSafeText("gridMenu.importerTitle"),order:150},{templateUrl:"ui-grid/importerMenuItemContainer",action:function(){this.grid.api.importer.importAFile(e)},order:151}])},importThisFile:function(e,r){if(r){var t=new FileReader;if("application/json"===r.type)t.onload=l.importJsonClosure(e);else t.onload=l.importCsvClosure(e);t.readAsText(r)}else i.logError("No file object provided to importThisFile, should be impossible, aborting")},importJsonClosure:function(e){return function(r){var t,i=[],o=l.parseJson(e,r);null!==o&&(o.forEach((function(r){t=l.newObject(e),angular.extend(t,r),t=e.options.importerObjectCallback(e,t),i.push(t)})),l.addObjects(e,i))}},parseJson:function(e,r){var t;try{t=JSON.parse(r.target.result)}catch(t){return void l.alertError(e,"importer.invalidJson","File could not be processed, is it valid json? Content was: ",r.target.result)}return Array.isArray(t)?t:(l.alertError(e,"importer.jsonNotarray","Import failed, file is not an array, file was: ",r.target.result),[])},importCsvClosure:function(e){return function(r){var t=l.parseCsv(r);if(!t||t.length<1)l.alertError(e,"importer.invalidCsv","File could not be processed, is it valid csv? Content was: ",r.target.result);else{var i=l.createCsvObjects(e,t);i&&0!==i.length?l.addObjects(e,i):l.alertError(e,"importer.noObjects","Objects were not able to be derived, content was: ",r.target.result)}}},parseCsv:function(e){var r=e.target.result;return CSV.parse(r)},createCsvObjects:function(e,r){var t=e.options.importerProcessHeaders(e,r.shift());if(!t||0===t.length)return l.alertError(e,"importer.noHeaders","Column names could not be derived, content was: ",r),[];var i,o=[];return r.forEach((function(r){i=l.newObject(e),null!==r&&r.forEach((function(e,r){null!==t[r]&&(i[t[r]]=e)})),i=e.options.importerObjectCallback(e,i),o.push(i)})),o},processHeaders:function(e,r){var t=[];if(e.options.columnDefs&&0!==e.options.columnDefs.length){var i=l.flattenColumnDefs(e,e.options.columnDefs);return r.forEach((function(e){i[e]?t.push(i[e]):i[e.toLowerCase()]?t.push(i[e.toLowerCase()]):t.push(null)})),t}return r.forEach((function(e){t.push(e.replace(/[^0-9a-zA-Z\-_]/g,"_"))})),t},flattenColumnDefs:function(e,r){var t={};return r.forEach((function(r){r.name&&(t[r.name]=r.field||r.name,t[r.name.toLowerCase()]=r.field||r.name),r.field&&(t[r.field]=r.field||r.name,t[r.field.toLowerCase()]=r.field||r.name),r.displayName&&(t[r.displayName]=r.field||r.name,t[r.displayName.toLowerCase()]=r.field||r.name),r.displayName&&e.options.importerHeaderFilter&&(t[e.options.importerHeaderFilter(r.displayName)]=r.field||r.name,t[e.options.importerHeaderFilter(r.displayName).toLowerCase()]=r.field||r.name)})),t},addObjects:function(e,t){if(e.api.rowEdit){var i=e.registerDataChangeCallback((function(){e.api.rowEdit.setRowsDirty(t),i()}),[r.dataChange.ROW]);e.importer.$scope.$on("$destroy",i)}e.importer.$scope.$apply(e.options.importerDataAddCallback(e,t))},newObject:function(e){return void 0!==e.options&&void 0!==e.options.importerNewObject?new e.options.importerNewObject:{}},alertError:function(e,r,t,o){e.options.importerErrorCallback?e.options.importerErrorCallback(e,r,t,o):(s.alert(a.getSafeText(r)),i.logError(t+o))}};return l}]),e.directive("uiGridImporter",["uiGridImporterConstants","uiGridImporterService","gridUtil","$compile",function(e,r,t,i){return{replace:!0,priority:0,require:"^uiGrid",scope:!1,link:function(e,t,i,o){r.initializeGrid(e,o.grid)}}}]),e.directive("uiGridImporterMenuItem",["uiGridImporterConstants","uiGridImporterService","gridUtil","$compile",function(e,r,t,i){return{replace:!0,priority:0,require:"?^uiGrid",scope:!1,templateUrl:"ui-grid/importerMenuItem",link:function(e,i,o,n){var a;var s=i[0].querySelectorAll(".ui-grid-importer-file-chooser");1!==s.length?t.logError("Found > 1 or < 1 file choosers within the menu item, error, cannot continue"):s[0].addEventListener("change",(function(e){var i=e.srcElement||e.target;if(i&&i.files&&1===i.files.length){var o=i.files[0];void 0!==n&&n?(a=n.grid,r.importThisFile(a,o),i.form.reset()):t.logError("Could not import file because UI Grid was not found.")}}),!1)}}}])}()},561:(e,r,t)=>{angular.module("ui.grid.importer").run(["$templateCache",function(e){"use strict";e.put("ui-grid/importerMenuItem",t(226)),e.put("ui-grid/importerMenuItemContainer",t(901))}])}},r={};function t(i){var o=r[i];if(void 0!==o)return o.exports;var n=r[i]={exports:{}};return e[i](n,n.exports,t),n.exports}t(805),t(561)})();