{ "version": 3, "sources": ["../ui/app/components/mn_alerts.js", "../ui/app/components/mn_promise_helper.js"], "sourcesContent": ["/*\nCopyright 2015-Present Couchbase, Inc.\n\nUse of this software is governed by the Business Source License included in\nthe file licenses/BSL-Couchbase.txt. As of the Change Date specified in that\nfile, in accordance with the Business Source License, use of this software will\nbe governed by the Apache License, Version 2.0, included in the file\nlicenses/APL2.txt.\n*/\n\nimport angular from 'angular';\nimport _ from 'lodash';\nimport uiBootstrap from 'angular-ui-bootstrap';\n\nimport mnFilters from './mn_filters.js';\nimport template from \"./mn_alerts_popup_message.html\";\n\nexport default 'mnAlertsService';\n\n\nangular\n .module('mnAlertsService', [uiBootstrap, mnFilters])\n .service('mnAlertsService', [\"$uibModal\", \"$rootScope\", \"$timeout\", mnAlertsServiceFactory]);\n\nfunction mnAlertsServiceFactory($uibModal, $rootScope, $timeout) {\n var alerts = [];\n var alertsHistory = [];\n var clientAlerts = {\n hideCompatibility: false\n };\n var mnAlertsService = {\n setAlert: setAlert,\n formatAndSetAlerts: formatAndSetAlerts,\n showAlertInPopup: showAlertInPopup,\n alerts: alerts,\n removeItem: removeItem,\n isNewAlert: isNewAlert,\n clientAlerts: clientAlerts\n };\n\n return mnAlertsService;\n\n function showAlertInPopup(message, title) {\n var scope = $rootScope.$new();\n scope.alertsCtl = {\n message: message\n };\n scope.title = title;\n return $uibModal.open({\n scope: scope,\n template\n }).result;\n }\n\n function isNewAlert(item) {\n var findedItem = _.find(alertsHistory, item);\n return _.indexOf(alertsHistory, findedItem) === -1;\n }\n\n function startTimer(item, timeout) {\n return $timeout(function () {\n removeItem(item);\n }, parseInt(timeout, 10));\n }\n\n function removeItem(item) {\n var index = _.indexOf(alerts, item);\n item.timeout && $timeout.cancel(item.timeout);\n alerts.splice(index, 1);\n }\n\n function setAlert(type, message, timeout, id) {\n var item = {\n type: type || 'error',\n msg: message,\n id: id\n };\n\n //in case we get alert with the same message\n //but different id find and remove it\n var findedItem = _.find(alerts, {\n type: type,\n msg: message\n });\n\n if (findedItem) {\n removeItem(findedItem);\n }\n\n alerts.push(item);\n alertsHistory.push(item);\n\n if (timeout) {\n item.timeout = startTimer(item, timeout);\n }\n }\n function formatAndSetAlerts(incomingAlerts, type, timeout) {\n timeout = timeout || (60000 * 5);\n if ((angular.isArray(incomingAlerts) && angular.isString(incomingAlerts[0])) ||\n angular.isObject(incomingAlerts)) {\n angular.forEach(incomingAlerts, function (msg) {\n setAlert(type, msg, timeout);\n });\n }\n\n if (angular.isString(incomingAlerts)) {\n setAlert(type, incomingAlerts, timeout);\n }\n }\n}\n", "/*\nCopyright 2015-Present Couchbase, Inc.\n\nUse of this software is governed by the Business Source License included in\nthe file licenses/BSL-Couchbase.txt. As of the Change Date specified in that\nfile, in accordance with the Business Source License, use of this software will\nbe governed by the Apache License, Version 2.0, included in the file\nlicenses/APL2.txt.\n*/\n\nimport angular from 'angular';\nimport _ from 'lodash';\n\nimport mnAlertsService from './mn_alerts.js';\nimport mnHelper from './mn_helper.js';\n\nexport default 'mnPromiseHelper';\n\nangular\n .module('mnPromiseHelper', [mnAlertsService, mnHelper])\n .factory('mnPromiseHelper', [\"mnAlertsService\", \"mnHelper\", \"$timeout\", \"$rootScope\", mnPromiseHelperFactory]);\n\nfunction mnPromiseHelperFactory(mnAlertsService, mnHelper, $timeout, $rootScope) {\n\n return mnPromiseHelper;\n\n function mnPromiseHelper(scope, promise, modalInstance) {\n var spinnerNameOrFunction = 'viewLoading';\n var errorsNameOrCallback = 'errors';\n var pendingGlobalSpinnerQueries = {};\n var spinnerTimeout;\n var promiseHelper = {\n applyToScope: applyToScope,\n getPromise: getPromise,\n onSuccess: onSuccess,\n reloadState: reloadState,\n closeFinally: closeFinally,\n closeOnSuccess: closeOnSuccess,\n showErrorsSensitiveSpinner: showErrorsSensitiveSpinner,\n catchErrorsFromSuccess: catchErrorsFromSuccess,\n showSpinner: showSpinner,\n showGlobalSpinner: showGlobalSpinner,\n catchErrors: catchErrors,\n catchGlobalErrors: catchGlobalErrors,\n showGlobalSuccess: showGlobalSuccess,\n broadcast: broadcast,\n removeErrors: removeErrors,\n closeModal: closeModal\n }\n\n return promiseHelper;\n\n function getPromise() {\n return promise;\n }\n function onSuccess(cb) {\n promise.then(cb);\n return this;\n }\n function reloadState(state) {\n promise.then(function () {\n spinnerCtrl(true);\n mnHelper.reloadState(state);\n });\n return this;\n }\n function closeFinally() {\n promise['finally'](closeModal);\n return this;\n }\n function closeOnSuccess() {\n promise.then(closeModal);\n return this;\n }\n function showErrorsSensitiveSpinner(name, timer, scope) {\n name && setSpinnerName(name);\n maybeHandleSpinnerWithTimer(timer, scope);\n promise.then(clearSpinnerTimeout, hideSpinner);\n return this;\n }\n function catchErrorsFromSuccess(nameOrCallback) {\n nameOrCallback && setErrorsNameOrCallback(nameOrCallback);\n promise.then(function (resp) {\n errorsCtrl(extractErrors(resp));\n });\n return this;\n }\n function showSpinner(name, timer, scope) {\n name && setSpinnerName(name);\n maybeHandleSpinnerWithTimer(timer, scope);\n promise.then(hideSpinner, hideSpinner);\n return this;\n }\n\n function showGlobalSpinner() {\n var id = doShowGlobalSpinner();\n promise.then(hideGlobalSpinner(id), hideGlobalSpinner(id));\n return this;\n }\n function catchErrors(nameOrCallback) {\n nameOrCallback && setErrorsNameOrCallback(nameOrCallback);\n promise.then(removeErrors, function (resp) {\n if (resp.status !== -1) {\n errorsCtrl(extractErrors(resp));\n }\n });\n return this;\n }\n function catchGlobalErrors(errorMessage, timeout) {\n promise.then(null, function (resp) {\n if (resp.status !== -1) {\n mnAlertsService.formatAndSetAlerts(errorMessage || extractErrors(resp.data), 'error', timeout);\n }\n });\n return this;\n }\n function showGlobalSuccess(successMessage, timeout) {\n if (timeout === undefined) {\n timeout = 2500;\n }\n promise.then(function (resp) {\n mnAlertsService.formatAndSetAlerts(successMessage || resp.data, 'success', timeout);\n });\n return this;\n }\n function applyToScope(keyOrFunction) {\n promise.then(angular.isFunction(keyOrFunction) ? keyOrFunction : function (value) {\n scope[keyOrFunction] = value;\n }, function () {\n if (angular.isFunction(keyOrFunction)) {\n keyOrFunction(null);\n } else {\n delete scope[keyOrFunction];\n }\n });\n return this;\n }\n function broadcast(event, data) {\n promise.then(function () {\n $rootScope.$broadcast(event, data);\n });\n return this;\n }\n function spinnerCtrl(isLoaded) {\n if (angular.isFunction(spinnerNameOrFunction)) {\n spinnerNameOrFunction(isLoaded);\n } else {\n scope[spinnerNameOrFunction] = isLoaded;\n }\n }\n function errorsCtrl(errors) {\n if (angular.isFunction(errorsNameOrCallback)) {\n errorsNameOrCallback(errors);\n } else {\n scope[errorsNameOrCallback] = errors;\n }\n }\n function doShowGlobalSpinner() {\n var timer = $timeout(function () {\n $rootScope.mnGlobalSpinnerFlag = true;\n }, 100);\n var id = \"id\" + Math.random().toString(36).substr(2, 9);\n pendingGlobalSpinnerQueries[id] = timer;\n return id;\n }\n function hideGlobalSpinner(id) {\n return function () {\n $timeout.cancel(pendingGlobalSpinnerQueries[id]);\n delete pendingGlobalSpinnerQueries[id];\n if (_.isEmpty(pendingGlobalSpinnerQueries)) {\n $rootScope.mnGlobalSpinnerFlag = false;\n }\n }\n }\n function hideSpinner() {\n spinnerCtrl(false);\n clearSpinnerTimeout();\n }\n function removeErrors() {\n errorsCtrl(false);\n return this;\n }\n function setSpinnerName(name) {\n spinnerNameOrFunction = name;\n }\n function setErrorsNameOrCallback(nameOrCallback) {\n errorsNameOrCallback = nameOrCallback;\n }\n function closeModal() {\n modalInstance.close(scope);\n }\n function extractErrors(resp) {\n if (resp.status === 0) {\n return false;\n }\n var errors = resp.data && resp.data.errors !== undefined && _.keys(resp.data).length === 1 ? resp.data.errors : resp.data || resp ;\n return _.isEmpty(errors) ? false : errors;\n }\n function clearSpinnerTimeout() {\n if (spinnerTimeout) {\n $timeout.cancel(spinnerTimeout);\n }\n }\n function enableSpinnerTimeout(timer) {\n spinnerTimeout = $timeout(function () {\n spinnerCtrl(true);\n }, timer);\n }\n function maybeHandleSpinnerWithTimer(timer, scope) {\n if (timer) {\n enableSpinnerTimeout(timer);\n scope.$on(\"$destroy\", clearSpinnerTimeout);\n } else {\n spinnerCtrl(true);\n }\n }\n }\n}\n"], "mappings": "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", "names": [] }