(function () { 'use strict'; angular.module('ariaNg').factory('ariaNgCommonService', ['$location', '$timeout', 'base64', 'SweetAlert', '$translate', 'ariaNgConstants', 'ariaNgLogService', function ($location, $timeout, base64, SweetAlert, $translate, ariaNgConstants, ariaNgLogService) { return { generateUniqueId: function () { var sourceId = ariaNgConstants.appPrefix + '_' + Math.round(new Date().getTime() / 1000) + '_' + Math.random(); var hashedId = base64.encode(sourceId); return hashedId; }, showDialog: function (title, text, type) { $timeout(function () { SweetAlert.swal({ title: $translate.instant(title), text: $translate.instant(text), type: type, confirmButtonText: $translate.instant('OK') }); }, 100); }, showError: function (text) { ariaNgLogService.info('[ariaNgCommonService.showError] ' + text); this.showDialog('Error', text, 'error'); }, showOperationSucceeded: function (text) { this.showDialog('Operation Succeeded', text, 'success'); }, confirm: function (title, text, type, callback, notClose) { var options = { title: $translate.instant(title), text: $translate.instant(text), type: type, showCancelButton: true, showLoaderOnConfirm: !!notClose, closeOnConfirm: !notClose, confirmButtonText: $translate.instant('OK'), cancelButtonText: $translate.instant('Cancel') }; if (type === 'warning') { options.confirmButtonColor = '#F39C12'; } SweetAlert.swal(options, function (isConfirm) { if (!isConfirm) { return; } if (callback) { callback(); } }); }, getFileExtension: function (filePath) { if (!filePath || filePath.lastIndexOf('.') < 0) { return filePath; } return filePath.substring(filePath.lastIndexOf('.')); }, decodePercentEncodedString: function (s) { if (!s) { return s; } var ret = ''; for (var i = 0; i < s.length; i++) { var ch = s.charAt(i); if (ch === '%' && i < s.length - 2) { var code = s.substring(i + 1, i + 3); ret += String.fromCharCode(parseInt(code, 16)); i += 2; } else { ret += ch; } } return ret; }, extendArray: function (sourceArray, targetArray, keyProperty) { if (!targetArray || !sourceArray || sourceArray.length !== targetArray.length) { return false; } for (var i = 0; i < targetArray.length; i++) { if (targetArray[i][keyProperty] === sourceArray[i][keyProperty]) { angular.extend(targetArray[i], sourceArray[i]); } else { return false; } } return true; }, copyObjectTo: function (from, to) { if (!to) { return from; } for (var name in from) { if (!from.hasOwnProperty(name)) { continue; } var fromValue = from[name]; var toValue = to[name]; if (angular.isObject(fromValue) || angular.isArray(fromValue)) { to[name] = this.copyObjectTo(from[name], to[name]); } else { if (fromValue !== toValue) { to[name] = fromValue; } } } return to; }, pushArrayTo: function (array, items) { if (!angular.isArray(array)) { array = []; } if (!angular.isArray(items) || items.length < 1) { return array; } for (var i = 0; i < items.length; i++) { array.push(items[i]); } return array; }, combineArray: function () { var result = []; for (var i = 0; i < arguments.length; i++) { if (angular.isArray(arguments[i])) { this.pushArrayTo(result, arguments[i]); } else { result.push(arguments[i]); } } return result; }, countArray: function (array, value) { if (!angular.isArray(array) || array.length < 1) { return 0; } var count = 0; for (var i = 0; i < array.length; i++) { count += (array[i] === value ? 1 : 0); } return count; }, parseOrderType: function (value) { var values = value.split(':'); var obj = { type: values[0], order: values[1], equals: function (obj) { if (angular.isUndefined(obj.order)) { return this.type === obj.type; } else { return this.type === obj.type && this.order === obj.order; } }, getValue: function () { return this.type + ':' + this.order; } }; Object.defineProperty(obj, 'reverse', { get: function () { return this.order === 'desc'; }, set: function (value) { this.order = (value ? 'desc' : 'asc'); } }); return obj; }, getTimeOptions: function (timeList, withDisabled) { var options = []; if (withDisabled) { options.push({ name: 'Disabled', value: 0, optionValue: 0 }); } if (!angular.isArray(timeList) || timeList.length < 1) { return options; } for (var i = 0; i < timeList.length; i++) { var time = timeList[i]; var name = ''; var value = time; if (time < 1000) { value = time; name = (value === 1 ? 'format.time.millisecond' : 'format.time.milliseconds'); } else if (time < 1000 * 60) { value = time / 1000; name = (value === 1 ? 'format.time.second' : 'format.time.seconds'); } else if (time < 1000 * 60 * 24) { value = time / 1000 / 60; name = (value === 1 ? 'format.time.minute' : 'format.time.minutes'); } else { value = time / 1000 / 60 / 24; name = (value === 1 ? 'format.time.hour' : 'format.time.hours'); } options.push({ name: name, value: value, optionValue: time }); } return options; } }; }]); }());