aboutsummaryrefslogtreecommitdiffstats
path: root/SDNC-GUI-253/webapp/node_modules/ng-csv/build/ng-csv.js
diff options
context:
space:
mode:
Diffstat (limited to 'SDNC-GUI-253/webapp/node_modules/ng-csv/build/ng-csv.js')
-rw-r--r--SDNC-GUI-253/webapp/node_modules/ng-csv/build/ng-csv.js319
1 files changed, 319 insertions, 0 deletions
diff --git a/SDNC-GUI-253/webapp/node_modules/ng-csv/build/ng-csv.js b/SDNC-GUI-253/webapp/node_modules/ng-csv/build/ng-csv.js
new file mode 100644
index 0000000..80432ec
--- /dev/null
+++ b/SDNC-GUI-253/webapp/node_modules/ng-csv/build/ng-csv.js
@@ -0,0 +1,319 @@
+(function(window, document) {
+
+// Create all modules and define dependencies to make sure they exist
+// and are loaded in the correct order to satisfy dependency injection
+// before all nested files are concatenated by Grunt
+
+// Config
+angular.module('ngCsv.config', []).
+ value('ngCsv.config', {
+ debug: true
+ }).
+ config(['$compileProvider', function($compileProvider){
+ if (angular.isDefined($compileProvider.urlSanitizationWhitelist)) {
+ $compileProvider.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/);
+ } else {
+ $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/);
+ }
+ }]);
+
+// Modules
+angular.module('ngCsv.directives', ['ngCsv.services']);
+angular.module('ngCsv.services', []);
+angular.module('ngCsv',
+ [
+ 'ngCsv.config',
+ 'ngCsv.services',
+ 'ngCsv.directives',
+ 'ngSanitize'
+ ]);
+
+// Common.js package manager support (e.g. ComponentJS, WebPack)
+if (typeof module !== 'undefined' && typeof exports !== 'undefined' && module.exports === exports) {
+ module.exports = 'ngCsv';
+}
+/**
+ * Created by asafdav on 15/05/14.
+ */
+angular.module('ngCsv.services').
+ service('CSV', ['$q', function ($q) {
+
+ var EOL = '\r\n';
+ var BOM = "\ufeff";
+
+ var specialChars = {
+ '\\t': '\t',
+ '\\b': '\b',
+ '\\v': '\v',
+ '\\f': '\f',
+ '\\r': '\r'
+ };
+
+ /**
+ * Stringify one field
+ * @param data
+ * @param options
+ * @returns {*}
+ */
+ this.stringifyField = function (data, options) {
+ if (options.decimalSep === 'locale' && this.isFloat(data)) {
+ return data.toLocaleString();
+ }
+
+ if (options.decimalSep !== '.' && this.isFloat(data)) {
+ return data.toString().replace('.', options.decimalSep);
+ }
+
+ if (typeof data === 'string') {
+ data = data.replace(/"/g, '""'); // Escape double qoutes
+
+ if (options.quoteStrings || data.indexOf(',') > -1 || data.indexOf('\n') > -1 || data.indexOf('\r') > -1) {
+ data = options.txtDelim + data + options.txtDelim;
+ }
+
+ return data;
+ }
+
+ if (typeof data === 'boolean') {
+ return data ? 'TRUE' : 'FALSE';
+ }
+
+ return data;
+ };
+
+ /**
+ * Helper function to check if input is float
+ * @param input
+ * @returns {boolean}
+ */
+ this.isFloat = function (input) {
+ return +input === input && (!isFinite(input) || Boolean(input % 1));
+ };
+
+ /**
+ * Creates a csv from a data array
+ * @param data
+ * @param options
+ * * header - Provide the first row (optional)
+ * * fieldSep - Field separator, default: ',',
+ * * addByteOrderMarker - Add Byte order mark, default(false)
+ * @param callback
+ */
+ this.stringify = function (data, options) {
+ var def = $q.defer();
+
+ var that = this;
+ var csv = "";
+ var csvContent = "";
+
+ var dataPromise = $q.when(data).then(function (responseData) {
+ //responseData = angular.copy(responseData);//moved to row creation
+ // Check if there's a provided header array
+ if (angular.isDefined(options.header) && options.header) {
+ var encodingArray, headerString;
+
+ encodingArray = [];
+ angular.forEach(options.header, function (title, key) {
+ this.push(that.stringifyField(title, options));
+ }, encodingArray);
+
+ headerString = encodingArray.join(options.fieldSep ? options.fieldSep : ",");
+ csvContent += headerString + EOL;
+ }
+
+ var arrData = [];
+
+ if (angular.isArray(responseData)) {
+ arrData = responseData;
+ }
+ else if (angular.isFunction(responseData)) {
+ arrData = responseData();
+ }
+
+ // Check if using keys as labels
+ if (angular.isDefined(options.label) && options.label && typeof options.label === 'boolean') {
+ var labelArray, labelString;
+
+ labelArray = [];
+ angular.forEach(arrData[0], function(value, label) {
+ this.push(that.stringifyField(label, options));
+ }, labelArray);
+ labelString = labelArray.join(options.fieldSep ? options.fieldSep : ",");
+ csvContent += labelString + EOL;
+ }
+
+ angular.forEach(arrData, function (oldRow, index) {
+ var row = angular.copy(arrData[index]);
+ var dataString, infoArray;
+
+ infoArray = [];
+
+ var iterator = !!options.columnOrder ? options.columnOrder : row;
+ angular.forEach(iterator, function (field, key) {
+ var val = !!options.columnOrder ? row[field] : field;
+ this.push(that.stringifyField(val, options));
+ }, infoArray);
+
+ dataString = infoArray.join(options.fieldSep ? options.fieldSep : ",");
+ csvContent += index < arrData.length ? dataString + EOL : dataString;
+ });
+
+ // Add BOM if needed
+ if (options.addByteOrderMarker) {
+ csv += BOM;
+ }
+
+ // Append the content and resolve.
+ csv += csvContent;
+ def.resolve(csv);
+ });
+
+ if (typeof dataPromise['catch'] === 'function') {
+ dataPromise['catch'](function (err) {
+ def.reject(err);
+ });
+ }
+
+ return def.promise;
+ };
+
+ /**
+ * Helper function to check if input is really a special character
+ * @param input
+ * @returns {boolean}
+ */
+ this.isSpecialChar = function(input){
+ return specialChars[input] !== undefined;
+ };
+
+ /**
+ * Helper function to get what the special character was supposed to be
+ * since Angular escapes the first backslash
+ * @param input
+ * @returns {special character string}
+ */
+ this.getSpecialChar = function (input) {
+ return specialChars[input];
+ };
+
+
+ }]);
+/**
+ * ng-csv module
+ * Export Javascript's arrays to csv files from the browser
+ *
+ * Author: asafdav - https://github.com/asafdav
+ */
+angular.module('ngCsv.directives').
+ directive('ngCsv', ['$parse', '$q', 'CSV', '$document', '$timeout', function ($parse, $q, CSV, $document, $timeout) {
+ return {
+ restrict: 'AC',
+ scope: {
+ data: '&ngCsv',
+ filename: '@filename',
+ header: '&csvHeader',
+ columnOrder: '&csvColumnOrder',
+ txtDelim: '@textDelimiter',
+ decimalSep: '@decimalSeparator',
+ quoteStrings: '@quoteStrings',
+ fieldSep: '@fieldSeparator',
+ lazyLoad: '@lazyLoad',
+ addByteOrderMarker: "@addBom",
+ ngClick: '&',
+ charset: '@charset',
+ label: '&csvLabel'
+ },
+ controller: [
+ '$scope',
+ '$element',
+ '$attrs',
+ '$transclude',
+ function ($scope, $element, $attrs, $transclude) {
+ $scope.csv = '';
+
+ if (!angular.isDefined($scope.lazyLoad) || $scope.lazyLoad != "true") {
+ if (angular.isArray($scope.data)) {
+ $scope.$watch("data", function (newValue) {
+ $scope.buildCSV();
+ }, true);
+ }
+ }
+
+ $scope.getFilename = function () {
+ return $scope.filename || 'download.csv';
+ };
+
+ function getBuildCsvOptions() {
+ var options = {
+ txtDelim: $scope.txtDelim ? $scope.txtDelim : '"',
+ decimalSep: $scope.decimalSep ? $scope.decimalSep : '.',
+ quoteStrings: $scope.quoteStrings,
+ addByteOrderMarker: $scope.addByteOrderMarker
+ };
+ if (angular.isDefined($attrs.csvHeader)) options.header = $scope.$eval($scope.header);
+ if (angular.isDefined($attrs.csvColumnOrder)) options.columnOrder = $scope.$eval($scope.columnOrder);
+ if (angular.isDefined($attrs.csvLabel)) options.label = $scope.$eval($scope.label);
+
+ options.fieldSep = $scope.fieldSep ? $scope.fieldSep : ",";
+
+ // Replaces any badly formatted special character string with correct special character
+ options.fieldSep = CSV.isSpecialChar(options.fieldSep) ? CSV.getSpecialChar(options.fieldSep) : options.fieldSep;
+
+ return options;
+ }
+
+ /**
+ * Creates the CSV and updates the scope
+ * @returns {*}
+ */
+ $scope.buildCSV = function () {
+ var deferred = $q.defer();
+
+ $element.addClass($attrs.ngCsvLoadingClass || 'ng-csv-loading');
+
+ CSV.stringify($scope.data(), getBuildCsvOptions()).then(function (csv) {
+ $scope.csv = csv;
+ $element.removeClass($attrs.ngCsvLoadingClass || 'ng-csv-loading');
+ deferred.resolve(csv);
+ });
+ $scope.$apply(); // Old angular support
+
+ return deferred.promise;
+ };
+ }
+ ],
+ link: function (scope, element, attrs) {
+ function doClick() {
+ var charset = scope.charset || "utf-8";
+ var blob = new Blob([scope.csv], {
+ type: "text/csv;charset="+ charset + ";"
+ });
+
+ if (window.navigator.msSaveOrOpenBlob) {
+ navigator.msSaveBlob(blob, scope.getFilename());
+ } else {
+
+ var downloadContainer = angular.element('<div data-tap-disabled="true"><a></a></div>');
+ var downloadLink = angular.element(downloadContainer.children()[0]);
+ downloadLink.attr('href', window.URL.createObjectURL(blob));
+ downloadLink.attr('download', scope.getFilename());
+ downloadLink.attr('target', '_blank');
+
+ $document.find('body').append(downloadContainer);
+ $timeout(function () {
+ downloadLink[0].click();
+ downloadLink.remove();
+ }, null);
+ }
+ }
+
+ element.bind('click', function (e) {
+ scope.buildCSV().then(function (csv) {
+ doClick();
+ });
+ scope.$apply();
+ });
+ }
+ };
+ }]);
+})(window, document); \ No newline at end of file