From 044e426d22a173124ba65b8e956e8b83d0b42b82 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Fri, 26 Feb 2016 11:50:05 -0500 Subject: [PATCH] (js) Add missing vendor libs angular-file-upload (angularFileUpload) and angular-messages (ngMessages). --- .../js/vendor/angular-file-upload.js | 1999 +++++++++++++++++ .../js/vendor/angular-file-upload.js.map | 1 + .../js/vendor/angular-file-upload.min.js.map | 1 + .../js/vendor/angular-messages.js | 685 ++++++ .../js/vendor/angular-messages.min.js | 12 + .../js/vendor/angular-messages.min.js.map | 8 + 6 files changed, 2706 insertions(+) create mode 100644 UI/WebServerResources/js/vendor/angular-file-upload.js create mode 100644 UI/WebServerResources/js/vendor/angular-file-upload.js.map create mode 100644 UI/WebServerResources/js/vendor/angular-file-upload.min.js.map create mode 100644 UI/WebServerResources/js/vendor/angular-messages.js create mode 100644 UI/WebServerResources/js/vendor/angular-messages.min.js create mode 100644 UI/WebServerResources/js/vendor/angular-messages.min.js.map diff --git a/UI/WebServerResources/js/vendor/angular-file-upload.js b/UI/WebServerResources/js/vendor/angular-file-upload.js new file mode 100644 index 000000000..0d04a6963 --- /dev/null +++ b/UI/WebServerResources/js/vendor/angular-file-upload.js @@ -0,0 +1,1999 @@ +/* + angular-file-upload v2.2.0 + https://github.com/nervgh/angular-file-upload +*/ + +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["angular-file-upload"] = factory(); + else + root["angular-file-upload"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; +/******/ +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + + var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; }; + + var CONFIG = _interopRequire(__webpack_require__(1)); + + var options = _interopRequire(__webpack_require__(2)); + + var serviceFileUploader = _interopRequire(__webpack_require__(3)); + + var serviceFileLikeObject = _interopRequire(__webpack_require__(4)); + + var serviceFileItem = _interopRequire(__webpack_require__(5)); + + var serviceFileDirective = _interopRequire(__webpack_require__(6)); + + var serviceFileSelect = _interopRequire(__webpack_require__(7)); + + var serviceFileDrop = _interopRequire(__webpack_require__(8)); + + var serviceFileOver = _interopRequire(__webpack_require__(9)); + + var directiveFileSelect = _interopRequire(__webpack_require__(10)); + + var directiveFileDrop = _interopRequire(__webpack_require__(11)); + + var directiveFileOver = _interopRequire(__webpack_require__(12)); + + angular.module(CONFIG.name, []).value("fileUploaderOptions", options).factory("FileUploader", serviceFileUploader).factory("FileLikeObject", serviceFileLikeObject).factory("FileItem", serviceFileItem).factory("FileDirective", serviceFileDirective).factory("FileSelect", serviceFileSelect).factory("FileDrop", serviceFileDrop).factory("FileOver", serviceFileOver).directive("nvFileSelect", directiveFileSelect).directive("nvFileDrop", directiveFileDrop).directive("nvFileOver", directiveFileOver).run(["FileUploader", "FileLikeObject", "FileItem", "FileDirective", "FileSelect", "FileDrop", "FileOver", function (FileUploader, FileLikeObject, FileItem, FileDirective, FileSelect, FileDrop, FileOver) { + // only for compatibility + FileUploader.FileLikeObject = FileLikeObject; + FileUploader.FileItem = FileItem; + FileUploader.FileDirective = FileDirective; + FileUploader.FileSelect = FileSelect; + FileUploader.FileDrop = FileDrop; + FileUploader.FileOver = FileOver; + }]); + +/***/ }, +/* 1 */ +/***/ function(module, exports) { + + module.exports = { + "name": "angularFileUpload" + }; + +/***/ }, +/* 2 */ +/***/ function(module, exports) { + + "use strict"; + + module.exports = { + url: "/", + alias: "file", + headers: {}, + queue: [], + progress: 0, + autoUpload: false, + removeAfterUpload: false, + method: "POST", + filters: [], + formData: [], + queueLimit: Number.MAX_VALUE, + withCredentials: false + }; + +/***/ }, +/* 3 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + + var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; }; + + var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }; + + var CONFIG = _interopRequire(__webpack_require__(1)); + + var copy = angular.copy; + var extend = angular.extend; + var forEach = angular.forEach; + var isObject = angular.isObject; + var isNumber = angular.isNumber; + var isDefined = angular.isDefined; + var isArray = angular.isArray; + var element = angular.element; + + module.exports = function (fileUploaderOptions, $rootScope, $http, $window, FileLikeObject, FileItem) { + var File = $window.File; + var FormData = $window.FormData; + + var FileUploader = (function () { + /********************** + * PUBLIC + **********************/ + /** + * Creates an instance of FileUploader + * @param {Object} [options] + * @constructor + */ + + function FileUploader(options) { + _classCallCheck(this, FileUploader); + + var settings = copy(fileUploaderOptions); + + extend(this, settings, options, { + isUploading: false, + _nextIndex: 0, + _failFilterIndex: -1, + _directives: { select: [], drop: [], over: [] } + }); + + // add default filters + this.filters.unshift({ name: "queueLimit", fn: this._queueLimitFilter }); + this.filters.unshift({ name: "folder", fn: this._folderFilter }); + } + + _createClass(FileUploader, { + addToQueue: { + /** + * Adds items to the queue + * @param {File|HTMLInputElement|Object|FileList|Array} files + * @param {Object} [options] + * @param {Array|String} filters + */ + + value: function addToQueue(files, options, filters) { + var _this = this; + + var list = this.isArrayLikeObject(files) ? files : [files]; + var arrayOfFilters = this._getFilters(filters); + var count = this.queue.length; + var addedFileItems = []; + + forEach(list, function (some /*{File|HTMLInputElement|Object}*/) { + var temp = new FileLikeObject(some); + + if (_this._isValidFile(temp, arrayOfFilters, options)) { + var fileItem = new FileItem(_this, some, options); + addedFileItems.push(fileItem); + _this.queue.push(fileItem); + _this._onAfterAddingFile(fileItem); + } else { + var filter = arrayOfFilters[_this._failFilterIndex]; + _this._onWhenAddingFileFailed(temp, filter, options); + } + }); + + if (this.queue.length !== count) { + this._onAfterAddingAll(addedFileItems); + this.progress = this._getTotalProgress(); + } + + this._render(); + if (this.autoUpload) this.uploadAll(); + } + }, + removeFromQueue: { + /** + * Remove items from the queue. Remove last: index = -1 + * @param {FileItem|Number} value + */ + + value: function removeFromQueue(value) { + var index = this.getIndexOfItem(value); + var item = this.queue[index]; + if (item.isUploading) item.cancel(); + this.queue.splice(index, 1); + item._destroy(); + this.progress = this._getTotalProgress(); + } + }, + clearQueue: { + /** + * Clears the queue + */ + + value: function clearQueue() { + while (this.queue.length) { + this.queue[0].remove(); + } + this.progress = 0; + } + }, + uploadItem: { + /** + * Uploads a item from the queue + * @param {FileItem|Number} value + */ + + value: function uploadItem(value) { + var index = this.getIndexOfItem(value); + var item = this.queue[index]; + var transport = this.isHTML5 ? "_xhrTransport" : "_iframeTransport"; + + item._prepareToUploading(); + if (this.isUploading) { + return; + }this.isUploading = true; + this[transport](item); + } + }, + cancelItem: { + /** + * Cancels uploading of item from the queue + * @param {FileItem|Number} value + */ + + value: function cancelItem(value) { + var index = this.getIndexOfItem(value); + var item = this.queue[index]; + var prop = this.isHTML5 ? "_xhr" : "_form"; + if (item && item.isUploading) item[prop].abort(); + } + }, + uploadAll: { + /** + * Uploads all not uploaded items of queue + */ + + value: function uploadAll() { + var items = this.getNotUploadedItems().filter(function (item) { + return !item.isUploading; + }); + if (!items.length) { + return; + }forEach(items, function (item) { + return item._prepareToUploading(); + }); + items[0].upload(); + } + }, + cancelAll: { + /** + * Cancels all uploads + */ + + value: function cancelAll() { + var items = this.getNotUploadedItems(); + forEach(items, function (item) { + return item.cancel(); + }); + } + }, + isFile: { + /** + * Returns "true" if value an instance of File + * @param {*} value + * @returns {Boolean} + * @private + */ + + value: function isFile(value) { + return this.constructor.isFile(value); + } + }, + isFileLikeObject: { + /** + * Returns "true" if value an instance of FileLikeObject + * @param {*} value + * @returns {Boolean} + * @private + */ + + value: function isFileLikeObject(value) { + return this.constructor.isFileLikeObject(value); + } + }, + isArrayLikeObject: { + /** + * Returns "true" if value is array like object + * @param {*} value + * @returns {Boolean} + */ + + value: function isArrayLikeObject(value) { + return this.constructor.isArrayLikeObject(value); + } + }, + getIndexOfItem: { + /** + * Returns a index of item from the queue + * @param {Item|Number} value + * @returns {Number} + */ + + value: function getIndexOfItem(value) { + return isNumber(value) ? value : this.queue.indexOf(value); + } + }, + getNotUploadedItems: { + /** + * Returns not uploaded items + * @returns {Array} + */ + + value: function getNotUploadedItems() { + return this.queue.filter(function (item) { + return !item.isUploaded; + }); + } + }, + getReadyItems: { + /** + * Returns items ready for upload + * @returns {Array} + */ + + value: function getReadyItems() { + return this.queue.filter(function (item) { + return item.isReady && !item.isUploading; + }).sort(function (item1, item2) { + return item1.index - item2.index; + }); + } + }, + destroy: { + /** + * Destroys instance of FileUploader + */ + + value: function destroy() { + var _this = this; + + forEach(this._directives, function (key) { + forEach(_this._directives[key], function (object) { + object.destroy(); + }); + }); + } + }, + onAfterAddingAll: { + /** + * Callback + * @param {Array} fileItems + */ + + value: function onAfterAddingAll(fileItems) {} + }, + onAfterAddingFile: { + /** + * Callback + * @param {FileItem} fileItem + */ + + value: function onAfterAddingFile(fileItem) {} + }, + onWhenAddingFileFailed: { + /** + * Callback + * @param {File|Object} item + * @param {Object} filter + * @param {Object} options + */ + + value: function onWhenAddingFileFailed(item, filter, options) {} + }, + onBeforeUploadItem: { + /** + * Callback + * @param {FileItem} fileItem + */ + + value: function onBeforeUploadItem(fileItem) {} + }, + onProgressItem: { + /** + * Callback + * @param {FileItem} fileItem + * @param {Number} progress + */ + + value: function onProgressItem(fileItem, progress) {} + }, + onProgressAll: { + /** + * Callback + * @param {Number} progress + */ + + value: function onProgressAll(progress) {} + }, + onSuccessItem: { + /** + * Callback + * @param {FileItem} item + * @param {*} response + * @param {Number} status + * @param {Object} headers + */ + + value: function onSuccessItem(item, response, status, headers) {} + }, + onErrorItem: { + /** + * Callback + * @param {FileItem} item + * @param {*} response + * @param {Number} status + * @param {Object} headers + */ + + value: function onErrorItem(item, response, status, headers) {} + }, + onCancelItem: { + /** + * Callback + * @param {FileItem} item + * @param {*} response + * @param {Number} status + * @param {Object} headers + */ + + value: function onCancelItem(item, response, status, headers) {} + }, + onCompleteItem: { + /** + * Callback + * @param {FileItem} item + * @param {*} response + * @param {Number} status + * @param {Object} headers + */ + + value: function onCompleteItem(item, response, status, headers) {} + }, + onCompleteAll: { + /** + * Callback + */ + + value: function onCompleteAll() {} + }, + _getTotalProgress: { + /********************** + * PRIVATE + **********************/ + /** + * Returns the total progress + * @param {Number} [value] + * @returns {Number} + * @private + */ + + value: function _getTotalProgress(value) { + if (this.removeAfterUpload) { + return value || 0; + }var notUploaded = this.getNotUploadedItems().length; + var uploaded = notUploaded ? this.queue.length - notUploaded : this.queue.length; + var ratio = 100 / this.queue.length; + var current = (value || 0) * ratio / 100; + + return Math.round(uploaded * ratio + current); + } + }, + _getFilters: { + /** + * Returns array of filters + * @param {Array|String} filters + * @returns {Array} + * @private + */ + + value: function _getFilters(filters) { + if (!filters) { + return this.filters; + }if (isArray(filters)) { + return filters; + }var names = filters.match(/[^\s,]+/g); + return this.filters.filter(function (filter) { + return names.indexOf(filter.name) !== -1; + }); + } + }, + _render: { + /** + * Updates html + * @private + */ + + value: function _render() { + if (!$rootScope.$$phase) $rootScope.$apply(); + } + }, + _folderFilter: { + /** + * Returns "true" if item is a file (not folder) + * @param {File|FileLikeObject} item + * @returns {Boolean} + * @private + */ + + value: function _folderFilter(item) { + return !!(item.size || item.type); + } + }, + _queueLimitFilter: { + /** + * Returns "true" if the limit has not been reached + * @returns {Boolean} + * @private + */ + + value: function _queueLimitFilter() { + return this.queue.length < this.queueLimit; + } + }, + _isValidFile: { + /** + * Returns "true" if file pass all filters + * @param {File|Object} file + * @param {Array} filters + * @param {Object} options + * @returns {Boolean} + * @private + */ + + value: function _isValidFile(file, filters, options) { + var _this = this; + + this._failFilterIndex = -1; + return !filters.length ? true : filters.every(function (filter) { + _this._failFilterIndex++; + return filter.fn.call(_this, file, options); + }); + } + }, + _isSuccessCode: { + /** + * Checks whether upload successful + * @param {Number} status + * @returns {Boolean} + * @private + */ + + value: function _isSuccessCode(status) { + return status >= 200 && status < 300 || status === 304; + } + }, + _transformResponse: { + /** + * Transforms the server response + * @param {*} response + * @param {Object} headers + * @returns {*} + * @private + */ + + value: function _transformResponse(response, headers) { + var headersGetter = this._headersGetter(headers); + forEach($http.defaults.transformResponse, function (transformFn) { + response = transformFn(response, headersGetter); + }); + return response; + } + }, + _parseHeaders: { + /** + * Parsed response headers + * @param headers + * @returns {Object} + * @see https://github.com/angular/angular.js/blob/master/src/ng/http.js + * @private + */ + + value: function _parseHeaders(headers) { + var parsed = {}, + key, + val, + i; + + if (!headers) { + return parsed; + }forEach(headers.split("\n"), function (line) { + i = line.indexOf(":"); + key = line.slice(0, i).trim().toLowerCase(); + val = line.slice(i + 1).trim(); + + if (key) { + parsed[key] = parsed[key] ? parsed[key] + ", " + val : val; + } + }); + + return parsed; + } + }, + _headersGetter: { + /** + * Returns function that returns headers + * @param {Object} parsedHeaders + * @returns {Function} + * @private + */ + + value: function _headersGetter(parsedHeaders) { + return function (name) { + if (name) { + return parsedHeaders[name.toLowerCase()] || null; + } + return parsedHeaders; + }; + } + }, + _xhrTransport: { + /** + * The XMLHttpRequest transport + * @param {FileItem} item + * @private + */ + + value: function _xhrTransport(item) { + var _this = this; + + var xhr = item._xhr = new XMLHttpRequest(); + var form = new FormData(); + + this._onBeforeUploadItem(item); + + forEach(item.formData, function (obj) { + forEach(obj, function (value, key) { + form.append(key, value); + }); + }); + + if (typeof item._file.size != "number") { + throw new TypeError("The file specified is no longer valid"); + } + + form.append(item.alias, item._file, item.file.name); + + xhr.upload.onprogress = function (event) { + var progress = Math.round(event.lengthComputable ? event.loaded * 100 / event.total : 0); + _this._onProgressItem(item, progress); + }; + + xhr.onload = function () { + var headers = _this._parseHeaders(xhr.getAllResponseHeaders()); + var response = _this._transformResponse(xhr.response, headers); + var gist = _this._isSuccessCode(xhr.status) ? "Success" : "Error"; + var method = "_on" + gist + "Item"; + _this[method](item, response, xhr.status, headers); + _this._onCompleteItem(item, response, xhr.status, headers); + }; + + xhr.onerror = function () { + var headers = _this._parseHeaders(xhr.getAllResponseHeaders()); + var response = _this._transformResponse(xhr.response, headers); + _this._onErrorItem(item, response, xhr.status, headers); + _this._onCompleteItem(item, response, xhr.status, headers); + }; + + xhr.onabort = function () { + var headers = _this._parseHeaders(xhr.getAllResponseHeaders()); + var response = _this._transformResponse(xhr.response, headers); + _this._onCancelItem(item, response, xhr.status, headers); + _this._onCompleteItem(item, response, xhr.status, headers); + }; + + xhr.open(item.method, item.url, true); + + xhr.withCredentials = item.withCredentials; + + forEach(item.headers, function (value, name) { + xhr.setRequestHeader(name, value); + }); + + xhr.send(form); + this._render(); + } + }, + _iframeTransport: { + /** + * The IFrame transport + * @param {FileItem} item + * @private + */ + + value: function _iframeTransport(item) { + var _this = this; + + var form = element("
"); + var iframe = element("