{"version":3,"file":"../app.js","sources":["app.js"],"sourcesContent":["\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var configure, i18nInit, init, module, modules, oldWindowOpen, pluginsModules, pluginsWithModule, taiga;\n\n this.taiga = taiga = {};\n\n taiga.emojis = window.emojis;\n\n this.taigaContribPlugins = this.taigaContribPlugins || window.taigaContribPlugins || [];\n\n taiga.generateHash = function(components) {\n if (components == null) {\n components = [];\n }\n components = _.map(components, function(x) {\n return JSON.stringify(x);\n });\n return hex_sha1(components.join(\":\"));\n };\n\n taiga.generateUniqueSessionIdentifier = function() {\n var date, randomNumber;\n date = (new Date()).getTime();\n randomNumber = Math.floor(Math.random() * 0x9000000);\n return taiga.generateHash([date, randomNumber]);\n };\n\n taiga.sessionId = taiga.generateUniqueSessionIdentifier();\n\n oldWindowOpen = window.open;\n\n window.open = (function(_this) {\n return function(url, name, config) {\n if (url.startsWith('/')) {\n url = document.baseURI + url;\n }\n return oldWindowOpen(url);\n };\n })(this);\n\n configure = function($routeProvider, $locationProvider, $httpProvider, $provide, $tgEventsProvider, $compileProvider, $translateProvider, $translatePartialLoaderProvider, $animateProvider, $logProvider) {\n var authHttpIntercept, blockingIntercept, decorators, defaultHeaders, loaderIntercept, originalWhen, preferedLangCode, userInfo, versionCheckHttpIntercept;\n $animateProvider.classNameFilter(/^(?:(?!ng-animate-disabled).)*$/);\n originalWhen = $routeProvider.when;\n $routeProvider.when = function(path, route) {\n route.resolve || (route.resolve = {});\n angular.extend(route.resolve, {\n languageLoad: [\n \"$q\", \"$translate\", function($q, $translate) {\n var deferred;\n deferred = $q.defer();\n $translate(\"COMMON.YES\").then(function() {\n return deferred.resolve();\n });\n return deferred.promise;\n }\n ],\n projectLoaded: [\n \"$q\", \"tgProjectService\", \"$route\", function($q, projectService, $route) {\n var deferred, ref;\n deferred = $q.defer();\n projectService.setSection((ref = $route.current.$$route) != null ? ref.section : void 0);\n if ($route.current.params.pslug) {\n projectService.setProjectBySlug($route.current.params.pslug).then(deferred.resolve);\n } else {\n projectService.cleanProject();\n deferred.resolve();\n }\n return deferred.promise;\n }\n ]\n });\n return originalWhen.call($routeProvider, path, route);\n };\n $routeProvider.when(\"/\", {\n templateUrl: \"home/home.html\",\n controller: \"Home\",\n controllerAs: \"vm\",\n loader: true,\n title: \"HOME.PAGE_TITLE\",\n loader: true,\n description: \"HOME.PAGE_DESCRIPTION\",\n joyride: \"dashboard\"\n });\n $routeProvider.when(\"/discover\", {\n templateUrl: \"discover/discover-home/discover-home.html\",\n controller: \"DiscoverHome\",\n controllerAs: \"vm\",\n title: \"PROJECT.NAVIGATION.DISCOVER\",\n loader: true\n });\n $routeProvider.when(\"/discover/search\", {\n templateUrl: \"discover/discover-search/discover-search.html\",\n title: \"PROJECT.NAVIGATION.DISCOVER\",\n loader: true,\n controller: \"DiscoverSearch\",\n controllerAs: \"vm\",\n reloadOnSearch: false\n });\n $routeProvider.when(\"/projects/\", {\n templateUrl: \"projects/listing/projects-listing.html\",\n access: {\n requiresLogin: true\n },\n title: \"PROJECTS.PAGE_TITLE\",\n description: \"PROJECTS.PAGE_DESCRIPTION\",\n loader: true,\n controller: \"ProjectsListing\",\n controllerAs: \"vm\"\n });\n $routeProvider.when(\"/project/new\", {\n title: \"PROJECT.CREATE.TITLE\",\n templateUrl: \"projects/create/create-project.html\",\n loader: true,\n controller: \"CreateProjectCtrl\",\n controllerAs: \"vm\"\n });\n $routeProvider.when(\"/project/new/scrum\", {\n title: \"PROJECT.CREATE.TITLE\",\n template: \"\",\n loader: true\n });\n $routeProvider.when(\"/project/new/kanban\", {\n title: \"PROJECT.CREATE.TITLE\",\n template: \"\",\n loader: true\n });\n $routeProvider.when(\"/project/new/duplicate\", {\n title: \"PROJECT.CREATE.TITLE\",\n template: \"\",\n loader: true\n });\n $routeProvider.when(\"/project/new/import/:platform?\", {\n title: \"PROJECT.CREATE.TITLE\",\n template: \"\",\n loader: true\n });\n $routeProvider.when(\"/project/:pslug/\", {\n template: \"\",\n loader: true,\n controller: \"ProjectRouter\"\n });\n $routeProvider.when(\"/project/:pslug/timeline\", {\n templateUrl: \"projects/project/project.html\",\n loader: true,\n controller: \"Project\",\n controllerAs: \"vm\",\n section: \"project-timeline\"\n });\n $routeProvider.when(\"/project/:pslug/t/:ref\", {\n loader: true,\n controller: \"DetailController\",\n template: \"\"\n });\n $routeProvider.when(\"/project/:pslug/search\", {\n templateUrl: \"search/search.html\",\n reloadOnSearch: false,\n section: \"search\",\n loader: true\n });\n $routeProvider.when(\"/project/:pslug/epics\", {\n section: \"epics\",\n templateUrl: \"epics/dashboard/epics-dashboard.html\",\n loader: true,\n controller: \"EpicsDashboardCtrl\",\n controllerAs: \"vm\"\n });\n $routeProvider.when(\"/project/:pslug/epic/:epicref\", {\n templateUrl: \"epic/epic-detail.html\",\n loader: true,\n section: \"epics\"\n });\n $routeProvider.when(\"/project/:pslug/backlog\", {\n templateUrl: \"backlog/backlog.html\",\n loader: true,\n section: \"backlog\",\n joyride: \"backlog\"\n });\n $routeProvider.when(\"/project/:pslug/kanban\", {\n templateUrl: \"kanban/kanban.html\",\n loader: true,\n section: \"kanban\",\n joyride: \"kanban\"\n });\n $routeProvider.when(\"/project/:pslug/taskboard/:sslug\", {\n templateUrl: \"taskboard/taskboard.html\",\n loader: true,\n section: \"backlog\"\n });\n $routeProvider.when(\"/project/:pslug/us/:usref\", {\n templateUrl: \"us/us-detail.html\",\n loader: true,\n section: \"backlog-kanban\"\n });\n $routeProvider.when(\"/project/:pslug/task/:taskref\", {\n templateUrl: \"task/task-detail.html\",\n loader: true,\n section: \"backlog-kanban\"\n });\n $routeProvider.when(\"/project/:pslug/wiki\", {\n redirectTo: function(params) {\n return \"/project/\" + params.pslug + \"/wiki/home\";\n }\n });\n $routeProvider.when(\"/project/:pslug/wiki-list\", {\n templateUrl: \"wiki/wiki-list.html\",\n loader: true,\n section: \"wiki\"\n });\n $routeProvider.when(\"/project/:pslug/wiki/:slug\", {\n templateUrl: \"wiki/wiki.html\",\n loader: true,\n section: \"wiki\"\n });\n $routeProvider.when(\"/project/:pslug/team\", {\n templateUrl: \"team/team.html\",\n loader: true,\n section: \"team\"\n });\n $routeProvider.when(\"/project/:pslug/issues\", {\n templateUrl: \"issue/issues.html\",\n loader: true,\n section: \"issues\"\n });\n $routeProvider.when(\"/project/:pslug/issue/:issueref\", {\n templateUrl: \"issue/issues-detail.html\",\n loader: true,\n section: \"issues\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/details\", {\n templateUrl: \"admin/admin-project-profile.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/default-values\", {\n templateUrl: \"admin/admin-project-default-values.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/modules\", {\n templateUrl: \"admin/admin-project-modules.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/export\", {\n templateUrl: \"admin/admin-project-export.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/reports\", {\n templateUrl: \"admin/admin-project-reports.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/status\", {\n templateUrl: \"admin/admin-project-values-status.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/points\", {\n templateUrl: \"admin/admin-project-values-points.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/priorities\", {\n templateUrl: \"admin/admin-project-values-priorities.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/severities\", {\n templateUrl: \"admin/admin-project-values-severities.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/types\", {\n templateUrl: \"admin/admin-project-values-types.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/custom-fields\", {\n templateUrl: \"admin/admin-project-values-custom-fields.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/tags\", {\n templateUrl: \"admin/admin-project-values-tags.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/due-dates\", {\n templateUrl: \"admin/admin-project-values-due-dates.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/kanban-power-ups\", {\n templateUrl: \"admin/admin-project-values-kanban-power-ups.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/memberships\", {\n templateUrl: \"admin/admin-memberships.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/roles\", {\n templateUrl: \"admin/admin-roles.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/webhooks\", {\n templateUrl: \"admin/admin-third-parties-webhooks.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/github\", {\n templateUrl: \"admin/admin-third-parties-github.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/gitlab\", {\n templateUrl: \"admin/admin-third-parties-gitlab.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/bitbucket\", {\n templateUrl: \"admin/admin-third-parties-bitbucket.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/gogs\", {\n templateUrl: \"admin/admin-third-parties-gogs.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/contrib/:plugin\", {\n templateUrl: \"contrib/main.html\"\n });\n $routeProvider.when(\"/project/:pslug/transfer/:token\", {\n templateUrl: \"projects/transfer/transfer-page.html\",\n loader: true,\n controller: \"Project\",\n controllerAs: \"vm\"\n });\n $routeProvider.when(\"/user-settings/user-profile\", {\n templateUrl: \"user/user-profile.html\"\n });\n $routeProvider.when(\"/user-settings/user-change-password\", {\n templateUrl: \"user/user-change-password.html\"\n });\n $routeProvider.when(\"/user-settings/user-project-settings\", {\n templateUrl: \"user/user-project-settings.html\"\n });\n $routeProvider.when(\"/user-settings/mail-notifications\", {\n templateUrl: \"user/mail-notifications.html\"\n });\n $routeProvider.when(\"/user-settings/live-notifications\", {\n templateUrl: \"user/live-notifications.html\"\n });\n $routeProvider.when(\"/user-settings/web-notifications\", {\n templateUrl: \"user/web-notifications.html\"\n });\n $routeProvider.when(\"/change-email/:email_token\", {\n templateUrl: \"user/change-email.html\"\n });\n $routeProvider.when(\"/verify-email/:email_token\", {\n templateUrl: \"user/verify-email.html\"\n });\n $routeProvider.when(\"/cancel-account/:cancel_token\", {\n templateUrl: \"user/cancel-account.html\"\n });\n $routeProvider.when(\"/user-settings/contrib/:plugin\", {\n templateUrl: \"contrib/user-settings.html\"\n });\n $routeProvider.when(\"/profile\", {\n templateUrl: \"profile/profile.html\",\n loader: true,\n access: {\n requiresLogin: true\n },\n controller: \"Profile\",\n controllerAs: \"vm\"\n });\n $routeProvider.when(\"/notifications\", {\n templateUrl: \"notifications/notifications.html\",\n loader: true,\n access: {\n requiresLogin: true\n },\n controller: \"Notifications\",\n controllerAs: \"vm\"\n });\n $routeProvider.when(\"/profile/:slug\", {\n templateUrl: \"profile/profile.html\",\n loader: true,\n controller: \"Profile\",\n controllerAs: \"vm\"\n });\n $routeProvider.when(\"/login\", {\n templateUrl: \"auth/login.html\",\n title: \"LOGIN.PAGE_TITLE\",\n description: \"LOGIN.PAGE_DESCRIPTION\",\n disableHeader: true,\n controller: \"LoginPage\"\n });\n if (window.taigaConfig.publicRegisterEnabled) {\n $routeProvider.when(\"/register\", {\n templateUrl: \"auth/register.html\",\n title: \"REGISTER.PAGE_TITLE\",\n description: \"REGISTER.PAGE_DESCRIPTION\",\n disableHeader: true\n });\n }\n $routeProvider.when(\"/forgot-password\", {\n templateUrl: \"auth/forgot-password.html\",\n title: \"FORGOT_PASSWORD.PAGE_TITLE\",\n description: \"FORGOT_PASSWORD.PAGE_DESCRIPTION\",\n disableHeader: true\n });\n $routeProvider.when(\"/change-password/:token\", {\n templateUrl: \"auth/change-password-from-recovery.html\",\n title: \"CHANGE_PASSWORD.PAGE_TITLE\",\n description: \"CHANGE_PASSWORD.PAGE_TITLE\",\n disableHeader: true\n });\n $routeProvider.when(\"/invitation/:token\", {\n templateUrl: \"auth/invitation.html\",\n title: \"INVITATION.PAGE_TITLE\",\n description: \"INVITATION.PAGE_DESCRIPTION\",\n disableHeader: true\n });\n $routeProvider.when(\"/external-apps\", {\n templateUrl: \"external-apps/external-app.html\",\n title: \"EXTERNAL_APP.PAGE_TITLE\",\n description: \"EXTERNAL_APP.PAGE_DESCRIPTION\",\n controller: \"ExternalApp\",\n controllerAs: \"vm\",\n disableHeader: true,\n mobileViewport: true\n });\n $routeProvider.when(\"/blocked-project/:pslug/\", {\n templateUrl: \"projects/project/blocked-project.html\",\n loader: true\n });\n $routeProvider.when(\"/error\", {\n templateUrl: \"error/error.html\"\n });\n $routeProvider.when(\"/not-found\", {\n templateUrl: \"error/not-found.html\"\n });\n $routeProvider.when(\"/permission-denied\", {\n templateUrl: \"error/permission-denied.html\"\n });\n $routeProvider.otherwise({\n templateUrl: \"error/not-found.html\"\n });\n $locationProvider.html5Mode({\n enabled: true,\n requireBase: true\n });\n defaultHeaders = {\n \"Content-Type\": \"application/json\",\n \"Accept-Language\": window.taigaConfig.defaultLanguage || \"en\",\n \"X-Session-Id\": taiga.sessionId\n };\n $httpProvider.defaults.headers[\"delete\"] = defaultHeaders;\n $httpProvider.defaults.headers.patch = defaultHeaders;\n $httpProvider.defaults.headers.post = defaultHeaders;\n $httpProvider.defaults.headers.put = defaultHeaders;\n $httpProvider.defaults.headers.get = {\n \"X-Session-Id\": taiga.sessionId\n };\n $httpProvider.useApplyAsync(true);\n $tgEventsProvider.setSessionId(taiga.sessionId);\n authHttpIntercept = function($q, $location, $navUrls, $lightboxService, errorHandlingService, $injector, urls, storage) {\n var httpResponseError, retry;\n retry = {\n inProgress: false,\n promise: null\n };\n httpResponseError = function(response) {\n if (response.config.url.includes('/auth/refresh')) {\n return $q.reject(response);\n }\n if (response.status === 0 || (response.status === -1 && !response.config.cancelable)) {\n $lightboxService.closeAll();\n errorHandlingService.error();\n } else if (response.status === 401 && $location.url().indexOf('/login') === -1) {\n return new Promise((function(_this) {\n return function(resolve, reject) {\n var $http, apiUrl, errorToken, nextUrl, refreshToken, refreshTokenReponse, removeUser, request, search;\n $http = $injector.get('$http');\n removeUser = function() {\n storage.remove(\"token\");\n return storage.remove(\"userInfo\");\n };\n refreshTokenReponse = function(responseRefresh) {\n storage.set(\"token\", responseRefresh.data.auth_token);\n storage.set(\"refresh\", responseRefresh.data.refresh);\n response.config.headers.Authorization = \"Bearer \" + responseRefresh.data.auth_token;\n return $http(response.config).then(function(result) {\n return resolve(result);\n });\n };\n errorToken = function() {\n var nextUrl, search;\n nextUrl = $location.url();\n search = $location.search();\n storage.remove(\"refresh\");\n removeUser();\n if (search.force_next) {\n return window.location.href = $navUrls.resolve(\"login\") + '?force_next=' + search.force_next;\n } else {\n return window.location.href = $navUrls.resolve(\"login\") + '?unauthorized=true&next=' + nextUrl;\n }\n };\n if (retry.inProgress) {\n return retry.promise.then(function(responseRefresh) {\n return refreshTokenReponse(responseRefresh)[\"catch\"](function(err) {\n return reject(err);\n });\n })[\"catch\"](function(err) {\n errorToken();\n return reject(err);\n });\n } else {\n retry.inProgress = true;\n apiUrl = urls.resolve('refresh');\n refreshToken = storage.get(\"refresh\");\n if (refreshToken) {\n request = $http.post(apiUrl, {\n refresh: refreshToken\n });\n retry.promise = request;\n request.then(function(responseRefresh) {\n retry.inProgress = false;\n return refreshTokenReponse(responseRefresh)[\"catch\"](function(err) {\n return reject(err);\n });\n });\n return request[\"catch\"](function(err) {\n retry.inProgress = false;\n errorToken();\n return reject(err);\n });\n } else {\n window.location.href = $navUrls.resolve(\"login\") + '?force_login';\n nextUrl = $location.url();\n search = $location.search();\n removeUser();\n if (search.force_next) {\n window.location.href = $navUrls.resolve(\"login\") + '?force_next=' + search.force_next;\n } else {\n window.location.href = $navUrls.resolve(\"login\") + '?unauthorized=true&next=' + nextUrl;\n }\n reject(response);\n }\n }\n };\n })(this));\n }\n return $q.reject(response);\n };\n return {\n responseError: httpResponseError\n };\n };\n $provide.factory(\"authHttpIntercept\", [\"$q\", \"$location\", \"$tgNavUrls\", \"lightboxService\", \"tgErrorHandlingService\", \"$injector\", \"$tgUrls\", \"$tgStorage\", authHttpIntercept]);\n $httpProvider.interceptors.push(\"authHttpIntercept\");\n loaderIntercept = function($q, loaderService) {\n return {\n request: function(config) {\n loaderService.logRequest();\n return config;\n },\n requestError: function(rejection) {\n loaderService.logResponse();\n return $q.reject(rejection);\n },\n responseError: function(rejection) {\n loaderService.logResponse();\n return $q.reject(rejection);\n },\n response: function(response) {\n loaderService.logResponse();\n return response;\n }\n };\n };\n $provide.factory(\"loaderIntercept\", [\"$q\", \"tgLoader\", loaderIntercept]);\n $httpProvider.interceptors.push(\"loaderIntercept\");\n versionCheckHttpIntercept = function($q) {\n var httpResponseError;\n httpResponseError = function(response) {\n var $injector;\n if (response.status === 400 && response.data.version) {\n $injector = angular.element(\"body\").injector();\n $injector.invoke([\n \"$tgConfirm\", \"$translate\", (function(_this) {\n return function($confirm, $translate) {\n var versionErrorMsg;\n versionErrorMsg = $translate.instant(\"ERROR.VERSION_ERROR\");\n return $confirm.notify(\"error\", versionErrorMsg, null, 10000);\n };\n })(this)\n ]);\n }\n return $q.reject(response);\n };\n return {\n responseError: httpResponseError\n };\n };\n $provide.factory(\"versionCheckHttpIntercept\", [\"$q\", versionCheckHttpIntercept]);\n $httpProvider.interceptors.push(\"versionCheckHttpIntercept\");\n blockingIntercept = function($q, errorHandlingService) {\n var redirectToBlockedPage, responseError, responseOk;\n redirectToBlockedPage = function() {\n return errorHandlingService.block();\n };\n responseOk = function(response) {\n if (response.data.blocked_code) {\n redirectToBlockedPage();\n }\n return response;\n };\n responseError = function(response) {\n if (response.status === 451) {\n redirectToBlockedPage();\n }\n return $q.reject(response);\n };\n return {\n response: responseOk,\n responseError: responseError\n };\n };\n $provide.factory(\"blockingIntercept\", [\"$q\", \"tgErrorHandlingService\", blockingIntercept]);\n $httpProvider.interceptors.push(\"blockingIntercept\");\n $compileProvider.debugInfoEnabled(window.taigaConfig.debugInfo || false);\n if (localStorage.userInfo) {\n userInfo = JSON.parse(localStorage.userInfo);\n }\n preferedLangCode = (userInfo != null ? userInfo.lang : void 0) || window.taigaConfig.defaultLanguage || \"en\";\n $translatePartialLoaderProvider.addPart('taiga');\n $translateProvider.useLoader('$translatePartialLoader', {\n urlTemplate: window._version + '/locales/{part}/locale-{lang}.json'\n }).useSanitizeValueStrategy('escapeParameters').addInterpolation('$translateMessageFormatInterpolation').preferredLanguage(preferedLangCode).useMissingTranslationHandlerLog();\n $translateProvider.fallbackLanguage(\"en\");\n decorators = window.getDecorators();\n _.each(decorators, function(decorator) {\n return $provide.decorator(decorator.provider, decorator.decorator);\n });\n $logProvider.debugEnabled(window.taigaConfig.debug);\n if (window.taigaConfig.debug) {\n return console.info(\"Debug mode is enable\");\n }\n };\n\n i18nInit = function(lang, $translate) {\n var messages;\n moment.locale(lang);\n document.querySelector('html').setAttribute('lang', lang);\n if (lang !== 'en') {\n ljs.load((\"/\" + window._version + \"/locales/moment-locales/\") + lang + \".js\");\n }\n messages = {\n defaultMessage: $translate.instant(\"COMMON.FORM_ERRORS.DEFAULT_MESSAGE\"),\n type: {\n email: $translate.instant(\"COMMON.FORM_ERRORS.TYPE_EMAIL\"),\n url: $translate.instant(\"COMMON.FORM_ERRORS.TYPE_URL\"),\n urlstrict: $translate.instant(\"COMMON.FORM_ERRORS.TYPE_URLSTRICT\"),\n number: $translate.instant(\"COMMON.FORM_ERRORS.TYPE_NUMBER\"),\n digits: $translate.instant(\"COMMON.FORM_ERRORS.TYPE_DIGITS\"),\n dateIso: $translate.instant(\"COMMON.FORM_ERRORS.TYPE_DATEISO\"),\n alphanum: $translate.instant(\"COMMON.FORM_ERRORS.TYPE_ALPHANUM\"),\n phone: $translate.instant(\"COMMON.FORM_ERRORS.TYPE_PHONE\")\n },\n notnull: $translate.instant(\"COMMON.FORM_ERRORS.NOTNULL\"),\n notblank: $translate.instant(\"COMMON.FORM_ERRORS.NOT_BLANK\"),\n required: $translate.instant(\"COMMON.FORM_ERRORS.REQUIRED\"),\n regexp: $translate.instant(\"COMMON.FORM_ERRORS.REGEXP\"),\n min: $translate.instant(\"COMMON.FORM_ERRORS.MIN\"),\n max: $translate.instant(\"COMMON.FORM_ERRORS.MAX\"),\n range: $translate.instant(\"COMMON.FORM_ERRORS.RANGE\"),\n minlength: $translate.instant(\"COMMON.FORM_ERRORS.MIN_LENGTH\"),\n maxlength: $translate.instant(\"COMMON.FORM_ERRORS.MAX_LENGTH\"),\n rangelength: $translate.instant(\"COMMON.FORM_ERRORS.RANGE_LENGTH\"),\n mincheck: $translate.instant(\"COMMON.FORM_ERRORS.MIN_CHECK\"),\n maxcheck: $translate.instant(\"COMMON.FORM_ERRORS.MAX_CHECK\"),\n rangecheck: $translate.instant(\"COMMON.FORM_ERRORS.RANGE_CHECK\"),\n equalto: $translate.instant(\"COMMON.FORM_ERRORS.EQUAL_TO\"),\n linewidth: $translate.instant(\"COMMON.FORM_ERRORS.LINEWIDTH\"),\n pikaday: $translate.instant(\"COMMON.FORM_ERRORS.PIKADAY\")\n };\n return checksley.updateMessages('default', messages);\n };\n\n init = function($log, $rootscope, $auth, $events, $analytics, $tagManager, $userPilot, $translate, $location, $navUrls, appMetaService, loaderService, navigationBarService, errorHandlingService, lightboxService, $tgConfig, projectService) {\n var lang, un, user, validators;\n $log.debug(\"Initialize application\");\n $rootscope.$on('$translatePartialLoaderStructureChanged', function() {\n return $translate.refresh();\n });\n validators = {\n linewidth: function(val, width) {\n var lines, valid;\n lines = taiga.nl2br(val).split(\"
\");\n valid = _.every(lines, function(line) {\n return line.length < width;\n });\n return valid;\n },\n pikaday: function(val) {\n var prettyDate;\n prettyDate = $translate.instant(\"COMMON.PICKERDATE.FORMAT\");\n return moment(val, prettyDate).isValid();\n },\n url: function(val) {\n var re_weburl;\n re_weburl = new RegExp(\"^\" + \"(?:(?:https?|ftp)://)\" + \"(?:\\\\S+(?::\\\\S*)?@)?\" + \"(?:\" + \"(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})\" + \"(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})\" + \"(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})\" + \"(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])\" + \"(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}\" + \"(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))\" + \"|\" + \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\" + \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\" + \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\" + \"\\\\.?\" + \")\" + \"(?::\\\\d{2,5})?\" + \"(?:[/?#]\\\\S*)?\" + \"$\", \"i\");\n return re_weburl.test(val);\n }\n };\n checksley.updateValidators(validators);\n $rootscope.contribPlugins = this.taigaContribPlugins;\n $rootscope.adminPlugins = _.filter(this.taigaContribPlugins, {\n \"type\": \"admin\"\n });\n $rootscope.authPlugins = _.filter(this.taigaContribPlugins, {\n \"type\": \"auth\"\n });\n $rootscope.userSettingsPlugins = _.filter(this.taigaContribPlugins, {\n \"type\": \"userSettings\"\n });\n lang = null;\n $rootscope.$on(\"$translateChangeEnd\", function(e, ctx) {\n var legacy, rtlLanguages;\n if (lang !== ctx.language) {\n lang = ctx.language;\n i18nInit(lang, $translate);\n rtlLanguages = $tgConfig.get(\"rtlLanguages\", []);\n $rootscope.isRTL = rtlLanguages.indexOf(lang) > -1;\n legacy = document.querySelector('tg-legacy');\n return legacy.translations = {\n translationTable: $translate.getTranslationTable(lang),\n lan: lang\n };\n }\n });\n $events.setupConnection();\n if ($auth.isAuthenticated()) {\n user = $auth.getUser();\n }\n $analytics.initialize();\n $tagManager.initialize();\n $userPilot.initialize();\n $userPilot.identify();\n $rootscope.$on('$locationChangeStart', function(event) {\n errorHandlingService.init();\n if (lightboxService.getLightboxOpen().length) {\n event.preventDefault();\n return lightboxService.closeAll();\n }\n });\n un = $rootscope.$on('$routeChangeStart', function(event, next) {\n if (next.loader) {\n loaderService.start(true);\n }\n return un();\n });\n return $rootscope.$on('$routeChangeSuccess', function(event, next) {\n var description, ref, title;\n if ((ref = projectService.project) != null ? ref.get('blocked_code') : void 0) {\n errorHandlingService.block();\n }\n if (next.loader) {\n loaderService.start(true);\n }\n if (next.access && next.access.requiresLogin) {\n if (!$auth.isAuthenticated()) {\n $location.path($navUrls.resolve(\"login\"));\n }\n }\n if (next.title || next.description) {\n title = $translate.instant(next.title || \"\");\n description = $translate.instant(next.description || \"\");\n appMetaService.setAll(title, description);\n }\n if (next.mobileViewport) {\n appMetaService.addMobileViewport();\n } else {\n appMetaService.removeMobileViewport();\n }\n if (next.disableHeader) {\n return navigationBarService.disableHeader();\n } else {\n return navigationBarService.enableHeader();\n }\n });\n };\n\n angular.module('infinite-scroll').value('THROTTLE_MILLISECONDS', 500);\n\n pluginsWithModule = _.filter(this.taigaContribPlugins, function(plugin) {\n return plugin.module;\n });\n\n pluginsModules = _.map(pluginsWithModule, function(plugin) {\n return plugin.module;\n });\n\n modules = [\"taigaBase\", \"taigaCommon\", \"taigaResources\", \"taigaResources2\", \"taigaAuth\", \"taigaEvents\", \"taigaHome\", \"taigaNavigationBar\", \"taigaProjects\", \"taigaRelatedTasks\", \"taigaBacklog\", \"taigaTaskboard\", \"taigaKanban\", \"taigaIssues\", \"taigaUserStories\", \"taigaTasks\", \"taigaTeam\", \"taigaWiki\", \"taigaSearch\", \"taigaAdmin\", \"taigaProject\", \"taigaUserSettings\", \"taigaFeedback\", \"taigaPlugins\", \"taigaIntegrations\", \"taigaComponents\", \"taigaProfile\", \"taigaHome\", \"taigaUserTimeline\", \"taigaExternalApps\", \"taigaDiscover\", \"taigaHistory\", \"taigaNotifications\", \"taigaWikiHistory\", \"taigaEpics\", \"taigaUtils\", \"templates\", \"ngSanitize\", \"ngRoute\", \"ngAnimate\", \"ngAria\", \"pascalprecht.translate\", \"infinite-scroll\", \"tgRepeat\"].concat(pluginsModules);\n\n module = angular.module(\"taiga\", modules);\n\n module.config([\"$routeProvider\", \"$locationProvider\", \"$httpProvider\", \"$provide\", \"$tgEventsProvider\", \"$compileProvider\", \"$translateProvider\", \"$translatePartialLoaderProvider\", \"$animateProvider\", \"$logProvider\", configure]);\n\n module.run([\"$log\", \"$rootScope\", \"$tgAuth\", \"$tgEvents\", \"$tgAnalytics\", \"$tgTagManager\", \"$tgUserPilot\", \"$translate\", \"$tgLocation\", \"$tgNavUrls\", \"tgAppMetaService\", \"tgLoader\", \"tgNavigationBarService\", \"tgErrorHandlingService\", \"lightboxService\", \"$tgConfig\", \"tgProjectService\", init]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TaigaBase, TaigaController, TaigaService,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n TaigaBase = (function() {\n function TaigaBase() {}\n\n return TaigaBase;\n\n })();\n\n TaigaService = (function(superClass) {\n extend(TaigaService, superClass);\n\n function TaigaService() {\n return TaigaService.__super__.constructor.apply(this, arguments);\n }\n\n return TaigaService;\n\n })(TaigaBase);\n\n TaigaController = (function(superClass) {\n extend(TaigaController, superClass);\n\n function TaigaController() {\n this.onInitialDataError = bind(this.onInitialDataError, this);\n return TaigaController.__super__.constructor.apply(this, arguments);\n }\n\n TaigaController.prototype.onInitialDataError = function(xhr) {\n if (xhr) {\n if (xhr.status === 404) {\n this.errorHandlingService.notfound();\n } else if (xhr.status === 403) {\n this.errorHandlingService.permissionDenied();\n }\n }\n return this.q.reject(xhr);\n };\n\n return TaigaController;\n\n })(TaigaBase);\n\n this.taiga.Base = TaigaBase;\n\n this.taiga.Service = TaigaService;\n\n this.taiga.Controller = TaigaController;\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DEFAULT_COLOR_LIST, addClass, bindMethods, bindOnce, cancelTimeout, debounce, debounceLeading, defineImmutableProperty, findScope, getDefaulColorList, getMatches, getRandomDefaultColor, groupBy, isEmail, isImage, isPdf, joinStr, mixOf, nl2br, normalizeString, patch, randomInt, replaceTags, scopeDefer, sizeFormat, slugify, startswith, stripTags, taiga, timeout, toString, toggleText, trim, truncate, unslugify,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },\n slice = [].slice,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n addClass = function(el, className) {\n if (el.classList) {\n return el.classList.add(className);\n } else {\n return el.className += ' ' + className;\n }\n };\n\n nl2br = (function(_this) {\n return function(str) {\n var breakTag;\n breakTag = '
';\n return (str + '').replace(/([^>\\r\\n]?)(\\r\\n|\\n\\r|\\r|\\n)/g, '$1' + breakTag + '$2');\n };\n })(this);\n\n bindMethods = (function(_this) {\n return function(object) {\n var dependencies, methods;\n dependencies = _.keys(object);\n methods = [];\n _.forIn(object, function(value, key) {\n if (indexOf.call(dependencies, key) < 0 && _.isFunction(value)) {\n return methods.push(key);\n }\n });\n return _.bindAll(object, methods);\n };\n })(this);\n\n bindOnce = (function(_this) {\n return function(scope, attr, continuation) {\n var delBind, val;\n val = scope.$eval(attr);\n if (val !== void 0) {\n return continuation(val);\n }\n delBind = null;\n return delBind = scope.$watch(attr, function(val) {\n if (val === void 0) {\n return;\n }\n continuation(val);\n if (delBind) {\n return delBind();\n }\n });\n };\n })(this);\n\n mixOf = function() {\n var Mixed, base, i, method, mixin, mixins, name, ref;\n base = arguments[0], mixins = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n Mixed = (function(superClass) {\n extend(Mixed, superClass);\n\n function Mixed() {\n return Mixed.__super__.constructor.apply(this, arguments);\n }\n\n return Mixed;\n\n })(base);\n for (i = mixins.length - 1; i >= 0; i += -1) {\n mixin = mixins[i];\n ref = mixin.prototype;\n for (name in ref) {\n method = ref[name];\n Mixed.prototype[name] = method;\n }\n }\n return Mixed;\n };\n\n trim = function(data, char) {\n return _.trim(data, char);\n };\n\n slugify = function(data) {\n return data.toString().toLowerCase().trim().replace(/\\s+/g, '-').replace(/&/g, '-and-').replace(/[^\\w\\-]+/g, '').replace(/\\-\\-+/g, '-');\n };\n\n unslugify = function(data) {\n if (data) {\n return _.capitalize(data.replace(/-/g, ' '));\n }\n return data;\n };\n\n toggleText = function(element, texts) {\n var nextTextPosition, text;\n nextTextPosition = element.data('nextTextPosition');\n if ((nextTextPosition == null) || nextTextPosition >= texts.length) {\n nextTextPosition = 0;\n }\n text = texts[nextTextPosition];\n element.data('nextTextPosition', nextTextPosition + 1);\n return element.text(text);\n };\n\n groupBy = function(coll, pred) {\n var i, item, len, result;\n result = {};\n for (i = 0, len = coll.length; i < len; i++) {\n item = coll[i];\n result[pred(item)] = item;\n }\n return result;\n };\n\n timeout = function(wait, continuation) {\n return window.setTimeout(continuation, wait);\n };\n\n cancelTimeout = function(timeoutVar) {\n return window.clearTimeout(timeoutVar);\n };\n\n scopeDefer = function(scope, func) {\n return _.defer((function(_this) {\n return function() {\n return scope.$apply(func);\n };\n })(this));\n };\n\n toString = function(value) {\n if (_.isNumber(value)) {\n return value + \"\";\n } else if (_.isString(value)) {\n return value;\n } else if (_.isPlainObject(value)) {\n return JSON.stringify(value);\n } else if (_.isUndefined(value)) {\n return \"\";\n }\n return value.toString();\n };\n\n joinStr = function(str, coll) {\n return coll.join(str);\n };\n\n debounce = function(wait, func) {\n return _.debounce(func, wait, {\n leading: true,\n trailing: false\n });\n };\n\n debounceLeading = function(wait, func) {\n return _.debounce(func, wait, {\n leading: false,\n trailing: true\n });\n };\n\n startswith = function(str1, str2) {\n return _.startsWith(str1, str2);\n };\n\n truncate = function(str, maxLength, suffix) {\n var out;\n if (suffix == null) {\n suffix = \"...\";\n }\n if ((typeof str !== \"string\") && !(str instanceof String)) {\n return str;\n }\n out = str.slice(0);\n if (out.length > maxLength) {\n out = out.substring(0, maxLength + 1);\n out = out.substring(0, Math.min(out.length, out.lastIndexOf(\" \")));\n out = out + suffix;\n }\n return out;\n };\n\n sizeFormat = function(input, precision) {\n var number, size, units;\n if (precision == null) {\n precision = 1;\n }\n if (isNaN(parseFloat(input)) || !isFinite(input)) {\n return \"-\";\n }\n if (input === 0) {\n return \"0 bytes\";\n }\n units = [\"bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\n number = Math.floor(Math.log(input) / Math.log(1024));\n if (number > 5) {\n number = 5;\n }\n size = (input / Math.pow(1024, number)).toFixed(precision);\n return size + \" \" + units[number];\n };\n\n stripTags = function(str, exception) {\n var pattern;\n if (exception) {\n pattern = new RegExp('<(?!' + exception + '\\s*\\/?)[^>]+>', 'gi');\n return String(str).replace(pattern, '');\n } else {\n return String(str).replace(/<\\/?[^>]+>/g, '');\n }\n };\n\n replaceTags = function(str, tags, replace) {\n var pattern;\n pattern = new RegExp('<(' + tags + ')>', 'gi');\n str = str.replace(pattern, '<' + replace + '>');\n pattern = new RegExp('<\\/(' + tags + ')>', 'gi');\n str = str.replace(pattern, '');\n return str;\n };\n\n defineImmutableProperty = (function(_this) {\n return function(obj, name, fn) {\n return Object.defineProperty(obj, name, {\n get: function() {\n var fn_result;\n if (!_.isFunction(fn)) {\n throw \"defineImmutableProperty third param must be a function\";\n }\n fn_result = fn();\n if (fn_result && _.isObject(fn_result)) {\n if (fn_result.size === void 0) {\n throw \"defineImmutableProperty must return immutable data\";\n }\n }\n return fn_result;\n }\n });\n };\n })(this);\n\n _.mixin({\n removeKeys: function(obj, keys) {\n return _.chain([keys]).flatten().reduce(function(obj, key) {\n delete obj[key];\n return obj;\n }, obj).value();\n },\n cartesianProduct: function() {\n return _.reduceRight(arguments, function(a, b) {\n return _.flatten(_.map(a, function(x) {\n return _.map(b, function(y) {\n return [y].concat(x);\n });\n }), true);\n }, [[]]);\n }\n });\n\n isImage = function(name) {\n return name.match(/\\.(jpe?g|png|gif|gifv|svg|psd|webp)/i) !== null;\n };\n\n isEmail = function(name) {\n return (name != null) && name.match(/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/) !== null;\n };\n\n isPdf = function(name) {\n return name.match(/\\.(pdf)/i) !== null;\n };\n\n patch = function(oldImmutable, newImmutable) {\n var pathObj;\n pathObj = {};\n newImmutable.forEach(function(newValue, key) {\n if (newValue !== oldImmutable.get(key)) {\n if (newValue.toJS) {\n return pathObj[key] = newValue.toJS();\n } else {\n return pathObj[key] = newValue;\n }\n }\n });\n return pathObj;\n };\n\n DEFAULT_COLOR_LIST = ['#D35163', '#D351CF', '#AC51D3', '#8151D3', '#5551D3', '#5178D3', '#78D351', '#51D355', '#51D381', '#51D3AC', '#51CFD3', '#51A3D3', '#A3D350', '#CFD350', '#D3AC50', '#D38050', '#D35450', '#E44057', '#4C566A', '#70728F', '#A9AABC'];\n\n getRandomDefaultColor = function() {\n return _.sample(DEFAULT_COLOR_LIST);\n };\n\n getDefaulColorList = function() {\n return _.clone(DEFAULT_COLOR_LIST);\n };\n\n getMatches = function(string, regex, index) {\n var match, matches;\n index || (index = 1);\n matches = [];\n match = null;\n while (match = regex.exec(string)) {\n if (index === -1) {\n matches.push(match);\n } else {\n matches.push(match[index]);\n }\n }\n return matches;\n };\n\n randomInt = function(start, end) {\n var interval;\n interval = end - start;\n return start + Math.floor(Math.random() * (interval + 1));\n };\n\n normalizeString = function(string) {\n var normalizedString;\n normalizedString = string;\n normalizedString = normalizedString.replace(\"Á\", \"A\").replace(\"Ä\", \"A\").replace(\"À\", \"A\");\n normalizedString = normalizedString.replace(\"É\", \"E\").replace(\"Ë\", \"E\").replace(\"È\", \"E\");\n normalizedString = normalizedString.replace(\"Í\", \"I\").replace(\"Ï\", \"I\").replace(\"Ì\", \"I\");\n normalizedString = normalizedString.replace(\"Ó\", \"O\").replace(\"Ö\", \"O\").replace(\"Ò\", \"O\");\n normalizedString = normalizedString.replace(\"Ú\", \"U\").replace(\"Ü\", \"U\").replace(\"Ù\", \"U\");\n return normalizedString;\n };\n\n findScope = function($scope, condition) {\n var result;\n result = condition($scope);\n if (result) {\n return result;\n }\n if ($scope) {\n return findScope($scope.$parent, condition);\n }\n return null;\n };\n\n taiga = this.taiga;\n\n taiga.addClass = addClass;\n\n taiga.nl2br = nl2br;\n\n taiga.bindMethods = bindMethods;\n\n taiga.bindOnce = bindOnce;\n\n taiga.mixOf = mixOf;\n\n taiga.trim = trim;\n\n taiga.slugify = slugify;\n\n taiga.unslugify = unslugify;\n\n taiga.toggleText = toggleText;\n\n taiga.groupBy = groupBy;\n\n taiga.timeout = timeout;\n\n taiga.cancelTimeout = cancelTimeout;\n\n taiga.scopeDefer = scopeDefer;\n\n taiga.toString = toString;\n\n taiga.joinStr = joinStr;\n\n taiga.truncate = truncate;\n\n taiga.debounce = debounce;\n\n taiga.debounceLeading = debounceLeading;\n\n taiga.startswith = startswith;\n\n taiga.sizeFormat = sizeFormat;\n\n taiga.stripTags = stripTags;\n\n taiga.replaceTags = replaceTags;\n\n taiga.defineImmutableProperty = defineImmutableProperty;\n\n taiga.isImage = isImage;\n\n taiga.isEmail = isEmail;\n\n taiga.isPdf = isPdf;\n\n taiga.patch = patch;\n\n taiga.getRandomDefaultColor = getRandomDefaultColor;\n\n taiga.getDefaulColorList = getDefaulColorList;\n\n taiga.getMatches = getMatches;\n\n taiga.randomInt = randomInt;\n\n taiga.normalizeString = normalizeString;\n\n taiga.findScope = findScope;\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var FiltersMixin, PageMixin, UsFiltersMixin, groupBy, joinStr, taiga, toString, trim;\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n joinStr = this.taiga.joinStr;\n\n trim = this.taiga.trim;\n\n toString = this.taiga.toString;\n\n PageMixin = (function() {\n function PageMixin() {}\n\n PageMixin.prototype.fillUsersAndRoles = function(users, roles) {\n var activeUsers, computableRoles;\n activeUsers = _.filter(users, (function(_this) {\n return function(user) {\n return user.is_active;\n };\n })(this));\n this.scope.activeUsers = _.sortBy(activeUsers, \"full_name_display\");\n this.scope.activeUsersById = groupBy(this.scope.activeUsers, function(e) {\n return e.id;\n });\n this.scope.users = _.sortBy(users, \"full_name_display\");\n this.scope.usersById = groupBy(users, function(e) {\n return e.id;\n });\n this.scope.roles = _.sortBy(roles, \"order\");\n computableRoles = _(this.scope.project.members).map(\"role\").uniq().value();\n return this.scope.computableRoles = _(roles).filter(\"computable\").filter(function(x) {\n return _.includes(computableRoles, x.id);\n }).value();\n };\n\n PageMixin.prototype.loadUsersAndRoles = function() {\n var promise;\n promise = this.q.all([this.rs.projects.usersList(this.scope.projectId), this.rs.projects.rolesList(this.scope.projectId)]);\n return promise.then((function(_this) {\n return function(results) {\n var roles, users;\n users = results[0], roles = results[1];\n _this.fillUsersAndRoles(users, roles);\n return results;\n };\n })(this));\n };\n\n return PageMixin;\n\n })();\n\n taiga.PageMixin = PageMixin;\n\n FiltersMixin = (function() {\n function FiltersMixin() {}\n\n FiltersMixin.prototype.excludePrefix = \"exclude_\";\n\n FiltersMixin.prototype.selectFilter = function(name, value, load, mode) {\n var existing, location, params;\n if (load == null) {\n load = false;\n }\n if (mode == null) {\n mode = \"include\";\n }\n params = this.location.search();\n if (mode === \"exclude\") {\n name = this.excludePrefix.concat(name);\n }\n if (params[name] !== void 0 && name !== \"page\") {\n existing = _.map(taiga.toString(params[name]).split(\",\"), function(x) {\n return trim(x);\n });\n existing.push(taiga.toString(value));\n existing = _.compact(existing);\n value = joinStr(\",\", _.uniq(existing));\n }\n if (!this.location.isInCurrentRouteParams(name, value)) {\n location = load ? this.location : this.location.noreload(this.scope);\n return location.search(name, value);\n }\n };\n\n FiltersMixin.prototype.replaceFilter = function(name, value, load) {\n var location;\n if (load == null) {\n load = false;\n }\n if (!this.location.isInCurrentRouteParams(name, value)) {\n location = load ? this.location : this.location.noreload(this.scope);\n return location.search(name, value);\n }\n };\n\n FiltersMixin.prototype.replaceAllFilters = function(filters, load) {\n var location;\n if (load == null) {\n load = false;\n }\n location = load ? this.location : this.location.noreload(this.scope);\n return location.search(filters);\n };\n\n FiltersMixin.prototype.unselectFilter = function(name, value, load, mode) {\n var location, newValues, params, parsedValues;\n if (load == null) {\n load = false;\n }\n if (mode == null) {\n mode = 'include';\n }\n params = this.location.search();\n if (mode === \"exclude\") {\n name = this.excludePrefix.concat(name);\n }\n if (params[name] === void 0) {\n return;\n }\n if (value === void 0 || value === null) {\n delete params[name];\n }\n parsedValues = _.map(taiga.toString(params[name]).split(\",\"), function(x) {\n return trim(x);\n });\n newValues = _.reject(parsedValues, function(x) {\n return x === taiga.toString(value);\n });\n newValues = _.compact(newValues);\n if (_.isEmpty(newValues)) {\n value = null;\n } else {\n value = joinStr(\",\", _.uniq(newValues));\n }\n location = load ? this.location : this.location.noreload(this.scope);\n return location.search(name, value);\n };\n\n FiltersMixin.prototype.applyStoredFilters = function(projectSlug, key, validKeys) {\n var filters;\n if (_.isEmpty(this.location.search())) {\n filters = this.getFilters(projectSlug, key);\n if (validKeys) {\n filters = _.pick(filters, validKeys);\n }\n if (Object.keys(filters).length) {\n this.location.search(filters);\n this.location.replace();\n return true;\n }\n }\n return false;\n };\n\n FiltersMixin.prototype.storeFilters = function(projectSlug, params, filtersHashSuffix) {\n var hash, ns;\n ns = projectSlug + \":\" + filtersHashSuffix;\n hash = taiga.generateHash([projectSlug, ns]);\n return this.storage.set(hash, params);\n };\n\n FiltersMixin.prototype.getFilters = function(projectSlug, filtersHashSuffix) {\n var data, hash, ns;\n ns = projectSlug + \":\" + filtersHashSuffix;\n hash = taiga.generateHash([projectSlug, ns]);\n data = this.storage.get(hash) || {};\n delete data.q;\n return data;\n };\n\n FiltersMixin.prototype.formatSelectedFilters = function(type, list, urlIds, mode) {\n var invalidAppliedTags, invalidTags, selectedFilters, selectedIds, validAppliedTags;\n if (mode == null) {\n mode = \"include\";\n }\n selectedIds = urlIds.split(',');\n selectedFilters = _.filter(list, function(it) {\n return selectedIds.indexOf(_.toString(it.id)) !== -1;\n });\n invalidTags = _.filter(selectedIds, function(it) {\n return !_.find(selectedFilters, function(sit) {\n return _.toString(sit.id) === it;\n });\n });\n invalidAppliedTags = _.map(invalidTags, function(it) {\n return {\n id: it,\n key: type + \":\" + it,\n dataType: type,\n name: it,\n mode: mode\n };\n });\n validAppliedTags = _.map(selectedFilters, function(it) {\n return {\n id: it.id,\n key: type + \":\" + it.id,\n dataType: type,\n name: it.name,\n color: it.color,\n mode: mode\n };\n });\n return invalidAppliedTags.concat(validAppliedTags);\n };\n\n return FiltersMixin;\n\n })();\n\n taiga.FiltersMixin = FiltersMixin;\n\n UsFiltersMixin = (function() {\n function UsFiltersMixin() {}\n\n UsFiltersMixin.prototype.excludePrefix = \"exclude_\";\n\n UsFiltersMixin.prototype.filterCategories = [\"tags\", \"status\", \"assigned_users\", \"assigned_to\", \"owner\", \"epic\", \"role\"];\n\n UsFiltersMixin.prototype.excludeFilters = [];\n\n UsFiltersMixin.prototype.changeQ = function(q) {\n this.filterQ = q;\n return this.filtersReloadContent();\n };\n\n UsFiltersMixin.prototype.removeFilter = function(filter) {\n this.unselectFilter(filter.dataType, filter.id, false, filter.mode);\n this.filtersReloadContent();\n return this.generateFilters();\n };\n\n UsFiltersMixin.prototype.addFilter = function(newFilter) {\n this.selectFilter(newFilter.category.dataType, newFilter.filter.id, false, newFilter.mode);\n this.filtersReloadContent();\n return this.generateFilters();\n };\n\n UsFiltersMixin.prototype.selectCustomFilter = function(customFilter) {\n this.replaceAllFilters(customFilter.filter);\n this.filtersReloadContent();\n return this.generateFilters();\n };\n\n UsFiltersMixin.prototype.saveCustomFilter = function(name) {\n var excludeKey, filters, i, key, len, ref, urlfilters;\n filters = {};\n urlfilters = this.location.search();\n ref = this.filterCategories;\n for (i = 0, len = ref.length; i < len; i++) {\n key = ref[i];\n excludeKey = this.excludePrefix.concat(key);\n filters[key] = urlfilters[key];\n filters[excludeKey] = urlfilters[excludeKey];\n }\n return this.filterRemoteStorageService.getFilters(this.scope.projectId, this.storeCustomFiltersName).then((function(_this) {\n return function(userFilters) {\n userFilters[name] = filters;\n return _this.filterRemoteStorageService.storeFilters(_this.scope.projectId, userFilters, _this.storeCustomFiltersName).then(_this.generateFilters);\n };\n })(this));\n };\n\n UsFiltersMixin.prototype.removeCustomFilter = function(customFilter) {\n return this.filterRemoteStorageService.getFilters(this.scope.projectId, this.storeCustomFiltersName).then((function(_this) {\n return function(userFilters) {\n delete userFilters[customFilter.id];\n _this.filterRemoteStorageService.storeFilters(_this.scope.projectId, userFilters, _this.storeCustomFiltersName).then(_this.generateFilters);\n return _this.generateFilters();\n };\n })(this));\n };\n\n UsFiltersMixin.prototype.isFilterDataTypeSelected = function(filterDataType) {\n var filter, i, len, ref;\n ref = this.selectedFilters;\n for (i = 0, len = ref.length; i < len; i++) {\n filter = ref[i];\n if (filter['dataType'] === filterDataType) {\n return true;\n }\n }\n return false;\n };\n\n UsFiltersMixin.prototype.generateFilters = function(milestone) {\n var excludeKey, i, key, len, loadFilters, ref, urlfilters;\n this.storeFilters(this.params.pslug, this.location.search(), this.storeFiltersName);\n urlfilters = this.location.search();\n loadFilters = {};\n loadFilters.project = this.scope.projectId;\n ref = this.filterCategories;\n for (i = 0, len = ref.length; i < len; i++) {\n key = ref[i];\n excludeKey = this.excludePrefix.concat(key);\n loadFilters[key] = urlfilters[key];\n loadFilters[excludeKey] = urlfilters[excludeKey];\n }\n if (milestone) {\n loadFilters.milestone = milestone;\n }\n return this.q.all([this.rs.userstories.filtersData(loadFilters), this.filterRemoteStorageService.getFilters(this.scope.projectId, this.storeCustomFiltersName)]).then((function(_this) {\n return function(result) {\n var customFiltersRaw, data, dataCollection, j, len1, ref1, selected, tagsWithAtLeastOneElement;\n data = result[0];\n customFiltersRaw = result[1];\n dataCollection = {};\n dataCollection.status = _.map(data.statuses, function(it) {\n it.id = it.id.toString();\n return it;\n });\n dataCollection.tags = _.map(data.tags, function(it) {\n it.id = it.name;\n return it;\n });\n tagsWithAtLeastOneElement = _.filter(dataCollection.tags, function(tag) {\n return tag.count > 0;\n });\n dataCollection.assigned_users = _.map(data.assigned_users, function(it) {\n if (it.id) {\n it.id = it.id.toString();\n } else {\n it.id = \"null\";\n }\n it.name = it.full_name || \"Unassigned\";\n return it;\n });\n dataCollection.assigned_to = _.map(data.assigned_to, function(it) {\n if (it.id) {\n it.id = it.id.toString();\n } else {\n it.id = \"null\";\n }\n it.name = it.full_name || \"Unassigned\";\n return it;\n });\n dataCollection.role = _.map(data.roles, function(it) {\n if (it.id) {\n it.id = it.id.toString();\n } else {\n it.id = \"null\";\n }\n it.name = it.name || \"Unassigned\";\n return it;\n });\n dataCollection.owner = _.map(data.owners, function(it) {\n it.id = it.id.toString();\n it.name = it.full_name;\n return it;\n });\n dataCollection.epic = _.map(data.epics, function(it) {\n if (it.id) {\n it.id = it.id.toString();\n it.name = \"#\" + it.ref + \" \" + it.subject;\n } else {\n it.id = \"null\";\n it.name = \"Not in an epic\";\n }\n return it;\n });\n _this.selectedFilters = [];\n ref1 = _this.filterCategories;\n for (j = 0, len1 = ref1.length; j < len1; j++) {\n key = ref1[j];\n excludeKey = _this.excludePrefix.concat(key);\n if (loadFilters[key]) {\n selected = _this.formatSelectedFilters(key, dataCollection[key], loadFilters[key]);\n _this.selectedFilters = _this.selectedFilters.concat(selected);\n }\n if (loadFilters[excludeKey]) {\n selected = _this.formatSelectedFilters(key, dataCollection[key], loadFilters[excludeKey], \"exclude\");\n _this.selectedFilters = _this.selectedFilters.concat(selected);\n }\n }\n _this.filters = [];\n if (!_this.excludeFilters.includes('status')) {\n _this.filters.push({\n title: _this.translate.instant(\"COMMON.FILTERS.CATEGORIES.STATUS\"),\n dataType: \"status\",\n content: dataCollection.status\n });\n }\n if (!_this.excludeFilters.includes('tags')) {\n _this.filters.push({\n title: _this.translate.instant(\"COMMON.FILTERS.CATEGORIES.TAGS\"),\n dataType: \"tags\",\n content: dataCollection.tags,\n hideEmpty: true,\n totalTaggedElements: tagsWithAtLeastOneElement.length\n });\n }\n if (!_this.excludeFilters.includes('assigned_to')) {\n _this.filters.push({\n title: _this.translate.instant(\"COMMON.FILTERS.CATEGORIES.ASSIGNED_TO\"),\n dataType: \"assigned_users\",\n content: dataCollection.assigned_users\n });\n }\n if (!_this.excludeFilters.includes('role')) {\n _this.filters.push({\n title: _this.translate.instant(\"COMMON.FILTERS.CATEGORIES.ROLE\"),\n dataType: \"role\",\n content: dataCollection.role\n });\n }\n if (!_this.excludeFilters.includes('created_by')) {\n _this.filters.push({\n title: _this.translate.instant(\"COMMON.FILTERS.CATEGORIES.CREATED_BY\"),\n dataType: \"owner\",\n content: dataCollection.owner\n });\n }\n if (!_this.excludeFilters.includes('epic')) {\n _this.filters.push({\n title: _this.translate.instant(\"COMMON.FILTERS.CATEGORIES.EPIC\"),\n dataType: \"epic\",\n content: dataCollection.epic\n });\n }\n _this.customFilters = [];\n return _.forOwn(customFiltersRaw, function(value, key) {\n return _this.customFilters.push({\n id: key,\n name: key,\n filter: value\n });\n });\n };\n })(this));\n };\n\n return UsFiltersMixin;\n\n })();\n\n taiga.UsFiltersMixin = UsFiltersMixin;\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaAdmin\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var $translateMissingTranslationHandlerLog;\n\n $translateMissingTranslationHandlerLog = function($log) {\n return function(translationId) {};\n };\n\n $translateMissingTranslationHandlerLog.$inject = ['$log'];\n\n angular.module('pascalprecht.translate').factory('$translateMissingTranslationHandlerLog', $translateMissingTranslationHandlerLog);\n\n $translateMissingTranslationHandlerLog.displayName = '$translateMissingTranslationHandlerLog';\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AuthService, CancelAccountDirective, ChangeEmailDirective, ChangePasswordFromRecoveryDirective, ForgotPasswordDirective, InvitationDirective, LoginDirective, LoginPage, PublicRegisterMessageDirective, RegisterDirective, RegisterOptionsDirective, VerifyEmailDirective, debounce, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaAuth\", [\"taigaResources\"]);\n\n LoginPage = (function() {\n LoginPage.$inject = ['tgCurrentUserService', '$location', '$tgNavUrls', '$routeParams', '$tgAuth'];\n\n function LoginPage(currentUserService, $location, $navUrls, $routeParams, $auth) {\n var url;\n if (currentUserService.isAuthenticated()) {\n if (!$routeParams['force_login']) {\n url = $navUrls.resolve(\"home\");\n if ($routeParams['next']) {\n url = decodeURIComponent($routeParams['next']);\n $location.search('next', null);\n }\n if ($routeParams['unauthorized']) {\n $auth.clear();\n $auth.removeToken();\n } else {\n $location.url(url);\n }\n }\n }\n }\n\n return LoginPage;\n\n })();\n\n module.controller('LoginPage', LoginPage);\n\n AuthService = (function(superClass) {\n extend(AuthService, superClass);\n\n AuthService.$inject = [\"$rootScope\", \"$tgStorage\", \"$tgModel\", \"$tgResources\", \"$tgHttp\", \"$tgUrls\", \"$tgConfig\", \"$tgUserPilot\", \"$translate\", \"tgCurrentUserService\", \"tgThemeService\", \"$tgAnalytics\"];\n\n function AuthService(rootscope, storage, model, rs, http, urls, config1, userpilot, translate, currentUserService1, themeService, analytics) {\n var userModel;\n this.rootscope = rootscope;\n this.storage = storage;\n this.model = model;\n this.rs = rs;\n this.http = http;\n this.urls = urls;\n this.config = config1;\n this.userpilot = userpilot;\n this.translate = translate;\n this.currentUserService = currentUserService1;\n this.themeService = themeService;\n this.analytics = analytics;\n AuthService.__super__.constructor.call(this);\n userModel = this.getUser();\n this._currentTheme = this._getUserTheme();\n this.setUserdata(userModel);\n }\n\n AuthService.prototype.setUserdata = function(userModel) {\n if (userModel) {\n this.userData = Immutable.fromJS(userModel.getAttrs());\n this.currentUserService.setUser(this.userData);\n } else {\n this.userData = null;\n }\n return this.analytics.setUserId();\n };\n\n AuthService.prototype._getUserTheme = function() {\n var compiledThemes, defaultTheme, ref, ref1, ref2;\n compiledThemes = window._taigaAvailableThemes;\n defaultTheme = this.config.get(\"defaultTheme\") || \"taiga\";\n if (!_.includes(this.config.get(\"themes\"), (ref = this.rootscope.user) != null ? ref.theme : void 0) || !compiledThemes.includes((ref1 = this.rootscope.user) != null ? ref1.theme : void 0)) {\n return defaultTheme;\n }\n return (ref2 = this.rootscope.user) != null ? ref2.theme : void 0;\n };\n\n AuthService.prototype._setTheme = function() {\n var newTheme;\n newTheme = this._getUserTheme();\n if (this._currentTheme !== newTheme) {\n this._currentTheme = newTheme;\n return this.themeService.use(this._currentTheme);\n }\n };\n\n AuthService.prototype._setLocales = function() {\n var lang, ref;\n lang = ((ref = this.rootscope.user) != null ? ref.lang : void 0) || this.config.get(\"defaultLanguage\") || \"en\";\n this.translate.preferredLanguage(lang);\n return this.translate.use(lang);\n };\n\n AuthService.prototype.getUser = function() {\n var user, userData;\n if (this.rootscope.user) {\n return this.rootscope.user;\n }\n userData = this.storage.get(\"userInfo\");\n if (userData) {\n user = this.model.make_model(\"users\", userData);\n this.rootscope.user = user;\n this._setLocales();\n this._setTheme();\n return user;\n } else {\n this._setTheme();\n }\n return null;\n };\n\n AuthService.prototype.setUser = function(user) {\n this.rootscope.auth = user;\n this.storage.set(\"userInfo\", user.getAttrs());\n this.rootscope.user = user;\n this.setUserdata(user);\n this._setLocales();\n return this._setTheme();\n };\n\n AuthService.prototype.clear = function() {\n this.rootscope.auth = null;\n this.rootscope.user = null;\n return this.storage.remove(\"userInfo\");\n };\n\n AuthService.prototype.setRefreshToken = function(token) {\n return this.storage.set(\"refresh\", token);\n };\n\n AuthService.prototype.getRefreshToken = function() {\n return this.storage.get(\"refresh\");\n };\n\n AuthService.prototype.setToken = function(token) {\n return this.storage.set(\"token\", token);\n };\n\n AuthService.prototype.getToken = function() {\n return this.storage.get(\"token\");\n };\n\n AuthService.prototype.removeToken = function() {\n this.storage.remove(\"token\");\n return this.storage.remove(\"refresh\");\n };\n\n AuthService.prototype.isAuthenticated = function() {\n if (this.getUser() !== null) {\n return true;\n }\n return false;\n };\n\n AuthService.prototype.refresh = function() {\n var url;\n url = this.urls.resolve(\"user-me\");\n return this.http.get(url).then((function(_this) {\n return function(data, status) {\n var user;\n user = data.data;\n user.token = _this.getUser().auth_token;\n user = _this.model.make_model(\"users\", user);\n _this.setUser(user);\n _this.rootscope.$broadcast(\"auth:refresh\", user);\n return user;\n };\n })(this));\n };\n\n AuthService.prototype.login = function(data, type) {\n var url;\n url = this.urls.resolve(\"auth\");\n data = _.clone(data, false);\n data.type = type ? type : \"normal\";\n this.removeToken();\n return this.http.post(url, data).then((function(_this) {\n return function(data, status) {\n var user;\n user = _this.model.make_model(\"users\", data.data);\n _this.setToken(user.auth_token);\n _this.setRefreshToken(user.refresh);\n _this.setUser(user);\n _this.rootscope.$broadcast(\"auth:login\", user);\n return user;\n };\n })(this));\n };\n\n AuthService.prototype.logout = function() {\n this.removeToken();\n this.clear();\n this.currentUserService.removeUser();\n this._setTheme();\n this._setLocales();\n this.rootscope.$broadcast(\"auth:logout\");\n return this.analytics.setUserId();\n };\n\n AuthService.prototype.register = function(data, type, existing) {\n var url;\n url = this.urls.resolve(\"auth-register\");\n data = _.clone(data, false);\n data.type = type ? type : \"public\";\n if (type === \"private\") {\n data.existing = existing ? existing : false;\n }\n this.removeToken();\n return this.http.post(url, data).then((function(_this) {\n return function(response) {\n var user;\n user = _this.model.make_model(\"users\", response.data);\n _this.setToken(user.auth_token);\n _this.setUser(user);\n _this.rootscope.$broadcast(\"auth:register\", user);\n return user;\n };\n })(this));\n };\n\n AuthService.prototype.getInvitation = function(token) {\n return this.rs.invitations.get(token);\n };\n\n AuthService.prototype.acceptInvitiationWithNewUser = function(data) {\n return this.register(data, \"private\", false);\n };\n\n AuthService.prototype.forgotPassword = function(data) {\n var url;\n url = this.urls.resolve(\"users-password-recovery\");\n data = _.clone(data, false);\n this.removeToken();\n return this.http.post(url, data);\n };\n\n AuthService.prototype.changePasswordFromRecovery = function(data) {\n var url;\n url = this.urls.resolve(\"users-change-password-from-recovery\");\n data = _.clone(data, false);\n this.removeToken();\n return this.http.post(url, data);\n };\n\n AuthService.prototype.changeEmail = function(data) {\n var url;\n url = this.urls.resolve(\"users-change-email\");\n data = _.clone(data, false);\n return this.http.post(url, data);\n };\n\n AuthService.prototype.cancelAccount = function(data) {\n var url;\n url = this.urls.resolve(\"users-cancel-account\");\n data = _.clone(data, false);\n return this.http.post(url, data);\n };\n\n AuthService.prototype.exportProfile = function() {\n var url;\n url = this.urls.resolve(\"users-export\");\n return this.http.post(url);\n };\n\n AuthService.prototype.sendVerificationEmail = function() {\n var url;\n url = this.urls.resolve(\"user-send-verification-email\");\n return this.http.post(url);\n };\n\n return AuthService;\n\n })(taiga.Service);\n\n module.service(\"$tgAuth\", AuthService);\n\n PublicRegisterMessageDirective = function($config, $navUrls, $routeParams, templates) {\n var template, templateFn;\n template = templates.get(\"auth/login-text.html\", true);\n templateFn = function() {\n var nextUrl, publicRegisterEnabled, url;\n publicRegisterEnabled = $config.get(\"publicRegisterEnabled\");\n if (!publicRegisterEnabled) {\n return \"\";\n }\n url = $navUrls.resolve(\"register\");\n if ($routeParams['force_next']) {\n nextUrl = encodeURIComponent($routeParams['force_next']);\n url += \"?next=\" + nextUrl;\n }\n return template({\n url: url\n });\n };\n return {\n restrict: \"AE\",\n scope: {},\n template: templateFn\n };\n };\n\n module.directive(\"tgPublicRegisterMessage\", [\"$tgConfig\", \"$tgNavUrls\", \"$routeParams\", \"$tgTemplate\", PublicRegisterMessageDirective]);\n\n LoginDirective = function($auth, $confirm, $location, $config, $routeParams, $navUrls, $events, $translate, $window, $analytics) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onError, onSuccess, submit;\n form = new checksley.Form($el.find(\"form.login-form\"));\n $scope.defaultLoginEnabled = $config.get(\"defaultLoginEnabled\", true);\n if ($routeParams['next'] && $routeParams['next'] !== $navUrls.resolve(\"login\") && !$routeParams['next'].startsWith(\"%2Fdiscover\")) {\n $scope.nextUrl = decodeURIComponent($routeParams['next']);\n } else {\n $scope.nextUrl = $navUrls.resolve(\"home\");\n }\n if ($routeParams['force_next']) {\n $scope.nextUrl = decodeURIComponent($routeParams['force_next']);\n }\n onSuccess = function(response) {\n $events.setupConnection();\n $analytics.trackEvent(\"auth\", \"login\", \"user login\", 1);\n if ($scope.nextUrl.indexOf('http') === 0) {\n return $window.location.href = $scope.nextUrl;\n } else {\n return $location.url($scope.nextUrl);\n }\n };\n onError = function(response) {\n return $confirm.notify(\"light-error\", $translate.instant(\"LOGIN_FORM.ERROR_AUTH_INCORRECT\"));\n };\n $scope.onKeyUp = function(event) {\n var target, value;\n target = angular.element(event.currentTarget);\n value = target.val();\n $scope.iscapsLockActivated = false;\n if (value !== value.toLowerCase()) {\n return $scope.iscapsLockActivated = true;\n }\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var data, loginFormType, promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n data = {\n \"username\": $el.find(\"form.login-form input[name=username]\").val(),\n \"password\": $el.find(\"form.login-form input[name=password]\").val()\n };\n loginFormType = $config.get(\"loginFormType\", \"normal\");\n promise = $auth.login(data, loginFormType);\n return promise.then(onSuccess, onError);\n };\n })(this));\n $el.on(\"submit\", \"form\", submit);\n window.prerenderReady = true;\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLogin\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$tgConfig\", \"$routeParams\", \"$tgNavUrls\", \"$tgEvents\", \"$translate\", \"$window\", \"$tgAnalytics\", LoginDirective]);\n\n RegisterDirective = function($auth, $confirm, $location, $navUrls, $config, $routeParams, $analytics, $translate, $window) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n if (!$config.get(\"publicRegisterEnabled\")) {\n $location.path($navUrls.resolve(\"not-found\"));\n $location.replace();\n }\n $scope.data = {};\n form = $el.find(\"form\").checksley({\n onlyOneErrorElement: true\n });\n if ($routeParams['next'] && $routeParams['next'] !== $navUrls.resolve(\"login\")) {\n $scope.nextUrl = decodeURIComponent($routeParams['next']);\n } else {\n $scope.nextUrl = $navUrls.resolve(\"home\");\n }\n onSuccessSubmit = function(response) {\n $analytics.trackEvent(\"auth\", \"register\", \"user registration\", 1);\n if ($scope.nextUrl.indexOf('http') === 0) {\n return $window.location.href = $scope.nextUrl;\n } else {\n return $location.url($scope.nextUrl);\n }\n };\n onErrorSubmit = function(response) {\n var text;\n if (response.data._error_message) {\n text = $translate.instant(\"COMMON.GENERIC_ERROR\", {\n error: response.data._error_message\n });\n $confirm.notify(\"light-error\", text);\n }\n return form.setErrors(response.data);\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n promise = $auth.register($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n })(this));\n $el.on(\"submit\", \"form\", submit);\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n return window.prerenderReady = true;\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRegister\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$tgNavUrls\", \"$tgConfig\", \"$routeParams\", \"$tgAnalytics\", \"$translate\", \"$window\", RegisterDirective]);\n\n RegisterOptionsDirective = function() {\n return {};\n };\n\n module.directive(\"tgRegisterOptions\", [RegisterOptionsDirective]);\n\n ForgotPasswordDirective = function($auth, $confirm, $location, $navUrls, $translate) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n $scope.data = {};\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n var message, title;\n $location.path($navUrls.resolve(\"login\"));\n title = $translate.instant(\"FORGOT_PASSWORD_FORM.SUCCESS_TITLE\");\n message = $translate.instant(\"FORGOT_PASSWORD_FORM.SUCCESS_TEXT\");\n return $confirm.success(title, message);\n };\n onErrorSubmit = function(response) {\n var text;\n text = $translate.instant(\"FORGOT_PASSWORD_FORM.ERROR\");\n return $confirm.notify(\"light-error\", text);\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n promise = $auth.forgotPassword($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n })(this));\n $el.on(\"submit\", \"form\", submit);\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n return window.prerenderReady = true;\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgForgotPassword\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$tgNavUrls\", \"$translate\", ForgotPasswordDirective]);\n\n ChangePasswordFromRecoveryDirective = function($auth, $confirm, $location, $params, $navUrls, $translate) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit, text;\n $scope.data = {};\n if ($params.token != null) {\n $scope.tokenInParams = true;\n $scope.data.token = $params.token;\n } else {\n $location.path($navUrls.resolve(\"login\"));\n text = '';\n text = response.data.token.map(function(message) {\n return text + \" \" + message;\n });\n $confirm.notify(\"light-error\", text);\n }\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n $location.path($navUrls.resolve(\"login\"));\n text = $translate.instant(\"CHANGE_PASSWORD_RECOVERY_FORM.SUCCESS\");\n return $confirm.success(text);\n };\n onErrorSubmit = function(response) {\n text = '';\n text = response.data.password.map(function(message) {\n return text + \" \" + message;\n });\n return $confirm.notify(\"light-error\", text);\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n promise = $auth.changePasswordFromRecovery($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n })(this));\n $el.on(\"submit\", \"form\", submit);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgChangePasswordFromRecovery\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", \"$translate\", ChangePasswordFromRecoveryDirective]);\n\n InvitationDirective = function($auth, $confirm, $location, $config, $params, $navUrls, $analytics, $translate, config) {\n var link;\n link = function($scope, $el, $attrs) {\n var loginForm, onErrorSubmitLogin, onErrorSubmitRegister, onSuccessSubmitLogin, onSuccessSubmitRegister, promise, registerForm, submitLogin, submitRegister, token;\n token = $params.token;\n promise = $auth.getInvitation(token);\n promise.then(function(invitation) {\n $scope.invitation = invitation;\n return $scope.publicRegisterEnabled = config.get(\"publicRegisterEnabled\");\n });\n promise.then(null, function(response) {\n var text;\n $location.path($navUrls.resolve(\"login\"));\n text = $translate.instant(\"INVITATION_LOGIN_FORM.NOT_FOUND\");\n return $confirm.notify(\"light-error\", text);\n });\n $scope.dataLogin = {\n token: token\n };\n loginForm = $el.find(\"form.login-form\").checksley({\n onlyOneErrorElement: true\n });\n onSuccessSubmitLogin = function(response) {\n var text;\n $analytics.trackEvent(\"auth\", \"invitationAccept\", \"invitation accept with existing user\", 1);\n $location.path($navUrls.resolve(\"project\", {\n project: $scope.invitation.project_slug\n }));\n text = $translate.instant(\"INVITATION_LOGIN_FORM.SUCCESS\", {\n \"project_name\": $scope.invitation.project_name\n });\n return $confirm.notify(\"success\", text);\n };\n onErrorSubmitLogin = function(response) {\n return $confirm.notify(\"light-error\", response.data._error_message);\n };\n submitLogin = debounce(2000, (function(_this) {\n return function(event) {\n var data, loginFormType;\n event.preventDefault();\n if (!loginForm.validate()) {\n return;\n }\n loginFormType = $config.get(\"loginFormType\", \"normal\");\n data = $scope.dataLogin;\n promise = $auth.login({\n username: data.username,\n password: data.password,\n invitation_token: data.token\n }, loginFormType);\n return promise.then(onSuccessSubmitLogin, onErrorSubmitLogin);\n };\n })(this));\n $el.on(\"submit\", \"form.login-form\", submitLogin);\n $el.on(\"click\", \".button-login\", submitLogin);\n $scope.dataRegister = {\n token: token\n };\n registerForm = $el.find(\"form.register-form\").checksley({\n onlyOneErrorElement: true\n });\n onSuccessSubmitRegister = function(response) {\n var text;\n $analytics.trackEvent(\"auth\", \"invitationAccept\", \"invitation accept with new user\", 1);\n $location.path($navUrls.resolve(\"project\", {\n project: $scope.invitation.project_slug\n }));\n text = $translate.instant(\"INVITATION_LOGIN_FORM.SUCCESS\", {\n \"project_name\": $scope.invitation.project_name\n });\n return $confirm.notify(\"success\", text);\n };\n onErrorSubmitRegister = function(response) {\n var text;\n if (response.data._error_message) {\n text = $translate.instant(\"COMMON.GENERIC_ERROR\", {\n error: response.data._error_message\n });\n $confirm.notify(\"light-error\", text);\n }\n return registerForm.setErrors(response.data);\n };\n submitRegister = debounce(2000, (function(_this) {\n return function(event) {\n event.preventDefault();\n if (!registerForm.validate()) {\n return;\n }\n promise = $auth.acceptInvitiationWithNewUser($scope.dataRegister);\n return promise.then(onSuccessSubmitRegister, onErrorSubmitRegister);\n };\n })(this));\n $el.on(\"submit\", \"form.register-form\", submitRegister);\n $el.on(\"click\", \".button-register\", submitRegister);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgInvitation\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$tgConfig\", \"$routeParams\", \"$tgNavUrls\", \"$tgAnalytics\", \"$translate\", \"$tgConfig\", InvitationDirective]);\n\n VerifyEmailDirective = function($repo, $model, $auth, $confirm, $location, $params, $navUrls, $translate) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n $scope.data = {};\n $scope.data.email_token = $params.email_token;\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n var text;\n if ($auth.isAuthenticated()) {\n $repo.queryOne(\"users\", $auth.getUser().id).then((function(_this) {\n return function(data) {\n return $auth.setUser(data);\n };\n })(this));\n $location.url($navUrls.resolve(\"home\"));\n } else {\n $location.url($navUrls.resolve(\"login\"));\n }\n text = $translate.instant(\"VERIFY_EMAIL_FORM.SUCCESS\");\n return $confirm.success(text);\n };\n onErrorSubmit = function(response) {\n var text;\n text = $translate.instant(\"COMMON.GENERIC_ERROR\", {\n error: response.data._error_message\n });\n return $confirm.notify(\"light-error\", text);\n };\n submit = function() {\n var promise;\n if (!form.validate()) {\n return;\n }\n promise = $auth.changeEmail($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n $el.on(\"submit\", function(event) {\n event.preventDefault();\n return submit();\n });\n $el.on(\"click\", \"a.ng-submit-form\", function(event) {\n event.preventDefault();\n return submit();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgVerifyEmail\", [\"$tgRepo\", \"$tgModel\", \"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", \"$translate\", VerifyEmailDirective]);\n\n ChangeEmailDirective = function($repo, $model, $auth, $confirm, $location, $params, $navUrls, $translate) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n $scope.data = {};\n $scope.data.email_token = $params.email_token;\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n var text;\n if ($auth.isAuthenticated()) {\n $repo.queryOne(\"users\", $auth.getUser().id).then((function(_this) {\n return function(data) {\n return $auth.setUser(data);\n };\n })(this));\n $location.url($navUrls.resolve(\"home\"));\n } else {\n $location.url($navUrls.resolve(\"login\"));\n }\n text = $translate.instant(\"CHANGE_EMAIL_FORM.SUCCESS\");\n return $confirm.success(text);\n };\n onErrorSubmit = function(response) {\n var text;\n text = $translate.instant(\"COMMON.GENERIC_ERROR\", {\n error: response.data._error_message\n });\n return $confirm.notify(\"light-error\", text);\n };\n submit = function() {\n var promise;\n if (!form.validate()) {\n return;\n }\n promise = $auth.changeEmail($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n $el.on(\"submit\", function(event) {\n event.preventDefault();\n return submit();\n });\n $el.on(\"click\", \"a.ng-submit-form\", function(event) {\n event.preventDefault();\n return submit();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgChangeEmail\", [\"$tgRepo\", \"$tgModel\", \"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", \"$translate\", ChangeEmailDirective]);\n\n CancelAccountDirective = function($repo, $model, $auth, $confirm, $location, $params, $navUrls) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n $scope.data = {};\n $scope.data.cancel_token = $params.cancel_token;\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n var text;\n $auth.logout();\n $location.path($navUrls.resolve(\"home\"));\n text = $translate.instant(\"CANCEL_ACCOUNT.SUCCESS\");\n return $confirm.success(text);\n };\n onErrorSubmit = function(response) {\n var text;\n text = $translate.instant(\"COMMON.GENERIC_ERROR\", {\n error: response.data._error_message\n });\n return $confirm.notify(\"error\", text);\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n promise = $auth.cancelAccount($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n })(this));\n $el.on(\"submit\", \"form\", submit);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgCancelAccount\", [\"$tgRepo\", \"$tgModel\", \"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", CancelAccountDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaBacklog\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TaigaMainDirective, bindOnce, groupBy, init, module, taiga, urls;\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaBase\", []);\n\n TaigaMainDirective = function($rootscope, $window) {\n var link;\n link = function($scope, $el, $attrs) {\n return $window.onresize = function() {\n return $rootscope.$broadcast(\"resize\");\n };\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgMain\", [\"$rootScope\", \"$window\", TaigaMainDirective]);\n\n urls = {\n \"home\": \"/\",\n \"projects\": \"/projects\",\n \"error\": \"/error\",\n \"not-found\": \"/not-found\",\n \"permission-denied\": \"/permission-denied\",\n \"discover\": \"/discover\",\n \"discover-search\": \"/discover/search\",\n \"login\": \"/login\",\n \"forgot-password\": \"/forgot-password\",\n \"change-password\": \"/change-password/:token\",\n \"change-email\": \"/change-email/:token\",\n \"verified-email\": \"/change-email/:token\",\n \"cancel-account\": \"/cancel-account/:token\",\n \"register\": \"/register\",\n \"invitation\": \"/invitation/:token\",\n \"create-project\": \"/project/new\",\n \"create-project-scrum\": \"/project/new/scrum\",\n \"create-project-kanban\": \"/project/new/kanban\",\n \"create-project-duplicate\": \"/project/new/duplicate\",\n \"create-project-import\": \"/project/new/import\",\n \"create-project-import-platform\": \"/project/new/import/:platform\",\n \"profile\": \"/profile\",\n \"user-profile\": \"/profile/:username\",\n \"blocked-project\": \"/blocked-project/:project\",\n \"project\": \"/project/:project\",\n \"project-detail-ref\": \"/project/:project/t/:ref\",\n \"project-backlog\": \"/project/:project/backlog\",\n \"project-taskboard\": \"/project/:project/taskboard/:sprint\",\n \"project-kanban\": \"/project/:project/kanban\",\n \"project-issues\": \"/project/:project/issues\",\n \"project-epics\": \"/project/:project/epics\",\n \"project-search\": \"/project/:project/search\",\n \"project-timeline\": \"/project/:project/timeline\",\n \"project-epics-detail\": \"/project/:project/epic/:ref\",\n \"project-userstories-detail\": \"/project/:project/us/:ref\",\n \"project-tasks-detail\": \"/project/:project/task/:ref\",\n \"project-issues-detail\": \"/project/:project/issue/:ref\",\n \"project-wiki\": \"/project/:project/wiki\",\n \"project-wiki-list\": \"/project/:project/wiki-list\",\n \"project-wiki-page\": \"/project/:project/wiki/:slug\",\n \"project-team\": \"/project/:project/team\",\n \"project-admin-home\": \"/project/:project/admin/project-profile/details\",\n \"project-admin-project-profile-details\": \"/project/:project/admin/project-profile/details\",\n \"project-admin-project-profile-default-values\": \"/project/:project/admin/project-profile/default-values\",\n \"project-admin-project-profile-modules\": \"/project/:project/admin/project-profile/modules\",\n \"project-admin-project-profile-export\": \"/project/:project/admin/project-profile/export\",\n \"project-admin-project-profile-reports\": \"/project/:project/admin/project-profile/reports\",\n \"project-admin-project-values-status\": \"/project/:project/admin/project-values/status\",\n \"project-admin-project-values-points\": \"/project/:project/admin/project-values/points\",\n \"project-admin-project-values-priorities\": \"/project/:project/admin/project-values/priorities\",\n \"project-admin-project-values-severities\": \"/project/:project/admin/project-values/severities\",\n \"project-admin-project-values-types\": \"/project/:project/admin/project-values/types\",\n \"project-admin-project-values-custom-fields\": \"/project/:project/admin/project-values/custom-fields\",\n \"project-admin-project-values-tags\": \"/project/:project/admin/project-values/tags\",\n \"project-admin-project-values-due-dates\": \"/project/:project/admin/project-values/due-dates\",\n \"project-admin-project-values-kanban-power-ups\": \"/project/:project/admin/project-values/kanban-power-ups\",\n \"project-admin-memberships\": \"/project/:project/admin/memberships\",\n \"project-admin-roles\": \"/project/:project/admin/roles\",\n \"project-admin-third-parties-webhooks\": \"/project/:project/admin/third-parties/webhooks\",\n \"project-admin-third-parties-github\": \"/project/:project/admin/third-parties/github\",\n \"project-admin-third-parties-gitlab\": \"/project/:project/admin/third-parties/gitlab\",\n \"project-admin-third-parties-bitbucket\": \"/project/:project/admin/third-parties/bitbucket\",\n \"project-admin-third-parties-gogs\": \"/project/:project/admin/third-parties/gogs\",\n \"project-admin-contrib\": \"/project/:project/admin/contrib/:plugin\",\n \"user-settings-user-profile\": \"/user-settings/user-profile\",\n \"user-settings-user-change-password\": \"/user-settings/user-change-password\",\n \"user-settings-user-avatar\": \"/user-settings/user-avatar\",\n \"user-settings-user-project-settings\": \"/user-settings/user-project-settings\",\n \"user-settings-mail-notifications\": \"/user-settings/mail-notifications\",\n \"user-settings-live-notifications\": \"/user-settings/live-notifications\",\n \"user-settings-web-notifications\": \"/user-settings/web-notifications\",\n \"user-settings-contrib\": \"/user-settings/contrib/:plugin\",\n \"notifications\": \"/notifications\"\n };\n\n init = function($log, $navurls) {\n $log.debug(\"Initialize navigation urls\");\n return $navurls.update(urls);\n };\n\n module.run([\"$log\", \"$tgNavUrls\", init]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AnimationFrame, Autofocus, Capslock, CheckPermissionDirective, ClassPermissionDirective, DataPickerConfig, ProjectUrl, Qqueue, QueueModelTransformation, SelectedText, Svg, Template, ToggleCommentDirective, module, taiga,\n slice = [].slice,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaCommon\", []);\n\n DataPickerConfig = function($translate, $config, $auth) {\n return {\n get: function() {\n var isRTL, lang, rtlLanguages, user;\n user = $auth.getUser();\n lang = (user != null ? user.lang : void 0) || $translate.preferredLanguage();\n rtlLanguages = $config.get(\"rtlLanguages\", []);\n isRTL = rtlLanguages.indexOf(lang) > -1;\n return {\n i18n: {\n previousMonth: $translate.instant(\"COMMON.PICKERDATE.PREV_MONTH\"),\n nextMonth: $translate.instant(\"COMMON.PICKERDATE.NEXT_MONTH\"),\n months: [$translate.instant(\"COMMON.PICKERDATE.MONTHS.JAN\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.FEB\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.MAR\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.APR\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.MAY\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.JUN\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.JUL\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.AUG\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.SEP\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.OCT\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.NOV\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.DEC\")],\n weekdays: [$translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS.SUN\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS.MON\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS.TUE\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS.WED\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS.THU\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS.FRI\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS.SAT\")],\n weekdaysShort: [$translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS_SHORT.SUN\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS_SHORT.MON\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS_SHORT.TUE\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS_SHORT.WED\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS_SHORT.THU\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS_SHORT.FRI\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS_SHORT.SAT\")]\n },\n isRTL: isRTL,\n firstDay: parseInt($translate.instant(\"COMMON.PICKERDATE.FIRST_DAY_OF_WEEK\"), 10),\n format: $translate.instant(\"COMMON.PICKERDATE.FORMAT\")\n };\n }\n };\n };\n\n module.factory(\"tgDatePickerConfigService\", [\"$translate\", \"$tgConfig\", \"$tgAuth\", DataPickerConfig]);\n\n SelectedText = function($window, $document) {\n var get;\n get = function() {\n if ($window.getSelection) {\n return $window.getSelection().toString();\n } else if ($document.selection) {\n return $document.selection.createRange().text;\n }\n return \"\";\n };\n return {\n get: get\n };\n };\n\n module.factory(\"$selectedText\", [\"$window\", \"$document\", SelectedText]);\n\n CheckPermissionDirective = function(projectService) {\n var link, render;\n render = function($el, project, permission) {\n if (project && permission) {\n if (project.get('my_permissions').indexOf(permission) > -1) {\n return $el.removeClass('hidden');\n }\n }\n };\n link = function($scope, $el, $attrs) {\n var permission, unObserve, unwatch;\n $el.addClass('hidden');\n permission = $attrs.tgCheckPermission;\n unwatch = $scope.$watch(function() {\n return projectService.project;\n }, function() {\n if (!projectService.project) {\n return;\n }\n render($el, projectService.project, permission);\n return unwatch();\n });\n unObserve = $attrs.$observe(\"tgCheckPermission\", function(permission) {\n if (!permission) {\n return;\n }\n render($el, projectService.project, permission);\n return unObserve();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n CheckPermissionDirective.$inject = [\"tgProjectService\"];\n\n module.directive(\"tgCheckPermission\", CheckPermissionDirective);\n\n ClassPermissionDirective = function() {\n var link, name;\n name = \"tgClassPermission\";\n link = function($scope, $el, $attrs) {\n var checkPermissions, tgClassPermissionWatchAction, unbindWatcher;\n checkPermissions = function(project, className, permission) {\n var negation;\n negation = permission[0] === \"!\";\n if (negation) {\n permission = permission.slice(1);\n }\n if (negation && project.my_permissions.indexOf(permission) === -1) {\n return $el.addClass(className);\n } else if (!negation && project.my_permissions.indexOf(permission) !== -1) {\n return $el.addClass(className);\n } else {\n return $el.removeClass(className);\n }\n };\n tgClassPermissionWatchAction = function(project) {\n var className, classes, permission, results;\n if (project) {\n unbindWatcher();\n classes = $scope.$eval($attrs[name]);\n results = [];\n for (className in classes) {\n permission = classes[className];\n results.push(checkPermissions(project, className, permission));\n }\n return results;\n }\n };\n return unbindWatcher = $scope.$watch(\"project\", tgClassPermissionWatchAction);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgClassPermission\", ClassPermissionDirective);\n\n AnimationFrame = function() {\n var add, animationFrame, performAnimation, tail;\n animationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;\n performAnimation = (function(_this) {\n return function(time) {\n var fn;\n fn = tail.shift();\n fn();\n if (tail.length) {\n return animationFrame(performAnimation);\n }\n };\n })(this);\n tail = [];\n add = function() {\n var fn, i, len, results;\n results = [];\n for (i = 0, len = arguments.length; i < len; i++) {\n fn = arguments[i];\n tail.push(fn);\n if (tail.length === 1) {\n results.push(animationFrame(performAnimation));\n } else {\n results.push(void 0);\n }\n }\n return results;\n };\n return {\n add: add\n };\n };\n\n module.factory(\"animationFrame\", AnimationFrame);\n\n ToggleCommentDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return $el.find(\"textarea\").on(\"focus\", function() {\n return $el.addClass(\"active\");\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgToggleComment\", ToggleCommentDirective);\n\n ProjectUrl = function($navurls) {\n var get;\n get = function(project) {\n var ctx;\n if (project.toJS) {\n project = project.toJS();\n }\n ctx = {\n project: project.slug\n };\n if (project.is_backlog_activated && project.my_permissions.indexOf(\"view_us\") > -1) {\n return $navurls.resolve(\"project-backlog\", ctx);\n }\n if (project.is_kanban_activated && project.my_permissions.indexOf(\"view_us\") > -1) {\n return $navurls.resolve(\"project-kanban\", ctx);\n }\n if (project.is_wiki_activated && project.my_permissions.indexOf(\"view_wiki_pages\") > -1) {\n return $navurls.resolve(\"project-wiki\", ctx);\n }\n if (project.is_issues_activated && project.my_permissions.indexOf(\"view_issues\") > -1) {\n return $navurls.resolve(\"project-issues\", ctx);\n }\n return $navurls.resolve(\"project\", ctx);\n };\n return {\n get: get\n };\n };\n\n module.factory(\"$projectUrl\", [\"$tgNavUrls\", ProjectUrl]);\n\n Qqueue = function($q) {\n var deferred, lastPromise, qqueue;\n deferred = $q.defer();\n deferred.resolve();\n lastPromise = deferred.promise;\n qqueue = {\n bindAdd: (function(_this) {\n return function(fn) {\n return function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return lastPromise = lastPromise.then(function() {\n return fn.apply(_this, args);\n });\n };\n };\n })(this),\n add: (function(_this) {\n return function(fn) {\n if (!lastPromise) {\n lastPromise = fn();\n } else {\n lastPromise = lastPromise.then(fn);\n }\n return qqueue;\n };\n })(this)\n };\n return qqueue;\n };\n\n module.factory(\"$tgQqueue\", [\"$q\", Qqueue]);\n\n QueueModelTransformation = (function(superClass) {\n extend(QueueModelTransformation, superClass);\n\n QueueModelTransformation.$inject = [\"$tgQqueue\", \"$tgRepo\", \"$q\", \"$tgModel\"];\n\n function QueueModelTransformation(qqueue1, repo, q, model1) {\n this.qqueue = qqueue1;\n this.repo = repo;\n this.q = q;\n this.model = model1;\n }\n\n QueueModelTransformation.prototype.setObject = function(scope1, prop) {\n this.scope = scope1;\n this.prop = prop;\n };\n\n QueueModelTransformation.prototype.clone = function() {\n var attrs, model;\n attrs = _.cloneDeep(this.scope[this.prop]._attrs);\n model = this.model.make_model(this.scope[this.prop]._name, attrs);\n return model;\n };\n\n QueueModelTransformation.prototype.getObj = function() {\n return this.scope[this.prop];\n };\n\n QueueModelTransformation.prototype.save = function(transformation) {\n var defered;\n defered = this.q.defer();\n this.qqueue.add((function(_this) {\n return function() {\n var clone, comment, modified, obj, success;\n obj = _this.getObj();\n comment = obj.comment;\n obj.comment = '';\n clone = _this.clone();\n modified = _.omit(obj._modifiedAttrs, ['version']);\n clone = _.assign(clone, modified);\n transformation(clone);\n if (comment.length) {\n clone.comment = comment;\n }\n success = function() {\n _this.scope[_this.prop] = clone;\n return defered.resolve.apply(null, arguments);\n };\n return _this.repo.save(clone).then(success, defered.reject);\n };\n })(this));\n return defered.promise;\n };\n\n return QueueModelTransformation;\n\n })(taiga.Service);\n\n module.service(\"$tgQueueModelTransformation\", QueueModelTransformation);\n\n Template = function($templateCache) {\n return {\n get: (function(_this) {\n return function(name, lodash) {\n var tmp;\n if (lodash == null) {\n lodash = false;\n }\n tmp = $templateCache.get(name);\n if (lodash) {\n tmp = _.template(tmp);\n }\n return tmp;\n };\n })(this)\n };\n };\n\n module.factory(\"$tgTemplate\", [\"$templateCache\", Template]);\n\n Capslock = function() {\n var template;\n template = \"\";\n return {\n template: template\n };\n };\n\n module.directive(\"tgCapslock\", [Capslock]);\n\n Svg = function() {\n var template;\n template = \"\\n \\n {{svgTitle}}\\n {{svgTitleTranslate | translate: svgTitleTranslateValues}}\\n \\n\";\n return {\n scope: {\n svgIcon: \"@\",\n svgTitle: \"@\",\n svgTitleTranslate: \"@\",\n svgTitleTranslateValues: \"=\",\n svgFill: \"=\"\n },\n template: template\n };\n };\n\n module.directive(\"tgSvg\", [Svg]);\n\n Autofocus = function($timeout, $parse, animationFrame) {\n return {\n restrict: 'A',\n link: function($scope, $element, attrs) {\n var model;\n if (attrs.ngShow) {\n model = $parse(attrs.ngShow);\n return $scope.$watch(model, function(value) {\n if (value === true) {\n return $timeout(function() {\n return $element[0].focus();\n });\n }\n });\n } else {\n return $timeout(function() {\n return $element[0].focus();\n });\n }\n }\n };\n };\n\n module.directive('tgAutofocus', ['$timeout', '$parse', \"animationFrame\", Autofocus]);\n\n module.directive('tgPreloadImage', function() {\n var preload, spinner, template;\n spinner = \"loading...\";\n template = \"
\\n \\n
\";\n preload = function(src, onLoad) {\n var image;\n image = new Image();\n image.onload = onLoad;\n image.src = src;\n return image;\n };\n return {\n template: template,\n transclude: true,\n replace: true,\n link: function(scope, el, attrs) {\n var image, onLoad, timeout;\n image = el.find('img:last');\n timeout = null;\n onLoad = function() {\n el.find('.loading-spinner').remove();\n image.show();\n if (timeout) {\n clearTimeout(timeout);\n return timeout = null;\n }\n };\n return attrs.$observe('preloadSrc', function(src) {\n if (timeout) {\n clearTimeout(timeout);\n }\n el.find('.loading-spinner').remove();\n timeout = setTimeout(function() {\n return el.prepend(spinner);\n }, 200);\n image.hide();\n return preload(src, onLoad);\n });\n }\n };\n });\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DetailController, bindMethods, bindOnce, groupBy, joinStr, mixOf, module, taiga, toString;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n toString = this.taiga.toString;\n\n joinStr = this.taiga.joinStr;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n bindMethods = this.taiga.bindMethods;\n\n module = angular.module(\"taigaCommon\");\n\n DetailController = (function() {\n DetailController.$inject = ['$routeParams', '$tgRepo', \"tgProjectService\", \"$tgNavUrls\", \"$location\"];\n\n function DetailController(params, repo, projectService, navurls, location) {\n this.params = params;\n this.repo = repo;\n this.projectService = projectService;\n this.navurls = navurls;\n this.location = location;\n this.repo.resolve({\n pslug: this.params.pslug,\n ref: this.params.ref\n }).then((function(_this) {\n return function(result) {\n var url;\n if (result.issue) {\n url = _this.navurls.resolve('project-issues-detail', {\n project: _this.projectService.project.get('slug'),\n ref: _this.params.ref\n });\n } else if (result.task) {\n url = _this.navurls.resolve('project-tasks-detail', {\n project: _this.projectService.project.get('slug'),\n ref: _this.params.ref\n });\n } else if (result.us) {\n url = _this.navurls.resolve('project-userstories-detail', {\n project: _this.projectService.project.get('slug'),\n ref: _this.params.ref\n });\n } else if (result.epic) {\n url = _this.navurls.resolve('project-epics-detail', {\n project: _this.projectService.project.get('slug'),\n ref: _this.params.ref\n });\n } else if (result.wikipage) {\n url = _this.navurls.resolve('project-wiki-page', {\n project: _this.projectService.project.get('slug'),\n slug: _this.params.ref\n });\n }\n return _this.location.path(url);\n };\n })(this));\n }\n\n return DetailController;\n\n })();\n\n module.controller(\"DetailController\", DetailController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaEpics\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var EventsProvider, EventsService, bindMethods, module, startswith, taiga,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n taiga = this.taiga;\n\n startswith = this.taiga.startswith;\n\n bindMethods = this.taiga.bindMethods;\n\n module = angular.module(\"taigaEvents\", []);\n\n EventsService = (function() {\n function EventsService(win, log, config, auth, liveAnnouncementService1, rootScope) {\n this.win = win;\n this.log = log;\n this.config = config;\n this.auth = auth;\n this.liveAnnouncementService = liveAnnouncementService1;\n this.rootScope = rootScope;\n this.processMessage = bind(this.processMessage, this);\n bindMethods(this);\n }\n\n EventsService.prototype.initialize = function(sessionId) {\n this.sessionId = sessionId;\n this.subscriptions = {};\n this.connected = false;\n this.error = false;\n this.pendingMessages = [];\n this.reconnectTryInterval = this.config.get(\"eventsReconnectTryInterval\", 10000);\n this.maxConnectionErrors = this.config.get(\"eventsMaxConnectionErrors\", 5);\n this.errors = 0;\n this.missedHeartbeats = 0;\n this.heartbeatInterval = null;\n if (this.win.WebSocket === void 0) {\n return this.log.info(\"WebSockets not supported on your browser\");\n }\n };\n\n EventsService.prototype.setupConnection = function() {\n var loc, path, scheme, url;\n this.stopExistingConnection();\n url = this.config.get(\"eventsUrl\");\n if (!url) {\n return;\n }\n if (!startswith(url, \"ws:\") && !startswith(url, \"wss:\")) {\n loc = this.win.location;\n scheme = loc.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n path = _.trimStart(url, \"/\");\n url = scheme + \"//\" + loc.host + \"/\" + path;\n }\n this.error = false;\n this.ws = new this.win.WebSocket(url);\n this.ws.addEventListener(\"open\", this.onOpen);\n this.ws.addEventListener(\"message\", this.onMessage);\n this.ws.addEventListener(\"error\", this.onError);\n return this.ws.addEventListener(\"close\", this.onClose);\n };\n\n EventsService.prototype.stopExistingConnection = function() {\n if (this.ws === void 0) {\n return;\n }\n this.ws.removeEventListener(\"open\", this.onOpen);\n this.ws.removeEventListener(\"close\", this.onClose);\n this.ws.removeEventListener(\"error\", this.onError);\n this.ws.removeEventListener(\"message\", this.onMessage);\n this.stopHeartBeatMessages();\n this.ws.close();\n return delete this.ws;\n };\n\n EventsService.prototype.notifications = function() {\n return this.subscribe(null, 'notifications', (function(_this) {\n return function(data) {\n _this.liveAnnouncementService.show(data.title, data.desc);\n return _this.rootScope.$digest();\n };\n })(this));\n };\n\n EventsService.prototype.liveNotifications = function() {\n var subscribe, userId;\n if (this.auth.userData == null) {\n return;\n }\n userId = this.auth.userData.get('id');\n subscribe = (function(_this) {\n return function() {\n return _this.subscribe(null, \"live_notifications.\" + userId, function(data) {\n var notification;\n notification = new Notification(data.title, {\n icon: \"/\" + window._version + \"/images/favicon.png\",\n body: data.body,\n tag: data.id\n });\n notification.onshow = function() {\n if (data.timeout && data.timeout > 0) {\n return setTimeout(function() {\n return notification.close();\n }, data.timeout);\n }\n };\n if (data.url) {\n return notification.onclick = function() {\n return window.open(data.url);\n };\n }\n });\n };\n })(this);\n if (!window.Notification) {\n return this.log.info(\"This browser does not support desktop notification\");\n } else if (Notification.permission === \"granted\") {\n return subscribe();\n } else if (Notification.permission !== 'denied') {\n return Notification.requestPermission((function(_this) {\n return function(permission) {\n if (permission === \"granted\") {\n return subscribe();\n }\n };\n })(this));\n }\n };\n\n EventsService.prototype.webNotifications = function() {\n var randomTimeout, routingKey, userId;\n if (this.auth.userData == null) {\n return;\n }\n userId = this.auth.userData.get('id');\n routingKey = \"web_notifications.\" + userId;\n randomTimeout = taiga.randomInt(700, 1000);\n return this.subscribe(null, routingKey, (function(_this) {\n return function(data) {\n return _this.rootScope.$broadcast(\"notifications:new\");\n };\n })(this));\n };\n\n EventsService.prototype.startHeartBeatMessages = function() {\n var heartbeatIntervalTime, maxMissedHeartbeats;\n if (this.heartbeatInterval) {\n return;\n }\n maxMissedHeartbeats = this.config.get(\"eventsMaxMissedHeartbeats\", 5);\n heartbeatIntervalTime = this.config.get(\"eventsHeartbeatIntervalTime\", 60000);\n this.missedHeartbeats = 0;\n this.heartbeatInterval = setInterval((function(_this) {\n return function() {\n var e;\n try {\n if (_this.missedHeartbeats >= maxMissedHeartbeats) {\n throw new Error(\"Too many missed heartbeats PINGs.\");\n }\n _this.missedHeartbeats++;\n _this.sendMessage({\n cmd: \"ping\"\n });\n return _this.log.debug(\"HeartBeat send PING\");\n } catch (error1) {\n e = error1;\n _this.log.error(\"HeartBeat error: \" + e.message);\n return _this.setupConnection();\n }\n };\n })(this), heartbeatIntervalTime);\n return this.log.debug(\"HeartBeat enabled\");\n };\n\n EventsService.prototype.stopHeartBeatMessages = function() {\n if (!this.heartbeatInterval) {\n return;\n }\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = null;\n return this.log.debug(\"HeartBeat disabled\");\n };\n\n EventsService.prototype.processHeartBeatPongMessage = function(data) {\n this.missedHeartbeats = 0;\n return this.log.debug(\"HeartBeat received PONG\");\n };\n\n EventsService.prototype.serialize = function(message) {\n if (_.isObject(message)) {\n return JSON.stringify(message);\n }\n return message;\n };\n\n EventsService.prototype.sendMessage = function(message) {\n var i, len, messages, msg, results;\n this.pendingMessages.push(message);\n if (!this.connected) {\n return;\n }\n messages = _.map(this.pendingMessages, this.serialize);\n this.pendingMessages = [];\n results = [];\n for (i = 0, len = messages.length; i < len; i++) {\n msg = messages[i];\n results.push(this.ws.send(msg));\n }\n return results;\n };\n\n EventsService.prototype.processMessage = function(data) {\n var routingKey, subscription;\n routingKey = data.routing_key;\n if (this.subscriptions[routingKey] == null) {\n return;\n }\n subscription = this.subscriptions[routingKey];\n if (subscription.scope) {\n return subscription.scope.$apply(function() {\n return subscription.callback(data.data);\n });\n } else {\n return subscription.callback(data.data);\n }\n };\n\n EventsService.prototype.subscribe = function(scope, routingKey, callback, options) {\n var message, subscription;\n if (this.error) {\n return;\n }\n this.log.debug(\"Subscribe to: \" + routingKey);\n subscription = {\n scope: scope,\n routingKey: routingKey,\n callback: callback\n };\n message = {\n \"cmd\": \"subscribe\",\n \"routing_key\": routingKey\n };\n if (options) {\n message.options = options;\n }\n this.subscriptions[routingKey] = subscription;\n this.sendMessage(message);\n if (scope) {\n return scope.$on(\"$destroy\", (function(_this) {\n return function() {\n return _this.unsubscribe(routingKey);\n };\n })(this));\n }\n };\n\n EventsService.prototype.unsubscribe = function(routingKey) {\n var message;\n if (this.error) {\n return;\n }\n this.log.debug(\"Unsubscribe from: \" + routingKey);\n message = {\n \"cmd\": \"unsubscribe\",\n \"routing_key\": routingKey\n };\n return this.sendMessage(message);\n };\n\n EventsService.prototype.onOpen = function() {\n var message, token;\n this.connected = true;\n this.log.debug(\"WebSocket connection opened\");\n token = this.auth.getToken();\n message = {\n cmd: \"auth\",\n data: {\n token: token,\n sessionId: this.sessionId\n }\n };\n this.sendMessage(message);\n this.startHeartBeatMessages();\n this.notifications();\n this.liveNotifications();\n return this.webNotifications();\n };\n\n EventsService.prototype.onMessage = function(event) {\n var data;\n this.log.debug(\"WebSocket message received: \" + event.data);\n data = JSON.parse(event.data);\n if (data.cmd === \"pong\") {\n return this.processHeartBeatPongMessage(data);\n } else {\n return this.processMessage(data);\n }\n };\n\n EventsService.prototype.onError = function(error) {\n this.log.error(\"WebSocket error: \" + error);\n this.error = true;\n this.errors++;\n if (this.errors < this.maxConnectionErrors) {\n return setTimeout(this.setupConnection, this.randomTryInterval());\n } else {\n return this.log.error(\"Events are disabled: the maximum number of connection errors has been reached.\");\n }\n };\n\n EventsService.prototype.onClose = function() {\n this.log.debug(\"WebSocket closed.\");\n this.connected = false;\n this.stopHeartBeatMessages();\n if (!this.error) {\n return setTimeout(this.setupConnection, this.randomTryInterval());\n }\n };\n\n EventsService.prototype.randomTryInterval = function() {\n var max, min;\n min = this.reconnectTryInterval / 2;\n max = this.reconnectTryInterval;\n return Math.floor(Math.random() * (max - min + 1)) + min;\n };\n\n return EventsService;\n\n })();\n\n EventsProvider = (function() {\n function EventsProvider() {}\n\n EventsProvider.prototype.setSessionId = function(sessionId) {\n return this.sessionId = sessionId;\n };\n\n EventsProvider.prototype.$get = function($win, $log, $conf, $auth, liveAnnouncementService, $rootScope) {\n var service;\n service = new EventsService($win, $log, $conf, $auth, liveAnnouncementService, $rootScope);\n service.initialize(this.sessionId);\n return service;\n };\n\n EventsProvider.prototype.$get.$inject = [\"$window\", \"$log\", \"$tgConfig\", \"$tgAuth\", \"tgLiveAnnouncementService\", \"$rootScope\"];\n\n return EventsProvider;\n\n })();\n\n module.provider(\"$tgEvents\", EventsProvider);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var FeedbackDirective, bindOnce, debounce, groupBy, mixOf, module, taiga, trim;\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n mixOf = this.taiga.mixOf;\n\n debounce = this.taiga.debounce;\n\n trim = this.taiga.trim;\n\n module = angular.module(\"taigaFeedback\", []);\n\n FeedbackDirective = function($lightboxService, $repo, $confirm, $loading, feedbackService) {\n var directive, link;\n link = function($scope, $el, $attrs) {\n var form, openLightbox, submit, submitButton;\n form = $el.find(\"form\").checksley();\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var currentLoading, promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n currentLoading = $loading().target(submitButton).start();\n promise = $repo.create(\"feedback\", $scope.feedback);\n promise.then(function(data) {\n currentLoading.finish();\n $lightboxService.close($el);\n return $confirm.notify(\"success\", \"\\\\o/ we'll be happy to read your\");\n });\n return promise.then(null, function() {\n currentLoading.finish();\n return $confirm.notify(\"error\");\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n $el.on(\"submit\", \"form\", submit);\n openLightbox = function() {\n $scope.feedback = {};\n $lightboxService.open($el);\n return $el.find(\"textarea\").focus();\n };\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n return openLightbox();\n };\n directive = {\n link: link,\n templateUrl: \"common/lightbox-feedback.html\",\n scope: {}\n };\n return directive;\n };\n\n module.directive(\"tgLbFeedback\", [\"lightboxService\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"tgFeedbackService\", FeedbackDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaIntegrations\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaIssues\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaKanban\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaPlugins\", [\"ngRoute\"]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaProject\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var RelatedTaskAssignedToInlineEditionDirective, RelatedTaskCreateButtonDirective, RelatedTaskCreateFormDirective, RelatedTaskRowDirective, RelatedTasksDirective, debounce, module, taiga, trim;\n\n taiga = this.taiga;\n\n trim = this.taiga.trim;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaRelatedTasks\", []);\n\n RelatedTaskRowDirective = function($repo, $compile, $confirm, $rootscope, $loading, $template, $translate, $emojis) {\n var link, templateEdit, templateView;\n templateView = $template.get(\"task/related-task-row.html\", true);\n templateEdit = $template.get(\"task/related-task-row-edit.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var renderEdit, renderView, saveTask;\n saveTask = debounce(2000, function(task) {\n var currentLoading, promise;\n task.subject = $el.find('input').val();\n currentLoading = $loading().target($el.find('.task-name')).start();\n promise = $repo.save(task);\n promise.then((function(_this) {\n return function() {\n currentLoading.finish();\n return $rootscope.$broadcast(\"related-tasks:update\");\n };\n })(this));\n promise.then(null, (function(_this) {\n return function() {\n currentLoading.finish();\n $el.find('input').val(task.subject);\n return $confirm.notify(\"error\");\n };\n })(this));\n return promise;\n });\n renderEdit = function(task) {\n if (this.childScope) {\n this.childScope.$destroy();\n }\n this.childScope = $scope.$new();\n $el.off();\n $el.html($compile(templateEdit({\n task: task\n }))(childScope));\n $el.find(\".task-name input\").val(task.subject);\n $el.on(\"keyup\", \"input\", function(event) {\n if (event.keyCode === 13) {\n return saveTask($model.$modelValue).then(function() {\n return renderView($model.$modelValue);\n });\n } else if (event.keyCode === 27) {\n return renderView($model.$modelValue);\n }\n });\n $el.on(\"click\", \".save-task\", function(event) {\n return saveTask($model.$modelValue).then(function() {\n return renderView($model.$modelValue);\n });\n });\n return $el.on(\"click\", \".cancel-edit\", function(event) {\n return renderView($model.$modelValue);\n });\n };\n renderView = function(task) {\n var perms;\n perms = {\n modify_task: $scope.project.my_permissions.indexOf(\"modify_task\") !== -1,\n delete_task: $scope.project.my_permissions.indexOf(\"delete_task\") !== -1\n };\n $el.html($compile(templateView({\n task: task,\n perms: perms,\n emojify: function(text) {\n return $emojis.replaceEmojiNameByHtmlImgs(_.escape(text));\n }\n }))($scope));\n $el.on(\"click\", \".edit-task\", function() {\n renderEdit($model.$modelValue);\n return $el.find('input').focus().select();\n });\n return $el.on(\"click\", \".delete-task\", function(event) {\n var message, title;\n title = $translate.instant(\"TASK.TITLE_DELETE_ACTION\");\n task = $model.$modelValue;\n message = task.subject;\n return $confirm.askOnDelete(title, message).then(function(askResponse) {\n var promise;\n promise = $repo.remove(task);\n promise.then(function() {\n askResponse.finish();\n return $scope.$emit(\"related-tasks:delete\");\n });\n return promise.then(null, function() {\n askResponse.finish(false);\n return $confirm.notify(\"error\");\n });\n });\n });\n };\n $scope.$watch($attrs.ngModel, function(val) {\n if (!val) {\n return;\n }\n return renderView(val);\n });\n $scope.$on(\"related-tasks:assigned-to-changed\", function() {\n return $rootscope.$broadcast(\"related-tasks:update\");\n });\n $scope.$on(\"related-tasks:status-changed\", function() {\n return $rootscope.$broadcast(\"related-tasks:update\");\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgRelatedTaskRow\", [\"$tgRepo\", \"$compile\", \"$tgConfirm\", \"$rootScope\", \"$tgLoading\", \"$tgTemplate\", \"$translate\", \"$tgEmojis\", RelatedTaskRowDirective]);\n\n RelatedTaskCreateFormDirective = function($repo, $compile, $confirm, $tgmodel, $loading, $analytics) {\n var link, newTask;\n newTask = {\n subject: \"\",\n assigned_to: null\n };\n link = function($scope, $el, $attrs) {\n var close, createTask, render, reset;\n createTask = function(task) {\n var currentLoading, promise;\n task.subject = $el.find('input').val();\n task.assigned_to = $scope.newTask.assigned_to;\n task.status = $scope.newTask.status;\n $scope.newTask.status = $scope.project.default_task_status;\n $scope.newTask.assigned_to = null;\n currentLoading = $loading().target($el.find('.task-name')).start();\n promise = $repo.create(\"tasks\", task);\n promise.then(function() {\n $analytics.trackEvent(\"task\", \"create\", \"create task on userstory\", 1);\n currentLoading.finish();\n return $scope.$emit(\"related-tasks:add\");\n });\n promise.then(null, function() {\n $el.find('input').val(task.subject);\n currentLoading.finish();\n return $confirm.notify(\"error\");\n });\n return promise;\n };\n close = function() {\n $el.off();\n return $scope.openNewRelatedTask = false;\n };\n reset = function() {\n newTask = {\n subject: \"\",\n assigned_to: null\n };\n newTask[\"status\"] = $scope.project.default_task_status;\n newTask[\"project\"] = $scope.project.id;\n newTask[\"user_story\"] = $scope.us.id;\n return $scope.newTask = $tgmodel.make_model(\"tasks\", newTask);\n };\n render = function() {\n if ($scope.openNewRelatedTask) {\n return;\n }\n $scope.openNewRelatedTask = true;\n $el.on(\"submit\", \"form\", function(event) {\n event.preventDefault();\n return createTask(newTask).then(function() {\n reset();\n return $el.find('input').focus();\n });\n });\n return $el.on(\"keyup\", \"input\", function(event) {\n if (event.keyCode === 27) {\n return $scope.$apply(function() {\n return close();\n });\n }\n });\n };\n $scope.save = function() {\n return createTask(newTask).then(function() {\n return close();\n });\n };\n taiga.bindOnce($scope, \"us\", reset);\n $scope.$on(\"related-tasks:show-form\", function() {\n return $scope.$apply(render);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n scope: true,\n link: link,\n templateUrl: 'task/related-task-create-form.html'\n };\n };\n\n module.directive(\"tgRelatedTaskCreateForm\", [\"$tgRepo\", \"$compile\", \"$tgConfirm\", \"$tgModel\", \"$tgLoading\", \"$tgAnalytics\", RelatedTaskCreateFormDirective]);\n\n RelatedTaskCreateButtonDirective = function($repo, $compile, $confirm, $tgmodel, $template) {\n var link, template;\n template = $template.get(\"common/components/add-button.html\", true);\n link = function($scope, $el, $attrs) {\n $scope.$watch(\"project\", function(val) {\n if (!val) {\n return;\n }\n $el.off();\n if ($scope.project.my_permissions.indexOf(\"add_task\") !== -1) {\n $el.html($compile(template())($scope));\n } else {\n $el.html(\"\");\n }\n return $el.on(\"click\", \".add-button\", function(event) {\n return $scope.$emit(\"related-tasks:add-new-clicked\");\n });\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTaskCreateButton\", [\"$tgRepo\", \"$compile\", \"$tgConfirm\", \"$tgModel\", \"$tgTemplate\", RelatedTaskCreateButtonDirective]);\n\n RelatedTasksDirective = function($repo, $rs, $rootscope) {\n var link;\n link = function($scope, $el, $attrs) {\n var _isEditable, _isVisible, loadTasks;\n loadTasks = function() {\n return $rs.tasks.list($scope.projectId, null, $scope.usId).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n _isVisible = function() {\n if ($scope.project) {\n return $scope.project.my_permissions.indexOf(\"view_tasks\") !== -1;\n }\n return false;\n };\n _isEditable = function() {\n if ($scope.project) {\n return $scope.project.my_permissions.indexOf(\"modify_task\") !== -1;\n }\n return false;\n };\n $scope.reorderTask = function(task, newIndex) {\n return $rootscope.$broadcast('task:reorder', task, newIndex);\n };\n $scope.showAddTaks = function() {\n if ($scope.project) {\n return $scope.project.my_permissions.indexOf(\"add_task\") !== -1;\n }\n return false;\n };\n $scope.showRelatedTasks = function() {\n return _isVisible();\n };\n $scope.$on(\"related-tasks:add\", function() {\n return loadTasks().then(function() {\n return $rootscope.$broadcast(\"related-tasks:update\");\n });\n });\n $scope.$on(\"related-tasks:reordered\", function() {\n return loadTasks();\n });\n $scope.$on(\"related-tasks:delete\", function() {\n return loadTasks().then(function() {\n return $rootscope.$broadcast(\"related-tasks:update\");\n });\n });\n $scope.$on(\"related-tasks:add-new-clicked\", function() {\n return $scope.$broadcast(\"related-tasks:show-form\");\n });\n taiga.bindOnce($scope, \"us\", function(val) {\n return loadTasks();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTasks\", [\"$tgRepo\", \"$tgResources\", \"$rootScope\", RelatedTasksDirective]);\n\n RelatedTaskAssignedToInlineEditionDirective = function($repo, $rootscope, $translate, avatarService, $lightboxFactory) {\n var link, template;\n template = _.template(\"\\\" src=\\\"<%- imgurl %>\\\" alt=\\\"<%- name %>\\\"/>\\n
<%- name %>
\");\n link = function($scope, $el, $attrs) {\n var $ctrl, autoSave, notAutoSave, task, updateRelatedTask;\n updateRelatedTask = function(task) {\n var avatar, ctx, member;\n ctx = {\n name: $translate.instant(\"COMMON.ASSIGNED_TO.NOT_ASSIGNED\")\n };\n member = $scope.usersById[task.assigned_to];\n avatar = avatarService.getAvatar(member);\n ctx.imgurl = avatar.url;\n ctx.bg = avatar.bg;\n if (member) {\n ctx.name = member.full_name_display;\n }\n $el.find(\".avatar\").html(template(ctx));\n return $el.find(\".task-assignedto\").attr('title', ctx.name);\n };\n $ctrl = $el.controller();\n task = $scope.$eval($attrs.tgRelatedTaskAssignedToInlineEdition);\n notAutoSave = $scope.$eval($attrs.notAutoSave);\n autoSave = !notAutoSave;\n $scope.$watch($attrs.tgRelatedTaskAssignedToInlineEdition, function() {\n task = $scope.$eval($attrs.tgRelatedTaskAssignedToInlineEdition);\n return updateRelatedTask(task);\n });\n updateRelatedTask(task);\n $el.on(\"click\", \".task-assignedto\", function(event) {\n var onClose;\n event.preventDefault();\n event.stopPropagation();\n onClose = (function(_this) {\n return function(assignedUsers) {\n task.assigned_to = assignedUsers.pop() || null;\n if (autoSave) {\n return $repo.save(task).then(function() {\n $scope.$emit(\"related-tasks:assigned-to-changed\");\n return updateRelatedTask(task);\n });\n }\n };\n })(this);\n return $lightboxFactory.create('tg-lb-select-user', {\n \"class\": \"lightbox lightbox-select-user\"\n }, {\n \"currentUsers\": [task.assigned_to],\n \"activeUsers\": $scope.activeUsers,\n \"onClose\": onClose,\n \"single\": true,\n \"lbTitle\": $translate.instant(\"COMMON.ASSIGNED_USERS.ADD\")\n });\n });\n taiga.bindOnce($scope, \"project\", function(project) {\n if (project.my_permissions.indexOf(\"modify_task\") === -1) {\n $el.unbind(\"click\");\n return $el.find(\"a\").addClass(\"not-clickable\");\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTaskAssignedToInlineEdition\", [\"$tgRepo\", \"$rootScope\", \"$translate\", \"tgAvatarService\", \"tgLightboxFactory\", RelatedTaskAssignedToInlineEditionDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ResourcesService, initResources, initUrls, module, taiga, urls,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n ResourcesService = (function(superClass) {\n extend(ResourcesService, superClass);\n\n function ResourcesService() {\n return ResourcesService.__super__.constructor.apply(this, arguments);\n }\n\n return ResourcesService;\n\n })(taiga.Service);\n\n urls = {\n \"auth\": \"/auth\",\n \"auth-register\": \"/auth/register\",\n \"invitations\": \"/invitations\",\n \"refresh\": \"/auth/refresh\",\n \"users\": \"/users\",\n \"by_username\": \"/users/by_username\",\n \"users-password-recovery\": \"/users/password_recovery\",\n \"users-change-password-from-recovery\": \"/users/change_password_from_recovery\",\n \"users-change-password\": \"/users/change_password\",\n \"users-change-email\": \"/users/change_email\",\n \"users-cancel-account\": \"/users/cancel\",\n \"users-export\": \"/users/export\",\n \"user-stats\": \"/users/%s/stats\",\n \"user-liked\": \"/users/%s/liked\",\n \"user-voted\": \"/users/%s/voted\",\n \"user-watched\": \"/users/%s/watched\",\n \"user-contacts\": \"/users/%s/contacts\",\n \"user-me\": \"/users/me\",\n \"user-send-verification-email\": \"/users/send_verification_email\",\n \"permissions\": \"/permissions\",\n \"notify-policies\": \"/notify-policies\",\n \"notifications\": \"/web-notifications\",\n \"user-project-settings\": \"/user-project-settings\",\n \"user-storage\": \"/user-storage\",\n \"memberships\": \"/memberships\",\n \"bulk-create-memberships\": \"/memberships/bulk_create\",\n \"roles\": \"/roles\",\n \"permissions\": \"/permissions\",\n \"resolver\": \"/resolver\",\n \"projects\": \"/projects\",\n \"project-templates\": \"/project-templates\",\n \"project-modules\": \"/projects/%s/modules\",\n \"bulk-update-projects-order\": \"/projects/bulk_update_order\",\n \"project-like\": \"/projects/%s/like\",\n \"project-unlike\": \"/projects/%s/unlike\",\n \"project-watch\": \"/projects/%s/watch\",\n \"project-unwatch\": \"/projects/%s/unwatch\",\n \"project-contact\": \"contact\",\n \"project-transfer-validate-token\": \"/projects/%s/transfer_validate_token\",\n \"project-transfer-accept\": \"/projects/%s/transfer_accept\",\n \"project-transfer-reject\": \"/projects/%s/transfer_reject\",\n \"project-transfer-request\": \"/projects/%s/transfer_request\",\n \"project-transfer-start\": \"/projects/%s/transfer_start\",\n \"epic-statuses\": \"/epic-statuses\",\n \"userstory-statuses\": \"/userstory-statuses\",\n \"userstory-due-dates\": \"/userstory-due-dates\",\n \"userstory-due-dates-create-default\": \"/userstory-due-dates/create_default\",\n \"points\": \"/points\",\n \"task-statuses\": \"/task-statuses\",\n \"task-due-dates\": \"/task-due-dates\",\n \"task-due-dates-create-default\": \"/task-due-dates/create_default\",\n \"issue-statuses\": \"/issue-statuses\",\n \"issue-due-dates\": \"/issue-due-dates\",\n \"issue-due-dates-create-default\": \"/issue-due-dates/create_default\",\n \"issue-types\": \"/issue-types\",\n \"priorities\": \"/priorities\",\n \"severities\": \"/severities\",\n \"milestones\": \"/milestones\",\n \"move-userstories-to-milestone\": \"/milestones/%s/move_userstories_to_sprint\",\n \"move-tasks-to-milestone\": \"/milestones/%s/move_tasks_to_sprint\",\n \"move-issues-to-milestone\": \"/milestones/%s/move_issues_to_sprint\",\n \"epics\": \"/epics\",\n \"epic-upvote\": \"/epics/%s/upvote\",\n \"epic-downvote\": \"/epics/%s/downvote\",\n \"epic-watch\": \"/epics/%s/watch\",\n \"epic-unwatch\": \"/epics/%s/unwatch\",\n \"epic-related-userstories\": \"/epics/%s/related_userstories\",\n \"epic-related-userstories-bulk-create\": \"/epics/%s/related_userstories/bulk_create\",\n \"userstories\": \"/userstories\",\n \"bulk-create-us\": \"/userstories/bulk_create\",\n \"bulk-update-us-backlog-order\": \"/userstories/bulk_update_backlog_order\",\n \"bulk-update-us-milestone\": \"/userstories/bulk_update_milestone\",\n \"bulk-update-us-miles-order\": \"/userstories/bulk_update_sprint_order\",\n \"bulk-update-us-kanban-order\": \"/userstories/bulk_update_kanban_order\",\n \"userstories-filters\": \"/userstories/filters_data\",\n \"userstory-upvote\": \"/userstories/%s/upvote\",\n \"userstory-downvote\": \"/userstories/%s/downvote\",\n \"userstory-watch\": \"/userstories/%s/watch\",\n \"userstory-unwatch\": \"/userstories/%s/unwatch\",\n \"tasks\": \"/tasks\",\n \"bulk-create-tasks\": \"/tasks/bulk_create\",\n \"bulk-update-task-taskboard-order\": \"/tasks/bulk_update_taskboard_order\",\n \"bulk-update-task-milestone\": \"/tasks/bulk_update_milestone\",\n \"task-upvote\": \"/tasks/%s/upvote\",\n \"task-downvote\": \"/tasks/%s/downvote\",\n \"task-watch\": \"/tasks/%s/watch\",\n \"task-unwatch\": \"/tasks/%s/unwatch\",\n \"task-filters\": \"/tasks/filters_data\",\n \"promote-task-to-us\": \"/tasks/%s/promote_to_user_story\",\n \"issues\": \"/issues\",\n \"bulk-create-issues\": \"/issues/bulk_create\",\n \"bulk-update-issue-milestone\": \"/issues/bulk_update_milestone\",\n \"issues-filters\": \"/issues/filters_data\",\n \"issue-upvote\": \"/issues/%s/upvote\",\n \"issue-downvote\": \"/issues/%s/downvote\",\n \"issue-watch\": \"/issues/%s/watch\",\n \"issue-unwatch\": \"/issues/%s/unwatch\",\n \"promote-issue-to-us\": \"/issues/%s/promote_to_user_story\",\n \"swimlanes\": \"/swimlanes\",\n \"swimlane-userstory-statuses\": \"/swimlane-userstory-statuses\",\n \"wiki\": \"/wiki\",\n \"wiki-restore\": \"/wiki/%s/restore\",\n \"wiki-links\": \"/wiki-links\",\n \"history/epic\": \"/history/epic\",\n \"history/us\": \"/history/userstory\",\n \"history/issue\": \"/history/issue\",\n \"history/task\": \"/history/task\",\n \"history/wiki\": \"/history/wiki\",\n \"attachments/epic\": \"/epics/attachments\",\n \"attachments/us\": \"/userstories/attachments\",\n \"attachments/issue\": \"/issues/attachments\",\n \"attachments/task\": \"/tasks/attachments\",\n \"attachments/wiki_page\": \"/wiki/attachments\",\n \"attachments/wikipage\": \"/wiki/attachments\",\n \"attachments/wiki\": \"/wiki/attachments\",\n \"custom-attributes/epic\": \"/epic-custom-attributes\",\n \"custom-attributes/userstory\": \"/userstory-custom-attributes\",\n \"custom-attributes/task\": \"/task-custom-attributes\",\n \"custom-attributes/issue\": \"/issue-custom-attributes\",\n \"custom-attributes-values/epic\": \"/epics/custom-attributes-values\",\n \"custom-attributes-values/userstory\": \"/userstories/custom-attributes-values\",\n \"custom-attributes-values/task\": \"/tasks/custom-attributes-values\",\n \"custom-attributes-values/issue\": \"/issues/custom-attributes-values\",\n \"webhooks\": \"/webhooks\",\n \"webhooks-test\": \"/webhooks/%s/test\",\n \"webhooklogs\": \"/webhooklogs\",\n \"webhooklogs-resend\": \"/webhooklogs/%s/resend\",\n \"epics-csv\": \"/epics/csv?uuid=%s\",\n \"userstories-csv\": \"/userstories/csv?uuid=%s\",\n \"tasks-csv\": \"/tasks/csv?uuid=%s\",\n \"issues-csv\": \"/issues/csv?uuid=%s\",\n \"timeline-profile\": \"/timeline/profile\",\n \"timeline-user\": \"/timeline/user\",\n \"timeline-project\": \"/timeline/project\",\n \"search\": \"/search\",\n \"exporter\": \"/exporter\",\n \"importer\": \"/importer/load_dump\",\n \"feedback\": \"/feedback\",\n \"locales\": \"/locales\",\n \"applications\": \"/applications\",\n \"application-tokens\": \"/application-tokens\",\n \"stats-discover\": \"/stats/discover\",\n \"importers-trello-auth-url\": \"/importers/trello/auth_url\",\n \"importers-trello-authorize\": \"/importers/trello/authorize\",\n \"importers-trello-list-projects\": \"/importers/trello/list_projects\",\n \"importers-trello-list-users\": \"/importers/trello/list_users\",\n \"importers-trello-import-project\": \"/importers/trello/import_project\",\n \"importers-jira-auth-url\": \"/importers/jira/auth_url\",\n \"importers-jira-authorize\": \"/importers/jira/authorize\",\n \"importers-jira-list-projects\": \"/importers/jira/list_projects\",\n \"importers-jira-list-users\": \"/importers/jira/list_users\",\n \"importers-jira-import-project\": \"/importers/jira/import_project\",\n \"importers-github-auth-url\": \"/importers/github/auth_url\",\n \"importers-github-authorize\": \"/importers/github/authorize\",\n \"importers-github-list-projects\": \"/importers/github/list_projects\",\n \"importers-github-list-users\": \"/importers/github/list_users\",\n \"importers-github-import-project\": \"/importers/github/import_project\",\n \"importers-asana-auth-url\": \"/importers/asana/auth_url\",\n \"importers-asana-authorize\": \"/importers/asana/authorize\",\n \"importers-asana-list-projects\": \"/importers/asana/list_projects\",\n \"importers-asana-list-users\": \"/importers/asana/list_users\",\n \"importers-asana-import-project\": \"/importers/asana/import_project\"\n };\n\n initUrls = function($log, $urls) {\n $log.debug(\"Initialize api urls\");\n return $urls.update(urls);\n };\n\n initResources = function($log, $rs) {\n var i, len, provider, providers, results;\n $log.debug(\"Initialize resources\");\n providers = _.toArray(arguments).slice(2);\n results = [];\n for (i = 0, len = providers.length; i < len; i++) {\n provider = providers[i];\n results.push(provider($rs));\n }\n return results;\n };\n\n module = angular.module(\"taigaResources\", [\"taigaBase\"]);\n\n module.service(\"$tgResources\", ResourcesService);\n\n module.run([\"$log\", \"$tgUrls\", initUrls]);\n\n module.run([\"$log\", \"$tgResources\", \"$tgProjectsResourcesProvider\", \"$tgCustomAttributesResourcesProvider\", \"$tgCustomAttributesValuesResourcesProvider\", \"$tgMembershipsResourcesProvider\", \"$tgNotifyPoliciesResourcesProvider\", \"$tgInvitationsResourcesProvider\", \"$tgRolesResourcesProvider\", \"$tgUserProjectSettingsResourcesProvider\", \"$tgUserSettingsResourcesProvider\", \"$tgSprintsResourcesProvider\", \"$tgEpicsResourcesProvider\", \"$tgUserstoriesResourcesProvider\", \"$tgTasksResourcesProvider\", \"$tgIssuesResourcesProvider\", \"$tgSwimlanesResourcesProvider\", \"$tgWikiResourcesProvider\", \"$tgSearchResourcesProvider\", \"$tgMdRenderResourcesProvider\", \"$tgHistoryResourcesProvider\", \"$tgKanbanResourcesProvider\", \"$tgModulesResourcesProvider\", \"$tgWebhooksResourcesProvider\", \"$tgWebhookLogsResourcesProvider\", \"$tgLocalesResourcesProvider\", \"$tgUsersResourcesProvider\", initResources]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var SearchBoxDirective, SearchController, SearchDirective, bindOnce, debounce, debounceLeading, groupBy, mixOf, module, taiga, trim,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n mixOf = this.taiga.mixOf;\n\n debounceLeading = this.taiga.debounceLeading;\n\n trim = this.taiga.trim;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaSearch\", []);\n\n SearchController = (function(superClass) {\n extend(SearchController, superClass);\n\n SearchController.$inject = [\"$scope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"tgAppMetaService\", \"$tgNavUrls\", \"$translate\", \"tgErrorHandlingService\", \"tgProjectService\"];\n\n function SearchController(scope1, repo, rs, params, q, location, appMetaService, navUrls, translate, errorHandlingService, projectService1) {\n var description, loadSearchData, title;\n this.scope = scope1;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.appMetaService = appMetaService;\n this.navUrls = navUrls;\n this.translate = translate;\n this.errorHandlingService = errorHandlingService;\n this.projectService = projectService1;\n this.scope.sectionName = \"Search\";\n this.loadInitialData();\n title = this.translate.instant(\"SEARCH.PAGE_TITLE\", {\n projectName: this.scope.project.name\n });\n description = this.translate.instant(\"SEARCH.PAGE_DESCRIPTION\", {\n projectName: this.scope.project.name,\n projectDescription: this.scope.project.description\n });\n this.appMetaService.setAll(title, description);\n this.scope.searchTerm = null;\n loadSearchData = debounceLeading(100, (function(_this) {\n return function(t) {\n return _this.loadSearchData(t);\n };\n })(this));\n bindOnce(this.scope, \"projectId\", (function(_this) {\n return function(projectId) {\n if (!_this.scope.searchResults && _this.scope.searchTerm) {\n return _this.loadSearchData();\n }\n };\n })(this));\n this.scope.$watch(\"searchTerm\", (function(_this) {\n return function(term) {\n if (term !== void 0 && _this.scope.projectId) {\n return _this.loadSearchData(term);\n }\n };\n })(this));\n }\n\n SearchController.prototype.loadFilters = function() {\n var defered;\n defered = this.q.defer();\n defered.resolve();\n return defered.promise;\n };\n\n SearchController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n this.scope.project = project;\n this.scope.$emit('project:loaded', project);\n this.scope.epicStatusById = groupBy(project.epic_statuses, function(x) {\n return x.id;\n });\n this.scope.issueStatusById = groupBy(project.issue_statuses, function(x) {\n return x.id;\n });\n this.scope.taskStatusById = groupBy(project.task_statuses, function(x) {\n return x.id;\n });\n this.scope.severityById = groupBy(project.severities, function(x) {\n return x.id;\n });\n this.scope.priorityById = groupBy(project.priorities, function(x) {\n return x.id;\n });\n this.scope.usStatusById = groupBy(project.us_statuses, function(x) {\n return x.id;\n });\n return project;\n };\n\n SearchController.prototype.loadSearchData = function(term) {\n if (term == null) {\n term = \"\";\n }\n this.scope.loading = true;\n return this._loadSearchData(term).then((function(_this) {\n return function(data) {\n _this.scope.searchResults = data;\n return _this.scope.loading = false;\n };\n })(this));\n };\n\n SearchController.prototype._loadSearchData = function(term) {\n if (term == null) {\n term = \"\";\n }\n if (this._promise) {\n this._promise.abort();\n }\n this._promise = this.rs.search[\"do\"](this.scope.projectId, term);\n return this._promise;\n };\n\n SearchController.prototype.loadInitialData = function() {\n var project;\n project = this.loadProject();\n this.scope.projectId = project.id;\n return this.fillUsersAndRoles(project.members, project.roles);\n };\n\n return SearchController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"SearchController\", SearchController);\n\n SearchBoxDirective = function(projectService, $lightboxService, $navurls, $location, $route) {\n var link;\n link = function($scope, $el, $attrs) {\n var openLightbox, project, submit;\n project = null;\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var form, text, url;\n event.preventDefault();\n form = $el.find(\"form\").checksley();\n if (!form.validate()) {\n return;\n }\n text = $el.find(\"#search-text\").val();\n url = $navurls.resolve(\"project-search\", {\n project: project.get(\"slug\")\n });\n return $scope.$apply(function() {\n $lightboxService.close($el);\n $location.path(url);\n $location.search(\"text\", text).path(url);\n return $route.reload();\n });\n };\n })(this));\n openLightbox = function() {\n project = projectService.project;\n return $lightboxService.open($el).then(function() {\n return $el.find(\"#search-text\").focus();\n });\n };\n $el.on(\"submit\", \"form\", submit);\n return openLightbox();\n };\n return {\n templateUrl: \"search/lightbox-search.html\",\n link: link\n };\n };\n\n SearchBoxDirective.$inject = [\"tgProjectService\", \"lightboxService\", \"$tgNavUrls\", \"$tgLocation\", \"$route\"];\n\n module.directive(\"tgSearchBox\", SearchBoxDirective);\n\n SearchDirective = function($log, $compile, $templatecache, $routeparams, $location, $analytics) {\n var link, linkTable;\n linkTable = function($scope, $el, $attrs, $ctrl) {\n var activeSectionName, applyAutoTab, currentSearchResults, getActiveSection, markSectionTabActive, renderFilterTabs, renderTableContent, tabsDom, templates;\n applyAutoTab = true;\n activeSectionName = \"userstories\";\n tabsDom = $el.find(\".search-filter\");\n currentSearchResults = null;\n getActiveSection = function(data) {\n var i, len, maxVal, name, ref, selectedSection, value;\n maxVal = 0;\n selectedSection = {};\n selectedSection.name = \"userstories\";\n selectedSection.value = [];\n if (!applyAutoTab) {\n selectedSection.name = activeSectionName;\n selectedSection.value = data[activeSectionName];\n return selectedSection;\n }\n if (data) {\n ref = [\"userstories\", \"epics\", \"issues\", \"tasks\", \"wikipages\"];\n for (i = 0, len = ref.length; i < len; i++) {\n name = ref[i];\n value = data[name];\n if (value.length > maxVal) {\n maxVal = value.length;\n selectedSection.name = name;\n selectedSection.value = value;\n break;\n }\n }\n }\n if (maxVal === 0) {\n return selectedSection;\n }\n return selectedSection;\n };\n renderFilterTabs = function(data) {\n var name, results, value;\n results = [];\n for (name in data) {\n value = data[name];\n tabsDom.find(\"li.\" + name).show();\n results.push(tabsDom.find(\"li.\" + name + \" .num\").html(value.length));\n }\n return results;\n };\n markSectionTabActive = function(section) {\n tabsDom.find(\"a.active\").removeClass(\"active\");\n tabsDom.find(\"li.\" + section.name + \" a\").addClass(\"active\");\n applyAutoTab = false;\n return activeSectionName = section.name;\n };\n templates = {\n epics: $templatecache.get(\"search-epics\"),\n issues: $templatecache.get(\"search-issues\"),\n tasks: $templatecache.get(\"search-tasks\"),\n userstories: $templatecache.get(\"search-userstories\"),\n wikipages: $templatecache.get(\"search-wikipages\")\n };\n renderTableContent = function(section) {\n var element, oldElements, oldScope, scope, template;\n oldElements = $el.find(\".search-result-table\").children();\n oldScope = oldElements.scope();\n if (oldScope) {\n oldScope.$destroy();\n oldElements.remove();\n }\n scope = $scope.$new();\n scope[section.name] = section.value;\n template = angular.element.parseHTML(trim(templates[section.name]));\n element = $compile(template)(scope);\n return $el.find(\".search-result-table\").html(element);\n };\n $scope.$watch(\"searchResults\", function(data) {\n var activeSection;\n currentSearchResults = data;\n if (!currentSearchResults) {\n return;\n }\n activeSection = getActiveSection(data);\n renderFilterTabs(data);\n renderTableContent(activeSection);\n return markSectionTabActive(activeSection);\n });\n $scope.$watch(\"searchTerm\", function(searchTerm) {\n if (searchTerm !== void 0) {\n $location.search(\"text\", searchTerm);\n }\n return $analytics.trackPage($location.url(), \"Search\");\n });\n return $el.on(\"click\", \".search-filter li > a\", function(event) {\n var section, sectionData, sectionName, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n sectionName = target.parent().data(\"name\");\n sectionData = !currentSearchResults ? [] : currentSearchResults[sectionName];\n section = {\n name: sectionName,\n value: sectionData\n };\n return $scope.$apply(function() {\n renderTableContent(section);\n return markSectionTabActive(section);\n });\n });\n };\n link = function($scope, $el, $attrs) {\n var $ctrl, searchText;\n $ctrl = $el.controller();\n linkTable($scope, $el, $attrs, $ctrl);\n searchText = $routeparams.text;\n return $scope.$watch(\"projectId\", function(projectId) {\n if (projectId != null) {\n return $scope.searchTerm = searchText;\n }\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgSearch\", [\"$log\", \"$compile\", \"$templateCache\", \"$routeParams\", \"$tgLocation\", \"$tgAnalytics\", SearchDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaTaskboard\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaTasks\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaTeam\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaUserSettings\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaUserStories\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaWiki\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AnalyticsService, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaCommon\");\n\n AnalyticsService = (function(superClass) {\n extend(AnalyticsService, superClass);\n\n AnalyticsService.$inject = [\"$rootScope\", \"$log\", \"$tgConfig\", \"$window\", \"$document\", \"$location\"];\n\n function AnalyticsService(rootscope, log, config, win, doc, location) {\n var conf;\n this.rootscope = rootscope;\n this.log = log;\n this.config = config;\n this.win = win;\n this.doc = doc;\n this.location = location;\n this.initialized = false;\n conf = this.config.get(\"analytics\", {});\n this.accountId = conf.accountId;\n this.pageEvent = conf.pageEvent || \"$routeChangeSuccess\";\n this.trackRoutes = conf.trackRoutes || true;\n this.ignoreFirstPageLoad = conf.ignoreFirstPageLoad || false;\n }\n\n AnalyticsService.prototype.initialize = function() {\n if (!this.accountId) {\n this.log.debug(\"Analytics: no account id provided. Disabling.\");\n return;\n }\n this.injectAnalytics();\n this.win.ga(\"create\", this.accountId, \"auto\");\n this.win.ga(\"require\", \"ec\");\n this.win.ga(\"require\", \"displayfeatures\");\n if (this.trackRoutes && (!this.ignoreFirstPageLoad)) {\n this.win.ga(\"send\", \"pageview\", this.getUrl());\n }\n if (this.trackRoutes) {\n this.rootscope.$on(this.pageEvent, (function(_this) {\n return function() {\n return _this.trackPage(_this.getUrl(), \"Taiga\");\n };\n })(this));\n }\n this.initialized = true;\n return this.setUserId();\n };\n\n AnalyticsService.prototype.setUserId = function() {\n var ref, ref1;\n if (!this.initialized) {\n return;\n }\n if (!this.win.ga) {\n return;\n }\n return this.win.ga('set', 'userId', (ref = this.rootscope) != null ? (ref1 = ref.user) != null ? ref1.uuid : void 0 : void 0);\n };\n\n AnalyticsService.prototype.getUrl = function() {\n return this.location.path();\n };\n\n AnalyticsService.prototype.injectAnalytics = function() {\n var fn;\n fn = (function(i,s,o,g,r,a,m){i[\"GoogleAnalyticsObject\"]=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments);},i[r].l=1*new Date();a=s.createElement(o),\n m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m);});\n return fn(window, document, \"script\", \"//www.google-analytics.com/analytics.js\", \"ga\");\n };\n\n AnalyticsService.prototype.trackPage = function(url, title) {\n if (!this.initialized) {\n return;\n }\n if (!this.win.ga) {\n return;\n }\n title = title || this.doc[0].title;\n return this.win.ga(\"send\", \"pageview\", {\n \"page\": url,\n \"title\": title\n });\n };\n\n AnalyticsService.prototype.trackEvent = function(category, action, label, value) {\n if (!this.initialized) {\n return;\n }\n if (!this.win.ga) {\n return;\n }\n return this.win.ga(\"send\", \"event\", category, action, label, value);\n };\n\n AnalyticsService.prototype.ecViewPlan = function(plan) {\n if (!this.initialized) {\n return;\n }\n if (!this.win.ga) {\n return;\n }\n this.win.ga('ec:addProduct', {\n 'id': plan.plan_id,\n 'name': plan.name,\n 'category': \"plans\",\n 'quantity': 1,\n 'position': 1\n });\n this.win.ga('ec:setAction', 'detail');\n return this.trackEvent(\"ecommerce\", \"view-product-detail\", plan.name, plan.plan_id);\n };\n\n AnalyticsService.prototype.ecClickPlan = function(plan) {\n if (!this.initialized) {\n return;\n }\n if (!this.win.ga) {\n return;\n }\n this.win.ga('ec:addProduct', {\n 'id': plan.plan_id,\n 'name': plan.name,\n 'category': \"plans\",\n 'quantity': 1,\n 'position': 1\n });\n this.win.ga('ec:setAction', 'click');\n return this.trackEvent(\"ecommerce\", \"click-product\", plan.name, plan.plan_id);\n };\n\n AnalyticsService.prototype.ecListPlans = function(arg, page) {\n var i, len, plan, plans, position;\n plans = arg[0];\n if (!this.initialized) {\n return;\n }\n if (!this.win.ga) {\n return;\n }\n position = 1;\n for (i = 0, len = plans.length; i < len; i++) {\n plan = plans[i];\n this.win.ga('ec:addImpression', {\n 'id': plan.plan_id,\n 'name': plan.name,\n 'list': page,\n 'position': position\n });\n position++;\n }\n return this.trackEvent(\"ecommerce\", \"list-plans\");\n };\n\n AnalyticsService.prototype.ecAddToCart = function(plan_id, plan_name, plan_price) {\n if (!this.initialized) {\n return;\n }\n if (!this.win.ga) {\n return;\n }\n this.win.ga('ec:addProduct', {\n 'id': plan_id,\n 'name': plan_name,\n 'price': plan_price,\n 'category': \"plans\",\n 'quantity': 1,\n 'position': 1\n });\n this.win.ga('ec:setAction', 'add');\n return this.trackEvent('ecommerce', 'add-to-cart', 'Collect Payment Info', null);\n };\n\n AnalyticsService.prototype.ecConfirmChange = function(plan_id, plan_name, plan_price) {\n if (!this.initialized) {\n return;\n }\n if (!this.win.ga) {\n return;\n }\n this.win.ga('ec:addProduct', {\n 'id': plan_id,\n 'name': plan_name,\n 'price': plan_price,\n 'category': \"plans\",\n 'quantity': 1,\n 'position': 1\n });\n this.win.ga('ec:setAction', 'checkout', {\n 'step': 1\n });\n return this.trackEvent(\"ecommerce\", \"start-checkout\", \"start\", 1);\n };\n\n AnalyticsService.prototype.ecPurchase = function(plan_id, plan_name, plan_price) {\n if (!this.initialized) {\n return;\n }\n if (!this.win.ga) {\n return;\n }\n this.win.ga('ec:addProduct', {\n 'id': plan_id,\n 'name': plan_name,\n 'price': plan_price,\n 'category': \"plans\",\n 'quantity': 1,\n 'position': 1\n });\n this.win.ga('ec:setAction', 'checkout', {\n 'step': 2\n });\n this.trackEvent(\"ecommerce\", \"end-checkout\", \"end\", 2);\n this.win.ga('ec:addProduct', {\n 'id': plan_id,\n 'name': plan_name,\n 'price': plan_price,\n 'category': \"plans\",\n 'quantity': 1,\n 'position': 1\n });\n this.win.ga('ec:setAction', 'purchase', {\n 'id': plan_id,\n 'revenue': plan_price\n });\n return this.trackEvent('ecommerce', 'checkout', 'Plan checkout', null);\n };\n\n return AnalyticsService;\n\n })(taiga.Service);\n\n module.service(\"$tgAnalytics\", AnalyticsService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var BindScope, module;\n\n module = angular.module(\"taigaCommon\");\n\n BindScope = function(config) {\n var link;\n if (!config.debugInfo) {\n jQuery.fn.scope = function() {\n return this.data('scope');\n };\n }\n link = function($scope, $el) {\n if (!config.debugInfo) {\n return $el.data('scope', $scope).addClass('tg-scope');\n }\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgBindScope\", [\"$tgConfig\", BindScope]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CompileHtmlDirective;\n\n CompileHtmlDirective = function($compile) {\n var link;\n link = function(scope, element, attrs) {\n return scope.$watch(attrs.tgCompileHtml, function(newValue, oldValue) {\n element.html(newValue);\n return $compile(element.contents())(scope);\n });\n };\n return {\n link: link\n };\n };\n\n CompileHtmlDirective.$inject = [\"$compile\"];\n\n angular.module(\"taigaCommon\").directive(\"tgCompileHtml\", CompileHtmlDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var BlockButtonDirective, CreatedByDisplayDirective, DateRangeDirective, DateSelectorDirective, DeleteButtonDirective, ListItemAssignedtoDirective, ListItemEpicStatusDirective, ListItemIssueStatusDirective, ListItemPriorityDirective, ListItemSeverityDirective, ListItemTaskStatusDirective, ListItemTypeDirective, ListItemUsStatusDirective, SprintProgressBarDirective, TgMainTitleDirective, TgProgressBarDirective, UserDisplayDirective, bindOnce, module, taiga;\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaCommon\");\n\n DateRangeDirective = function($translate) {\n var link, renderRange;\n renderRange = function($el, first, second) {\n var endDate, prettyDate, startDate;\n prettyDate = $translate.instant(\"BACKLOG.SPRINTS.DATE\");\n startDate = moment(first).format(prettyDate);\n endDate = moment(second).format(prettyDate);\n return $el.html($translate.instant(\"TASKBOARD.TITLE_DATE_RANGE\", {\n startDate: startDate,\n endDate: endDate\n }));\n };\n link = function($scope, $el, $attrs) {\n var first, ref, second;\n ref = $attrs.tgDateRange.split(\",\"), first = ref[0], second = ref[1];\n return bindOnce($scope, first, function(valFirst) {\n return bindOnce($scope, second, function(valSecond) {\n return renderRange($el, valFirst, valSecond);\n });\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgDateRange\", [\"$translate\", DateRangeDirective]);\n\n DateSelectorDirective = function($rootscope, datePickerConfigService) {\n var link;\n link = function($scope, $el, $attrs, $model) {\n var initialize, selectedDate, unbind;\n selectedDate = null;\n initialize = function() {\n var datePickerConfig;\n datePickerConfig = datePickerConfigService.get();\n _.merge(datePickerConfig, {\n field: $el[0]\n });\n return $el.picker = new Pikaday(datePickerConfig);\n };\n unbind = $rootscope.$on(\"$translateChangeEnd\", (function(_this) {\n return function(ctx) {\n if ($el.picker) {\n $el.picker.destroy();\n }\n return initialize();\n };\n })(this));\n $attrs.$observe(\"pickerValue\", function(val) {\n $el.val(val);\n if (val != null) {\n if ($el.picker) {\n $el.picker.destroy();\n }\n initialize();\n }\n return $el.picker.setDate(val);\n });\n return $scope.$on(\"$destroy\", function() {\n $el.off();\n unbind();\n return $el.picker.destroy();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgDateSelector\", [\"$rootScope\", \"tgDatePickerConfigService\", DateSelectorDirective]);\n\n SprintProgressBarDirective = function() {\n var link, renderProgress;\n renderProgress = function($el, percentage, visual_percentage) {\n if ($el.hasClass(\".current-progress\")) {\n return $el.css(\"width\", percentage + \"%\");\n } else {\n $el.find(\".current-progress\").css(\"width\", visual_percentage + \"%\");\n return $el.find(\".number\").html(percentage + \" %\");\n }\n };\n link = function($scope, $el, $attrs) {\n bindOnce($scope, $attrs.tgSprintProgressbar, function(sprint) {\n var closedPoints, percentage, totalPoints, visual_percentage;\n closedPoints = sprint.closed_points;\n totalPoints = sprint.total_points;\n percentage = 0;\n if (totalPoints !== 0) {\n percentage = Math.round(100 * (closedPoints / totalPoints));\n }\n visual_percentage = 0;\n if (totalPoints !== 0) {\n visual_percentage = Math.round(98 * (closedPoints / totalPoints));\n }\n return renderProgress($el, percentage, visual_percentage);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgSprintProgressbar\", SprintProgressBarDirective);\n\n CreatedByDisplayDirective = function($template, $compile, $translate, $navUrls, avatarService) {\n var link;\n link = function($scope, $el, $attrs) {\n bindOnce($scope, $attrs.ngModel, function(model) {\n var avatar, ref;\n if (model != null) {\n avatar = avatarService.getAvatar(model.owner_extra_info);\n $scope.owner = model.owner_extra_info || {\n full_name_display: $translate.instant(\"COMMON.EXTERNAL_USER\")\n };\n $scope.owner.avatar = avatar.url;\n $scope.owner.bg = avatar.bg;\n $scope.url = ((ref = $scope.owner) != null ? ref.is_active : void 0) ? $navUrls.resolve(\"user-profile\", {\n username: $scope.owner.username\n }) : \"\";\n return $scope.date = moment(model.created_date).format($translate.instant(\"COMMON.DATETIME\"));\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\",\n scope: true,\n templateUrl: \"common/components/created-by.html\"\n };\n };\n\n module.directive(\"tgCreatedByDisplay\", [\"$tgTemplate\", \"$compile\", \"$translate\", \"$tgNavUrls\", \"tgAvatarService\", CreatedByDisplayDirective]);\n\n UserDisplayDirective = function($template, $compile, $translate, $navUrls, avatarService) {\n var link;\n link = function($scope, $el, $attrs) {\n var avatar, id;\n id = $attrs.tgUserId;\n $scope.user = $scope.usersById[id] || {\n full_name_display: $translate.instant(\"COMMON.EXTERNAL_USER\")\n };\n avatar = avatarService.getAvatar($scope.usersById[id] || null);\n $scope.user.avatar = avatar.url;\n $scope.user.bg = avatar.bg;\n $scope.url = $scope.user.is_active ? $navUrls.resolve(\"user-profile\", {\n username: $scope.user.username\n }) : \"\";\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n scope: true,\n templateUrl: \"common/components/user-display.html\"\n };\n };\n\n module.directive(\"tgUserDisplay\", [\"$tgTemplate\", \"$compile\", \"$translate\", \"$tgNavUrls\", \"tgAvatarService\", UserDisplayDirective]);\n\n BlockButtonDirective = function($rootscope, $loading, $template) {\n var link, template;\n template = $template.get(\"common/components/block-button.html\");\n link = function($scope, $el, $attrs, $model) {\n var isEditable;\n isEditable = function() {\n return $scope.project.my_permissions.indexOf(\"modify_us\") !== -1;\n };\n $scope.$watch($attrs.ngModel, function(item) {\n if (!item) {\n return;\n }\n $scope.item = item;\n if (isEditable()) {\n return $el.find('.button-lock').addClass('editable');\n }\n });\n $el.on(\"click\", \".item-block\", function(event) {\n event.preventDefault();\n return $rootscope.$broadcast(\"block\", $model.$modelValue);\n });\n $el.on(\"click\", \".item-unblock\", function(event) {\n var currentLoading, finish;\n event.preventDefault();\n currentLoading = $loading().target($el.find(\".item-unblock\")).start();\n finish = function() {\n return currentLoading.finish();\n };\n return $rootscope.$broadcast(\"unblock\", $model.$modelValue, finish);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\",\n template: template\n };\n };\n\n module.directive(\"tgBlockButton\", [\"$rootScope\", \"$tgLoading\", \"$tgTemplate\", BlockButtonDirective]);\n\n DeleteButtonDirective = function($log, $repo, $confirm, $location, $template) {\n var link, template;\n template = $template.get(\"common/components/delete-button.html\");\n link = function($scope, $el, $attrs, $model) {\n if (!$attrs.onDeleteGoToUrl) {\n return $log.error(\"DeleteButtonDirective requires on-delete-go-to-url set in scope.\");\n }\n if (!$attrs.onDeleteTitle) {\n return $log.error(\"DeleteButtonDirective requires on-delete-title set in scope.\");\n }\n $el.on(\"click\", \".button-delete\", function(event) {\n var subtitle, title;\n title = $attrs.onDeleteTitle;\n subtitle = $model.$modelValue.subject;\n return $confirm.askOnDelete(title, subtitle).then((function(_this) {\n return function(askResponse) {\n var promise;\n promise = $repo.remove($model.$modelValue);\n promise.then(function() {\n var url;\n askResponse.finish();\n url = $scope.$eval($attrs.onDeleteGoToUrl);\n return $location.path(url);\n });\n return promise.then(null, function() {\n askResponse.finish(false);\n return $confirm.notify(\"error\");\n });\n };\n })(this));\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\",\n template: template\n };\n };\n\n module.directive(\"tgDeleteButton\", [\"$log\", \"$tgRepo\", \"$tgConfirm\", \"$tgLocation\", \"$tgTemplate\", DeleteButtonDirective]);\n\n ListItemEpicStatusDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var epic;\n epic = $scope.$eval($attrs.tgListitemEpicStatus);\n return bindOnce($scope, \"epicStatusById\", function(epicStatusById) {\n return $el.text(epicStatusById[epic.status].name);\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgListitemEpicStatus\", ListItemEpicStatusDirective);\n\n ListItemUsStatusDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var us;\n us = $scope.$eval($attrs.tgListitemUsStatus);\n return bindOnce($scope, \"usStatusById\", function(usStatusById) {\n return $el.text(usStatusById[us.status].name);\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgListitemUsStatus\", ListItemUsStatusDirective);\n\n ListItemTaskStatusDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var task;\n task = $scope.$eval($attrs.tgListitemTaskStatus);\n return bindOnce($scope, \"taskStatusById\", function(taskStatusById) {\n return $el.text(taskStatusById[task.status].name);\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgListitemTaskStatus\", ListItemTaskStatusDirective);\n\n ListItemAssignedtoDirective = function($template, $translate, avatarService) {\n var link, template;\n template = $template.get(\"common/components/list-item-assigned-to-avatar.html\", true);\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, \"usersById\", function(usersById) {\n var avatar, ctx, item, member;\n item = $scope.$eval($attrs.tgListitemAssignedto);\n ctx = {\n name: $translate.instant(\"COMMON.ASSIGNED_TO.NOT_ASSIGNED\")\n };\n member = usersById[item.assigned_to];\n avatar = avatarService.getAvatar(member);\n ctx.imgurl = avatar.url;\n ctx.bg = avatar.bg;\n if (member) {\n ctx.name = member.full_name_display;\n }\n return $el.html(template(ctx));\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgListitemAssignedto\", [\"$tgTemplate\", \"$translate\", \"tgAvatarService\", ListItemAssignedtoDirective]);\n\n ListItemIssueStatusDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var issue;\n issue = $scope.$eval($attrs.tgListitemIssueStatus);\n return bindOnce($scope, \"issueStatusById\", function(issueStatusById) {\n return $el.text(issueStatusById[issue.status].name);\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgListitemIssueStatus\", ListItemIssueStatusDirective);\n\n ListItemTypeDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var render;\n render = function(issueTypeById, issue) {\n var domNode, type;\n type = issueTypeById[issue.type];\n domNode = $el.find(\".level\");\n domNode.css(\"background-color\", type.color);\n return domNode.attr(\"title\", type.name);\n };\n bindOnce($scope, \"issueTypeById\", function(issueTypeById) {\n var issue;\n issue = $scope.$eval($attrs.tgListitemType);\n return render(issueTypeById, issue);\n });\n return $scope.$watch($attrs.tgListitemType, function(issue) {\n return render($scope.issueTypeById, issue);\n });\n };\n return {\n link: link,\n templateUrl: \"common/components/level.html\"\n };\n };\n\n module.directive(\"tgListitemType\", ListItemTypeDirective);\n\n ListItemPriorityDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var render;\n render = function(priorityById, issue) {\n var domNode, priority;\n priority = priorityById[issue.priority];\n domNode = $el.find(\".level\");\n domNode.css(\"background-color\", priority.color);\n return domNode.attr(\"title\", priority.name);\n };\n bindOnce($scope, \"priorityById\", function(priorityById) {\n var issue;\n issue = $scope.$eval($attrs.tgListitemPriority);\n return render(priorityById, issue);\n });\n return $scope.$watch($attrs.tgListitemPriority, function(issue) {\n return render($scope.priorityById, issue);\n });\n };\n return {\n link: link,\n templateUrl: \"common/components/level.html\"\n };\n };\n\n module.directive(\"tgListitemPriority\", ListItemPriorityDirective);\n\n ListItemSeverityDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var render;\n render = function(severityById, issue) {\n var domNode, severity;\n severity = severityById[issue.severity];\n domNode = $el.find(\".level\");\n domNode.css(\"background-color\", severity.color);\n return domNode.attr(\"title\", severity.name);\n };\n bindOnce($scope, \"severityById\", function(severityById) {\n var issue;\n issue = $scope.$eval($attrs.tgListitemSeverity);\n return render(severityById, issue);\n });\n return $scope.$watch($attrs.tgListitemSeverity, function(issue) {\n return render($scope.severityById, issue);\n });\n };\n return {\n link: link,\n templateUrl: \"common/components/level.html\"\n };\n };\n\n module.directive(\"tgListitemSeverity\", ListItemSeverityDirective);\n\n TgProgressBarDirective = function($template) {\n var link, render, template;\n template = $template.get(\"common/components/progress-bar.html\", true);\n render = function(el, percentage) {\n return el.html(template({\n percentage: percentage\n }));\n };\n link = function($scope, $el, $attrs) {\n var element;\n element = angular.element($el);\n $scope.$watch($attrs.tgProgressBar, function(percentage) {\n percentage = _.max([0, percentage]);\n percentage = _.min([100, percentage]);\n return render($el, percentage);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProgressBar\", [\"$tgTemplate\", TgProgressBarDirective]);\n\n TgMainTitleDirective = function($translate) {\n var link;\n link = function($scope, $el, $attrs) {\n $attrs.$observe(\"i18nSectionName\", function(i18nSectionName) {\n return $scope.sectionName = i18nSectionName;\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n templateUrl: \"common/components/main-title.html\"\n };\n };\n\n module.directive(\"tgMainTitle\", [\"$translate\", TgMainTitleDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ConfirmService, NOTIFICATION_MSG, bindMethods, cancelTimeout, debounce, module, taiga, timeout,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n timeout = this.taiga.timeout;\n\n cancelTimeout = this.taiga.cancelTimeout;\n\n debounce = this.taiga.debounce;\n\n bindMethods = this.taiga.bindMethods;\n\n NOTIFICATION_MSG = {\n \"success\": {\n title: \"NOTIFICATION.OK\",\n message: \"NOTIFICATION.SAVED\"\n },\n \"error\": {\n title: \"NOTIFICATION.WARNING\",\n message: \"NOTIFICATION.WARNING_TEXT\"\n },\n \"light-error\": {\n title: \"NOTIFICATION.WARNING\",\n message: \"NOTIFICATION.WARNING_TEXT\"\n }\n };\n\n ConfirmService = (function(superClass) {\n extend(ConfirmService, superClass);\n\n ConfirmService.$inject = [\"$q\", \"lightboxService\", \"$tgLoading\", \"$translate\", \"$filter\"];\n\n function ConfirmService(q, lightboxService, loading, translate, filter) {\n this.q = q;\n this.lightboxService = lightboxService;\n this.loading = loading;\n this.translate = translate;\n this.filter = filter;\n bindMethods(this);\n }\n\n ConfirmService.prototype.hide = function(el) {\n if (el) {\n this.lightboxService.close(el);\n return el.off(\".confirm-dialog\");\n }\n };\n\n ConfirmService.prototype.ask = function(title, subtitle, message, lightboxSelector) {\n var defered, el, onEsc;\n if (lightboxSelector == null) {\n lightboxSelector = \".lightbox-generic-ask\";\n }\n defered = this.q.defer();\n el = angular.element(lightboxSelector);\n el.find(\".title\").text(title || '');\n el.find(\".subtitle\").text(subtitle || '');\n if (message) {\n message = this.filter('textToHTML')(message);\n }\n el.find(\".message\").html(message || '');\n el.on(\"click.confirm-dialog\", \".js-confirm\", debounce(2000, (function(_this) {\n return function(event) {\n var currentLoading, currentWidth, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n currentWidth = target.width();\n target.width(currentWidth);\n currentLoading = _this.loading().target(target).start();\n return defered.resolve({\n finish: function(ok) {\n if (ok == null) {\n ok = true;\n }\n target.css(\"width\", \"\");\n currentLoading.finish();\n if (ok) {\n return _this.hide(el);\n }\n }\n });\n };\n })(this)));\n el.on(\"click.confirm-dialog\", \".js-cancel\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.reject();\n return _this.hide(el);\n };\n })(this));\n onEsc = (function(_this) {\n return function() {\n return _this.hide(el);\n };\n })(this);\n this.lightboxService.open(el, null, onEsc);\n return defered.promise;\n };\n\n ConfirmService.prototype.askDelete = function(title, subtitle, message, lightboxSelector) {\n var defered, lightbox, onEsc;\n if (lightboxSelector == null) {\n lightboxSelector = \".lightbox-generic-delete\";\n }\n defered = this.q.defer();\n lightbox = angular.element(lightboxSelector);\n lightbox.find(\".title\").text(title || '');\n lightbox.find(\".subtitle\").text(subtitle || '');\n if (message) {\n message = this.filter('textToHTML')(message);\n }\n lightbox.find(\".message\").html(message || '');\n lightbox.on(\"click.confirm-dialog\", \".js-confirm\", debounce(2000, (function(_this) {\n return function(event) {\n var currentLoading, currentWidth, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n currentWidth = target.width();\n target.width(currentWidth);\n currentLoading = _this.loading().target(target).start();\n return defered.resolve({\n finish: function(ok) {\n if (ok == null) {\n ok = true;\n }\n target.css(\"width\", \"\");\n currentLoading.finish();\n if (ok) {\n return _this.hide(lightbox);\n }\n }\n });\n };\n })(this)));\n lightbox.on(\"click.confirm-dialog\", \".js-cancel\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.reject();\n return _this.hide(lightbox);\n };\n })(this));\n onEsc = (function(_this) {\n return function() {\n return _this.hide(lightbox);\n };\n })(this);\n this.lightboxService.open(lightbox, null, onEsc);\n return defered.promise;\n };\n\n ConfirmService.prototype.askOnDelete = function(title, message, subtitle) {\n if (subtitle == null) {\n subtitle = this.translate.instant(\"NOTIFICATION.ASK_DELETE\");\n }\n return this.askDelete(title, subtitle, message);\n };\n\n ConfirmService.prototype.askChoice = function(title, subtitle, choices, replacement, warning, lightboxSelector) {\n var choicesField, defered, el;\n if (lightboxSelector == null) {\n lightboxSelector = \".lightbox-ask-choice\";\n }\n defered = this.q.defer();\n el = angular.element(lightboxSelector);\n el.find(\".title\").text(title);\n el.find(\".subtitle\").text(subtitle);\n if (replacement) {\n el.find(\".replacement\").text(replacement);\n } else {\n el.find(\".replacement\").remove();\n }\n if (warning) {\n el.find(\".warning\").text(warning);\n } else {\n el.find(\".warning\").remove();\n }\n choicesField = el.find(\".choices\");\n choicesField.html('');\n _.each(choices, function(value, key) {\n value = _.escape(value);\n return choicesField.append(angular.element(\"\"));\n });\n el.on(\"click.confirm-dialog\", \".js-confirm-ask\", debounce(2000, (function(_this) {\n return function(event) {\n var currentLoading, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n currentLoading = _this.loading().target(target).start();\n return defered.resolve({\n selected: choicesField.val(),\n finish: function(ok) {\n if (ok == null) {\n ok = true;\n }\n currentLoading.finish();\n if (ok) {\n return _this.hide(el);\n }\n }\n });\n };\n })(this)));\n el.on(\"click.confirm-dialog\", \".js-cancel-ask\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.reject();\n return _this.hide(el);\n };\n })(this));\n this.lightboxService.open(el);\n return defered.promise;\n };\n\n ConfirmService.prototype.error = function(message) {\n var defered, el;\n defered = this.q.defer();\n el = angular.element(\".lightbox-generic-error\");\n el.find(\".title\").html(message);\n el.on(\"click.confirm-dialog\", \".button-green\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.resolve();\n return _this.hide(el);\n };\n })(this));\n el.on(\"click.confirm-dialog\", \".close\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.resolve();\n return _this.hide(el);\n };\n })(this));\n this.lightboxService.open(el);\n return defered.promise;\n };\n\n ConfirmService.prototype.success = function(title, message, icon, action) {\n var defered, detailImage, el, svgContainer, useSVG;\n defered = this.q.defer();\n el = angular.element(\".lightbox-generic-success\");\n el.find(\"img\").remove();\n el.find(\"svg\").remove();\n if (icon) {\n if (icon.type === \"img\") {\n detailImage = $('').addClass('lb-icon').attr('src', icon.name);\n } else if (icon.type === \"svg\") {\n detailImage = document.createElement(\"div\");\n taiga.addClass(detailImage, \"icon\");\n taiga.addClass(detailImage, icon.name);\n taiga.addClass(detailImage, \"lb-icon\");\n svgContainer = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n useSVG = document.createElementNS('http://www.w3.org/2000/svg', 'use');\n useSVG.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + icon.name);\n detailImage.appendChild(svgContainer).appendChild(useSVG);\n }\n if (detailImage) {\n el.find('section').prepend(detailImage);\n }\n }\n if (title) {\n el.find(\".title\").html(title);\n }\n if (message) {\n el.find(\".message\").html(message);\n }\n if (action) {\n el.find(\".js-confirm\").html(action);\n el.find(\".js-confirm\").attr('title', action);\n }\n el.on(\"click.confirm-dialog\", \".js-confirm\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.resolve();\n return _this.hide(el);\n };\n })(this));\n el.on(\"click.confirm-dialog\", \".close\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.resolve();\n return _this.hide(el);\n };\n })(this));\n this.lightboxService.open(el);\n return defered.promise;\n };\n\n ConfirmService.prototype.loader = function(title, message, spin) {\n var el;\n if (spin == null) {\n spin = false;\n }\n el = angular.element(\".lightbox-generic-loading\");\n if (title) {\n el.find(\".title\").html(title);\n }\n if (message) {\n el.find(\".message\").html(message);\n }\n if (spin) {\n el.find(\".spin\").removeClass(\"hidden\");\n }\n return {\n start: (function(_this) {\n return function() {\n return _this.lightboxService.open(el);\n };\n })(this),\n stop: (function(_this) {\n return function() {\n return _this.lightboxService.close(el);\n };\n })(this),\n update: (function(_this) {\n return function(status, title, message, percent) {\n if (title) {\n el.find(\".title\").html(title);\n }\n if (message) {\n el.find(\".message\").html(message);\n }\n if (percent) {\n el.find(\".spin\").addClass(\"hidden\");\n el.find(\".progress-bar-wrapper\").removeClass(\"hidden\");\n el.find(\".progress-bar-wrapper > .bar\").width(percent + '%');\n return el.find(\".progress-bar-wrapper > span\").html(percent + '%').css('left', (percent - 9) + '%');\n } else {\n el.find(\".spin\").removeClass(\"hidden\");\n return el.find(\".progress-bar-wrapper\").addClass(\"hidden\");\n }\n };\n })(this)\n };\n };\n\n ConfirmService.prototype.notify = function(type, message, title, time) {\n var body, el, selector;\n selector = \".notification-message-\" + type;\n el = angular.element(selector);\n if (el.hasClass(\"active\")) {\n return;\n }\n if (title) {\n el.find(\"h4\").html(title);\n } else {\n el.find(\"h4\").html(this.translate.instant(NOTIFICATION_MSG[type].title));\n }\n if (message) {\n el.find(\"p\").html(message);\n } else {\n el.find(\"p\").html(this.translate.instant(NOTIFICATION_MSG[type].message));\n }\n body = angular.element(\"body\");\n body.find(\".notification-message .notification-light\").removeClass('active').addClass('inactive');\n body.find(selector).removeClass('inactive').addClass('active');\n if (this.tsem) {\n cancelTimeout(this.tsem);\n }\n if (!time) {\n time = type === 'error' || type === 'light-error' ? 3500 : 1500;\n }\n this.tsem = timeout(time, (function(_this) {\n return function() {\n body.find(selector).removeClass('active').addClass('inactive').one('animationend', function() {\n return $(this).removeClass('inactive');\n });\n return delete _this.tsem;\n };\n })(this));\n return el.on(\"click\", \".icon-close, .close\", (function(_this) {\n return function(event) {\n return body.find(selector).removeClass('active').addClass('inactive');\n };\n })(this));\n };\n\n return ConfirmService;\n\n })(taiga.Service);\n\n module = angular.module(\"taigaCommon\");\n\n module.service(\"$tgConfirm\", ConfirmService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CHECKBOX_TYPE, CustomAttributeValueDirective, CustomAttributesValuesController, CustomAttributesValuesDirective, DATE_TYPE, DROPDOWN_TYPE, MULTILINE_TYPE, NUMBER_TYPE, RICHTEXT_TYPE, TEXT_TYPE, TYPE_CHOICES, URL_TYPE, bindMethods, bindOnce, debounce, generateHash, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n bindMethods = this.taiga.bindMethods;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n generateHash = taiga.generateHash;\n\n module = angular.module(\"taigaCommon\");\n\n TEXT_TYPE = \"text\";\n\n RICHTEXT_TYPE = \"url\";\n\n MULTILINE_TYPE = \"multiline\";\n\n DATE_TYPE = \"date\";\n\n URL_TYPE = \"url\";\n\n DROPDOWN_TYPE = \"dropdown\";\n\n CHECKBOX_TYPE = \"checkbox\";\n\n NUMBER_TYPE = \"number\";\n\n TYPE_CHOICES = [\n {\n key: TEXT_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_TEXT\"\n }, {\n key: MULTILINE_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_MULTI\"\n }, {\n key: DATE_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_DATE\"\n }, {\n key: URL_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_URL\"\n }, {\n key: RICHTEXT_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_RICHTEXT\"\n }, {\n key: DROPDOWN_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_DROPDOWN\"\n }, {\n key: CHECKBOX_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_CHECKBOX\"\n }, {\n key: NUMBER_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_NUMBER\"\n }\n ];\n\n CustomAttributesValuesController = (function(superClass) {\n extend(CustomAttributesValuesController, superClass);\n\n CustomAttributesValuesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgResources\", \"$tgConfirm\", \"$q\"];\n\n function CustomAttributesValuesController(scope1, rootscope, repo, rs, confirm, q) {\n this.scope = scope1;\n this.rootscope = rootscope;\n this.repo = repo;\n this.rs = rs;\n this.confirm = confirm;\n this.q = q;\n bindMethods(this);\n this.type = null;\n this.objectId = null;\n this.projectId = null;\n this.customAttributes = [];\n this.customAttributesValues = null;\n }\n\n CustomAttributesValuesController.prototype.initialize = function(type, objectId) {\n this.project = this.scope.project;\n this.type = type;\n this.objectId = objectId;\n return this.projectId = this.scope.projectId;\n };\n\n CustomAttributesValuesController.prototype.loadCustomAttributesValues = function() {\n if (!this.objectId) {\n return this.customAttributesValues;\n }\n return this.rs.customAttributesValues[this.type].get(this.objectId).then((function(_this) {\n return function(customAttributesValues) {\n _this.customAttributes = _this.project[_this.type + \"_custom_attributes\"];\n _this.customAttributesValues = customAttributesValues;\n return customAttributesValues;\n };\n })(this));\n };\n\n CustomAttributesValuesController.prototype.getAttributeValue = function(attribute) {\n var attributeValue;\n attributeValue = _.clone(attribute, false);\n attributeValue.value = this.customAttributesValues.attributes_values[attribute.id];\n return attributeValue;\n };\n\n CustomAttributesValuesController.prototype.updateAttributeValue = function(attributeValue) {\n var attributesValues, onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"custom-attributes-values:edit\");\n };\n })(this);\n onError = (function(_this) {\n return function(response) {\n _this.confirm.notify(\"error\");\n return _this.q.reject();\n };\n })(this);\n attributesValues = _.clone(this.customAttributesValues.attributes_values, true);\n attributesValues[attributeValue.id] = attributeValue.value;\n this.customAttributesValues.attributes_values = attributesValues;\n this.customAttributesValues.id = this.objectId;\n return this.repo.save(this.customAttributesValues).then(onSuccess, onError);\n };\n\n return CustomAttributesValuesController;\n\n })(taiga.Controller);\n\n CustomAttributesValuesDirective = function($templates, $storage) {\n var collapsedHash, link, template, templateFn;\n template = $templates.get(\"custom-attributes/custom-attributes-values.html\", true);\n collapsedHash = function(type) {\n return generateHash([\"custom-attributes-collapsed\", type]);\n };\n link = function($scope, $el, $attrs, $ctrls) {\n var $ctrl, $model, hash;\n $ctrl = $ctrls[0];\n $model = $ctrls[1];\n hash = collapsedHash($attrs.type);\n $scope.collapsed = $storage.get(hash) || false;\n bindOnce($scope, $attrs.ngModel, function(value) {\n $ctrl.initialize($attrs.type, value.id);\n return $ctrl.loadCustomAttributesValues();\n });\n $scope.toggleCollapse = function() {\n $scope.collapsed = !$scope.collapsed;\n return $storage.set(hash, $scope.collapsed);\n };\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n templateFn = function($el, $attrs) {\n return template({\n requiredEditionPerm: $attrs.requiredEditionPerm\n });\n };\n return {\n require: [\"tgCustomAttributesValues\", \"ngModel\"],\n controller: CustomAttributesValuesController,\n controllerAs: \"ctrl\",\n restrict: \"AE\",\n scope: true,\n link: link,\n template: templateFn\n };\n };\n\n module.directive(\"tgCustomAttributesValues\", [\"$tgTemplate\", \"$tgStorage\", \"$translate\", CustomAttributesValuesDirective]);\n\n CustomAttributeValueDirective = function($template, $selectedText, $compile, $translate, datePickerConfigService, wysiwygService) {\n var link, template, templateEdit;\n template = $template.get(\"custom-attributes/custom-attribute-value.html\", true);\n templateEdit = $template.get(\"custom-attributes/custom-attribute-value-edit.html\", true);\n link = function($scope, $el, $attrs, $ctrl) {\n var attributeValue, isEditable, prettyDate, render, setFocusAndSelectOnInputField, submit;\n prettyDate = $translate.instant(\"COMMON.PICKERDATE.FORMAT\");\n render = function(attributeValue, edit) {\n var ctx, datePickerConfig, editable, html, scope, value;\n if (edit == null) {\n edit = false;\n }\n if (attributeValue.type === DATE_TYPE && attributeValue.value) {\n value = moment(attributeValue.value, \"YYYY-MM-DD\").format(prettyDate);\n }\n if (attributeValue.type === NUMBER_TYPE && attributeValue.value) {\n value = parseFloat(attributeValue.value);\n } else {\n value = attributeValue.value;\n }\n editable = isEditable();\n ctx = {\n id: attributeValue.id,\n name: attributeValue.name,\n description: attributeValue.description,\n value: value,\n type: attributeValue.type,\n isEditable: editable\n };\n scope = $scope.$new();\n scope.attributeHtml = wysiwygService.getHTML(\"\" + value);\n scope.extra = attributeValue.extra;\n scope.model = value;\n scope.project = $scope.project;\n if (editable && (edit || !value)) {\n html = templateEdit(ctx);\n html = $compile(html)(scope);\n $el.html(html);\n if (attributeValue.type === DATE_TYPE) {\n datePickerConfig = datePickerConfigService.get();\n _.merge(datePickerConfig, {\n field: $el.find(\"input[name=value]\")[0],\n onSelect: (function(_this) {\n return function(date) {\n var selectedDate;\n return selectedDate = date;\n };\n })(this),\n onOpen: (function(_this) {\n return function() {\n if (typeof selectedDate !== \"undefined\" && selectedDate !== null) {\n return $el.picker.setDate(selectedDate);\n }\n };\n })(this)\n });\n return $el.picker = new Pikaday(datePickerConfig);\n }\n } else {\n html = template(ctx);\n html = $compile(html)(scope);\n return $el.html(html);\n }\n };\n isEditable = function() {\n var permissions, requiredEditionPerm;\n permissions = $scope.project.my_permissions;\n requiredEditionPerm = $attrs.requiredEditionPerm;\n return permissions.indexOf(requiredEditionPerm) > -1;\n };\n $scope.saveCustomRichText = (function(_this) {\n return function(markdown, callback) {\n attributeValue.value = markdown;\n return $ctrl.updateAttributeValue(attributeValue).then(function() {\n callback();\n return render(attributeValue, false);\n });\n };\n })(this);\n $scope.cancelCustomRichText = (function(_this) {\n return function() {\n render(attributeValue, false);\n return null;\n };\n })(this);\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var form, formControl;\n event.preventDefault();\n form = $el.find(\"form\").checksley();\n if (!form.validate()) {\n return;\n }\n if (attributeValue.type === DROPDOWN_TYPE) {\n formControl = $el.find(\"select[name='value']\");\n attributeValue.value = formControl.val();\n } else if (attributeValue.type === CHECKBOX_TYPE) {\n formControl = $el.find(\"input[name=value]\");\n attributeValue.value = formControl[0].checked;\n } else {\n formControl = $el.find(\"input[name=value], textarea[name='value']\");\n attributeValue.value = formControl.val();\n if (attributeValue.type === DATE_TYPE && moment(attributeValue.value, prettyDate).isValid()) {\n attributeValue.value = moment(attributeValue.value, prettyDate).format(\"YYYY-MM-DD\");\n }\n if (attributeValue.type === NUMBER_TYPE) {\n attributeValue.value = parseFloat(attributeValue.value);\n }\n }\n return $scope.$apply(function() {\n return $ctrl.updateAttributeValue(attributeValue).then(function() {\n return render(attributeValue, false);\n });\n });\n };\n })(this));\n setFocusAndSelectOnInputField = function() {\n return $el.find(\"input[name='value'], textarea[name='value']\").focus().select();\n };\n attributeValue = $scope.$eval($attrs.tgCustomAttributeValue);\n if (attributeValue.value === null || attributeValue.value === void 0) {\n attributeValue.value = \"\";\n }\n $scope.customAttributeValue = attributeValue;\n render(attributeValue);\n $el.on(\"click\", \".js-value-view-mode span a\", function(event) {\n return event.stopPropagation();\n });\n $el.on(\"click\", \".js-value-view-mode\", function() {\n if (!isEditable()) {\n return;\n }\n if ($selectedText.get().length) {\n return;\n }\n render(attributeValue, true);\n return setFocusAndSelectOnInputField();\n });\n $el.on(\"click\", \".js-edit-description\", function(event) {\n event.preventDefault();\n render(attributeValue, true);\n return setFocusAndSelectOnInputField();\n });\n $el.on(\"keyup\", \"input[name=value], textarea[name='value']\", function(event) {\n if (event.keyCode === 13 && event.currentTarget.type !== \"textarea\") {\n return submit(event);\n } else if (event.keyCode === 27) {\n return render(attributeValue, false);\n }\n });\n $el.on(\"submit\", \"form\", submit);\n $el.on(\"click\", \".js-save-description\", submit);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"^tgCustomAttributesValues\",\n restrict: \"AE\"\n };\n };\n\n module.directive(\"tgCustomAttributeValue\", [\"$tgTemplate\", \"$selectedText\", \"$compile\", \"$translate\", \"tgDatePickerConfigService\", \"tgWysiwygService\", CustomAttributeValueDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var EmojisService, module, taiga,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaCommon\");\n\n EmojisService = (function(superClass) {\n extend(EmojisService, superClass);\n\n EmojisService.$inject = [];\n\n function EmojisService() {\n this.replaceEmojiNameByHtmlImgs = bind(this.replaceEmojiNameByHtmlImgs, this);\n this.replaceEmojiNameByImgs = bind(this.replaceEmojiNameByImgs, this);\n this.replaceImgsByEmojiName = bind(this.replaceImgsByEmojiName, this);\n this.getEmojiByName = bind(this.getEmojiByName, this);\n this.getEmojiById = bind(this.getEmojiById, this);\n this.searchByName = bind(this.searchByName, this);\n this.emojis = _.map(taiga.emojis, function(it) {\n it.image = (\"/\" + window._version + \"/emojis/\") + it.image;\n return it;\n });\n this.emojisById = _.keyBy(this.emojis, 'id');\n this.emojisByName = _.keyBy(this.emojis, 'name');\n }\n\n EmojisService.prototype.searchByName = function(name) {\n return _.filter(this.emojis, function(it) {\n return it.name.indexOf(name) !== -1;\n });\n };\n\n EmojisService.prototype.getEmojiById = function(id) {\n return this.emojisById[id];\n };\n\n EmojisService.prototype.getEmojiByName = function(name) {\n return this.emojisByName[name];\n };\n\n EmojisService.prototype.replaceImgsByEmojiName = function(html) {\n var emoji, emojiId, emojiIds, i, len, regexImgs;\n emojiIds = taiga.getMatches(html, /emojis\\/([^\"]+).png\"/gi);\n for (i = 0, len = emojiIds.length; i < len; i++) {\n emojiId = emojiIds[i];\n regexImgs = new RegExp(']+\\>', 'g');\n emoji = this.getEmojiById(emojiId);\n html = html.replace(regexImgs, ':' + emoji.name + ':');\n }\n return html;\n };\n\n EmojisService.prototype.replaceEmojiNameByImgs = function(text) {\n var emoji, emojiId, emojiIds, i, len, regexImgs;\n emojiIds = taiga.getMatches(text, /:([\\w +-]*):/g);\n for (i = 0, len = emojiIds.length; i < len; i++) {\n emojiId = emojiIds[i];\n regexImgs = new RegExp(':' + emojiId + ':', 'g');\n emoji = this.getEmojiByName(emojiId);\n if (emoji) {\n text = text.replace(regexImgs, '![alt](' + emoji.image + ')');\n }\n }\n return text;\n };\n\n EmojisService.prototype.replaceEmojiNameByHtmlImgs = function(text) {\n var emoji, emojiId, emojiIds, i, len, regexImgs;\n emojiIds = taiga.getMatches(text, /:([\\w +-]*):/g);\n for (i = 0, len = emojiIds.length; i < len; i++) {\n emojiId = emojiIds[i];\n regexImgs = new RegExp(':' + _.escapeRegExp(emojiId) + ':', 'g');\n emoji = this.getEmojiByName(emojiId);\n if (emoji) {\n text = text.replace(regexImgs, '');\n }\n }\n return text;\n };\n\n return EmojisService;\n\n })(taiga.Service);\n\n module.service(\"$tgEmojis\", EmojisService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var EstimationsService, LbUsEstimationDirective, UsEstimationDirective, groupBy, module, taiga,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n module = angular.module(\"taigaCommon\");\n\n LbUsEstimationDirective = function($tgEstimationsService, $rootScope, $repo, $template, $compile) {\n var link;\n link = function($scope, $el, $attrs, $model) {\n $scope.$watch($attrs.ngModel, function(us) {\n var estimationProcess;\n if (us) {\n estimationProcess = $tgEstimationsService.create($el, us, $scope.project);\n estimationProcess.onSelectedPointForRole = function(roleId, pointId, points) {\n us.points = points;\n estimationProcess.render();\n return $scope.$apply(function() {\n return $model.$setViewValue(us);\n });\n };\n estimationProcess.render = function() {\n var ctx, html, mainTemplate, template;\n ctx = {\n totalPoints: this.calculateTotalPoints(),\n roles: this.calculateRoles(),\n editable: this.isEditable,\n loading: false\n };\n mainTemplate = \"common/estimation/us-estimation-points-per-role.html\";\n template = $template.get(mainTemplate, true);\n html = template(ctx);\n html = $compile(html)($scope);\n return this.$el.html(html);\n };\n return estimationProcess.render();\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgLbUsEstimation\", [\"$tgEstimationsService\", \"$rootScope\", \"$tgRepo\", \"$tgTemplate\", \"$compile\", LbUsEstimationDirective]);\n\n UsEstimationDirective = function($tgEstimationsService, $rootScope, $repo, $template, $compile, $modelTransform, $confirm) {\n var link;\n link = function($scope, $el, $attrs, $model) {\n var save;\n save = function(points) {\n var onError, transform;\n transform = $modelTransform.save((function(_this) {\n return function(us) {\n us.points = points;\n return us;\n };\n })(this));\n onError = (function(_this) {\n return function() {\n return $confirm.notify(\"error\");\n };\n })(this);\n return transform.then(null, onError);\n };\n $scope.$watchCollection(function() {\n return $model.$modelValue && $model.$modelValue.points;\n }, function() {\n var estimationProcess, us;\n us = $model.$modelValue;\n if (us) {\n estimationProcess = $tgEstimationsService.create($el, us, $scope.project);\n estimationProcess.onSelectedPointForRole = function(roleId, pointId, points) {\n estimationProcess.loading = roleId;\n estimationProcess.render();\n return save(points).then(function() {\n estimationProcess.loading = false;\n $rootScope.$broadcast(\"object:updated\");\n return estimationProcess.render();\n });\n };\n estimationProcess.render = function() {\n var ctx, html, mainTemplate, template;\n ctx = {\n totalPoints: this.calculateTotalPoints(),\n roles: this.calculateRoles(),\n editable: this.isEditable,\n loading: estimationProcess.loading\n };\n mainTemplate = \"common/estimation/us-estimation-points-per-role.html\";\n template = $template.get(mainTemplate, true);\n html = template(ctx);\n html = $compile(html)($scope);\n return this.$el.html(html);\n };\n return estimationProcess.render();\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgUsEstimation\", [\"$tgEstimationsService\", \"$rootScope\", \"$tgRepo\", \"$tgTemplate\", \"$compile\", \"$tgQueueModelTransformation\", \"$tgConfirm\", UsEstimationDirective]);\n\n EstimationsService = function($template, $repo, $confirm, $q, $qqueue) {\n var EstimationProcess, create, pointsTemplate;\n pointsTemplate = $template.get(\"common/estimation/us-estimation-points.html\", true);\n EstimationProcess = (function() {\n function EstimationProcess($el1, us1, project1) {\n this.$el = $el1;\n this.us = us1;\n this.project = project1;\n this.bindClickEvents = bind(this.bindClickEvents, this);\n this.isEditable = this.project.my_permissions.indexOf(\"modify_us\") !== -1;\n this.roles = this.project.roles;\n this.points = this.project.points;\n this.loading = false;\n this.pointsById = groupBy(this.points, function(x) {\n return x.id;\n });\n this.onSelectedPointForRole = function(roleId, pointId) {};\n this.render = function() {};\n }\n\n EstimationProcess.prototype.save = function(roleId, pointId) {\n var deferred;\n deferred = $q.defer();\n $qqueue.add((function(_this) {\n return function() {\n var onError, onSuccess;\n onSuccess = function() {\n deferred.resolve();\n return _this.render();\n };\n onError = function() {\n $confirm.notify(\"error\");\n _this.us.revert();\n _this.render();\n return deferred.reject();\n };\n return $repo.save(_this.us).then(onSuccess, onError);\n };\n })(this));\n return deferred.promise;\n };\n\n EstimationProcess.prototype.calculateTotalPoints = function() {\n var notNullValues, values;\n values = _.map(this.us.points, (function(_this) {\n return function(v, k) {\n var ref;\n return (ref = _this.pointsById[v]) != null ? ref.value : void 0;\n };\n })(this));\n if (values.length === 0) {\n return \"?\";\n }\n notNullValues = _.filter(values, function(v) {\n return v != null;\n });\n if (notNullValues.length === 0) {\n return \"?\";\n }\n return _.reduce(notNullValues, function(acc, num) {\n return acc + num;\n });\n };\n\n EstimationProcess.prototype.calculateRoles = function() {\n var computableRoles, roles;\n computableRoles = _.filter(this.project.roles, \"computable\");\n roles = _.map(computableRoles, (function(_this) {\n return function(role) {\n var pointId, pointObj;\n pointId = _this.us.points[role.id];\n pointObj = _this.pointsById[pointId];\n role = _.clone(role, true);\n role.points = (pointObj != null) && (pointObj.name != null) ? pointObj.name : \"?\";\n return role;\n };\n })(this));\n return roles;\n };\n\n EstimationProcess.prototype.bindClickEvents = function() {\n this.$el.on(\"click\", \".total.clickable\", (function(_this) {\n return function(event) {\n var roleId, target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n roleId = target.data(\"role-id\");\n _this.renderPointsSelector(roleId, target);\n target.siblings().removeClass('active');\n return target.addClass('active');\n };\n })(this));\n return this.$el.on(\"click\", \".point\", (function(_this) {\n return function(event) {\n var pointId, points, roleId, target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n roleId = target.data(\"role-id\");\n pointId = target.data(\"point-id\");\n _this.$el.find(\".popover\").popover().close();\n points = _.clone(_this.us.points, true);\n points[roleId] = pointId;\n return _this.onSelectedPointForRole(roleId, pointId, points);\n };\n })(this));\n };\n\n EstimationProcess.prototype.renderPointsSelector = function(roleId, target) {\n var horizontalList, html, maxPointLength, points, pop;\n points = _.map(this.points, (function(_this) {\n return function(point) {\n point = _.clone(point, true);\n point.selected = _this.us.points[roleId] === point.id ? false : true;\n return point;\n };\n })(this));\n maxPointLength = 5;\n horizontalList = _.some(points, (function(_this) {\n return function(point) {\n return point.name.length > maxPointLength;\n };\n })(this));\n html = pointsTemplate({\n \"points\": points,\n roleId: roleId,\n horizontal: horizontalList\n });\n this.$el.find(\".popover\").popover().close();\n this.$el.find(\".pop-points-open\").remove();\n if (target != null) {\n this.$el.find(target).append(html);\n } else {\n this.$el.append(html);\n }\n this.$el.find(\".pop-points-open\").popover().open(function() {\n return $(this).removeClass(\"active\").closest(\"li\").removeClass(\"active\");\n });\n this.$el.find(\".pop-points-open\").show();\n pop = this.$el.find(\".pop-points-open\");\n if (pop.offset().top + pop.height() > document.body.clientHeight) {\n return pop.addClass('pop-bottom');\n }\n };\n\n return EstimationProcess;\n\n })();\n create = function($el, us, project) {\n var estimationProcess;\n $el.unbind(\"click\");\n estimationProcess = new EstimationProcess($el, us, project);\n if (estimationProcess.isEditable) {\n estimationProcess.bindClickEvents();\n }\n return estimationProcess;\n };\n return {\n create: create\n };\n };\n\n module.factory(\"$tgEstimationsService\", [\"$tgTemplate\", \"$tgRepo\", \"$tgConfirm\", \"$q\", \"$tgQqueue\", EstimationsService]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var byRefFilter, darkerFilter, defaultFilter, emojify, inArray, markdownToHTML, module, momentFormat, momentFromNow, sizeFormat, taiga, textToHTML, toMutableFilter, unslugify, yesNoFilter;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaCommon\");\n\n defaultFilter = function() {\n return function(value, defaultValue) {\n if (value === [null, void 0]) {\n return defaultValue;\n }\n return value;\n };\n };\n\n module.filter(\"default\", defaultFilter);\n\n yesNoFilter = function($translate) {\n return function(value) {\n if (value) {\n return $translate.instant(\"COMMON.YES\");\n }\n return $translate.instant(\"COMMON.NO\");\n };\n };\n\n module.filter(\"yesNo\", [\"$translate\", yesNoFilter]);\n\n unslugify = function() {\n return taiga.unslugify;\n };\n\n module.filter(\"unslugify\", unslugify);\n\n momentFormat = function() {\n return function(input, format) {\n if (input) {\n return moment(input).format(format);\n }\n return \"\";\n };\n };\n\n module.filter(\"momentFormat\", momentFormat);\n\n momentFromNow = function() {\n return function(input, without_suffix) {\n if (input) {\n return moment(input).fromNow(without_suffix || false);\n }\n return \"\";\n };\n };\n\n module.filter(\"momentFromNow\", momentFromNow);\n\n sizeFormat = (function(_this) {\n return function() {\n return _this.taiga.sizeFormat;\n };\n })(this);\n\n module.filter(\"sizeFormat\", sizeFormat);\n\n toMutableFilter = function() {\n var memoizedMutable, toMutable;\n toMutable = function(js) {\n return js.toJS();\n };\n memoizedMutable = _.memoize(toMutable);\n return function(input) {\n if (input instanceof Immutable.List) {\n return memoizedMutable(input);\n }\n return input;\n };\n };\n\n module.filter(\"toMutable\", toMutableFilter);\n\n byRefFilter = function($filterFilter) {\n return function(userstories, filter) {\n var cleanRef;\n if (filter != null ? filter.startsWith(\"#\") : void 0) {\n cleanRef = filter.substr(1);\n return _.filter(userstories, (function(_this) {\n return function(us) {\n return String(us.ref).startsWith(cleanRef);\n };\n })(this));\n }\n return $filterFilter(userstories, filter);\n };\n };\n\n module.filter(\"byRef\", [\"filterFilter\", byRefFilter]);\n\n darkerFilter = function() {\n return function(color, luminosity) {\n var black, c, i, j, len, newColor, ref, white;\n if (!color) {\n return 'transparent';\n }\n color = new String(color).replace(/[^0-9a-f]/gi, '');\n if (color.length < 6) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n luminosity = luminosity || 0;\n newColor = \"#\";\n c = 0;\n i = 0;\n black = 0;\n white = 255;\n ref = [0, 1, 2];\n for (j = 0, len = ref.length; j < len; j++) {\n i = ref[j];\n c = parseInt(color.substr(i * 2, 2), 16);\n c = Math.round(Math.min(Math.max(black, c + (luminosity * white)), white)).toString(16);\n newColor += (\"00\" + c).substr(c.length);\n }\n return newColor;\n };\n };\n\n module.filter(\"darker\", darkerFilter);\n\n markdownToHTML = function(wysiwigService) {\n return function(input) {\n if (input) {\n return wysiwigService.getHTML(input);\n }\n return \"\";\n };\n };\n\n module.filter(\"markdownToHTML\", [\"tgWysiwygService\", markdownToHTML]);\n\n inArray = function($filter) {\n return function(list, arrayFilter, element) {\n var filter;\n if (arrayFilter) {\n filter = $filter(\"filter\");\n return filter(list, function(listItem) {\n return arrayFilter.indexOf(listItem[element]) !== -1;\n });\n }\n };\n };\n\n module.filter(\"inArray\", [\"$filter\", inArray]);\n\n emojify = function($emojis) {\n return function(input) {\n if (input) {\n return _.unescape($emojis.replaceEmojiNameByHtmlImgs(_.escape(input)));\n }\n return \"\";\n };\n };\n\n module.filter(\"emojify\", [\"$tgEmojis\", emojify]);\n\n textToHTML = function($filter) {\n return function(input) {\n if (input) {\n return input.replace(/\\<(?!(\\/?)(strong|br)(\\/?)).*?\\>/g, \"\");\n }\n return \"\";\n };\n };\n\n module.filter(\"textToHTML\", [\"$filter\", textToHTML]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var BlockLightboxDirective, BlockingMessageInputDirective, CreateBulkUserstoriesDirective, CreateEditDirective, LightboxClose, LightboxDirective, LightboxKeyboardNavigationService, LightboxLeaveProjectWarningDirective, LightboxService, RelateToEpicLightboxDirective, SetDueDateDirective, bindOnce, debounce, debounceLeading, groupBy, module, normalizeString, sizeFormat, timeout, trim,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n module = angular.module(\"taigaCommon\");\n\n bindOnce = this.taiga.bindOnce;\n\n timeout = this.taiga.timeout;\n\n debounce = this.taiga.debounce;\n\n sizeFormat = this.taiga.sizeFormat;\n\n trim = this.taiga.trim;\n\n normalizeString = this.taiga.normalizeString;\n\n LightboxService = (function(superClass) {\n extend(LightboxService, superClass);\n\n function LightboxService(animationFrame, q, rootScope) {\n this.animationFrame = animationFrame;\n this.q = q;\n this.rootScope = rootScope;\n }\n\n LightboxService.prototype.open = function($el, onClose, onEsc, ignoreEsc) {\n var defered, docEl, lightboxContent;\n this.onClose = onClose;\n if (_.isString($el)) {\n $el = $($el);\n }\n defered = this.q.defer();\n lightboxContent = $el.children().not(\".close\");\n lightboxContent.hide();\n this.animationFrame.add(function() {\n return $el.css('display', 'flex');\n });\n this.animationFrame.add(function() {\n $el.addClass(\"open\");\n return $el.one(\"transitionend\", (function(_this) {\n return function() {\n var firstField;\n firstField = $el.find('input:not(.no-focus),textarea:not(.no-focus)').first();\n if (firstField.length) {\n return firstField.focus();\n } else if (document.activeElement) {\n return $(document.activeElement).blur();\n }\n };\n })(this));\n });\n this.animationFrame.add((function(_this) {\n return function() {\n lightboxContent.show();\n return defered.resolve();\n };\n })(this));\n if (!ignoreEsc) {\n docEl = angular.element(document);\n docEl.on(\"keydown.lightbox\", (function(_this) {\n return function(e) {\n var code;\n code = e.keyCode ? e.keyCode : e.which;\n if (code === 27) {\n if (onEsc) {\n return _this.rootScope.$applyAsync(onEsc);\n } else {\n return _this.close($el);\n }\n }\n };\n })(this));\n }\n this.rootScope.$broadcast(\"lightbox:opened\");\n return defered.promise;\n };\n\n LightboxService.prototype.close = function($el) {\n return this.q((function(_this) {\n return function(resolve) {\n var docEl, scope;\n if (_.isString($el)) {\n $el = $($el);\n }\n docEl = angular.element(document);\n docEl.off(\".lightbox\");\n docEl.off(\".keyboard-navigation\");\n $el.addClass('close-started');\n _this.animationFrame.add(function() {\n $el.addClass('close');\n return $el.one(\"transitionend\", function() {\n $el.removeAttr('style');\n $el.removeClass(\"open\").removeClass('close').removeClass('close-started');\n if (_this.onClose) {\n _this.rootScope.$apply(_this.onClose);\n }\n return resolve();\n });\n });\n if ($el.hasClass(\"remove-on-close\")) {\n scope = $el.data(\"scope\");\n if (scope) {\n scope.$destroy();\n }\n $el.remove();\n }\n return _this.rootScope.$broadcast(\"lightbox:closed\");\n };\n })(this));\n };\n\n LightboxService.prototype.getLightboxOpen = function() {\n return $(\".lightbox.open:not(.close-started)\");\n };\n\n LightboxService.prototype.closeAll = function() {\n var docEl, i, len, lightboxEl, ref, results;\n docEl = angular.element(document);\n ref = docEl.find(\".lightbox.open\");\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n lightboxEl = ref[i];\n results.push(this.close($(lightboxEl)));\n }\n return results;\n };\n\n return LightboxService;\n\n })(taiga.Service);\n\n module.service(\"lightboxService\", [\"animationFrame\", \"$q\", \"$rootScope\", LightboxService]);\n\n LightboxKeyboardNavigationService = (function(superClass) {\n extend(LightboxKeyboardNavigationService, superClass);\n\n function LightboxKeyboardNavigationService() {\n return LightboxKeyboardNavigationService.__super__.constructor.apply(this, arguments);\n }\n\n LightboxKeyboardNavigationService.prototype.stop = function() {\n var docEl;\n docEl = angular.element(document);\n return docEl.off(\".keyboard-navigation\");\n };\n\n LightboxKeyboardNavigationService.prototype.dispatch = function($el, code) {\n var activeElement, next, prev;\n activeElement = $el.find(\".selected\");\n if (code === 13) {\n if ($el.find(\".user-list-single\").length === 1) {\n return $el.find('.user-list-single:first').trigger(\"click\");\n } else {\n return activeElement.trigger(\"click\");\n }\n } else if (code === 40) {\n if (!activeElement.length) {\n return $el.find('.user-list-single:not(\".is-active\"):first').addClass('selected');\n } else {\n next = activeElement.next('.user-list-single');\n if (next.length) {\n activeElement.removeClass('selected');\n return next.addClass('selected');\n }\n }\n } else if (code === 38) {\n if (!activeElement.length) {\n return $el.find('.user-list-single:last').addClass('selected');\n } else {\n prev = activeElement.prev('.user-list-single:not(\".is-active\")');\n if (prev.length) {\n activeElement.removeClass('selected');\n return prev.addClass('selected');\n }\n }\n }\n };\n\n LightboxKeyboardNavigationService.prototype.init = function($el) {\n var docEl;\n this.stop();\n docEl = angular.element(document);\n return docEl.on(\"keydown.keyboard-navigation\", (function(_this) {\n return function(event) {\n var code;\n code = event.keyCode ? event.keyCode : event.which;\n if (code === 40 || code === 38 || code === 13) {\n event.preventDefault();\n return _this.dispatch($el, code);\n }\n };\n })(this));\n };\n\n return LightboxKeyboardNavigationService;\n\n })(taiga.Service);\n\n module.service(\"lightboxKeyboardNavigationService\", LightboxKeyboardNavigationService);\n\n LightboxDirective = function(lightboxService) {\n var link;\n link = function($scope, $el, $attrs) {\n if (!$attrs.$attr.visible) {\n return $el.on(\"click\", \".close\", function(event) {\n event.preventDefault();\n return lightboxService.close($el);\n });\n }\n };\n return {\n restrict: \"C\",\n link: link\n };\n };\n\n module.directive(\"lightbox\", [\"lightboxService\", LightboxDirective]);\n\n LightboxClose = function() {\n var link, template;\n template = \"\\n \\n\";\n link = function(scope, elm, attrs) {};\n return {\n scope: {\n onClose: '&'\n },\n link: link,\n template: template\n };\n };\n\n module.directive(\"tgLightboxClose\", [LightboxClose]);\n\n BlockLightboxDirective = function($rootscope, $tgrepo, $confirm, lightboxService, $loading, $modelTransform, $translate) {\n var link;\n link = function($scope, $el, $attrs, $model) {\n var block, title, unblock;\n title = $translate.instant($attrs.title);\n $el.find(\"h2.title\").text(title);\n unblock = (function(_this) {\n return function(finishCallback) {\n var transform;\n transform = $modelTransform.save(function(item) {\n item.is_blocked = false;\n item.blocked_note = \"\";\n return item;\n });\n transform.then(function() {\n $confirm.notify(\"success\");\n $rootscope.$broadcast(\"object:updated\");\n return finishCallback();\n });\n transform.then(null, function() {\n $confirm.notify(\"error\");\n return item.revert();\n });\n transform[\"finally\"](function() {\n return finishCallback();\n });\n return transform;\n };\n })(this);\n block = function() {\n var currentLoading, transform;\n currentLoading = $loading().target($el.find(\".js-block-item\")).start();\n transform = $modelTransform.save(function(item) {\n item.is_blocked = true;\n item.blocked_note = $el.find(\".reason\").val();\n return item;\n });\n transform.then(function() {\n $confirm.notify(\"success\");\n return $rootscope.$broadcast(\"object:updated\");\n });\n transform.then(null, function() {\n return $confirm.notify(\"error\");\n });\n return transform[\"finally\"](function() {\n currentLoading.finish();\n return lightboxService.close($el);\n });\n };\n $scope.$on(\"block\", function() {\n $el.find(\".reason\").val($model.$modelValue.blocked_note);\n return lightboxService.open($el);\n });\n $scope.$on(\"unblock\", (function(_this) {\n return function(event, model, finishCallback) {\n return unblock(finishCallback);\n };\n })(this));\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n return $el.on(\"click\", \".js-block-item\", function(event) {\n event.preventDefault();\n return block();\n });\n };\n return {\n templateUrl: \"common/lightbox/lightbox-block.html\",\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgLbBlock\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"lightboxService\", \"$tgLoading\", \"$tgQueueModelTransformation\", \"$translate\", BlockLightboxDirective]);\n\n BlockingMessageInputDirective = function($log, $template, $compile) {\n var link, template, templateFn;\n template = $template.get(\"common/lightbox/lightbox-blocking-message-input.html\", true);\n link = function($scope, $el, $attrs, $model) {\n if (!$attrs.watch) {\n return $log.error(\"No watch attribute on tg-blocking-message-input directive\");\n }\n return $scope.$watch($attrs.watch, function(value) {\n if (value === !void 0 && value === true) {\n return $el.find(\".blocked-note\").removeClass(\"hidden\");\n } else {\n return $el.find(\".blocked-note\").addClass(\"hidden\");\n }\n });\n };\n templateFn = function($el, $attrs) {\n return template({\n ngmodel: $attrs.ngModel\n });\n };\n return {\n template: templateFn,\n link: link,\n require: \"ngModel\",\n restrict: \"EA\"\n };\n };\n\n module.directive(\"tgBlockingMessageInput\", [\"$log\", \"$tgTemplate\", \"$compile\", BlockingMessageInputDirective]);\n\n CreateBulkUserstoriesDirective = function($repo, $rs, $rootscope, lightboxService, $loading, $model, $timeout, $confirm, $translate) {\n var link;\n link = function($scope, $el, attrs) {\n var form, getCurrentStatus, submit, submitButton;\n form = null;\n $scope.displayStatusSelector = false;\n getCurrentStatus = (function(_this) {\n return function() {\n return $scope.currentStatus = $scope.project.us_statuses.filter(function(status) {\n return status.id === $scope[\"new\"].statusId;\n }).pop();\n };\n })(this);\n $scope.toggleStatus = function() {\n return $scope.displayStatusSelector = !$scope.displayStatusSelector;\n };\n $scope.displayStatus = function() {\n return $scope.displayStatusSelector = true;\n };\n $scope.hideStatus = function() {\n $scope.displayStatusSelector = false;\n return $scope.$apply();\n };\n $scope.setStatus = (function(_this) {\n return function(status) {\n $scope[\"new\"].statusId = status.id;\n getCurrentStatus();\n return $scope.displayStatusSelector = false;\n };\n })(this);\n $scope.$on(\"usform:bulk\", function(ctx, projectId, status, swimlaneId) {\n if (form) {\n form.reset();\n }\n $scope[\"new\"] = {\n projectId: projectId,\n statusId: status,\n bulk: \"\",\n swimlaneId: swimlaneId,\n us_position: 'bottom'\n };\n getCurrentStatus();\n return lightboxService.open($el);\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var currentLoading, promise, swimlaneId;\n event.preventDefault();\n form = $el.find(\"form\").checksley({\n onlyOneErrorElement: true\n });\n if (!form.validate()) {\n return;\n }\n swimlaneId = null;\n if ($scope.project.is_kanban_activated) {\n swimlaneId = $scope[\"new\"].swimlane;\n if (swimlaneId === void 0) {\n swimlaneId = $scope.project.default_swimlane;\n }\n }\n currentLoading = $loading().target(submitButton).start();\n promise = $rs.userstories.bulkCreate($scope[\"new\"].projectId, $scope[\"new\"].statusId, $scope[\"new\"].bulk, swimlaneId);\n promise.then(function(result) {\n result = _.map(result.data, (function(_this) {\n return function(x) {\n return $model.make_model('userstories', x);\n };\n })(this));\n currentLoading.finish();\n $rootscope.$broadcast(\"usform:bulk:success\", result, $scope[\"new\"].us_position);\n return lightboxService.close($el);\n });\n return promise.then(null, function(response) {\n var text;\n currentLoading.finish();\n form.setErrors(response);\n if (response.data.status) {\n text = $translate.instant(\"LIGHTBOX.CREATE_EDIT.ERROR_STATUS\");\n $confirm.notify(\"error\", text);\n }\n if (response.data.swimlane_id) {\n text = $translate.instant(\"LIGHTBOX.CREATE_EDIT.ERROR_SWIMLANE\");\n $confirm.notify(\"error\", text);\n }\n if (response._error_message) {\n return $confirm.notify(\"error\", response._error_message);\n }\n });\n };\n })(this));\n submitButton = $el.find(\".js-submit-button\");\n $el.on(\"submit\", \"form\", submit);\n $el.on(\"click\", (function(_this) {\n return function(event) {\n var parentNodes, target;\n target = angular.element(event.target);\n parentNodes = _.filter(target.parents(), function(parent) {\n return parent.className === \"bulk-status-selector-wrapper\";\n });\n if (!parentNodes.length) {\n return $scope.hideStatus();\n }\n };\n })(this));\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLbCreateBulkUserstories\", [\"$tgRepo\", \"$tgResources\", \"$rootScope\", \"lightboxService\", \"$tgLoading\", \"$tgModel\", \"$timeout\", \"$tgConfirm\", \"$translate\", CreateBulkUserstoriesDirective]);\n\n LightboxLeaveProjectWarningDirective = function(lightboxService, $template, $compile) {\n var link;\n link = function($scope, $el, attrs) {\n return lightboxService.open($el);\n };\n return {\n templateUrl: 'common/lightbox/lightbox-leave-project-warning.html',\n link: link,\n scope: true\n };\n };\n\n module.directive(\"tgLightboxLeaveProjectWarning\", [\"lightboxService\", LightboxLeaveProjectWarningDirective]);\n\n SetDueDateDirective = function($rootscope, lightboxService, $loading, $translate, $confirm, $modelTransform) {\n var link;\n link = function($scope, $el, attrs) {\n var prettyDate, remove, save;\n prettyDate = $translate.instant(\"COMMON.PICKERDATE.FORMAT\");\n lightboxService.open($el);\n if ($scope.object.due_date) {\n $scope.new_due_date = moment($scope.object.due_date).format(prettyDate);\n }\n $el.on(\"click\", \".suggestion\", function(event) {\n var quantity, target, unit, value;\n target = angular.element(event.currentTarget);\n quantity = target.data('quantity');\n unit = target.data('unit');\n value = moment().add(quantity, unit).format(prettyDate);\n return $el.find(\".due-date\").val(value);\n });\n save = function() {\n var currentLoading, new_due_date, transform;\n currentLoading = $loading().target($el.find(\".submit-button\")).start();\n if ($scope.notAutoSave) {\n new_due_date = $('.due-date').val();\n $scope.object.due_date = new_due_date ? moment(new_due_date, prettyDate).format(\"YYYY-MM-DD\") : null;\n $scope.$apply();\n currentLoading.finish();\n lightboxService.close($el);\n return;\n }\n transform = $modelTransform.save(function(object) {\n new_due_date = $('.due-date').val();\n object.due_date = new_due_date ? moment(new_due_date, prettyDate).format(\"YYYY-MM-DD\") : null;\n return object;\n });\n transform.then(function() {\n return $confirm.notify(\"success\");\n });\n transform.then(null, function() {\n return $confirm.notify(\"error\");\n });\n return transform[\"finally\"](function() {\n currentLoading.finish();\n lightboxService.close($el);\n return $rootscope.$broadcast(\"object:updated\");\n });\n };\n $el.on(\"click\", \".submit-button\", function(event) {\n event.preventDefault();\n return save();\n });\n remove = function() {\n var message, subtitle, title;\n title = $translate.instant(\"LIGHTBOX.DELETE_DUE_DATE.TITLE\");\n subtitle = $translate.instant(\"LIGHTBOX.DELETE_DUE_DATE.SUBTITLE\");\n message = moment($scope.object.due_date).format(prettyDate);\n return $confirm.askOnDelete(title, message, subtitle).then(function(askResponse) {\n askResponse.finish();\n $('.due-date').val(null);\n $scope.object.due_date_reason = null;\n if ($scope.notAutoSave) {\n $scope.object.due_date = null;\n return lightboxService.close($el);\n } else {\n return save();\n }\n });\n };\n return $el.on(\"click\", \".delete-due-date\", function(event) {\n event.preventDefault();\n return remove();\n });\n };\n return {\n templateUrl: 'common/lightbox/lightbox-due-date.html',\n link: link,\n scope: true\n };\n };\n\n module.directive(\"tgLbSetDueDate\", [\"$rootScope\", \"lightboxService\", \"$tgLoading\", \"$translate\", \"$tgConfirm\", \"$tgQueueModelTransformation\", SetDueDateDirective]);\n\n groupBy = this.taiga.groupBy;\n\n CreateEditDirective = function($log, $repo, $model, $rs, $rootScope, lightboxService, $loading, $translate, $confirm, $q, attachmentsService, $template, $compile) {\n var link;\n link = function($scope, $el, attrs) {\n var addExistingToSprint, attachmentsToAdd, attachmentsToDelete, checkClose, close, createAttachments, deleteAttachments, docEl, form, getSchema, isDisabledExisting, mount, objType, render, resetAttachments, saveItem, schema, schemas, setStatus, sprintChangeConfirmAndSave, submit;\n schema = null;\n objType = null;\n form = null;\n attachmentsToAdd = Immutable.List();\n attachmentsToDelete = Immutable.List();\n schemas = {\n us: {\n objName: 'User Story',\n model: 'userstories',\n params: {\n include_attachments: true,\n include_tasks: true\n },\n data: function(project) {\n return {\n translationID: 'US',\n translationIDPlural: 'US',\n statusList: _.sortBy(project.us_statuses, \"order\")\n };\n },\n initialData: function(data) {\n return {\n project: data.project.id,\n subject: \"\",\n description: \"\",\n tags: [],\n points: {},\n swimlane: data.project.is_kanban_activated ? data.project.default_swimlane : null,\n status: data.statusId ? data.statusId : data.project.default_us_status,\n is_archived: false\n };\n }\n },\n task: {\n objName: 'Task',\n model: 'tasks',\n params: {\n include_attachments: true\n },\n data: function(project) {\n return {\n translationID: 'TASK',\n translationIDPlural: 'TASKS',\n statusList: _.sortBy(project.task_statuses, \"order\")\n };\n },\n initialData: function(data) {\n return {\n project: data.project.id,\n subject: \"\",\n description: \"\",\n assigned_to: null,\n tags: [],\n milestone: data.sprintId,\n status: data.project.default_task_status,\n user_story: data.usId,\n is_archived: false\n };\n }\n },\n issue: {\n objName: 'Issue',\n model: 'issues',\n params: {\n include_attachments: true\n },\n data: function(project) {\n return {\n translationID: 'ISSUE',\n translationIDPlural: 'ISSUES',\n project: project,\n statusList: _.sortBy(project.issue_statuses, \"order\"),\n typeById: groupBy(project.issue_types, function(x) {\n return x.id;\n }),\n typeList: _.sortBy(project.issue_types, \"order\"),\n severityById: groupBy(project.severities, function(x) {\n return x.id;\n }),\n severityList: _.sortBy(project.severities, \"order\"),\n priorityById: groupBy(project.priorities, function(x) {\n return x.id;\n }),\n priorityList: _.sortBy(project.priorities, \"order\"),\n milestonesById: groupBy(project.milestones, function(x) {\n return x.id;\n })\n };\n },\n initialData: function(data) {\n return {\n assigned_to: null,\n milestone: data.sprintId,\n priority: data.project.default_priority,\n project: data.project.id,\n severity: data.project.default_severity,\n status: data.project.default_issue_status,\n subject: \"\",\n tags: [],\n type: data.project.default_issue_type\n };\n }\n }\n };\n $scope.setMode = function(value) {\n return $scope.mode = value;\n };\n $scope.$on(\"genericform:new\", function(ctx, params) {\n getSchema(params);\n $scope.mode = 'new';\n $scope.getOrCreate = false;\n return mount(params);\n });\n $scope.$on(\"genericform:new-or-existing\", function(ctx, params) {\n getSchema(params);\n $scope.mode = 'add-existing';\n $scope.getOrCreate = true;\n $scope.existingFilterText = '';\n $rs[schema.model].listInAllProjects({\n project: $scope.project.id\n }, true).then(function(data) {\n return $scope.existingItems = angular.copy(data);\n });\n return mount(params);\n });\n $scope.$on(\"genericform:edit\", function(ctx, params) {\n getSchema(params);\n $scope.mode = 'edit';\n $scope.getOrCreate = false;\n return mount(params);\n });\n getSchema = function(params) {\n _.map(params, function(value, key) {\n return $scope[key] = value;\n });\n if (!$scope.objType || !schemas[$scope.objType]) {\n return $log.error(\"Invalid objType `\" + $scope.objType + \"` for `genericform` event\");\n }\n return schema = schemas[$scope.objType];\n };\n mount = function(params) {\n $scope.objName = schema.objName;\n if ($scope.mode === 'edit') {\n $scope.obj = params.obj;\n $scope.attachments = Immutable.fromJS(params.attachments);\n } else {\n $scope.obj = $model.make_model(schema.model, schema.initialData(params));\n $scope.attachments = Immutable.List();\n }\n _.map(schema.data($scope.project), function(value, key) {\n return $scope[key] = value;\n });\n if (params.objType === 'us') {\n $scope.obj.us_position = 'bottom';\n }\n if (form) {\n form.reset();\n }\n resetAttachments();\n setStatus($scope.obj.status);\n render();\n $scope.lightboxOpen = true;\n return lightboxService.open($el, null, null, true);\n };\n resetAttachments = function() {\n attachmentsToAdd = Immutable.List();\n return attachmentsToDelete = Immutable.List();\n };\n $scope.addAttachment = function(attachment) {\n return attachmentsToAdd = attachmentsToAdd.push(attachment);\n };\n $scope.deleteAttachment = function(attachment) {\n attachmentsToAdd = attachmentsToAdd.filter(function(it) {\n return it.get('name') !== attachment.get('name');\n });\n if (attachment.get(\"id\")) {\n return attachmentsToDelete = attachmentsToDelete.push(attachment);\n }\n };\n $scope.addTag = function(tag, color) {\n var inserted, itemtags, projectTags, tags, value;\n value = trim(tag.toLowerCase());\n tags = $scope.project.tags;\n projectTags = $scope.project.tags_colors;\n if (tags == null) {\n tags = [];\n }\n if (projectTags == null) {\n projectTags = {};\n }\n if (indexOf.call(tags, value) < 0) {\n tags.push(value);\n }\n projectTags[tag] = color || null;\n $scope.project.tags = tags;\n itemtags = _.clone($scope.obj.tags);\n inserted = _.find(itemtags, function(it) {\n return it[0] === value;\n });\n if (!inserted) {\n itemtags.push([value, color]);\n return $scope.obj.tags = itemtags;\n }\n };\n $scope.deleteTag = function(tag) {\n var itemtags, tags, value;\n value = trim(tag[0].toLowerCase());\n tags = $scope.project.tags;\n itemtags = _.clone($scope.obj.tags);\n _.remove(itemtags, function(tag) {\n return tag[0] === value;\n });\n $scope.obj.tags = itemtags;\n return _.pull($scope.obj.tags, value);\n };\n createAttachments = function(obj) {\n var promises;\n promises = _.map(attachmentsToAdd.toJS(), function(attachment) {\n return attachmentsService.upload(attachment.file, obj.id, $scope.obj.project, $scope.objType);\n });\n return $q.all(promises);\n };\n deleteAttachments = function(obj) {\n var promises;\n promises = _.map(attachmentsToDelete.toJS(), function(attachment) {\n return attachmentsService[\"delete\"]($scope.objType, attachment.id);\n });\n return $q.all(promises);\n };\n addExistingToSprint = function(item) {\n var currentLoading, onError, onSuccess;\n currentLoading = $loading().target($el.find(\".add-existing-button\")).start();\n if (item.milestone) {\n return sprintChangeConfirmAndSave(item);\n } else {\n onSuccess = function() {\n close();\n return $rootScope.$broadcast($scope.objType + \"form:add:success\", item);\n };\n onError = function() {\n return close();\n };\n return saveItem(item, onSuccess, onError);\n }\n };\n sprintChangeConfirmAndSave = function(item) {\n var message, newSprintName, oldSprintName, title;\n oldSprintName = $scope.milestonesById[item.milestone].name;\n newSprintName = $scope.milestonesById[$scope.relatedObjectId].name;\n title = $translate.instant(\"ISSUES.CONFIRM_CHANGE_FROM_SPRINT.TITLE\");\n message = $translate.instant(\"ISSUES.CONFIRM_CHANGE_FROM_SPRINT.MESSAGE\", {\n issue: item.subject,\n oldSprintName: oldSprintName,\n newSprintName: newSprintName\n });\n return $confirm.ask(title, null, message).then(function(askResponse) {\n var onError, onSuccess;\n onSuccess = function() {\n askResponse.finish();\n lightboxService.closeAll();\n $scope.lightboxOpen = false;\n return $rootScope.$broadcast($scope.objType + \"form:add:success\", item);\n };\n onError = function() {\n askResponse.finish(false);\n return $confirm.notify(\"error\");\n };\n return saveItem(item, onSuccess, onError);\n });\n };\n saveItem = function(item, onSuccess, onError) {\n item.setAttr($scope.relatedField, $scope.relatedObjectId);\n return $repo.save(item, true).then(onSuccess, onError);\n };\n isDisabledExisting = function(item) {\n return item && item[$scope.relatedField] === $scope.relatedObjectId;\n };\n $scope.isDisabledExisting = function(selectedItem) {\n return isDisabledExisting(selectedItem);\n };\n $scope.addExistingToSprint = function(selectedItem) {\n return addExistingToSprint(selectedItem);\n };\n submit = debounce(2000, function(event) {\n var broadcastEvent, currentLoading, prettyDate, promise, us_position;\n form = $el.find(\"form\").checksley();\n us_position = null;\n if (!form.validate()) {\n return;\n }\n currentLoading = $loading().target($el.find(\"#submitButton\")).start();\n if (currentLoading.isLoading()) {\n return;\n }\n if ($scope.mode === 'new') {\n us_position = $scope.obj.us_position;\n delete $scope.obj.us_position;\n promise = $repo.create(schema.model, $scope.obj);\n broadcastEvent = $scope.objType + \"form:new:success\";\n } else {\n if ($scope.obj.due_date instanceof moment) {\n prettyDate = $translate.instant(\"COMMON.PICKERDATE.FORMAT\");\n $scope.obj.due_date = $scope.obj.due_date.format(\"YYYY-MM-DD\");\n }\n promise = $repo.save($scope.obj, true);\n broadcastEvent = $scope.objType + \"form:edit:success\";\n }\n promise.then(function(data) {\n return deleteAttachments(data).then(function() {\n return createAttachments(data).then(function() {\n currentLoading.finish();\n $confirm.notify(\"success\");\n close();\n if (data.ref) {\n return $rs[schema.model].getByRef(data.project, data.ref, schema.params).then(function(obj) {\n return $rootScope.$broadcast(broadcastEvent, obj, us_position);\n });\n }\n });\n });\n });\n return promise.then(null, function(response) {\n var text;\n currentLoading.finish();\n form.setErrors(response);\n if (response.status) {\n text = $translate.instant(\"LIGHTBOX.CREATE_EDIT.ERROR_STATUS\");\n $confirm.notify(\"error\", text);\n }\n if (response.swimlane) {\n text = $translate.instant(\"LIGHTBOX.CREATE_EDIT.ERROR_SWIMLANE\");\n $confirm.notify(\"error\", text);\n }\n if (response._error_message) {\n return $confirm.notify(\"error\", response._error_message);\n }\n });\n });\n checkClose = function() {\n if (!$scope.obj.isModified()) {\n close();\n return $scope.$apply(function() {\n return $scope.obj.revert();\n });\n } else {\n return $confirm.ask($translate.instant(\"LIGHTBOX.CREATE_EDIT.CONFIRM_CLOSE\")).then(function(result) {\n result.finish();\n return close();\n });\n }\n };\n close = function() {\n lightboxService.closeAll();\n return $scope.lightboxOpen = false;\n };\n docEl = angular.element(document);\n docEl.on(\"keydown.lightbox-create-edit\", function(event) {\n var code;\n if ($scope.lightboxOpen) {\n event.stopPropagation();\n code = event.keyCode ? event.keyCode : event.which;\n if (code === 27) {\n return checkClose();\n }\n }\n });\n $el.on(\"submit\", \"form\", submit);\n $el.find('.close').on(\"click\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n return checkClose();\n });\n $el.on(\"click\", \".status-dropdown\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n return $el.find(\".pop-status\").popover().open();\n });\n $el.on(\"click\", \".status\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n setStatus(angular.element(event.currentTarget).data(\"status-id\"));\n $scope.$apply();\n $scope.$broadcast(\"status:changed\", $scope.obj.status);\n return $el.find(\".pop-status\").popover().close();\n });\n $el.on(\"click\", \".team-requirement\", function(event) {\n $scope.obj.team_requirement = !$scope.obj.team_requirement;\n return $scope.$apply();\n });\n $el.on(\"click\", \".client-requirement\", function(event) {\n $scope.obj.client_requirement = !$scope.obj.client_requirement;\n return $scope.$apply();\n });\n $el.on(\"click\", \".is-blocked\", function(event) {\n $scope.obj.is_blocked = !$scope.obj.is_blocked;\n return $scope.$apply();\n });\n $el.on(\"click\", \".iocaine\", function(event) {\n $scope.obj.is_iocaine = !$scope.obj.is_iocaine;\n $scope.$apply();\n return $scope.$broadcast(\"isiocaine:changed\", $scope.obj);\n });\n $scope.isTeamRequirement = function() {\n var ref;\n return (ref = $scope.obj) != null ? ref.team_requirement : void 0;\n };\n $scope.isClientRequirement = function() {\n var ref;\n return (ref = $scope.obj) != null ? ref.client_requirement : void 0;\n };\n setStatus = function(id) {\n $scope.obj.status = id;\n $scope.selectedStatus = _.find($scope.statusList, function(item) {\n return item.id === id;\n });\n return $scope.obj.is_closed = $scope.selectedStatus.is_closed;\n };\n return render = function(sprint) {\n var compiledTemplate, template, templateScope;\n template = $template.get(\"common/lightbox/lightbox-create-edit/lb-create-edit.html\");\n templateScope = $scope.$new();\n compiledTemplate = $compile(template)(templateScope);\n return $el.html(compiledTemplate);\n };\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLbCreateEdit\", [\"$log\", \"$tgRepo\", \"$tgModel\", \"$tgResources\", \"$rootScope\", \"lightboxService\", \"$tgLoading\", \"$translate\", \"$tgConfirm\", \"$q\", \"tgAttachmentsService\", \"$tgTemplate\", \"$compile\", CreateEditDirective]);\n\n debounceLeading = this.taiga.debounceLeading;\n\n RelateToEpicLightboxDirective = function($rootScope, $confirm, lightboxService, $tgCurrentUserService, tgResources, $tgResources, $epicsService, tgAnalytics) {\n var link;\n link = function($scope, $el, $attrs) {\n var existingEpicForm, filterEpics, loadProjects, newEpicForm, selectProject, us;\n us = null;\n $scope.projects = null;\n $scope.projectEpics = Immutable.List();\n $scope.loading = false;\n $scope.selectedProject = $scope.project.id;\n newEpicForm = $el.find(\".new-epic-form\").checksley();\n existingEpicForm = $el.find(\".existing-epic-form\").checksley();\n loadProjects = function() {\n if ($scope.projects === null) {\n return $scope.projects = $tgCurrentUserService.projects.get(\"unblocked\");\n }\n };\n filterEpics = function(selectedProjectId, filterText) {\n return tgResources.epics.listInAllProjects({\n is_epics_activated: true,\n project__blocked_code: 'null',\n project: selectedProjectId,\n q: filterText\n }, true).then(function(data) {\n var excludeIds, filteredData;\n excludeIds = [];\n if (us.epics) {\n excludeIds = us.epics.map(function(epic) {\n return epic.id;\n });\n }\n filteredData = data.filter(function(epic) {\n return excludeIds.indexOf(epic.get('id')) === -1;\n });\n return $scope.projectEpics = filteredData;\n });\n };\n selectProject = function(selectedProjectId) {\n $scope.selectedEpic = null;\n $scope.searchEpic = \"\";\n return filterEpics(selectedProjectId, $scope.searchEpic);\n };\n $el.on(\"click\", \".close\", function(event) {\n event.preventDefault();\n return lightboxService.close($el);\n });\n $scope.$on(\"relate-to-epic:add\", function(ctx, item) {\n us = item;\n $scope.selectedEpic = null;\n $scope.searchEpic = \"\";\n loadProjects();\n return filterEpics($scope.selectedProject, $scope.searchEpic).then(function() {\n return lightboxService.open($el).then(function() {\n return $el.find('input').focus;\n });\n });\n });\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n $scope.selectProject = function(selectedProjectId) {\n return selectProject(selectedProjectId);\n };\n $scope.onUpdateSearchEpic = debounceLeading(300, function() {\n $scope.selectedEpic = null;\n return filterEpics($scope.selectedProject, $scope.searchEpic);\n });\n $scope.saveRelatedEpic = function(selectedEpicId, onSavedRelatedEpic) {\n var onError, onSuccess, usId;\n if (!existingEpicForm.validate()) {\n return;\n }\n $scope.loading = true;\n onError = function(data) {\n $scope.loading = false;\n $confirm.notify(\"error\");\n return existingEpicForm.setErrors(data);\n };\n onSuccess = function(data) {\n tgAnalytics.trackEvent(\"user story related epic\", \"create\", \"create related epic on user story\", 1);\n $scope.loading = false;\n $rootScope.$broadcast(\"related-epics:changed\", us);\n return lightboxService.close($el);\n };\n usId = us.id;\n return tgResources.epics.addRelatedUserstory(selectedEpicId, usId).then(onSuccess, onError);\n };\n return $scope.createEpic = function(selectedProjectId, epicSubject) {\n var onCreateEpic, onError, onSuccess;\n if (!newEpicForm.validate()) {\n return;\n }\n this.loading = true;\n onError = function(data) {\n $scope.loading = false;\n $confirm.notify(\"error\");\n return newEpicForm.setErrors(errors);\n };\n onSuccess = function() {\n tgAnalytics.trackEvent(\"user story related epic\", \"create\", \"create related epic on user story\", 1);\n $scope.loading = false;\n $rootScope.$broadcast(\"related-epics:changed\", us);\n return lightboxService.close($el);\n };\n onCreateEpic = function(epic) {\n var epicId, usId;\n epicId = epic.get('id');\n usId = us.id;\n return tgResources.epics.addRelatedUserstory(epicId, usId).then(onSuccess, onError);\n };\n return $epicsService.createEpic({\n subject: epicSubject\n }, null, selectedProjectId).then(onCreateEpic, onError);\n };\n };\n return {\n templateUrl: \"common/lightbox/lightbox-relate-to-epic.html\",\n link: link\n };\n };\n\n module.directive(\"tgLbRelatetoepic\", [\"$rootScope\", \"$tgConfirm\", \"lightboxService\", \"tgCurrentUserService\", \"tgResources\", \"$tgResources\", \"tgEpicsService\", \"$tgAnalytics\", RelateToEpicLightboxDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var Loaded, module;\n\n module = angular.module(\"taigaCommon\");\n\n Loaded = function($parse, $timeout) {\n return {\n restrict: 'A',\n compile: function($element, $attrs) {\n var fn;\n fn = $parse($attrs['tgLoaded']);\n return function($scope, $element) {\n var callback;\n callback = function() {\n return fn($scope, {\n $event: {\n target: $element\n }\n });\n };\n $timeout(function() {\n return callback();\n });\n return null;\n };\n }\n };\n };\n\n module.directive(\"tgLoaded\", ['$parse', '$timeout', Loaded]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var Loader, LoaderDirective, module, sizeFormat, taiga, timeout;\n\n taiga = this.taiga;\n\n sizeFormat = this.taiga.sizeFormat;\n\n timeout = this.taiga.timeout;\n\n module = angular.module(\"taigaCommon\");\n\n LoaderDirective = function(tgLoader, $rootscope) {\n var link;\n link = function($scope, $el, $attrs) {\n tgLoader.onStart(function() {\n $(document.body).addClass(\"loader-active\");\n return $el.addClass(\"active\");\n });\n return tgLoader.onEnd(function() {\n $(document.body).removeClass(\"loader-active\");\n return $el.removeClass(\"active\");\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLoader\", [\"tgLoader\", \"$rootScope\", LoaderDirective]);\n\n Loader = function($rootscope) {\n var autoClose, config, lastResponseDate, open, pageLoaded, requestCount, start, startLoadTime;\n config = {\n minTime: 300\n };\n open = false;\n startLoadTime = 0;\n requestCount = 0;\n lastResponseDate = 0;\n pageLoaded = function(force) {\n var diff, endTime, timeoutValue;\n if (force == null) {\n force = false;\n }\n if (startLoadTime) {\n timeoutValue = 0;\n if (!force) {\n endTime = new Date().getTime();\n diff = endTime - startLoadTime;\n if (diff < config.minTime) {\n timeoutValue = config.minTime - diff;\n }\n }\n timeout(timeoutValue, function() {\n $rootscope.$broadcast(\"loader:end\");\n open = false;\n return window.prerenderReady = true;\n });\n }\n startLoadTime = 0;\n requestCount = 0;\n return lastResponseDate = 0;\n };\n autoClose = function() {\n var intervalAuto;\n return intervalAuto = setInterval((function() {\n if (lastResponseDate && requestCount === 0) {\n pageLoaded();\n return clearInterval(intervalAuto);\n }\n }), 50);\n };\n start = function() {\n startLoadTime = new Date().getTime();\n $rootscope.$broadcast(\"loader:start\");\n return open = true;\n };\n return {\n pageLoaded: pageLoaded,\n open: function() {\n return open;\n },\n start: function(auto) {\n if (auto == null) {\n auto = false;\n }\n if (!open) {\n start();\n if (auto) {\n return autoClose();\n }\n }\n },\n onStart: function(fn) {\n return $rootscope.$on(\"loader:start\", fn);\n },\n onEnd: function(fn) {\n return $rootscope.$on(\"loader:end\", fn);\n },\n logRequest: function() {\n return requestCount++;\n },\n logResponse: function() {\n if (requestCount > 0) {\n requestCount--;\n }\n return lastResponseDate = new Date().getTime();\n }\n };\n };\n\n Loader.$inject = [\"$rootScope\"];\n\n module.factory(\"tgLoader\", Loader);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var LoadingDirective, TgLoadingService, module,\n slice = [].slice;\n\n module = angular.module(\"taigaCommon\");\n\n TgLoadingService = function($compile) {\n var spinner;\n spinner = \"loading...\";\n return function() {\n var service;\n service = {\n settings: {\n target: null,\n scope: null,\n classes: [],\n timeout: 0,\n template: null\n },\n target: function(target) {\n service.settings.target = target;\n return service;\n },\n scope: function(scope) {\n service.settings.scope = scope;\n return service;\n },\n template: function(template) {\n service.settings.template = template;\n return service;\n },\n removeClasses: function() {\n var classess;\n classess = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n service.settings.classes = classess;\n return service;\n },\n timeout: function(timeout) {\n service.settings.timeout = timeout;\n return service;\n },\n isLoading: function() {\n var target;\n target = service.settings.target;\n return target.hasClass('loading');\n },\n start: function() {\n var target, timeoutId;\n target = service.settings.target;\n service.settings.classes.map(function(className) {\n return target.removeClass(className);\n });\n if (!target.hasClass('loading') && !service.settings.template) {\n service.settings.template = target.html();\n }\n timeoutId = setTimeout((function() {\n if (!target.hasClass('loading')) {\n target.addClass('loading');\n return target.html(spinner);\n }\n }), service.settings.timeout);\n service.settings.timeoutId = timeoutId;\n return service;\n },\n finish: function() {\n var removeClasses, target, timeoutId;\n target = service.settings.target;\n timeoutId = service.settings.timeoutId;\n if (timeoutId) {\n clearTimeout(timeoutId);\n removeClasses = service.settings.classes;\n removeClasses.map(function(className) {\n return service.settings.target.addClass(className);\n });\n target.html(service.settings.template);\n target.removeClass('loading');\n if (service.settings.scope) {\n $compile(target.contents())(service.settings.scope);\n }\n }\n return service;\n }\n };\n return service;\n };\n };\n\n TgLoadingService.$inject = [\"$compile\"];\n\n module.factory(\"$tgLoading\", TgLoadingService);\n\n LoadingDirective = function($loading) {\n var link;\n link = function($scope, $el, attr) {\n var currentLoading, template;\n currentLoading = null;\n template = $el.html();\n return $scope.$watch(attr.tgLoading, (function(_this) {\n return function(showLoading) {\n if (showLoading) {\n return currentLoading = $loading().target($el).timeout(100).template(template).scope($scope).start();\n } else if (currentLoading) {\n return currentLoading.finish();\n }\n };\n })(this));\n };\n return {\n priority: 99999,\n link: link\n };\n };\n\n module.directive(\"tgLoading\", [\"$tgLoading\", LoadingDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var RelatedTaskStatusDirective, UsStatusDirective, bindOnce, debounce, module, taiga;\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaCommon\");\n\n UsStatusDirective = function($repo, $template) {\n\n /*\n Print the status of a US and a popover to change it.\n - tg-us-status: The user story\n - on-update: Method call after US is updated\n \n Example:\n \n div.status(tg-us-status=\"us\" on-update=\"ctrl.loadSprintState()\")\n a.us-status(href=\"\", title=\"Status Name\")\n \n NOTE: This directive need 'usStatusById' and 'project'.\n */\n var link, template;\n template = $template.get(\"common/popover/popover-us-status.html\", true);\n link = function($scope, $el, $attrs) {\n var $ctrl, render, us;\n $ctrl = $el.controller();\n render = function(us) {\n var usStatusById, usStatusDom, usStatusDomParent;\n usStatusDomParent = $el.find(\".us-status\");\n usStatusDom = $el.find(\".us-status .us-status-bind\");\n usStatusById = $scope.usStatusById;\n if (usStatusById[us.status]) {\n usStatusDom.text(usStatusById[us.status].name);\n return usStatusDomParent.css(\"color\", usStatusById[us.status].color);\n }\n };\n $el.on(\"click\", \".us-status\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n return $el.find(\".pop-status\").popover().open();\n });\n $el.on(\"click\", \".popover-status\", debounce(2000, function(event) {\n var statusElement, target, us;\n event.preventDefault();\n event.stopPropagation();\n statusElement = $(event.currentTarget).find('#js-status-btn');\n target = angular.element(statusElement);\n us = $scope.$eval($attrs.tgUsStatus);\n us.status = target.data(\"status-id\");\n render(us);\n $el.find(\".pop-status\").popover().close();\n return $scope.$apply(function() {\n return $repo.save(us).then(function() {\n return $scope.$eval($attrs.onUpdate);\n });\n });\n }));\n $scope.$on(\"userstories:loaded\", function() {\n return render($scope.$eval($attrs.tgUsStatus));\n });\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n us = $scope.$eval($attrs.tgUsStatus);\n render(us);\n return bindOnce($scope, \"project\", function(project) {\n var html;\n html = template({\n \"statuses\": project.us_statuses,\n \"currentStatus\": us.status\n });\n $el.append(html);\n if ($scope.project.my_permissions.indexOf(\"modify_us\") === -1) {\n $el.unbind(\"click\");\n return $el.find(\"a\").addClass(\"not-clickable\");\n }\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUsStatus\", [\"$tgRepo\", \"$tgTemplate\", UsStatusDirective]);\n\n RelatedTaskStatusDirective = function($repo, $template) {\n\n /*\n Print the status of a related task and a popover to change it.\n - tg-related-task-status: The related task\n - on-update: Method call after US is updated\n \n Example:\n \n div.status(tg-related-task-status=\"task\" on-update=\"ctrl.loadSprintState()\")\n a.task-status(href=\"\", title=\"Status Name\")\n \n NOTE: This directive need 'taskStatusById' and 'project'.\n */\n var link, selectionTemplate, updateTaskStatus;\n selectionTemplate = $template.get(\"common/popover/popover-related-task-status.html\", true);\n updateTaskStatus = function($el, task, taskStatusById) {\n var taskStatusDom, taskStatusDomParent;\n taskStatusDomParent = $el.find(\".us-status\");\n taskStatusDom = $el.find(\".task-status .task-status-bind\");\n if (taskStatusById[task.status]) {\n taskStatusDom.text(taskStatusById[task.status].name);\n return taskStatusDomParent.css('color', taskStatusById[task.status].color);\n }\n };\n link = function($scope, $el, $attrs) {\n var $ctrl, autoSave, notAutoSave, task;\n $ctrl = $el.controller();\n task = $scope.$eval($attrs.tgRelatedTaskStatus);\n notAutoSave = $scope.$eval($attrs.notAutoSave);\n autoSave = !notAutoSave;\n $el.on(\"click\", \".task-status\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n return $el.find(\".pop-status\").popover().open();\n });\n $el.on(\"click\", \".status\", debounce(2000, function(event) {\n var target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n task.status = target.data(\"status-id\");\n $el.find(\".pop-status\").popover().close();\n updateTaskStatus($el, task, $scope.taskStatusById);\n if (autoSave) {\n return $scope.$apply(function() {\n return $repo.save(task).then(function() {\n $scope.$eval($attrs.onUpdate);\n return $scope.$emit(\"related-tasks:status-changed\");\n });\n });\n }\n }));\n $scope.$watch($attrs.tgRelatedTaskStatus, function() {\n task = $scope.$eval($attrs.tgRelatedTaskStatus);\n return updateTaskStatus($el, task, $scope.taskStatusById);\n });\n taiga.bindOnce($scope, \"project\", function(project) {\n $el.append(selectionTemplate({\n 'statuses': project.task_statuses\n }));\n updateTaskStatus($el, task, $scope.taskStatusById);\n if (project.my_permissions.indexOf(\"modify_task\") === -1) {\n $el.unbind(\"click\");\n return $el.find(\"a\").addClass(\"not-clickable\");\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTaskStatus\", [\"$tgRepo\", \"$tgTemplate\", RelatedTaskStatusDirective]);\n\n $.fn.popover = function() {\n var $el, close, closeAll, closePopover, isVisible, open;\n $el = this;\n isVisible = (function(_this) {\n return function() {\n var docViewBottom, docViewLeft, docViewRight, docViewTop, docViewWidth, elemBottom, elemLeft, elemRight, elemTop, elemWidth;\n $el.css({\n \"display\": \"block\",\n \"visibility\": \"hidden\"\n });\n docViewTop = $(window).scrollTop();\n docViewBottom = docViewTop + $(window).height();\n docViewWidth = $(window).width();\n docViewRight = docViewWidth;\n docViewLeft = 0;\n elemTop = $el.offset().top;\n elemBottom = elemTop + $el.height();\n elemWidth = $el.width();\n elemLeft = $el.offset().left;\n elemRight = $el.offset().left + elemWidth;\n $el.css({\n \"display\": \"none\",\n \"visibility\": \"visible\"\n });\n return (elemBottom <= docViewBottom) && (elemTop >= docViewTop) && (elemLeft >= docViewLeft) && (elemRight <= docViewRight);\n };\n })(this);\n closePopover = (function(_this) {\n return function(onClose) {\n if (onClose) {\n onClose.call($el);\n }\n $el.fadeOut(function() {\n return $el.removeClass(\"active\").removeClass(\"fix\");\n });\n return $el.off(\"popup:close\");\n };\n })(this);\n closeAll = (function(_this) {\n return function() {\n return $(\".popover.active\").each(function() {\n return $(this).trigger(\"popup:close\");\n });\n };\n })(this);\n open = (function(_this) {\n return function(onClose) {\n if ($el.hasClass(\"active\")) {\n return close();\n } else {\n closeAll();\n if (!isVisible()) {\n $el.addClass(\"fix\");\n }\n $el.fadeIn(function() {\n $el.addClass(\"active\");\n $(document.body).off(\"popover\");\n return $(document.body).one(\"click.popover\", function() {\n return closeAll();\n });\n });\n return $el.on(\"popup:close\", function(e) {\n return closePopover(onClose);\n });\n }\n };\n })(this);\n close = (function(_this) {\n return function() {\n return $el.trigger(\"popup:close\");\n };\n })(this);\n return {\n open: open,\n close: close,\n closeAll: closeAll\n };\n };\n\n taiga.globalPopover = function(target, list, options, cb) {\n var close, createSvg, elementPosition, followElement, ul, wrapper;\n if (options == null) {\n options = {};\n }\n wrapper = document.createElement('div');\n wrapper.classList.add('popover', 'global-popover');\n ul = document.createElement('ul');\n createSvg = function(icon) {\n var attrHref, svg, tgSvg, use, xlink;\n tgSvg = document.createElement('tg-svg');\n svg = document.createElement('svg');\n use = document.createElement('use');\n xlink = document.createAttribute('xlink:href');\n xlink.value = '#' + icon;\n attrHref = document.createAttribute('attr-href');\n attrHref.value = '#' + icon;\n use.setAttributeNode(xlink);\n use.setAttributeNode(attrHref);\n svg.classList.add('icon');\n svg.appendChild(use);\n tgSvg.appendChild(svg);\n return tgSvg;\n };\n close = function() {\n $(wrapper).popover().close();\n return $(wrapper).remove();\n };\n followElement = function() {\n elementPosition();\n return requestAnimationFrame(followElement);\n };\n elementPosition = function() {\n var left, rect, top, width;\n rect = target.getBoundingClientRect();\n top = rect.top + rect.height;\n width = options.width || 170;\n left = rect.right - width;\n if (options.paddingTop) {\n top = top + options.paddingTop;\n }\n if (options.paddingLeft) {\n left = left + options.paddingLeft;\n }\n wrapper.style.top = top + 'px';\n wrapper.style.left = left + 'px';\n return wrapper.style.width = width + 'px';\n };\n elementPosition();\n followElement();\n document.addEventListener('scroll', close, true);\n list.forEach(function(option) {\n var button, li;\n li = document.createElement('li');\n button = document.createElement('button');\n button.addEventListener('click', option.event);\n if (option.icon) {\n button.innerHTML = createSvg(option.icon).innerHTML;\n }\n button.appendChild(document.createTextNode(option.text));\n li.appendChild(button);\n return ul.appendChild(li);\n });\n wrapper.appendChild(ul);\n document.body.appendChild(wrapper);\n $(wrapper).popover().open(function() {\n document.removeEventListener('scroll', close);\n cb();\n if (wrapper) {\n return setTimeout(function() {\n return $(wrapper).remove();\n }, 2000);\n }\n });\n return (function(_this) {\n return function() {\n return $(wrapper).popover().close();\n };\n })(this);\n };\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ExceptionHandlerFactory, module, taiga;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaCommon\");\n\n ExceptionHandlerFactory = function($log, config) {\n var ravenConfig;\n this.config = config;\n ravenConfig = this.config.get(\"ravenConfig\", null);\n if (ravenConfig) {\n $log.debug(\"Using the RavenJS exception handler.\");\n Raven.config(ravenConfig).install();\n return function(exception, cause) {\n $log.error.apply($log, arguments);\n return Raven.captureException(exception);\n };\n } else {\n $log.debug(\"Using the default logging exception handler.\");\n return function(exception, cause) {\n return $log.error.apply($log, arguments);\n };\n }\n };\n\n module.factory(\"$exceptionHandler\", [\"$log\", \"$tgConfig\", ExceptionHandlerFactory]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var SectionsService, module,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n module = angular.module(\"taigaCommon\");\n\n SectionsService = (function(superClass) {\n var SECTIONS;\n\n extend(SectionsService, superClass);\n\n SectionsService.$inject = [\"$translate\", \"tgCurrentUserService\"];\n\n SECTIONS = {\n 1: {\n id: 1,\n title: 'TIMELINE',\n path: 'timeline',\n enabled: ''\n },\n 2: {\n id: 2,\n title: 'EPICS',\n path: 'epics',\n enabled: 'is_epics_activated'\n },\n 3: {\n id: 3,\n title: 'BACKLOG',\n path: 'backlog',\n enabled: 'is_backlog_activated'\n },\n 4: {\n id: 4,\n title: 'KANBAN',\n path: 'kanban',\n enabled: 'is_kanban_activated'\n },\n 5: {\n id: 5,\n title: 'ISSUES',\n path: 'issues',\n enabled: 'is_issues_activated'\n },\n 6: {\n id: 6,\n title: 'WIKI',\n path: 'wiki',\n enabled: 'is_wiki_activated'\n }\n };\n\n function SectionsService(translate, currentUserService) {\n this.translate = translate;\n this.currentUserService = currentUserService;\n SectionsService.__super__.constructor.call(this);\n _.map(SECTIONS, (function(_this) {\n return function(x) {\n return x.title = _this.translate.instant(\"PROJECT.SECTION.\" + x.title);\n };\n })(this));\n }\n\n SectionsService.prototype.list = function() {\n return SECTIONS;\n };\n\n SectionsService.prototype.getPath = function(projectSlug, sectionId) {\n var defaultHomePage, project, projects, ref, section;\n defaultHomePage = \"timeline\";\n projects = (ref = this.currentUserService.projects) != null ? ref.get(\"all\") : void 0;\n if (!projects) {\n return defaultHomePage;\n }\n project = projects.find(function(p) {\n return p.get('slug') === projectSlug;\n });\n if (!project) {\n return defaultHomePage;\n }\n if (!sectionId) {\n sectionId = project.get('my_homepage');\n }\n section = _.find(SECTIONS, {\n \"id\": sectionId\n });\n if (!section || (project != null ? project.get(section.enabled) : void 0) === !true) {\n return defaultHomePage;\n }\n return section.path;\n };\n\n return SectionsService;\n\n })(taiga.Service);\n\n module.service(\"$tgSections\", SectionsService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TagManagerService, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaCommon\");\n\n TagManagerService = (function(superClass) {\n extend(TagManagerService, superClass);\n\n TagManagerService.$inject = [\"$rootScope\", \"$log\", \"$tgConfig\", \"$window\", \"$document\", \"$location\"];\n\n function TagManagerService(rootscope, log, config, win, doc, location) {\n var conf;\n this.rootscope = rootscope;\n this.log = log;\n this.config = config;\n this.win = win;\n this.doc = doc;\n this.location = location;\n this.initialized = false;\n conf = this.config.get(\"tagManager\", {});\n this.accountId = conf.accountId;\n }\n\n TagManagerService.prototype.initialize = function() {\n if (!this.accountId) {\n this.log.debug(\"Tag Manager: no account id provided. Disabling.\");\n return;\n }\n this.injectTagManager();\n return this.initialized = true;\n };\n\n TagManagerService.prototype.injectTagManager = function() {\n var fn;\n fn = (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\n new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\n j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;\n j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;\n f.parentNode.insertBefore(j,f);});\n return fn(window, document, \"script\", \"dataLayer\", this.accountId);\n };\n\n return TagManagerService;\n\n })(taiga.Service);\n\n module.service(\"$tgTagManager\", TagManagerService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ColorizeTagsBacklogDirective, LbTagLineDirective, TagsDirective, bindOnce, module, taiga, trim,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n taiga = this.taiga;\n\n trim = this.taiga.trim;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaCommon\");\n\n TagsDirective = function() {\n var formatter, link, parser;\n formatter = function(v) {\n if (_.isArray(v)) {\n return v.join(\", \");\n }\n return \"\";\n };\n parser = function(v) {\n var result;\n if (!v) {\n return [];\n }\n result = _(v.split(\",\")).map(function(x) {\n return _.trim(x);\n });\n return result.value();\n };\n link = function($scope, $el, $attrs, $ctrl) {\n $ctrl.$formatters.push(formatter);\n $ctrl.$parsers.push(parser);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n require: \"ngModel\",\n link: link\n };\n };\n\n module.directive(\"tgTags\", TagsDirective);\n\n ColorizeTagsBacklogDirective = function($emojis) {\n var link, template;\n template = _.template(\"<% _.each(tags, function(tag) { %>\\n <% if (tag[1] !== null) { %>\\n
\\\">\\n <%= emojify(tag[0]) %>\\n
\\n <% } %>\\n<% }) %>\\n<% _.each(tags, function(tag) { %>\\n <% if (tag[1] === null) { %>\\n
\\n <%= emojify(tag[0]) %>\\n
\\n <% } %>\\n<% }) %>\");\n link = function($scope, $el, $attrs, $ctrl) {\n var render;\n render = function(tags) {\n var html;\n html = template({\n tags: tags,\n emojify: function(text) {\n return $emojis.replaceEmojiNameByHtmlImgs(_.escape(text));\n }\n });\n return $el.html(html);\n };\n $scope.$watch($attrs.tgColorizeBacklogTags, function(tags) {\n if (tags != null) {\n return render(tags);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgColorizeBacklogTags\", [\"$tgEmojis\", ColorizeTagsBacklogDirective]);\n\n LbTagLineDirective = function($rs, $template, $compile) {\n var COMMA_KEY, ENTER_KEY, autocomplete, link, templateTags;\n ENTER_KEY = 13;\n COMMA_KEY = 188;\n templateTags = $template.get(\"common/tag/lb-tag-line-tags.html\", true);\n autocomplete = null;\n link = function($scope, $el, $attrs, $model) {\n var addValue, deleteValue, hideSaveButton, renderTags, resetInput, saveInputTag, showSaveButton, withoutColors;\n withoutColors = _.has($attrs, \"withoutColors\");\n renderTags = function(tags, tagsColors) {\n var color, ctx, html;\n if (tagsColors == null) {\n tagsColors = [];\n }\n color = !withoutColors ? tagsColors[t] : null;\n ctx = {\n tags: _.map(tags, function(t) {\n return {\n name: t,\n style: color ? \"border-left: 5px solid \" + color : \"\"\n };\n })\n };\n html = $compile(templateTags(ctx))($scope);\n return $el.find(\".tags-container\").html(html);\n };\n showSaveButton = function() {\n return $el.find(\".save\").removeClass(\"hidden\");\n };\n hideSaveButton = function() {\n return $el.find(\".save\").addClass(\"hidden\");\n };\n resetInput = function() {\n $el.find(\"input\").val(\"\");\n return autocomplete.close();\n };\n addValue = function(value) {\n var tags;\n value = trim(value.toLowerCase());\n if (value.length === 0) {\n return;\n }\n tags = _.clone($model.$modelValue, false);\n if (tags == null) {\n tags = [];\n }\n if (indexOf.call(tags, value) < 0) {\n tags.push(value);\n }\n $scope.$apply(function() {\n return $model.$setViewValue(tags);\n });\n return hideSaveButton();\n };\n deleteValue = function(value) {\n var tags;\n value = trim(value.toLowerCase());\n if (value.length === 0) {\n return;\n }\n tags = _.clone($model.$modelValue, false);\n tags = _.pull(tags, value);\n return $scope.$apply(function() {\n return $model.$setViewValue(tags);\n });\n };\n saveInputTag = function() {\n var value;\n value = $el.find(\"input\").val();\n addValue(value);\n return resetInput();\n };\n $el.on(\"keypress\", \"input\", function(event) {\n var target;\n target = angular.element(event.currentTarget);\n if (event.keyCode === ENTER_KEY) {\n event.preventDefault();\n return saveInputTag();\n } else if (String.fromCharCode(event.keyCode) === ',') {\n event.preventDefault();\n return saveInputTag();\n } else {\n if (target.val().length) {\n return showSaveButton();\n } else {\n return hideSaveButton();\n }\n }\n });\n $el.on(\"click\", \".save\", function(event) {\n event.preventDefault();\n return saveInputTag();\n });\n $el.on(\"click\", \".remove-tag\", function(event) {\n var target, value;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n value = target.siblings(\".tag-name\").text();\n return deleteValue(value);\n });\n bindOnce($scope, \"project\", function(project) {\n var input;\n input = $el.find(\"input\");\n autocomplete = new Awesomplete(input[0], {\n list: _.keys(project.tags_colors)\n });\n return input.on(\"awesomplete-selectcomplete\", function() {\n addValue(input.val());\n return input.val(\"\");\n });\n });\n $scope.$watch($attrs.ngModel, function(tags) {\n var ref, tagsColors;\n tagsColors = ((ref = $scope.project) != null ? ref.tags_colors : void 0) || [];\n return renderTags(tags, tagsColors);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\",\n templateUrl: \"common/tag/lb-tag-line.html\"\n };\n };\n\n module.directive(\"tgLbTagLine\", [\"$tgResources\", \"$tgTemplate\", \"$compile\", LbTagLineDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UserPilotService, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaCommon\");\n\n UserPilotService = (function(superClass) {\n var JOINED_LIMIT_DAYS;\n\n extend(UserPilotService, superClass);\n\n UserPilotService.$inject = [\"$rootScope\", \"$window\"];\n\n JOINED_LIMIT_DAYS = 42;\n\n function UserPilotService(rootScope, win) {\n this.rootScope = rootScope;\n this.win = win;\n this.initialized = false;\n }\n\n UserPilotService.prototype.initialize = function() {\n if (this.initialized) {\n return;\n }\n this.rootScope.$on('$locationChangeSuccess', (function(_this) {\n return function() {\n if (_this.win.userpilot) {\n return _this.win.userpilot.reload();\n }\n };\n })(this));\n this.rootScope.$on(\"auth:refresh\", (function(_this) {\n return function(ctx, user) {\n return _this.identify();\n };\n })(this));\n this.rootScope.$on(\"auth:register\", (function(_this) {\n return function(ctx, user) {\n return _this.identify();\n };\n })(this));\n this.rootScope.$on(\"auth:login\", (function(_this) {\n return function(ctx, user) {\n return _this.identify();\n };\n })(this));\n this.rootScope.$on(\"auth:logout\", (function(_this) {\n return function(ctx, user) {\n return _this.identify();\n };\n })(this));\n return this.initialized = true;\n };\n\n UserPilotService.prototype.checkZendeskConditions = function(userData) {\n var hasPaidPlan, is_new_user, joined;\n hasPaidPlan = this.hasPaidPlan(userData);\n joined = new Date(userData[\"date_joined\"]);\n is_new_user = joined > this.getJoinedLimit();\n return hasPaidPlan && is_new_user;\n };\n\n UserPilotService.prototype.identify = function() {\n var userData, userInfo, userPilotCustomer, userPilotId;\n userInfo = this.win.localStorage.getItem(\"userInfo\") || \"{}\";\n userData = JSON.parse(userInfo);\n if (this.win.userpilot) {\n userPilotId = this.calculateUserPilotId(userData);\n userPilotCustomer = this.prepareUserPilotCustomer(userData);\n this.win.userpilot.identify(userPilotId, userPilotCustomer);\n }\n if (this.win.zE) {\n if (this.checkZendeskConditions(userData)) {\n return this.setZendeskWidgetStatus({\n enabled: true\n });\n } else {\n return this.setZendeskWidgetStatus({\n enabled: false\n });\n }\n }\n };\n\n UserPilotService.prototype.prepareUserPilotCustomer = function(data) {\n if (!data[\"id\"]) {\n return {\n created_at: Date.now()\n };\n }\n return {\n name: data[\"full_name_display\"],\n email: data[\"email\"],\n created_at: Date.now(),\n taiga_id: data[\"id\"],\n taiga_username: data[\"username\"],\n taiga_date_joined: data[\"date_joined\"],\n taiga_lang: data[\"lang\"],\n taiga_max_private_projects: data[\"max_private_projects\"],\n taiga_max_memberships_private_projects: data[\"max_memberships_private_projects\"],\n taiga_verified_email: data[\"verified_email\"],\n taiga_total_private_projects: data[\"total_private_projects\"],\n taiga_total_public_projects: data[\"total_public_projects\"],\n taiga_roles: data[\"roles\"] && data[\"roles\"].toString()\n };\n };\n\n UserPilotService.prototype.hasPaidPlan = function(data) {\n var maxPrivateProjects;\n maxPrivateProjects = data[\"max_private_projects\"];\n return maxPrivateProjects !== void 0 && maxPrivateProjects !== 1;\n };\n\n UserPilotService.prototype.calculateUserPilotId = function(data) {\n var joined;\n if (!data[\"id\"]) {\n return 2;\n }\n joined = new Date(data[\"date_joined\"]);\n if ((joined > this.getJoinedLimit()) || this.hasPaidPlan(data)) {\n return data[\"id\"];\n }\n return 1;\n };\n\n UserPilotService.prototype.getJoinedLimit = function() {\n var limit;\n limit = new Date;\n limit.setDate(limit.getDate() - JOINED_LIMIT_DAYS);\n return limit;\n };\n\n UserPilotService.prototype.setZendeskWidgetStatus = function(config) {\n var supress;\n if (config == null) {\n config = {\n enabled: false\n };\n }\n supress = !config.enabled;\n return this.win.zE('webWidget', 'updateSettings', {\n webWidget: {\n chat: {\n suppress: supress\n },\n contactForm: {\n suppress: supress\n },\n helpCenter: {\n suppress: supress\n },\n talk: {\n suppress: supress\n },\n answerBot: {\n suppress: supress\n }\n }\n });\n };\n\n return UserPilotService;\n\n })(taiga.Service);\n\n module.service(\"$tgUserPilot\", UserPilotService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CreateEditSprint, bindOnce, debounce, module, taiga;\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaBacklog\");\n\n CreateEditSprint = function($repo, $confirm, $rs, $rootscope, lightboxService, $loading, $translate, projectService, $timeout) {\n var link;\n link = function($scope, $el, attrs) {\n var createSprint, form, getLastSprint, hasErrors, openFn, remove, resetSprint, submit, ussToAdd;\n hasErrors = false;\n createSprint = true;\n form = null;\n $scope.newSprint = {};\n ussToAdd = null;\n $scope.createEditOpen = false;\n resetSprint = function() {\n if (form) {\n form.reset();\n }\n return $scope.newSprint = {\n project: null,\n name: null,\n estimated_start: null,\n estimated_finish: null\n };\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var broadcastEvent, currentLoading, estimated_end, estimated_start, newSprint, prettyDate, promise, submitButton, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n prettyDate = $translate.instant(\"COMMON.PICKERDATE.FORMAT\");\n submitButton = $el.find(\".submit-button\");\n form = $el.find(\"form\").checksley();\n if (!form.validate()) {\n hasErrors = true;\n $el.find(\".last-sprint-name\").addClass(\"disappear\");\n return;\n }\n hasErrors = false;\n broadcastEvent = null;\n estimated_start = $('.date-start').val();\n estimated_end = $('.date-end').val();\n if (createSprint) {\n newSprint = angular.copy($scope.newSprint);\n newSprint.estimated_start = moment(estimated_start, prettyDate).format(\"YYYY-MM-DD\");\n newSprint.estimated_finish = moment(estimated_end, prettyDate).format(\"YYYY-MM-DD\");\n promise = $repo.create(\"milestones\", newSprint);\n broadcastEvent = \"sprintform:create:success\";\n } else {\n newSprint = $scope.newSprint.realClone();\n newSprint.estimated_start = moment(estimated_start, prettyDate).format(\"YYYY-MM-DD\");\n newSprint.estimated_finish = moment(estimated_end, prettyDate).format(\"YYYY-MM-DD\");\n promise = $repo.save(newSprint);\n broadcastEvent = \"sprintform:edit:success\";\n }\n currentLoading = $loading().target(submitButton).start();\n promise.then(function(data) {\n currentLoading.finish();\n if (createSprint) {\n $scope.sprintsCounter += 1;\n }\n $scope.sprints = _.map($scope.sprints, function(it) {\n if (it.id === data.id) {\n return data;\n } else {\n return it;\n }\n });\n if (broadcastEvent === \"sprintform:create:success\" && ussToAdd) {\n $rootscope.$broadcast(broadcastEvent, data, ussToAdd);\n } else {\n $rootscope.$broadcast(broadcastEvent, data);\n }\n lightboxService.close($el);\n return $scope.createEditOpen = false;\n });\n return promise.then(null, function(data) {\n currentLoading.finish();\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"light-error\", data._error_message);\n } else if (data.__all__) {\n return $confirm.notify(\"light-error\", data.__all__[0]);\n }\n });\n };\n })(this));\n remove = function() {\n var message, title;\n title = $translate.instant(\"LIGHTBOX.DELETE_SPRINT.TITLE\");\n message = $scope.newSprint.name;\n return $confirm.askOnDelete(title, message).then((function(_this) {\n return function(askResponse) {\n var onError, onSuccess;\n onSuccess = function() {\n askResponse.finish();\n $scope.milestonesCounter -= 1;\n lightboxService.close($el);\n $scope.createEditOpen = false;\n return $rootscope.$broadcast(\"sprintform:remove:success\", $scope.newSprint);\n };\n onError = function() {\n askResponse.finish(false);\n return $confirm.notify(\"error\");\n };\n return $repo.remove($scope.newSprint).then(onSuccess, onError);\n };\n })(this));\n };\n getLastSprint = function() {\n var openSprints, sortedSprints;\n openSprints = _.filter($scope.sprints, function(sprint) {\n return !sprint.closed;\n });\n sortedSprints = _.sortBy(openSprints, function(sprint) {\n return moment(sprint.estimated_finish, 'YYYY-MM-DD').format('X');\n });\n return sortedSprints[sortedSprints.length - 1];\n };\n openFn = function(cb) {\n return $scope.$applyAsync(function() {\n return $timeout(function() {\n return cb();\n }, 0);\n });\n };\n $scope.$on(\"sprintform:create\", function(event, projectId, uss) {\n $scope.createEditOpen = true;\n return openFn(function() {\n var estimatedFinish, estimatedStart, lastSprint, lastSprintNameDom, prettyDate, text;\n ussToAdd = uss;\n resetSprint();\n form = $el.find(\"form\").checksley();\n form.reset();\n createSprint = true;\n prettyDate = $translate.instant(\"COMMON.PICKERDATE.FORMAT\");\n $scope.newSprint.project = projectId;\n $scope.newSprint.name = null;\n $scope.newSprint.slug = null;\n lastSprint = getLastSprint();\n estimatedStart = moment();\n if (lastSprint) {\n estimatedStart = moment(lastSprint.estimated_finish);\n } else if ($scope.newSprint.estimated_start) {\n estimatedStart = moment($scope.newSprint.estimated_start);\n }\n $scope.newSprint.estimated_start = estimatedStart.format(prettyDate);\n estimatedFinish = moment().add(2, \"weeks\");\n if (lastSprint) {\n estimatedFinish = moment(lastSprint.estimated_finish).add(2, \"weeks\");\n } else if ($scope.newSprint.estimated_finish) {\n estimatedFinish = moment($scope.newSprint.estimated_finish);\n }\n $scope.newSprint.estimated_finish = estimatedFinish.format(prettyDate);\n lastSprintNameDom = $el.find(\".last-sprint-name\");\n if ((lastSprint != null ? lastSprint.name : void 0) != null) {\n text = $translate.instant(\"LIGHTBOX.ADD_EDIT_SPRINT.LAST_SPRINT_NAME\", {\n lastSprint: lastSprint.name\n });\n lastSprintNameDom.html(text);\n }\n $el.find(\".delete-sprint\").addClass(\"hidden\");\n text = $translate.instant(\"LIGHTBOX.ADD_EDIT_SPRINT.TITLE\");\n $el.find(\".title\").text(text);\n text = $translate.instant(\"COMMON.CREATE\");\n $el.find(\".button-green\").text(text);\n lightboxService.open($el);\n $el.find(\".sprint-name\").focus();\n return $el.find(\".last-sprint-name\").removeClass(\"disappear\");\n });\n });\n $scope.$on(\"sprintform:edit\", function(ctx, sprint) {\n $scope.createEditOpen = true;\n return openFn(function() {\n var editSprint, prettyDate, save;\n resetSprint();\n createSprint = false;\n prettyDate = $translate.instant(\"COMMON.PICKERDATE.FORMAT\");\n $scope.$apply(function() {\n $scope.newSprint = sprint.realClone();\n $scope.newSprint.estimated_start = moment($scope.newSprint.estimated_start).format(prettyDate);\n return $scope.newSprint.estimated_finish = moment($scope.newSprint.estimated_finish).format(prettyDate);\n });\n if (projectService.project.get('my_permissions').indexOf('delete_milestone') > -1) {\n $el.find(\".delete-sprint\").removeClass(\"hidden\");\n }\n editSprint = $translate.instant(\"BACKLOG.EDIT_SPRINT\");\n $el.find(\".title\").text(editSprint);\n save = $translate.instant(\"COMMON.SAVE\");\n $el.find(\".button-green\").text(save);\n lightboxService.open($el);\n $el.find(\".sprint-name\").focus().select();\n return $el.find(\".last-sprint-name\").addClass(\"disappear\");\n });\n });\n $el.on(\"keyup\", \".sprint-name\", function(event) {\n if ($el.find(\".sprint-name\").val().length > 0 || hasErrors) {\n return $el.find(\".last-sprint-name\").addClass(\"disappear\");\n } else {\n return $el.find(\".last-sprint-name\").removeClass(\"disappear\");\n }\n });\n $el.on(\"submit\", \"form\", submit);\n $el.on(\"click\", \".delete-sprint\", function(event) {\n event.preventDefault();\n return remove();\n });\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n return resetSprint();\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLbCreateEditSprint\", [\"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$rootScope\", \"lightboxService\", \"$tgLoading\", \"$translate\", \"tgProjectService\", \"$timeout\", CreateEditSprint]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var BacklogController, BacklogDirective, BurndownBacklogGraphDirective, TgBacklogProgressBarDirective, ToggleBurndownVisibility, UsEditSelector, UsPointsDirective, UsRolePointsSelectorDirective, bindMethods, bindOnce, generateHash, groupBy, mixOf, module, scopeDefer, taiga, timeout,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n scopeDefer = this.taiga.scopeDefer;\n\n bindOnce = this.taiga.bindOnce;\n\n groupBy = this.taiga.groupBy;\n\n timeout = this.taiga.timeout;\n\n bindMethods = this.taiga.bindMethods;\n\n generateHash = this.taiga.generateHash;\n\n module = angular.module(\"taigaBacklog\");\n\n BacklogController = (function(superClass) {\n extend(BacklogController, superClass);\n\n BacklogController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"tgAppMetaService\", \"$tgNavUrls\", \"$tgEvents\", \"$tgAnalytics\", \"$translate\", \"$tgLoading\", \"tgResources\", \"$tgQueueModelTransformation\", \"tgErrorHandlingService\", \"$tgStorage\", \"tgFilterRemoteStorageService\", \"tgProjectService\", \"tgLoader\"];\n\n BacklogController.prototype.storeCustomFiltersName = 'backlog-custom-filters';\n\n BacklogController.prototype.storeFiltersName = 'backlog-filters';\n\n BacklogController.prototype.backlogOrder = {};\n\n BacklogController.prototype.milestonesOrder = {};\n\n BacklogController.prototype.newUs = [];\n\n BacklogController.prototype.validQueryParams = ['exclude_status', 'status', 'exclude_tags', 'tags', 'exclude_assigned_users', 'assigned_users', 'exclude_role', 'role', 'exclude_epic', 'epic', 'exclude_owner', 'owner'];\n\n function BacklogController(scope1, rootscope, repo, confirm, rs, params1, q, location, appMetaService, navUrls, events, analytics, translate, loading, rs2, modelTransform, errorHandlingService, storage, filterRemoteStorageService, projectService, tgLoader) {\n var promise;\n this.scope = scope1;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params1;\n this.q = q;\n this.location = location;\n this.appMetaService = appMetaService;\n this.navUrls = navUrls;\n this.events = events;\n this.analytics = analytics;\n this.translate = translate;\n this.loading = loading;\n this.rs2 = rs2;\n this.modelTransform = modelTransform;\n this.errorHandlingService = errorHandlingService;\n this.storage = storage;\n this.filterRemoteStorageService = filterRemoteStorageService;\n this.projectService = projectService;\n this.tgLoader = tgLoader;\n bindMethods(this);\n this.backlogOrder = {};\n this.milestonesOrder = {};\n this.page = 1;\n this.disablePagination = false;\n this.firstLoadComplete = false;\n this.translationData = {\n q: this.filterQ\n };\n this.scope.userstories = [];\n this.totalUserStories = 0;\n this.pendingDrag = [];\n this.scope.noSwimlaneUserStories = false;\n this.scope.swimlanesList = Immutable.List();\n if (this.applyStoredFilters(this.params.pslug, \"backlog-filters\", this.validQueryParams)) {\n return;\n }\n this.scope.sectionName = this.translate.instant(\"BACKLOG.SECTION_NAME\");\n this.showTags = true;\n this.activeFilters = false;\n this.scope.showGraphPlaceholder = null;\n this.displayVelocity = false;\n this.initializeEventHandlers();\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n var description, title;\n _this.loadSwimlanes();\n _this.firstLoadComplete = true;\n title = _this.translate.instant(\"BACKLOG.PAGE_TITLE\", {\n projectName: _this.scope.project.name\n });\n description = _this.translate.instant(\"BACKLOG.PAGE_DESCRIPTION\", {\n projectName: _this.scope.project.name,\n projectDescription: _this.scope.project.description\n });\n _this.appMetaService.setAll(title, description);\n if (_this.rs.userstories.getShowTags(_this.scope.projectId)) {\n _this.showTags = true;\n return _this.scope.$broadcast(\"showTags\", _this.showTags);\n }\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n BacklogController.prototype.preloadUsIds = function() {\n var loadNextPage, page, usIds;\n page = 1;\n usIds = [];\n loadNextPage = (function(_this) {\n return function() {\n var lastLoadUserstoriesParams, params, promise;\n lastLoadUserstoriesParams = Object.assign({}, _this.lastLoadUserstoriesParams);\n params = Object.assign(lastLoadUserstoriesParams, {\n page: page,\n only_ref: true\n });\n promise = _this.rs.userstories.listUnassigned(_this.scope.projectId, params, 100, false);\n return promise.then(function(result) {\n var header, userstories;\n userstories = result[0];\n header = result[1];\n usIds = usIds.concat(userstories.map(function(us) {\n return us.ref;\n }));\n _this.rs.userstories.storeBacklog(_this.scope.projectId, usIds);\n if (header('x-pagination-next')) {\n page++;\n return loadNextPage();\n }\n });\n };\n })(this);\n if (this.disablePagination) {\n usIds = this.scope.userstories.map(function(us) {\n return us.ref;\n });\n return this.rs.userstories.storeBacklog(this.scope.projectId, usIds);\n } else {\n return loadNextPage();\n }\n };\n\n BacklogController.prototype.filtersReloadContent = function() {\n return this.loadUserstories(true);\n };\n\n BacklogController.prototype.initializeEventHandlers = function() {\n var load;\n load = (function(_this) {\n return function() {\n _this.loadUserstories(true);\n _this.loadProjectStats();\n return _this.rootscope.$broadcast(\"filters:update\");\n };\n })(this);\n this.scope.$on(\"usform:bulk:success\", (function(_this) {\n return function(event, els, position) {\n if (position == null) {\n position = 'bottom';\n }\n _this.newUs = _.map(els, function(it) {\n return it.id;\n });\n if (position === 'top') {\n _this.moveUsToTopOfBacklog(els).then(function() {\n return load();\n });\n } else {\n load();\n }\n return _this.analytics.trackEvent(\"userstory\", \"create\", \"bulk create userstory on backlog\", 1);\n };\n })(this));\n this.scope.$on(\"sprintform:create:success\", (function(_this) {\n return function(e, data, ussToMove) {\n _this.loadSprints().then(function() {\n return _this.scope.$broadcast(\"sprintform:create:success:callback\", ussToMove);\n });\n _this.loadProjectStats();\n _this.confirm.notify(\"success\");\n return _this.analytics.trackEvent(\"sprint\", \"create\", \"create sprint on backlog\", 1);\n };\n })(this));\n this.scope.$on(\"usform:new:success\", (function(_this) {\n return function(event, el, position) {\n if (position == null) {\n position = 'bottom';\n }\n _this.newUs = [el.id];\n if (position === 'top') {\n _this.moveUsToTopOfBacklog(el).then(function() {\n return load();\n });\n } else {\n load();\n }\n return _this.analytics.trackEvent(\"userstory\", \"create\", \"create userstory on backlog\", 1);\n };\n })(this));\n this.scope.$on(\"sprintform:edit:success\", (function(_this) {\n return function() {\n return _this.loadProjectStats();\n };\n })(this));\n this.scope.$on(\"sprintform:remove:success\", (function(_this) {\n return function(event, sprint) {\n if (_this.displayVelocity) {\n _this.toggleVelocityForecasting();\n }\n _this.loadSprints();\n _this.loadProjectStats();\n _this.loadUserstories(true);\n if (sprint.closed) {\n _this.loadClosedSprints();\n }\n return _this.rootscope.$broadcast(\"filters:update\");\n };\n })(this));\n this.scope.$on(\"usform:edit:success\", (function(_this) {\n return function(event, data) {\n var index;\n index = _.findIndex(_this.scope.userstories, function(us) {\n return us.id === data.id;\n });\n _this.scope.userstories[index] = data;\n return _this.rootscope.$broadcast(\"filters:update\");\n };\n })(this));\n this.scope.$on(\"filters:update\", (function(_this) {\n return function() {\n var milestone;\n return _this.generateFilters(milestone = \"null\");\n };\n })(this));\n this.scope.$on(\"sprint:us:move\", this.moveUs);\n this.scope.$on(\"sprint:us:moved\", (function(_this) {\n return function() {\n _this.resetFirstStoryIndicator();\n return _this.rootscope.$broadcast(\"filters:update\");\n };\n })(this));\n this.scope.$on(\"backlog:load-closed-sprints\", this.loadClosedSprints);\n return this.scope.$on(\"backlog:unload-closed-sprints\", this.unloadClosedSprints);\n };\n\n BacklogController.prototype.initializeSubscription = function() {\n var routingKey1, routingKey2;\n routingKey1 = \"changes.project.\" + this.scope.projectId + \".userstories\";\n this.events.subscribe(this.scope, routingKey1, (function(_this) {\n return function(message) {\n _this.loadAllPaginatedUserstories();\n return _this.loadSprints();\n };\n })(this));\n routingKey2 = \"changes.project.\" + this.scope.projectId + \".milestones\";\n return this.events.subscribe(this.scope, routingKey2, (function(_this) {\n return function(message) {\n _this.loadSprints();\n _this.loadClosedSprints();\n return _this.loadProjectStats();\n };\n })(this), {\n selfNotification: true\n });\n };\n\n BacklogController.prototype.toggleShowTags = function() {\n return this.scope.$apply((function(_this) {\n return function() {\n _this.showTags = !_this.showTags;\n return _this.rs.userstories.storeShowTags(_this.scope.projectId, _this.showTags);\n };\n })(this));\n };\n\n BacklogController.prototype.toggleActiveFilters = function() {\n return this.activeFilters = !this.activeFilters;\n };\n\n BacklogController.prototype.toggleVelocityForecasting = function() {\n this.displayVelocity = !this.displayVelocity;\n if (!this.displayVelocity) {\n this.scope.visibleUserStories = _.map(this.scope.userstories, function(it) {\n return it.ref;\n });\n } else {\n this.calculateForecasting();\n this.scope.visibleUserStories = _.map(this.forecastedStories, function(it) {\n return it.ref;\n });\n }\n return scopeDefer(this.scope, (function(_this) {\n return function() {\n return _this.scope.$broadcast(\"userstories:loaded\");\n };\n })(this));\n };\n\n BacklogController.prototype.loadProjectStats = function() {\n return this.rs.projects.stats(this.scope.projectId).then((function(_this) {\n return function(stats) {\n var totalPoints;\n _this.scope.stats = stats;\n totalPoints = stats.total_points ? stats.total_points : stats.defined_points;\n if (totalPoints) {\n _this.scope.stats.completedPercentage = Math.round(100 * stats.closed_points / totalPoints);\n } else {\n _this.scope.stats.completedPercentage = 0;\n }\n _this.scope.showGraphPlaceholder = !((stats.total_points != null) && (stats.total_milestones != null));\n _this.calculateForecasting();\n return stats;\n };\n })(this));\n };\n\n BacklogController.prototype.setMilestonesOrder = function(sprints) {\n var it, j, len, results, sprint;\n results = [];\n for (j = 0, len = sprints.length; j < len; j++) {\n sprint = sprints[j];\n this.milestonesOrder[sprint.id] = {};\n results.push((function() {\n var l, len1, ref1, results1;\n ref1 = sprint.user_stories;\n results1 = [];\n for (l = 0, len1 = ref1.length; l < len1; l++) {\n it = ref1[l];\n results1.push(this.milestonesOrder[sprint.id][it.id] = it.sprint_order);\n }\n return results1;\n }).call(this));\n }\n return results;\n };\n\n BacklogController.prototype.unloadClosedSprints = function() {\n return this.scope.$apply((function(_this) {\n return function() {\n _this.scope.closedSprints = [];\n return _this.rootscope.$broadcast(\"closed-sprints:reloaded\", []);\n };\n })(this));\n };\n\n BacklogController.prototype.loadClosedSprints = function() {\n var params;\n params = {\n closed: true\n };\n return this.rs.sprints.list(this.scope.projectId, params).then((function(_this) {\n return function(result) {\n var j, len, sprint, sprints;\n sprints = result.milestones;\n _this.setMilestonesOrder(sprints);\n _this.scope.totalClosedMilestones = result.closed;\n for (j = 0, len = sprints.length; j < len; j++) {\n sprint = sprints[j];\n sprint.user_stories = _.sortBy(sprint.user_stories, \"sprint_order\");\n }\n _this.scope.closedSprints = sprints;\n _this.scope.closedSprintsById = groupBy(sprints, function(x) {\n return x.id;\n });\n _this.rootscope.$broadcast(\"closed-sprints:reloaded\", sprints);\n return sprints;\n };\n })(this));\n };\n\n BacklogController.prototype.loadSwimlanes = function() {\n if (this.scope.project.swimlanes) {\n return this.scope.project.swimlanes.forEach((function(_this) {\n return function(swimlane) {\n if (!_this.scope.swimlanesList.includes(swimlane)) {\n return _this.scope.swimlanesList = _this.scope.swimlanesList.push(swimlane);\n }\n };\n })(this));\n }\n };\n\n BacklogController.prototype.loadSprints = function() {\n var params;\n params = {\n closed: false\n };\n return this.rs.sprints.list(this.scope.projectId, params).then((function(_this) {\n return function(result) {\n var j, len, sprint, sprints;\n sprints = result.milestones;\n _this.setMilestonesOrder(sprints);\n _this.scope.totalMilestones = sprints;\n _this.scope.totalClosedMilestones = result.closed;\n _this.scope.totalOpenMilestones = result.open;\n _this.scope.totalMilestones = _this.scope.totalOpenMilestones + _this.scope.totalClosedMilestones;\n for (j = 0, len = sprints.length; j < len; j++) {\n sprint = sprints[j];\n sprint.user_stories = _.sortBy(sprint.user_stories, \"sprint_order\");\n }\n _this.scope.sprints = sprints;\n if (!_this.scope.closedSprints) {\n _this.scope.closedSprints = [];\n }\n _this.scope.sprintsCounter = sprints.length;\n _this.scope.sprintsById = groupBy(sprints, function(x) {\n return x.id;\n });\n _this.rootscope.$broadcast(\"sprints:loaded\", sprints);\n _this.scope.currentSprint = _this.findCurrentSprint();\n return sprints;\n };\n })(this));\n };\n\n BacklogController.prototype.openSprints = function() {\n return _.filter(this.scope.sprints, (function(_this) {\n return function(sprint) {\n return !sprint.closed;\n };\n })(this));\n };\n\n BacklogController.prototype.loadAllPaginatedUserstories = function() {\n var page;\n page = this.page;\n return this.loadUserstories(true, this.scope.userstories.length).then((function(_this) {\n return function() {\n return _this.page = page;\n };\n })(this));\n };\n\n BacklogController.prototype.loadUserstories = function(resetPagination, pageSize) {\n var params, promise;\n if (resetPagination == null) {\n resetPagination = false;\n }\n if (!this.scope.projectId) {\n return null;\n }\n this.loadingUserstories = true;\n this.disablePagination = true;\n params = _.pick(_.clone(this.location.search()), this.validQueryParams);\n this.rs.userstories.storeQueryParams(this.scope.projectId, params);\n if (resetPagination) {\n this.page = 1;\n }\n params.page = this.page;\n params.q = this.filterQ;\n this.lastLoadUserstoriesParams = params;\n this.translationData.q = params.q;\n promise = this.rs.userstories.listUnassigned(this.scope.projectId, params, pageSize);\n return promise.then((function(_this) {\n return function(result) {\n var header, userstories, uss;\n userstories = result[0];\n header = result[1];\n if (resetPagination) {\n _this.scope.userstories = [];\n }\n uss = _this.parseLoadUserstoriesResponse(userstories, header);\n if (_this.page <= 2) {\n _this.preloadUsIds();\n }\n return uss;\n };\n })(this));\n };\n\n BacklogController.prototype.parseLoadUserstoriesResponse = function(userstories, header) {\n var it, j, len, ref1;\n this.scope.userstories = this.scope.userstories.concat(_.sortBy(userstories, \"backlog_order\"));\n this.resetFirstStoryIndicator();\n this.scope.visibleUserStories = _.map(this.scope.userstories, function(it) {\n return it.ref;\n });\n ref1 = this.scope.userstories;\n for (j = 0, len = ref1.length; j < len; j++) {\n it = ref1[j];\n if (this.newUs.includes(it.id)) {\n it[\"new\"] = true;\n }\n this.backlogOrder[it.id] = it.backlog_order;\n }\n this.loadingUserstories = false;\n if (header('x-pagination-next')) {\n this.disablePagination = false;\n this.page++;\n }\n if (header('Taiga-Info-Backlog-Total-Userstories')) {\n this.totalUserStories = header('Taiga-Info-Backlog-Total-Userstories');\n }\n if (header('Taiga-Info-Userstories-Without-Swimlane')) {\n this.scope.noSwimlaneUserStories = header('Taiga-Info-Userstories-Without-Swimlane');\n }\n this.rootscope.$broadcast(\"backlog:userstories:loaded\");\n scopeDefer(this.scope, (function(_this) {\n return function() {\n _this.scope.$broadcast(\"userstories:loaded\");\n return _this.tgLoader.pageLoaded();\n };\n })(this));\n return userstories;\n };\n\n BacklogController.prototype.loadBacklog = function() {\n return this.q.all([this.loadProjectStats(), this.loadSprints(), this.loadUserstories()]).then(this.calculateForecasting);\n };\n\n BacklogController.prototype.getLinkParams = function() {\n var ParsedLastLoadUserstoriesParams, lastLoadUserstoriesParams;\n lastLoadUserstoriesParams = this.lastLoadUserstoriesParams;\n if (lastLoadUserstoriesParams) {\n delete lastLoadUserstoriesParams['page'];\n lastLoadUserstoriesParams = _.pickBy(lastLoadUserstoriesParams, _.identity);\n ParsedLastLoadUserstoriesParams = {};\n Object.keys(lastLoadUserstoriesParams).forEach(function(key) {\n return ParsedLastLoadUserstoriesParams['backlog-' + key] = lastLoadUserstoriesParams[key];\n });\n ParsedLastLoadUserstoriesParams['no-milestone'] = 1;\n return ParsedLastLoadUserstoriesParams;\n } else {\n return {};\n }\n };\n\n BacklogController.prototype.sprintTotalPoints = function(sprint) {\n var j, len, points, ref1, us;\n points = 0;\n ref1 = sprint.user_stories;\n for (j = 0, len = ref1.length; j < len; j++) {\n us = ref1[j];\n if (us.milestone === sprint.id) {\n points += us.total_points;\n }\n }\n return points;\n };\n\n BacklogController.prototype.calculateForecasting = function() {\n var backlog_points_sum, current_sum, j, len, ref1, results, stats, total_points, us;\n stats = this.scope.stats;\n total_points = stats.total_points;\n current_sum = stats.assigned_points;\n backlog_points_sum = 0;\n this.forecastedStories = [];\n this.scope.forecastNewSprint = true;\n if (this.scope.sprints && this.scope.sprints.length) {\n backlog_points_sum = this.sprintTotalPoints(this.scope.sprints[0]);\n if (stats.speed > 0 && backlog_points_sum > stats.speed) {\n backlog_points_sum = 0;\n } else {\n this.scope.forecastNewSprint = false;\n }\n }\n ref1 = this.scope.userstories;\n results = [];\n for (j = 0, len = ref1.length; j < len; j++) {\n us = ref1[j];\n current_sum += us.total_points;\n backlog_points_sum += us.total_points;\n this.forecastedStories.push(us);\n if (stats.speed > 0 && backlog_points_sum > stats.speed) {\n break;\n } else {\n results.push(void 0);\n }\n }\n return results;\n };\n\n BacklogController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n if (!project.is_backlog_activated) {\n this.errorHandlingService.permissionDenied();\n }\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.closedMilestones = !!project.total_closed_milestones;\n this.scope.$emit('project:loaded', project);\n this.scope.points = _.sortBy(project.points, \"order\");\n this.scope.pointsById = groupBy(project.points, function(x) {\n return x.id;\n });\n this.scope.usStatusById = groupBy(project.us_statuses, function(x) {\n return x.id;\n });\n this.scope.usStatusList = _.sortBy(project.us_statuses, \"id\");\n this.resetFirstStoryIndicator();\n return project;\n };\n\n BacklogController.prototype.loadInitialData = function() {\n var project;\n project = this.loadProject();\n this.fillUsersAndRoles(project.members, project.roles);\n this.initializeSubscription();\n if (this.rs.userstories.getShowTags(this.scope.projectId) === false) {\n this.showTags = false;\n }\n return this.loadBacklog().then((function(_this) {\n return function() {\n var milestone;\n return _this.generateFilters(milestone = \"null\");\n };\n })(this)).then((function(_this) {\n return function() {\n return _this.scope.$emit(\"backlog:loaded\");\n };\n })(this));\n };\n\n BacklogController.prototype.toggleTags = function() {\n return this.rs.userstories.storeShowTags(this.scope.projectId, this.showTags);\n };\n\n BacklogController.prototype.prepareBulkUpdateData = function(uses, field) {\n if (field == null) {\n field = \"backlog_order\";\n }\n return _.map(uses, function(x) {\n return {\n \"us_id\": x.id,\n \"order\": x[field]\n };\n });\n };\n\n BacklogController.prototype.resetFirstStoryIndicator = function() {\n if (this.scope.userstories.length > 0) {\n return this.scope.first_us_in_backlog = this.scope.userstories[0].id;\n }\n };\n\n BacklogController.prototype.moveUsToTopOfBacklog = function(uss) {\n var nextUs, us;\n if (!Array.isArray(uss)) {\n uss = [uss];\n }\n us = uss[0];\n if (this.scope.userstories.length) {\n nextUs = this.scope.userstories[0].id;\n return this.moveUs(\"sprint:us:move\", uss, 0, null, null, nextUs);\n }\n return Promise.resolve();\n };\n\n BacklogController.prototype.moveUs = function(ctx, usList, newUsIndex, newSprintId, previousUs, nextUs) {\n var bulkUserstories, currentSprintId, j, key, l, len, len1, len2, m, newSprint, oldSprintId, position, project, promise, sprint, targetList, us;\n oldSprintId = usList[0].milestone;\n project = usList[0].project;\n if (oldSprintId) {\n sprint = this.scope.sprintsById[oldSprintId] || this.scope.closedSprintsById[oldSprintId];\n }\n if (newSprintId) {\n newSprint = this.scope.sprintsById[newSprintId] || this.scope.closedSprintsById[newSprintId];\n }\n currentSprintId = newSprintId !== oldSprintId ? newSprintId : oldSprintId;\n bulkUserstories = _.map(usList, function(it) {\n return it.id;\n });\n if (ctx) {\n this.pendingDrag.push({\n usList: usList,\n newUsIndex: newUsIndex,\n newSprintId: newSprintId,\n previousUs: previousUs,\n nextUs: nextUs\n });\n if (newSprintId !== oldSprintId) {\n if (sprint) {\n usList.forEach((function(_this) {\n return function(us, index) {\n return _.remove(sprint.user_stories, function(it) {\n return it.id === us.id;\n });\n };\n })(this));\n }\n if (newSprintId === null) {\n for (key = j = 0, len = usList.length; j < len; key = ++j) {\n us = usList[key];\n _.remove(sprint.user_stories, function(it) {\n return it.id === us.id;\n });\n }\n usList.forEach((function(_this) {\n return function(us, index) {\n return _this.scope.userstories.splice(newUsIndex + index, 0, us);\n };\n })(this));\n } else {\n for (l = 0, len1 = usList.length; l < len1; l++) {\n us = usList[l];\n _.remove(this.scope.userstories, function(it) {\n return it.id === us.id;\n });\n }\n usList.forEach((function(_this) {\n return function(us, index) {\n us.milestone = newSprintId;\n newSprint.user_stories.splice(newUsIndex, 0, us);\n newSprint = Object.assign(newSprint, {\n user_stories: newSprint.user_stories.slice()\n });\n return _this.scope.sprints = _this.scope.sprints.map(function(sprint) {\n return Object.assign(sprint);\n });\n };\n })(this));\n }\n } else {\n if (newSprintId) {\n targetList = newSprint.user_stories;\n } else {\n targetList = this.scope.userstories;\n }\n for (m = 0, len2 = usList.length; m < len2; m++) {\n us = usList[m];\n _.remove(targetList, function(it) {\n return it.id === us.id;\n });\n }\n position = 0;\n if (previousUs) {\n position = targetList.findIndex(function(us) {\n return us.id === previousUs;\n });\n } else if (nextUs) {\n position = targetList.findIndex(function(us) {\n return us.id === previousUs;\n });\n }\n position++;\n usList.forEach((function(_this) {\n return function(us, index) {\n return targetList.splice(position + index, 0, us);\n };\n })(this));\n }\n this.scope.visibleUserStories = _.map(this.scope.userstories, function(it) {\n return it.ref;\n });\n }\n if (ctx && this.pendingDrag.length > 1) {\n return;\n }\n promise = this.rs.userstories.bulkUpdateBacklogOrder(project, currentSprintId, previousUs, nextUs, bulkUserstories);\n promise.then((function(_this) {\n return function(result) {\n var len3, n, ref1, updatedUs;\n ref1 = result.data;\n for (n = 0, len3 = ref1.length; n < len3; n++) {\n updatedUs = ref1[n];\n usList.forEach(function(us, index) {\n if (us.id === updatedUs.id) {\n us.milestone = updatedUs.milestone;\n return us.backlog_order = updatedUs.backlog_order;\n }\n });\n }\n _this.pendingDrag.shift();\n if (_this.pendingDrag.length) {\n return _this.scope.$applyAsync(function() {\n return _this.moveUs(null, _this.pendingDrag[0].usList, _this.pendingDrag[0].newUsIndex, _this.pendingDrag[0].newSprintId, _this.pendingDrag[0].previousUs, _this.pendingDrag[0].nextUs);\n });\n } else {\n _this.rootscope.$broadcast(\"sprint:us:moved\");\n if (!_this.events.connected) {\n _this.loadSprints();\n _this.loadClosedSprints();\n _this.loadProjectStats();\n }\n if (_this.scope.closedSprintsById && _this.scope.closedSprintsById[oldSprintId]) {\n return _this.rootscope.$broadcast(\"backlog:load-closed-sprints\");\n }\n }\n };\n })(this));\n return promise;\n };\n\n BacklogController.prototype.updateUserStoryStatus = function() {\n return this.generateFilters().then((function(_this) {\n return function() {\n _this.rootscope.$broadcast(\"filters:update\");\n _this.loadProjectStats();\n if (_this.isFilterDataTypeSelected('status')) {\n return _this.filtersReloadContent();\n }\n };\n })(this));\n };\n\n BacklogController.prototype.editUserStory = function(projectId, ref, $event) {\n return this.rs.userstories.getByRef(projectId, ref).then((function(_this) {\n return function(us) {\n return _this.rs2.attachments.list(\"us\", us.id, projectId).then(function(attachments) {\n return _this.rootscope.$broadcast(\"genericform:edit\", {\n 'objType': 'us',\n 'obj': us,\n 'attachments': attachments.toJS()\n });\n });\n };\n })(this));\n };\n\n BacklogController.prototype.deleteUserStory = function(us) {\n var message, title;\n title = this.translate.instant(\"US.TITLE_DELETE_ACTION\", {\n projectName: this.scope.project.name\n });\n message = this.translate.instant(\"US.TITLE_DELETE_MESSAGE\", {\n subject: us.subject\n });\n return this.confirm.askOnDelete(title, message, '').then((function(_this) {\n return function(askResponse) {\n var promise;\n _this.scope.userstories = _.without(_this.scope.userstories, us);\n promise = _this.repo.remove(us);\n promise.then(function() {\n askResponse.finish();\n return _this.q.all([_this.loadProjectStats(), _this.loadSprints(), _this.resetFirstStoryIndicator()]);\n });\n return promise.then(null, function() {\n askResponse.finish(false);\n return _this.confirm.notify(\"error\");\n });\n };\n })(this));\n };\n\n BacklogController.prototype.addNewUs = function(type) {\n switch (type) {\n case \"standard\":\n return this.rootscope.$broadcast(\"genericform:new\", {\n 'objType': 'us',\n 'project': this.scope.project\n });\n case \"bulk\":\n return this.rootscope.$broadcast(\"usform:bulk\", this.scope.projectId, this.scope.project.default_us_status);\n }\n };\n\n BacklogController.prototype.addNewSprint = function() {\n return this.rootscope.$broadcast(\"sprintform:create\", this.scope.projectId);\n };\n\n BacklogController.prototype.findCurrentSprint = function() {\n var currentDate;\n currentDate = new Date().getTime();\n return _.find(this.scope.sprints, function(sprint) {\n var end, start;\n start = moment(sprint.estimated_start, 'YYYY-MM-DD').format('x');\n end = moment(sprint.estimated_finish, 'YYYY-MM-DD').format('x');\n return currentDate >= start && currentDate <= end;\n });\n };\n\n BacklogController.prototype.addFilterBacklog = function(newFilter) {\n this.selectFilter(newFilter.category.dataType, newFilter.filter.id, false, newFilter.mode);\n this.filtersReloadContent();\n return this.generateFilters('null');\n };\n\n BacklogController.prototype.removeFilterBacklog = function(filter) {\n this.unselectFilter(filter.dataType, filter.id, false, filter.mode);\n this.filtersReloadContent();\n return this.generateFilters('null');\n };\n\n return BacklogController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin, taiga.UsFiltersMixin));\n\n module.controller(\"BacklogController\", BacklogController);\n\n BacklogDirective = function($repo, $rootscope, $translate, $rs) {\n var doomLineTemplate, link, linkDoomLine, linkFilters, linkToolbar, openFilterInit, showHideFilter, showHideTags;\n doomLineTemplate = _.template(\"
<%- text %>
\");\n linkDoomLine = function($scope, $el, $attrs, $ctrl) {\n var addDoomLineDom, getUsItems, reloadDoomLine, removeDoomlineDom;\n reloadDoomLine = function() {\n var current_sum, domElement, i, j, len, ref1, results, stats, total_points, us;\n if ($scope.displayVelocity) {\n removeDoomlineDom();\n }\n if (($scope.stats != null) && ($scope.stats.total_points != null) && $scope.stats.total_points !== 0 && ($scope.displayVelocity == null)) {\n removeDoomlineDom();\n stats = $scope.stats;\n total_points = stats.total_points;\n current_sum = stats.assigned_points;\n if (!$scope.userstories) {\n return;\n }\n ref1 = $scope.userstories;\n results = [];\n for (i = j = 0, len = ref1.length; j < len; i = ++j) {\n us = ref1[i];\n current_sum += us.total_points;\n if (current_sum > total_points) {\n domElement = $el.find('.backlog-table-body .us-item-row')[i];\n addDoomLineDom(domElement);\n break;\n } else {\n results.push(void 0);\n }\n }\n return results;\n }\n };\n removeDoomlineDom = function() {\n return $el.find(\".doom-line\").remove();\n };\n addDoomLineDom = function(element) {\n var text;\n text = $translate.instant(\"BACKLOG.DOOMLINE\");\n return $(element).before(doomLineTemplate({\n \"text\": text\n }));\n };\n getUsItems = function() {\n var rowElements;\n rowElements = $el.find('.backlog-table-body .us-item-row');\n return _.map(rowElements, function(x) {\n return angular.element(x);\n });\n };\n $scope.$on(\"userstories:loaded\", reloadDoomLine);\n $scope.$on(\"userstories:forecast\", removeDoomlineDom);\n $scope.$on(\"sprint:us:moved\", reloadDoomLine);\n return $scope.$watch(\"stats\", reloadDoomLine);\n };\n linkToolbar = function($scope, $el, $attrs, $ctrl) {\n var checkSelected, getUsToMove, lastChecked, moveToCurrentSprint, moveToLatestSprint, moveUssToSprint, shiftPressed;\n getUsToMove = function() {\n var ussDom;\n ussDom = $el.find(\".backlog-table-body input:checkbox:checked\");\n return _.map(ussDom, function(item) {\n var itemScope;\n item = $(item).closest('.tg-scope');\n itemScope = item.scope();\n itemScope.us.milestone = $scope.sprints[0].id;\n return itemScope.us;\n });\n };\n moveUssToSprint = function(selectedUss, sprint) {\n var data, extraPoints, totalExtraPoints, ussCurrent;\n ussCurrent = _($scope.userstories);\n $scope.userstories = ussCurrent.without.apply(ussCurrent, selectedUss).value();\n extraPoints = _.map(selectedUss, function(v, k) {\n return v.total_points;\n });\n totalExtraPoints = _.reduce(extraPoints, function(acc, num) {\n return acc + num;\n });\n sprint.user_stories = _.union(sprint.user_stories, selectedUss);\n sprint.total_points += totalExtraPoints;\n data = _.map(selectedUss, function(us) {\n return {\n us_id: us.id,\n order: us.sprint_order\n };\n });\n $rs.userstories.bulkUpdateMilestone($scope.project.id, $scope.sprints[0].id, data).then((function(_this) {\n return function() {\n $ctrl.loadSprints();\n $ctrl.loadProjectStats();\n $ctrl.toggleVelocityForecasting();\n return $ctrl.calculateForecasting();\n };\n })(this));\n return $el.find(\".move-to-sprint\").hide();\n };\n moveToCurrentSprint = function(selectedUss) {\n var sprint;\n sprint = $scope.currentSprint ? $scope.currentSprint : $scope.sprints[0];\n return moveUssToSprint(selectedUss, sprint);\n };\n moveToLatestSprint = function(selectedUss) {\n return moveUssToSprint(selectedUss, $scope.sprints[0]);\n };\n $scope.$on(\"sprintform:create:success:callback\", function(e, ussToMove) {\n if (ussToMove) {\n return _.partial(moveToCurrentSprint, ussToMove)();\n }\n });\n shiftPressed = false;\n lastChecked = null;\n checkSelected = function(target) {\n var moveToSprintDom, selectedUsDom;\n lastChecked = target.closest(\".us-item-row\");\n target.closest('.us-item-row').toggleClass('ui-multisortable-multiple');\n moveToSprintDom = $el.find(\".move-to-sprint\");\n selectedUsDom = $el.find(\".backlog-table-body input:checkbox:checked\");\n if (selectedUsDom.length > 0 && $scope.sprints.length > 0) {\n return moveToSprintDom.css('display', 'flex');\n } else {\n return moveToSprintDom.hide();\n }\n };\n $(window).on(\"keydown.shift-pressed keyup.shift-pressed\", function(event) {\n shiftPressed = !!event.shiftKey;\n return true;\n });\n $el.on(\"change\", \".backlog-table-body input:checkbox\", function(event) {\n var current, elements, nextAll, prevAll, target;\n if (lastChecked && shiftPressed) {\n elements = [];\n current = $(event.currentTarget).closest(\".us-item-row\");\n nextAll = lastChecked.nextAll();\n prevAll = lastChecked.prevAll();\n if (_.some(nextAll, function(next) {\n return next === current[0];\n })) {\n elements = lastChecked.nextUntil(current);\n } else if (_.some(prevAll, function(prev) {\n return prev === current[0];\n })) {\n elements = lastChecked.prevUntil(current);\n }\n _.map(elements, function(elm) {\n var input;\n input = $(elm).find(\"input:checkbox\");\n input.prop('checked', true);\n return checkSelected(input);\n });\n }\n target = angular.element(event.currentTarget);\n target.closest(\".us-item-row\").toggleClass('is-checked');\n return checkSelected(target);\n });\n $el.on(\"click\", \"#move-to-latest-sprint\", (function(_this) {\n return function(event) {\n var ussToMove;\n ussToMove = getUsToMove();\n return $scope.$apply(_.partial(moveToLatestSprint, ussToMove));\n };\n })(this));\n $el.on(\"click\", \"#move-to-current-sprint\", (function(_this) {\n return function(event) {\n var ussToMove;\n ussToMove = getUsToMove();\n return $scope.$apply(_.partial(moveToCurrentSprint, ussToMove));\n };\n })(this));\n $el.on(\"change\", \"#show-tags > input\", function(event) {\n event.preventDefault();\n $ctrl.toggleShowTags();\n return showHideTags($ctrl);\n });\n return $el.on(\"click\", \".forecasting-add-sprint\", function(event) {\n var ussToMove, ussToMoveList;\n ussToMoveList = $ctrl.forecastedStories;\n if (!$scope.forecastNewSprint) {\n ussToMove = _.map(ussToMoveList, function(us, index) {\n us.milestone = $scope.sprints[0].id;\n us.order = index;\n return us;\n });\n return $scope.$apply(_.partial(moveToCurrentSprint, ussToMove));\n } else {\n ussToMove = _.map(ussToMoveList, function(us, index) {\n us.order = index;\n return us;\n });\n return $rootscope.$broadcast(\"sprintform:create\", $scope.projectId, ussToMove);\n }\n });\n };\n showHideTags = function($ctrl) {\n var elm;\n elm = angular.element(\"#show-tags\");\n if ($ctrl.showTags) {\n return elm.addClass(\"active\");\n } else {\n return elm.removeClass(\"active\");\n }\n };\n openFilterInit = function($scope, $el, $ctrl) {\n var sidebar;\n sidebar = $el.find(\".backlog-filter\");\n sidebar.addClass(\"active\");\n return $ctrl.activeFilters = true;\n };\n showHideFilter = function($scope, $el, $ctrl) {\n var filter, target;\n filter = $el.find(\".backlog-filter\");\n target = angular.element(\"#show-filters-button\");\n filter.toggleClass(\"active\");\n target.toggleClass(\"active\");\n return $ctrl.toggleActiveFilters();\n };\n linkFilters = function($scope, $el, $attrs, $ctrl) {\n $scope.filtersSearch = {};\n return $el.on(\"click\", \"#show-filters-button\", function(event) {\n event.preventDefault();\n return $scope.$apply(function() {\n return showHideFilter($scope, $el, $ctrl);\n });\n });\n };\n link = function($scope, $el, $attrs, $rootscope) {\n var $ctrl, filters;\n $ctrl = $el.controller();\n linkToolbar($scope, $el, $attrs, $ctrl);\n linkFilters($scope, $el, $attrs, $ctrl);\n linkDoomLine($scope, $el, $attrs, $ctrl);\n filters = $ctrl.location.search();\n if (filters.status || filters.tags || filters.assigned_to || filters.owner) {\n openFilterInit($scope, $el, $ctrl);\n }\n $scope.$on(\"showTags\", function() {\n return showHideTags($ctrl);\n });\n return $scope.$on(\"$destroy\", function() {\n $el.off();\n return $(window).off(\".shift-pressed\");\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgBacklog\", [\"$tgRepo\", \"$rootScope\", \"$translate\", \"$tgResources\", BacklogDirective]);\n\n UsEditSelector = function($rootscope, $tgTemplate, $compile, $translate) {\n var link, mainTemplate;\n mainTemplate = $tgTemplate.get(\"backlog/us-edit-popover.html\", true);\n link = function($scope, $el, $attrs) {\n var $ctrl, removePopupOpenState;\n $ctrl = $el.controller();\n removePopupOpenState = function() {\n $el.find(\".js-popup-button\").removeClass('popover-open');\n return $(this).remove();\n };\n $el.on(\"click\", function(event) {\n var html;\n html = $compile(mainTemplate())($scope);\n $el.find(\".js-popup-button\").addClass('popover-open');\n $el.append(html);\n $el.find(\".us-option-popup\").popover().open(function() {\n return removePopupOpenState();\n });\n if (event.target.parentNode.classList.contains('first')) {\n return $el.find(\".us-option-popup\").addClass('first');\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUsEditSelector\", [\"$rootScope\", \"$tgTemplate\", \"$compile\", \"$translate\", UsEditSelector]);\n\n UsRolePointsSelectorDirective = function($rootscope, $template, $compile, $translate) {\n var link, selectionTemplate;\n selectionTemplate = $template.get(\"backlog/us-role-points-popover.html\", true);\n link = function($scope, $el, $attrs) {\n var removePopupOpenState;\n removePopupOpenState = function() {\n return $el.removeClass('popover-open');\n };\n bindOnce($scope, \"project\", function(project) {\n var numberOfRoles, roles;\n roles = _.filter(project.roles, \"computable\");\n numberOfRoles = _.size(roles);\n if (numberOfRoles > 1) {\n return $el.append($compile(selectionTemplate({\n \"roles\": roles\n }))($scope));\n } else {\n $el.find(\".icon-arrow-down\").remove();\n return $el.find(\".header-points\").addClass(\"not-clickable\");\n }\n });\n $scope.$on(\"uspoints:select\", function(ctx, roleId, roleName) {\n $el.find(\".popover\").popover().close();\n return $el.find(\".header-points\").html(\"\" + roleName);\n });\n $scope.$on(\"uspoints:clear-selection\", function(ctx, roleId) {\n var text;\n $el.find(\".popover\").popover().close();\n text = $translate.instant(\"COMMON.FIELDS.POINTS\");\n return $el.find(\".header-points\").text(text);\n });\n $el.on(\"click\", function(event) {\n var target;\n target = angular.element(event.target);\n if (target.is(\"span\") || target.is(\"div\")) {\n event.stopPropagation();\n }\n $el.addClass('popover-open');\n return $el.find(\".popover\").popover().open(function() {\n return removePopupOpenState();\n });\n });\n $el.on(\"click\", \".clear-selection\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n $rootscope.$broadcast(\"uspoints:clear-selection\");\n $el.find('.active-popover').removeClass('active-popover');\n return target.addClass('active-popover');\n });\n $el.on(\"click\", \".role\", function(event) {\n var rolScope, target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n $el.find('.active-popover').removeClass('active-popover');\n target.addClass('active-popover');\n rolScope = target.scope();\n return $rootscope.$broadcast(\"uspoints:select\", target.data(\"role-id\"), target.text());\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUsRolePointsSelector\", [\"$rootScope\", \"$tgTemplate\", \"$compile\", \"$translate\", UsRolePointsSelectorDirective]);\n\n UsPointsDirective = function($tgEstimationsService, $repo, $tgTemplate) {\n var link, rolesTemplate;\n rolesTemplate = $tgTemplate.get(\"common/estimation/us-points-roles-popover.html\", true);\n link = function($scope, $el, $attrs) {\n var $ctrl, bindClickElements, estimationProcess, filteringRoleId, renderRolesSelector, selectedRoleId, updatingSelectedRoleId;\n $ctrl = $el.controller();\n updatingSelectedRoleId = null;\n selectedRoleId = null;\n filteringRoleId = null;\n estimationProcess = null;\n $scope.$on(\"uspoints:select\", function(ctx, roleId, roleName) {\n var us;\n us = $scope.$eval($attrs.tgBacklogUsPoints);\n selectedRoleId = roleId;\n return estimationProcess.render();\n });\n $scope.$on(\"uspoints:clear-selection\", function(ctx) {\n var us;\n us = $scope.$eval($attrs.tgBacklogUsPoints);\n selectedRoleId = null;\n return estimationProcess.render();\n });\n $scope.$watch($attrs.tgBacklogUsPoints, function(us) {\n var roles;\n if (us) {\n estimationProcess = $tgEstimationsService.create($el, us, $scope.project);\n roles = estimationProcess.calculateRoles();\n if (roles.length === 0) {\n $el.find(\".icon-arrow-bottom\").remove();\n $el.find(\"a.us-points\").addClass(\"not-clickable\");\n } else if (roles.length === 1) {\n selectedRoleId = _.keys(us.points)[0];\n }\n if (estimationProcess.isEditable) {\n bindClickElements();\n }\n estimationProcess.onSelectedPointForRole = function(roleId, pointId, points) {\n us.points = points;\n estimationProcess.render();\n return this.save(roleId, pointId).then(function() {\n return $ctrl.loadProjectStats();\n });\n };\n estimationProcess.render = function() {\n var ctx, html, mainTemplate, pointId, pointObj, template, text, title, totalPoints;\n totalPoints = this.calculateTotalPoints();\n if ((selectedRoleId == null) || roles.length === 1) {\n text = totalPoints;\n title = totalPoints;\n } else {\n pointId = this.us.points[selectedRoleId];\n pointObj = this.pointsById[pointId];\n text = pointObj.name + \" / \" + totalPoints + \"\";\n title = pointObj.name + \" / \" + totalPoints;\n }\n ctx = {\n totalPoints: totalPoints,\n roles: this.calculateRoles(),\n editable: this.isEditable,\n text: text,\n title: title\n };\n mainTemplate = \"common/estimation/us-estimation-total.html\";\n template = $tgTemplate.get(mainTemplate, true);\n html = template(ctx);\n return this.$el.html(html);\n };\n return estimationProcess.render();\n }\n });\n renderRolesSelector = function() {\n var html, roles;\n roles = estimationProcess.calculateRoles();\n html = rolesTemplate({\n \"roles\": roles\n });\n $el.append(html);\n return $el.find(\".pop-role\").popover().open(function() {\n return $(this).remove();\n });\n };\n bindClickElements = function() {\n $el.on(\"click\", \".us-points\", function(event) {\n var us;\n event.preventDefault();\n event.stopPropagation();\n us = $scope.$eval($attrs.tgBacklogUsPoints);\n updatingSelectedRoleId = selectedRoleId;\n if (selectedRoleId != null) {\n return estimationProcess.renderPointsSelector(selectedRoleId);\n } else {\n return renderRolesSelector();\n }\n });\n return $el.on(\"click\", \".role\", function(event) {\n var popRolesDom, target, us;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n us = $scope.$eval($attrs.tgBacklogUsPoints);\n updatingSelectedRoleId = target.data(\"role-id\");\n popRolesDom = $el.find(\".pop-role\");\n popRolesDom.find(\"a\").removeClass(\"active\");\n popRolesDom.find(\"a[data-role-id='\" + updatingSelectedRoleId + \"']\").addClass(\"active\");\n return estimationProcess.renderPointsSelector(updatingSelectedRoleId);\n });\n };\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgBacklogUsPoints\", [\"$tgEstimationsService\", \"$tgRepo\", \"$tgTemplate\", UsPointsDirective]);\n\n ToggleBurndownVisibility = function($storage) {\n var hide, link, show;\n hide = function() {\n $(\".js-burndown-graph\").removeClass(\"shown\");\n $(\".js-toggle-burndown-visibility-button\").removeClass(\"active\");\n return $(\".js-burndown-graph\").removeClass(\"open\");\n };\n show = function(firstLoad) {\n $(\".js-toggle-burndown-visibility-button\").addClass(\"active\");\n if (firstLoad) {\n return $(\".js-burndown-graph\").addClass(\"shown\");\n } else {\n return $(\".js-burndown-graph\").addClass(\"open\");\n }\n };\n link = function($scope, $el, $attrs) {\n var firstLoad, hash, toggleGraph;\n firstLoad = true;\n hash = generateHash([\"is-burndown-grpahs-collapsed\"]);\n $scope.isBurndownGraphCollapsed = $storage.get(hash) || false;\n toggleGraph = function() {\n if ($scope.isBurndownGraphCollapsed) {\n hide(firstLoad);\n } else {\n show(firstLoad);\n }\n return firstLoad = false;\n };\n $scope.$watch(\"showGraphPlaceholder\", function() {\n if ($scope.showGraphPlaceholder != null) {\n $scope.isBurndownGraphCollapsed = $scope.isBurndownGraphCollapsed || $scope.showGraphPlaceholder;\n return toggleGraph();\n }\n });\n $el.on(\"click\", \".js-toggle-burndown-visibility-button\", function() {\n $scope.isBurndownGraphCollapsed = !$scope.isBurndownGraphCollapsed;\n $storage.set(hash, $scope.isBurndownGraphCollapsed);\n return toggleGraph();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgToggleBurndownVisibility\", [\"$tgStorage\", ToggleBurndownVisibility]);\n\n BurndownBacklogGraphDirective = function($translate) {\n var link, redrawChart;\n redrawChart = function(element, dataToDraw) {\n var client_increment_line, colors, data, evolution_line, j, milestonesRange, optimal_line, options, ref1, results, team_increment_line, width, zero_line;\n width = element.width();\n element.height(width / 6);\n milestonesRange = (function() {\n results = [];\n for (var j = 0, ref1 = dataToDraw.milestones.length - 1; 0 <= ref1 ? j <= ref1 : j >= ref1; 0 <= ref1 ? j++ : j--){ results.push(j); }\n return results;\n }).apply(this);\n data = [];\n zero_line = _.map(dataToDraw.milestones, function(ml) {\n return 0;\n });\n data.push({\n data: _.zip(milestonesRange, zero_line),\n lines: {\n fillColor: \"rgba(0,0,0,0)\"\n },\n points: {\n show: false\n }\n });\n optimal_line = _.map(dataToDraw.milestones, function(ml) {\n return ml.optimal;\n });\n data.push({\n data: _.zip(milestonesRange, optimal_line),\n lines: {\n fillColor: \"rgba(200,201,196,0.2)\"\n }\n });\n evolution_line = _.filter(_.map(dataToDraw.milestones, function(ml) {\n return ml.evolution;\n }), function(evolution) {\n return evolution != null;\n });\n data.push({\n data: _.zip(milestonesRange, evolution_line),\n lines: {\n fillColor: \"rgba(147,196,0,0.2)\"\n }\n });\n client_increment_line = _.map(dataToDraw.milestones, function(ml) {\n return -ml[\"team-increment\"] - ml[\"client-increment\"];\n });\n data.push({\n data: _.zip(milestonesRange, client_increment_line),\n lines: {\n fillColor: \"rgba(200,201,196,0.2)\"\n }\n });\n team_increment_line = _.map(dataToDraw.milestones, function(ml) {\n return -ml[\"team-increment\"];\n });\n data.push({\n data: _.zip(milestonesRange, team_increment_line),\n lines: {\n fillColor: \"rgba(255,160,160,0.2)\"\n }\n });\n colors = [\"rgba(200,201,196,0.2)\", \"rgba(216,222,233,1)\", \"rgba(168,228,64,1)\", \"rgba(216,222,233,1)\", \"rgba(255,160,160,1)\"];\n options = {\n grid: {\n borderWidth: {\n top: 0,\n right: 1,\n left: 0,\n bottom: 0\n },\n borderColor: \"#D8DEE9\",\n color: \"#D8DEE9\",\n hoverable: true,\n margin: {\n top: 0,\n right: 20,\n left: 5,\n bottom: 0\n }\n },\n xaxis: {\n ticks: dataToDraw.milestones.length,\n axisLabel: $translate.instant(\"BACKLOG.CHART.XAXIS_LABEL\"),\n axisLabelUseCanvas: true,\n axisLabelFontSizePixels: 12,\n axisLabelFontFamily: \"Verdana, Arial, Helvetica, Tahoma, sans-serif\",\n axisLabelPadding: 5,\n tickFormatter: function(val, axis) {\n return \"\";\n }\n },\n yaxis: {\n axisLabel: $translate.instant(\"BACKLOG.CHART.YAXIS_LABEL\"),\n axisLabelUseCanvas: true,\n axisLabelFontSizePixels: 12,\n axisLabelFontFamily: \"Verdana, Arial, Helvetica, Tahoma, sans-serif\",\n axisLabelPadding: 5\n },\n series: {\n shadowSize: 0,\n lines: {\n show: true,\n fill: true\n },\n points: {\n show: true,\n fill: true,\n radius: 4,\n lineWidth: 2\n }\n },\n colors: colors,\n tooltip: true,\n tooltipOpts: {\n content: function(label, xval, yval, flotItem) {\n var ctx;\n if (flotItem.seriesIndex === 1) {\n ctx = {\n sprintName: dataToDraw.milestones[xval].name,\n value: Math.abs(yval * 10) / 10\n };\n return $translate.instant(\"BACKLOG.CHART.OPTIMAL\", ctx);\n } else if (flotItem.seriesIndex === 2) {\n ctx = {\n sprintName: dataToDraw.milestones[xval].name,\n value: Math.abs(yval * 10) / 10\n };\n return $translate.instant(\"BACKLOG.CHART.REAL\", ctx);\n } else if (flotItem.seriesIndex === 3) {\n ctx = {\n sprintName: dataToDraw.milestones[xval].name,\n value: Math.abs(yval * 10) / 10\n };\n return $translate.instant(\"BACKLOG.CHART.INCREMENT_CLIENT\", ctx);\n } else {\n ctx = {\n sprintName: dataToDraw.milestones[xval].name,\n value: Math.abs(yval * 10) / 10\n };\n return $translate.instant(\"BACKLOG.CHART.INCREMENT_TEAM\", ctx);\n }\n }\n }\n };\n element.empty();\n return element.plot(data, options).data(\"plot\");\n };\n link = function($scope, $el, $attrs) {\n var element;\n element = angular.element($el);\n $scope.$watch(\"stats\", function(value) {\n if ($scope.stats != null) {\n redrawChart(element, $scope.stats);\n return $scope.$on(\"resize\", function() {\n return redrawChart(element, $scope.stats);\n });\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgBurndownBacklogGraph\", [\"$translate\", BurndownBacklogGraphDirective]);\n\n TgBacklogProgressBarDirective = function($template, $compile) {\n var adjustPercentaje, link, render, template;\n template = $template.get(\"backlog/progress-bar.html\", true);\n render = function(scope, el, projectPointsPercentaje, closedPointsPercentaje) {\n var html;\n html = template({\n projectPointsPercentaje: projectPointsPercentaje,\n closedPointsPercentaje: closedPointsPercentaje\n });\n html = $compile(html)(scope);\n return el.html(html);\n };\n adjustPercentaje = function(percentage) {\n var adjusted;\n adjusted = _.max([0, percentage]);\n adjusted = _.min([100, adjusted]);\n return Math.round(adjusted);\n };\n link = function($scope, $el, $attrs) {\n var element;\n element = angular.element($el);\n $scope.$watch($attrs.tgBacklogProgressBar, function(stats) {\n var closedPoints, closedPointsPercentaje, definedPoints, projectPointsPercentaje, totalPoints;\n if (stats != null) {\n totalPoints = stats.total_points ? stats.total_points : stats.defined_points;\n definedPoints = stats.defined_points;\n closedPoints = stats.closed_points;\n if (definedPoints > totalPoints) {\n projectPointsPercentaje = totalPoints * 100 / definedPoints;\n closedPointsPercentaje = closedPoints * 100 / definedPoints;\n } else {\n projectPointsPercentaje = 100;\n closedPointsPercentaje = closedPoints * 100 / totalPoints;\n }\n projectPointsPercentaje = adjustPercentaje(projectPointsPercentaje - 3);\n closedPointsPercentaje = adjustPercentaje(closedPointsPercentaje - 3);\n return render($scope, $el, projectPointsPercentaje, closedPointsPercentaje);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgBacklogProgressBar\", [\"$tgTemplate\", \"$compile\", TgBacklogProgressBarDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var BacklogSortableDirective, bindOnce, deleteElement, module, taiga;\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaBacklog\");\n\n deleteElement = function(el) {\n $(el).scope().$destroy();\n $(el).off();\n return $(el).remove();\n };\n\n BacklogSortableDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n if (!$scope.ctrl) {\n console.error('BacklogSortableDirective must have access to to BacklogCtrl');\n }\n return bindOnce($scope, \"project\", function(project) {\n var drake, emptyBacklog, initIsBacklog, nextUs, oldIndex, previousUs, scroll;\n if (!(project.my_permissions.indexOf(\"modify_us\") > -1)) {\n return;\n }\n initIsBacklog = false;\n emptyBacklog = $('.js-empty-backlog');\n previousUs = null;\n nextUs = null;\n oldIndex = null;\n drake = dragula([$el[0], emptyBacklog[0], emptyBacklog[1]], {\n copySortSource: false,\n copy: false,\n isContainer: function(el) {\n return el.classList.contains('sprint-table');\n },\n moves: function(item) {\n if (!$(item).hasClass('row')) {\n return false;\n }\n return true;\n }\n });\n drake.on('drop', function(item, target, source, sibling) {\n var next, prev;\n previousUs = null;\n nextUs = null;\n prev = $(item).prevAll('.row:not(.gu-transit)');\n next = $(item).nextAll('.row:not(.gu-transit)');\n previousUs = null;\n if (prev.length && prev[0].dataset.id) {\n previousUs = Number(prev[0].dataset.id);\n }\n nextUs = null;\n if (!previousUs && next.length && next[0].dataset.id) {\n return nextUs = Number(next[0].dataset.id);\n }\n });\n drake.on('drag', function(item, container) {\n var dragMultipleItems, firstElement, isChecked, parent, parentEl;\n if ($scope.ctrl.displayVelocity) {\n $scope.ctrl.toggleVelocityForecasting();\n }\n parent = $(item).parent();\n initIsBacklog = parent.hasClass('backlog-table-body');\n $(document.body).addClass(\"drag-active\");\n isChecked = $(item).find(\"input[type='checkbox']\").is(\":checked\");\n window.dragMultiple.start(item, container);\n dragMultipleItems = window.dragMultiple.getElements();\n firstElement = dragMultipleItems.length ? dragMultipleItems[0] : item;\n parentEl = item.parentNode;\n oldIndex = $(parentEl).find('tg-card').index(firstElement);\n if (initIsBacklog) {\n return oldIndex = $(firstElement).index(\".backlog-table-body .row\");\n } else {\n return oldIndex = $(firstElement).index();\n }\n });\n drake.on('cloned', function(item) {\n return $(item).addClass('multiple-drag-mirror');\n });\n drake.on('dragend', function(item) {\n var dragMultipleItems, firstElement, index, isBacklog, parent, ref, sameContainer, sprint, usList;\n $('.doom-line').remove();\n parent = $(item).parent();\n isBacklog = parent.hasClass('backlog-table-body') || parent.hasClass('js-empty-backlog');\n if (initIsBacklog || isBacklog) {\n sameContainer = initIsBacklog === isBacklog;\n } else {\n sameContainer = parent && $(item).scope().sprint.id === parent.scope().sprint.id;\n }\n dragMultipleItems = window.dragMultiple.stop();\n $(document.body).removeClass(\"drag-active\");\n sprint = null;\n firstElement = dragMultipleItems.length ? dragMultipleItems[0] : item;\n if (isBacklog) {\n index = $(firstElement).index(\".backlog-table-body .row\");\n } else {\n index = $(firstElement).index();\n sprint = (ref = parent.scope()) != null ? ref.sprint.id : void 0;\n }\n if (index === oldIndex && sameContainer) {\n return;\n }\n if (!sameContainer) {\n if (dragMultipleItems.length) {\n usList = _.map(dragMultipleItems, function(item) {\n return item = $(item).scope().us;\n });\n } else if ($(item).scope()) {\n usList = [$(item).scope().us];\n }\n if (dragMultipleItems.length) {\n _.each(dragMultipleItems, function(item) {\n return deleteElement(item);\n });\n } else {\n deleteElement(item);\n }\n } else {\n if (dragMultipleItems.length) {\n usList = _.map(dragMultipleItems, function(item) {\n return item = $(item).scope().us;\n });\n } else if ($(item).scope()) {\n usList = [$(item).scope().us];\n }\n }\n return $scope.$applyAsync((function(_this) {\n return function() {\n return $scope.ctrl.moveUs(\"sprint:us:move\", usList, index, sprint, previousUs, nextUs);\n };\n })(this));\n });\n scroll = autoScroll([window], {\n margin: 20,\n pixels: 30,\n scrollWhenOutside: true,\n autoScroll: function() {\n return this.down && drake.dragging;\n }\n });\n return $scope.$on(\"$destroy\", function() {\n $el.off();\n return drake.destroy();\n });\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgBacklogSortable\", BacklogSortableDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var BacklogSprintDirective, BacklogSprintHeaderDirective, SprintDirective, ToggleExcludeClosedSprintsVisualization, module, taiga;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaBacklog\");\n\n BacklogSprintDirective = function($repo, $rootscope) {\n var link, slideOptions, sprintTableMinHeight, toggleSprint;\n sprintTableMinHeight = 50;\n slideOptions = {\n duration: 500,\n easing: 'linear'\n };\n toggleSprint = (function(_this) {\n return function($el) {\n var sprintArrow, sprintTable;\n sprintTable = $el.find(\".sprint-table\");\n sprintArrow = $el.find(\".compact-sprint\");\n sprintArrow.toggleClass('active');\n return sprintTable.toggleClass('open');\n };\n })(this);\n link = function($scope, $el, $attrs) {\n $scope.$watch($attrs.tgBacklogSprint, function(sprint) {\n sprint = $scope.$eval($attrs.tgBacklogSprint);\n if (sprint.closed) {\n return $el.addClass(\"sprint-closed\");\n } else {\n return toggleSprint($el);\n }\n });\n $el.on(\"click\", \".sprint-name > .compact-sprint\", function(event) {\n event.preventDefault();\n toggleSprint($el);\n return $el.find(\".sprint-table\").slideToggle(slideOptions);\n });\n $el.on(\"click\", \".edit-sprint\", function(event) {\n var sprint;\n event.preventDefault();\n sprint = $scope.$eval($attrs.tgBacklogSprint);\n return $rootscope.$broadcast(\"sprintform:edit\", sprint);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgBacklogSprint\", [\"$tgRepo\", \"$rootScope\", BacklogSprintDirective]);\n\n BacklogSprintHeaderDirective = function($navUrls, $template, $compile, $translate) {\n var link, template;\n template = $template.get(\"backlog/sprint-header.html\");\n link = function($scope, $el, $attrs, $model) {\n var isEditable, isVisible, prettyDate, render;\n prettyDate = $translate.instant(\"BACKLOG.SPRINTS.DATE\");\n isEditable = function() {\n return $scope.project.my_permissions.indexOf(\"modify_milestone\") !== -1;\n };\n isVisible = function() {\n return $scope.project.my_permissions.indexOf(\"view_milestones\") !== -1;\n };\n render = function(sprint) {\n var compiledTemplate, ctx, estimatedDateRange, finish, start, taskboardUrl, templateScope;\n taskboardUrl = $navUrls.resolve(\"project-taskboard\", {\n project: $scope.project.slug,\n sprint: sprint.slug\n });\n start = moment(sprint.estimated_start).format(prettyDate);\n finish = moment(sprint.estimated_finish).format(prettyDate);\n estimatedDateRange = start + \"-\" + finish;\n ctx = {\n name: sprint.name,\n taskboardUrl: taskboardUrl,\n estimatedDateRange: estimatedDateRange,\n closedPoints: sprint.closed_points || 0,\n totalPoints: sprint.total_points || 0,\n isVisible: isVisible(),\n isEditable: isEditable()\n };\n templateScope = $scope.$new();\n _.assign(templateScope, ctx);\n compiledTemplate = $compile(template)(templateScope);\n return $el.html(compiledTemplate);\n };\n $scope.$watch(\"sprint\", function(sprint) {\n return render(sprint);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\"\n };\n };\n\n module.directive(\"tgBacklogSprintHeader\", [\"$tgNavUrls\", \"$tgTemplate\", \"$compile\", \"$translate\", BacklogSprintHeaderDirective]);\n\n ToggleExcludeClosedSprintsVisualization = function($rootscope, $loading, $translate) {\n var excludeClosedSprints, link;\n excludeClosedSprints = true;\n link = function($scope, $el, $attrs) {\n var currentLoading, loadingElm;\n loadingElm = $(\"
\");\n $el.after(loadingElm);\n currentLoading = null;\n $el.on(\"click\", function(event) {\n event.preventDefault();\n excludeClosedSprints = !excludeClosedSprints;\n currentLoading = $loading().target(loadingElm).start();\n if (excludeClosedSprints) {\n return $rootscope.$broadcast(\"backlog:unload-closed-sprints\");\n } else {\n return $rootscope.$broadcast(\"backlog:load-closed-sprints\");\n }\n });\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n return $scope.$on(\"closed-sprints:reloaded\", function(ctx, sprints) {\n var key, text;\n if (currentLoading) {\n currentLoading.finish();\n }\n if (sprints.length > 0) {\n key = \"BACKLOG.SPRINTS.ACTION_HIDE_CLOSED_SPRINTS\";\n } else {\n key = \"BACKLOG.SPRINTS.ACTION_SHOW_CLOSED_SPRINTS\";\n }\n text = $translate.instant(key);\n return $el.find(\".text\").text(text);\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgBacklogToggleClosedSprintsVisualization\", [\"$rootScope\", \"$tgLoading\", \"$translate\", ToggleExcludeClosedSprintsVisualization]);\n\n SprintDirective = function(avatarService) {\n return {\n templateUrl: 'backlog/sprint.html',\n scope: {\n sprint: '=',\n project: '='\n }\n };\n };\n\n SprintDirective.$inject = [];\n\n module.directive(\"tgSprint\", SprintDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var SprintChartDirective, bindOnce, groupBy, mixOf, module, scopeDefer, taiga, timeout, toggleText;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n toggleText = this.taiga.toggleText;\n\n scopeDefer = this.taiga.scopeDefer;\n\n bindOnce = this.taiga.bindOnce;\n\n groupBy = this.taiga.groupBy;\n\n timeout = this.taiga.timeout;\n\n module = angular.module(\"taigaTaskboard\");\n\n SprintChartDirective = function($translate) {\n var link, redrawChart;\n redrawChart = function(element, dataToDraw) {\n var data, days, options, width;\n width = element.width();\n element.height(240);\n days = _.map(dataToDraw, function(x) {\n return moment.utc(x.day);\n });\n data = [];\n data.unshift({\n data: _.zip(days, _.map(dataToDraw, function(d) {\n return d.open_points;\n })),\n lines: {\n fillColor: \"rgba(147,196,0,0.2)\"\n }\n });\n data.unshift({\n data: _.zip(days, _.map(dataToDraw, function(d) {\n return d.optimal_points;\n })),\n lines: {\n fillColor: \"rgba(200,201,196,0.2)\"\n }\n });\n options = {\n grid: {\n borderWidth: {\n top: 0,\n right: 1,\n left: 0,\n bottom: 0\n },\n borderColor: \"#D8DEE9\",\n color: \"#D8DEE9\",\n hoverable: true,\n margin: {\n top: 0,\n right: 30,\n left: 5,\n bottom: 5\n }\n },\n xaxis: {\n tickSize: [1, \"day\"],\n min: days[0],\n max: _.last(days),\n mode: \"time\",\n daysNames: days,\n axisLabel: $translate.instant(\"TASKBOARD.CHARTS.XAXIS_LABEL\"),\n axisLabelUseCanvas: true,\n axisLabelFontSizePixels: 12,\n axisLabelFontFamily: 'Verdana, Arial, Helvetica, Tahoma, sans-serif',\n axisLabelPadding: 5\n },\n yaxis: {\n min: 0,\n axisLabel: $translate.instant(\"TASKBOARD.CHARTS.YAXIS_LABEL\"),\n axisLabelUseCanvas: true,\n axisLabelFontSizePixels: 12,\n axisLabelFontFamily: 'Verdana, Arial, Helvetica, Tahoma, sans-serif',\n axisLabelPadding: 5\n },\n series: {\n shadowSize: 0,\n lines: {\n show: true,\n fill: true\n },\n points: {\n show: true,\n fill: true,\n radius: 4,\n lineWidth: 2\n }\n },\n colors: [\"rgba(216,222,233,1)\", \"rgba(168,228,64,1)\"],\n tooltip: true,\n tooltipOpts: {\n content: function(label, xval, yval, flotItem) {\n var formattedDate, roundedValue;\n formattedDate = moment(xval).format($translate.instant(\"TASKBOARD.CHARTS.DATE\"));\n roundedValue = Math.round(yval * 10) / 10;\n if (flotItem.seriesIndex === 1) {\n return $translate.instant(\"TASKBOARD.CHARTS.REAL\", {\n formattedDate: formattedDate,\n roundedValue: roundedValue\n });\n } else {\n return $translate.instant(\"TASKBOARD.CHARTS.OPTIMAL\", {\n formattedDate: formattedDate,\n roundedValue: roundedValue\n });\n }\n }\n }\n };\n element.empty();\n return element.plot(data, options).data(\"plot\");\n };\n link = function($scope, $el, $attrs) {\n var element;\n element = angular.element($el);\n $scope.$on(\"resize\", function() {\n if ($scope.stats) {\n return redrawChart(element, $scope.stats.days);\n }\n });\n $scope.$on(\"taskboard:graph:toggle-visibility\", function() {\n $el.parent().toggleClass('open');\n return timeout(100, function() {\n if ($scope.stats) {\n return redrawChart(element, $scope.stats.days);\n }\n });\n });\n $scope.$watch('stats', function(value) {\n if ($scope.stats == null) {\n return;\n }\n return redrawChart(element, $scope.stats.days);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgSprintChart\", [\"$translate\", SprintChartDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CreateBulkTasksDirective, bindOnce, debounce, module, taiga, trim;\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n trim = this.taiga.trim;\n\n module = angular.module(\"taigaTaskboard\");\n\n CreateBulkTasksDirective = function($repo, $rs, $rootscope, $loading, lightboxService, $model) {\n var link;\n link = function($scope, $el, attrs) {\n var submit, submitButton;\n $scope.form = {\n data: \"\",\n usId: null\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var currentLoading, data, form, projectId, promise, sprintId, usId;\n event.preventDefault();\n form = $el.find(\"form\").checksley();\n if (!form.validate()) {\n return;\n }\n currentLoading = $loading().target(submitButton).start();\n data = $scope.form.data;\n projectId = $scope.projectId;\n sprintId = $scope.form.sprintId;\n usId = $scope.form.usId;\n promise = $rs.tasks.bulkCreate(projectId, sprintId, usId, data);\n promise.then(function(result) {\n result = _.map(result, (function(_this) {\n return function(x) {\n return $model.make_model('tasks', x);\n };\n })(this));\n currentLoading.finish();\n $rootscope.$broadcast(\"taskform:bulk:success\", result);\n return lightboxService.close($el);\n });\n return promise.then(null, function() {\n return currentLoading.finish();\n });\n };\n })(this));\n $scope.$on(\"taskform:bulk\", function(ctx, sprintId, usId) {\n lightboxService.open($el);\n return $scope.form = {\n data: \"\",\n sprintId: sprintId,\n usId: usId\n };\n });\n submitButton = $el.find(\".submit-button\");\n $el.on(\"submit\", \"form\", submit);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLbCreateBulkTasks\", [\"$tgRepo\", \"$tgResources\", \"$rootScope\", \"$tgLoading\", \"lightboxService\", \"$tgModel\", CreateBulkTasksDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TaskboardController, TaskboardDirective, TaskboardSquishColumnDirective, bindMethods, bindOnce, debounceLeading, groupBy, mixOf, module, scopeDefer, taiga, timeout, toggleText,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n toggleText = this.taiga.toggleText;\n\n mixOf = this.taiga.mixOf;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n scopeDefer = this.taiga.scopeDefer;\n\n timeout = this.taiga.timeout;\n\n bindMethods = this.taiga.bindMethods;\n\n debounceLeading = this.taiga.debounceLeading;\n\n module = angular.module(\"taigaTaskboard\");\n\n TaskboardController = (function(superClass) {\n extend(TaskboardController, superClass);\n\n TaskboardController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"tgResources\", \"$routeParams\", \"$q\", \"tgAppMetaService\", \"$tgLocation\", \"$tgNavUrls\", \"$tgEvents\", \"$tgAnalytics\", \"$translate\", \"tgErrorHandlingService\", \"tgTaskboardTasks\", \"tgTaskboardIssues\", \"$tgStorage\", \"tgFilterRemoteStorageService\", \"tgLightboxFactory\", \"$timeout\", \"tgProjectService\"];\n\n TaskboardController.prototype.excludePrefix = \"exclude_\";\n\n TaskboardController.prototype.filterCategories = [\"status\", \"assigned_to\", \"owner\", \"role\", \"tags\"];\n\n TaskboardController.prototype.validQueryParams = ['exclude_status', 'status', 'exclude_assigned_to', 'assigned_to', 'exclude_role', 'role', 'exclude_owner', 'owner', 'order_by', 'tags'];\n\n function TaskboardController(scope, rootscope, repo, confirm, rs1, rs2, params1, q1, appMetaService, location, navUrls, events, analytics, translate, errorHandlingService, taskboardTasksService, taskboardIssuesService, storage, filterRemoteStorageService, lightboxFactory, timeout1, projectService) {\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs1;\n this.rs2 = rs2;\n this.params = params1;\n this.q = q1;\n this.appMetaService = appMetaService;\n this.location = location;\n this.navUrls = navUrls;\n this.events = events;\n this.analytics = analytics;\n this.translate = translate;\n this.errorHandlingService = errorHandlingService;\n this.taskboardTasksService = taskboardTasksService;\n this.taskboardIssuesService = taskboardIssuesService;\n this.storage = storage;\n this.filterRemoteStorageService = filterRemoteStorageService;\n this.lightboxFactory = lightboxFactory;\n this.timeout = timeout1;\n this.projectService = projectService;\n bindMethods(this);\n this.taskboardTasksService.reset();\n this.scope.userstories = [];\n this.openFilter = false;\n this.filterQ = '';\n this.backToBacklogUrl = this.navUrls.resolve('project-backlog', {\n project: this.projectService.project.get('slug'),\n ref: this.params.ref\n });\n if (this.applyStoredFilters(this.params.pslug, \"tasks-filters\", this.validQueryParams)) {\n return;\n }\n this.scope.sectionName = this.translate.instant(\"TASKBOARD.SECTION_NAME\");\n this.initializeEventHandlers();\n taiga.defineImmutableProperty(this.scope, \"usTasks\", (function(_this) {\n return function() {\n return _this.taskboardTasksService.usTasks;\n };\n })(this));\n taiga.defineImmutableProperty(this.scope, \"taskMap\", (function(_this) {\n return function() {\n return _this.taskboardTasksService.taskMap;\n };\n })(this));\n taiga.defineImmutableProperty(this.scope, \"milestoneIssues\", (function(_this) {\n return function() {\n return _this.taskboardIssuesService.milestoneIssues;\n };\n })(this));\n taiga.defineImmutableProperty(this.scope, \"tasksByUs\", (function(_this) {\n return function() {\n return _this.taskboardTasksService.tasksByUs;\n };\n })(this));\n this.scope.issues = [];\n this.scope.showTags = true;\n this.scope.$watch('milestoneIssues', (function(_this) {\n return function() {\n if (_this.scope.milestoneIssues) {\n return _this.scope.issues = _this.scope.milestoneIssues.toJS().map(function(milestoneIssue) {\n return _this.taskboardIssuesService.issuesRaw.find(function(rawIssue) {\n return milestoneIssue.model.id === rawIssue.id;\n });\n });\n } else {\n return _this.scope.issues = [];\n }\n };\n })(this));\n }\n\n TaskboardController.prototype.getQueryParams = function() {\n return _.pick(_.clone(this.location.search()), this.validQueryParams);\n };\n\n TaskboardController.prototype.firstLoad = function() {\n var promise;\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this._setMeta();\n };\n })(this));\n return promise.then(null, this.onInitialDataError.bind(this));\n };\n\n TaskboardController.prototype.setZoom = function(zoomLevel, zoom) {\n var previousZoomLevel;\n if (this.zoomLevel === Number(zoomLevel)) {\n return null;\n }\n this.isFirstLoad = !this.zoomLevel;\n previousZoomLevel = this.zoomLevel;\n this.zoomLevel = zoomLevel;\n this.zoom = zoom;\n if (this.isFirstLoad) {\n return this.firstLoad().then((function(_this) {\n return function() {\n _this.isFirstLoad = false;\n return _this.taskboardTasksService.resetFolds();\n };\n })(this));\n } else if (this.zoomLevel > 1 && previousZoomLevel <= 1) {\n this.zoomLoading = true;\n return this.q.all([this.loadTasks(), this.loadIssues()]).then((function(_this) {\n return function() {\n _this.zoomLoading = false;\n return _this.taskboardTasksService.resetFolds();\n };\n })(this));\n }\n };\n\n TaskboardController.prototype.changeQ = function(q) {\n this.filterQ = q;\n this.loadTasks();\n return this.generateFilters();\n };\n\n TaskboardController.prototype.removeFilter = function(filter) {\n this.unselectFilter(filter.dataType, filter.id, false, filter.mode);\n this.loadTasks();\n return this.generateFilters();\n };\n\n TaskboardController.prototype.addFilter = function(newFilter) {\n this.selectFilter(newFilter.category.dataType, newFilter.filter.id, false, newFilter.mode);\n this.loadTasks();\n return this.generateFilters();\n };\n\n TaskboardController.prototype.selectCustomFilter = function(customFilter) {\n this.replaceAllFilters(customFilter.filter);\n this.loadTasks();\n return this.generateFilters();\n };\n\n TaskboardController.prototype.removeCustomFilter = function(customFilter) {\n return this.filterRemoteStorageService.getFilters(this.scope.projectId, 'tasks-custom-filters').then((function(_this) {\n return function(userFilters) {\n delete userFilters[customFilter.id];\n return _this.filterRemoteStorageService.storeFilters(_this.scope.projectId, userFilters, 'tasks-custom-filters').then(_this.generateFilters);\n };\n })(this));\n };\n\n TaskboardController.prototype.isFilterDataTypeSelected = function(filterDataType) {\n var filter, i, len, ref;\n ref = this.selectedFilters;\n for (i = 0, len = ref.length; i < len; i++) {\n filter = ref[i];\n if (filter['dataType'] === filterDataType) {\n return true;\n }\n }\n return false;\n };\n\n TaskboardController.prototype.saveCustomFilter = function(name) {\n var excludeKey, filters, i, key, len, ref, urlfilters;\n filters = {};\n urlfilters = this.getQueryParams();\n ref = this.filterCategories;\n for (i = 0, len = ref.length; i < len; i++) {\n key = ref[i];\n excludeKey = this.excludePrefix.concat(key);\n filters[key] = urlfilters[key];\n filters[excludeKey] = urlfilters[excludeKey];\n }\n return this.filterRemoteStorageService.getFilters(this.scope.projectId, 'tasks-custom-filters').then((function(_this) {\n return function(userFilters) {\n userFilters[name] = filters;\n return _this.filterRemoteStorageService.storeFilters(_this.scope.projectId, userFilters, 'tasks-custom-filters').then(_this.generateFilters);\n };\n })(this));\n };\n\n TaskboardController.prototype.generateFilters = function() {\n var excludeKey, i, key, len, loadFilters, ref, urlfilters;\n urlfilters = this.getQueryParams();\n this.storeFilters(this.params.pslug, urlfilters, \"tasks-filters\");\n loadFilters = {};\n loadFilters.project = this.scope.projectId;\n loadFilters.milestone = this.scope.sprintId;\n ref = this.filterCategories;\n for (i = 0, len = ref.length; i < len; i++) {\n key = ref[i];\n excludeKey = this.excludePrefix.concat(key);\n loadFilters[key] = urlfilters[key];\n loadFilters[excludeKey] = urlfilters[excludeKey];\n }\n return this.q.all([this.rs.tasks.filtersData(loadFilters), this.filterRemoteStorageService.getFilters(this.scope.projectId, 'tasks-custom-filters')]).then((function(_this) {\n return function(result) {\n var customFiltersRaw, data, dataCollection, j, len1, ref1, selected, tagsWithAtLeastOneElement;\n data = result[0];\n customFiltersRaw = result[1];\n dataCollection = {};\n dataCollection.status = _.map(data.statuses, function(it) {\n it.id = it.id.toString();\n return it;\n });\n dataCollection.tags = _.map(data.tags, function(it) {\n it.id = it.name;\n return it;\n });\n tagsWithAtLeastOneElement = _.filter(dataCollection.tags, function(tag) {\n return tag.count > 0;\n });\n dataCollection.assigned_to = _.map(data.assigned_to, function(it) {\n if (it.id) {\n it.id = it.id.toString();\n } else {\n it.id = \"null\";\n }\n it.name = it.full_name || \"Unassigned\";\n return it;\n });\n dataCollection.role = _.map(data.roles, function(it) {\n if (it.id) {\n it.id = it.id.toString();\n } else {\n it.id = \"null\";\n }\n it.name = it.name || \"Unassigned\";\n return it;\n });\n dataCollection.owner = _.map(data.owners, function(it) {\n it.id = it.id.toString();\n it.name = it.full_name;\n return it;\n });\n _this.selectedFilters = [];\n ref1 = _this.filterCategories;\n for (j = 0, len1 = ref1.length; j < len1; j++) {\n key = ref1[j];\n excludeKey = _this.excludePrefix.concat(key);\n if (loadFilters[key]) {\n selected = _this.formatSelectedFilters(key, dataCollection[key], loadFilters[key]);\n _this.selectedFilters = _this.selectedFilters.concat(selected);\n }\n if (loadFilters[excludeKey]) {\n selected = _this.formatSelectedFilters(key, dataCollection[key], loadFilters[excludeKey], \"exclude\");\n _this.selectedFilters = _this.selectedFilters.concat(selected);\n }\n }\n _this.filters = [\n {\n title: _this.translate.instant(\"COMMON.FILTERS.CATEGORIES.STATUS\"),\n dataType: \"status\",\n content: dataCollection.status\n }, {\n title: _this.translate.instant(\"COMMON.FILTERS.CATEGORIES.TAGS\"),\n dataType: \"tags\",\n content: dataCollection.tags,\n hideEmpty: true,\n totalTaggedElements: tagsWithAtLeastOneElement.length\n }, {\n title: _this.translate.instant(\"COMMON.FILTERS.CATEGORIES.ASSIGNED_TO\"),\n dataType: \"assigned_to\",\n content: dataCollection.assigned_to\n }, {\n title: _this.translate.instant(\"COMMON.FILTERS.CATEGORIES.ROLE\"),\n dataType: \"role\",\n content: dataCollection.role\n }, {\n title: _this.translate.instant(\"COMMON.FILTERS.CATEGORIES.CREATED_BY\"),\n dataType: \"owner\",\n content: dataCollection.owner\n }\n ];\n _this.customFilters = [];\n return _.forOwn(customFiltersRaw, function(value, key) {\n return _this.customFilters.push({\n id: key,\n name: key,\n filter: value\n });\n });\n };\n })(this));\n };\n\n TaskboardController.prototype._setMeta = function() {\n var description, prettyDate, title;\n prettyDate = this.translate.instant(\"BACKLOG.SPRINTS.DATE\");\n title = this.translate.instant(\"TASKBOARD.PAGE_TITLE\", {\n projectName: this.scope.project.name,\n sprintName: this.scope.sprint.name\n });\n description = this.translate.instant(\"TASKBOARD.PAGE_DESCRIPTION\", {\n projectName: this.scope.project.name,\n sprintName: this.scope.sprint.name,\n startDate: moment(this.scope.sprint.estimated_start).format(prettyDate),\n endDate: moment(this.scope.sprint.estimated_finish).format(prettyDate),\n completedPercentage: this.scope.stats.completedPercentage || \"0\",\n completedPoints: this.scope.stats.completedPointsSum || \"--\",\n totalPoints: this.scope.stats.totalPointsSum || \"--\",\n openTasks: this.scope.stats.openTasks || \"--\",\n totalTasks: this.scope.stats.total_tasks || \"--\"\n });\n return this.appMetaService.setAll(title, description);\n };\n\n TaskboardController.prototype.initializeEventHandlers = function() {\n this.scope.$on(\"taskform:bulk:success\", (function(_this) {\n return function(event, tasks) {\n _this.refreshTagsColors().then(function() {\n return _this.taskboardTasksService.add(tasks);\n });\n return _this.analytics.trackEvent(\"task\", \"create\", \"bulk create task on taskboard\", 1);\n };\n })(this));\n this.scope.$on(\"taskform:new:success\", (function(_this) {\n return function(event, task) {\n _this.refreshTagsColors().then(function() {\n return _this.taskboardTasksService.add(task);\n });\n return _this.analytics.trackEvent(\"task\", \"create\", \"create task on taskboard\", 1);\n };\n })(this));\n this.scope.$on(\"taskform:edit:success\", (function(_this) {\n return function(event, task) {\n return _this.refreshTagsColors().then(function() {\n return _this.taskboardTasksService.replaceModel(task);\n });\n };\n })(this));\n this.scope.$on(\"issueform:new:success\", (function(_this) {\n return function(event, issue) {\n _this.refreshTagsColors().then(function() {\n return _this.taskboardIssuesService.add(issue);\n });\n return _this.analytics.trackEvent(\"issue\", \"create\", \"create issue on taskboard\", 1);\n };\n })(this));\n this.scope.$on(\"issueform:add:success\", (function(_this) {\n return function(event, issue) {\n return _this.refreshTagsColors().then(function() {\n return _this.taskboardIssuesService.add(issue);\n });\n };\n })(this));\n this.scope.$on(\"issueform:edit:success\", (function(_this) {\n return function(event, issue) {\n return _this.refreshTagsColors().then(function() {\n return _this.taskboardIssuesService.replaceModel(issue);\n });\n };\n })(this));\n this.scope.$on(\"taskboard:task:deleted\", (function(_this) {\n return function(event, task) {\n return _this.loadTasks();\n };\n })(this));\n this.scope.$on(\"taskboard:issue:deleted\", (function(_this) {\n return function(event, issue) {\n return _this.loadIssues();\n };\n })(this));\n this.scope.$on(\"taskboard:task:move\", this.taskMove);\n this.scope.$on(\"assigned-to:added\", this.onAssignedToChanged);\n return this.scope.$on(\"taskboard:items:move\", (function(_this) {\n return function(event, itemsMoved) {\n if (itemsMoved.uss) {\n return _this.firstLoad();\n } else {\n if (itemsMoved.tasks) {\n _this.loadTasks();\n }\n if (itemsMoved.issues) {\n return _this.loadIssues();\n }\n }\n };\n })(this));\n };\n\n TaskboardController.prototype.onAssignedToChanged = function(ctx, userid, model) {\n if (model.getName() === 'tasks') {\n model.assigned_to = userid;\n this.taskboardTasksService.replaceModel(model);\n this.repo.save(model).then((function(_this) {\n return function() {\n _this.generateFilters();\n if (_this.isFilterDataTypeSelected('assigned_to') || _this.isFilterDataTypeSelected('role')) {\n return _this.loadTasks();\n }\n };\n })(this));\n }\n if (model.getName() === 'issues') {\n model.assigned_to = userid;\n this.taskboardIssuesService.replaceModel(model);\n return this.repo.save(model).then((function(_this) {\n return function() {\n _this.generateFilters();\n if (_this.isFilterDataTypeSelected('assigned_to') || _this.isFilterDataTypeSelected('role')) {\n return _this.loadIssues();\n }\n };\n })(this));\n }\n };\n\n TaskboardController.prototype.initializeSubscription = function() {\n var routingKey, routingKey1;\n routingKey = \"changes.project.\" + this.scope.projectId + \".tasks\";\n this.events.subscribe(this.scope, routingKey, debounceLeading(500, (function(_this) {\n return function(message) {\n return _this.loadTaskboard();\n };\n })(this)));\n routingKey = \"changes.project.\" + this.scope.projectId + \".issues\";\n this.events.subscribe(this.scope, routingKey, debounceLeading(500, (function(_this) {\n return function(message) {\n return _this.loadIssues();\n };\n })(this)));\n routingKey1 = \"changes.project.\" + this.scope.projectId + \".userstories\";\n return this.events.subscribe(this.scope, routingKey1, (function(_this) {\n return function(message) {\n _this.refreshTagsColors();\n _this.loadSprintStats();\n return _this.loadSprint();\n };\n })(this));\n };\n\n TaskboardController.prototype.loadProject = function() {\n return this.rs.projects.get(this.scope.projectId).then((function(_this) {\n return function(project) {\n if (!project.is_backlog_activated) {\n _this.errorHandlingService.permissionDenied();\n }\n _this.scope.project = project;\n _this.scope.pointsList = _.sortBy(project.points, \"order\");\n _this.scope.pointsById = groupBy(project.points, function(e) {\n return e.id;\n });\n _this.scope.roleById = groupBy(project.roles, function(e) {\n return e.id;\n });\n _this.scope.taskStatusList = _.sortBy(project.task_statuses, \"order\");\n _this.scope.usStatusList = _.sortBy(project.us_statuses, \"order\");\n _this.scope.usStatusById = groupBy(project.us_statuses, function(e) {\n return e.id;\n });\n _this.scope.issueStatusById = groupBy(project.issue_statuses, function(e) {\n return e.id;\n });\n _this.scope.$emit('project:loaded', project);\n _this.fillUsersAndRoles(project.members, project.roles);\n return project;\n };\n })(this));\n };\n\n TaskboardController.prototype.loadSprintStats = function() {\n return this.rs.sprints.stats(this.scope.projectId, this.scope.sprintId).then((function(_this) {\n return function(stats) {\n var completedPointsSum, remainingPointsSum, remainingTasks, totalPointsSum;\n totalPointsSum = _.reduce(_.values(stats.total_points), (function(res, n) {\n return res + n;\n }), 0);\n completedPointsSum = _.reduce(_.values(stats.completed_points), (function(res, n) {\n return res + n;\n }), 0);\n remainingPointsSum = totalPointsSum - completedPointsSum;\n remainingTasks = stats.total_tasks - stats.completed_tasks;\n _this.scope.stats = stats;\n _this.scope.stats.totalPointsSum = totalPointsSum;\n _this.scope.stats.completedPointsSum = completedPointsSum;\n _this.scope.stats.remainingPointsSum = remainingPointsSum;\n _this.scope.stats.remainingTasks = remainingTasks;\n if (stats.totalPointsSum) {\n _this.scope.stats.completedPercentage = Math.round(100 * stats.completedPointsSum / stats.totalPointsSum);\n } else {\n _this.scope.stats.completedPercentage = 0;\n }\n _this.scope.stats.openTasks = stats.total_tasks - stats.completed_tasks;\n return stats;\n };\n })(this));\n };\n\n TaskboardController.prototype.refreshTagsColors = function() {\n return this.rs.projects.tagsColors(this.scope.projectId).then((function(_this) {\n return function(tags_colors) {\n return _this.scope.project.tags_colors = tags_colors._attrs;\n };\n })(this));\n };\n\n TaskboardController.prototype.loadSprint = function() {\n return this.rs.sprints.get(this.scope.projectId, this.scope.sprintId).then((function(_this) {\n return function(sprint) {\n _this.scope.sprint = sprint;\n _this.scope.userstories = _.sortBy(sprint.user_stories, \"sprint_order\");\n _this.taskboardTasksService.setUserstories(_this.scope.userstories);\n _this.rootscope.$broadcast(\"taskboard:userstories:loaded\", _this.scope.userstories);\n return sprint;\n };\n })(this));\n };\n\n TaskboardController.prototype.loadIssues = function() {\n var locationParams, params;\n params = {};\n if (this.zoomLevel > 1) {\n params.include_attachments = 1;\n }\n locationParams = this.getQueryParams();\n params = _.merge(params, locationParams);\n return this.rs.issues.listInProject(this.scope.projectId, this.scope.sprintId, params).then((function(_this) {\n return function(issues) {\n _this.taskboardIssuesService.init(_this.scope.project, _this.scope.usersById, _this.scope.issueStatusById);\n _this.taskboardIssuesService.set(issues);\n return _this.initIssues = true;\n };\n })(this));\n };\n\n TaskboardController.prototype.loadTasks = function() {\n var locationParams, params;\n params = {};\n if (this.zoomLevel > 1) {\n params.include_attachments = 1;\n }\n locationParams = this.getQueryParams();\n params = _.merge(params, locationParams);\n params.q = this.filterQ;\n return this.rs.tasks.list(this.scope.projectId, this.scope.sprintId, null, params).then((function(_this) {\n return function(tasks) {\n _this.notFoundTasks = false;\n if (!tasks.length && ((_this.filterQ && _this.filterQ.length) || Object.keys(locationParams).length)) {\n _this.notFoundTasks = true;\n }\n _this.taskboardTasksService.init(_this.scope.project, _this.scope.usersById);\n return _this.taskboardTasksService.set(tasks);\n };\n })(this));\n };\n\n TaskboardController.prototype.loadTaskboard = function() {\n return this.q.all([\n this.refreshTagsColors(), this.loadSprintStats(), this.loadSprint().then((function(_this) {\n return function() {\n _this.loadTasks();\n return _this.loadIssues();\n };\n })(this))\n ]);\n };\n\n TaskboardController.prototype.loadInitialData = function() {\n var params, promise;\n this.initialLoad = false;\n this.initIssues = false;\n params = {\n pslug: this.params.pslug,\n sslug: this.params.sslug\n };\n promise = this.repo.resolve(params).then((function(_this) {\n return function(data) {\n _this.scope.projectId = data.project;\n _this.scope.sprintId = data.milestone;\n _this.initializeSubscription();\n return data;\n };\n })(this));\n return promise.then((function(_this) {\n return function() {\n return _this.loadProject();\n };\n })(this)).then((function(_this) {\n return function() {\n _this.generateFilters();\n if (_this.rs.issues.getSprintShowTags(_this.scope.projectId) === false) {\n _this.scope.showTags = false;\n }\n return _this.loadTaskboard().then(function() {\n _this.timeout(function() {\n return _this.initialLoad = true;\n }, 0, false);\n return _this.setRolePoints();\n });\n };\n })(this));\n };\n\n TaskboardController.prototype.toggleTags = function(tags) {\n return this.rs.issues.storeSprintShowTags(this.scope.projectId, tags);\n };\n\n TaskboardController.prototype.showPlaceHolder = function(statusId, usId) {\n if (!this.taskboardTasksService.tasksRaw.length) {\n if (this.scope.taskStatusList[0].id === statusId && (!this.scope.userstories.length || this.scope.userstories[0].id === usId)) {\n return true;\n }\n }\n return false;\n };\n\n TaskboardController.prototype.editTask = function(id) {\n var task;\n task = this.taskboardTasksService.getTask(id);\n task = task.set('loading-edit', true);\n this.taskboardTasksService.replace(task);\n return this.rs.tasks.getByRef(task.getIn(['model', 'project']), task.getIn(['model', 'ref'])).then((function(_this) {\n return function(editingTask) {\n return _this.rs2.attachments.list(\"task\", task.get('id'), task.getIn(['model', 'project'])).then(function(attachments) {\n _this.rootscope.$broadcast(\"genericform:edit\", {\n 'objType': 'task',\n 'obj': editingTask,\n 'project': _this.scope.project,\n 'sprintId': _this.scope.sprintId,\n 'attachments': attachments.toJS()\n });\n task = task.set('loading-edit', false);\n return _this.taskboardTasksService.replace(task);\n });\n };\n })(this));\n };\n\n TaskboardController.prototype.editIssue = function(id) {\n var issue;\n issue = this.taskboardIssuesService.getIssue(id);\n issue = issue.set('loading-edit', true);\n return this.rs.issues.getByRef(issue.getIn(['model', 'project']), issue.getIn(['model', 'ref'])).then((function(_this) {\n return function(editingIssue) {\n return _this.rs2.attachments.list(\"issue\", issue.get('id'), issue.getIn(['model', 'project'])).then(function(attachments) {\n _this.rootscope.$broadcast(\"genericform:edit\", {\n 'objType': 'issue',\n 'obj': editingIssue,\n 'project': _this.scope.project,\n 'sprintId': _this.scope.sprintId,\n 'attachments': attachments.toJS()\n });\n return issue = issue.set('loading-edit', false);\n });\n };\n })(this));\n };\n\n TaskboardController.prototype.deleteTask = function(id) {\n var task;\n task = this.taskboardTasksService.getTask(id);\n task = task.set('loading-delete', true);\n return this.rs.tasks.getByRef(task.getIn(['model', 'project']), task.getIn(['model', 'ref'])).then((function(_this) {\n return function(deletingTask) {\n var message, title;\n task = task.set('loading-delete', false);\n title = _this.translate.instant(\"TASK.TITLE_DELETE_ACTION\");\n message = deletingTask.subject;\n return _this.confirm.askOnDelete(title, message).then(function(askResponse) {\n var promise;\n promise = _this.repo.remove(deletingTask);\n promise.then(function() {\n _this.scope.$broadcast(\"taskboard:task:deleted\");\n return askResponse.finish();\n });\n return promise.then(null, function() {\n askResponse.finish(false);\n return this.confirm.notify(\"error\");\n });\n });\n };\n })(this));\n };\n\n TaskboardController.prototype.deleteIssue = function(id) {\n var issue;\n issue = this.taskboardIssuesService.getIssue(id);\n issue = issue.set('loading-delete', true);\n return this.rs.issues.getByRef(issue.getIn(['model', 'project']), issue.getIn(['model', 'ref'])).then((function(_this) {\n return function(deletingIssue) {\n var message, title;\n issue = issue.set('loading-delete', false);\n title = _this.translate.instant(\"ISSUES.ACTION_DELETE\");\n message = deletingIssue.subject;\n return _this.confirm.askOnDelete(title, message).then(function(askResponse) {\n var promise;\n promise = _this.repo.remove(deletingIssue);\n promise.then(function() {\n _this.scope.$broadcast(\"taskboard:issue:deleted\");\n return askResponse.finish();\n });\n return promise.then(null, function() {\n askResponse.finish(false);\n return this.confirm.notify(\"error\");\n });\n });\n };\n })(this));\n };\n\n TaskboardController.prototype.removeIssueFromSprint = function(id) {\n var issue;\n issue = this.taskboardIssuesService.getIssue(id);\n issue = issue.set('loading-delete', true);\n return this.rs.issues.getByRef(issue.getIn(['model', 'project']), issue.getIn(['model', 'ref'])).then((function(_this) {\n return function(removingIssue) {\n var message, title;\n issue = issue.set('loading-delete', false);\n title = _this.translate.instant(\"ISSUES.CONFIRM_DETACH_FROM_SPRINT.TITLE\");\n message = _this.translate.instant(\"ISSUES.CONFIRM_DETACH_FROM_SPRINT.MESSAGE\");\n message = _this.translate.instant(\"ISSUES.CONFIRM_DETACH_FROM_SPRINT.MESSAGE\", {\n sprintName: _this.scope.sprint.name\n });\n return _this.confirm.ask(title, null, message).then(function(askResponse) {\n var promise;\n removingIssue.milestone = null;\n promise = _this.repo.save(removingIssue);\n promise.then(function() {\n _this.taskboardIssuesService.remove(removingIssue);\n return askResponse.finish();\n });\n return promise.then(null, function() {\n askResponse.finish(false);\n return this.confirm.notify(\"error\");\n });\n });\n };\n })(this));\n };\n\n TaskboardController.prototype.taskMove = function(ctx, task, oldStatusId, usId, statusId, order) {\n var moveUpdateData, options, params, promise;\n this.scope.movingTask = true;\n task = this.taskboardTasksService.getTaskModel(task.get('id'));\n moveUpdateData = this.taskboardTasksService.move(task.id, usId, statusId, order);\n params = {\n status__is_archived: false,\n include_attachments: true\n };\n options = {\n headers: {\n \"set-orders\": JSON.stringify(moveUpdateData.set_orders)\n }\n };\n return promise = this.repo.save(task, true, params, options, true).then((function(_this) {\n return function(result) {\n var headers;\n if (result[0] && result[0].user_story) {\n _this.reloadUserStory(result[0].user_story);\n }\n _this.scope.movingTask = false;\n headers = result[1];\n if (headers && headers['taiga-info-order-updated']) {\n order = JSON.parse(headers['taiga-info-order-updated']);\n _this.taskboardTasksService.assignOrders(order);\n }\n _this.loadSprintStats();\n _this.generateFilters();\n if (_this.isFilterDataTypeSelected('status')) {\n return _this.loadTasks();\n }\n };\n })(this));\n };\n\n TaskboardController.prototype.reloadUserStory = function(userStoryId) {\n return this.rs.userstories.get(this.scope.project.id, userStoryId).then((function(_this) {\n return function(us) {\n return _this.scope.userstories = _.map(_this.scope.userstories, function(x) {\n if (x.id === us.id) {\n return us;\n } else {\n return x;\n }\n });\n };\n })(this));\n };\n\n TaskboardController.prototype.addNewTask = function(type, us) {\n switch (type) {\n case \"standard\":\n return this.rootscope.$broadcast(\"genericform:new\", {\n 'objType': 'task',\n 'project': this.scope.project,\n 'sprintId': this.scope.sprintId,\n 'usId': us != null ? us.id : void 0\n });\n case \"bulk\":\n return this.rootscope.$broadcast(\"taskform:bulk\", this.scope.sprintId, us != null ? us.id : void 0);\n }\n };\n\n TaskboardController.prototype.addNewIssue = function(type, us) {\n switch (type) {\n case \"standard\":\n return this.rootscope.$broadcast(\"genericform:new-or-existing\", {\n objType: 'issue',\n project: this.scope.project,\n sprintId: this.scope.sprintId,\n relatedField: 'milestone',\n relatedObjectId: this.scope.sprintId,\n targetName: this.scope.sprint.name\n });\n case \"standard\":\n return this.rootscope.$broadcast(\"taskform:new\", this.scope.sprintId, us != null ? us.id : void 0);\n case \"bulk\":\n return this.rootscope.$broadcast(\"issueform:bulk\", this.scope.projectId, this.scope.sprintId);\n }\n };\n\n TaskboardController.prototype.toggleFold = function(id, modelName) {\n if (modelName === 'issues') {\n return this.taskboardIssuesService.toggleFold(id);\n } else if (modelName === 'tasks') {\n return this.taskboardTasksService.toggleFold(id);\n }\n };\n\n TaskboardController.prototype.openUsersSelection = function(item) {\n var onClose;\n onClose = (function(_this) {\n return function(assignedUsers) {\n var userId;\n userId = assignedUsers.pop() || null;\n if (item.getName() === 'tasks') {\n item.assigned_to = userId;\n _this.taskboardTasksService.replaceModel(item);\n _this.repo.save(item).then(function() {\n _this.generateFilters();\n if (_this.isFilterDataTypeSelected('assigned_to') || _this.isFilterDataTypeSelected('role')) {\n return _this.loadTasks();\n }\n });\n }\n if (item.getName() === 'issues') {\n item.assigned_to = userId;\n _this.taskboardIssuesService.replaceModel(item);\n return _this.repo.save(item).then(function() {\n _this.generateFilters();\n if (_this.isFilterDataTypeSelected('assigned_to') || _this.isFilterDataTypeSelected('role')) {\n return _this.loadIssues();\n }\n });\n }\n };\n })(this);\n return this.lightboxFactory.create('tg-lb-select-user', {\n \"class\": \"lightbox lightbox-select-user\"\n }, {\n \"currentUsers\": [item.assigned_to],\n \"activeUsers\": this.scope.activeUsers,\n \"onClose\": onClose,\n \"single\": true,\n \"lbTitle\": this.translate.instant(\"COMMON.ASSIGNED_USERS.ADD\")\n });\n };\n\n TaskboardController.prototype.changeTaskAssignedTo = function(id) {\n var task;\n task = this.taskboardTasksService.getTaskModel(id);\n return this.openUsersSelection(task);\n };\n\n TaskboardController.prototype.changeIssueAssignedTo = function(id) {\n var issue;\n issue = this.taskboardIssuesService.getIssueModel(id);\n return this.openUsersSelection(issue);\n };\n\n TaskboardController.prototype.setRolePoints = function() {\n var computableRoles, getPoint, getRole, pointsByRole;\n computableRoles = _.filter(this.scope.project.roles, \"computable\");\n getRole = (function(_this) {\n return function(roleId) {\n roleId = parseInt(roleId, 10);\n return _.find(computableRoles, function(role) {\n return role.id === roleId;\n });\n };\n })(this);\n getPoint = (function(_this) {\n return function(pointId) {\n var poitnId;\n poitnId = parseInt(pointId, 10);\n return _.find(_this.scope.project.points, function(point) {\n return point.id === pointId;\n });\n };\n })(this);\n pointsByRole = _.reduce(this.scope.userstories, (function(_this) {\n return function(result, us, key) {\n _.forOwn(us.points, function(pointId, roleId) {\n var point, role;\n role = getRole(roleId);\n point = getPoint(pointId) || {\n value: 0\n };\n if (role) {\n if (!result[role.id]) {\n result[role.id] = role;\n result[role.id].points = 0;\n }\n return result[role.id].points += point.value;\n }\n });\n return result;\n };\n })(this), {});\n return this.scope.pointsByRole = Object.keys(pointsByRole).map(function(key) {\n return pointsByRole[key];\n });\n };\n\n TaskboardController.prototype.getIssuesOrderBy = function() {\n if (_.isString(this.location.search().order_by)) {\n return this.location.search().order_by;\n } else {\n return \"created_date\";\n }\n };\n\n return TaskboardController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"TaskboardController\", TaskboardController);\n\n TaskboardDirective = function($rootscope) {\n var link;\n link = function($scope, $el, $attrs) {\n var $ctrl, tableBodyDom;\n $ctrl = $el.controller();\n $el.on(\"click\", \".toggle-analytics-visibility\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n target.toggleClass('active');\n return $rootscope.$broadcast(\"taskboard:graph:toggle-visibility\");\n });\n tableBodyDom = $el.find('[data-js=\"taskboard-table-hscroll\"]');\n tableBodyDom.on(\"scroll\", function(event) {\n var tableHeaderDom, target;\n target = angular.element(event.currentTarget);\n tableHeaderDom = $el.find(\".taskboard-table-inner\");\n return tableHeaderDom.css(\"left\", -1 * target.scrollLeft());\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgTaskboard\", [\"$rootScope\", TaskboardDirective]);\n\n TaskboardSquishColumnDirective = function(rs) {\n var avatarWidth, firstLoad, gridGap, horizontalPadding, link, maxColumnWidth, maxRows, minWidth, zoom0ColumnWidth;\n gridGap = 5;\n horizontalPadding = 32;\n avatarWidth = 30;\n maxColumnWidth = 292;\n zoom0ColumnWidth = 182;\n minWidth = avatarWidth + horizontalPadding;\n maxRows = 3;\n firstLoad = false;\n link = function($scope, $el, $attrs) {\n var $foldStatusArchived, getCeilWidth, recalculateStatusColumnWidth, recalculateTaskboardWidth, setStatusColumnWidth;\n $scope.$watch(\"ctrl.zoom\", (function(_this) {\n return function() {\n if (firstLoad) {\n return recalculateTaskboardWidth();\n }\n };\n })(this));\n $scope.$on(\"sprint:task:moved\", (function(_this) {\n return function() {\n return recalculateTaskboardWidth();\n };\n })(this));\n $scope.$watch(\"usTasks\", function() {\n if ($scope.project) {\n $scope.statusesFolded = rs.tasks.getStatusColumnModes($scope.project.id);\n $scope.usFolded = rs.tasks.getUsRowModes($scope.project.id, $scope.sprintId);\n return recalculateTaskboardWidth();\n }\n });\n $scope.foldStatus = function(status) {\n $scope.statusesFolded[status.id] = !!!$scope.statusesFolded[status.id];\n rs.tasks.storeStatusColumnModes($scope.projectId, $scope.statusesFolded);\n return recalculateTaskboardWidth();\n };\n $foldStatusArchived = function(status) {\n return $scope.foldStatus(status);\n };\n $scope.foldUs = function(rowId) {\n $scope.usFolded[rowId] = !!!$scope.usFolded[rowId];\n rs.tasks.storeUsRowModes($scope.projectId, $scope.sprintId, $scope.usFolded);\n return recalculateTaskboardWidth();\n };\n getCeilWidth = (function(_this) {\n return function(usId, statusId) {\n var columns, isStatusFolded, isUSFolded, tasks, width;\n isStatusFolded = !!$scope.statusesFolded[statusId];\n isUSFolded = !!$scope.usFolded[usId];\n if (usId) {\n tasks = $scope.usTasks.getIn([usId.toString(), statusId.toString()]).size;\n } else {\n tasks = $scope.usTasks.getIn(['null', statusId.toString()]).size;\n }\n if (tasks && (isUSFolded || isStatusFolded)) {\n if (isUSFolded) {\n columns = Math.ceil(tasks / maxRows);\n width = avatarWidth * columns + ((columns - 1) * gridGap) + horizontalPadding;\n } else if (isStatusFolded) {\n width = avatarWidth;\n }\n } else {\n width = 0;\n }\n return width;\n };\n })(this);\n setStatusColumnWidth = (function(_this) {\n return function(statusId, width) {\n var column;\n column = $el.find(\".squish-status-\" + statusId);\n if (width < minWidth) {\n width = minWidth;\n }\n column.css('max-width', width);\n return width;\n };\n })(this);\n recalculateStatusColumnWidth = (function(_this) {\n return function(statusId) {\n var folded, initialWidth, isStatusFolded, statusFoldedWidth;\n isStatusFolded = !!$scope.statusesFolded[statusId];\n initialWidth = 0;\n if (isStatusFolded) {\n initialWidth = avatarWidth;\n } else {\n initialWidth = maxColumnWidth;\n if (Number($scope.ctrl.zoomLevel) === 0) {\n initialWidth = zoom0ColumnWidth;\n }\n }\n folded = !!$scope.statusesFolded[statusId];\n statusFoldedWidth = getCeilWidth(null, statusId);\n if (statusFoldedWidth < initialWidth) {\n statusFoldedWidth = initialWidth;\n }\n _.forEach($scope.userstories, function(us) {\n var isUSFolded, width;\n isUSFolded = !!$scope.usFolded[us.id];\n width = getCeilWidth(us.id, statusId);\n if (width > statusFoldedWidth) {\n return statusFoldedWidth = width;\n }\n });\n return setStatusColumnWidth(statusId, statusFoldedWidth);\n };\n })(this);\n return recalculateTaskboardWidth = (function(_this) {\n return function() {\n var total;\n total = _.reduce($scope.taskStatusList, function(acc, status) {\n return acc + recalculateStatusColumnWidth(status.id) + 5;\n }, 0);\n $el.find('.taskboard-table-inner').css(\"width\", maxColumnWidth + total);\n if (!firstLoad) {\n requestAnimationFrame(function() {\n return $el.addClass('animations');\n });\n }\n firstLoad = true;\n };\n })(this);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgTaskboardSquishColumn\", [\"$tgResources\", TaskboardSquishColumnDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TaskboardSortableDirective, bindOnce, groupBy, mixOf, module, scopeDefer, taiga, toggleText;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n toggleText = this.taiga.toggleText;\n\n scopeDefer = this.taiga.scopeDefer;\n\n bindOnce = this.taiga.bindOnce;\n\n groupBy = this.taiga.groupBy;\n\n module = angular.module(\"taigaBacklog\");\n\n TaskboardSortableDirective = function($repo, $rs, $rootscope, $translate) {\n var link;\n link = function($scope, $el, $attrs) {\n var unwatch;\n return unwatch = $scope.$watch(\"usTasks\", function(usTasks) {\n var containers, deleteElement, drake, filterError, initialContainer, itemEl, newParentScope, oldParentScope, scroll, tdom;\n if (!usTasks || !usTasks.size) {\n return;\n }\n unwatch();\n if (!($scope.project.my_permissions.indexOf(\"modify_task\") > -1)) {\n return;\n }\n oldParentScope = null;\n newParentScope = null;\n itemEl = null;\n tdom = $el;\n filterError = function() {\n var text;\n text = $translate.instant(\"BACKLOG.SORTABLE_FILTER_ERROR\");\n return $tgConfirm.notify(\"error\", text);\n };\n deleteElement = function(itemEl) {\n itemEl.off();\n return itemEl.remove();\n };\n containers = _.map($el.find('.taskboard-column'), function(item) {\n return item;\n });\n drake = dragula(containers, {\n copySortSource: false,\n copy: false,\n accepts: function(el, target) {\n return !$(target).hasClass('taskboard-row-title-box');\n },\n moves: function(item) {\n return $(item).is('tg-card');\n }\n });\n initialContainer = null;\n drake.on('shadow', function(item) {\n return $(item).removeClass('folded-dragging');\n });\n drake.on('over', function(item, container) {\n if (!initialContainer) {\n return initialContainer = container;\n } else if (container !== initialContainer) {\n return $(container).addClass('target-drop');\n }\n });\n drake.on('out', function(item, container) {\n if (container !== initialContainer) {\n return $(container).removeClass('target-drop');\n }\n });\n drake.on('drag', function(item) {\n oldParentScope = $(item).parent().scope();\n if ($(item).width() === 30) {\n $(item).addClass('folded-dragging');\n }\n if ($el.hasClass(\"active-filters\")) {\n filterError();\n setTimeout((function() {\n return drake.cancel(true);\n }), 0);\n return false;\n }\n });\n drake.on('dragend', function(item) {\n var itemIndex, itemTask, newStatusId, newUsId, oldStatusId, oldUsId, parentEl;\n parentEl = $(item).parent();\n itemEl = $(item);\n itemTask = $scope.taskMap.get(Number(item.dataset.id));\n itemIndex = itemEl.index();\n newParentScope = parentEl.scope();\n oldUsId = oldParentScope.us ? oldParentScope.us.id : null;\n oldStatusId = oldParentScope.st.id;\n newUsId = newParentScope.us ? newParentScope.us.id : null;\n newStatusId = newParentScope.st.id;\n if (initialContainer !== parentEl) {\n $(parentEl).addClass('new');\n $(parentEl).one('animationend', function() {\n return $(parentEl).removeClass('new');\n });\n }\n if (newStatusId !== oldStatusId || newUsId !== oldUsId) {\n deleteElement(itemEl);\n }\n return $scope.$apply(function() {\n var tableBody;\n tableBody = $('.taskboard-table-body');\n tableBody.addClass('moving');\n setTimeout(function() {\n return tableBody.removeClass('moving');\n }, 1000);\n return $rootscope.$broadcast(\"taskboard:task:move\", itemTask, itemTask.getIn(['model', 'status']), newUsId, newStatusId, itemIndex);\n });\n });\n scroll = autoScroll([$('.taskboard-table-body')[0]], {\n margin: 100,\n pixels: 30,\n scrollWhenOutside: true,\n autoScroll: function() {\n return this.down && drake.dragging;\n }\n });\n return $scope.$on(\"$destroy\", function() {\n $el.off();\n return drake.destroy();\n });\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgTaskboardSortable\", [\"$tgRepo\", \"$tgResources\", \"$rootScope\", \"$translate\", TaskboardSortableDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TaskboardIssuesService, groupBy,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n groupBy = this.taiga.groupBy;\n\n TaskboardIssuesService = (function(superClass) {\n extend(TaskboardIssuesService, superClass);\n\n TaskboardIssuesService.$inject = [];\n\n function TaskboardIssuesService() {\n this.reset();\n }\n\n TaskboardIssuesService.prototype.reset = function() {\n this.foldStatusChanged = {};\n return this.issuesRaw = [];\n };\n\n TaskboardIssuesService.prototype.init = function(project, usersById, issueStatusById) {\n this.issueStatusById = issueStatusById;\n this.project = project;\n return this.usersById = usersById;\n };\n\n TaskboardIssuesService.prototype.resetFolds = function() {\n this.foldStatusChanged = {};\n return this.refresh();\n };\n\n TaskboardIssuesService.prototype.toggleFold = function(issueId) {\n this.foldStatusChanged[issueId] = !this.foldStatusChanged[issueId];\n return this.refresh();\n };\n\n TaskboardIssuesService.prototype.add = function(issue) {\n this.issuesRaw = this.issuesRaw.concat(issue);\n return this.refresh();\n };\n\n TaskboardIssuesService.prototype.remove = function(issue) {\n var item, key, ref;\n ref = this.issuesRaw;\n for (key in ref) {\n item = ref[key];\n if (issue.id === item.id) {\n this.issuesRaw.splice(key, 1);\n this.refresh();\n return;\n }\n }\n };\n\n TaskboardIssuesService.prototype.set = function(issues) {\n this.issuesRaw = issues;\n return this.refresh();\n };\n\n TaskboardIssuesService.prototype.getIssue = function(id) {\n return this.milestoneIssues.find(function(issue) {\n return issue.get('id') === id;\n });\n };\n\n TaskboardIssuesService.prototype.getIssueModel = function(id) {\n return _.find(this.issuesRaw, function(issue) {\n return issue.id === id;\n });\n };\n\n TaskboardIssuesService.prototype.replaceModel = function(issue) {\n this.issuesRaw = _.map(this.issuesRaw, function(item) {\n if (issue.id === item.id) {\n return issue;\n } else {\n return item;\n }\n });\n return this.refresh();\n };\n\n TaskboardIssuesService.prototype.refresh = function() {\n var i, issue, issueModel, issues, len, ref;\n issues = [];\n ref = this.issuesRaw;\n for (i = 0, len = ref.length; i < len; i++) {\n issueModel = ref[i];\n issue = {};\n issue.foldStatusChanged = this.foldStatusChanged[issueModel.id];\n issue.model = issueModel.getAttrs();\n issue.modelName = issueModel.getName();\n issue.id = issueModel.id;\n issue.status = this.issueStatusById[issueModel.status];\n issue.images = _.filter(issue.model.attachments, function(it) {\n return !!it.thumbnail_card_url;\n });\n issue.assigned_to = this.usersById[issueModel.assigned_to];\n issue.colorized_tags = _.map(issue.model.tags, function(tag) {\n return {\n name: tag[0],\n color: tag[1]\n };\n });\n issues.push(issue);\n }\n return this.milestoneIssues = Immutable.fromJS(issues);\n };\n\n return TaskboardIssuesService;\n\n })(taiga.Service);\n\n angular.module(\"taigaKanban\").service(\"tgTaskboardIssues\", TaskboardIssuesService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TaskboardTasksService, groupBy,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n groupBy = this.taiga.groupBy;\n\n TaskboardTasksService = (function(superClass) {\n extend(TaskboardTasksService, superClass);\n\n TaskboardTasksService.$inject = [];\n\n function TaskboardTasksService() {\n this.reset();\n }\n\n TaskboardTasksService.prototype.reset = function() {\n this.tasksRaw = [];\n this.foldStatusChanged = {};\n this.usTasks = Immutable.Map();\n this.tasksByUs = Immutable.Map();\n return this.taskMap = Immutable.Map();\n };\n\n TaskboardTasksService.prototype.init = function(project, usersById) {\n this.project = project;\n return this.usersById = usersById;\n };\n\n TaskboardTasksService.prototype.resetFolds = function() {\n this.foldStatusChanged = {};\n return this.refresh();\n };\n\n TaskboardTasksService.prototype.toggleFold = function(taskId) {\n this.foldStatusChanged[taskId] = !this.foldStatusChanged[taskId];\n return this.refresh();\n };\n\n TaskboardTasksService.prototype.add = function(task) {\n this.tasksRaw = this.tasksRaw.concat(task);\n return this.refresh();\n };\n\n TaskboardTasksService.prototype.set = function(tasks) {\n this.tasksRaw = tasks;\n this.refreshRawOrder();\n return this.refresh();\n };\n\n TaskboardTasksService.prototype.setUserstories = function(userstories) {\n return this.userstories = userstories;\n };\n\n TaskboardTasksService.prototype.refreshRawOrder = function() {\n var i, len, ref, results, task;\n this.order = {};\n ref = this.tasksRaw;\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n task = ref[i];\n results.push(this.order[task.id] = task.taskboard_order);\n }\n return results;\n };\n\n TaskboardTasksService.prototype.assignOrders = function(order) {\n order = _.invert(order);\n this.order = _.assign(this.order, order);\n return this.refresh();\n };\n\n TaskboardTasksService.prototype.getTask = function(id) {\n return this.taskMap.get(id);\n };\n\n TaskboardTasksService.prototype.replace = function(task) {\n return this.taskMap = this.taskMap.set(task.get('id'), task);\n };\n\n TaskboardTasksService.prototype.getTaskModel = function(id) {\n return _.find(this.tasksRaw, function(task) {\n return task.id === id;\n });\n };\n\n TaskboardTasksService.prototype.replaceModel = function(task) {\n this.tasksRaw = _.map(this.tasksRaw, function(it) {\n if (task.id === it.id) {\n return task;\n } else {\n return it;\n }\n });\n return this.refresh();\n };\n\n TaskboardTasksService.prototype.move = function(id, usId, statusId, index) {\n var afterDestination, beforeDestination, i, it, j, key, len, len1, previous, previousWithTheSameOrder, setOrders, taksWithoutMoved, task, taskByUsStatus;\n task = this.getTaskModel(id);\n taskByUsStatus = _.filter(this.tasksRaw, (function(_this) {\n return function(task) {\n return task.status === statusId && task.user_story === usId;\n };\n })(this));\n taskByUsStatus = _.sortBy(taskByUsStatus, (function(_this) {\n return function(it) {\n return _this.order[it.id];\n };\n })(this));\n taksWithoutMoved = _.filter(taskByUsStatus, (function(_this) {\n return function(it) {\n return it.id !== id;\n };\n })(this));\n beforeDestination = _.slice(taksWithoutMoved, 0, index);\n afterDestination = _.slice(taksWithoutMoved, index);\n setOrders = {};\n previous = beforeDestination[beforeDestination.length - 1];\n previousWithTheSameOrder = _.filter(beforeDestination, (function(_this) {\n return function(it) {\n return _this.order[it.id] === _this.order[previous.id];\n };\n })(this));\n if (previousWithTheSameOrder.length > 1) {\n for (i = 0, len = previousWithTheSameOrder.length; i < len; i++) {\n it = previousWithTheSameOrder[i];\n setOrders[it.id] = this.order[it.id];\n }\n }\n if (!previous) {\n this.order[task.id] = 0;\n } else if (previous) {\n this.order[task.id] = this.order[previous.id] + 1;\n }\n for (key = j = 0, len1 = afterDestination.length; j < len1; key = ++j) {\n it = afterDestination[key];\n this.order[it.id] = this.order[task.id] + key + 1;\n }\n task.status = statusId;\n task.user_story = usId;\n task.taskboard_order = this.order[task.id];\n this.refresh();\n return {\n \"task_id\": task.id,\n \"order\": this.order[task.id],\n \"set_orders\": setOrders\n };\n };\n\n TaskboardTasksService.prototype.refresh = function() {\n var i, j, k, len, len1, len2, model, ref, status, task, taskModel, taskStatusList, tasks, us, usTasks;\n if (!this.project) {\n return;\n }\n this.tasksRaw = _.sortBy(this.tasksRaw, (function(_this) {\n return function(it) {\n return _this.order[it.id];\n };\n })(this));\n tasks = this.tasksRaw;\n taskStatusList = _.sortBy(this.project.task_statuses, \"order\");\n usTasks = {};\n ref = _.union(this.userstories, [\n {\n id: null\n }\n ]);\n for (i = 0, len = ref.length; i < len; i++) {\n us = ref[i];\n usTasks[us.id] = {};\n for (j = 0, len1 = taskStatusList.length; j < len1; j++) {\n status = taskStatusList[j];\n usTasks[us.id][status.id] = [];\n }\n }\n for (k = 0, len2 = tasks.length; k < len2; k++) {\n taskModel = tasks[k];\n if ((usTasks[taskModel.user_story] != null) && (usTasks[taskModel.user_story][taskModel.status] != null)) {\n task = {};\n if (!this.tasksByUs.get(taskModel.user_story)) {\n this.tasksByUs = this.tasksByUs.set(taskModel.user_story, Immutable.fromJS([taskModel.id]));\n } else {\n this.tasksByUs = this.tasksByUs.set(taskModel.user_story, this.tasksByUs.get(taskModel.user_story).push(taskModel.id));\n }\n model = taskModel.getAttrs();\n task.foldStatusChanged = this.foldStatusChanged[taskModel.id];\n task.model = model;\n task.images = _.filter(model.attachments, function(it) {\n return !!it.thumbnail_card_url;\n });\n task.id = taskModel.id;\n task.assigned_to = this.usersById[taskModel.assigned_to];\n task.colorized_tags = _.map(task.model.tags, (function(_this) {\n return function(tag) {\n return {\n name: tag[0],\n color: tag[1]\n };\n };\n })(this));\n this.taskMap = this.taskMap.set(task.id, Immutable.fromJS(task));\n usTasks[taskModel.user_story][taskModel.status].push(task.id);\n }\n }\n return this.usTasks = Immutable.fromJS(usTasks);\n };\n\n return TaskboardTasksService;\n\n })(taiga.Service);\n\n angular.module(\"taigaKanban\").service(\"tgTaskboardTasks\", TaskboardTasksService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var KanbanUserstoriesService, groupBy,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n groupBy = this.taiga.groupBy;\n\n KanbanUserstoriesService = (function(superClass) {\n extend(KanbanUserstoriesService, superClass);\n\n KanbanUserstoriesService.$inject = [\"$translate\"];\n\n function KanbanUserstoriesService(translate) {\n this.translate = translate;\n this.reset();\n }\n\n KanbanUserstoriesService.prototype.reset = function(resetSwimlanesList, resetArchivedStatus, resetHideStatud) {\n if (resetSwimlanesList == null) {\n resetSwimlanesList = true;\n }\n if (resetArchivedStatus == null) {\n resetArchivedStatus = true;\n }\n if (resetHideStatud == null) {\n resetHideStatud = true;\n }\n this.userstoriesRaw = [];\n this.swimlanes = [];\n this.foldStatusChanged = {};\n this.usByStatus = Immutable.Map();\n this.usMap = Immutable.Map();\n this.usByStatusSwimlanes = Immutable.Map();\n if (resetHideStatud) {\n this.statusHide = [];\n }\n if (resetArchivedStatus) {\n this.archivedStatus = [];\n }\n if (resetSwimlanesList) {\n return this.swimlanesList = Immutable.List();\n }\n };\n\n KanbanUserstoriesService.prototype.init = function(project, swimlanes, usersById) {\n this.project = project;\n this.swimlanes = swimlanes;\n return this.usersById = usersById;\n };\n\n KanbanUserstoriesService.prototype.resetFolds = function() {\n return this.foldStatusChanged = {};\n };\n\n KanbanUserstoriesService.prototype.toggleFold = function(usId) {\n this.foldStatusChanged[usId] = !this.foldStatusChanged[usId];\n return this.refreshUserStory(usId);\n };\n\n KanbanUserstoriesService.prototype.set = function(userstories) {\n this.userstoriesRaw = userstories;\n this.refreshRawOrder();\n return this.refresh();\n };\n\n KanbanUserstoriesService.prototype.initUsByStatusList = function(userstories) {\n var key, results, status, usModel;\n results = [];\n for (key in userstories) {\n usModel = userstories[key];\n status = String(usModel.status);\n if (!this.usByStatus.has(status)) {\n results.push(this.usByStatus = this.usByStatus.set(status, Immutable.List()));\n } else {\n results.push(void 0);\n }\n }\n return results;\n };\n\n KanbanUserstoriesService.prototype.remove = function(usModel) {\n var status;\n this.userstoriesRaw = this.userstoriesRaw.filter((function(_this) {\n return function(it) {\n return it.id !== usModel.id;\n };\n })(this));\n delete this.order[usModel.id];\n status = String(usModel.status);\n this.usMap = this.usMap[\"delete\"](usModel.id);\n this.usByStatus = this.usByStatus.set(status, this.usByStatus.get(status).filter((function(_this) {\n return function(id) {\n return id !== usModel.id;\n };\n })(this)));\n return this.refreshSwimlanes();\n };\n\n KanbanUserstoriesService.prototype.add = function(usList) {\n var key, status, us, usModel;\n if (!Array.isArray(usList)) {\n usList = [usList];\n }\n usList = _.sortBy(usList, ['kanban_order']);\n this.userstoriesRaw = this.userstoriesRaw.filter((function(_this) {\n return function(us) {\n return !usList.find(function(it) {\n return it.id === us.id;\n });\n };\n })(this));\n this.userstoriesRaw = this.userstoriesRaw.concat(usList);\n this.userstoriesRaw = this.userstoriesRaw.map((function(_this) {\n return function(us) {\n return us;\n };\n })(this));\n this.refreshRawOrder();\n this.userstoriesRaw = _.sortBy(this.userstoriesRaw, [\n (function(_this) {\n return function(it) {\n return _this.order[it.id];\n };\n })(this)\n ]);\n for (key in usList) {\n usModel = usList[key];\n us = this.retrieveUserStoryData(usModel);\n status = String(usModel.status);\n if (!this.usByStatus.has(status)) {\n this.usByStatus = this.usByStatus.set(status, Immutable.List());\n }\n if (!this.usMap.get(usModel.id)) {\n this.usMap = this.usMap.set(usModel.id, Immutable.fromJS(us));\n this.usByStatus = this.usByStatus.set(status, this.usByStatus.get(status).filter((function(_this) {\n return function(id) {\n return id !== usModel.id;\n };\n })(this)).push(usModel.id));\n }\n }\n return this.refreshSwimlanes();\n };\n\n KanbanUserstoriesService.prototype.addArchivedStatus = function(statusId) {\n return this.archivedStatus.push(statusId);\n };\n\n KanbanUserstoriesService.prototype.isUsInArchivedHiddenStatus = function(usId) {\n var status, us;\n us = this.usMap.get(usId);\n status = us != null ? us.getIn(['model', 'status']) : void 0;\n return this.archivedStatus.indexOf(status) !== -1 && this.statusHide.indexOf(status) !== -1;\n };\n\n KanbanUserstoriesService.prototype.hideStatus = function(statusId) {\n this.deleteStatus(statusId);\n return this.statusHide.push(statusId);\n };\n\n KanbanUserstoriesService.prototype.showStatus = function(statusId) {\n return _.remove(this.statusHide, function(it) {\n return it === statusId;\n });\n };\n\n KanbanUserstoriesService.prototype.getStatus = function(statusId, swimlaneId) {\n return _.filter(this.userstoriesRaw, (function(_this) {\n return function(it) {\n return it.status === statusId && (!swimlaneId || it.swimlane === swimlaneId);\n };\n })(this));\n };\n\n KanbanUserstoriesService.prototype.deleteStatus = function(statusId) {\n var toDelete;\n toDelete = _.filter(this.userstoriesRaw, function(us) {\n return us.status === statusId;\n });\n toDelete = _.map(function(it) {\n return it.id;\n });\n return this.archived = _.difference(this.archived, toDelete);\n };\n\n KanbanUserstoriesService.prototype.refreshRawOrder = function() {\n var i, it, len, ref, results;\n this.order = {};\n if (this.userstoriesRaw) {\n ref = this.userstoriesRaw;\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n it = ref[i];\n results.push(this.order[it.id] = it.kanban_order);\n }\n return results;\n }\n };\n\n KanbanUserstoriesService.prototype.assignOrders = function(order) {\n this.order = _.assign(this.order, order);\n return this.refresh(false);\n };\n\n KanbanUserstoriesService.prototype.move = function(usList, statusId, swimlaneId, index, previousCard, nextCard) {\n var afterDestination, i, initialLength, j, key, len, len1, previousUsIndex, previousUsOrder, us, usByStatus, usByStatusWithoutMoved, usId, usModel;\n usByStatus = this.getStatus(statusId, swimlaneId);\n usByStatus = _.sortBy(usByStatus, [\n (function(_this) {\n return function(it) {\n return _this.order[it.id];\n };\n })(this)\n ]);\n if (previousCard) {\n previousUsOrder = this.order[previousCard] + 1;\n previousUsIndex = (usByStatus.findIndex((function(_this) {\n return function(it) {\n return it.id === previousCard;\n };\n })(this))) + 1;\n } else {\n previousUsOrder = 0;\n previousUsIndex = 0;\n }\n usByStatusWithoutMoved = _.filter(usByStatus, function(listIt) {\n return !_.find(usList, function(moveIt) {\n return listIt.id === moveIt;\n });\n });\n afterDestination = _.slice(usByStatusWithoutMoved, previousUsIndex);\n initialLength = usList.length + 1;\n for (key = i = 0, len = afterDestination.length; i < len; key = ++i) {\n usModel = afterDestination[key];\n this.order[usModel.id] = previousUsOrder + initialLength + key;\n }\n for (key = j = 0, len1 = usList.length; j < len1; key = ++j) {\n usId = usList[key];\n usModel = this.getUsModel(usId);\n usModel.status = statusId;\n usModel.swimlane = swimlaneId;\n this.order[usModel.id] = previousUsOrder + key;\n us = this.retrieveUserStoryData(usModel);\n this.usMap = this.usMap.set(us.id, Immutable.fromJS(us));\n }\n this.refresh(false);\n return {\n statusId: statusId,\n swimlaneId: swimlaneId,\n afterUserstoryId: previousCard,\n beforeUserstoryId: nextCard,\n bulkUserstories: usList\n };\n };\n\n KanbanUserstoriesService.prototype.moveToEnd = function(id, statusId) {\n var us;\n us = this.getUsModel(id);\n this.order[us.id] = -1;\n us.status = statusId;\n us.kanban_order = this.order[us.id];\n this.refresh(false);\n return {\n \"us_id\": us.id,\n \"order\": -1\n };\n };\n\n KanbanUserstoriesService.prototype.replace = function(us) {\n return this.usMap = this.usMap.set(us.get('id'), us);\n };\n\n KanbanUserstoriesService.prototype.replaceModel = function(usModel) {\n var us;\n this.userstoriesRaw = _.map(this.userstoriesRaw, function(usItem) {\n if (usModel.id === usItem.id) {\n return usModel;\n } else {\n return usItem;\n }\n });\n us = this.retrieveUserStoryData(usModel);\n return this.usMap = this.usMap.set(usModel.id, Immutable.fromJS(us));\n };\n\n KanbanUserstoriesService.prototype.getUs = function(id) {\n return this.usMap.get(id);\n };\n\n KanbanUserstoriesService.prototype.getUsModel = function(id) {\n return _.find(this.userstoriesRaw, function(us) {\n return us.id === id;\n });\n };\n\n KanbanUserstoriesService.prototype.refreshUserStory = function(usId) {\n var us, usModel;\n usModel = this.getUsModel(usId);\n us = this.retrieveUserStoryData(usModel);\n return this.usMap = this.usMap.set(usId, Immutable.fromJS(us));\n };\n\n KanbanUserstoriesService.prototype.retrieveUserStoryData = function(usModel) {\n var model, us;\n us = {};\n model = usModel.getAttrs();\n us.foldStatusChanged = this.foldStatusChanged[usModel.id];\n us.model = model;\n us.images = _.filter(model.attachments, function(it) {\n return !!it.thumbnail_card_url;\n });\n us.id = usModel.id;\n us.swimlane = usModel.swimlane;\n us.assigned_to = this.usersById[usModel.assigned_to];\n us.assigned_users = [];\n usModel.assigned_users.forEach((function(_this) {\n return function(assignedUserId) {\n var assignedUserData;\n assignedUserData = _this.usersById[assignedUserId];\n if (assignedUserData) {\n return us.assigned_users.push(assignedUserData);\n }\n };\n })(this));\n us.assigned_users_preview = us.assigned_users.slice(0, 3);\n us.colorized_tags = _.map(us.model.tags, (function(_this) {\n return function(tag) {\n return {\n name: tag[0],\n color: tag[1]\n };\n };\n })(this));\n return us;\n };\n\n KanbanUserstoriesService.prototype.refresh = function(refreshUsMap, refreshSwimlanes) {\n var collection, key, ref, us, usModel;\n if (refreshUsMap == null) {\n refreshUsMap = true;\n }\n if (refreshSwimlanes == null) {\n refreshSwimlanes = true;\n }\n this.userstoriesRaw = _.sortBy(this.userstoriesRaw, [\n (function(_this) {\n return function(it) {\n return _this.order[it.id];\n };\n })(this)\n ]);\n collection = {};\n ref = this.userstoriesRaw;\n for (key in ref) {\n usModel = ref[key];\n us = this.retrieveUserStoryData(usModel);\n if (!collection[usModel.status]) {\n collection[usModel.status] = [];\n }\n collection[usModel.status] = collection[usModel.status].filter((function(_this) {\n return function(id) {\n return id !== usModel.id;\n };\n })(this));\n collection[usModel.status].push(usModel.id);\n if (refreshUsMap) {\n this.usMap = this.usMap.set(usModel.id, Immutable.fromJS(us));\n }\n }\n this.usByStatus = Immutable.fromJS(collection);\n if (refreshSwimlanes) {\n return this.refreshSwimlanes();\n }\n };\n\n KanbanUserstoriesService.prototype.refreshSwimlanes = function() {\n var emptySwimlane, emptySwimlaneExists, userstoriesNoSwimlane;\n if (!this.swimlanes || !this.swimlanes.length) {\n return;\n }\n this.swimlanesList = Immutable.List();\n this.usByStatusSwimlanes = Immutable.Map();\n userstoriesNoSwimlane = this.userstoriesRaw.filter((function(_this) {\n return function(us) {\n return us.swimlane === null;\n };\n })(this));\n emptySwimlaneExists = this.swimlanesList.filter((function(_this) {\n return function(swimlane) {\n return swimlane.id === null;\n };\n })(this));\n if (userstoriesNoSwimlane.length && !emptySwimlaneExists.size) {\n this.swimlanes.forEach((function(_this) {\n return function(swimlane) {\n if (!_this.swimlanesList.includes(swimlane)) {\n return _this.swimlanesList = _this.swimlanesList.push(swimlane);\n }\n };\n })(this));\n emptySwimlane = {\n id: -1,\n kanban_order: 1,\n name: this.translate.instant(\"KANBAN.UNCLASSIFIED_USER_STORIES\")\n };\n this.swimlanesList = this.swimlanesList.insert(0, emptySwimlane);\n } else {\n this.swimlanes.forEach((function(_this) {\n return function(swimlane) {\n if (!_this.swimlanesList.includes(swimlane)) {\n return _this.swimlanesList = _this.swimlanesList.push(swimlane);\n }\n };\n })(this));\n }\n return this.swimlanesList.forEach((function(_this) {\n return function(swimlane) {\n var swimlaneUsByStatus;\n swimlaneUsByStatus = Immutable.Map();\n _this.usByStatus.forEach(function(usList, statusId) {\n var usListSwimlanes;\n usListSwimlanes = usList.filter(function(usId) {\n var swimlaneId, us;\n us = _this.usMap.get(usId);\n swimlaneId = swimlane.id === -1 ? null : swimlane.id;\n return us.getIn(['model', 'swimlane']) === swimlaneId;\n });\n return swimlaneUsByStatus = swimlaneUsByStatus.set(Number(statusId), usListSwimlanes);\n });\n return _this.usByStatusSwimlanes = _this.usByStatusSwimlanes.set(swimlane.id, swimlaneUsByStatus);\n };\n })(this));\n };\n\n return KanbanUserstoriesService;\n\n })(taiga.Service);\n\n angular.module(\"taigaKanban\").service(\"tgKanbanUserstories\", KanbanUserstoriesService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CardActionsDirective, CardAssignedToDirective, CardDataDirective, CardSvgTemplate, KanbanArchivedShowStatusHeaderDirective, KanbanArchivedStatusIntroDirective, KanbanController, KanbanDirective, KanbanSquishColumnDirective, KanbanSwimlaneDirective, KanbanTaskboardColumnDirective, KanbanWipLimitDirective, bindMethods, bindOnce, debounceLeading, groupBy, mixOf, module, scopeDefer, taiga, timeout, toggleText,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n toggleText = this.taiga.toggleText;\n\n scopeDefer = this.taiga.scopeDefer;\n\n bindOnce = this.taiga.bindOnce;\n\n groupBy = this.taiga.groupBy;\n\n timeout = this.taiga.timeout;\n\n bindMethods = this.taiga.bindMethods;\n\n debounceLeading = this.taiga.debounceLeading;\n\n module = angular.module(\"taigaKanban\");\n\n KanbanController = (function(superClass) {\n extend(KanbanController, superClass);\n\n KanbanController.prototype.excludeFilters = [\"status\"];\n\n KanbanController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"tgAppMetaService\", \"$tgNavUrls\", \"$tgEvents\", \"$tgAnalytics\", \"$translate\", \"tgErrorHandlingService\", \"$tgModel\", \"tgKanbanUserstories\", \"$tgStorage\", \"tgFilterRemoteStorageService\", \"tgProjectService\", \"tgLightboxFactory\", \"tgLoader\", \"$timeout\"];\n\n KanbanController.prototype.storeCustomFiltersName = 'kanban-custom-filters';\n\n KanbanController.prototype.storeFiltersName = 'kanban-filters';\n\n KanbanController.prototype.validQueryParams = ['exclude_tags', 'tags', 'exclude_assigned_users', 'assigned_users', 'exclude_role', 'role', 'exclude_epic', 'epic', 'exclude_owner', 'owner'];\n\n function KanbanController(scope, rootscope, repo, confirm, rs1, rs2, params1, q, location, appMetaService, navUrls, events, analytics, translate, errorHandlingService, model1, kanbanUserstoriesService1, storage, filterRemoteStorageService, projectService1, lightboxFactory, tgLoader, timeout1) {\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs1;\n this.rs2 = rs2;\n this.params = params1;\n this.q = q;\n this.location = location;\n this.appMetaService = appMetaService;\n this.navUrls = navUrls;\n this.events = events;\n this.analytics = analytics;\n this.translate = translate;\n this.errorHandlingService = errorHandlingService;\n this.model = model1;\n this.kanbanUserstoriesService = kanbanUserstoriesService1;\n this.storage = storage;\n this.filterRemoteStorageService = filterRemoteStorageService;\n this.projectService = projectService1;\n this.lightboxFactory = lightboxFactory;\n this.tgLoader = tgLoader;\n this.timeout = timeout1;\n this.renderUserStories = bind(this.renderUserStories, this);\n this.changeUsAssignedUsers = bind(this.changeUsAssignedUsers, this);\n bindMethods(this);\n this.kanbanUserstoriesService.reset();\n this.openFilter = false;\n this.selectedUss = {};\n this.movedUs = [];\n this.foldedSwimlane = Immutable.Map();\n this.isFirstLoad = true;\n this.renderBatching = true;\n this.isLightboxOpened = false;\n this.isRefreshNeeded = false;\n if (this.applyStoredFilters(this.params.pslug, \"kanban-filters\", this.validQueryParams)) {\n return;\n }\n this.scope.sectionName = this.translate.instant(\"KANBAN.SECTION_NAME\");\n this.initializeEventHandlers();\n taiga.defineImmutableProperty(this.scope, \"usByStatus\", (function(_this) {\n return function() {\n return _this.kanbanUserstoriesService.usByStatus;\n };\n })(this));\n taiga.defineImmutableProperty(this.scope, \"usMap\", (function(_this) {\n return function() {\n return _this.kanbanUserstoriesService.usMap;\n };\n })(this));\n taiga.defineImmutableProperty(this.scope, \"usByStatusSwimlanes\", (function(_this) {\n return function() {\n return _this.kanbanUserstoriesService.usByStatusSwimlanes;\n };\n })(this));\n taiga.defineImmutableProperty(this.scope, \"swimlanesList\", (function(_this) {\n return function() {\n return _this.kanbanUserstoriesService.swimlanesList;\n };\n })(this));\n }\n\n KanbanController.prototype.cleanSelectedUss = function() {\n var key, results;\n results = [];\n for (key in this.selectedUss) {\n results.push(this.selectedUss[key] = false);\n }\n return results;\n };\n\n KanbanController.prototype.toggleSelectedUs = function(usId) {\n return this.selectedUss[usId] = !this.selectedUss[usId];\n };\n\n KanbanController.prototype.firstLoad = function() {\n var promise;\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n var description, title;\n title = _this.translate.instant(\"KANBAN.PAGE_TITLE\", {\n projectName: _this.scope.project.name\n });\n description = _this.translate.instant(\"KANBAN.PAGE_DESCRIPTION\", {\n projectName: _this.scope.project.name,\n projectDescription: _this.scope.project.description\n });\n return _this.appMetaService.setAll(title, description);\n };\n })(this));\n return promise.then(null, this.onInitialDataError.bind(this));\n };\n\n KanbanController.prototype.setZoom = function(zoomLevel, zoom) {\n var previousZoomLevel;\n zoomLevel = Number(zoomLevel);\n if (this.zoomLevel === zoomLevel) {\n return null;\n }\n previousZoomLevel = this.zoomLevel;\n this.zoomLevel = zoomLevel;\n this.zoom = zoom;\n if (this.isFirstLoad) {\n return this.firstLoad().then((function(_this) {\n return function() {\n _this.isFirstLoad = false;\n return _this.kanbanUserstoriesService.resetFolds();\n };\n })(this));\n } else if (this.zoomLevel > 2 && previousZoomLevel <= 2) {\n this.zoomLoading = true;\n return this.loadUserstories().then((function(_this) {\n return function() {\n _this.zoomLoading = false;\n return _this.kanbanUserstoriesService.resetFolds();\n };\n })(this));\n }\n };\n\n KanbanController.prototype.filtersReloadContent = debounceLeading(100, function() {\n return this.loadUserstories().then((function(_this) {\n return function(result) {\n if (!result) {\n return;\n }\n if (_this.scope.swimlanesList.size && !result.length) {\n return _this.foldedSwimlane = _this.foldedSwimlane.set(_this.scope.swimlanesList.first().id.toString(), false);\n }\n };\n })(this));\n });\n\n KanbanController.prototype.moveToTopDropdown = function(us) {\n return this.moveUsToTop(us.toJS().model);\n };\n\n KanbanController.prototype.moveUsToTop = function(uss) {\n var nextUsId, us, userstories;\n if (!Array.isArray(uss)) {\n uss = [uss];\n }\n us = uss[0];\n nextUsId = null;\n userstories = [];\n this.movedUs.push(us.id);\n this.timeout((function(_this) {\n return function() {\n return _this.movedUs = [];\n };\n })(this), 1000, false);\n if (us.swimlane) {\n userstories = this.scope.usByStatusSwimlanes.getIn([us.swimlane, us.status]);\n } else {\n userstories = this.scope.usByStatus.get(us.status.toString());\n }\n if (userstories && userstories.size) {\n nextUsId = userstories.get(0);\n }\n if (nextUsId) {\n return this.moveUs(null, uss, us.status, us.swimlane, 0, null, nextUsId);\n }\n };\n\n KanbanController.prototype.initializeEventHandlers = function() {\n this.scope.$on(\"usform:new:success\", (function(_this) {\n return function(event, us, position) {\n if (position == null) {\n position = 'bottom';\n }\n _this.refreshTagsColors().then(function() {\n _this.kanbanUserstoriesService.add(us);\n _this.scope.$broadcast(\"redraw:wip\");\n if (position === 'top') {\n return _this.moveUsToTop(us);\n }\n });\n return _this.analytics.trackEvent(\"userstory\", \"create\", \"create userstory on kanban\", 1);\n };\n })(this));\n this.scope.$on(\"usform:bulk:success\", (function(_this) {\n return function(event, uss, position) {\n if (position == null) {\n position = 'bottom';\n }\n _this.confirm.notify(\"success\");\n _this.refreshTagsColors().then(function() {\n _this.kanbanUserstoriesService.add(uss);\n _this.scope.$broadcast(\"redraw:wip\");\n if (position === 'top') {\n return _this.moveUsToTop(uss);\n }\n });\n return _this.analytics.trackEvent(\"userstory\", \"create\", \"bulk create userstory on kanban\", 1);\n };\n })(this));\n this.scope.$on(\"usform:edit:success\", (function(_this) {\n return function(event, us) {\n return _this.refreshTagsColors().then(function() {\n var lastUsId, newOrder, oldStatus, status;\n oldStatus = _this.kanbanUserstoriesService.getUsModel(us.id).status;\n if (oldStatus !== us.status) {\n status = _this.scope.usByStatus.get(us.status.toString());\n if (status) {\n lastUsId = status.last();\n newOrder = _this.scope.usMap.get(lastUsId).getIn(['model', 'kanban_order']) + 1;\n us.kanban_order = newOrder;\n }\n }\n _this.kanbanUserstoriesService.replaceModel(us);\n _this.kanbanUserstoriesService.refreshRawOrder();\n return _this.kanbanUserstoriesService.refresh(false);\n });\n };\n })(this));\n this.scope.$on(\"kanban:us:deleted\", (function(_this) {\n return function(event, us) {\n return _this.kanbanUserstoriesService.remove(us);\n };\n })(this));\n this.scope.$on(\"kanban:us:move\", this.moveUs);\n this.scope.$on(\"kanban:show-userstories-for-status\", this.loadUserStoriesForStatus);\n this.scope.$on(\"kanban:hide-userstories-for-status\", this.hideUserStoriesForStatus);\n this.scope.$on(\"lightbox:opened\", (function(_this) {\n return function() {\n return _this.isLightboxOpened = true;\n };\n })(this));\n return this.scope.$on(\"lightbox:closed\", (function(_this) {\n return function() {\n _this.isLightboxOpened = false;\n if (_this.isRefreshNeeded) {\n _this.refreshAfterSwimlanesOrUserstoryStatusesHaveChanged();\n return _this.isRefreshNeeded = false;\n }\n };\n })(this));\n };\n\n KanbanController.prototype.refreshAfterSwimlanesOrUserstoryStatusesHaveChanged = function() {\n this.tgLoader.start();\n return this.projectService.fetchProject().then((function(_this) {\n return function() {\n return _this.loadInitialData();\n };\n })(this));\n };\n\n KanbanController.prototype.initializeSubscription = function() {\n var randomTimeout, routingKeyProject, routingKeyUserstories;\n randomTimeout = taiga.randomInt(700, 1000);\n routingKeyUserstories = \"changes.project.\" + this.scope.projectId + \".userstories\";\n this.events.subscribe(this.scope, routingKeyUserstories, debounceLeading(randomTimeout, (function(_this) {\n return function(message) {\n return _this.eventsLoadUserstories(message);\n };\n })(this)));\n routingKeyProject = \"changes.project.\" + this.scope.projectId + \".projects\";\n return this.events.subscribe(this.scope, routingKeyProject, debounceLeading(randomTimeout, (function(_this) {\n return function(message) {\n var ref;\n if ((ref = message.matches) === \"projects.swimlane\" || ref === \"projects.swimlaneuserstorystatus\" || ref === \"projects.userstorystatus\") {\n if (_this.isLightboxOpened) {\n return _this.isRefreshNeeded = true;\n } else {\n return _this.refreshAfterSwimlanesOrUserstoryStatusesHaveChanged();\n }\n }\n };\n })(this)));\n };\n\n KanbanController.prototype.addNewUs = function(type, statusId) {\n var swimlane;\n swimlane = null;\n switch (type) {\n case \"standard\":\n return this.rootscope.$broadcast(\"genericform:new\", {\n 'objType': 'us',\n 'project': this.scope.project,\n 'statusId': statusId,\n 'swimlane': swimlane\n });\n case \"bulk\":\n return this.rootscope.$broadcast(\"usform:bulk\", this.scope.projectId, statusId, swimlane);\n }\n };\n\n KanbanController.prototype.editUs = function(id) {\n var us;\n us = this.kanbanUserstoriesService.getUs(id);\n us = us.set('loading-edit', true);\n this.kanbanUserstoriesService.replace(us);\n return this.rs.userstories.getByRef(us.getIn(['model', 'project']), us.getIn(['model', 'ref'])).then((function(_this) {\n return function(editingUserStory) {\n _this.rs2.attachments.list(\"us\", us.get('id'), us.getIn(['model', 'project'])).then(function(attachments) {\n return _this.rootscope.$broadcast(\"genericform:edit\", {\n 'objType': 'us',\n 'obj': editingUserStory,\n 'statusList': _this.scope.usStatusList,\n 'attachments': attachments.toJS()\n });\n });\n us = us.set('loading-edit', false);\n return _this.kanbanUserstoriesService.replace(us);\n };\n })(this));\n };\n\n KanbanController.prototype.deleteUs = function(id) {\n var us;\n us = this.kanbanUserstoriesService.getUs(id);\n us = us.set('loading-delete', true);\n return this.rs.userstories.getByRef(us.getIn(['model', 'project']), us.getIn(['model', 'ref'])).then((function(_this) {\n return function(deletingUserStory) {\n var message, title;\n us = us.set('loading-delete', false);\n title = _this.translate.instant(\"US.TITLE_DELETE_ACTION\");\n message = deletingUserStory.subject;\n return _this.confirm.askOnDelete(title, message).then(function(askResponse) {\n var promise;\n promise = _this.repo.remove(deletingUserStory);\n promise.then(function() {\n var model;\n model = us.toJS().model;\n _this.scope.$broadcast(\"kanban:us:deleted\", model);\n return askResponse.finish();\n });\n return promise.then(null, function() {\n askResponse.finish(false);\n return this.confirm.notify(\"error\");\n });\n });\n };\n })(this));\n };\n\n KanbanController.prototype.showPlaceHolder = function(statusId, swimlaneId) {\n var firstStatus, firstSwimlane;\n firstStatus = this.scope.usStatusList[0].id === statusId && !this.kanbanUserstoriesService.userstoriesRaw.length;\n if (swimlaneId) {\n firstSwimlane = this.scope.swimlanesList.first().id === swimlaneId;\n return firstStatus && firstSwimlane;\n }\n return firstStatus;\n };\n\n KanbanController.prototype.toggleFold = function(id) {\n return this.kanbanUserstoriesService.toggleFold(id);\n };\n\n KanbanController.prototype.toggleSwimlane = function(id) {\n this.foldedSwimlane = this.foldedSwimlane.set(id.toString(), !this.foldedSwimlane.get(id.toString()));\n this.rs.kanban.storeSwimlanesModes(this.scope.projectId, this.foldedSwimlane.toJS());\n return this.timeout((function(_this) {\n return function() {\n return _this.scope.$broadcast(\"redraw:wip\");\n };\n })(this), 100, false);\n };\n\n KanbanController.prototype.isUsInArchivedHiddenStatus = function(usId) {\n return this.kanbanUserstoriesService.isUsInArchivedHiddenStatus(usId);\n };\n\n KanbanController.prototype.changeUsAssignedUsers = function(id) {\n var item, onClose;\n item = this.kanbanUserstoriesService.getUsModel(id);\n onClose = (function(_this) {\n return function(assignedUsersIds) {\n var ref;\n item.assigned_users = assignedUsersIds;\n if ((ref = item.assigned_to, indexOf.call(assignedUsersIds, ref) < 0) && assignedUsersIds.length > 0) {\n item.assigned_to = assignedUsersIds[0];\n }\n if (assignedUsersIds.length === 0) {\n item.assigned_to = null;\n }\n _this.kanbanUserstoriesService.replaceModel(item);\n return _this.repo.save(item).then(function() {\n _this.generateFilters();\n if (_this.isFilterDataTypeSelected('assigned_users') || _this.isFilterDataTypeSelected('role')) {\n return _this.filtersReloadContent();\n }\n });\n };\n })(this);\n return this.lightboxFactory.create('tg-lb-select-user', {\n \"class\": \"lightbox lightbox-select-user\"\n }, {\n \"currentUsers\": _.compact(_.union(item.assigned_users, [item.assigned_to])),\n \"activeUsers\": this.scope.activeUsers,\n \"onClose\": onClose,\n \"lbTitle\": this.translate.instant(\"COMMON.ASSIGNED_USERS.ADD\")\n });\n };\n\n KanbanController.prototype.refreshTagsColors = function() {\n return this.rs.projects.tagsColors(this.scope.projectId).then((function(_this) {\n return function(tags_colors) {\n return _this.scope.project.tags_colors = tags_colors._attrs;\n };\n })(this));\n };\n\n KanbanController.prototype.renderBatch = function(clean) {\n var newUs;\n if (clean == null) {\n clean = false;\n }\n this.renderInProgress = true;\n newUs = _.take(this.queue, this.batchSize);\n this.rendered = _.concat(this.rendered, newUs);\n this.queue = _.drop(this.queue, this.batchSize);\n if (clean) {\n this.kanbanUserstoriesService.set(newUs);\n this.batchTimings = [200, 100, 50];\n } else {\n this.kanbanUserstoriesService.add(newUs);\n }\n if (this.queue.length > 0) {\n timeout = this.batchTimings.shift() || 20;\n return this.timeout(this.renderBatch, timeout);\n } else {\n return scopeDefer(this.scope, (function(_this) {\n return function() {\n _this.rootscope.$broadcast(\"kanban:userstories:loaded\", _this.rendered);\n _this.scope.$broadcast(\"userstories:loaded\", _this.rendered);\n _this.renderInProgress = false;\n return _this.timeout(function() {\n return _this.scope.$broadcast(\"redraw:wip\");\n }, 100, false);\n };\n })(this));\n }\n };\n\n KanbanController.prototype.renderUserStories = function(userstories) {\n var userstoriesMap;\n userstories = _.sortBy(userstories, 'kanban_order');\n this.kanbanUserstoriesService.initUsByStatusList(userstories);\n if (this.renderBatching) {\n userstoriesMap = _.groupBy(userstories, 'status');\n this.rendered = [];\n this.queue = [];\n this.batchSize = 0;\n while (this.queue.length < userstories.length) {\n _.each(this.scope.project.us_statuses, (function(_this) {\n return function(x) {\n var ref;\n if (((ref = userstoriesMap[x.id]) != null ? ref.length : void 0) > 0) {\n _this.queue = _.concat(_this.queue, _.take(userstoriesMap[x.id], 10));\n return userstoriesMap[x.id] = _.drop(userstoriesMap[x.id], 10);\n }\n };\n })(this));\n if (!this.batchSize) {\n this.batchSize = 100;\n }\n }\n return this.renderBatch(true);\n } else {\n return this.kanbanUserstoriesService.set(userstories);\n }\n };\n\n KanbanController.prototype.loadUserstoriesParams = function() {\n var locationParams, params;\n params = {\n status__is_archived: false\n };\n if (this.zoomLevel >= 2) {\n params.include_attachments = 1;\n params.include_tasks = 1;\n }\n locationParams = _.pick(_.clone(this.location.search()), this.validQueryParams);\n params = _.merge(params, locationParams);\n params.q = this.filterQ;\n return params;\n };\n\n KanbanController.prototype.eventsLoadUserstories = function(data) {\n var eventUserstories, modifiedUs, params;\n eventUserstories = [];\n if (!Array.isArray(data.pk)) {\n eventUserstories = [data.pk];\n } else {\n eventUserstories = data.pk;\n }\n modifiedUs = eventUserstories.filter((function(_this) {\n return function(us) {\n return !!_this.kanbanUserstoriesService.userstoriesRaw.find(function(raw) {\n return raw.id === us;\n });\n };\n })(this));\n params = this.loadUserstoriesParams();\n return this.rs.userstories.listAll(this.scope.projectId, params).then((function(_this) {\n return function(userstories) {\n var newUss;\n newUss = userstories.filter(function(us) {\n return !_this.kanbanUserstoriesService.userstoriesRaw.find(function(raw) {\n return raw.id === us.id;\n });\n });\n userstories.filter(function(us) {\n return modifiedUs.includes(us.id);\n }).forEach(function(us) {\n _this.kanbanUserstoriesService.replaceModel(us);\n return _this.kanbanUserstoriesService.refreshRawOrder();\n });\n if (newUss.length) {\n _this.kanbanUserstoriesService.add(newUss);\n }\n return _this.kanbanUserstoriesService.refresh(false);\n };\n })(this));\n };\n\n KanbanController.prototype.loadUserstories = function() {\n var archivedPromises, lastSearch, loadPromises, openArchived, params, promise;\n params = this.loadUserstoriesParams();\n this.lastSearch = this.filterQ;\n lastSearch = this.filterQ;\n this.lastLoadUserstoriesParams = params;\n loadPromises = [this.rs.userstories.listAll(this.scope.projectId, params), this.loadSwimlanes()];\n archivedPromises = [];\n openArchived = _.difference(this.kanbanUserstoriesService.archivedStatus, this.kanbanUserstoriesService.statusHide);\n if (openArchived.length) {\n archivedPromises = openArchived.map((function(_this) {\n return function(archivedStatusId) {\n return _this.loadUserStoriesForStatus({}, archivedStatusId);\n };\n })(this));\n }\n loadPromises = loadPromises.concat(archivedPromises);\n promise = this.q.all(loadPromises).then((function(_this) {\n return function(result) {\n var swimlanes, userstories;\n if (lastSearch !== _this.lastSearch) {\n return;\n }\n _this.kanbanUserstoriesService.reset(false, false, false);\n userstories = result[0];\n swimlanes = result[1];\n if (result.length > 2) {\n result.slice(2).forEach(function(archivedRedult) {\n return userstories = userstories.concat(archivedRedult);\n });\n }\n _this.notFoundUserstories = false;\n if (!userstories.length && ((_this.filterQ && _this.filterQ.length) || Object.keys(_this.location.search()).length)) {\n _this.notFoundUserstories = true;\n }\n _this.kanbanUserstoriesService.init(_this.scope.project, swimlanes, _this.scope.usersById);\n _this.tgLoader.pageLoaded();\n _this.renderUserStories(userstories);\n return userstories;\n };\n })(this));\n return promise;\n };\n\n KanbanController.prototype.loadUserStoriesForStatus = function(ctx, statusId) {\n var filteredStatus, params;\n filteredStatus = this.location.search().status;\n if (filteredStatus) {\n filteredStatus = filteredStatus.split(\",\").map(function(it) {\n return parseInt(it, 10);\n });\n if (filteredStatus.indexOf(statusId) === -1) {\n return;\n }\n }\n params = {\n status: statusId,\n include_attachments: true,\n include_tasks: true\n };\n if (this.filterQ) {\n params.q = this.filterQ;\n }\n params = _.merge(params, this.location.search());\n return this.rs.userstories.listAll(this.scope.projectId, params).then((function(_this) {\n return function(userstories) {\n _this.waitEmptyQuote(function() {\n return _this.scope.$broadcast(\"kanban:shown-userstories-for-status\", statusId, userstories);\n });\n return userstories;\n };\n })(this));\n };\n\n KanbanController.prototype.waitEmptyQuote = function(cb) {\n if (this.queue.length > 0) {\n return requestAnimationFrame((function(_this) {\n return function() {\n return _this.waitEmptyQuote(cb);\n };\n })(this));\n } else {\n return scopeDefer(this.scope, (function(_this) {\n return function() {\n return cb();\n };\n })(this));\n }\n };\n\n KanbanController.prototype.hideUserStoriesForStatus = function(ctx, statusId) {\n return this.scope.$broadcast(\"kanban:hidden-userstories-for-status\", statusId);\n };\n\n KanbanController.prototype.loadKanban = function() {\n return this.q.all([this.refreshTagsColors(), this.loadUserstories()]);\n };\n\n KanbanController.prototype.loadSwimlanes = function() {\n return this.rs.swimlanes.list(this.scope.projectId).then((function(_this) {\n return function(swimlanes) {\n _this.scope.swimlanes = swimlanes;\n _this.scope.swimlanesStatuses = {};\n _this.scope.swimlanes.forEach(function(swimlane) {\n return _this.scope.swimlanesStatuses[swimlane.id] = swimlane.statuses;\n });\n _this.scope.swimlanesStatuses[-1] = _this.scope.project.us_statuses;\n return _this.scope.swimlanes;\n };\n })(this));\n };\n\n KanbanController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n if (!project.is_kanban_activated) {\n this.errorHandlingService.permissionDenied();\n }\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.projectId = project.id;\n this.scope.points = _.sortBy(project.points, \"order\");\n this.scope.pointsById = groupBy(project.points, function(x) {\n return x.id;\n });\n this.scope.usStatusById = groupBy(project.us_statuses, function(x) {\n return x.id;\n });\n this.scope.usStatusList = _.sortBy(project.us_statuses, \"order\");\n this.scope.usCardVisibility = {};\n this.scope.$emit(\"project:loaded\", project);\n return project;\n };\n\n KanbanController.prototype.loadInitialData = function() {\n var project;\n project = this.loadProject();\n this.foldedSwimlane = Immutable.fromJS(this.rs.kanban.getSwimlanesModes(project.id));\n this.initialLoad = false;\n this.fillUsersAndRoles(project.members, project.roles);\n this.initializeSubscription();\n this.loadKanban().then((function(_this) {\n return function() {\n return _this.timeout(function() {\n return _this.initialLoad = true;\n }, 0, true);\n };\n })(this));\n return this.generateFilters();\n };\n\n KanbanController.prototype.moveUs = function(ctx, usList, newStatusId, newSwimlaneId, index, previousCard, nextCard) {\n var apiNewSwimlaneId, data, promise;\n this.cleanSelectedUss();\n usList = _.map(usList, (function(_this) {\n return function(us) {\n return _this.kanbanUserstoriesService.getUsModel(us.id);\n };\n })(this));\n this.rootscope.$broadcast(\"kanban:userstories:loaded\", usList, newStatusId, newSwimlaneId, index);\n apiNewSwimlaneId = newSwimlaneId;\n if (newSwimlaneId === -1) {\n apiNewSwimlaneId = null;\n }\n data = this.kanbanUserstoriesService.move(usList.map((function(_this) {\n return function(it) {\n return it.id;\n };\n })(this)), newStatusId, apiNewSwimlaneId, index, previousCard, nextCard);\n promise = this.rs.userstories.bulkUpdateKanbanOrder(this.scope.projectId, newStatusId, apiNewSwimlaneId, data.afterUserstoryId, data.beforeUserstoryId, data.bulkUserstories);\n return promise.then((function(_this) {\n return function() {\n _this.scope.$broadcast(\"redraw:wip\");\n _this.generateFilters();\n if (_this.isFilterDataTypeSelected('status')) {\n return _this.filtersReloadContent();\n }\n };\n })(this));\n };\n\n return KanbanController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin, taiga.UsFiltersMixin));\n\n module.controller(\"KanbanController\", KanbanController);\n\n KanbanDirective = function($repo, $rootscope) {\n var link;\n link = function($scope, $el, $attrs) {\n var _tableBody, board, watchKanbanSize;\n watchKanbanSize = (function(_this) {\n return function() {\n var columnMargin, columns, kanbanStyles, resizeCb, resizeObserver;\n columns = $el.find(\".task-colum-name\");\n kanbanStyles = getComputedStyle($el[0]);\n columnMargin = Number(kanbanStyles.getPropertyValue('--kanban-column-margin').trim().replace('px', '').split(' ')[1]);\n resizeCb = function(entries) {\n var width;\n width = columns.toArray().reduce(function(acc, column) {\n if (document.body.contains(column)) {\n return acc + column.offsetWidth + columnMargin;\n }\n resizeObserver.unobserve(column);\n return acc;\n }, 0);\n if (width > 0) {\n return document.body.style.setProperty('--kanban-width', (width - columnMargin) + 'px');\n }\n };\n resizeObserver = new ResizeObserver(resizeCb);\n return columns.each(function(index, column) {\n return resizeObserver.observe(column);\n });\n };\n })(this);\n board = initBoard();\n board.events((function(_this) {\n return function(event, entries) {\n var visibleEntries;\n if (event === 'SHOW_CARD') {\n visibleEntries = entries.filter(function(entry) {\n return entry.visible && !$scope.usCardVisibility[entry.id];\n });\n if (visibleEntries.length) {\n $scope.$evalAsync(function() {\n return visibleEntries.forEach(function(entry) {\n return $scope.usCardVisibility[entry.id] = true;\n });\n });\n }\n }\n };\n })(this));\n $scope.taskColumnLoaded = function(event, status, swimlane) {\n var column;\n column = event.target[0];\n return board.addSwimlane(column, status, swimlane);\n };\n $scope.cardLoaded = function(event, status, swimlane) {\n return board.addCard(event.target[0], status, swimlane);\n };\n _tableBody = null;\n $scope.isTableLoaded = false;\n $scope.kanbanTableLoaded = function(event, swimlaneId) {\n var tableBody, tableHeaderDom;\n $scope.$evalAsync((function(_this) {\n return function() {\n if (swimlaneId) {\n $scope.openSwimlane(swimlaneId);\n }\n return $scope.isTableLoaded = true;\n };\n })(this));\n tableBody = event.target;\n _tableBody = tableBody;\n tableHeaderDom = $el.find(\".kanban-table-header .kanban-table-inner\");\n tableBody.on(\"scroll\", function(event) {\n var scroll;\n scroll = -1 * event.currentTarget.scrollLeft;\n return tableHeaderDom.css(\"transform\", \"translateX(\" + scroll + \"px)\");\n });\n watchKanbanSize();\n };\n return $scope.$on(\"$destroy\", function() {\n $el.off();\n if (_tableBody) {\n return _tableBody.off();\n }\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgKanban\", [\"$tgRepo\", \"$rootScope\", KanbanDirective]);\n\n KanbanArchivedShowStatusHeaderDirective = function($rootscope, $translate, kanbanUserstoriesService) {\n var link, showArchivedText;\n showArchivedText = $translate.instant(\"KANBAN.ACTION_SHOW_ARCHIVED\");\n link = function($scope, $el, $attrs) {\n var unwatch;\n unwatch = $scope.$watch('ctrl.initialLoad', (function(_this) {\n return function(initialLoad) {\n var status;\n if (!initialLoad) {\n return;\n }\n unwatch();\n status = $scope.$eval($attrs.tgKanbanArchivedShowStatusHeader);\n kanbanUserstoriesService.addArchivedStatus(status.id);\n kanbanUserstoriesService.hideStatus(status.id);\n return $el.on(\"click\", function(event) {\n return $scope.$apply(function() {\n if (kanbanUserstoriesService.statusHide.includes(status.id)) {\n $rootscope.$broadcast(\"kanban:show-userstories-for-status\", status.id);\n return kanbanUserstoriesService.showStatus(status.id);\n }\n });\n });\n };\n })(this));\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgKanbanArchivedShowStatusHeader\", [\"$rootScope\", \"$translate\", \"tgKanbanUserstories\", KanbanArchivedShowStatusHeaderDirective]);\n\n KanbanArchivedStatusIntroDirective = function($translate, kanbanUserstoriesService) {\n var link, userStories;\n userStories = [];\n link = function($scope, $el, $attrs) {\n var status;\n status = $scope.$eval($attrs.tgKanbanArchivedStatusIntro);\n $scope.$on(\"kanban:shown-userstories-for-status\", function(ctx, statusId, userStoriesLoaded) {\n if (statusId === status.id) {\n kanbanUserstoriesService.deleteStatus(statusId);\n return kanbanUserstoriesService.add(userStoriesLoaded);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgKanbanArchivedStatusIntro\", [\"$translate\", \"tgKanbanUserstories\", KanbanArchivedStatusIntroDirective]);\n\n KanbanSquishColumnDirective = function(rs, projectService, kanbanUserstoriesService) {\n var link;\n link = function($scope, $el, $attrs) {\n var unwatch;\n $scope.foldStatus = function(status) {\n if (!$scope.folds) {\n $scope.folds = rs.kanban.getStatusColumnModes(projectService.project.get('id'));\n }\n $scope.unfold = null;\n $scope.folds[status.id] = !!!$scope.folds[status.id];\n if (!$scope.folds[status.id]) {\n $scope.unfold = status.id;\n }\n rs.kanban.storeStatusColumnModes($scope.projectId, $scope.folds);\n if (kanbanUserstoriesService.archivedStatus.includes(status.id) && !kanbanUserstoriesService.statusHide.includes(status.id)) {\n kanbanUserstoriesService.hideStatus(status.id);\n }\n };\n return unwatch = $scope.$watch('ctrl.initialLoad', function(load) {\n var archivedFolds, i, len, ref, status;\n if (load && ((ref = $scope.usByStatus) != null ? ref.size : void 0)) {\n $scope.folds = rs.kanban.getStatusColumnModes(projectService.project.get('id'));\n archivedFolds = $scope.usStatusList.filter(function(status) {\n return status.is_archived;\n });\n for (i = 0, len = archivedFolds.length; i < len; i++) {\n status = archivedFolds[i];\n $scope.folds[status.id] = true;\n }\n return unwatch();\n }\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgKanbanSquishColumn\", [\"$tgResources\", \"tgProjectService\", \"tgKanbanUserstories\", KanbanSquishColumnDirective]);\n\n KanbanWipLimitDirective = function($timeout) {\n var link;\n link = function($scope, $el, $attrs) {\n var redrawWipLimit, status;\n status = $scope.$eval($attrs.tgKanbanWipLimit);\n redrawWipLimit = (function(_this) {\n return function() {\n return $timeout(function() {\n var cards, element, wipLimitClass;\n cards = $el.find(\"tg-card\");\n wipLimitClass = '';\n element = null;\n if (cards.length + 1 === status.wip_limit) {\n wipLimitClass = 'one-left';\n element = cards[cards.length - 1];\n } else if (cards.length === status.wip_limit) {\n wipLimitClass = 'reached';\n element = cards[cards.length - 1];\n } else if (cards.length > status.wip_limit) {\n wipLimitClass = 'exceeded';\n element = cards[status.wip_limit - 1];\n }\n $el.find(\".kanban-wip-limit\").remove();\n if (element) {\n return angular.element(element).after(\"
WIP Limit
\");\n }\n }, 0, false);\n };\n })(this);\n if (status && !status.is_archived) {\n $scope.$on(\"redraw:wip\", redrawWipLimit);\n $scope.$on(\"kanban:us:move\", redrawWipLimit);\n $scope.$on(\"usform:new:success\", redrawWipLimit);\n $scope.$on(\"usform:bulk:success\", redrawWipLimit);\n }\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgKanbanWipLimit\", [\"$timeout\", KanbanWipLimitDirective]);\n\n CardSvgTemplate = \"\\n \\\" style=\\\"fill: <%- svgFill %>\\\">\\n \\\" attr-href=\\\"#<%- svgIcon %>\\\">\\n <% if(svgTitle) { %>\\n <%- svgTitle %>\\n <% } %>\\n \\n \\n\";\n\n CardAssignedToDirective = function($template, $translate, avatarService, projectService) {\n var render, svgTemplate, template;\n template = $template.get(\"components/card/card-templates/card-assigned-to.html\", true);\n svgTemplate = _.template(CardSvgTemplate);\n render = (function(_this) {\n return function(vm) {\n var avatars;\n avatars = {};\n (vm.item.get('assigned_users') || [vm.item.get('assigned_to')]).forEach(function(user) {\n if (user) {\n return avatars[user.get('id')] = avatarService.getAvatar(user, 'avatar');\n }\n });\n return template({\n vm: vm,\n avatars: avatars,\n translate: function(key, params) {\n return $translate.instant(key, params);\n },\n checkPermission: function(permission) {\n return projectService.project.get('my_permissions').indexOf(permission) > -1;\n },\n svg: function(svgData) {\n return svgTemplate(Object.assign({\n svgTitle: '',\n svgFill: ''\n }, svgData));\n },\n loading: \"\"\n });\n };\n })(this);\n return {\n scope: {\n zoomLevel: '<',\n item: '<',\n vm: '<'\n },\n link: function($scope, $el) {\n var initializeZoom, onChange;\n initializeZoom = false;\n onChange = (function(_this) {\n return function() {\n var html;\n html = render($scope.vm);\n $el.off();\n $el.html(html);\n return $el.find('.card-user-avatar').on('click', function(event) {\n if (!event.ctrlKey && !event.metaKey) {\n return $scope.vm.onClickAssignedTo({\n id: $scope.vm.item.get('id')\n });\n }\n });\n };\n })(this);\n $scope.$watch('item', onChange);\n $scope.$watch('zoomLevel', (function(_this) {\n return function() {\n if (initializeZoom) {\n return onChange();\n } else {\n return initializeZoom = true;\n }\n };\n })(this));\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n }\n };\n };\n\n module.directive(\"tgCardAssignedTo\", [\"$tgTemplate\", \"$translate\", \"tgAvatarService\", \"tgProjectService\", CardAssignedToDirective]);\n\n CardDataDirective = function($template, $translate, avatarService, projectService, dueDateService) {\n var render, svgTemplate, template;\n template = $template.get(\"components/card/card-templates/card-data.html\", true);\n svgTemplate = _.template(CardSvgTemplate);\n render = (function(_this) {\n return function(vm) {\n var avatars;\n avatars = {};\n (vm.item.get('assigned_users') || []).forEach(function(user) {\n if (user) {\n return avatars[user.get('id')] = avatarService.getAvatar(user, 'avatar');\n } else {\n return console.error('invalid assigned_users', vm.item.get('assigned_users').toJS());\n }\n });\n return template({\n vm: vm,\n avatars: avatars,\n emptyTask: function() {\n var tasks;\n tasks = vm.item.getIn(['model', 'tasks']);\n return !tasks || !tasks.size;\n },\n dueDateColor: function() {\n return dueDateService.color({\n dueDate: vm.item.getIn(['model', 'due_date']),\n isClosed: vm.item.getIn(['model', 'is_closed']),\n objType: vm.type\n });\n },\n dueDateTitle: function() {\n return dueDateService.title({\n dueDate: vm.item.getIn(['model', 'due_date']),\n isClosed: vm.item.getIn(['model', 'is_closed']),\n objType: vm.type\n });\n },\n totalAttachments: function() {\n if (vm.type === 'task') {\n return vm.item.getIn(['model', 'attachments']).size;\n } else {\n return vm.item.getIn(['model', 'total_attachments']);\n }\n },\n translate: function(key, params) {\n return $translate.instant(key, params);\n },\n svg: function(svgData) {\n return svgTemplate(Object.assign({\n svgTitle: '',\n svgFill: ''\n }, svgData));\n }\n });\n };\n })(this);\n return {\n scope: {\n zoomLevel: '<',\n item: '<',\n vm: '<'\n },\n link: function($scope, $el) {\n var initializeZoom, onChange;\n initializeZoom = false;\n onChange = (function(_this) {\n return function() {\n var html;\n html = render($scope.vm);\n $el.off();\n return $el.html(html);\n };\n })(this);\n $scope.$watch('item', onChange);\n $scope.$watch('zoomLevel', (function(_this) {\n return function() {\n if (initializeZoom) {\n return onChange();\n } else {\n return initializeZoom = true;\n }\n };\n })(this));\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n }\n };\n };\n\n module.directive(\"tgCardData\", [\"$tgTemplate\", \"$translate\", \"tgAvatarService\", \"tgProjectService\", \"tgDueDateService\", CardDataDirective]);\n\n CardActionsDirective = function($template, $translate, projectService) {\n var render, svgTemplate, template;\n template = $template.get(\"components/card/card-templates/card-actions.html\", true);\n svgTemplate = _.template(CardSvgTemplate);\n render = (function(_this) {\n return function(vm) {\n return template({\n vm: vm,\n translate: function(key, params) {\n return $translate.instant(key, params);\n },\n checkPermission: function(permission) {\n return projectService.project.get('my_permissions').indexOf(permission) > -1;\n },\n svg: function(svgData) {\n return svgTemplate(Object.assign({\n svgTitle: '',\n svgFill: ''\n }, svgData));\n }\n });\n };\n })(this);\n return {\n scope: {\n zoomLevel: '<',\n item: '<',\n vm: '<'\n },\n link: function($scope, $el) {\n var initializeZoom, onChange, openPopup, removePopupOpenState;\n initializeZoom = false;\n openPopup = false;\n removePopupOpenState = function() {\n openPopup = false;\n return $el.find(\".js-popup-button\").removeClass('popover-open');\n };\n onChange = (function(_this) {\n return function() {\n var html;\n html = render($scope.vm);\n $el.off();\n $el.html(html);\n openPopup = false;\n return $el.find('.js-popup-button').on('click', function(event) {\n var actions;\n if (openPopup) {\n return;\n }\n openPopup = true;\n $(event.currentTarget).addClass('popover-open');\n actions = [];\n if (projectService.project.get('my_permissions').includes($scope.vm.getModifyPermisionKey())) {\n actions.push({\n text: $translate.instant('COMMON.CARD.EDIT'),\n icon: 'icon-edit',\n event: function() {\n return $scope.vm.onClickEdit({\n id: $scope.vm.item.get('id')\n });\n }\n }, {\n text: $translate.instant('COMMON.CARD.ASSIGN_TO'),\n icon: 'icon-assign-to',\n event: function() {\n return $scope.vm.onClickAssignedTo({\n id: $scope.vm.item.get('id')\n });\n }\n });\n }\n if (projectService.project.get('my_permissions').includes($scope.vm.getDeletePermisionKey())) {\n actions.push({\n text: $translate.instant('COMMON.CARD.DELETE'),\n icon: 'icon-trash',\n event: function() {\n return $scope.vm.onClickDelete({\n id: $scope.vm.item.get('id')\n });\n }\n });\n }\n if (projectService.project.get('my_permissions').includes($scope.vm.getModifyPermisionKey()) && !$scope.vm.isFirst) {\n actions.push({\n text: $translate.instant('COMMON.CARD.MOVE_TO_TOP'),\n icon: 'icon-move-to-top',\n event: function() {\n return $scope.vm.onClickMoveToTop($scope.vm.item);\n }\n });\n }\n return taiga.globalPopover(event.currentTarget, actions, {}, function() {\n return removePopupOpenState();\n });\n });\n };\n })(this);\n $scope.$watch('item', onChange);\n $scope.$watch('zoomLevel', (function(_this) {\n return function() {\n if (initializeZoom) {\n return onChange();\n } else {\n return initializeZoom = true;\n }\n };\n })(this));\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n }\n };\n };\n\n module.directive(\"tgCardActions\", [\"$tgTemplate\", \"$translate\", \"tgProjectService\", CardActionsDirective]);\n\n KanbanSwimlaneDirective = function($timeout) {\n var link;\n link = function($scope, $el, $attrs) {\n var addSwimlane, className, ctrl, currentSwimlane, tableHeaderDom;\n tableHeaderDom = [];\n addSwimlane = null;\n ctrl = $scope.$parent.ctrl;\n if (!ctrl) {\n throw new Error('KanbanSwimlaneDirective ctrl not found');\n }\n $el.on(\"scroll\", function(event) {\n var scroll;\n if (!tableHeaderDom.length) {\n tableHeaderDom = $el.find(\".kanban-swimlane-title\");\n }\n if (!addSwimlane) {\n addSwimlane = $el.find(\".kanban-swimlane-add\");\n }\n scroll = event.currentTarget.scrollLeft;\n tableHeaderDom.css(\"transform\", \"translateX(\" + scroll + \"px)\");\n return addSwimlane.css(\"transform\", \"translateX(\" + scroll + \"px)\");\n });\n currentSwimlane = null;\n className = 'pending-to-open';\n $scope.mouseleaveSwimlane = (function(_this) {\n return function(event) {\n if (currentSwimlane) {\n $timeout.cancel(currentSwimlane.timeoutId);\n currentSwimlane.el.classList.remove(className);\n return currentSwimlane = null;\n }\n };\n })(this);\n $scope.mouseoverSwimlane = (function(_this) {\n return function(event, swimlaneId) {\n var isDragging, swimlane, timeoutId;\n if (currentSwimlane && currentSwimlane.id === swimlaneId) {\n return;\n }\n if (currentSwimlane) {\n $timeout.cancel(currentSwimlane.timeoutId);\n currentSwimlane.el.classList.remove(className);\n }\n swimlane = event.currentTarget;\n if (swimlane.classList.contains('folded')) {\n isDragging = !!document.querySelectorAll('tg-card.gu-mirror').length;\n if (!isDragging) {\n return;\n }\n swimlane.classList.add(className);\n timeoutId = $timeout(function() {\n swimlane.classList.remove(className);\n return ctrl.toggleSwimlane(swimlaneId);\n }, 1000);\n return currentSwimlane = {\n id: swimlaneId,\n timeoutId: timeoutId,\n el: swimlane\n };\n }\n };\n })(this);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgKanbanSwimlane\", ['$timeout', KanbanSwimlaneDirective]);\n\n KanbanTaskboardColumnDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n $el.on(\"scroll\", function(event) {\n var scroll, taskCounterDom;\n scroll = event.currentTarget.scrollTop;\n taskCounterDom = $el.find(\".kanban-task-counter\");\n return taskCounterDom.css(\"transform\", \"translateY(\" + scroll + \"px)\");\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgKanbanTaskboardColumn\", [KanbanTaskboardColumnDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var KanbanSortableDirective, bindOnce, groupBy, mixOf, module, scopeDefer, taiga, timeout, toggleText;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n toggleText = this.taiga.toggleText;\n\n scopeDefer = this.taiga.scopeDefer;\n\n bindOnce = this.taiga.bindOnce;\n\n groupBy = this.taiga.groupBy;\n\n timeout = this.taiga.timeout;\n\n module = angular.module(\"taigaKanban\");\n\n KanbanSortableDirective = function($repo, $rs, $rootscope, kanbanUserstoriesService) {\n var link;\n link = function($scope, $el, $attrs) {\n var drake, init, oldIndex, unwatch;\n drake = null;\n oldIndex = null;\n $scope.openSwimlane = (function(_this) {\n return function(id) {\n var containers;\n containers = _.map($('.kanban-swimlane[data-swimlane=\"' + id + '\"] .taskboard-column'), function(item) {\n return item;\n });\n return init(containers);\n };\n })(this);\n init = (function(_this) {\n return function(containers) {\n var deleteElement, initialContainer, itemEl, newParentScope, nextCard, previousCard, scroll, tdom;\n if (!($scope.project.my_permissions.indexOf(\"modify_us\") > -1)) {\n return;\n }\n if (drake) {\n containers.forEach(function(container) {\n return drake.containers.push(container);\n });\n return;\n }\n newParentScope = null;\n itemEl = null;\n tdom = $el;\n deleteElement = function(itemEl) {\n itemEl.off();\n return itemEl.remove();\n };\n drake = dragula(containers, {\n copySortSource: false,\n copy: false,\n moves: function(item) {\n return $(item).is('tg-card');\n }\n });\n initialContainer = null;\n drake.on('over', function(item, container) {\n if (!initialContainer) {\n return initialContainer = container;\n } else if (container !== initialContainer) {\n return $(container).addClass('target-drop');\n }\n });\n drake.on('out', function(item, container) {\n if (container !== initialContainer) {\n return $(container).removeClass('target-drop');\n }\n });\n drake.on('drag', function(item) {\n var dragMultipleItems, firstElement, parentEl;\n dragMultipleItems = window.dragMultiple.getElements();\n if (!dragMultipleItems.length) {\n dragMultipleItems = [item];\n }\n firstElement = dragMultipleItems[0];\n parentEl = item.parentNode;\n oldIndex = $(parentEl).find('tg-card').index(firstElement);\n initialContainer = null;\n return window.dragMultiple.start(item, containers);\n });\n drake.on('cloned', function(item, dropTarget) {\n return $(item).addClass('multiple-drag-mirror');\n });\n previousCard = null;\n nextCard = null;\n drake.on('drop', function(item, target, source, sibling) {\n var next, prev;\n previousCard = null;\n nextCard = null;\n prev = $(item).prevAll('tg-card:not(.gu-transit)');\n next = $(item).nextAll('tg-card:not(.gu-transit)');\n previousCard = null;\n if (prev.length && prev[0].dataset.id) {\n previousCard = Number(prev[0].dataset.id);\n }\n nextCard = null;\n if (!previousCard && next.length && next[0].dataset.id) {\n return nextCard = Number(next[0].dataset.id);\n }\n });\n drake.on('dragend', function(item, target, source, sibling) {\n var dragMultipleItems, finalUsList, firstElement, firstElementId, index, newStatus, newSwimlane, parentEl, usList;\n parentEl = item.parentNode;\n dragMultipleItems = window.dragMultiple.stop();\n if (!dragMultipleItems.length) {\n dragMultipleItems = [item];\n }\n firstElementId = dragMultipleItems[0].dataset.id;\n firstElement = dragMultipleItems[0];\n index = $(parentEl).find('tg-card').index(firstElement);\n newStatus = Number(parentEl.dataset.status);\n newSwimlane = Number(parentEl.dataset.swimlane);\n if (index === oldIndex && initialContainer === parentEl) {\n return;\n }\n if (initialContainer !== parentEl) {\n $(parentEl).addClass('new');\n $(parentEl).one('animationend', function() {\n return $(parentEl).removeClass('new');\n });\n }\n usList = _.map(dragMultipleItems, function(item) {\n return kanbanUserstoriesService.usMap.get(Number(item.dataset.id));\n });\n finalUsList = _.map(usList, function(item) {\n return {\n id: item.get('id'),\n oldStatusId: item.getIn(['model', 'status']),\n oldSwimlaneId: item.getIn(['model', 'swimlane'])\n };\n });\n return $scope.$apply(function() {\n _.each(usList, (function(_this) {\n return function(item, key) {\n var oldStatus, oldSwimlaneId, sameContainer;\n oldStatus = item.getIn(['model', 'status']);\n oldSwimlaneId = item.getIn(['model', 'swimlane']) || -1;\n sameContainer = newStatus === oldStatus && newSwimlane === oldSwimlaneId;\n if (!sameContainer) {\n itemEl = $(dragMultipleItems[key]);\n return deleteElement(itemEl);\n }\n };\n })(this));\n return $rootscope.$broadcast(\"kanban:us:move\", finalUsList, newStatus, newSwimlane, index, previousCard, nextCard);\n });\n });\n return scroll = autoScroll(containers, {\n margin: 100,\n scrollWhenOutside: true,\n autoScroll: function() {\n return this.down && drake.dragging;\n }\n });\n };\n })(this);\n unwatch = $scope.$watch(\"isTableLoaded\", function(tableLoaded) {\n var containers, isSwimlane;\n if (!tableLoaded) {\n return;\n }\n isSwimlane = $('.swimlane').length;\n if (isSwimlane) {\n return;\n }\n unwatch();\n containers = _.map($el.find('.taskboard-column'), function(item) {\n return item;\n });\n return init(containers);\n });\n return $scope.$on(\"$destroy\", function() {\n $el.off();\n if (drake) {\n return drake.destroy();\n }\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgKanbanSortable\", [\"$tgRepo\", \"$tgResources\", \"$rootScope\", \"tgKanbanUserstories\", KanbanSortableDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var EpicDetailController, EpicStatusButtonDirective, EpicStatusDisplayDirective, bindMethods, bindOnce, groupBy, joinStr, mixOf, module, taiga, toString,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n toString = this.taiga.toString;\n\n joinStr = this.taiga.joinStr;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n bindMethods = this.taiga.bindMethods;\n\n module = angular.module(\"taigaEpics\");\n\n EpicDetailController = (function(superClass) {\n extend(EpicDetailController, superClass);\n\n EpicDetailController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$log\", \"tgAppMetaService\", \"$tgAnalytics\", \"$tgNavUrls\", \"$translate\", \"$tgQueueModelTransformation\", \"tgErrorHandlingService\", \"tgProjectService\", \"tgAttachmentsFullService\"];\n\n function EpicDetailController(scope, rootscope, repo, confirm, rs, rs2, params, q, location, log, appMetaService, analytics, navUrls, translate, modelTransform, errorHandlingService, projectService, attachmentsFullService) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.rs2 = rs2;\n this.params = params;\n this.q = q;\n this.location = location;\n this.log = log;\n this.appMetaService = appMetaService;\n this.analytics = analytics;\n this.navUrls = navUrls;\n this.translate = translate;\n this.modelTransform = modelTransform;\n this.errorHandlingService = errorHandlingService;\n this.projectService = projectService;\n this.attachmentsFullService = attachmentsFullService;\n bindMethods(this);\n this.scope.epicRef = this.params.epicref;\n this.scope.sectionName = this.translate.instant(\"EPIC.SECTION_NAME\");\n this.scope.attachmentsReady = false;\n this.scope.$on(\"attachments:loaded\", (function(_this) {\n return function() {\n return _this.scope.attachmentsReady = true;\n };\n })(this));\n this.initializeEventHandlers();\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n _this._setMeta();\n return _this.initializeOnDeleteGoToUrl();\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n EpicDetailController.prototype._setMeta = function() {\n var description, ref, title;\n title = this.translate.instant(\"EPIC.PAGE_TITLE\", {\n epicRef: \"#\" + this.scope.epic.ref,\n epicSubject: this.scope.epic.subject,\n projectName: this.scope.project.name\n });\n description = this.translate.instant(\"EPIC.PAGE_DESCRIPTION\", {\n epicStatus: ((ref = this.scope.statusById[this.scope.epic.status]) != null ? ref.name : void 0) || \"--\",\n epicDescription: angular.element(this.scope.epic.description_html || \"\").text()\n });\n return this.appMetaService.setAll(title, description);\n };\n\n EpicDetailController.prototype.loadAttachments = function() {\n return this.attachmentsFullService.loadAttachments('epic', this.scope.epicId, this.scope.projectId);\n };\n\n EpicDetailController.prototype.initializeEventHandlers = function() {\n this.scope.$on(\"attachment:create\", (function(_this) {\n return function() {\n return _this.analytics.trackEvent(\"attachment\", \"create\", \"create attachment on epic\", 1);\n };\n })(this));\n this.scope.$on(\"comment:new\", (function(_this) {\n return function() {\n return _this.loadEpic();\n };\n })(this));\n return this.scope.$on(\"custom-attributes-values:edit\", (function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"object:updated\");\n };\n })(this));\n };\n\n EpicDetailController.prototype.initializeOnDeleteGoToUrl = function() {\n var ctx;\n ctx = {\n project: this.scope.project.slug\n };\n return this.scope.onDeleteGoToUrl = this.navUrls.resolve(\"project-epics\", ctx);\n };\n\n EpicDetailController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.immutableProject = this.projectService.project;\n this.scope.$emit('project:loaded', project);\n this.scope.statusList = project.epic_statuses;\n this.scope.statusById = groupBy(project.epic_statuses, function(x) {\n return x.id;\n });\n return project;\n };\n\n EpicDetailController.prototype.loadEpic = function() {\n return this.rs.epics.getByRef(this.scope.projectId, this.params.epicref).then((function(_this) {\n return function(epic) {\n var ctx, ref, ref1;\n _this.scope.epic = epic;\n _this.scope.immutableEpic = Immutable.fromJS(epic._attrs);\n _this.scope.epicId = epic.id;\n _this.scope.commentModel = epic;\n _this.loadAttachments();\n _this.modelTransform.setObject(_this.scope, 'epic');\n if (((ref = _this.scope.epic.neighbors.previous) != null ? ref.ref : void 0) != null) {\n ctx = {\n project: _this.scope.project.slug,\n ref: _this.scope.epic.neighbors.previous.ref\n };\n _this.scope.previousUrl = _this.navUrls.resolve(\"project-epics-detail\", ctx);\n }\n if (((ref1 = _this.scope.epic.neighbors.next) != null ? ref1.ref : void 0) != null) {\n ctx = {\n project: _this.scope.project.slug,\n ref: _this.scope.epic.neighbors.next.ref\n };\n return _this.scope.nextUrl = _this.navUrls.resolve(\"project-epics-detail\", ctx);\n }\n };\n })(this));\n };\n\n EpicDetailController.prototype.loadUserstories = function() {\n return this.rs2.userstories.listInEpic(this.scope.epicId).then((function(_this) {\n return function(data) {\n return _this.scope.userstories = data;\n };\n })(this));\n };\n\n EpicDetailController.prototype.loadInitialData = function() {\n var project;\n project = this.loadProject();\n this.fillUsersAndRoles(project.members, project.roles);\n return this.loadEpic().then((function(_this) {\n return function() {\n return _this.loadUserstories();\n };\n })(this));\n };\n\n\n /*\n * Note: This methods (onUpvote() and onDownvote()) are related to tg-vote-button.\n * See app/modules/components/vote-button for more info\n */\n\n EpicDetailController.prototype.onUpvote = function() {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this.loadEpic();\n return _this.rootscope.$broadcast(\"object:updated\");\n };\n })(this);\n onError = (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this);\n return this.rs.epics.upvote(this.scope.epicId).then(onSuccess, onError);\n };\n\n EpicDetailController.prototype.onDownvote = function() {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this.loadEpic();\n return _this.rootscope.$broadcast(\"object:updated\");\n };\n })(this);\n onError = (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this);\n return this.rs.epics.downvote(this.scope.epicId).then(onSuccess, onError);\n };\n\n\n /*\n * Note: This methods (onWatch() and onUnwatch()) are related to tg-watch-button.\n * See app/modules/components/watch-button for more info\n */\n\n EpicDetailController.prototype.onWatch = function() {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this.loadEpic();\n return _this.rootscope.$broadcast(\"object:updated\");\n };\n })(this);\n onError = (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this);\n return this.rs.epics.watch(this.scope.epicId).then(onSuccess, onError);\n };\n\n EpicDetailController.prototype.onUnwatch = function() {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this.loadEpic();\n return _this.rootscope.$broadcast(\"object:updated\");\n };\n })(this);\n onError = (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this);\n return this.rs.epics.unwatch(this.scope.epicId).then(onSuccess, onError);\n };\n\n EpicDetailController.prototype.onSelectColor = function(color) {\n var onSelectColorError, onSelectColorSuccess, transform;\n onSelectColorSuccess = (function(_this) {\n return function() {\n _this.rootscope.$broadcast(\"object:updated\");\n return _this.confirm.notify('success');\n };\n })(this);\n onSelectColorError = (function(_this) {\n return function() {\n return _this.confirm.notify('error');\n };\n })(this);\n transform = this.modelTransform.save(function(epic) {\n epic.color = color;\n return epic;\n });\n return transform.then(onSelectColorSuccess, onSelectColorError);\n };\n\n return EpicDetailController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"EpicDetailController\", EpicDetailController);\n\n EpicStatusDisplayDirective = function($template, $compile) {\n var link, template;\n template = $template.get(\"common/components/status-display.html\", true);\n link = function($scope, $el, $attrs) {\n var render;\n render = function(epic) {\n var html, status;\n status = $scope.statusById[epic.status];\n html = template({\n is_closed: status.is_closed,\n status: status\n });\n html = $compile(html)($scope);\n return $el.html(html);\n };\n $scope.$watch($attrs.ngModel, function(epic) {\n if (epic != null) {\n return render(epic);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgEpicStatusDisplay\", [\"$tgTemplate\", \"$compile\", EpicStatusDisplayDirective]);\n\n EpicStatusButtonDirective = function($rootScope, $repo, $confirm, $loading, $modelTransform, $compile, $translate, $template) {\n var link, template;\n template = $template.get(\"common/components/status-button.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var isEditable, render, save;\n isEditable = function() {\n return $scope.project.my_permissions.indexOf(\"modify_epic\") !== -1;\n };\n render = (function(_this) {\n return function(epic) {\n var html, status;\n status = $scope.statusById[epic.status];\n html = $compile(template({\n status: status,\n statuses: $scope.statusList,\n editable: isEditable()\n }))($scope);\n return $el.html(html);\n };\n })(this);\n save = function(status) {\n var currentLoading, onError, onSuccess, transform;\n currentLoading = $loading().target($el).start();\n transform = $modelTransform.save(function(epic) {\n epic.status = status;\n return epic;\n });\n onSuccess = function() {\n $rootScope.$broadcast(\"object:updated\");\n return currentLoading.finish();\n };\n onError = function() {\n $confirm.notify(\"error\");\n return currentLoading.finish();\n };\n return transform.then(onSuccess, onError);\n };\n $el.on(\"click\", \".js-edit-status\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n if (!isEditable()) {\n return;\n }\n return $el.find(\".pop-status\").popover().open();\n });\n $el.on(\"click\", \".status\", function(event) {\n var target;\n event.preventDefault();\n event.stopPropagation();\n if (!isEditable()) {\n return;\n }\n target = angular.element(event.currentTarget);\n $.fn.popover().closeAll();\n return save(target.data(\"status-id\"));\n });\n $scope.$watch(function() {\n var ref;\n return (ref = $model.$modelValue) != null ? ref.status : void 0;\n }, function() {\n var epic;\n epic = $model.$modelValue;\n if (epic) {\n return render(epic);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgEpicStatusButton\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgQueueModelTransformation\", \"$compile\", \"$translate\", \"$tgTemplate\", EpicStatusButtonDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AssignSprintToIssueButtonDirective, IssueDetailController, IssuePriorityButtonDirective, IssueSeverityButtonDirective, IssueStatusButtonDirective, IssueStatusDisplayDirective, IssueTypeButtonDirective, bindMethods, bindOnce, groupBy, joinStr, mixOf, module, normalizeString, taiga, toString,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n toString = this.taiga.toString;\n\n joinStr = this.taiga.joinStr;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n bindMethods = this.taiga.bindMethods;\n\n normalizeString = this.taiga.normalizeString;\n\n module = angular.module(\"taigaIssues\");\n\n IssueDetailController = (function(superClass) {\n extend(IssueDetailController, superClass);\n\n IssueDetailController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$log\", \"tgAppMetaService\", \"$tgAnalytics\", \"$tgNavUrls\", \"$translate\", \"$tgQueueModelTransformation\", \"tgErrorHandlingService\", \"tgProjectService\", \"tgAttachmentsFullService\"];\n\n function IssueDetailController(scope, rootscope, repo, confirm, rs, params, q, location, log, appMetaService, analytics, navUrls, translate, modelTransform, errorHandlingService, projectService, attachmentsFullService) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.log = log;\n this.appMetaService = appMetaService;\n this.analytics = analytics;\n this.navUrls = navUrls;\n this.translate = translate;\n this.modelTransform = modelTransform;\n this.errorHandlingService = errorHandlingService;\n this.projectService = projectService;\n this.attachmentsFullService = attachmentsFullService;\n bindMethods(this);\n this.scope.issueRef = this.params.issueref;\n this.scope.sectionName = this.translate.instant(\"ISSUES.SECTION_NAME\");\n this.scope.attachmentsReady = false;\n this.scope.$on(\"attachments:loaded\", (function(_this) {\n return function() {\n return _this.scope.attachmentsReady = true;\n };\n })(this));\n this.initializeEventHandlers();\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n _this._setMeta();\n return _this.initializeOnDeleteGoToUrl();\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n IssueDetailController.prototype._setMeta = function() {\n var description, ref, ref1, ref2, ref3, title;\n title = this.translate.instant(\"ISSUE.PAGE_TITLE\", {\n issueRef: \"#\" + this.scope.issue.ref,\n issueSubject: this.scope.issue.subject,\n projectName: this.scope.project.name\n });\n description = this.translate.instant(\"ISSUE.PAGE_DESCRIPTION\", {\n issueStatus: ((ref = this.scope.statusById[this.scope.issue.status]) != null ? ref.name : void 0) || \"--\",\n issueType: ((ref1 = this.scope.typeById[this.scope.issue.type]) != null ? ref1.name : void 0) || \"--\",\n issueSeverity: ((ref2 = this.scope.severityById[this.scope.issue.severity]) != null ? ref2.name : void 0) || \"--\",\n issuePriority: ((ref3 = this.scope.priorityById[this.scope.issue.priority]) != null ? ref3.name : void 0) || \"--\",\n issueDescription: angular.element(this.scope.issue.description_html || \"\").text()\n });\n return this.appMetaService.setAll(title, description);\n };\n\n IssueDetailController.prototype.loadAttachments = function() {\n return this.attachmentsFullService.loadAttachments('issue', this.scope.issueId, this.scope.projectId);\n };\n\n IssueDetailController.prototype.initializeEventHandlers = function() {\n this.scope.$on(\"attachment:create\", (function(_this) {\n return function() {\n return _this.analytics.trackEvent(\"attachment\", \"create\", \"create attachment on issue\", 1);\n };\n })(this));\n this.scope.$on(\"promote-issue-to-us:success\", (function(_this) {\n return function() {\n _this.analytics.trackEvent(\"issue\", \"promoteToUserstory\", \"promote issue to userstory\", 1);\n _this.rootscope.$broadcast(\"object:updated\");\n return _this.loadIssue();\n };\n })(this));\n this.scope.$on(\"comment:new\", (function(_this) {\n return function() {\n return _this.loadIssue();\n };\n })(this));\n this.scope.$on(\"custom-attributes-values:edit\", (function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"object:updated\");\n };\n })(this));\n return this.scope.$on(\"assign-sprint-to-issue:success\", (function(_this) {\n return function(ctx, milestoneId) {\n _this.scope.issue.milestone = milestoneId;\n _this.rootscope.$broadcast(\"object:updated\");\n if (milestoneId) {\n return _this.loadSprint();\n } else {\n return _this.scope.sprint = null;\n }\n };\n })(this));\n };\n\n IssueDetailController.prototype.initializeOnDeleteGoToUrl = function() {\n var ctx;\n ctx = {\n project: this.scope.project.slug\n };\n if (this.scope.project.is_issues_activated) {\n return this.scope.onDeleteGoToUrl = this.navUrls.resolve(\"project-issues\", ctx);\n } else {\n return this.scope.onDeleteGoToUrl = this.navUrls.resolve(\"project\", ctx);\n }\n };\n\n IssueDetailController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.$emit('project:loaded', project);\n this.scope.statusList = project.issue_statuses;\n this.scope.statusById = groupBy(project.issue_statuses, function(x) {\n return x.id;\n });\n this.scope.typeById = groupBy(project.issue_types, function(x) {\n return x.id;\n });\n this.scope.typeList = _.sortBy(project.issue_types, \"order\");\n this.scope.severityList = project.severities;\n this.scope.severityById = groupBy(project.severities, function(x) {\n return x.id;\n });\n this.scope.priorityList = project.priorities;\n this.scope.priorityById = groupBy(project.priorities, function(x) {\n return x.id;\n });\n return project;\n };\n\n IssueDetailController.prototype.loadIssue = function() {\n return this.rs.issues.getByRef(this.scope.projectId, this.params.issueref).then((function(_this) {\n return function(issue) {\n var ctx, ref, ref1;\n _this.scope.issue = issue;\n _this.scope.issueId = issue.id;\n _this.scope.commentModel = issue;\n _this.loadAttachments();\n _this.modelTransform.setObject(_this.scope, 'issue');\n if (((ref = _this.scope.issue.neighbors.previous) != null ? ref.ref : void 0) != null) {\n ctx = {\n project: _this.scope.project.slug,\n ref: _this.scope.issue.neighbors.previous.ref\n };\n _this.scope.previousUrl = _this.navUrls.resolve(\"project-issues-detail\", ctx);\n }\n if (((ref1 = _this.scope.issue.neighbors.next) != null ? ref1.ref : void 0) != null) {\n ctx = {\n project: _this.scope.project.slug,\n ref: _this.scope.issue.neighbors.next.ref\n };\n return _this.scope.nextUrl = _this.navUrls.resolve(\"project-issues-detail\", ctx);\n }\n };\n })(this));\n };\n\n IssueDetailController.prototype.loadSprint = function() {\n if (this.scope.issue.milestone) {\n return this.rs.sprints.get(this.scope.issue.project, this.scope.issue.milestone).then((function(_this) {\n return function(sprint) {\n _this.scope.sprint = sprint;\n return sprint;\n };\n })(this));\n }\n };\n\n IssueDetailController.prototype.loadInitialData = function() {\n var project;\n project = this.loadProject();\n this.fillUsersAndRoles(project.members, project.roles);\n return this.loadIssue().then((function(_this) {\n return function() {\n if (_this.scope.project.my_permissions.indexOf(\"view_milestones\") !== -1) {\n return _this.loadSprint();\n }\n };\n })(this));\n };\n\n\n /*\n * Note: This methods (onUpvote() and onDownvote()) are related to tg-vote-button.\n * See app/modules/components/vote-button for more info\n */\n\n IssueDetailController.prototype.onUpvote = function() {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this.loadIssue();\n return _this.rootscope.$broadcast(\"object:updated\");\n };\n })(this);\n onError = (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this);\n return this.rs.issues.upvote(this.scope.issueId).then(onSuccess, onError);\n };\n\n IssueDetailController.prototype.onDownvote = function() {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this.loadIssue();\n return _this.rootscope.$broadcast(\"object:updated\");\n };\n })(this);\n onError = (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this);\n return this.rs.issues.downvote(this.scope.issueId).then(onSuccess, onError);\n };\n\n\n /*\n * Note: This methods (onWatch() and onUnwatch()) are related to tg-watch-button.\n * See app/modules/components/watch-button for more info\n */\n\n IssueDetailController.prototype.onWatch = function() {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this.loadIssue();\n return _this.rootscope.$broadcast(\"object:updated\");\n };\n })(this);\n onError = (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this);\n return this.rs.issues.watch(this.scope.issueId).then(onSuccess, onError);\n };\n\n IssueDetailController.prototype.onUnwatch = function() {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this.loadIssue();\n return _this.rootscope.$broadcast(\"object:updated\");\n };\n })(this);\n onError = (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this);\n return this.rs.issues.unwatch(this.scope.issueId).then(onSuccess, onError);\n };\n\n return IssueDetailController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"IssueDetailController\", IssueDetailController);\n\n IssueStatusDisplayDirective = function($template, $compile) {\n var link, template;\n template = $template.get(\"common/components/status-display.html\", true);\n link = function($scope, $el, $attrs) {\n var render;\n render = function(issue) {\n var html, status;\n status = $scope.statusById[issue.status];\n html = template({\n is_closed: status.is_closed,\n status: status\n });\n html = $compile(html)($scope);\n return $el.html(html);\n };\n $scope.$watch($attrs.ngModel, function(issue) {\n if (issue != null) {\n return render(issue);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgIssueStatusDisplay\", [\"$tgTemplate\", \"$compile\", IssueStatusDisplayDirective]);\n\n IssueStatusButtonDirective = function($rootScope, $repo, $confirm, $loading, $modelTransform, $template, $compile) {\n var link, template;\n template = $template.get(\"common/components/status-button.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var isEditable, render, save;\n isEditable = function() {\n return $scope.project.my_permissions.indexOf(\"modify_issue\") !== -1;\n };\n render = (function(_this) {\n return function(issue) {\n var html, status;\n status = $scope.statusById[issue.status];\n html = template({\n status: status,\n statuses: $scope.statusList,\n editable: isEditable()\n });\n html = $compile(html)($scope);\n return $el.html(html);\n };\n })(this);\n save = function(statusId) {\n var currentLoading, onError, onSuccess, transform;\n $.fn.popover().closeAll();\n currentLoading = $loading().target($el).start();\n transform = $modelTransform.save(function(issue) {\n issue.status = statusId;\n return issue;\n });\n onSuccess = function() {\n $rootScope.$broadcast(\"object:updated\");\n return currentLoading.finish();\n };\n onError = function() {\n $confirm.notify(\"error\");\n return currentLoading.finish();\n };\n return transform.then(onSuccess, onError);\n };\n $el.on(\"click\", \".js-edit-status\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n if (!isEditable()) {\n return;\n }\n return $el.find(\".pop-status\").popover().open();\n });\n $el.on(\"click\", \".status\", function(event) {\n var target;\n event.preventDefault();\n event.stopPropagation();\n if (!isEditable()) {\n return;\n }\n target = angular.element(event.currentTarget);\n return save(target.data(\"status-id\"));\n });\n $scope.$watch(function() {\n var ref;\n return (ref = $model.$modelValue) != null ? ref.status : void 0;\n }, function() {\n var issue;\n issue = $model.$modelValue;\n if (issue) {\n return render(issue);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgIssueStatusButton\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgQueueModelTransformation\", \"$tgTemplate\", \"$compile\", IssueStatusButtonDirective]);\n\n IssueTypeButtonDirective = function($rootScope, $repo, $confirm, $loading, $modelTransform, $template, $compile) {\n var link, template;\n template = $template.get(\"issue/issue-type-button.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var isEditable, notAutoSave, render, save;\n notAutoSave = $scope.$eval($attrs.notAutoSave);\n isEditable = function() {\n return $scope.project.my_permissions.indexOf(\"modify_issue\") !== -1;\n };\n render = function(issue) {\n var html, type;\n type = $scope.typeById[issue.type];\n html = template({\n type: type,\n typees: $scope.typeList,\n editable: isEditable()\n });\n html = $compile(html)($scope);\n return $el.html(html);\n };\n save = function(type) {\n var currentLoading, onError, onSuccess, transform;\n $.fn.popover().closeAll();\n if (notAutoSave) {\n $model.$modelValue.type = type;\n $scope.$apply();\n return;\n }\n currentLoading = $loading().target($el.find(\".level-name\")).start();\n transform = $modelTransform.save(function(issue) {\n issue.type = type;\n return issue;\n });\n onSuccess = function() {\n $rootScope.$broadcast(\"object:updated\");\n return currentLoading.finish();\n };\n onError = function() {\n $confirm.notify(\"error\");\n return currentLoading.finish();\n };\n return transform.then(onSuccess, onError);\n };\n $el.on(\"click\", \".type-data\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n if (!isEditable()) {\n return;\n }\n return $el.find(\".pop-type\").popover().open();\n });\n $el.on(\"click\", \".type\", function(event) {\n var target, type;\n event.preventDefault();\n event.stopPropagation();\n if (!isEditable()) {\n return;\n }\n target = angular.element(event.currentTarget);\n type = target.data(\"type-id\");\n return save(type);\n });\n $scope.$watch(function() {\n var ref;\n return (ref = $model.$modelValue) != null ? ref.type : void 0;\n }, function() {\n var issue;\n issue = $model.$modelValue;\n if (issue) {\n return render(issue);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgIssueTypeButton\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgQueueModelTransformation\", \"$tgTemplate\", \"$compile\", IssueTypeButtonDirective]);\n\n IssueSeverityButtonDirective = function($rootScope, $repo, $confirm, $loading, $modelTransform, $template, $compile) {\n var link, template;\n template = $template.get(\"issue/issue-severity-button.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var isEditable, notAutoSave, render, save;\n notAutoSave = $scope.$eval($attrs.notAutoSave);\n isEditable = function() {\n return $scope.project.my_permissions.indexOf(\"modify_issue\") !== -1;\n };\n render = function(issue) {\n var html, severity;\n severity = $scope.severityById[issue.severity];\n html = template({\n severity: severity,\n severityes: $scope.severityList,\n editable: isEditable()\n });\n html = $compile(html)($scope);\n return $el.html(html);\n };\n save = function(severity) {\n var currentLoading, onError, onSuccess, transform;\n $.fn.popover().closeAll();\n if (notAutoSave) {\n $model.$modelValue.severity = severity;\n $scope.$apply();\n return;\n }\n currentLoading = $loading().target($el.find(\".level-name\")).start();\n transform = $modelTransform.save(function(issue) {\n issue.severity = severity;\n return issue;\n });\n onSuccess = function() {\n $rootScope.$broadcast(\"object:updated\");\n return currentLoading.finish();\n };\n onError = function() {\n $confirm.notify(\"error\");\n return currentLoading.finish();\n };\n return transform.then(onSuccess, onError);\n };\n $el.on(\"click\", \".severity-data\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n if (!isEditable()) {\n return;\n }\n return $el.find(\".pop-severity\").popover().open();\n });\n $el.on(\"click\", \".severity\", function(event) {\n var severity, target;\n event.preventDefault();\n event.stopPropagation();\n if (!isEditable()) {\n return;\n }\n target = angular.element(event.currentTarget);\n severity = target.data(\"severity-id\");\n return save(severity);\n });\n $scope.$watch(function() {\n var ref;\n return (ref = $model.$modelValue) != null ? ref.severity : void 0;\n }, function() {\n var issue;\n issue = $model.$modelValue;\n if (issue) {\n return render(issue);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgIssueSeverityButton\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgQueueModelTransformation\", \"$tgTemplate\", \"$compile\", IssueSeverityButtonDirective]);\n\n IssuePriorityButtonDirective = function($rootScope, $repo, $confirm, $loading, $modelTransform, $template, $compile) {\n var link, template;\n template = $template.get(\"issue/issue-priority-button.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var isEditable, notAutoSave, render, save;\n notAutoSave = $scope.$eval($attrs.notAutoSave);\n isEditable = function() {\n return $scope.project.my_permissions.indexOf(\"modify_issue\") !== -1;\n };\n render = function(issue) {\n var html, priority;\n priority = $scope.priorityById[issue.priority];\n html = template({\n priority: priority,\n priorityes: $scope.priorityList,\n editable: isEditable()\n });\n html = $compile(html)($scope);\n return $el.html(html);\n };\n save = function(priority) {\n var currentLoading, onError, onSuccess, transform;\n $.fn.popover().closeAll();\n if (notAutoSave) {\n $model.$modelValue.priority = priority;\n $scope.$apply();\n return;\n }\n currentLoading = $loading().target($el.find(\".level-name\")).start();\n transform = $modelTransform.save(function(issue) {\n issue.priority = priority;\n return issue;\n });\n onSuccess = function() {\n $rootScope.$broadcast(\"object:updated\");\n return currentLoading.finish();\n };\n onError = function() {\n $confirm.notify(\"error\");\n return currentLoading.finish();\n };\n return transform.then(onSuccess, onError);\n };\n $el.on(\"click\", \".priority-data\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n if (!isEditable()) {\n return;\n }\n return $el.find(\".pop-priority\").popover().open();\n });\n $el.on(\"click\", \".priority\", function(event) {\n var priority, target;\n event.preventDefault();\n event.stopPropagation();\n if (!isEditable()) {\n return;\n }\n target = angular.element(event.currentTarget);\n priority = target.data(\"priority-id\");\n return save(priority);\n });\n $scope.$watch(function() {\n var ref;\n return (ref = $model.$modelValue) != null ? ref.priority : void 0;\n }, function() {\n var issue;\n issue = $model.$modelValue;\n if (issue) {\n return render(issue);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgIssuePriorityButton\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgQueueModelTransformation\", \"$tgTemplate\", \"$compile\", IssuePriorityButtonDirective]);\n\n AssignSprintToIssueButtonDirective = function($rootscope, $rs, $repo, $loading, $translate, lightboxService, $modelTransform, $confirm) {\n var link;\n link = function($scope, $el, $attrs, $model) {\n var avaliableMilestones, existsMilestone, issue;\n avaliableMilestones = [];\n issue = null;\n $scope.$watch($attrs.ngModel, function(item) {\n if (!item) {\n return;\n }\n if (item.milestone) {\n $el.find('.assign-issue-button.button-unset').removeClass('is-active');\n return $el.find('.assign-issue-button.button-set').addClass('is-active');\n } else {\n $el.find('.assign-issue-button.button-set').removeClass('is-active');\n return $el.find('.assign-issue-button.button-unset').addClass('is-active');\n }\n });\n $el.on(\"click\", \".assign-issue-button.button-unset\", function(event) {\n var title;\n event.preventDefault();\n event.stopPropagation();\n title = $translate.instant(\"ISSUES.ACTION_ATTACH_SPRINT\");\n issue = $model.$modelValue;\n return $rs.sprints.list($scope.projectId, null).then(function(data) {\n $scope.milestones = data.milestones;\n $scope.selectedSprint = issue.milestone;\n avaliableMilestones = angular.copy($scope.milestones);\n return lightboxService.open($el.find(\".lightbox-assign-sprint-to-issue\"));\n });\n });\n $el.on(\"click\", \".assign-issue-button.button-set\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n issue = $model.$modelValue;\n return $rs.sprints.list($scope.projectId, null).then(function(data) {\n var currentSprint, message, title;\n currentSprint = _.find(data.milestones, {\n \"id\": issue.milestone\n });\n title = $translate.instant(\"ISSUES.CONFIRM_DETACH_FROM_SPRINT.TITLE\");\n message = $translate.instant(\"ISSUES.CONFIRM_DETACH_FROM_SPRINT.MESSAGE\", {\n sprintName: currentSprint.name\n });\n return $confirm.ask(title, null, message).then(function(askResponse) {\n var onError, onSuccess, transform;\n onSuccess = function() {\n $rootscope.$broadcast(\"assign-sprint-to-issue:success\", null);\n askResponse.finish();\n return lightboxService.close($el);\n };\n onError = function() {\n askResponse.finish(false);\n return $confirm.notify(\"error\");\n };\n transform = $modelTransform.save(function(issue) {\n issue.setAttr('milestone', null);\n return issue;\n });\n return transform.then(onSuccess, onError);\n });\n });\n });\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n existsMilestone = function(needle, haystack) {\n haystack = normalizeString(haystack.toUpperCase());\n needle = normalizeString(needle.toUpperCase());\n return _.includes(haystack, needle);\n };\n $scope.filterMilestones = function(filterText) {\n return $scope.milestones = avaliableMilestones.filter(function(milestone) {\n return existsMilestone(filterText, milestone.name);\n });\n };\n return $scope.saveIssueToSprint = function(selectedSprint, event) {\n var currentLoading, transform;\n currentLoading = $loading().target($(event.currentTarget)).start();\n issue.setAttr('milestone', selectedSprint.id);\n transform = $modelTransform.save(function(item) {\n issue.setAttr('milestone', selectedSprint.id);\n return item;\n });\n return transform.then(function() {\n currentLoading.finish();\n lightboxService.close($el.find(\".lightbox-assign-sprint-to-issue\"));\n return $rootscope.$broadcast(\"assign-sprint-to-issue:success\", selectedSprint.id);\n });\n };\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\",\n templateUrl: \"issue/assign-sprint-to-issue-button.html\"\n };\n };\n\n module.directive(\"tgAssignSprintToIssueButton\", [\"$rootScope\", \"$tgResources\", \"$tgRepo\", \"$tgLoading\", \"$translate\", \"lightboxService\", \"$tgQueueModelTransformation\", \"$tgConfirm\", AssignSprintToIssueButtonDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CreateBulkIssuesDirective, bindOnce, debounce, module, taiga, trim;\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n trim = this.taiga.trim;\n\n module = angular.module(\"taigaIssues\");\n\n CreateBulkIssuesDirective = function($repo, $rs, $confirm, $rootscope, $loading, lightboxService, $model) {\n var link;\n link = function($scope, $el, attrs) {\n var form, submit, submitButton;\n form = null;\n $scope.$on(\"issueform:bulk\", function(ctx, projectId, milestoneId, status) {\n if (form) {\n form.reset();\n }\n lightboxService.open($el);\n return $scope[\"new\"] = {\n projectId: projectId,\n milestoneId: milestoneId,\n bulk: \"\"\n };\n });\n submit = debounce(2000, function(event) {\n var currentLoading, data, milestoneId, projectId, promise;\n event.preventDefault();\n form = $el.find(\"form\").checksley();\n if (!form.validate()) {\n return;\n }\n currentLoading = $loading().target(submitButton).start();\n if (currentLoading.isLoading()) {\n return;\n }\n data = $scope[\"new\"].bulk;\n projectId = $scope[\"new\"].projectId;\n milestoneId = $scope[\"new\"].milestoneId;\n promise = $rs.issues.bulkCreate(projectId, milestoneId, data);\n promise.then(function(result) {\n result = _.map(result.data, function(x) {\n return $model.make_model('issues', x);\n });\n currentLoading.finish();\n $rootscope.$broadcast(\"issueform:new:success\", result);\n lightboxService.close($el);\n return $confirm.notify(\"success\");\n });\n return promise.then(null, function() {\n currentLoading.finish();\n return $confirm.notify(\"error\");\n });\n });\n submitButton = $el.find(\"button[type='submit']\");\n $el.on(\"submit\", \"form\", submit);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLbCreateBulkIssues\", [\"$tgRepo\", \"$tgResources\", \"$tgConfirm\", \"$rootScope\", \"$tgLoading\", \"lightboxService\", \"$tgModel\", CreateBulkIssuesDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var IssueAssignedToInlineEditionDirective, IssueStatusInlineEditionDirective, IssuesController, IssuesOrderingDirective, IssuesPaginationDirective, bindMethods, bindOnce, debounceLeading, groupBy, joinStr, mixOf, module, startswith, taiga, toString, trim,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n trim = this.taiga.trim;\n\n toString = this.taiga.toString;\n\n joinStr = this.taiga.joinStr;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n debounceLeading = this.taiga.debounceLeading;\n\n startswith = this.taiga.startswith;\n\n bindMethods = this.taiga.bindMethods;\n\n debounceLeading = this.taiga.debounceLeading;\n\n module = angular.module(\"taigaIssues\");\n\n IssuesController = (function(superClass) {\n extend(IssuesController, superClass);\n\n IssuesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$tgUrls\", \"$routeParams\", \"$q\", \"$tgLocation\", \"tgAppMetaService\", \"$tgNavUrls\", \"$tgEvents\", \"$tgAnalytics\", \"$translate\", \"tgErrorHandlingService\", \"$tgStorage\", \"tgFilterRemoteStorageService\", \"tgProjectService\", \"tgUserActivityService\"];\n\n IssuesController.prototype.filtersHashSuffix = \"issues-filters\";\n\n IssuesController.prototype.myFiltersHashSuffix = \"issues-my-filters\";\n\n IssuesController.prototype.excludePrefix = \"exclude_\";\n\n IssuesController.prototype.filterCategories = [\"tags\", \"status\", \"type\", \"severity\", \"priority\", \"assigned_to\", \"owner\", \"role\"];\n\n IssuesController.prototype.validQueryParams = ['exclude_tags', 'tags', 'exclude_status', 'status', 'exclude_type', 'type', 'exclude_severity', 'severity', 'exclude_priority', 'priority', 'exclude_assigned_to', 'assigned_to', 'exclude_role', 'role', 'exclude_owner', 'owner', 'order_by'];\n\n function IssuesController(scope, rootscope, repo, confirm, rs, urls, params1, q1, location, appMetaService, navUrls, events, analytics, translate, errorHandlingService, storage, filterRemoteStorageService, projectService) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.urls = urls;\n this.params = params1;\n this.q = q1;\n this.location = location;\n this.appMetaService = appMetaService;\n this.navUrls = navUrls;\n this.events = events;\n this.analytics = analytics;\n this.translate = translate;\n this.errorHandlingService = errorHandlingService;\n this.storage = storage;\n this.filterRemoteStorageService = filterRemoteStorageService;\n this.projectService = projectService;\n this.loadIssues = bind(this.loadIssues, this);\n bindMethods(this);\n this.showTags = true;\n this.scope.sectionName = this.translate.instant(\"PROJECT.SECTION.ISSUES\");\n this.voting = false;\n this.openFilter = false;\n if (this.applyStoredFilters(this.params.pslug, this.filtersHashSuffix, this.validQueryParams)) {\n return;\n }\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n var description, title;\n title = _this.translate.instant(\"ISSUES.PAGE_TITLE\", {\n projectName: _this.scope.project.name\n });\n description = _this.translate.instant(\"ISSUES.PAGE_DESCRIPTION\", {\n projectName: _this.scope.project.name,\n projectDescription: _this.scope.project.description\n });\n return _this.appMetaService.setAll(title, description);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n this.scope.$on(\"issueform:new:success\", (function(_this) {\n return function() {\n _this.analytics.trackEvent(\"issue\", \"create\", \"create issue on issues list\", 1);\n return _this.loadIssues();\n };\n })(this));\n this.scope.$on(\"assigned-to:changed\", (function(_this) {\n return function() {\n _this.generateFilters();\n if (_this.isFilterDataTypeSelected('assigned_to') || _this.isFilterDataTypeSelected('role') || _this.isOrderedBy('assigned_to') || _this.isOrderedBy('modified')) {\n return _this.loadIssues();\n }\n };\n })(this));\n this.scope.$on(\"status:changed\", (function(_this) {\n return function() {\n _this.generateFilters();\n if (_this.isFilterDataTypeSelected('status') || _this.isOrderedBy('status') || _this.isOrderedBy('modified')) {\n return _this.loadIssues();\n }\n };\n })(this));\n }\n\n IssuesController.prototype.toggleShowTags = function() {\n return this.rs.issues.storeIssuesShowTags(this.scope.projectId, this.showTags);\n };\n\n IssuesController.prototype.isOrderedBy = function(fieldName) {\n var pattern;\n pattern = new RegExp(\"-*\" + fieldName);\n return pattern.test(this.location.search().order_by);\n };\n\n IssuesController.prototype.changeQ = function(q) {\n this.unselectFilter(\"page\");\n this.replaceFilter(\"q\", q);\n this.loadIssues();\n return this.generateFilters();\n };\n\n IssuesController.prototype.removeFilter = function(filter) {\n this.unselectFilter(\"page\");\n this.unselectFilter(filter.dataType, filter.id, false, filter.mode);\n this.loadIssues();\n return this.generateFilters();\n };\n\n IssuesController.prototype.addFilter = function(newFilter) {\n this.unselectFilter(\"page\");\n this.selectFilter(newFilter.category.dataType, newFilter.filter.id, false, newFilter.mode);\n this.loadIssues();\n return this.generateFilters();\n };\n\n IssuesController.prototype.selectCustomFilter = function(customFilter) {\n var orderBy;\n orderBy = this.location.search().order_by;\n if (orderBy) {\n customFilter.filter.order_by = orderBy;\n }\n this.unselectFilter(\"page\");\n this.replaceAllFilters(customFilter.filter);\n this.loadIssues();\n return this.generateFilters();\n };\n\n IssuesController.prototype.removeCustomFilter = function(customFilter) {\n return this.filterRemoteStorageService.getFilters(this.scope.projectId, this.myFiltersHashSuffix).then((function(_this) {\n return function(userFilters) {\n delete userFilters[customFilter.id];\n return _this.filterRemoteStorageService.storeFilters(_this.scope.projectId, userFilters, _this.myFiltersHashSuffix).then(_this.generateFilters);\n };\n })(this));\n };\n\n IssuesController.prototype.isFilterDataTypeSelected = function(filterDataType) {\n var filter, j, len, ref;\n ref = this.selectedFilters;\n for (j = 0, len = ref.length; j < len; j++) {\n filter = ref[j];\n if (filter['dataType'] === filterDataType) {\n return true;\n }\n }\n return false;\n };\n\n IssuesController.prototype.saveCustomFilter = function(name) {\n var excludeKey, filters, j, key, len, ref, urlfilters;\n filters = {};\n urlfilters = this.location.search();\n ref = this.filterCategories;\n for (j = 0, len = ref.length; j < len; j++) {\n key = ref[j];\n excludeKey = this.excludePrefix.concat(key);\n filters[key] = urlfilters[key];\n filters[excludeKey] = urlfilters[excludeKey];\n }\n return this.filterRemoteStorageService.getFilters(this.scope.projectId, this.myFiltersHashSuffix).then((function(_this) {\n return function(userFilters) {\n userFilters[name] = filters;\n return _this.filterRemoteStorageService.storeFilters(_this.scope.projectId, userFilters, _this.myFiltersHashSuffix).then(_this.generateFilters);\n };\n })(this));\n };\n\n IssuesController.prototype.getQueryParams = function() {\n return _.pick(_.clone(this.location.search()), this.validQueryParams);\n };\n\n IssuesController.prototype.generateFilters = function() {\n var excludeKey, j, key, len, loadFilters, ref, urlfilters;\n urlfilters = this.getQueryParams();\n this.storeFilters(this.params.pslug, urlfilters, this.filtersHashSuffix);\n loadFilters = {};\n loadFilters.project = this.scope.projectId;\n loadFilters.q = urlfilters.q;\n ref = this.filterCategories;\n for (j = 0, len = ref.length; j < len; j++) {\n key = ref[j];\n excludeKey = this.excludePrefix.concat(key);\n loadFilters[key] = urlfilters[key];\n loadFilters[excludeKey] = urlfilters[excludeKey];\n }\n return this.q.all([this.rs.issues.filtersData(loadFilters), this.filterRemoteStorageService.getFilters(this.scope.projectId, this.myFiltersHashSuffix)]).then((function(_this) {\n return function(result) {\n var customFiltersRaw, data, dataCollection, k, len1, ref1, selected, tagsWithAtLeastOneElement;\n data = result[0];\n customFiltersRaw = result[1];\n dataCollection = {};\n dataCollection.status = _.map(data.statuses, function(it) {\n it.id = it.id.toString();\n return it;\n });\n dataCollection.type = _.map(data.types, function(it) {\n it.id = it.id.toString();\n return it;\n });\n dataCollection.severity = _.map(data.severities, function(it) {\n it.id = it.id.toString();\n return it;\n });\n dataCollection.priority = _.map(data.priorities, function(it) {\n it.id = it.id.toString();\n return it;\n });\n dataCollection.tags = _.map(data.tags, function(it) {\n it.id = it.name;\n return it;\n });\n tagsWithAtLeastOneElement = _.filter(dataCollection.tags, function(tag) {\n return tag.count > 0;\n });\n dataCollection.assigned_to = _.map(data.assigned_to, function(it) {\n if (it.id) {\n it.id = it.id.toString();\n } else {\n it.id = \"null\";\n }\n it.name = it.full_name || \"Unassigned\";\n return it;\n });\n dataCollection.owner = _.map(data.owners, function(it) {\n it.id = it.id.toString();\n it.name = it.full_name;\n return it;\n });\n dataCollection.role = _.map(data.roles, function(it) {\n if (it.id) {\n it.id = it.id.toString();\n } else {\n it.id = \"null\";\n }\n it.name = it.name || \"Unassigned\";\n return it;\n });\n _this.selectedFilters = [];\n ref1 = _this.filterCategories;\n for (k = 0, len1 = ref1.length; k < len1; k++) {\n key = ref1[k];\n excludeKey = _this.excludePrefix.concat(key);\n if (loadFilters[key]) {\n selected = _this.formatSelectedFilters(key, dataCollection[key], loadFilters[key]);\n _this.selectedFilters = _this.selectedFilters.concat(selected);\n }\n if (loadFilters[excludeKey]) {\n selected = _this.formatSelectedFilters(key, dataCollection[key], loadFilters[excludeKey], \"exclude\");\n _this.selectedFilters = _this.selectedFilters.concat(selected);\n }\n }\n _this.filterQ = loadFilters.q;\n _this.filters = [\n {\n title: _this.translate.instant(\"COMMON.FILTERS.CATEGORIES.TYPE\"),\n dataType: \"type\",\n content: dataCollection.type\n }, {\n title: _this.translate.instant(\"COMMON.FILTERS.CATEGORIES.SEVERITY\"),\n dataType: \"severity\",\n content: dataCollection.severity\n }, {\n title: _this.translate.instant(\"COMMON.FILTERS.CATEGORIES.PRIORITIES\"),\n dataType: \"priority\",\n content: dataCollection.priority\n }, {\n title: _this.translate.instant(\"COMMON.FILTERS.CATEGORIES.STATUS\"),\n dataType: \"status\",\n content: dataCollection.status\n }, {\n title: _this.translate.instant(\"COMMON.FILTERS.CATEGORIES.TAGS\"),\n dataType: \"tags\",\n content: dataCollection.tags,\n hideEmpty: true,\n totalTaggedElements: tagsWithAtLeastOneElement.length\n }, {\n title: _this.translate.instant(\"COMMON.FILTERS.CATEGORIES.ASSIGNED_TO\"),\n dataType: \"assigned_to\",\n content: dataCollection.assigned_to\n }, {\n title: _this.translate.instant(\"COMMON.FILTERS.CATEGORIES.ROLE\"),\n dataType: \"role\",\n content: dataCollection.role\n }, {\n title: _this.translate.instant(\"COMMON.FILTERS.CATEGORIES.CREATED_BY\"),\n dataType: \"owner\",\n content: dataCollection.owner\n }\n ];\n _this.customFilters = [];\n return _.forOwn(customFiltersRaw, function(value, key) {\n return _this.customFilters.push({\n id: key,\n name: key,\n filter: value\n });\n });\n };\n })(this));\n };\n\n IssuesController.prototype.initializeSubscription = function() {\n var routingKey;\n routingKey = \"changes.project.\" + this.scope.projectId + \".issues\";\n return this.events.subscribe(this.scope, routingKey, debounceLeading(500, (function(_this) {\n return function(message) {\n return _this.loadIssues();\n };\n })(this)));\n };\n\n IssuesController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n if (!project.is_issues_activated) {\n this.errorHandlingService.permissionDenied();\n }\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.$emit('project:loaded', project);\n this.scope.issueStatusById = groupBy(project.issue_statuses, function(x) {\n return x.id;\n });\n this.scope.issueStatusList = _.sortBy(project.issue_statuses, \"order\");\n this.scope.severityById = groupBy(project.severities, function(x) {\n return x.id;\n });\n this.scope.severityList = _.sortBy(project.severities, \"order\");\n this.scope.priorityById = groupBy(project.priorities, function(x) {\n return x.id;\n });\n this.scope.priorityList = _.sortBy(project.priorities, \"order\");\n this.scope.issueTypes = _.sortBy(project.issue_types, \"order\");\n this.scope.issueTypeById = groupBy(project.issue_types, function(x) {\n return x.id;\n });\n return project;\n };\n\n IssuesController.prototype.loadIssuesRequests = 0;\n\n IssuesController.prototype.loadIssues = function() {\n var params, promise;\n params = this.location.search();\n promise = this.rs.issues.list(this.scope.projectId, params);\n this.loadIssuesRequests += 1;\n promise.index = this.loadIssuesRequests;\n promise.then((function(_this) {\n return function(data) {\n if (promise.index === _this.loadIssuesRequests) {\n _this.scope.issues = data.models;\n _this.scope.page = data.current;\n _this.scope.count = data.count;\n _this.scope.paginatedBy = data.paginatedBy;\n }\n return data;\n };\n })(this));\n return promise;\n };\n\n IssuesController.prototype.loadInitialData = function() {\n var project;\n project = this.loadProject();\n this.fillUsersAndRoles(project.members, project.roles);\n this.initializeSubscription();\n this.generateFilters();\n if (this.rs.issues.getIssuesShowTags(this.scope.projectId) === false) {\n this.showTags = false;\n }\n return this.loadIssues();\n };\n\n IssuesController.prototype.addNewIssue = function() {\n var project;\n project = this.projectService.project.toJS();\n return this.rootscope.$broadcast(\"genericform:new\", {\n 'objType': 'issue',\n 'project': project\n });\n };\n\n IssuesController.prototype.addIssuesInBulk = function() {\n var project;\n project = this.projectService.project.toJS();\n return this.rootscope.$broadcast(\"issueform:bulk\", project.id);\n };\n\n IssuesController.prototype.getIssuesOrderBy = function() {\n if (_.isString(this.location.search().order_by)) {\n return this.location.search().order_by;\n } else {\n return \"created_date\";\n }\n };\n\n return IssuesController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"IssuesController\", IssuesController);\n\n IssuesPaginationDirective = function($log, $location, $template, $compile) {\n var link, linkPagination, template;\n template = $template.get(\"issue/issue-paginator.html\", true);\n linkPagination = function($scope, $el, $attrs, $ctrl) {\n var $pagEl, afterCurrent, atBegin, atEnd, beforeCurrent, getNumPages, renderPagination;\n afterCurrent = 2;\n beforeCurrent = 4;\n atBegin = 2;\n atEnd = 2;\n $pagEl = $el.find(\".issues-paginator\");\n getNumPages = function() {\n var numPages;\n numPages = $scope.count / $scope.paginatedBy;\n if (parseInt(numPages, 10) < numPages) {\n numPages = parseInt(numPages, 10) + 1;\n } else {\n numPages = parseInt(numPages, 10);\n }\n return numPages;\n };\n renderPagination = function() {\n var cpage, html, i, j, numPages, options, pages, ref;\n numPages = getNumPages();\n if (numPages <= 1) {\n $pagEl.hide();\n return;\n }\n $pagEl.show();\n pages = [];\n options = {};\n options.pages = pages;\n options.showPrevious = $scope.page > 1;\n options.showNext = !($scope.page === numPages);\n cpage = $scope.page;\n for (i = j = 1, ref = numPages; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) {\n if (i === (cpage + afterCurrent) && numPages > (cpage + afterCurrent + atEnd)) {\n pages.push({\n classes: \"dots\",\n type: \"dots\"\n });\n } else if (i === (cpage - beforeCurrent) && cpage > (atBegin + beforeCurrent)) {\n pages.push({\n classes: \"dots\",\n type: \"dots\"\n });\n } else if (i > (cpage + afterCurrent) && i <= (numPages - atEnd)) {\n\n } else if (i < (cpage - beforeCurrent) && i > atBegin) {\n\n } else if (i === cpage) {\n pages.push({\n classes: \"active\",\n num: i,\n type: \"page-active\"\n });\n } else {\n pages.push({\n classes: \"page\",\n num: i,\n type: \"page\"\n });\n }\n }\n html = template(options);\n html = $compile(html)($scope);\n return $pagEl.html(html);\n };\n $scope.$watch(\"issues\", function(value) {\n if (!value) {\n return;\n }\n return renderPagination();\n });\n $el.on(\"click\", \".issues-paginator a.next\", function(event) {\n event.preventDefault();\n return $scope.$apply(function() {\n $ctrl.selectFilter(\"page\", $scope.page + 1);\n return $ctrl.loadIssues();\n });\n });\n $el.on(\"click\", \".issues-paginator a.previous\", function(event) {\n event.preventDefault();\n return $scope.$apply(function() {\n $ctrl.selectFilter(\"page\", $scope.page - 1);\n return $ctrl.loadIssues();\n });\n });\n return $el.on(\"click\", \".issues-paginator li.page > a\", function(event) {\n var pagenum, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n pagenum = target.data(\"pagenum\");\n return $scope.$apply(function() {\n $ctrl.selectFilter(\"page\", pagenum);\n return $ctrl.loadIssues();\n });\n });\n };\n link = function($scope, $el, $attrs) {\n var $ctrl;\n $ctrl = $el.controller();\n linkPagination($scope, $el, $attrs, $ctrl);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgIssuesPagination\", [\"$log\", \"$tgLocation\", \"$tgTemplate\", \"$compile\", IssuesPaginationDirective]);\n\n IssuesOrderingDirective = function($log, $location, $template, $compile) {\n var link, linkOrdering;\n linkOrdering = function($scope, $el, $attrs, $ctrl) {\n var colHeadElement, currentOrder, icon, svg;\n currentOrder = $ctrl.getIssuesOrderBy();\n if (currentOrder) {\n icon = startswith(currentOrder, \"-\") ? \"icon-arrow-up\" : \"icon-arrow-down\";\n colHeadElement = $el.find(\".row.title > div[data-fieldname='\" + (trim(currentOrder, \"-\")) + \"']\");\n svg = colHeadElement.find('svg');\n svg.addClass(icon);\n $compile(colHeadElement.contents())($scope);\n }\n return $el.on(\"click\", \".row.title > div:not(.skip-order)\", function(event) {\n var finalOrder, newOrder, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n currentOrder = $ctrl.getIssuesOrderBy();\n newOrder = target.data(\"fieldname\");\n if (newOrder === 'total_voters' && currentOrder !== \"-total_voters\") {\n currentOrder = \"total_voters\";\n }\n finalOrder = currentOrder === newOrder ? \"-\" + newOrder : newOrder;\n return $scope.$apply(function() {\n var urlfilters;\n $ctrl.replaceFilter(\"order_by\", finalOrder);\n if ($ctrl.filtersHashSuffix) {\n urlfilters = $ctrl.getQueryParams();\n $ctrl.storeFilters($ctrl.params.pslug, urlfilters, $ctrl.filtersHashSuffix);\n }\n return $ctrl.loadIssues().then(function() {\n $el.find('.row.title svg').removeClass();\n colHeadElement = $el.find(\".row.title > div[data-fieldname='\" + (trim(finalOrder, \"-\")) + \"']\");\n icon = startswith(finalOrder, \"-\") ? \"icon-arrow-up\" : \"icon-arrow-down\";\n colHeadElement.find('svg').addClass(icon);\n return $compile(target.contents())($scope);\n });\n });\n });\n };\n link = function($scope, $el, $attrs) {\n var $ctrl;\n $ctrl = $el.controller();\n linkOrdering($scope, $el, $attrs, $ctrl);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgIssuesOrdering\", [\"$log\", \"$tgLocation\", \"$tgTemplate\", \"$compile\", IssuesOrderingDirective]);\n\n IssueStatusInlineEditionDirective = function($repo, $template, $rootscope) {\n\n /*\n Print the status of an Issue and a popover to change it.\n - tg-issue-status-inline-edition: The issue\n \n Example:\n \n div.status(tg-issue-status-inline-edition=\"issue\")\n a.issue-status(href=\"\")\n \n NOTE: This directive need 'issueStatusById' and 'project'.\n */\n var link, selectionTemplate, updateIssueStatus;\n selectionTemplate = $template.get(\"issue/issue-status-inline-edition-selection.html\", true);\n updateIssueStatus = function($el, issue, issueStatusById) {\n var issueStatusDom, issueStatusDomParent, status;\n issueStatusDomParent = $el.find(\".issue-status\");\n issueStatusDom = $el.find(\".issue-status .issue-status-bind\");\n status = issueStatusById[issue.status];\n if (status) {\n issueStatusDom.text(status.name);\n issueStatusDom.prop(\"title\", status.name);\n return issueStatusDomParent.css('color', status.color);\n }\n };\n link = function($scope, $el, $attrs) {\n var $ctrl, issue;\n $ctrl = $el.controller();\n issue = $scope.$eval($attrs.tgIssueStatusInlineEdition);\n $el.on(\"click\", \".issue-status\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n return $el.find(\".pop-status\").popover().open();\n });\n $el.on(\"click\", \".status\", function(event) {\n var attachments, target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n issue.status = target.data(\"status-id\");\n $el.find(\".pop-status\").popover().close();\n updateIssueStatus($el, issue, $scope.issueStatusById);\n attachments = issue.attachments;\n return $scope.$apply(function() {\n return $repo.save(issue).then(function(response) {\n issue.attachments = attachments;\n issue._isModified = false;\n issue._attrs = _.extend(issue.getAttrs(), issue);\n issue._modifiedAttrs = {};\n return $rootscope.$broadcast(\"status:changed\", response);\n });\n });\n });\n taiga.bindOnce($scope, \"project\", function(project) {\n $el.append(selectionTemplate({\n 'statuses': project.issue_statuses\n }));\n updateIssueStatus($el, issue, $scope.issueStatusById);\n if (project.my_permissions.indexOf(\"modify_issue\") === -1) {\n $el.unbind(\"click\");\n return $el.find(\"a\").addClass(\"not-clickable\");\n }\n });\n $scope.$watch($attrs.tgIssueStatusInlineEdition, (function(_this) {\n return function(val) {\n return updateIssueStatus($el, val, $scope.issueStatusById);\n };\n })(this));\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgIssueStatusInlineEdition\", [\"$tgRepo\", \"$tgTemplate\", \"$rootScope\", IssueStatusInlineEditionDirective]);\n\n IssueAssignedToInlineEditionDirective = function($repo, $rootscope, $translate, avatarService, $lightboxFactory) {\n var link, template;\n template = _.template(\"\\\" src=\\\"<%- imgurl %>\\\" alt=\\\"<%- name %>\\\"/>\");\n link = function($scope, $el, $attrs) {\n var $ctrl, issue, updateIssue;\n updateIssue = function(issue) {\n var avatar, ctx, member;\n ctx = {\n name: $translate.instant(\"COMMON.ASSIGNED_TO.NOT_ASSIGNED\"),\n imgurl: \"/\" + window._version + \"/images/unnamed.png\"\n };\n member = $scope.usersById[issue.assigned_to];\n avatar = avatarService.getAvatar(member);\n ctx.imgurl = avatar.url;\n ctx.bg = null;\n if (member) {\n ctx.name = member.full_name_display;\n ctx.bg = avatar.bg;\n }\n $el.find(\".avatar\").html(template(ctx));\n return $el.find(\".issue-assignedto\").attr('title', ctx.name);\n };\n $ctrl = $el.controller();\n issue = $scope.$eval($attrs.tgIssueAssignedToInlineEdition);\n updateIssue(issue);\n $el.on(\"click\", \".issue-assignedto\", function(event) {\n var onClose;\n onClose = (function(_this) {\n return function(assignedUsers) {\n var attachments;\n issue.assigned_to = assignedUsers.pop() || null;\n attachments = issue.attachments;\n return $repo.save(issue).then(function() {\n issue.attachments = attachments;\n issue._isModified = false;\n issue._attrs = _.extend(issue.getAttrs(), issue);\n issue._modifiedAttrs = {};\n updateIssue(issue);\n return $rootscope.$broadcast(\"assigned-to:changed\", issue);\n });\n };\n })(this);\n return $lightboxFactory.create('tg-lb-select-user', {\n \"class\": \"lightbox lightbox-select-user\"\n }, {\n \"currentUsers\": [issue.assigned_to],\n \"activeUsers\": $scope.activeUsers,\n \"onClose\": onClose,\n \"single\": true,\n \"lbTitle\": $translate.instant(\"COMMON.ASSIGNED_USERS.ADD\")\n });\n });\n taiga.bindOnce($scope, \"project\", function(project) {\n if (project.my_permissions.indexOf(\"modify_issue\") === -1) {\n $el.unbind(\"click\");\n return $el.find(\"a\").addClass(\"not-clickable\");\n }\n });\n $scope.$watch($attrs.tgIssueAssignedToInlineEdition, function(val) {\n return updateIssue(val);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgIssueAssignedToInlineEdition\", [\"$tgRepo\", \"$rootScope\", \"$translate\", \"tgAvatarService\", \"tgLightboxFactory\", IssueAssignedToInlineEditionDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UsClientRequirementButtonDirective, UsStatusButtonDirective, UsStatusDisplayDirective, UsTeamRequirementButtonDirective, UserStoryDetailController, bindMethods, bindOnce, groupBy, mixOf, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n bindMethods = this.taiga.bindMethods;\n\n module = angular.module(\"taigaUserStories\");\n\n UserStoryDetailController = (function(superClass) {\n extend(UserStoryDetailController, superClass);\n\n UserStoryDetailController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$log\", \"tgAppMetaService\", \"$tgNavUrls\", \"$tgAnalytics\", \"$translate\", \"$tgQueueModelTransformation\", \"tgErrorHandlingService\", \"$tgConfig\", \"tgProjectService\", \"tgWysiwygService\", \"tgAttachmentsFullService\", \"$tgModel\", \"$sce\"];\n\n function UserStoryDetailController(scope, rootscope, repo, confirm, rs, params, q, location, log, appMetaService, navUrls, analytics, translate, modelTransform, errorHandlingService, configService, projectService, wysiwigService, attachmentsFullService, tgmodel, sce) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.log = log;\n this.appMetaService = appMetaService;\n this.navUrls = navUrls;\n this.analytics = analytics;\n this.translate = translate;\n this.modelTransform = modelTransform;\n this.errorHandlingService = errorHandlingService;\n this.configService = configService;\n this.projectService = projectService;\n this.wysiwigService = wysiwigService;\n this.attachmentsFullService = attachmentsFullService;\n this.tgmodel = tgmodel;\n this.sce = sce;\n bindMethods(this);\n this.scope.usRef = this.params.usref;\n this.scope.sectionName = this.translate.instant(\"US.SECTION_NAME\");\n this.scope.tribeEnabled = this.configService.config.tribeHost;\n this.scope.attachmentsReady = false;\n this.scope.$on(\"attachments:loaded\", (function(_this) {\n return function() {\n return _this.scope.attachmentsReady = true;\n };\n })(this));\n this.initializeEventHandlers();\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n _this._setMeta();\n return _this.initializeOnDeleteGoToUrl();\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n UserStoryDetailController.prototype._setMeta = function() {\n var closedTasks, description, descriptionHtml, progressPercentage, ref, title, totalTasks;\n totalTasks = this.scope.tasks.length;\n closedTasks = _.filter(this.scope.tasks, (function(_this) {\n return function(t) {\n return _this.scope.taskStatusById[t.status].is_closed;\n };\n })(this)).length;\n progressPercentage = totalTasks > 0 ? Math.round(100 * closedTasks / totalTasks) : 0;\n title = this.translate.instant(\"US.PAGE_TITLE\", {\n userStoryRef: \"#\" + this.scope.us.ref,\n userStorySubject: this.scope.us.subject,\n projectName: this.scope.project.name\n });\n descriptionHtml = this.sce.getTrustedHtml(this.wysiwigService.getHTML(this.scope.us.description) || \"\");\n description = this.translate.instant(\"US.PAGE_DESCRIPTION\", {\n userStoryStatus: ((ref = this.scope.statusById[this.scope.us.status]) != null ? ref.name : void 0) || \"--\",\n userStoryPoints: this.scope.us.total_points,\n userStoryDescription: angular.element(descriptionHtml).text(),\n userStoryClosedTasks: closedTasks,\n userStoryTotalTasks: totalTasks,\n userStoryProgressPercentage: progressPercentage\n });\n return this.appMetaService.setAll(title, description);\n };\n\n UserStoryDetailController.prototype.loadAttachments = function() {\n return this.attachmentsFullService.loadAttachments('us', this.scope.usId, this.scope.projectId);\n };\n\n UserStoryDetailController.prototype.initializeEventHandlers = function() {\n this.scope.relateToEpic = (function(_this) {\n return function(us) {\n return _this.scope.$broadcast(\"relate-to-epic:add\", us);\n };\n })(this);\n this.scope.$on(\"related-tasks:update\", (function(_this) {\n return function() {\n var allClosed;\n _this.loadTasks();\n _this.scope.tasks = _.clone(_this.scope.tasks, false);\n allClosed = _.every(_this.scope.tasks, function(task) {\n return task.is_closed;\n });\n if (_this.scope.us.is_closed !== allClosed) {\n return _this.loadUs();\n }\n };\n })(this));\n this.scope.$on(\"attachment:create\", (function(_this) {\n return function() {\n return _this.analytics.trackEvent(\"attachment\", \"create\", \"create attachment on userstory\", 1);\n };\n })(this));\n this.scope.$on(\"task:reorder\", (function(_this) {\n return function(event, task, newIndex) {\n return _this.reorderTask(task, newIndex);\n };\n })(this));\n return this.scope.$on(\"comment:new\", (function(_this) {\n return function() {\n return _this.loadUs();\n };\n })(this));\n };\n\n UserStoryDetailController.prototype.initializeOnDeleteGoToUrl = function() {\n var ctx;\n ctx = {\n project: this.scope.project.slug\n };\n this.scope.onDeleteGoToUrl = this.navUrls.resolve(\"project\", ctx);\n if (this.params[\"kanban-status\"] && this.scope.project.is_kanban_activated) {\n return this.scope.onDeleteGoToUrl = this.navUrls.resolve(\"project-kanban\", ctx);\n } else {\n if (this.scope.project.is_backlog_activated) {\n if (this.scope.us.milestone) {\n ctx.sprint = this.scope.sprint.slug;\n return this.scope.onDeleteGoToUrl = this.navUrls.resolve(\"project-taskboard\", ctx);\n } else {\n return this.scope.onDeleteGoToUrl = this.navUrls.resolve(\"project-backlog\", ctx);\n }\n }\n }\n };\n\n UserStoryDetailController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.$emit('project:loaded', project);\n this.scope.statusList = project.us_statuses;\n this.scope.statusById = groupBy(project.us_statuses, function(x) {\n return x.id;\n });\n this.scope.taskStatusById = groupBy(project.task_statuses, function(x) {\n return x.id;\n });\n this.scope.pointsList = _.sortBy(project.points, \"order\");\n this.scope.pointsById = groupBy(this.scope.pointsList, function(e) {\n return e.id;\n });\n return project;\n };\n\n UserStoryDetailController.prototype.loadUs = function() {\n var backlogHttpParams, kanbanHttpParams, kanbanStaus, locationSearch, milestone, noMilestone;\n kanbanHttpParams = {};\n locationSearch = this.location.search();\n backlogHttpParams = _.pick(locationSearch, \"milestone\", \"no-milestone\");\n Object.keys(locationSearch).forEach(function(key) {\n if (key.startsWith('kanban-')) {\n return kanbanHttpParams[key.replace('kanban-', '')] = locationSearch[key];\n }\n });\n Object.keys(locationSearch).forEach(function(key) {\n if (key.startsWith('backlog-')) {\n return backlogHttpParams[key.replace('backlog-', '')] = locationSearch[key];\n }\n });\n milestone = backlogHttpParams.milestone;\n if (milestone) {\n this.rs.userstories.storeQueryParams(this.scope.projectId, _.merge(backlogHttpParams, {\n milestone: milestone,\n order_by: \"sprint_order\"\n }));\n }\n noMilestone = backlogHttpParams[\"no-milestone\"];\n if (noMilestone) {\n this.rs.userstories.storeQueryParams(this.scope.projectId, _.merge(backlogHttpParams, {\n milestone: \"null\",\n order_by: \"backlog_order\"\n }));\n }\n kanbanStaus = kanbanHttpParams[\"status\"];\n if (kanbanStaus) {\n this.rs.userstories.storeQueryParams(this.scope.projectId, _.merge(kanbanHttpParams, {\n order_by: \"kanban_order\"\n }));\n }\n return this.rs.userstories.getByRef(this.scope.projectId, this.params.usref).then((function(_this) {\n return function(us) {\n _this.rootscope.$broadcast(\"userstory:loaded\", us);\n _this.scope.us = us;\n _this.scope.usId = us.id;\n _this.scope.commentModel = us;\n _this.loadAttachments();\n window.legacyChannel.next({\n type: 'SET_DETAIL_OBJ',\n value: us._attrs\n });\n _this.modelTransform.setObject(_this.scope, 'us');\n return us;\n };\n })(this));\n };\n\n UserStoryDetailController.prototype.loadSprint = function() {\n if (this.scope.us.milestone) {\n return this.rs.sprints.get(this.scope.us.project, this.scope.us.milestone).then((function(_this) {\n return function(sprint) {\n _this.scope.sprint = sprint;\n return sprint;\n };\n })(this));\n }\n };\n\n UserStoryDetailController.prototype.loadTasks = function() {\n return this.rs.tasks.list(this.scope.projectId, null, this.scope.usId).then((function(_this) {\n return function(tasks) {\n _this.scope.tasks = tasks;\n return tasks;\n };\n })(this));\n };\n\n UserStoryDetailController.prototype.loadInitialData = function() {\n var project;\n project = this.loadProject();\n this.fillUsersAndRoles(project.members, project.roles);\n return this.loadUs().then((function(_this) {\n return function() {\n return _this.q.all([_this.loadSprint(), _this.loadTasks()]);\n };\n })(this));\n };\n\n\n /*\n * Note: This methods (onUpvote() and onDownvote()) are related to tg-vote-button.\n * See app/modules/components/vote-button for more info\n */\n\n UserStoryDetailController.prototype.onUpvote = function() {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this.loadUs();\n return _this.rootscope.$broadcast(\"object:updated\");\n };\n })(this);\n onError = (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this);\n return this.rs.userstories.upvote(this.scope.usId).then(onSuccess, onError);\n };\n\n UserStoryDetailController.prototype.onDownvote = function() {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this.loadUs();\n return _this.rootscope.$broadcast(\"object:updated\");\n };\n })(this);\n onError = (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this);\n return this.rs.userstories.downvote(this.scope.usId).then(onSuccess, onError);\n };\n\n\n /*\n * Note: This methods (onWatch() and onUnwatch()) are related to tg-watch-button.\n * See app/modules/components/watch-button for more info\n */\n\n UserStoryDetailController.prototype.onWatch = function() {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this.loadUs();\n return _this.rootscope.$broadcast(\"object:updated\");\n };\n })(this);\n onError = (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this);\n return this.rs.userstories.watch(this.scope.usId).then(onSuccess, onError);\n };\n\n UserStoryDetailController.prototype.onUnwatch = function() {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this.loadUs();\n return _this.rootscope.$broadcast(\"object:updated\");\n };\n })(this);\n onError = (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this);\n return this.rs.userstories.unwatch(this.scope.usId).then(onSuccess, onError);\n };\n\n UserStoryDetailController.prototype.onTribeInfo = function() {\n var image, publishDesc, publishTitle, text;\n publishTitle = this.translate.instant(\"US.TRIBE.PUBLISH_MORE_INFO_TITLE\");\n image = $('').attr({\n 'src': \"/\" + window._version + \"/images/monster-fight.png\",\n 'alt': this.translate.instant(\"US.TRIBE.PUBLISH_MORE_INFO_TITLE\")\n });\n text = this.translate.instant(\"US.TRIBE.PUBLISH_MORE_INFO_TEXT\");\n publishDesc = $('
').append(image).append(text);\n return this.confirm.success(publishTitle, publishDesc);\n };\n\n UserStoryDetailController.prototype.reorderTask = function(task, newIndex) {\n var afterDestination, beforeDestination, data, newOrder, orderList, previous, previousWithTheSameOrder, setOrders, withoutMoved;\n orderList = {};\n this.scope.tasks.forEach(function(it) {\n return orderList[it.id] = it.us_order;\n });\n withoutMoved = this.scope.tasks.filter(function(it) {\n return it.id !== task.id;\n });\n beforeDestination = withoutMoved.slice(0, newIndex);\n afterDestination = withoutMoved.slice(newIndex);\n previous = beforeDestination[beforeDestination.length - 1];\n newOrder = !previous ? 0 : previous.us_order + 1;\n orderList[task.id] = newOrder;\n previousWithTheSameOrder = beforeDestination.filter(function(it) {\n return it.us_order === previous.us_order;\n });\n setOrders = _.fromPairs(previousWithTheSameOrder.map(function(it) {\n return [it.id, it.us_order];\n }));\n afterDestination.forEach(function(it) {\n return orderList[it.id] = it.us_order + 1;\n });\n this.scope.tasks = _.map(this.scope.tasks, function(it) {\n it.us_order = orderList[it.id];\n return it;\n });\n this.scope.tasks = _.sortBy(this.scope.tasks, \"us_order\");\n data = {\n us_order: newOrder,\n version: task.version\n };\n return this.rs.tasks.reorder(task.id, data, setOrders).then((function(_this) {\n return function(newTask) {\n newTask = _this.tgmodel.make_model(\"tasks\", newTask);\n _this.scope.tasks = _.map(_this.scope.tasks, function(it) {\n if (it.id === newTask.id) {\n return newTask;\n } else {\n return it;\n }\n });\n return _this.rootscope.$broadcast(\"related-tasks:reordered\");\n };\n })(this));\n };\n\n return UserStoryDetailController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"UserStoryDetailController\", UserStoryDetailController);\n\n UsStatusDisplayDirective = function($template, $compile) {\n var link, template;\n template = $template.get(\"common/components/status-display.html\", true);\n link = function($scope, $el, $attrs) {\n var render;\n render = function(us) {\n var html, status;\n status = $scope.statusById[us.status];\n html = template({\n is_closed: us.is_closed,\n status: status\n });\n html = $compile(html)($scope);\n return $el.html(html);\n };\n $scope.$watch($attrs.ngModel, function(us) {\n if (us != null) {\n return render(us);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgUsStatusDisplay\", [\"$tgTemplate\", \"$compile\", UsStatusDisplayDirective]);\n\n UsStatusButtonDirective = function($rootScope, $repo, $confirm, $loading, $modelTransform, $template, $compile) {\n var link, template;\n template = $template.get(\"common/components/status-button.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var isEditable, render, save;\n isEditable = function() {\n return $scope.project.my_permissions.indexOf(\"modify_us\") !== -1;\n };\n render = (function(_this) {\n return function(us) {\n var html, status;\n status = $scope.statusById[us.status];\n html = template({\n status: status,\n statuses: $scope.statusList,\n editable: isEditable()\n });\n $el.html(html);\n return $compile($el.contents())($scope);\n };\n })(this);\n save = (function(_this) {\n return function(status) {\n var currentLoading, onError, onSuccess, transform;\n $el.find(\".pop-status\").popover().close();\n currentLoading = $loading().target($el.find('.js-edit-status')).start();\n transform = $modelTransform.save(function(us) {\n us.status = status;\n return us;\n });\n onSuccess = function() {\n $rootScope.$broadcast(\"object:updated\");\n return currentLoading.finish();\n };\n onError = function() {\n $confirm.notify(\"error\");\n return currentLoading.finish();\n };\n return transform.then(onSuccess, onError);\n };\n })(this);\n $el.on(\"click\", \".js-edit-status\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n if (!isEditable()) {\n return;\n }\n return $el.find(\".pop-status\").popover().open();\n });\n $el.on(\"click\", \".status\", function(event) {\n var status, target;\n event.preventDefault();\n event.stopPropagation();\n if (!isEditable()) {\n return;\n }\n target = angular.element(event.currentTarget);\n status = target.data(\"status-id\");\n return save(status);\n });\n $scope.$watch(function() {\n var ref;\n return (ref = $model.$modelValue) != null ? ref.status : void 0;\n }, function() {\n var us;\n us = $model.$modelValue;\n if (us) {\n return render(us);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgUsStatusButton\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgQueueModelTransformation\", \"$tgTemplate\", \"$compile\", UsStatusButtonDirective]);\n\n UsTeamRequirementButtonDirective = function($rootscope, $tgrepo, $confirm, $loading, $modelTransform, $template, $compile) {\n var link, template;\n template = $template.get(\"us/us-team-requirement-button.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var canEdit, render, save;\n canEdit = function() {\n return $scope.project.my_permissions.indexOf(\"modify_us\") !== -1;\n };\n render = function(us) {\n var ctx, html;\n ctx = {\n canEdit: canEdit(),\n isRequired: us.team_requirement\n };\n html = template(ctx);\n html = $compile(html)($scope);\n return $el.html(html);\n };\n save = function(team_requirement) {\n var currentLoading, transform;\n currentLoading = $loading().target($el.find(\"label\")).start();\n transform = $modelTransform.save(function(us) {\n us.team_requirement = team_requirement;\n return us;\n });\n transform.then((function(_this) {\n return function() {\n currentLoading.finish();\n return $rootscope.$broadcast(\"object:updated\");\n };\n })(this));\n return transform.then(null, function() {\n currentLoading.finish();\n return $confirm.notify(\"error\");\n });\n };\n $el.on(\"click\", \".team-requirement\", function(event) {\n var team_requirement;\n if (!canEdit()) {\n return;\n }\n team_requirement = !$model.$modelValue.team_requirement;\n return save(team_requirement);\n });\n $scope.$watch(function() {\n var ref;\n return (ref = $model.$modelValue) != null ? ref.team_requirement : void 0;\n }, function() {\n var us;\n us = $model.$modelValue;\n if (us) {\n return render(us);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgUsTeamRequirementButton\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgQueueModelTransformation\", \"$tgTemplate\", \"$compile\", UsTeamRequirementButtonDirective]);\n\n UsClientRequirementButtonDirective = function($rootscope, $tgrepo, $confirm, $loading, $modelTransform, $template, $compile) {\n var link, template;\n template = $template.get(\"us/us-client-requirement-button.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var canEdit, render, save;\n canEdit = function() {\n return $scope.project.my_permissions.indexOf(\"modify_us\") !== -1;\n };\n render = function(us) {\n var ctx, html;\n ctx = {\n canEdit: canEdit(),\n isRequired: us.client_requirement\n };\n html = $compile(template(ctx))($scope);\n return $el.html(html);\n };\n save = function(client_requirement) {\n var currentLoading, transform;\n currentLoading = $loading().target($el.find(\"label\")).start();\n transform = $modelTransform.save(function(us) {\n us.client_requirement = client_requirement;\n return us;\n });\n transform.then((function(_this) {\n return function() {\n currentLoading.finish();\n return $rootscope.$broadcast(\"object:updated\");\n };\n })(this));\n return transform.then(null, function() {\n return $confirm.notify(\"error\");\n });\n };\n $el.on(\"click\", \".client-requirement\", function(event) {\n var client_requirement;\n if (!canEdit()) {\n return;\n }\n client_requirement = !$model.$modelValue.client_requirement;\n return save(client_requirement);\n });\n $scope.$watch(function() {\n var ref;\n return (ref = $model.$modelValue) != null ? ref.client_requirement : void 0;\n }, function() {\n var us;\n us = $model.$modelValue;\n if (us) {\n return render(us);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgUsClientRequirementButton\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgQueueModelTransformation\", \"$tgTemplate\", \"$compile\", UsClientRequirementButtonDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TaskDetailController, TaskIsIocaineButtonDirective, TaskStatusButtonDirective, TaskStatusDisplayDirective, bindMethods, groupBy, mixOf, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n groupBy = this.taiga.groupBy;\n\n bindMethods = this.taiga.bindMethods;\n\n module = angular.module(\"taigaTasks\");\n\n TaskDetailController = (function(superClass) {\n extend(TaskDetailController, superClass);\n\n TaskDetailController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$log\", \"tgAppMetaService\", \"$tgNavUrls\", \"$tgAnalytics\", \"$translate\", \"$tgQueueModelTransformation\", \"tgErrorHandlingService\", \"tgProjectService\", \"tgAttachmentsFullService\"];\n\n function TaskDetailController(scope, rootscope, repo, confirm, rs, params, q, location, log, appMetaService, navUrls, analytics, translate, modelTransform, errorHandlingService, projectService, attachmentsFullService) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.log = log;\n this.appMetaService = appMetaService;\n this.navUrls = navUrls;\n this.analytics = analytics;\n this.translate = translate;\n this.modelTransform = modelTransform;\n this.errorHandlingService = errorHandlingService;\n this.projectService = projectService;\n this.attachmentsFullService = attachmentsFullService;\n bindMethods(this);\n this.scope.taskRef = this.params.taskref;\n this.scope.sectionName = this.translate.instant(\"TASK.SECTION_NAME\");\n this.scope.attachmentsReady = false;\n this.scope.$on(\"attachments:loaded\", (function(_this) {\n return function() {\n return _this.scope.attachmentsReady = true;\n };\n })(this));\n this.initializeEventHandlers();\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n _this._setMeta();\n return _this.initializeOnDeleteGoToUrl();\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n TaskDetailController.prototype._setMeta = function() {\n var description, ref1, title;\n title = this.translate.instant(\"TASK.PAGE_TITLE\", {\n taskRef: \"#\" + this.scope.task.ref,\n taskSubject: this.scope.task.subject,\n projectName: this.scope.project.name\n });\n description = this.translate.instant(\"TASK.PAGE_DESCRIPTION\", {\n taskStatus: ((ref1 = this.scope.statusById[this.scope.task.status]) != null ? ref1.name : void 0) || \"--\",\n taskDescription: angular.element(this.scope.task.description_html || \"\").text()\n });\n return this.appMetaService.setAll(title, description);\n };\n\n TaskDetailController.prototype.loadAttachments = function() {\n return this.attachmentsFullService.loadAttachments('task', this.scope.taskId, this.scope.projectId);\n };\n\n TaskDetailController.prototype.initializeEventHandlers = function() {\n this.scope.$on(\"promote-task-to-us:success\", (function(_this) {\n return function(e, ref) {\n var ctx;\n _this.analytics.trackEvent(\"task\", \"promoteToUserstory\", \"promote task to userstory\", 1);\n ctx = {\n project: _this.scope.project.slug,\n ref: ref\n };\n return _this.location.path(_this.navUrls.resolve(\"project-userstories-detail\", ctx));\n };\n })(this));\n this.scope.$on(\"attachment:create\", (function(_this) {\n return function() {\n return _this.analytics.trackEvent(\"attachment\", \"create\", \"create attachment on task\", 1);\n };\n })(this));\n this.scope.$on(\"custom-attributes-values:edit\", (function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"object:updated\");\n };\n })(this));\n return this.scope.$on(\"comment:new\", (function(_this) {\n return function() {\n return _this.loadTask();\n };\n })(this));\n };\n\n TaskDetailController.prototype.initializeOnDeleteGoToUrl = function() {\n var ctx;\n ctx = {\n project: this.scope.project.slug\n };\n this.scope.onDeleteGoToUrl = this.navUrls.resolve(\"project\", ctx);\n if (this.scope.project.is_backlog_activated) {\n if (this.scope.task.milestone) {\n ctx.sprint = this.scope.sprint.slug;\n return this.scope.onDeleteGoToUrl = this.navUrls.resolve(\"project-taskboard\", ctx);\n } else if (this.scope.task.us) {\n ctx.ref = this.scope.us.ref;\n return this.scope.onDeleteGoToUrl = this.navUrls.resolve(\"project-userstories-detail\", ctx);\n }\n } else if (this.scope.project.is_kanban_activated) {\n if (this.scope.us) {\n ctx.ref = this.scope.us.ref;\n return this.scope.onDeleteGoToUrl = this.navUrls.resolve(\"project-userstories-detail\", ctx);\n }\n }\n };\n\n TaskDetailController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.$emit('project:loaded', project);\n this.scope.statusList = project.task_statuses;\n this.scope.statusById = groupBy(project.task_statuses, function(x) {\n return x.id;\n });\n return project;\n };\n\n TaskDetailController.prototype.loadTask = function() {\n return this.rs.tasks.getByRef(this.scope.projectId, this.params.taskref).then((function(_this) {\n return function(task) {\n var ctx, ref1, ref2;\n _this.scope.task = task;\n _this.scope.taskId = task.id;\n _this.scope.commentModel = task;\n _this.loadAttachments();\n window.legacyChannel.next({\n type: 'SET_DETAIL_OBJ',\n value: task._attrs\n });\n _this.modelTransform.setObject(_this.scope, 'task');\n if (((ref1 = _this.scope.task.neighbors.previous) != null ? ref1.ref : void 0) != null) {\n ctx = {\n project: _this.scope.project.slug,\n ref: _this.scope.task.neighbors.previous.ref\n };\n _this.scope.previousUrl = _this.navUrls.resolve(\"project-tasks-detail\", ctx);\n }\n if (((ref2 = _this.scope.task.neighbors.next) != null ? ref2.ref : void 0) != null) {\n ctx = {\n project: _this.scope.project.slug,\n ref: _this.scope.task.neighbors.next.ref\n };\n _this.scope.nextUrl = _this.navUrls.resolve(\"project-tasks-detail\", ctx);\n }\n return task;\n };\n })(this));\n };\n\n TaskDetailController.prototype.loadSprint = function() {\n if (this.scope.task.milestone) {\n return this.rs.sprints.get(this.scope.task.project, this.scope.task.milestone).then((function(_this) {\n return function(sprint) {\n _this.scope.sprint = sprint;\n return sprint;\n };\n })(this));\n }\n };\n\n TaskDetailController.prototype.loadUserStory = function() {\n if (this.scope.task.user_story) {\n return this.rs.userstories.get(this.scope.task.project, this.scope.task.user_story).then((function(_this) {\n return function(us) {\n _this.scope.us = us;\n return us;\n };\n })(this));\n }\n };\n\n TaskDetailController.prototype.loadInitialData = function() {\n var project;\n project = this.loadProject();\n this.fillUsersAndRoles(project.members, project.roles);\n return this.loadTask().then((function(_this) {\n return function() {\n return _this.q.all([_this.loadSprint(), _this.loadUserStory()]);\n };\n })(this));\n };\n\n\n /*\n * Note: This methods (onUpvote() and onDownvote()) are related to tg-vote-button.\n * See app/modules/components/vote-button for more info\n */\n\n TaskDetailController.prototype.onUpvote = function() {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this.loadTask();\n return _this.rootscope.$broadcast(\"object:updated\");\n };\n })(this);\n onError = (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this);\n return this.rs.tasks.upvote(this.scope.taskId).then(onSuccess, onError);\n };\n\n TaskDetailController.prototype.onDownvote = function() {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this.loadTask();\n return _this.rootscope.$broadcast(\"object:updated\");\n };\n })(this);\n onError = (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this);\n return this.rs.tasks.downvote(this.scope.taskId).then(onSuccess, onError);\n };\n\n\n /*\n * Note: This methods (onWatch() and onUnwatch()) are related to tg-watch-button.\n * See app/modules/components/watch-button for more info\n */\n\n TaskDetailController.prototype.onWatch = function() {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this.loadTask();\n return _this.rootscope.$broadcast(\"object:updated\");\n };\n })(this);\n onError = (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this);\n return this.rs.tasks.watch(this.scope.taskId).then(onSuccess, onError);\n };\n\n TaskDetailController.prototype.onUnwatch = function() {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this.loadTask();\n return _this.rootscope.$broadcast(\"object:updated\");\n };\n })(this);\n onError = (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this);\n return this.rs.tasks.unwatch(this.scope.taskId).then(onSuccess, onError);\n };\n\n return TaskDetailController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"TaskDetailController\", TaskDetailController);\n\n TaskStatusDisplayDirective = function($template, $compile) {\n var link, template;\n template = $template.get(\"common/components/status-display.html\", true);\n link = function($scope, $el, $attrs) {\n var render;\n render = function(task) {\n var html, status;\n status = $scope.statusById[task.status];\n html = template({\n is_closed: status.is_closed,\n status: status\n });\n html = $compile(html)($scope);\n return $el.html(html);\n };\n $scope.$watch($attrs.ngModel, function(task) {\n if (task != null) {\n return render(task);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgTaskStatusDisplay\", [\"$tgTemplate\", \"$compile\", TaskStatusDisplayDirective]);\n\n TaskStatusButtonDirective = function($rootScope, $repo, $confirm, $loading, $modelTransform, $compile, $translate, $template) {\n var link, template;\n template = $template.get(\"common/components/status-button.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var isEditable, render, save;\n isEditable = function() {\n return $scope.project.my_permissions.indexOf(\"modify_task\") !== -1;\n };\n render = (function(_this) {\n return function(task) {\n var html, status;\n status = $scope.statusById[task.status];\n html = $compile(template({\n status: status,\n statuses: $scope.statusList,\n editable: isEditable()\n }))($scope);\n return $el.html(html);\n };\n })(this);\n save = function(status) {\n var currentLoading, onError, onSuccess, transform;\n currentLoading = $loading().target($el).start();\n transform = $modelTransform.save(function(task) {\n task.status = status;\n return task;\n });\n onSuccess = function() {\n $rootScope.$broadcast(\"object:updated\");\n return currentLoading.finish();\n };\n onError = function() {\n $confirm.notify(\"error\");\n return currentLoading.finish();\n };\n return transform.then(onSuccess, onError);\n };\n $el.on(\"click\", \".js-edit-status\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n if (!isEditable()) {\n return;\n }\n return $el.find(\".pop-status\").popover().open();\n });\n $el.on(\"click\", \".status\", function(event) {\n var target;\n event.preventDefault();\n event.stopPropagation();\n if (!isEditable()) {\n return;\n }\n target = angular.element(event.currentTarget);\n $.fn.popover().closeAll();\n return save(target.data(\"status-id\"));\n });\n $scope.$watch(function() {\n var ref1;\n return (ref1 = $model.$modelValue) != null ? ref1.status : void 0;\n }, function() {\n var task;\n task = $model.$modelValue;\n if (task) {\n return render(task);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgTaskStatusButton\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgQueueModelTransformation\", \"$compile\", \"$translate\", \"$tgTemplate\", TaskStatusButtonDirective]);\n\n TaskIsIocaineButtonDirective = function($rootscope, $tgrepo, $confirm, $loading, $modelTransform, $compile, $template) {\n var link, template;\n template = $template.get(\"issue/iocaine-button.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var isEditable, render, save;\n isEditable = function() {\n return $scope.project.my_permissions.indexOf(\"modify_task\") !== -1;\n };\n render = function(task) {\n var ctx, html;\n if (!isEditable() && !task.is_iocaine) {\n $el.html(\"\");\n return;\n }\n ctx = {\n isIocaine: task.is_iocaine,\n isEditable: isEditable()\n };\n html = $compile(template(ctx))($scope);\n return $el.html(html);\n };\n save = function(is_iocaine) {\n var currentLoading, transform;\n currentLoading = $loading().target($el.find('label')).start();\n transform = $modelTransform.save(function(task) {\n task.is_iocaine = is_iocaine;\n return task;\n });\n transform.then(function() {\n return $rootscope.$broadcast(\"object:updated\");\n });\n transform.then(null, function() {\n return $confirm.notify(\"error\");\n });\n return transform[\"finally\"](function() {\n return currentLoading.finish();\n });\n };\n $el.on(\"click\", \".is-iocaine\", function(event) {\n var is_iocaine;\n if (!isEditable()) {\n return;\n }\n is_iocaine = !$model.$modelValue.is_iocaine;\n return save(is_iocaine);\n });\n $scope.$watch(function() {\n var ref1;\n return (ref1 = $model.$modelValue) != null ? ref1.is_iocaine : void 0;\n }, function() {\n var task;\n task = $model.$modelValue;\n if (task) {\n return render(task);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgTaskIsIocaineButton\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgQueueModelTransformation\", \"$compile\", \"$tgTemplate\", TaskIsIocaineButtonDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var LeaveProjectDirective, TeamController, TeamFiltersDirective, TeamMemberCurrentUserDirective, TeamMemberStatsDirective, TeamMembersDirective, membersFilter, mixOf, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n module = angular.module(\"taigaTeam\");\n\n TeamController = (function(superClass) {\n extend(TeamController, superClass);\n\n TeamController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"$q\", \"$location\", \"$tgNavUrls\", \"tgAppMetaService\", \"$tgAuth\", \"$translate\", \"tgProjectService\", \"tgErrorHandlingService\"];\n\n function TeamController(scope, rootscope, repo, rs, params, q, location, navUrls, appMetaService, auth, translate, projectService, errorHandlingService) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.navUrls = navUrls;\n this.appMetaService = appMetaService;\n this.auth = auth;\n this.translate = translate;\n this.projectService = projectService;\n this.errorHandlingService = errorHandlingService;\n this.scope.sectionName = \"TEAM.SECTION_NAME\";\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n var description, title;\n title = _this.translate.instant(\"TEAM.PAGE_TITLE\", {\n projectName: _this.scope.project.name\n });\n description = _this.translate.instant(\"TEAM.PAGE_DESCRIPTION\", {\n projectName: _this.scope.project.name,\n projectDescription: _this.scope.project.description\n });\n return _this.appMetaService.setAll(title, description);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n TeamController.prototype.setRole = function(role) {\n if (role) {\n return this.scope.filtersRole = role;\n } else {\n return this.scope.filtersRole = null;\n }\n };\n\n TeamController.prototype.loadMembers = function() {\n var i, len, member, ref, user;\n user = this.auth.getUser();\n this.scope.totals = {};\n ref = this.scope.activeUsers;\n for (i = 0, len = ref.length; i < len; i++) {\n member = ref[i];\n this.scope.totals[member.id] = 0;\n }\n this.scope.currentUser = _.find(this.scope.activeUsers, {\n id: user != null ? user.id : void 0\n });\n return this.scope.memberships = _.reject(this.scope.activeUsers, {\n id: user != null ? user.id : void 0\n });\n };\n\n TeamController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.$emit('project:loaded', project);\n this.scope.issuesEnabled = project.is_issues_activated;\n this.scope.tasksEnabled = project.is_kanban_activated || project.is_backlog_activated;\n this.scope.wikiEnabled = project.is_wiki_activated;\n this.scope.owner = project.owner.id;\n return project;\n };\n\n TeamController.prototype.loadMemberStats = function() {\n return this.rs.projects.memberStats(this.scope.projectId).then((function(_this) {\n return function(stats) {\n var totals;\n totals = {};\n _.forEach(_this.scope.totals, function(total, userId) {\n var vals;\n vals = _.map(stats, function(memberStats, statsKey) {\n return memberStats[userId];\n });\n total = _.reduce(vals, function(sum, el) {\n return sum + el;\n });\n return _this.scope.totals[userId] = total;\n });\n _this.scope.stats = _this._processStats(stats);\n return _this.scope.stats.totals = _this.scope.totals;\n };\n })(this));\n };\n\n TeamController.prototype._processStat = function(stat) {\n var key, max, min, singleStat, value;\n max = _.max(_.toArray(stat));\n min = _.min(_.toArray(stat));\n singleStat = Object();\n for (key in stat) {\n if (!hasProp.call(stat, key)) continue;\n value = stat[key];\n if (value === min) {\n singleStat[key] = 0.1;\n } else if (value === max) {\n singleStat[key] = 1;\n } else {\n singleStat[key] = (value * 0.5) / max;\n }\n }\n return singleStat;\n };\n\n TeamController.prototype._processStats = function(stats) {\n var key, value;\n for (key in stats) {\n value = stats[key];\n stats[key] = this._processStat(value);\n }\n return stats;\n };\n\n TeamController.prototype.loadInitialData = function() {\n var project, userRoles;\n project = this.loadProject();\n this.fillUsersAndRoles(project.members, project.roles);\n this.loadMembers();\n userRoles = _.map(this.scope.users, function(user) {\n return user.role;\n });\n this.scope.roles = _.filter(this.scope.roles, function(role) {\n return userRoles.indexOf(role.id) !== -1;\n });\n return this.loadMemberStats();\n };\n\n return TeamController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"TeamController\", TeamController);\n\n TeamFiltersDirective = function() {\n return {\n templateUrl: \"team/team-filter.html\"\n };\n };\n\n module.directive(\"tgTeamFilters\", [TeamFiltersDirective]);\n\n TeamMemberStatsDirective = function() {\n return {\n templateUrl: \"team/team-member-stats.html\",\n scope: {\n stats: \"=\",\n userId: \"=user\",\n issuesEnabled: \"=issuesenabled\",\n tasksEnabled: \"=tasksenabled\",\n wikiEnabled: \"=wikienabled\"\n }\n };\n };\n\n module.directive(\"tgTeamMemberStats\", TeamMemberStatsDirective);\n\n TeamMemberCurrentUserDirective = function() {\n return {\n templateUrl: \"team/team-member-current-user.html\",\n scope: {\n project: \"=project\",\n currentUser: \"=currentuser\",\n stats: \"=\",\n issuesEnabled: \"=issuesenabled\",\n tasksEnabled: \"=tasksenabled\",\n wikiEnabled: \"=wikienabled\",\n owner: \"=owner\"\n }\n };\n };\n\n module.directive(\"tgTeamCurrentUser\", TeamMemberCurrentUserDirective);\n\n TeamMembersDirective = function() {\n var template;\n template = \"team/team-members.html\";\n return {\n templateUrl: template,\n scope: {\n memberships: \"=\",\n filtersQ: \"=filtersq\",\n filtersRole: \"=filtersrole\",\n stats: \"=\",\n issuesEnabled: \"=issuesenabled\",\n tasksEnabled: \"=tasksenabled\",\n wikiEnabled: \"=wikienabled\",\n owner: \"=owner\"\n }\n };\n };\n\n module.directive(\"tgTeamMembers\", TeamMembersDirective);\n\n LeaveProjectDirective = function($repo, $confirm, $location, $rs, $navurls, $translate, lightboxFactory, currentUserService) {\n var link;\n link = function($scope, $el, $attrs) {\n var leaveConfirm;\n leaveConfirm = function() {\n var confirm_leave_project_text, leave_project_text;\n leave_project_text = $translate.instant(\"TEAM.ACTION_LEAVE_PROJECT\");\n confirm_leave_project_text = $translate.instant(\"TEAM.CONFIRM_LEAVE_PROJECT\");\n return $confirm.ask(leave_project_text, confirm_leave_project_text).then((function(_this) {\n return function(response) {\n var promise;\n promise = $rs.projects.leave($scope.project.id);\n promise.then(function() {\n return currentUserService.loadProjects().then(function() {\n response.finish();\n $confirm.notify(\"success\");\n return $location.path($navurls.resolve(\"home\"));\n });\n });\n return promise.then(null, function(response) {\n response.finish();\n return $confirm.notify('error', response.data._error_message);\n });\n };\n })(this));\n };\n return $scope.leave = function() {\n if ($scope.project.owner.id === $scope.user.id) {\n return lightboxFactory.create(\"tg-lightbox-leave-project-warning\", {\n \"class\": \"lightbox lightbox-leave-project-warning\"\n }, {\n isCurrentUser: true,\n project: $scope.project\n });\n } else {\n return leaveConfirm();\n }\n };\n };\n return {\n scope: {\n user: \"=\",\n project: \"=\"\n },\n templateUrl: \"team/leave-project.html\",\n link: link\n };\n };\n\n module.directive(\"tgLeaveProject\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLocation\", \"$tgResources\", \"$tgNavUrls\", \"$translate\", \"tgLightboxFactory\", \"tgCurrentUserService\", LeaveProjectDirective]);\n\n membersFilter = function() {\n return function(members, filtersQ, filtersRole) {\n return _.filter(members, function(m) {\n return (!filtersRole || m.role === filtersRole.id) && (!filtersQ || m.full_name.search(new RegExp(filtersQ, \"i\")) >= 0);\n });\n };\n };\n\n module.filter('membersFilter', membersFilter);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var WikiDetailController, WikiSummaryDirective, WikiWysiwyg, bindOnce, debounce, groupBy, mixOf, module, taiga,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaWiki\");\n\n WikiDetailController = (function(superClass) {\n extend(WikiDetailController, superClass);\n\n WikiDetailController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgModel\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$filter\", \"$log\", \"tgAppMetaService\", \"$tgNavUrls\", \"$tgAnalytics\", \"$translate\", \"tgErrorHandlingService\", \"tgProjectService\", \"tgAttachmentsFullService\"];\n\n function WikiDetailController(scope, rootscope, repo, model, confirm, rs, params, q, location, filter, log, appMetaService, navUrls, analytics, translate, errorHandlingService, projectService, attachmentsFullService1) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.model = model;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.filter = filter;\n this.log = log;\n this.appMetaService = appMetaService;\n this.navUrls = navUrls;\n this.analytics = analytics;\n this.translate = translate;\n this.errorHandlingService = errorHandlingService;\n this.projectService = projectService;\n this.attachmentsFullService = attachmentsFullService1;\n this.moveLink = bind(this.moveLink, this);\n this.loadWiki = bind(this.loadWiki, this);\n this.scope.$on(\"wiki:links:move\", this.moveLink);\n this.scope.$on(\"wikipage:add\", this.loadWiki);\n this.scope.projectSlug = this.params.pslug;\n this.scope.wikiSlug = this.params.slug;\n this.scope.sectionName = \"Wiki\";\n this.scope.linksVisible = false;\n this.scope.attachmentsReady = false;\n this.scope.$on(\"attachments:loaded\", (function(_this) {\n return function() {\n return _this.scope.attachmentsReady = true;\n };\n })(this));\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n return _this._setMeta();\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n WikiDetailController.prototype._setMeta = function() {\n var description, ref, ref1, ref2, title;\n title = this.translate.instant(\"WIKI.PAGE_TITLE\", {\n wikiPageName: this.scope.wikiSlug,\n projectName: this.scope.project.name\n });\n description = this.translate.instant(\"WIKI.PAGE_DESCRIPTION\", {\n wikiPageContent: angular.element(((ref = this.scope.wiki) != null ? ref.html : void 0) || \"\").text(),\n totalEditions: ((ref1 = this.scope.wiki) != null ? ref1.editions : void 0) || 0,\n lastModifiedDate: moment((ref2 = this.scope.wiki) != null ? ref2.modified_date : void 0).format(this.translate.instant(\"WIKI.DATETIME\"))\n });\n return this.appMetaService.setAll(title, description);\n };\n\n WikiDetailController.prototype.loadAttachments = function() {\n return this.attachmentsFullService.loadAttachments('wikipage', this.scope.wikiId, this.scope.projectId);\n };\n\n WikiDetailController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n if (!project.is_wiki_activated) {\n this.errorHandlingService.permissionDenied();\n }\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.$emit('project:loaded', project);\n return project;\n };\n\n WikiDetailController.prototype.loadWiki = function() {\n var promise;\n promise = this.rs.wiki.getBySlug(this.scope.projectId, this.params.slug);\n promise.then((function(_this) {\n return function(wiki) {\n _this.scope.wiki = wiki;\n _this.scope.wikiId = wiki.id;\n _this.loadAttachments();\n return _this.scope.wiki;\n };\n })(this));\n return promise.then(null, (function(_this) {\n return function(xhr) {\n var data;\n _this.scope.wikiId = null;\n _this.scope.attachmentsReady = true;\n if (_this.scope.project.my_permissions.indexOf(\"add_wiki_page\") === -1) {\n return null;\n }\n data = {\n project: _this.scope.projectId,\n slug: _this.scope.wikiSlug,\n content: \"\"\n };\n _this.scope.wiki = _this.model.make_model(\"wiki\", data);\n return _this.scope.wiki;\n };\n })(this));\n };\n\n WikiDetailController.prototype.loadWikiLinks = function() {\n return this.rs.wiki.listLinks(this.scope.projectId).then((function(_this) {\n return function(wikiLinks) {\n var i, len, link, ref, selectedWikiLink;\n _this.scope.wikiLinks = wikiLinks;\n ref = _this.scope.wikiLinks;\n for (i = 0, len = ref.length; i < len; i++) {\n link = ref[i];\n link.url = _this.navUrls.resolve(\"project-wiki-page\", {\n project: _this.scope.projectSlug,\n slug: link.href\n });\n }\n return selectedWikiLink = _.find(wikiLinks, {\n href: _this.scope.wikiSlug\n });\n };\n })(this));\n };\n\n WikiDetailController.prototype.loadInitialData = function() {\n var project;\n project = this.loadProject();\n this.fillUsersAndRoles(project.members, project.roles);\n return this.q.all([this.loadWikiLinks(), this.loadWiki()]).then(this.checkLinksPerms.bind(this));\n };\n\n WikiDetailController.prototype.checkLinksPerms = function() {\n if (this.scope.project.my_permissions.indexOf(\"add_wiki_link\") !== -1 || (this.scope.project.my_permissions.indexOf(\"view_wiki_links\") !== -1 && this.scope.wikiLinks.length)) {\n return this.scope.linksVisible = true;\n }\n };\n\n WikiDetailController.prototype[\"delete\"] = function() {\n var message, title;\n title = this.translate.instant(\"WIKI.DELETE_LIGHTBOX_TITLE\");\n message = this.scope.wikiSlug;\n return this.confirm.askOnDelete(title, message).then((function(_this) {\n return function(askResponse) {\n var onError, onSuccess;\n onSuccess = function() {\n var ctx;\n askResponse.finish();\n ctx = {\n project: _this.scope.projectSlug\n };\n _this.location.path(_this.navUrls.resolve(\"project-wiki\", ctx));\n _this.confirm.notify(\"success\");\n return _this.loadWiki();\n };\n onError = function() {\n askResponse.finish(false);\n return _this.confirm.notify(\"error\");\n };\n return _this.repo.remove(_this.scope.wiki).then(onSuccess, onError);\n };\n })(this));\n };\n\n WikiDetailController.prototype.moveLink = function(ctx, item, itemIndex) {\n var r, values;\n values = this.scope.wikiLinks;\n r = values.indexOf(item);\n values.splice(r, 1);\n values.splice(itemIndex, 0, item);\n _.each(values, function(value, index) {\n return value.order = index;\n });\n return this.repo.saveAll(values);\n };\n\n return WikiDetailController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"WikiDetailController\", WikiDetailController);\n\n WikiSummaryDirective = function($log, $template, $compile, $translate, avatarService) {\n var link, template;\n template = $template.get(\"wiki/wiki-summary.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var render;\n render = function(wiki) {\n var avatar, ctx, html, user;\n if ($scope.usersById == null) {\n $log.error(\"WikiSummaryDirective requires userById set in scope.\");\n } else {\n user = $scope.usersById[wiki.last_modifier];\n }\n avatar = avatarService.getAvatar(user);\n if (user === void 0) {\n user = {\n name: \"unknown\",\n avatar: avatar\n };\n } else {\n user = {\n name: user.full_name_display,\n avatar: avatar\n };\n }\n ctx = {\n totalEditions: wiki.editions,\n lastModifiedDate: moment(wiki.modified_date).format($translate.instant(\"WIKI.DATETIME\")),\n user: user\n };\n html = template(ctx);\n html = $compile(html)($scope);\n return $el.html(html);\n };\n $scope.$watch($attrs.ngModel, function(wikiPage) {\n if (!wikiPage) {\n return;\n }\n return render(wikiPage);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgWikiSummary\", [\"$log\", \"$tgTemplate\", \"$compile\", \"$translate\", \"tgAvatarService\", WikiSummaryDirective]);\n\n WikiWysiwyg = function($modelTransform, $rootscope, $confirm, attachmentsFullService, $qqueue, $repo, $analytics, activityService) {\n var link;\n link = function($scope, $el, $attrs) {\n $scope.editableDescription = false;\n $scope.saveDescription = $qqueue.bindAdd(function(description, cb) {\n var onError, onSuccess, promise;\n onSuccess = function(wikiPage) {\n if ($scope.item.id == null) {\n $analytics.trackEvent(\"wikipage\", \"create\", \"create wiki page\", 1);\n $scope.$emit(\"wikipage:add\");\n $scope.editableDescription = $scope.project.my_permissions.indexOf(\"modify_wiki_page\") !== -1;\n }\n activityService.fetchEntries(true);\n return $confirm.notify(\"success\");\n };\n onError = function() {\n return $confirm.notify(\"error\");\n };\n $scope.item.content = description;\n if ($scope.item.id != null) {\n promise = $repo.save($scope.item).then(onSuccess, onError);\n } else {\n promise = $repo.create(\"wiki\", $scope.item).then(onSuccess, onError);\n }\n return promise[\"finally\"](cb);\n });\n $scope.uploadFiles = function(file, cb) {\n attachmentsFullService.addAttachment($scope.project.id, $scope.item.id, 'wiki_page', file).then(function(result) {\n return cb({\n \"default\": result.getIn(['file', 'url'])\n });\n });\n };\n $scope.$watch($attrs.model, function(value) {\n if (!value) {\n return;\n }\n $scope.item = value;\n $scope.version = value.version;\n return $scope.storageKey = $scope.project.id + \"-\" + value.id + \"-wiki\";\n });\n return $scope.$watch('project', function(project) {\n if (!project) {\n return;\n }\n if ($scope.item.id != null) {\n return $scope.editableDescription = project.my_permissions.indexOf(\"modify_wiki_page\") !== -1;\n } else {\n return $scope.editableDescription = project.my_permissions.indexOf(\"add_wiki_page\") !== -1;\n }\n });\n };\n return {\n scope: true,\n link: link,\n template: \"
\\n \\n \\n\\n
\\n \\n {{'COMMON.DESCRIPTION.NO_DESCRIPTION' | translate}}\\n
\\n\"\n };\n };\n\n module.directive(\"tgWikiWysiwyg\", [\"$tgQueueModelTransformation\", \"$rootScope\", \"$tgConfirm\", \"tgAttachmentsFullService\", \"$tgQqueue\", \"$tgRepo\", \"$tgAnalytics\", \"tgActivityService\", WikiWysiwyg]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var WikiNavDirective, bindOnce, groupBy, mixOf, module, taiga;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaWiki\");\n\n WikiNavDirective = function($tgrepo, $log, $location, $confirm, $analytics, $loading, $template, $compile, $translate) {\n var link, linkWikiLinks, template;\n template = $template.get(\"wiki/wiki-nav.html\", true);\n linkWikiLinks = function($scope, $el, $attrs) {\n var $ctrl, addWikiLinkPermission, drake, render;\n $ctrl = $el.controller();\n if ($attrs.ngModel == null) {\n return $log.error(\"WikiNavDirective: no ng-model attr is defined\");\n }\n addWikiLinkPermission = $scope.project.my_permissions.indexOf(\"add_wiki_link\") > -1;\n drake = null;\n render = function(wikiLinks) {\n var deleteWikiLinkPermission, html, itemEl, scroll, tdom;\n addWikiLinkPermission = $scope.project.my_permissions.indexOf(\"add_wiki_link\") > -1;\n deleteWikiLinkPermission = $scope.project.my_permissions.indexOf(\"delete_wiki_link\") > -1;\n html = template({\n wikiLinks: wikiLinks,\n projectSlug: $scope.projectSlug,\n addWikiLinkPermission: addWikiLinkPermission,\n deleteWikiLinkPermission: deleteWikiLinkPermission\n });\n html = $compile(html)($scope);\n $el.off();\n if (addWikiLinkPermission && drake) {\n drake.destroy();\n }\n $el.html(html);\n if (addWikiLinkPermission) {\n itemEl = null;\n tdom = $el.find(\".sortable\");\n drake = dragula([tdom[0]], {\n direction: 'vertical',\n copySortSource: false,\n copy: false,\n mirrorContainer: tdom[0],\n moves: function(item) {\n return $(item).is('li');\n }\n });\n drake.on('dragend', function(item) {\n var itemIndex;\n itemEl = $(item);\n item = itemEl.scope().link;\n itemIndex = itemEl.index();\n return $scope.$emit(\"wiki:links:move\", item, itemIndex);\n });\n scroll = autoScroll(window, {\n margin: 20,\n pixels: 30,\n scrollWhenOutside: true,\n autoScroll: function() {\n return this.down && drake.dragging;\n }\n });\n }\n $el.on(\"click\", \".add-button\", function(event) {\n event.preventDefault();\n $el.find(\".new\").removeClass(\"hidden\");\n $el.find(\".new input\").focus();\n return $el.find(\".add-button\").hide();\n });\n $el.on(\"click\", \".js-delete-link\", function(event) {\n var linkId, message, target, title;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n linkId = target.parents('.wiki-link').data('id');\n title = $translate.instant(\"WIKI.DELETE_LINK_TITLE\");\n message = $scope.wikiLinks[linkId].title;\n return $confirm.askOnDelete(title, message).then((function(_this) {\n return function(askResponse) {\n var promise;\n promise = $tgrepo.remove($scope.wikiLinks[linkId]);\n promise.then(function() {\n promise = $ctrl.loadWikiLinks();\n promise.then(function() {\n askResponse.finish();\n return render($scope.wikiLinks);\n });\n return promise.then(null, function() {\n return askResponse.finish();\n });\n });\n return promise.then(null, function() {\n askResponse.finish(false);\n return $confirm.notify(\"error\");\n });\n };\n })(this));\n });\n return $el.on(\"keyup\", \".new input\", function(event) {\n var currentLoading, newLink, promise, target;\n event.preventDefault();\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n newLink = target.val();\n currentLoading = $loading().target($el.find(\".new\")).start();\n promise = $tgrepo.create(\"wiki-links\", {\n project: $scope.projectId,\n title: newLink\n });\n promise.then(function() {\n var loadPromise;\n $analytics.trackEvent(\"wikilink\", \"create\", \"create wiki link\", 1);\n loadPromise = $ctrl.loadWikiLinks();\n loadPromise.then(function() {\n currentLoading.finish();\n $el.find(\".new\").addClass(\"hidden\");\n $el.find(\".new input\").val('');\n $el.find(\".add-button\").show();\n return render($scope.wikiLinks);\n });\n return loadPromise.then(null, function() {\n currentLoading.finish();\n $el.find(\".new\").addClass(\"hidden\");\n $el.find(\".new input\").val('');\n $el.find(\".add-button\").show();\n return $confirm.notify(\"error\", \"Error loading wiki links\");\n });\n });\n return promise.then(null, function(error) {\n var ref;\n currentLoading.finish();\n $el.find(\".new input\").val(newLink);\n $el.find(\".new input\").focus().select();\n if ((error != null ? (ref = error.__all__) != null ? ref[0] : void 0 : void 0) != null) {\n return $confirm.notify(\"error\", \"The link already exists\");\n } else {\n return $confirm.notify(\"error\");\n }\n });\n } else if (event.keyCode === 27) {\n target = angular.element(event.currentTarget);\n $el.find(\".new\").addClass(\"hidden\");\n $el.find(\".new input\").val('');\n return $el.find(\".add-button\").show();\n }\n });\n };\n return bindOnce($scope, $attrs.ngModel, render);\n };\n link = function($scope, $el, $attrs) {\n linkWikiLinks($scope, $el, $attrs);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgWikiNav\", [\"$tgRepo\", \"$log\", \"$tgLocation\", \"$tgConfirm\", \"$tgAnalytics\", \"$tgLoading\", \"$tgTemplate\", \"$compile\", \"$translate\", WikiNavDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var WikiPagesListController, mixOf, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n module = angular.module(\"taigaWiki\");\n\n WikiPagesListController = (function(superClass) {\n extend(WikiPagesListController, superClass);\n\n WikiPagesListController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgModel\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgNavUrls\", \"tgErrorHandlingService\", \"tgProjectService\"];\n\n function WikiPagesListController(scope, rootscope, repo, model, confirm, rs, params, q, navUrls, errorHandlingService, projectService) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.model = model;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.navUrls = navUrls;\n this.errorHandlingService = errorHandlingService;\n this.projectService = projectService;\n this.scope.projectSlug = this.params.pslug;\n this.scope.wikiSlug = this.params.slug;\n this.scope.sectionName = \"Wiki\";\n this.scope.linksVisible = false;\n promise = this.loadInitialData();\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n WikiPagesListController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n if (!project.is_wiki_activated) {\n this.errorHandlingService.permissionDenied();\n }\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.$emit('project:loaded', project);\n return project;\n };\n\n WikiPagesListController.prototype.loadWikiPages = function() {\n var promise;\n return promise = this.rs.wiki.list(this.scope.projectId).then((function(_this) {\n return function(wikipages) {\n return _this.scope.wikipages = wikipages;\n };\n })(this));\n };\n\n WikiPagesListController.prototype.loadWikiLinks = function() {\n return this.rs.wiki.listLinks(this.scope.projectId).then((function(_this) {\n return function(wikiLinks) {\n var i, len, link, ref, selectedWikiLink;\n _this.scope.wikiLinks = wikiLinks;\n ref = _this.scope.wikiLinks;\n for (i = 0, len = ref.length; i < len; i++) {\n link = ref[i];\n link.url = _this.navUrls.resolve(\"project-wiki-page\", {\n project: _this.scope.projectSlug,\n slug: link.href\n });\n }\n return selectedWikiLink = _.find(wikiLinks, {\n href: _this.scope.wikiSlug\n });\n };\n })(this));\n };\n\n WikiPagesListController.prototype.loadInitialData = function() {\n var project;\n project = this.loadProject();\n this.fillUsersAndRoles(project.members, project.roles);\n return this.q.all([this.loadWikiLinks(), this.loadWikiPages()]).then(this.checkLinksPerms.bind(this));\n };\n\n WikiPagesListController.prototype.checkLinksPerms = function() {\n if (this.scope.project.my_permissions.indexOf(\"add_wiki_link\") !== -1 || (this.scope.project.my_permissions.indexOf(\"view_wiki_links\") !== -1 && this.scope.wikiLinks.length)) {\n return this.scope.linksVisible = true;\n }\n };\n\n return WikiPagesListController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"WikiPagesListController\", WikiPagesListController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ChangeOwnerLightboxController, ChangeOwnerLightboxDirective, LbRequestOwnershipDirective, LightboxAddMembersWarningMessageDirective, TransferProjectStartSuccessDirective, debounce, module, normalizeString, taiga;\n\n taiga = this.taiga;\n\n debounce = this.taiga.debounce;\n\n normalizeString = this.taiga.normalizeString;\n\n module = angular.module(\"taigaKanban\");\n\n LightboxAddMembersWarningMessageDirective = function() {\n return {\n templateUrl: \"admin/memberships-warning-message.html\",\n scope: {\n project: \"=\"\n }\n };\n };\n\n module.directive(\"tgLightboxAddMembersWarningMessage\", [LightboxAddMembersWarningMessageDirective]);\n\n LbRequestOwnershipDirective = function(lightboxService, rs, confirmService, $translate) {\n return {\n link: function(scope, el) {\n lightboxService.open(el);\n return scope.request = function() {\n scope.loading = true;\n return rs.projects.transferRequest(scope.projectId).then(function() {\n scope.loading = false;\n lightboxService.close(el);\n return confirmService.notify(\"success\", $translate.instant(\"ADMIN.PROJECT_PROFILE.REQUEST_OWNERSHIP_SUCCESS\"));\n });\n };\n },\n templateUrl: \"common/lightbox/lightbox-request-ownership.html\"\n };\n };\n\n module.directive('tgLbRequestOwnership', [\"lightboxService\", \"tgResources\", \"$tgConfirm\", \"$translate\", LbRequestOwnershipDirective]);\n\n ChangeOwnerLightboxController = (function() {\n function ChangeOwnerLightboxController(rs1, lightboxService1, confirm, translate) {\n this.rs = rs1;\n this.lightboxService = lightboxService1;\n this.confirm = confirm;\n this.translate = translate;\n this.users = [];\n this.q = \"\";\n this.commentOpen = false;\n }\n\n ChangeOwnerLightboxController.prototype.limit = 3;\n\n ChangeOwnerLightboxController.prototype.filterUsers = function(user) {\n var text, username;\n username = user.full_name_display.toUpperCase();\n username = normalizeString(username);\n text = this.q.toUpperCase();\n text = normalizeString(text);\n return _.includes(username, text);\n };\n\n ChangeOwnerLightboxController.prototype.getUsers = function() {\n var users;\n if (!this.users.length && !this.q.length) {\n users = this.activeUsers;\n } else {\n users = this.users;\n }\n users = _.reject(users, {\n \"id\": this.currentOwnerId\n });\n users = _.reject(users, {\n \"selected\": true\n });\n this.totalUsers = _.size(users);\n return users.slice(0, this.limit);\n };\n\n ChangeOwnerLightboxController.prototype.userSearch = function() {\n this.users = this.activeUsers;\n this.selected = _.find(this.users, {\n \"selected\": true\n });\n if (this.q) {\n return this.users = _.filter(this.users, this.filterUsers.bind(this));\n }\n };\n\n ChangeOwnerLightboxController.prototype.selectUser = function(user) {\n this.activeUsers = _.map(this.activeUsers, function(user) {\n user.selected = false;\n return user;\n });\n user.selected = true;\n return this.userSearch();\n };\n\n ChangeOwnerLightboxController.prototype.submit = function() {\n this.loading = true;\n return this.rs.projects.transferStart(this.projectId, this.selected.id, this.comment).then((function(_this) {\n return function() {\n var desc, title;\n _this.loading = false;\n _this.lightboxService.closeAll();\n title = _this.translate.instant(\"ADMIN.PROJECT_PROFILE.CHANGE_OWNER_SUCCESS_TITLE\");\n desc = _this.translate.instant(\"ADMIN.PROJECT_PROFILE.CHANGE_OWNER_SUCCESS_DESC\");\n return _this.confirm.success(title, desc, {\n type: \"svg\",\n name: \"icon-speak-up\"\n });\n };\n })(this));\n };\n\n return ChangeOwnerLightboxController;\n\n })();\n\n ChangeOwnerLightboxController.$inject = [\"tgResources\", \"lightboxService\", \"$tgConfirm\", \"$translate\"];\n\n module.controller('ChangeOwnerLightbox', ChangeOwnerLightboxController);\n\n ChangeOwnerLightboxDirective = function(lightboxService, lightboxKeyboardNavigationService, $template, $compile) {\n var link;\n link = function(scope, el) {\n return lightboxService.open(el);\n };\n return {\n scope: true,\n controller: \"ChangeOwnerLightbox\",\n controllerAs: \"vm\",\n bindToController: {\n currentOwnerId: \"=\",\n projectId: \"=\",\n activeUsers: \"=\"\n },\n templateUrl: \"common/lightbox/lightbox-change-owner.html\",\n link: link\n };\n };\n\n module.directive(\"tgLbChangeOwner\", [\"lightboxService\", \"lightboxKeyboardNavigationService\", \"$tgTemplate\", \"$compile\", ChangeOwnerLightboxDirective]);\n\n TransferProjectStartSuccessDirective = function(lightboxService) {\n var link;\n link = function(scope, el) {\n scope.close = function() {\n return lightboxService.close(el);\n };\n return lightboxService.open(el);\n };\n return {\n templateUrl: \"common/lightbox/lightbox-transfer-project-start-success.html\",\n link: link\n };\n };\n\n module.directive(\"tgLbTransferProjectStartSuccess\", [\"lightboxService\", TransferProjectStartSuccessDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var MembershipsController, MembershipsDirective, MembershipsRowActionsDirective, MembershipsRowAdminCheckboxDirective, MembershipsRowAvatarDirective, MembershipsRowRoleSelectorDirective, NoMoreMembershipsExplanationDirective, bindMethods, mixOf, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n bindMethods = this.taiga.bindMethods;\n\n module = angular.module(\"taigaAdmin\");\n\n MembershipsController = (function(superClass) {\n extend(MembershipsController, superClass);\n\n MembershipsController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"$tgAnalytics\", \"tgAppMetaService\", \"$translate\", \"$tgAuth\", \"tgLightboxFactory\", \"tgErrorHandlingService\", \"tgProjectService\"];\n\n function MembershipsController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, analytics, appMetaService, translate, auth, lightboxFactory1, errorHandlingService, projectService1) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.navUrls = navUrls;\n this.analytics = analytics;\n this.appMetaService = appMetaService;\n this.translate = translate;\n this.auth = auth;\n this.lightboxFactory = lightboxFactory1;\n this.errorHandlingService = errorHandlingService;\n this.projectService = projectService1;\n bindMethods(this);\n this.scope.project = {};\n this.scope.filters = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n var description, title;\n title = _this.translate.instant(\"ADMIN.MEMBERSHIPS.PAGE_TITLE\", {\n projectName: _this.scope.project.name\n });\n description = _this.scope.project.description;\n return _this.appMetaService.setAll(title, description);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n this.scope.$on(\"membersform:new:success\", (function(_this) {\n return function() {\n _this.loadInitialData();\n return _this.analytics.trackEvent(\"membership\", \"create\", \"create memberships on admin\", 1);\n };\n })(this));\n }\n\n MembershipsController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n if (!project.i_am_admin) {\n this.errorHandlingService.permissionDenied();\n }\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.canAddUsers = project.max_memberships === null || project.max_memberships > project.total_memberships;\n this.scope.$emit('project:loaded', project);\n return project;\n };\n\n MembershipsController.prototype.loadMembers = function() {\n var httpFilters;\n httpFilters = this.getUrlFilters();\n return this.rs.memberships.list(this.scope.projectId, httpFilters).then((function(_this) {\n return function(data) {\n _this.scope.memberships = _.filter(data.models, function(membership) {\n return membership.user === null || membership.is_user_active;\n });\n _.map(_this.scope.memberships, function(member) {\n if (member.is_owner) {\n return _this.scope.projectOwnerEmail = member.user_email;\n }\n });\n _this.scope.page = data.current;\n _this.scope.count = data.count;\n _this.scope.paginatedBy = data.paginatedBy;\n return data;\n };\n })(this));\n };\n\n MembershipsController.prototype.loadInitialData = function() {\n this.loadProject();\n return this.q.all([this.loadMembers(), this.auth.refresh()]);\n };\n\n MembershipsController.prototype.getUrlFilters = function() {\n var filters;\n filters = _.pick(this.location.search(), \"page\");\n if (!filters.page) {\n filters.page = 1;\n }\n return filters;\n };\n\n MembershipsController.prototype.addNewMembers = function() {\n return this.lightboxFactory.create('tg-lb-add-members', {\n \"class\": \"lightbox lightbox-add-member\",\n \"project\": \"project\"\n }, {\n \"project\": this.scope.project\n });\n };\n\n MembershipsController.prototype.showLimitUsersWarningMessage = function() {\n var icon, message, title;\n title = this.translate.instant(\"ADMIN.MEMBERSHIPS.LIMIT_USERS_WARNING\");\n message = this.translate.instant(\"ADMIN.MEMBERSHIPS.LIMIT_USERS_WARNING_MESSAGE\", {\n members: this.scope.project.max_memberships\n });\n icon = \"/\" + window._version + \"/svg/icons/team-question.svg\";\n return this.confirm.success(title, message, {\n name: icon,\n type: \"img\"\n });\n };\n\n return MembershipsController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"MembershipsController\", MembershipsController);\n\n MembershipsDirective = function($template, $compile) {\n var link, linkPagination, template;\n template = $template.get(\"admin/admin-membership-paginator.html\", true);\n linkPagination = function($scope, $el, $attrs, $ctrl) {\n var $pagEl, afterCurrent, atBegin, atEnd, beforeCurrent, getNumPages, renderPagination;\n afterCurrent = 2;\n beforeCurrent = 4;\n atBegin = 2;\n atEnd = 2;\n $pagEl = $el.find(\".memberships-paginator\");\n getNumPages = function() {\n var numPages;\n numPages = $scope.count / $scope.paginatedBy;\n if (parseInt(numPages, 10) < numPages) {\n numPages = parseInt(numPages, 10) + 1;\n } else {\n numPages = parseInt(numPages, 10);\n }\n return numPages;\n };\n renderPagination = function() {\n var cpage, html, i, j, numPages, options, pages, ref;\n numPages = getNumPages();\n if (numPages <= 1) {\n $pagEl.hide();\n return;\n }\n pages = [];\n options = {};\n options.pages = pages;\n options.showPrevious = $scope.page > 1;\n options.showNext = !($scope.page === numPages);\n cpage = $scope.page;\n for (i = j = 1, ref = numPages; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) {\n if (i === (cpage + afterCurrent) && numPages > (cpage + afterCurrent + atEnd)) {\n pages.push({\n classes: \"dots\",\n type: \"dots\"\n });\n } else if (i === (cpage - beforeCurrent) && cpage > (atBegin + beforeCurrent)) {\n pages.push({\n classes: \"dots\",\n type: \"dots\"\n });\n } else if (i > (cpage + afterCurrent) && i <= (numPages - atEnd)) {\n\n } else if (i < (cpage - beforeCurrent) && i > atBegin) {\n\n } else if (i === cpage) {\n pages.push({\n classes: \"active\",\n num: i,\n type: \"page-active\"\n });\n } else {\n pages.push({\n classes: \"page\",\n num: i,\n type: \"page\"\n });\n }\n }\n html = template(options);\n html = $compile(html)($scope);\n $pagEl.html(html);\n return $pagEl.show();\n };\n $scope.$watch(\"memberships\", function(value) {\n if (!value) {\n return;\n }\n return renderPagination();\n });\n $el.on(\"click\", \".memberships-paginator a.next\", function(event) {\n event.preventDefault();\n return $scope.$apply(function() {\n $ctrl.selectFilter(\"page\", $scope.page + 1);\n return $ctrl.loadMembers();\n });\n });\n $el.on(\"click\", \".memberships-paginator a.previous\", function(event) {\n event.preventDefault();\n return $scope.$apply(function() {\n $ctrl.selectFilter(\"page\", $scope.page - 1);\n return $ctrl.loadMembers();\n });\n });\n return $el.on(\"click\", \".memberships-paginator li.page > a\", function(event) {\n var pagenum, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n pagenum = target.data(\"pagenum\");\n return $scope.$apply(function() {\n $ctrl.selectFilter(\"page\", pagenum);\n return $ctrl.loadMembers();\n });\n });\n };\n link = function($scope, $el, $attrs) {\n var $ctrl;\n $ctrl = $el.controller();\n linkPagination($scope, $el, $attrs, $ctrl);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgMemberships\", [\"$tgTemplate\", \"$compile\", MembershipsDirective]);\n\n MembershipsRowAvatarDirective = function($log, $template, $translate, $compile, avatarService) {\n var link, template;\n template = $template.get(\"admin/memberships-row-avatar.html\", true);\n link = function($scope, $el, $attrs) {\n var member, pending, render;\n pending = $translate.instant(\"ADMIN.MEMBERSHIP.STATUS_PENDING\");\n render = function(member) {\n var avatar, ctx, html;\n avatar = avatarService.getAvatar(member);\n ctx = {\n full_name: member.full_name ? member.full_name : \"\",\n email: member.user_email ? member.user_email : member.email,\n imgurl: avatar.url,\n bg: avatar.bg,\n pending: !member.is_user_active ? pending : \"\",\n isOwner: member.is_owner\n };\n html = template(ctx);\n html = $compile(html)($scope);\n return $el.html(html);\n };\n if ($attrs.tgMembershipsRowAvatar == null) {\n return $log.error(\"MembershipsRowAvatarDirective: the directive need a member\");\n }\n member = $scope.$eval($attrs.tgMembershipsRowAvatar);\n render(member);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgMembershipsRowAvatar\", [\"$log\", \"$tgTemplate\", '$translate', \"$compile\", \"tgAvatarService\", MembershipsRowAvatarDirective]);\n\n MembershipsRowAdminCheckboxDirective = function($log, $repo, $confirm, $template, $compile) {\n var link, template;\n template = $template.get(\"admin/admin-memberships-row-checkbox.html\", true);\n link = function($scope, $el, $attrs) {\n var html, member, render;\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n if ($attrs.tgMembershipsRowAdminCheckbox == null) {\n return $log.error(\"MembershipsRowAdminCheckboxDirective: the directive need a member\");\n }\n member = $scope.$eval($attrs.tgMembershipsRowAdminCheckbox);\n if (member.is_owner) {\n $el.find(\".js-check\").remove();\n return;\n }\n render = function(member) {\n var ctx, html;\n ctx = {\n inputId: \"is-admin-\" + member.id\n };\n html = template(ctx);\n html = $compile(html)($scope);\n return $el.html(html);\n };\n $el.on(\"click\", \":checkbox\", (function(_this) {\n return function(event) {\n var onError, onSuccess, target;\n onSuccess = function() {\n return $confirm.notify(\"success\");\n };\n onError = function(data) {\n member.revert();\n $el.find(\":checkbox\").prop(\"checked\", member.is_admin);\n return $confirm.notify(\"error\", data.is_admin[0]);\n };\n target = angular.element(event.currentTarget);\n member.is_admin = target.prop(\"checked\");\n return $repo.save(member).then(onSuccess, onError);\n };\n })(this));\n html = render(member);\n if (member.is_admin) {\n return $el.find(\":checkbox\").prop(\"checked\", true);\n }\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgMembershipsRowAdminCheckbox\", [\"$log\", \"$tgRepo\", \"$tgConfirm\", \"$tgTemplate\", \"$compile\", MembershipsRowAdminCheckboxDirective]);\n\n MembershipsRowRoleSelectorDirective = function($log, $repo, $confirm) {\n var link, template;\n template = _.template(\"\");\n link = function($scope, $el, $attrs) {\n var $ctrl, html, member, render;\n render = function(member) {\n var ctx, html;\n ctx = {\n roleList: $scope.project.roles,\n selectedRole: member.role\n };\n html = template(ctx);\n return $el.html(html);\n };\n if ($attrs.tgMembershipsRowRoleSelector == null) {\n return $log.error(\"MembershipsRowRoleSelectorDirective: the directive need a member\");\n }\n $ctrl = $el.controller();\n member = $scope.$eval($attrs.tgMembershipsRowRoleSelector);\n html = render(member);\n $el.on(\"change\", \"select\", (function(_this) {\n return function(event) {\n var newRole, onError, onSuccess, target;\n onSuccess = function() {\n return $confirm.notify(\"success\");\n };\n onError = function() {\n return $confirm.notify(\"error\");\n };\n target = angular.element(event.currentTarget);\n newRole = parseInt(target.val(), 10);\n if (member.role !== newRole) {\n member.role = newRole;\n return $repo.save(member).then(onSuccess, onError);\n }\n };\n })(this));\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgMembershipsRowRoleSelector\", [\"$log\", \"$tgRepo\", \"$tgConfirm\", MembershipsRowRoleSelectorDirective]);\n\n MembershipsRowActionsDirective = function($log, $repo, $rs, $confirm, $compile, $translate, $location, $navUrls, lightboxFactory, projectService) {\n var activedTemplate, link, pendingTemplate;\n activedTemplate = \"
\\n
\\n\\n \\n\";\n pendingTemplate = \"\\n\\n\\n \\n\";\n link = function($scope, $el, $attrs) {\n var $ctrl, leaveConfirm, member, render;\n render = function(member) {\n var html;\n if (member.user) {\n html = $compile(activedTemplate)($scope);\n } else {\n html = $compile(pendingTemplate)($scope);\n }\n return $el.html(html);\n };\n if ($attrs.tgMembershipsRowActions == null) {\n return $log.error(\"MembershipsRowActionsDirective: the directive need a member\");\n }\n $ctrl = $el.controller();\n member = $scope.$eval($attrs.tgMembershipsRowActions);\n render(member);\n $el.on(\"click\", \".js-resend\", function(event) {\n var onError, onSuccess;\n event.preventDefault();\n onSuccess = function() {\n var text;\n text = $translate.instant(\"ADMIN.MEMBERSHIP.SUCCESS_SEND_INVITATION\", {\n email: $scope.member.email\n });\n return $confirm.notify(\"success\", text);\n };\n onError = function() {\n var text;\n text = $translate.instant(\"ADMIN.MEMBERSHIP.ERROR_SEND_INVITATION\");\n return $confirm.notify(\"error\", text);\n };\n return $rs.memberships.resendInvitation($scope.member.id).then(onSuccess, onError);\n });\n leaveConfirm = function() {\n var defaultMsg, message, title;\n title = $translate.instant(\"ADMIN.MEMBERSHIP.DELETE_MEMBER\");\n defaultMsg = $translate.instant(\"ADMIN.MEMBERSHIP.DEFAULT_DELETE_MESSAGE\", {\n email: member.email\n });\n message = member.user ? member.full_name : defaultMsg;\n return $confirm.askOnDelete(title, message).then(function(askResponse) {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n var text;\n askResponse.finish();\n if (member.user !== $scope.user.id) {\n if ($scope.page > 1 && ($scope.count - 1) <= $scope.paginatedBy) {\n $ctrl.selectFilter(\"page\", $scope.page - 1);\n }\n projectService.fetchProject().then(function() {\n return $ctrl.loadInitialData();\n });\n } else {\n $location.path($navUrls.resolve(\"home\"));\n }\n text = $translate.instant(\"ADMIN.MEMBERSHIP.SUCCESS_DELETE\", {\n message: message\n });\n return $confirm.notify(\"success\", text, null, 5000);\n };\n })(this);\n onError = (function(_this) {\n return function() {\n var text;\n askResponse.finish(false);\n text = $translate.instant(\"ADMIN.MEMBERSHIP.ERROR_DELETE\", {\n message: message\n });\n return $confirm.notify(\"error\", text);\n };\n })(this);\n return $repo.remove(member).then(onSuccess, onError);\n });\n };\n $el.on(\"click\", \".delete\", function(event) {\n var isCurrentUser;\n event.preventDefault();\n if ($scope.project.owner.id === member.user) {\n isCurrentUser = $scope.user.id === member.user;\n return lightboxFactory.create(\"tg-lightbox-leave-project-warning\", {\n \"class\": \"lightbox lightbox-leave-project-warning\"\n }, {\n isCurrentUser: isCurrentUser,\n project: $scope.project\n });\n } else {\n return leaveConfirm();\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgMembershipsRowActions\", [\"$log\", \"$tgRepo\", \"$tgResources\", \"$tgConfirm\", \"$compile\", \"$translate\", \"$tgLocation\", \"$tgNavUrls\", \"tgLightboxFactory\", \"tgProjectService\", MembershipsRowActionsDirective]);\n\n NoMoreMembershipsExplanationDirective = function() {\n return {\n templateUrl: \"admin/no-more-memberships-explanation.html\",\n scope: {\n project: \"=\",\n ownerEmail: \"=\"\n }\n };\n };\n\n module.directive(\"tgNoMoreMembershipsExplanation\", [NoMoreMembershipsExplanationDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AdminNavigationDirective, module;\n\n AdminNavigationDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var section;\n section = $attrs.tgAdminNavigation;\n $el.find(\".active\").removeClass(\"active\");\n $el.find(\"#adminmenu-\" + section).addClass(\"active\");\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module = angular.module(\"taigaAdmin\");\n\n module.directive(\"tgAdminNavigation\", AdminNavigationDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AdminProjectChangeOwnerDirective, AdminProjectRequestOwnershipDirective, AdminProjectRestrictionsDirective, CsvEpicDirective, CsvExporterController, CsvExporterEpicsController, CsvExporterIssuesController, CsvExporterTasksController, CsvExporterUserstoriesController, CsvIssueDirective, CsvTaskDirective, CsvUsDirective, ProjectDefaultValuesDirective, ProjectExportDirective, ProjectLogoDirective, ProjectLogoModelDirective, ProjectModulesDirective, ProjectProfileController, ProjectProfileDirective, bindOnce, debounce, groupBy, joinStr, mixOf, module, scopeDefer, taiga, toString, trim,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n scopeDefer = this.taiga.scopeDefer;\n\n trim = this.taiga.trim;\n\n toString = this.taiga.toString;\n\n joinStr = this.taiga.joinStr;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaAdmin\");\n\n ProjectProfileController = (function(superClass) {\n extend(ProjectProfileController, superClass);\n\n ProjectProfileController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"tgAppMetaService\", \"$translate\", \"$tgAuth\", \"tgCurrentUserService\", \"tgErrorHandlingService\", \"tgProjectService\", \"$tgModel\"];\n\n function ProjectProfileController(scope1, rootscope, repo, confirm, rs, params, q, location, navUrls, appMetaService, translate, tgAuth, currentUserService1, errorHandlingService, projectService1, model1) {\n var promise;\n this.scope = scope1;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.navUrls = navUrls;\n this.appMetaService = appMetaService;\n this.translate = translate;\n this.tgAuth = tgAuth;\n this.currentUserService = currentUserService1;\n this.errorHandlingService = errorHandlingService;\n this.projectService = projectService1;\n this.model = model1;\n this.scope.project = {};\n this.scope.projectTags = [];\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n var description, sectionName, title;\n sectionName = _this.translate.instant(_this.scope.sectionName);\n title = _this.translate.instant(\"ADMIN.PROJECT_PROFILE.PAGE_TITLE\", {\n sectionName: sectionName,\n projectName: _this.scope.project.name\n });\n description = _this.scope.project.description;\n _this.appMetaService.setAll(title, description);\n return _this.fillUsersAndRoles(_this.scope.project.members, _this.scope.project.roles);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n this.scope.$on(\"project:loaded\", (function(_this) {\n return function() {\n var description, sectionName, title;\n sectionName = _this.translate.instant(_this.scope.sectionName);\n title = _this.translate.instant(\"ADMIN.PROJECT_PROFILE.PAGE_TITLE\", {\n sectionName: sectionName,\n projectName: _this.scope.project.name\n });\n description = _this.scope.project.description;\n return _this.appMetaService.setAll(title, description);\n };\n })(this));\n }\n\n ProjectProfileController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n project = this.model.make_model(\"projects\", project);\n if (!project.i_am_admin) {\n this.errorHandlingService.permissionDenied();\n }\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.epicStatusList = _.sortBy(project.epic_statuses, \"order\");\n this.scope.usStatusList = _.sortBy(project.us_statuses, \"order\");\n this.scope.pointsList = _.sortBy(project.points, \"order\");\n this.scope.taskStatusList = _.sortBy(project.task_statuses, \"order\");\n this.scope.issueTypesList = _.sortBy(project.issue_types, \"order\");\n this.scope.issueStatusList = _.sortBy(project.issue_statuses, \"order\");\n this.scope.prioritiesList = _.sortBy(project.priorities, \"order\");\n this.scope.severitiesList = _.sortBy(project.severities, \"order\");\n scopeDefer(this.scope, (function(_this) {\n return function() {\n return _this.scope.$emit('project:loaded', project);\n };\n })(this));\n this.scope.projectTags = _.map(this.scope.project.tags, (function(_this) {\n return function(it) {\n return [it, _this.scope.project.tags_colors[it]];\n };\n })(this));\n return project;\n };\n\n ProjectProfileController.prototype.loadInitialData = function() {\n this.loadProject();\n this.scope.canCreatePrivateProjects = this.currentUserService.canCreatePrivateProjects().valid;\n return this.tgAuth.refresh();\n };\n\n ProjectProfileController.prototype.openDeleteLightbox = function() {\n return this.rootscope.$broadcast(\"deletelightbox:new\", this.scope.project);\n };\n\n ProjectProfileController.prototype.addTag = function(name, color) {\n var tags;\n tags = _.clone(this.scope.project.tags);\n tags.push(name);\n this.scope.projectTags.push([name, null]);\n return this.scope.project.tags = tags;\n };\n\n ProjectProfileController.prototype.deleteTag = function(tag) {\n var tags;\n tags = _.clone(this.scope.project.tags);\n _.pull(tags, tag[0]);\n _.remove(this.scope.projectTags, (function(_this) {\n return function(it) {\n return it[0] === tag[0];\n };\n })(this));\n return this.scope.project.tags = tags;\n };\n\n return ProjectProfileController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"ProjectProfileController\", ProjectProfileController);\n\n ProjectProfileDirective = function($repo, $confirm, $loading, $navurls, $location, projectService, currentUserService, $analytics) {\n var link;\n link = function($scope, $el, $attrs) {\n var $ctrl, form, submit, submitButton;\n $ctrl = $el.controller();\n form = $el.find(\"form\").checksley({\n \"onlyOneErrorElement\": true\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var currentLoading, privacyChanged, promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n currentLoading = $loading().target(submitButton).start();\n privacyChanged = $scope.project.isAttributeModified(\"is_private\");\n promise = $repo.save($scope.project);\n promise.then(function() {\n var newUrl;\n currentLoading.finish();\n if (privacyChanged && $scope.project.is_private) {\n $analytics.trackEvent(\"project-privacy-changed\", \"from-public-to-private\", \"Change project privacy from public to private\", 1);\n } else if (privacyChanged && !$scope.project.is_private) {\n $analytics.trackEvent(\"project-privacy-changed\", \"from-private-to-public\", \"Change project privacy from private to public\", 1);\n }\n $confirm.notify(\"success\");\n newUrl = $navurls.resolve(\"project-admin-project-profile-details\", {\n project: $scope.project.slug\n });\n $location.path(newUrl);\n projectService.fetchProject().then((function(_this) {\n return function() {\n return $ctrl.loadInitialData();\n };\n })(this));\n return currentUserService.loadProjects();\n });\n return promise.then(null, function(data) {\n currentLoading.finish();\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"error\", data._error_message);\n }\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectProfile\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgNavUrls\", \"$tgLocation\", \"tgProjectService\", \"tgCurrentUserService\", \"$tgAnalytics\", ProjectProfileDirective]);\n\n ProjectDefaultValuesDirective = function($rootScope, $repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit, submitButton;\n form = $el.find(\"form\").checksley({\n \"onlyOneErrorElement\": true\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var currentLoading, promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n currentLoading = $loading().target(submitButton).start();\n promise = $repo.save($scope.project);\n promise.then(function() {\n currentLoading.finish();\n $confirm.notify(\"success\");\n return $rootScope.$broadcast(\"admin:project-default-values:updated\");\n });\n return promise.then(null, function(data) {\n currentLoading.finish();\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"error\", data._error_message);\n }\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n $el.on(\"submit\", \"form\", submit);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectDefaultValues\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", ProjectDefaultValuesDirective]);\n\n ProjectModulesDirective = function($rootScope, $repo, $confirm, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var submit;\n submit = (function(_this) {\n return function() {\n var form, promise;\n form = $el.find(\"form\").checksley();\n form.initializeFields();\n form.reset();\n if (!form.validate()) {\n return;\n }\n promise = $repo.save($scope.project);\n promise.then(function() {\n $scope.$emit(\"project:loaded\", $scope.project);\n $rootScope.$broadcast(\"admin:project-modules:updated\");\n return $confirm.notify(\"success\");\n });\n return promise.then(null, function(data) {\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"error\", data._error_message);\n }\n });\n };\n })(this);\n $el.on(\"change\", \".module-activation.module-direct-active input\", function(event) {\n event.preventDefault();\n return $scope.$applyAsync(submit);\n });\n $el.on(\"submit\", \"form\", function(event) {\n event.preventDefault();\n return submit();\n });\n $el.on(\"click\", \".save\", function(event) {\n event.preventDefault();\n return submit();\n });\n $el.on(\"keydown\", \".videoconference-attributes input\", function(e) {\n return e.which !== 32;\n });\n $scope.$watch(\"project.videoconferences\", function(newVal, oldVal) {\n if ((newVal != null) && (oldVal != null) && newVal !== oldVal) {\n return $scope.project.videoconferences_extra_data = \"\";\n }\n });\n $scope.$watch(\"isVideoconferenceActivated\", function(newValue, oldValue) {\n if (newValue === false) {\n $scope.project.videoconferences = null;\n $scope.project.videoconferences_extra_data = \"\";\n if (oldValue === true) {\n return submit();\n }\n }\n });\n return $scope.$watch(\"project\", function(project) {\n if (project.videoconferences != null) {\n return $scope.isVideoconferenceActivated = true;\n } else {\n return $scope.isVideoconferenceActivated = false;\n }\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectModules\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", ProjectModulesDirective]);\n\n ProjectExportDirective = function($window, $rs, $confirm, $translate, $analytics) {\n var link;\n link = function($scope, $el, $attrs) {\n var asyn_message, buttonsEl, dump_ready_text, hideButtons, hideResult, hideSpinner, loading_msg, loading_title, resultEl, resultMessageEl, resultTitleEl, setAsyncMessage, setAsyncTitle, setLoadingMessage, setLoadingTitle, setSyncMessage, setSyncTitle, showButtons, showErrorMode, showExportResultAsyncMode, showExportResultSyncMode, showLoadingMode, showResult, showSpinner, spinnerEl, syn_message;\n buttonsEl = $el.find(\".admin-project-export-buttons\");\n showButtons = function() {\n return buttonsEl.removeClass(\"hidden\");\n };\n hideButtons = function() {\n return buttonsEl.addClass(\"hidden\");\n };\n resultEl = $el.find(\".admin-project-export-result\");\n showResult = function() {\n return resultEl.removeClass(\"hidden\");\n };\n hideResult = function() {\n return resultEl.addClass(\"hidden\");\n };\n spinnerEl = $el.find(\".spin\");\n showSpinner = function() {\n return spinnerEl.removeClass(\"hidden\");\n };\n hideSpinner = function() {\n return spinnerEl.addClass(\"hidden\");\n };\n resultTitleEl = $el.find(\".result-title\");\n loading_title = $translate.instant(\"ADMIN.PROJECT_EXPORT.LOADING_TITLE\");\n loading_msg = $translate.instant(\"ADMIN.PROJECT_EXPORT.LOADING_MESSAGE\");\n dump_ready_text = function() {\n return resultTitleEl.html($translate.instant(\"ADMIN.PROJECT_EXPORT.DUMP_READY\"));\n };\n asyn_message = function() {\n return resultTitleEl.html($translate.instant(\"ADMIN.PROJECT_EXPORT.ASYNC_MESSAGE\"));\n };\n syn_message = function(url) {\n return resultTitleEl.html($translate.instant(\"ADMIN.PROJECT_EXPORT.SYNC_MESSAGE\", {\n url: url\n }));\n };\n setLoadingTitle = function() {\n return resultTitleEl.html(loading_title);\n };\n setAsyncTitle = function() {\n return resultTitleEl.html(loading_msg);\n };\n setSyncTitle = function() {\n return resultTitleEl.html(dump_ready_text);\n };\n resultMessageEl = $el.find(\".result-message \");\n setLoadingMessage = function() {\n return resultMessageEl.html(loading_msg);\n };\n setAsyncMessage = function() {\n return resultMessageEl.html(asyn_message);\n };\n setSyncMessage = function(url) {\n return resultMessageEl.html(syn_message(url));\n };\n showLoadingMode = function() {\n showSpinner();\n setLoadingTitle();\n setLoadingMessage();\n hideButtons();\n return showResult();\n };\n showExportResultAsyncMode = function() {\n hideSpinner();\n setAsyncTitle();\n return setAsyncMessage();\n };\n showExportResultSyncMode = function(url) {\n hideSpinner();\n setSyncTitle();\n return setSyncMessage(url);\n };\n showErrorMode = function() {\n hideSpinner();\n hideResult();\n return showButtons();\n };\n return $el.on(\"click\", \".button-export\", debounce(2000, (function(_this) {\n return function(event) {\n var onError, onSuccess;\n event.preventDefault();\n onSuccess = function(result) {\n var dumpUrl;\n $analytics.trackEvent(\"exporter\", \"export-project\", \"Exported project\", 1);\n if (result.status === 202) {\n return showExportResultAsyncMode();\n } else {\n dumpUrl = result.data.url;\n showExportResultSyncMode(dumpUrl);\n return $window.open(dumpUrl, \"_blank\");\n }\n };\n onError = function(result) {\n var errorMsg, ref;\n showErrorMode();\n errorMsg = $translate.instant(\"ADMIN.PROJECT_EXPORT.ERROR\");\n if (result.status === 429) {\n errorMsg = $translate.instant(\"ADMIN.PROJECT_EXPORT.ERROR_BUSY\");\n } else if ((ref = result.data) != null ? ref._error_message : void 0) {\n errorMsg = $translate.instant(\"ADMIN.PROJECT_EXPORT.ERROR_BUSY\", {\n message: result.data._error_message\n });\n }\n return $confirm.notify(\"error\", errorMsg);\n };\n showLoadingMode();\n return $rs.projects[\"export\"]($scope.projectId).then(onSuccess, onError);\n };\n })(this)));\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectExport\", [\"$window\", \"$tgResources\", \"$tgConfirm\", \"$translate\", \"$tgAnalytics\", ProjectExportDirective]);\n\n CsvExporterController = (function(superClass) {\n extend(CsvExporterController, superClass);\n\n CsvExporterController.$inject = [\"$scope\", \"$rootScope\", \"$tgUrls\", \"$tgConfirm\", \"$tgResources\", \"$translate\"];\n\n function CsvExporterController(scope1, rootscope, urls, confirm, rs, translate) {\n this.scope = scope1;\n this.rootscope = rootscope;\n this.urls = urls;\n this.confirm = confirm;\n this.rs = rs;\n this.translate = translate;\n this._deleteUuid = bind(this._deleteUuid, this);\n this._generateUuid = bind(this._generateUuid, this);\n this.setCsvUuid = bind(this.setCsvUuid, this);\n this.rootscope.$on(\"project:loaded\", this.setCsvUuid);\n this.scope.$watch(\"csvUuid\", (function(_this) {\n return function(value) {\n if (value) {\n return _this.scope.csvUrl = _this.urls.resolveAbsolute(_this.type + \"-csv\", value);\n } else {\n return _this.scope.csvUrl = \"\";\n }\n };\n })(this));\n }\n\n CsvExporterController.prototype.setCsvUuid = function() {\n return this.scope.csvUuid = this.scope.project[this.type + \"_csv_uuid\"];\n };\n\n CsvExporterController.prototype._generateUuid = function(response) {\n var promise;\n if (response == null) {\n response = null;\n }\n promise = this.rs.projects[\"regenerate_\" + this.type + \"_csv_uuid\"](this.scope.projectId);\n promise.then((function(_this) {\n return function(data) {\n var ref;\n return _this.scope.csvUuid = (ref = data.data) != null ? ref.uuid : void 0;\n };\n })(this));\n promise.then(null, (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this));\n promise[\"finally\"](function() {\n if (response) {\n return response.finish();\n }\n });\n return promise;\n };\n\n CsvExporterController.prototype._deleteUuid = function(response) {\n var promise;\n if (response == null) {\n response = null;\n }\n promise = this.rs.projects[\"delete_\" + this.type + \"_csv_uuid\"](this.scope.projectId);\n promise.then((function(_this) {\n return function(data) {\n var ref;\n return _this.scope.csvUuid = (ref = data.data) != null ? ref.uuid : void 0;\n };\n })(this));\n promise.then(null, (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this));\n promise[\"finally\"](function() {\n if (response) {\n return response.finish();\n }\n });\n return promise;\n };\n\n CsvExporterController.prototype.regenerateUuid = function() {\n var subtitle, title;\n if (this.scope.csvUuid) {\n title = this.translate.instant(\"ADMIN.REPORTS.REGENERATE_TITLE\");\n subtitle = this.translate.instant(\"ADMIN.REPORTS.REGENERATE_SUBTITLE\");\n return this.confirm.ask(title, subtitle).then(this._generateUuid);\n } else {\n return this._generateUuid();\n }\n };\n\n CsvExporterController.prototype.deleteUuid = function() {\n var subtitle, title;\n if (this.scope.csvUuid) {\n title = this.translate.instant(\"ADMIN.REPORTS.DELETE_TITLE\");\n subtitle = this.translate.instant(\"ADMIN.REPORTS.DELETE_SUBTITLE\");\n return this.confirm.ask(title, subtitle).then(this._deleteUuid);\n } else {\n return this._deleteUuid();\n }\n };\n\n return CsvExporterController;\n\n })(taiga.Controller);\n\n CsvExporterEpicsController = (function(superClass) {\n extend(CsvExporterEpicsController, superClass);\n\n function CsvExporterEpicsController() {\n return CsvExporterEpicsController.__super__.constructor.apply(this, arguments);\n }\n\n CsvExporterEpicsController.prototype.type = \"epics\";\n\n return CsvExporterEpicsController;\n\n })(CsvExporterController);\n\n CsvExporterUserstoriesController = (function(superClass) {\n extend(CsvExporterUserstoriesController, superClass);\n\n function CsvExporterUserstoriesController() {\n return CsvExporterUserstoriesController.__super__.constructor.apply(this, arguments);\n }\n\n CsvExporterUserstoriesController.prototype.type = \"userstories\";\n\n return CsvExporterUserstoriesController;\n\n })(CsvExporterController);\n\n CsvExporterTasksController = (function(superClass) {\n extend(CsvExporterTasksController, superClass);\n\n function CsvExporterTasksController() {\n return CsvExporterTasksController.__super__.constructor.apply(this, arguments);\n }\n\n CsvExporterTasksController.prototype.type = \"tasks\";\n\n return CsvExporterTasksController;\n\n })(CsvExporterController);\n\n CsvExporterIssuesController = (function(superClass) {\n extend(CsvExporterIssuesController, superClass);\n\n function CsvExporterIssuesController() {\n return CsvExporterIssuesController.__super__.constructor.apply(this, arguments);\n }\n\n CsvExporterIssuesController.prototype.type = \"issues\";\n\n return CsvExporterIssuesController;\n\n })(CsvExporterController);\n\n module.controller(\"CsvExporterEpicsController\", CsvExporterEpicsController);\n\n module.controller(\"CsvExporterUserstoriesController\", CsvExporterUserstoriesController);\n\n module.controller(\"CsvExporterTasksController\", CsvExporterTasksController);\n\n module.controller(\"CsvExporterIssuesController\", CsvExporterIssuesController);\n\n CsvEpicDirective = function($translate) {\n var link;\n link = function($scope) {\n return $scope.sectionTitle = \"ADMIN.CSV.SECTION_TITLE_EPIC\";\n };\n return {\n controller: \"CsvExporterEpicsController\",\n controllerAs: \"ctrl\",\n templateUrl: \"admin/project-csv.html\",\n link: link,\n scope: true\n };\n };\n\n module.directive(\"tgCsvEpic\", [\"$translate\", CsvEpicDirective]);\n\n CsvUsDirective = function($translate) {\n var link;\n link = function($scope) {\n return $scope.sectionTitle = \"ADMIN.CSV.SECTION_TITLE_US\";\n };\n return {\n controller: \"CsvExporterUserstoriesController\",\n controllerAs: \"ctrl\",\n templateUrl: \"admin/project-csv.html\",\n link: link,\n scope: true\n };\n };\n\n module.directive(\"tgCsvUs\", [\"$translate\", CsvUsDirective]);\n\n CsvTaskDirective = function($translate) {\n var link;\n link = function($scope) {\n return $scope.sectionTitle = \"ADMIN.CSV.SECTION_TITLE_TASK\";\n };\n return {\n controller: \"CsvExporterTasksController\",\n controllerAs: \"ctrl\",\n templateUrl: \"admin/project-csv.html\",\n link: link,\n scope: true\n };\n };\n\n module.directive(\"tgCsvTask\", [\"$translate\", CsvTaskDirective]);\n\n CsvIssueDirective = function($translate) {\n var link;\n link = function($scope) {\n return $scope.sectionTitle = \"ADMIN.CSV.SECTION_TITLE_ISSUE\";\n };\n return {\n controller: \"CsvExporterIssuesController\",\n controllerAs: \"ctrl\",\n templateUrl: \"admin/project-csv.html\",\n link: link,\n scope: true\n };\n };\n\n module.directive(\"tgCsvIssue\", [\"$translate\", CsvIssueDirective]);\n\n ProjectLogoDirective = function($auth, $model, $rs, $confirm) {\n var link;\n link = function($scope, $el, $attrs) {\n var onError, onSuccess, showSizeInfo;\n showSizeInfo = function() {\n return $el.find(\".size-info\").addClass(\"active\");\n };\n onSuccess = function(response) {\n var project;\n project = $model.make_model(\"projects\", response.data);\n $scope.project = project;\n $el.find('.loading-overlay').removeClass('active');\n return $confirm.notify('success');\n };\n onError = function(response) {\n if (response.status === 413) {\n showSizeInfo();\n }\n $el.find('.loading-overlay').removeClass('active');\n return $confirm.notify('error', response.data._error_message);\n };\n $el.on(\"click\", \".js-change-logo\", function() {\n return $el.find(\"#logo-field\").click();\n });\n $el.on(\"change\", \"#logo-field\", function(event) {\n if ($scope.logoAttachment) {\n $el.find('.loading-overlay').addClass(\"active\");\n return $rs.projects.changeLogo($scope.project.id, $scope.logoAttachment).then(onSuccess, onError);\n }\n });\n $el.on(\"click\", \"a.js-use-default-logo\", function(event) {\n $el.find('.loading-overlay').addClass(\"active\");\n return $rs.projects.removeLogo($scope.project.id).then(onSuccess, onError);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectLogo\", [\"$tgAuth\", \"$tgModel\", \"$tgResources\", \"$tgConfirm\", ProjectLogoDirective]);\n\n ProjectLogoModelDirective = function($parse) {\n var link;\n link = function($scope, $el, $attrs) {\n var model, modelSetter;\n model = $parse($attrs.tgProjectLogoModel);\n modelSetter = model.assign;\n return $el.bind('change', function() {\n return $scope.$apply(function() {\n return modelSetter($scope, $el[0].files[0]);\n });\n });\n };\n return {\n link: link\n };\n };\n\n module.directive('tgProjectLogoModel', ['$parse', ProjectLogoModelDirective]);\n\n AdminProjectRestrictionsDirective = function() {\n return {\n scope: {\n \"project\": \"=\"\n },\n templateUrl: \"admin/admin-project-restrictions.html\"\n };\n };\n\n module.directive('tgAdminProjectRestrictions', [AdminProjectRestrictionsDirective]);\n\n AdminProjectRequestOwnershipDirective = function(lightboxFactory) {\n return {\n link: function(scope) {\n return scope.requestOwnership = function() {\n if (scope.canRequest) {\n return lightboxFactory.create(\"tg-lb-request-ownership\", {\n \"class\": \"lightbox lightbox-request-ownership\"\n }, {\n projectId: scope.projectId\n });\n }\n };\n },\n scope: {\n \"canRequest\": \"=\",\n \"projectId\": \"=\",\n \"owner\": \"=\"\n },\n templateUrl: \"admin/admin-project-request-ownership.html\"\n };\n };\n\n module.directive('tgAdminProjectRequestOwnership', [\"tgLightboxFactory\", AdminProjectRequestOwnershipDirective]);\n\n AdminProjectChangeOwnerDirective = function(lightboxFactory) {\n return {\n link: function(scope) {\n return scope.changeOwner = function() {\n return lightboxFactory.create(\"tg-lb-change-owner\", {\n \"class\": \"lightbox lightbox-select-user\",\n \"project-id\": \"projectId\",\n \"active-users\": \"activeUsers\",\n \"current-owner-id\": \"currentOwnerId\"\n }, {\n projectId: scope.projectId,\n activeUsers: scope.activeUsers,\n currentOwnerId: scope.owner.id,\n members: scope.members\n });\n };\n },\n scope: {\n \"activeUsers\": \"=\",\n \"projectId\": \"=\",\n \"owner\": \"=\",\n \"members\": \"=\"\n },\n templateUrl: \"admin/admin-project-change-owner.html\"\n };\n };\n\n module.directive('tgAdminProjectChangeOwner', [\"tgLightboxFactory\", AdminProjectChangeOwnerDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CHECKBOX_TYPE, DATE_TYPE, DROPDOWN_TYPE, MULTILINE_TYPE, NUMBER_TYPE, ProjectCustomAttributesController, ProjectCustomAttributesDirective, ProjectDueDatesValues, ProjectDueDatesValuesController, ProjectSwimlanesSingle, ProjectSwimlanesValue, ProjectSwimlanesValuesController, ProjectSwimlanesWipDirective, ProjectTagsController, ProjectTagsDirective, ProjectValuesController, ProjectValuesDirective, ProjectValuesSectionController, RICHTEXT_TYPE, SortableSwimlanes, TEXT_TYPE, TYPE_CHOICES, URL_TYPE, bindOnce, debounce, defaultColor, getDefaulColorList, groupBy, joinStr, mixOf, module, taiga, toString, trim,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n trim = this.taiga.trim;\n\n toString = this.taiga.toString;\n\n joinStr = this.taiga.joinStr;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n getDefaulColorList = this.taiga.getDefaulColorList;\n\n defaultColor = '#A9AABC';\n\n module = angular.module(\"taigaAdmin\");\n\n ProjectValuesSectionController = (function(superClass) {\n extend(ProjectValuesSectionController, superClass);\n\n ProjectValuesSectionController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"tgAppMetaService\", \"$translate\", \"tgErrorHandlingService\", \"tgProjectService\"];\n\n function ProjectValuesSectionController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, appMetaService, translate, errorHandlingService, projectService1) {\n var description, sectionName, title;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.navUrls = navUrls;\n this.appMetaService = appMetaService;\n this.translate = translate;\n this.errorHandlingService = errorHandlingService;\n this.projectService = projectService1;\n this.scope.project = {};\n this.scope.$on(\"project:load\", (function(_this) {\n return function() {\n return _this.projectService.fetchProject().then(function() {\n return _this.loadProject();\n });\n };\n })(this));\n this.loadInitialData();\n sectionName = this.translate.instant(this.scope.sectionName);\n title = this.translate.instant(\"ADMIN.PROJECT_VALUES.PAGE_TITLE\", {\n \"sectionName\": sectionName,\n \"projectName\": this.scope.project.name\n });\n description = this.scope.project.description;\n this.appMetaService.setAll(title, description);\n }\n\n ProjectValuesSectionController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n if (!project.i_am_admin) {\n this.errorHandlingService.permissionDenied();\n }\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.$emit('project:loaded', project);\n return project;\n };\n\n ProjectValuesSectionController.prototype.loadInitialData = function() {\n var promise;\n promise = this.loadProject();\n return promise;\n };\n\n return ProjectValuesSectionController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"ProjectValuesSectionController\", ProjectValuesSectionController);\n\n ProjectValuesController = (function(superClass) {\n extend(ProjectValuesController, superClass);\n\n ProjectValuesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\"];\n\n function ProjectValuesController(scope, rootscope, repo, confirm, rs) {\n var unwatch;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.moveValue = bind(this.moveValue, this);\n this.loadValues = bind(this.loadValues, this);\n this.scope.$on(\"admin:project-values:move\", this.moveValue);\n unwatch = this.scope.$watch(\"resource\", (function(_this) {\n return function(resource) {\n if (resource) {\n _this.loadValues();\n return unwatch();\n }\n };\n })(this));\n }\n\n ProjectValuesController.prototype.loadValues = function() {\n return this.rs[this.scope.resource].listValues(this.scope.projectId, this.scope.type).then((function(_this) {\n return function(values) {\n if (values.length) {\n _this.scope.values = values;\n _this.scope.maxValueOrder = _.maxBy(values, \"order\").order;\n }\n return values;\n };\n })(this));\n };\n\n ProjectValuesController.prototype.moveValue = function(ctx, itemValue, itemIndex) {\n var r, values;\n values = this.scope.values;\n r = values.indexOf(itemValue);\n values.splice(r, 1);\n values.splice(itemIndex, 0, itemValue);\n _.each(values, function(value, index) {\n return value.order = index;\n });\n return this.repo.saveAll(values).then((function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"admin:project-values:updated\");\n };\n })(this));\n };\n\n return ProjectValuesController;\n\n })(taiga.Controller);\n\n module.controller(\"ProjectValuesController\", ProjectValuesController);\n\n ProjectSwimlanesValuesController = (function(superClass) {\n extend(ProjectSwimlanesValuesController, superClass);\n\n ProjectSwimlanesValuesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$translate\", \"$tgConfirm\", \"$tgResources\", \"tgProjectService\"];\n\n function ProjectSwimlanesValuesController(scope, rootscope, repo, translate, confirm, rs, projectService1) {\n var unwatch;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.translate = translate;\n this.confirm = confirm;\n this.rs = rs;\n this.projectService = projectService1;\n this.removeSwimlane = bind(this.removeSwimlane, this);\n this.loadSwimlanes = bind(this.loadSwimlanes, this);\n this.filterArchivedSwimlaneStatus = bind(this.filterArchivedSwimlaneStatus, this);\n this.filterArchivedProjectStatuses = bind(this.filterArchivedProjectStatuses, this);\n this.updatedSwimlanePosition = bind(this.updatedSwimlanePosition, this);\n this.setDefaultSwimlane = bind(this.setDefaultSwimlane, this);\n this.updateSwimlane = bind(this.updateSwimlane, this);\n this.addSwimlane = bind(this.addSwimlane, this);\n this.scope.$on(\"swimlane:load\", (function(_this) {\n return function() {\n return _this.loadSwimlanes();\n };\n })(this));\n unwatch = this.scope.$watch(\"resource\", (function(_this) {\n return function(resource) {\n if (resource) {\n _this.loadSwimlanes();\n return unwatch();\n }\n };\n })(this));\n }\n\n ProjectSwimlanesValuesController.prototype.addSwimlane = function() {\n var promise;\n promise = this.rs[this.scope.resource].create(this.scope.projectId, this.scope.swimlane.name);\n promise.success((function(_this) {\n return function(values) {\n _this.scope.swimlaneAdded();\n _this.loadSwimlanes();\n return _this.rootscope.$broadcast(\"project:load\");\n };\n })(this));\n return promise.error((function(_this) {\n return function() {\n _this.confirm.notify('light-error', _this.translate.instant(\"ADMIN.PROJECT_KANBAN_OPTIONS.ACTION_ADD_SWIMLANE\"));\n return _this.scope.hideSwimlaneForm();\n };\n })(this));\n };\n\n ProjectSwimlanesValuesController.prototype.updateSwimlane = function(swimlane, name) {\n return this.rs[this.scope.resource].edit(swimlane.id, name).then((function(_this) {\n return function(values) {\n _this.loadSwimlanes();\n return _this.rootscope.$broadcast(\"project:load\");\n };\n })(this));\n };\n\n ProjectSwimlanesValuesController.prototype.setDefaultSwimlane = function(swimlane) {\n return this.rs.projects.patch_default_swimlane(this.scope.projectId, swimlane.id).then((function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"project:load\");\n };\n })(this));\n };\n\n ProjectSwimlanesValuesController.prototype.updatedSwimlanePosition = function(swimlane, position) {\n var newSwimlanesOrder, prevSwimlane, swimlanesOrderArrayFiltered;\n prevSwimlane = this.scope.values.find(function(value) {\n return value.id === swimlane.id;\n });\n if (prevSwimlane.order === position) {\n return;\n }\n swimlanesOrderArrayFiltered = this.scope.values.filter((function(_this) {\n return function(value, index) {\n return value.id !== swimlane.id;\n };\n })(this));\n swimlanesOrderArrayFiltered.splice(position, 0, swimlane);\n newSwimlanesOrder = swimlanesOrderArrayFiltered.map((function(_this) {\n return function(swimlane, index) {\n return [swimlane.id, index];\n };\n })(this));\n return this.rs[this.scope.resource].bulkUpdateOrder(this.scope.projectId, newSwimlanesOrder).then((function(_this) {\n return function(values) {\n return _this.loadSwimlanes();\n };\n })(this));\n };\n\n ProjectSwimlanesValuesController.prototype.filterArchivedProjectStatuses = function() {\n return this.scope.project.us_statuses.filter((function(_this) {\n return function(status) {\n return status.is_archived !== true;\n };\n })(this));\n };\n\n ProjectSwimlanesValuesController.prototype.filterArchivedSwimlaneStatus = function(swimlane) {\n return swimlane.statuses.filter((function(_this) {\n return function(status) {\n return status.is_archived !== true;\n };\n })(this));\n };\n\n ProjectSwimlanesValuesController.prototype.loadSwimlanes = function() {\n return this.rs[this.scope.resource].list(this.scope.projectId).then((function(_this) {\n return function(values) {\n return _this.scope.values = values;\n };\n })(this));\n };\n\n ProjectSwimlanesValuesController.prototype.removeSwimlane = function(swimlaneId, moveTo) {\n return this.rs[this.scope.resource][\"delete\"](swimlaneId, moveTo).then((function(_this) {\n return function() {\n _this.loadSwimlanes();\n return _this.rootscope.$broadcast(\"project:load\");\n };\n })(this));\n };\n\n return ProjectSwimlanesValuesController;\n\n })(taiga.Controller);\n\n module.controller(\"ProjectSwimlanesValuesController\", ProjectSwimlanesValuesController);\n\n ProjectSwimlanesValue = function($timeout) {\n var link;\n link = function($scope, $el, $attrs, $ctrl) {\n $ctrl = $el.controller();\n $scope.isFormVisible = false;\n $scope.isNewSwimlane = false;\n $scope.swimlane = {\n name: ''\n };\n $scope.swimlaneAdded = function() {\n $scope.swimlane = {\n name: ''\n };\n $scope.isNewSwimlane = true;\n $scope.isFormVisible = false;\n return setTimeout(function() {\n $scope.isNewSwimlane = false;\n return $scope.$apply();\n }, 10000);\n };\n $scope.displaySwimlaneForm = function() {\n $scope.isFormVisible = true;\n return $timeout(function() {\n return $el.find(\"#admin-swimlanes-form-input\").focus();\n });\n };\n $scope.hideSwimlaneForm = function() {\n $scope.isFormVisible = false;\n return $scope.swimlane = {\n name: ''\n };\n };\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectSwimlanesValues\", [\"$timeout\", ProjectSwimlanesValue]);\n\n ProjectSwimlanesSingle = function($translate, $confirm, $animate) {\n var link;\n link = function($scope, $el, $attrs, $ctrl) {\n $ctrl = $el.controller();\n $scope.displaySwimlaneSingleForm = false;\n $scope.swimlaneSingleForm = {\n name: ''\n };\n $scope.updateSwimlane = function(swimlane) {\n $scope.displaySwimlaneSingleForm = false;\n return $ctrl.updateSwimlane(swimlane, $scope.swimlaneSingleForm.name);\n };\n $scope.setDefaultSwimlane = function(swimlane) {\n return $ctrl.setDefaultSwimlane(swimlane);\n };\n $scope.getDefaultTitle = function(swimlane) {\n if (swimlane.id === $scope.project.default_swimlane) {\n return $translate.instant(\"LIGHTBOX.ADMIN_KANBAN_POWERUPS.DEFAULT_SWIMLANE\");\n } else {\n return $translate.instant(\"LIGHTBOX.ADMIN_KANBAN_POWERUPS.SET_DEFAULT_SWIMLANE\");\n }\n };\n $scope.removeSwimlaneTitle = function(swimlane) {\n if (swimlane.id === $scope.project.default_swimlane) {\n return $translate.instant(\"LIGHTBOX.ADMIN_KANBAN_POWERUPS.DISABLE_DELETE_SWIMLANE\");\n }\n };\n $scope.editSwimlaneSingleForm = function() {\n return $scope.displaySwimlaneSingleForm = true;\n };\n $scope.cancelEditSwimlaneSingleForm = function() {\n return $scope.displaySwimlaneSingleForm = false;\n };\n return $scope.removeSwimlaneDialog = (function(_this) {\n return function(event, swimlane) {\n var choices, replacement, subtitle, title;\n title = $translate.instant(\"LIGHTBOX.ADMIN_KANBAN_POWERUPS.TITLE_ACTION_DELETE_SWIMLANE\");\n $animate.on(\"leave\", $el[0], function(element, phase) {\n if (phase === \"close\") {\n $animate.off(\"leave\", $el[0]);\n return $ctrl.scope.$evalAsync((function(_this) {\n return function() {\n return $ctrl.scope.deletingSwimlane = false;\n };\n })(this));\n }\n });\n if ($scope.values.length > 1) {\n subtitle = $translate.instant(\"LIGHTBOX.ADMIN_KANBAN_POWERUPS.SUBTITLE_ACTION_DELETE_SWIMLANE_OPTIONS\", {\n swimlane: swimlane.name\n });\n replacement = $translate.instant(\"LIGHTBOX.ADMIN_KANBAN_POWERUPS.SUBTITLE_ACTION_DELETE_SWIMLANE_REPLACEMENT\");\n choices = {};\n _.each($scope.values, function(option) {\n if (swimlane.id !== option.id) {\n return choices[option.id] = option.name;\n }\n });\n return $confirm.askChoice(title, subtitle, choices, replacement).then(function(response) {\n $ctrl.scope.deletingSwimlane = true;\n $ctrl.removeSwimlane(swimlane.id, response.selected);\n return response.finish();\n });\n } else {\n subtitle = $translate.instant(\"LIGHTBOX.ADMIN_KANBAN_POWERUPS.SUBTITLE_ACTION_DELETE_SWIMLANE_LAST\");\n return $confirm.askDelete(title, subtitle).then(function(response) {\n $ctrl.scope.deletingSwimlane = true;\n $ctrl.removeSwimlane(swimlane.id);\n return response.finish();\n });\n }\n };\n })(this);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectSwimlanesSingle\", [\"$translate\", \"$tgConfirm\", \"$animate\", ProjectSwimlanesSingle]);\n\n SortableSwimlanes = function() {\n var link;\n link = function($scope, $el, $attrs, $ctrl) {\n var drake, itemEl, tdom;\n $ctrl = $el.controller();\n itemEl = null;\n tdom = $el.find(\".sortable\");\n drake = dragula([tdom[0]], {\n direction: 'vertical',\n copySortSource: false,\n copy: false,\n mirrorContainer: tdom[0]\n });\n drake.on('dragend', function(item) {\n var itemValue, newIndex;\n itemEl = $(item);\n itemValue = itemEl.scope().value;\n newIndex = itemEl.index();\n return $scope.$apply(function() {\n return $ctrl.updatedSwimlanePosition(itemValue, newIndex);\n });\n });\n return $scope.$on(\"$destroy\", function() {\n $el.off();\n return drake.destroy();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgSortableSwimlanes\", [SortableSwimlanes]);\n\n ProjectDueDatesValuesController = (function(superClass) {\n extend(ProjectDueDatesValuesController, superClass);\n\n function ProjectDueDatesValuesController() {\n this.displayValues = bind(this.displayValues, this);\n this.createDefaultValues = bind(this.createDefaultValues, this);\n this.loadValues = bind(this.loadValues, this);\n return ProjectDueDatesValuesController.__super__.constructor.apply(this, arguments);\n }\n\n ProjectDueDatesValuesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\"];\n\n ProjectDueDatesValuesController.prototype.loadValues = function() {\n return this.rs[this.scope.resource].listValues(this.scope.projectId, this.scope.type).then((function(_this) {\n return function(values) {\n if (values.length) {\n _this.scope.maxValueOrder = _.maxBy(values, \"order\").order;\n _this.displayValues(values);\n } else {\n _this.createDefaultValues();\n }\n return values;\n };\n })(this));\n };\n\n ProjectDueDatesValuesController.prototype.createDefaultValues = function() {\n if (this.rs[this.scope.resource].createDefaultValues == null) {\n return;\n }\n return this.rs[this.scope.resource].createDefaultValues(this.scope.projectId, this.scope.type).then((function(_this) {\n return function(response) {\n var values;\n _this.rootscope.$broadcast(\"admin:project-values:updated\");\n values = response.data;\n if (values.length) {\n _this.scope.maxValueOrder = _.maxBy(values, \"order\").order;\n _this.displayValues(values);\n }\n return values;\n };\n })(this));\n };\n\n ProjectDueDatesValuesController.prototype.displayValues = function(values) {\n _.each(values, function(value, index) {\n value.days_to_due_abs = value.days_to_due !== null ? Math.abs(value.days_to_due) : null;\n return value.sign = value.days_to_due >= 0 ? 1 : -1;\n });\n return this.scope.values = values;\n };\n\n return ProjectDueDatesValuesController;\n\n })(ProjectValuesController);\n\n module.controller(\"ProjectDueDatesValuesController\", ProjectDueDatesValuesController);\n\n ProjectValuesDirective = function($log, $repo, $confirm, $location, animationFrame, $translate, $rootscope, projectService) {\n var link, linkDragAndDrop, linkValue;\n linkDragAndDrop = function($scope, $el, $attrs) {\n var drake, itemEl, newParentScope, oldParentScope, scroll, tdom;\n oldParentScope = null;\n newParentScope = null;\n itemEl = null;\n tdom = $el.find(\".sortable\");\n drake = dragula([tdom[0]], {\n direction: 'vertical',\n copySortSource: false,\n copy: false,\n mirrorContainer: tdom[0]\n });\n drake.on('dragend', function(item) {\n var itemIndex, itemValue;\n itemEl = $(item);\n itemValue = itemEl.scope().value;\n itemIndex = itemEl.index();\n return $scope.$broadcast(\"admin:project-values:move\", itemValue, itemIndex);\n });\n scroll = autoScroll(window, {\n margin: 20,\n pixels: 30,\n scrollWhenOutside: true,\n autoScroll: function() {\n return this.down && drake.dragging;\n }\n });\n return $scope.$on(\"$destroy\", function() {\n $el.off();\n return drake.destroy();\n });\n };\n linkValue = function($scope, $el, $attrs) {\n var $ctrl, cancel, goToBottomList, initializeNewValue, initializeTextTranslations, objName, saveNewValue, saveValue, valueType;\n $ctrl = $el.controller();\n valueType = $attrs.type;\n objName = $attrs.objname;\n initializeNewValue = function() {\n return $scope.newValue = {\n \"name\": \"\",\n \"is_closed\": false,\n \"is_archived\": false\n };\n };\n initializeTextTranslations = function() {\n return $scope.addNewElementText = $translate.instant(\"ADMIN.PROJECT_VALUES_\" + (objName.toUpperCase()) + \".ACTION_ADD\");\n };\n initializeNewValue();\n initializeTextTranslations();\n $rootscope.$on(\"$translateChangeEnd\", function() {\n return $scope.$evalAsync(initializeTextTranslations);\n });\n goToBottomList = (function(_this) {\n return function(focus) {\n var table;\n if (focus == null) {\n focus = false;\n }\n table = $el.find(\".table-main\");\n $(document.body).scrollTop(table.offset().top + table.height());\n if (focus) {\n return $el.find(\".new-value input:visible\").first().focus();\n }\n };\n })(this);\n saveValue = function(target) {\n var form, formEl, promise, value;\n formEl = target.parents(\"form\");\n form = formEl.checksley();\n if (!form.validate()) {\n return;\n }\n value = formEl.scope().value;\n if (!value.color) {\n value.color = defaultColor;\n }\n promise = $repo.save(value);\n promise.then(function() {\n var row;\n row = target.parents(\".row.table-main\");\n row.addClass(\"hidden\");\n row.siblings(\".visualization\").removeClass('hidden');\n $rootscope.$broadcast(\"admin:project-values:updated\");\n return projectService.fetchProject();\n });\n return promise.then(null, function(data) {\n return form.setErrors(data);\n });\n };\n saveNewValue = function(target) {\n var form, formEl, promise;\n formEl = target.parents(\"form\");\n form = formEl.checksley();\n if (!form.validate()) {\n return;\n }\n $scope.newValue.project = $scope.project.id;\n $scope.newValue.order = $scope.maxValueOrder ? $scope.maxValueOrder + 1 : 1;\n if (!$scope.newValue.color) {\n $scope.newValue.color = defaultColor;\n }\n promise = $repo.create(valueType, $scope.newValue);\n promise.then(function(data) {\n target.addClass(\"hidden\");\n $scope.values.push(data);\n $scope.maxValueOrder = data.order;\n initializeNewValue();\n return $rootscope.$broadcast(\"admin:project-values:updated\");\n });\n return promise.then(null, function(data) {\n return form.setErrors(data);\n });\n };\n cancel = function(target) {\n var formEl, row, value;\n row = target.parents(\".row.table-main\");\n formEl = target.parents(\"form\");\n value = formEl.scope().value;\n return $scope.$apply(function() {\n row.addClass(\"hidden\");\n value.revert();\n return row.siblings(\".visualization\").removeClass('hidden');\n });\n };\n $el.on(\"click\", \".show-add-new\", function(event) {\n event.preventDefault();\n $el.find(\".new-value\").removeClass('hidden');\n return goToBottomList(true);\n });\n $el.on(\"click\", \".add-new\", debounce(2000, function(event) {\n var target;\n event.preventDefault();\n target = $el.find(\".new-value\");\n return saveNewValue(target);\n }));\n $el.on(\"click\", \".delete-new\", function(event) {\n event.preventDefault();\n $el.find(\".new-value\").addClass(\"hidden\");\n return initializeNewValue();\n });\n $el.on(\"click\", \".edit-value\", function(event) {\n var editionRow, row, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n row = target.parents(\".row.table-main\");\n row.addClass(\"hidden\");\n editionRow = row.siblings(\".edition\");\n editionRow.removeClass('hidden');\n return editionRow.find('input:visible').first().focus().select();\n });\n $el.on(\"keyup\", \".new-value input\", function(event) {\n var target;\n if (event.keyCode === 13) {\n target = $el.find(\".new-value\");\n return saveNewValue(target);\n } else if (event.keyCode === 27) {\n $el.find(\".new-value\").addClass(\"hidden\");\n return initializeNewValue();\n }\n });\n $el.on(\"click\", \".save\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n return saveValue(target);\n });\n $el.on(\"click\", \".cancel\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n return cancel(target);\n });\n return $el.on(\"click\", \".delete-value\", function(event) {\n var choices, formEl, subtitle, target, text, title, value;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.parents(\"form\");\n value = formEl.scope().value;\n choices = {};\n _.each($scope.values, function(option) {\n if (value.id !== option.id) {\n return choices[option.id] = option.name;\n }\n });\n subtitle = value.name;\n if (_.keys(choices).length === 0) {\n return $confirm.error($translate.instant(\"ADMIN.PROJECT_VALUES.ERROR_DELETE_ALL\"));\n }\n title = $translate.instant(\"ADMIN.COMMON.TITLE_ACTION_DELETE_VALUE\");\n text = $translate.instant(\"ADMIN.PROJECT_VALUES.REPLACEMENT\");\n return $confirm.askChoice(title, subtitle, choices, text).then(function(response) {\n var onError, onSucces;\n onSucces = function() {\n return $ctrl.loadValues()[\"finally\"](function() {\n $rootscope.$broadcast(\"admin:project-values:updated\");\n return response.finish();\n });\n };\n onError = function() {\n return $confirm.notify(\"error\");\n };\n return $repo.remove(value, {\n \"moveTo\": response.selected\n }).then(onSucces, onError);\n });\n });\n };\n link = function($scope, $el, $attrs) {\n linkDragAndDrop($scope, $el, $attrs);\n linkValue($scope, $el, $attrs);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectValues\", [\"$log\", \"$tgRepo\", \"$tgConfirm\", \"$tgLocation\", \"animationFrame\", \"$translate\", \"$rootScope\", \"tgProjectService\", ProjectValuesDirective]);\n\n ProjectDueDatesValues = function($log, $repo, $confirm, $location, animationFrame, $translate, $rootscope, projectService) {\n var linkDueDateStatusValue, parentDirective;\n parentDirective = ProjectValuesDirective($log, $repo, $confirm, $location, animationFrame, $translate, $rootscope, projectService);\n linkDueDateStatusValue = function($scope, $el, $attrs, $ctrl) {\n var _setDaysToDue, _valueFromEventTarget, initializeNewValue, saveNewValue, valueType;\n $ctrl = $el.controller();\n valueType = $attrs.type;\n initializeNewValue = function() {\n return $scope.newValue = {\n \"name\": \"\",\n \"days_to_due\": 0,\n \"sign\": 1\n };\n };\n initializeNewValue();\n _setDaysToDue = function(value) {\n return value.days_to_due = value.days_to_due_abs * value.sign;\n };\n _valueFromEventTarget = function(event) {\n var formEl, row, target;\n target = angular.element(event.currentTarget);\n row = target.parents(\".row.table-main\");\n formEl = target.parents(\"form\");\n if (!formEl.scope().value) {\n return formEl.scope().newValue;\n } else {\n return formEl.scope().value;\n }\n };\n saveNewValue = function(target) {\n var form, formEl, promise;\n formEl = target.parents(\"form\");\n form = formEl.checksley();\n if (!form.validate()) {\n return;\n }\n $scope.newValue.project = $scope.project.id;\n $scope.newValue.order = $scope.maxValueOrder ? $scope.maxValueOrder + 1 : 1;\n promise = $repo.create(valueType, $scope.newValue);\n promise.then(function(data) {\n target.addClass(\"hidden\");\n data.sign = $scope.newValue.sign;\n data.days_to_due_abs = $scope.newValue.days_to_due_abs;\n $scope.values.push(data);\n $rootscope.$broadcast(\"admin:project-values:updated\");\n return initializeNewValue();\n });\n return promise.then(null, function(data) {\n return form.setErrors(data);\n });\n };\n $el.on(\"input\", \".days-to-due-abs\", function(event) {\n var value;\n event.preventDefault();\n value = _valueFromEventTarget(event);\n return $scope.$apply(function() {\n return _setDaysToDue(value);\n });\n });\n $el.on(\"click\", \".days-to-due-sign\", function(event) {\n var currentValue, value;\n event.preventDefault();\n currentValue = Number(angular.element(event.currentTarget).parent().find('input').val());\n value = _valueFromEventTarget(event);\n if (currentValue === value.sign) {\n return;\n }\n return $scope.$apply(function() {\n value.sign = value.sign * -1;\n return _setDaysToDue(value);\n });\n });\n $el.on(\"click\", \".add-new-due-date\", debounce(2000, function(event) {\n var target;\n event.preventDefault();\n target = $el.find(\".new-value\");\n return saveNewValue(target);\n }));\n return $el.on(\"click\", \".delete-due-date\", function(event) {\n var formEl, subtitle, target, title, value;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.parents(\"form\");\n value = formEl.scope().value;\n title = $translate.instant(\"LIGHTBOX.ADMIN_DUE_DATES.TITLE_ACTION_DELETE_DUE_DATE\");\n subtitle = $translate.instant(\"LIGHTBOX.ADMIN_DUE_DATES.SUBTITLE_ACTION_DELETE_DUE_DATE\", {\n due_date_status_name: value.name\n });\n return $confirm.askDelete(title, subtitle).then(function(response) {\n var onError, onSucces;\n onSucces = function() {\n return $ctrl.loadValues()[\"finally\"](function() {\n $rootscope.$broadcast(\"admin:project-values:updated\");\n return response.finish();\n });\n };\n onError = function() {\n return $confirm.notify(\"error\");\n };\n return $repo.remove(value).then(onSucces, onError);\n });\n });\n };\n return {\n link: function($scope, $el, $attrs) {\n parentDirective.link($scope, $el, $attrs);\n return linkDueDateStatusValue($scope, $el, $attrs);\n }\n };\n };\n\n module.directive(\"tgProjectDueDatesValues\", [\"$log\", \"$tgRepo\", \"$tgConfirm\", \"$tgLocation\", \"animationFrame\", \"$translate\", \"$rootScope\", \"tgProjectService\", ProjectDueDatesValues]);\n\n TEXT_TYPE = \"text\";\n\n MULTILINE_TYPE = \"multiline\";\n\n RICHTEXT_TYPE = \"richtext\";\n\n DATE_TYPE = \"date\";\n\n URL_TYPE = \"url\";\n\n DROPDOWN_TYPE = \"dropdown\";\n\n CHECKBOX_TYPE = \"checkbox\";\n\n NUMBER_TYPE = \"number\";\n\n TYPE_CHOICES = [\n {\n key: TEXT_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_TEXT\"\n }, {\n key: MULTILINE_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_MULTI\"\n }, {\n key: RICHTEXT_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_RICHTEXT\"\n }, {\n key: DATE_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_DATE\"\n }, {\n key: URL_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_URL\"\n }, {\n key: DROPDOWN_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_DROPDOWN\"\n }, {\n key: CHECKBOX_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_CHECKBOX\"\n }, {\n key: NUMBER_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_NUMBER\"\n }\n ];\n\n ProjectCustomAttributesController = (function(superClass) {\n extend(ProjectCustomAttributesController, superClass);\n\n ProjectCustomAttributesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"tgAppMetaService\", \"$translate\", \"tgProjectService\"];\n\n function ProjectCustomAttributesController(scope, rootscope, repo, rs, params, q, location, navUrls, appMetaService, translate, projectService1) {\n var description, sectionName, title;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.navUrls = navUrls;\n this.appMetaService = appMetaService;\n this.translate = translate;\n this.projectService = projectService1;\n this.moveCustomAttributes = bind(this.moveCustomAttributes, this);\n this.deleteCustomAttribute = bind(this.deleteCustomAttribute, this);\n this.saveCustomAttribute = bind(this.saveCustomAttribute, this);\n this.createCustomAttribute = bind(this.createCustomAttribute, this);\n this.loadCustomAttributes = bind(this.loadCustomAttributes, this);\n this._onCustomAttributesModified = bind(this._onCustomAttributesModified, this);\n this.scope.TYPE_CHOICES = TYPE_CHOICES;\n this.scope.project = this.projectService.project.toJS();\n this.scope.projectId = this.scope.project.id;\n sectionName = this.translate.instant(this.scope.sectionName);\n title = this.translate.instant(\"ADMIN.CUSTOM_ATTRIBUTES.PAGE_TITLE\", {\n \"sectionName\": sectionName,\n \"projectName\": this.scope.project.name\n });\n description = this.scope.project.description;\n this.appMetaService.setAll(title, description);\n this.scope.init = (function(_this) {\n return function(type) {\n _this.scope.type = type;\n return _this.loadCustomAttributes();\n };\n })(this);\n }\n\n ProjectCustomAttributesController.prototype._parseAttributesExtra = function() {\n return this.scope.customAttributes = _.map(this.scope.customAttributes, (function(_this) {\n return function(x) {\n return _this._parseAttributeExtra(x);\n };\n })(this));\n };\n\n ProjectCustomAttributesController.prototype._parseAttributeExtra = function(attr) {\n if (attr.type === 'dropdown' && !attr.extra) {\n attr.extra = [''];\n }\n return attr;\n };\n\n ProjectCustomAttributesController.prototype._onCustomAttributesModified = function() {\n return this.rootscope.$broadcast(\"admin:project-custom-attributes:updated\");\n };\n\n ProjectCustomAttributesController.prototype.loadCustomAttributes = function() {\n return this.rs.customAttributes[this.scope.type].list(this.scope.projectId).then((function(_this) {\n return function(customAttributes) {\n var ref;\n _this.scope.customAttributes = customAttributes;\n _this.scope.maxOrder = (ref = _.maxBy(customAttributes, \"order\")) != null ? ref.order : void 0;\n _this._parseAttributesExtra();\n return customAttributes;\n };\n })(this));\n };\n\n ProjectCustomAttributesController.prototype.createCustomAttribute = function(attrValues) {\n return this.repo.create(\"custom-attributes/\" + this.scope.type, attrValues).then((function(_this) {\n return function() {\n return _this._onCustomAttributesModified();\n };\n })(this));\n };\n\n ProjectCustomAttributesController.prototype.saveCustomAttribute = function(attrModel) {\n return this.repo.save(attrModel).then((function(_this) {\n return function() {\n return _this._onCustomAttributesModified();\n };\n })(this));\n };\n\n ProjectCustomAttributesController.prototype.deleteCustomAttribute = function(attrModel) {\n return this.repo.remove(attrModel).then((function(_this) {\n return function() {\n return _this._onCustomAttributesModified();\n };\n })(this));\n };\n\n ProjectCustomAttributesController.prototype.moveCustomAttributes = function(attrModel, newIndex) {\n var customAttributes, r;\n customAttributes = this.scope.customAttributes;\n r = customAttributes.indexOf(attrModel);\n customAttributes.splice(r, 1);\n customAttributes.splice(newIndex, 0, attrModel);\n _.each(customAttributes, function(val, idx) {\n return val.order = idx;\n });\n return this.repo.saveAll(customAttributes).then((function(_this) {\n return function() {\n return _this._onCustomAttributesModified();\n };\n })(this));\n };\n\n return ProjectCustomAttributesController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"ProjectCustomAttributesController\", ProjectCustomAttributesController);\n\n ProjectCustomAttributesDirective = function($log, $confirm, animationFrame, $translate) {\n var link;\n link = function($scope, $el, $attrs) {\n var $ctrl, _manageExtraFormEvent, _manageFormEvent, addExtraOption, cancelCreate, cancelUpdate, create, deleteCustomAttribute, hideAddButton, hideCancelButton, hideCreateForm, hideEditForm, hideExtra, initAttrType, initDraggable, removeExtraOption, resetNewAttr, revertChangesInCustomAttribute, showAddButton, showCancelButton, showCreateForm, showEditForm, showExtra, update;\n $ctrl = $el.controller();\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n $scope.isExtraVisible = {};\n _manageFormEvent = function(event, callback) {\n var formEl;\n event.preventDefault();\n formEl = angular.element(event.currentTarget).closest(\"form\");\n return callback(formEl);\n };\n initDraggable = function() {\n var drake, el, i, len, results, sortableChildren, sortableEl;\n sortableEl = $el.find(\".js-sortable\");\n drake = dragula([sortableEl[0]], {\n direction: 'vertical',\n copySortSource: false,\n copy: false,\n mirrorContainer: sortableEl[0],\n moves: function(item, source, handle) {\n var childItem;\n childItem = $(handle).closest('.js-child-sortable');\n if (childItem[0]) {\n return false;\n }\n return $(item).is('div[tg-bind-scope]');\n }\n });\n drake.on('dragend', function(item) {\n var itemAttr, itemEl, itemIndex;\n itemEl = $(item);\n itemAttr = itemEl.scope().attr;\n itemIndex = itemEl.index();\n return $ctrl.moveCustomAttributes(itemAttr, itemIndex);\n });\n sortableChildren = $el.find(\".js-child-sortable\");\n results = [];\n for (i = 0, len = sortableChildren.length; i < len; i++) {\n el = sortableChildren[i];\n drake[el] = dragula([el], {\n direction: 'vertical',\n copySortSource: false,\n copy: false,\n mirrorContainer: el,\n moves: function(item) {\n return $(item).is('div[tg-bind-scope]');\n }\n });\n results.push(drake[el].on('dragend', function(item) {\n var attrExtra, itemEl, sourceIndex, targetIndex, value;\n itemEl = $(item);\n attrExtra = itemEl.scope().attr.extra;\n sourceIndex = itemEl.scope().$index;\n targetIndex = itemEl.index();\n value = attrExtra[sourceIndex];\n attrExtra.splice(sourceIndex, 1);\n attrExtra.splice(targetIndex, 0, value);\n itemEl.scope().attr.setAttr('extra', attrExtra);\n return $ctrl.saveCustomAttribute(itemEl.scope().attr).then(function() {\n return $confirm.notify(\"success\");\n });\n }));\n }\n return results;\n };\n showCreateForm = function() {\n $el.find(\".js-new-custom-field\").removeClass(\"hidden\");\n return $el.find(\".js-new-custom-field input:visible\").first().focus();\n };\n hideCreateForm = function() {\n return $el.find(\".js-new-custom-field\").addClass(\"hidden\");\n };\n showAddButton = function() {\n return $el.find(\".js-add-custom-field-button\").removeClass(\"hidden\");\n };\n hideAddButton = function() {\n return $el.find(\".js-add-custom-field-button\").addClass(\"hidden\");\n };\n showCancelButton = function() {\n return $el.find(\".js-cancel-new-custom-field-button\").removeClass(\"hidden\");\n };\n hideCancelButton = function() {\n return $el.find(\".js-cancel-new-custom-field-button\").addClass(\"hidden\");\n };\n resetNewAttr = function() {\n return $scope.newAttr = {};\n };\n create = function(formEl) {\n var attr, form, onError, onSucces;\n form = formEl.checksley();\n if (!form.validate()) {\n return;\n }\n onSucces = function() {\n $ctrl.loadCustomAttributes();\n hideCreateForm();\n resetNewAttr();\n return $confirm.notify(\"success\");\n };\n onError = function(data) {\n return form.setErrors(data);\n };\n attr = $scope.newAttr;\n attr.project = $scope.projectId;\n attr.order = $scope.maxOrder ? $scope.maxOrder + 1 : 1;\n return $ctrl.createCustomAttribute(attr).then(onSucces, onError);\n };\n cancelCreate = function() {\n hideCreateForm();\n return resetNewAttr();\n };\n initAttrType = function(formEl) {\n var attr, ref;\n attr = formEl.scope().newAttr ? formEl.scope().newAttr : formEl.scope().attr;\n if (attr.type !== \"dropdown\") {\n return;\n }\n if ((ref = attr.extra) != null ? ref.length : void 0) {\n return;\n }\n attr.extra = [''];\n if (attr.id) {\n return showEditForm(formEl);\n } else {\n showExtra(-1);\n return formEl.scope().$apply();\n }\n };\n $scope.$watch(\"customAttributes\", function(customAttributes) {\n if (!customAttributes) {\n return;\n }\n if (customAttributes.length === 0) {\n hideCancelButton();\n hideAddButton();\n return showCreateForm();\n } else {\n hideCreateForm();\n showAddButton();\n showCancelButton();\n return initDraggable();\n }\n });\n $el.on(\"change\", \".custom-field-type select\", function(event) {\n return _manageFormEvent(event, initAttrType);\n });\n $el.on(\"click\", \".js-add-custom-field-button\", function(event) {\n return _manageFormEvent(event, showCreateForm);\n });\n $el.on(\"click\", \".js-create-custom-field-button\", debounce(2000, function(event) {\n return _manageFormEvent(event, create);\n }));\n $el.on(\"click\", \".js-cancel-new-custom-field-button\", function(event) {\n event.preventDefault();\n return cancelCreate();\n });\n $el.on(\"keyup\", \".js-new-custom-field input\", function(event) {\n if (event.keyCode === 13) {\n return _manageFormEvent(event, create);\n } else if (event.keyCode === 27) {\n return cancelCreate();\n }\n });\n showEditForm = function(formEl) {\n formEl.find(\".js-view-custom-field\").addClass(\"hidden\");\n formEl.find(\".js-edit-custom-field\").removeClass(\"hidden\");\n formEl.find(\".js-edit-custom-field input:visible\").first().focus().select();\n formEl.find(\".js-view-custom-field-extra\").addClass(\"hidden\");\n formEl.find(\".js-edit-custom-field-extra\").removeClass(\"hidden\");\n formEl.find(\".custom-extra-actions\").removeClass(\"hidden\");\n showExtra(formEl.scope().attr.id);\n return $scope.$apply();\n };\n update = function(formEl) {\n var attr, form, onError, onSucces;\n form = formEl.checksley();\n if (!form.validate()) {\n return;\n }\n onSucces = function() {\n $ctrl.loadCustomAttributes();\n hideEditForm(formEl);\n return $confirm.notify(\"success\");\n };\n onError = function(data) {\n return form.setErrors(data);\n };\n attr = formEl.scope().attr;\n attr.setAttr('extra', attr.extra);\n return $ctrl.saveCustomAttribute(attr).then(onSucces, onError);\n };\n cancelUpdate = function(formEl) {\n hideEditForm(formEl);\n return revertChangesInCustomAttribute(formEl);\n };\n hideEditForm = function(formEl) {\n formEl.find(\".js-edit-custom-field\").addClass(\"hidden\");\n formEl.find(\".js-view-custom-field\").removeClass(\"hidden\");\n formEl.find(\".js-edit-custom-field-extra\").addClass(\"hidden\");\n formEl.find(\".js-view-custom-field-extra\").removeClass(\"hidden\");\n return formEl.find(\".custom-extra-actions\").addClass(\"hidden\");\n };\n revertChangesInCustomAttribute = function(formEl) {\n return $scope.$apply(function() {\n return formEl.scope().attr.revert();\n });\n };\n $el.on(\"click\", \".js-edit-custom-field-button\", function(event) {\n return _manageFormEvent(event, showEditForm);\n });\n $el.on(\"click\", \".js-update-custom-field-button\", debounce(1000, function(event) {\n return _manageFormEvent(event, update);\n }));\n $el.on(\"click\", \".js-cancel-edit-custom-field-button\", function(event) {\n return _manageFormEvent(event, cancelUpdate);\n });\n $el.on(\"keyup\", \".js-edit-custom-field input\", function(event) {\n if (event.keyCode === 13) {\n return _manageFormEvent(event, update);\n } else if (event.keyCode === 27) {\n return _manageFormEvent(event, cancelUpdate);\n }\n });\n deleteCustomAttribute = function(formEl) {\n var attr, message, text, title;\n attr = formEl.scope().attr;\n message = attr.name;\n title = $translate.instant(\"COMMON.CUSTOM_ATTRIBUTES.DELETE\");\n text = $translate.instant(\"COMMON.CUSTOM_ATTRIBUTES.CONFIRM_DELETE\");\n return $confirm.askDelete(title, text, message).then(function(response) {\n var onError, onSucces;\n onSucces = function() {\n return $ctrl.loadCustomAttributes()[\"finally\"](function() {\n return response.finish();\n });\n };\n onError = function() {\n return $confirm.notify(\"error\", null, \"We have not been able to delete '\" + message + \"'.\");\n };\n return $ctrl.deleteCustomAttribute(attr).then(onSucces, onError);\n });\n };\n $el.on(\"click\", \".js-delete-custom-field-button\", debounce(2000, function(event) {\n return _manageFormEvent(event, deleteCustomAttribute);\n }));\n $scope.toggleExtraVisible = function(index) {\n if (!$scope.isExtraVisible[index]) {\n return showExtra(index);\n } else {\n return hideExtra(index);\n }\n };\n showExtra = function(index) {\n return $scope.isExtraVisible[index] = true;\n };\n hideExtra = function(index) {\n return $scope.isExtraVisible[index] = false;\n };\n _manageExtraFormEvent = function(event, callback) {\n var formEl, formExtraEl;\n event.preventDefault();\n formEl = angular.element(event.currentTarget).closest(\"form\");\n formExtraEl = angular.element(event.currentTarget).closest(\".js-form\");\n return callback(formEl, formExtraEl);\n };\n addExtraOption = function(formEl, formExtraEl) {\n var attrExtra, formScope, ref;\n formScope = formEl.scope();\n attrExtra = ((ref = formScope.newAttr) != null ? ref.extra : void 0) ? formScope.newAttr.extra : formScope.attr.extra;\n attrExtra.push(\"\");\n formScope.$apply();\n formEl.find(\".js-edit-custom-field-extra\").last().removeClass(\"hidden\");\n formEl.find(\".js-view-custom-field-extra\").last().addClass(\"hidden\");\n return formEl.find(\".js-edit-custom-field-extra input\").last().focus();\n };\n removeExtraOption = function(formEl, formExtraEl) {\n var attrExtra;\n attrExtra = formEl.scope().attr.extra;\n attrExtra.splice(formExtraEl.scope().$index, 1);\n return formExtraEl.scope().$apply();\n };\n $el.on(\"keyup\", \".js-edit-custom-field-extra input\", function(event) {\n if (event.keyCode === 13) {\n return _manageFormEvent(event, update);\n } else if (event.keyCode === 27) {\n return _manageFormEvent(event, cancelUpdate);\n }\n });\n $el.on(\"keyup\", \".js-new-custom-field-extra input\", function(event) {\n if (event.keyCode === 13) {\n return _manageFormEvent(event, create);\n } else if (event.keyCode === 27) {\n return cancelCreate();\n }\n });\n $el.on(\"click\", \".js-add-option-custom-field-extra-button\", debounce(500, function(event) {\n return _manageExtraFormEvent(event, addExtraOption);\n }));\n return $el.on(\"click\", \".js-delete-custom-field-extra-button\", debounce(500, function(event) {\n return _manageExtraFormEvent(event, removeExtraOption);\n }));\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectCustomAttributes\", [\"$log\", \"$tgConfirm\", \"animationFrame\", \"$translate\", ProjectCustomAttributesDirective]);\n\n ProjectTagsController = (function(superClass) {\n extend(ProjectTagsController, superClass);\n\n ProjectTagsController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$tgModel\", \"tgProjectService\"];\n\n function ProjectTagsController(scope, rootscope, repo, confirm, rs, model, projectService1) {\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.model = model;\n this.projectService = projectService1;\n this.mixingClass = bind(this.mixingClass, this);\n this.cancelMixingTags = bind(this.cancelMixingTags, this);\n this.confirmMixingTags = bind(this.confirmMixingTags, this);\n this.toggleMixingFromTags = bind(this.toggleMixingFromTags, this);\n this.startMixingTags = bind(this.startMixingTags, this);\n this.deleteTag = bind(this.deleteTag, this);\n this.editTag = bind(this.editTag, this);\n this.createTag = bind(this.createTag, this);\n this.filterAndSortTags = bind(this.filterAndSortTags, this);\n this.loadTags = bind(this.loadTags, this);\n this.loading = true;\n this.loadTags();\n }\n\n ProjectTagsController.prototype.loadTags = function() {\n var project;\n project = this.projectService.project.toJS();\n return this.rs.projects.tagsColors(project.id).then((function(_this) {\n return function(tags) {\n _this.scope.projectTagsAll = _.map(tags.getAttrs(), function(color, name) {\n return _this.model.make_model('tag', {\n name: name,\n color: color\n });\n });\n _this.filterAndSortTags();\n return _this.loading = false;\n };\n })(this));\n };\n\n ProjectTagsController.prototype.filterAndSortTags = function() {\n this.scope.projectTags = _.sortBy(this.scope.projectTagsAll, function(it) {\n return it.name.toLowerCase();\n });\n return this.scope.projectTags = _.filter(this.scope.projectTags, (function(_this) {\n return function(tag) {\n return tag.name.indexOf(_this.scope.tagsFilter.name) !== -1;\n };\n })(this));\n };\n\n ProjectTagsController.prototype.createTag = function(tag, color) {\n return this.rs.projects.createTag(this.scope.projectId, tag, color);\n };\n\n ProjectTagsController.prototype.editTag = function(from_tag, to_tag, color) {\n if (from_tag === to_tag) {\n to_tag = null;\n }\n return this.rs.projects.editTag(this.scope.projectId, from_tag, to_tag, color);\n };\n\n ProjectTagsController.prototype.deleteTag = function(tag) {\n this.scope.loadingDelete = true;\n return this.rs.projects.deleteTag(this.scope.projectId, tag)[\"finally\"]((function(_this) {\n return function() {\n return _this.scope.loadingDelete = false;\n };\n })(this));\n };\n\n ProjectTagsController.prototype.startMixingTags = function(tag) {\n return this.scope.mixingTags.toTag = tag.name;\n };\n\n ProjectTagsController.prototype.toggleMixingFromTags = function(tag) {\n var index;\n if (tag.name !== this.scope.mixingTags.toTag) {\n index = this.scope.mixingTags.fromTags.indexOf(tag.name);\n if (index === -1) {\n return this.scope.mixingTags.fromTags.push(tag.name);\n } else {\n return this.scope.mixingTags.fromTags.splice(index, 1);\n }\n }\n };\n\n ProjectTagsController.prototype.confirmMixingTags = function() {\n var fromTags, toTag;\n toTag = this.scope.mixingTags.toTag;\n fromTags = this.scope.mixingTags.fromTags;\n this.scope.loadingMixing = true;\n return this.rs.projects.mixTags(this.scope.projectId, toTag, fromTags).then((function(_this) {\n return function() {\n _this.cancelMixingTags();\n return _this.loadTags();\n };\n })(this))[\"finally\"]((function(_this) {\n return function() {\n return _this.scope.loadingMixing = false;\n };\n })(this));\n };\n\n ProjectTagsController.prototype.cancelMixingTags = function() {\n this.scope.mixingTags.toTag = null;\n return this.scope.mixingTags.fromTags = [];\n };\n\n ProjectTagsController.prototype.mixingClass = function(tag) {\n if (this.scope.mixingTags.toTag !== null) {\n if (tag.name === this.scope.mixingTags.toTag) {\n return \"mixing-tags-to\";\n } else if (this.scope.mixingTags.fromTags.indexOf(tag.name) !== -1) {\n return \"mixing-tags-from\";\n }\n }\n };\n\n return ProjectTagsController;\n\n })(taiga.Controller);\n\n module.controller(\"ProjectTagsController\", ProjectTagsController);\n\n ProjectTagsDirective = function($log, $repo, $confirm, $location, animationFrame, $translate, $rootscope) {\n var link;\n link = function($scope, $el, $attrs) {\n var $ctrl, $window, cancel, goToBottomList, initializeMixingTags, initializeNewValue, initializeTagsFilter, initializeTextTranslations, objName, saveNewValue, saveValue, valueType;\n $window = $(window);\n $ctrl = $el.controller();\n valueType = $attrs.type;\n objName = $attrs.objname;\n initializeNewValue = function() {\n return $scope.newValue = {\n \"tag\": \"\",\n \"color\": \"\"\n };\n };\n initializeTagsFilter = function() {\n return $scope.tagsFilter = {\n \"name\": \"\"\n };\n };\n initializeMixingTags = function() {\n return $scope.mixingTags = {\n \"toTag\": null,\n \"fromTags\": []\n };\n };\n initializeTextTranslations = function() {\n return $scope.addNewElementText = $translate.instant(\"ADMIN.PROJECT_VALUES_TAGS.ACTION_ADD\");\n };\n initializeNewValue();\n initializeTagsFilter();\n initializeMixingTags();\n initializeTextTranslations();\n $rootscope.$on(\"$translateChangeEnd\", function() {\n return $scope.$evalAsync(initializeTextTranslations);\n });\n goToBottomList = (function(_this) {\n return function(focus) {\n var table;\n if (focus == null) {\n focus = false;\n }\n table = $el.find(\".table-main\");\n $(document.body).scrollTop(table.offset().top + table.height());\n if (focus) {\n return $el.find(\".new-value input:visible\").first().focus();\n }\n };\n })(this);\n saveValue = function(target) {\n var form, formEl, originalTag, promise, tag;\n formEl = target.parents(\"form\");\n form = formEl.checksley();\n if (!form.validate()) {\n return;\n }\n tag = formEl.scope().tag;\n originalTag = tag.clone();\n originalTag.revert();\n $scope.loadingEdit = true;\n promise = $ctrl.editTag(originalTag.name, tag.name, tag.color);\n promise.then(function() {\n return $ctrl.loadTags().then(function() {\n var row;\n row = target.parents(\".row.table-main\");\n row.addClass(\"hidden\");\n $scope.loadingEdit = false;\n $rootscope.$broadcast('tags:updated');\n return row.siblings(\".visualization\").removeClass('hidden');\n });\n });\n return promise.then(null, function(response) {\n $scope.loadingEdit = false;\n return form.setErrors(response.data);\n });\n };\n saveNewValue = function(target) {\n var form, formEl, promise;\n formEl = target.parents(\"form\");\n formEl = target;\n form = formEl.checksley();\n if (!form.validate()) {\n return;\n }\n $scope.loadingCreate = true;\n promise = $ctrl.createTag($scope.newValue.tag, $scope.newValue.color);\n promise.then(function(data) {\n return $ctrl.loadTags().then(function() {\n $scope.loadingCreate = false;\n target.addClass(\"hidden\");\n $rootscope.$broadcast('tags:updated');\n return initializeNewValue();\n });\n });\n return promise.then(null, function(response) {\n $scope.loadingCreate = false;\n return form.setErrors(response.data);\n });\n };\n cancel = function(target) {\n var formEl, row, tag;\n row = target.parents(\".row.table-main\");\n formEl = target.parents(\"form\");\n tag = formEl.scope().tag;\n return $scope.$apply(function() {\n row.addClass(\"hidden\");\n tag.revert();\n return row.siblings(\".visualization\").removeClass('hidden');\n });\n };\n $scope.$watch(\"tagsFilter.name\", function(tagsFilter) {\n return $ctrl.filterAndSortTags();\n });\n $window.on(\"keyup\", function(event) {\n if (event.keyCode === 27) {\n return $scope.$apply(function() {\n return initializeMixingTags();\n });\n }\n });\n $el.on(\"click\", \".show-add-new\", function(event) {\n event.preventDefault();\n return $el.find(\".new-value\").removeClass('hidden');\n });\n $el.on(\"click\", \".add-new\", debounce(2000, function(event) {\n var target;\n event.preventDefault();\n target = $el.find(\".new-value\");\n return saveNewValue(target);\n }));\n $el.on(\"click\", \".delete-new\", function(event) {\n event.preventDefault();\n $el.find(\".new-value\").addClass(\"hidden\");\n return initializeNewValue();\n });\n $el.on(\"click\", \".mix-tags\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n return $scope.$apply(function() {\n return $ctrl.startMixingTags(target.parents('form').scope().tag);\n });\n });\n $el.on(\"click\", \".mixing-row\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n return $scope.$apply(function() {\n return $ctrl.toggleMixingFromTags(target.parents('form').scope().tag);\n });\n });\n $el.on(\"click\", \".mixing-confirm\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n return $scope.$apply(function() {\n return $ctrl.confirmMixingTags();\n });\n });\n $el.on(\"click\", \".mixing-cancel\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n return $scope.$apply(function() {\n return $ctrl.cancelMixingTags();\n });\n });\n $el.on(\"click\", \".edit-value\", function(event) {\n var editionRow, row, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n row = target.parents(\".row.table-main\");\n row.addClass(\"hidden\");\n editionRow = row.siblings(\".edition\");\n editionRow.removeClass('hidden');\n return editionRow.find('input:visible').first().focus().select();\n });\n $el.on(\"keyup\", \".new-value input\", function(event) {\n var target;\n if (event.keyCode === 13) {\n target = $el.find(\".new-value\");\n return saveNewValue(target);\n } else if (event.keyCode === 27) {\n $el.find(\".new-value\").addClass(\"hidden\");\n return initializeNewValue();\n }\n });\n $el.on(\"keyup\", \".status-name input\", function(event) {\n var target;\n target = angular.element(event.currentTarget);\n if (event.keyCode === 13) {\n return saveValue(target);\n } else if (event.keyCode === 27) {\n return cancel(target);\n }\n });\n $el.on(\"click\", \".save\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n return saveValue(target);\n });\n $el.on(\"click\", \".cancel\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n return cancel(target);\n });\n $el.on(\"click\", \".delete-tag\", function(event) {\n var formEl, tag, target, title;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n formEl = target.parents(\"form\");\n tag = formEl.scope().tag;\n title = $translate.instant(\"ADMIN.COMMON.TITLE_ACTION_DELETE_TAG\");\n return $confirm.askOnDelete(title, tag.name).then(function(response) {\n var onError, onSucces;\n onSucces = function() {\n return $ctrl.loadTags()[\"finally\"](function() {\n $rootscope.$broadcast('tags:updated');\n return response.finish();\n });\n };\n onError = function() {\n return $confirm.notify(\"error\");\n };\n return $ctrl.deleteTag(tag.name).then(onSucces, onError);\n });\n });\n return $scope.$on(\"$destroy\", function() {\n $el.off();\n return $window.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectTags\", [\"$log\", \"$tgRepo\", \"$tgConfirm\", \"$tgLocation\", \"animationFrame\", \"$translate\", \"$rootScope\", ProjectTagsDirective]);\n\n ProjectSwimlanesWipDirective = function() {\n var link;\n link = function($scope, $el, $attrs, $model) {\n $scope.wipClosed = false;\n return $scope.toggleWipVisibility = function() {\n return $scope.wipClosed = !$scope.wipClosed;\n };\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProjectSwimlanesWip\", ProjectSwimlanesWipDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var EditRoleDirective, NewRoleDirective, RolePermissionsDirective, RolesController, RolesDirective, bindMethods, bindOnce, debounce, mixOf, module, publicPermissions, taiga,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n bindMethods = this.taiga.bindMethods;\n\n module = angular.module(\"taigaAdmin\");\n\n publicPermissions = ['view_epics', 'view_milestones', 'view_us', 'view_tasks', 'view_issues', 'view_wiki_pages', 'view_wiki_links'];\n\n RolesController = (function(superClass) {\n extend(RolesController, superClass);\n\n RolesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"$tgModel\", \"tgAppMetaService\", \"$translate\", \"tgErrorHandlingService\", \"tgProjectService\"];\n\n function RolesController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, model, appMetaService, translate, errorHandlingService, projectService) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.navUrls = navUrls;\n this.model = model;\n this.appMetaService = appMetaService;\n this.translate = translate;\n this.errorHandlingService = errorHandlingService;\n this.projectService = projectService;\n this._disableComputable = bind(this._disableComputable, this);\n this._enableComputable = bind(this._enableComputable, this);\n bindMethods(this);\n this.scope.sectionName = \"ADMIN.MENU.PERMISSIONS\";\n this.scope.project = {};\n this.scope.anyComputableRole = true;\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n var description, title;\n title = _this.translate.instant(\"ADMIN.ROLES.PAGE_TITLE\", {\n projectName: _this.scope.project.name\n });\n description = _this.scope.project.description;\n return _this.appMetaService.setAll(title, description);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n RolesController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n project = this.model.make_model(\"projects\", project);\n if (!project.i_am_admin) {\n this.errorHandlingService.permissionDenied();\n }\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.$emit('project:loaded', project);\n this.scope.anyComputableRole = _.some(_.map(project.roles, function(point) {\n return point.computable;\n }));\n return project;\n };\n\n RolesController.prototype.loadRoles = function() {\n return this.rs.roles.list(this.scope.projectId).then((function(_this) {\n return function(roles) {\n var public_permission;\n roles = roles.map(function(role) {\n role.external_user = false;\n return role;\n });\n public_permission = {\n \"name\": _this.translate.instant(\"ADMIN.ROLES.EXTERNAL_USER\"),\n \"permissions\": _this.scope.project.public_permissions,\n \"external_user\": true\n };\n roles.push(public_permission);\n _this.scope.roles = roles;\n _this.scope.role = _this.scope.roles[0];\n if (!_this.scope.project.is_private) {\n publicPermissions.forEach(function(permission) {\n if (!_this.scope.role.permissions.includes(permission)) {\n return _this.scope.role.permissions.push(permission);\n }\n });\n }\n return roles;\n };\n })(this));\n };\n\n RolesController.prototype.loadInitialData = function() {\n this.loadProject();\n return this.loadRoles();\n };\n\n RolesController.prototype.forceLoadProject = function() {\n return this.rootscope.$broadcast(\"admin:project-roles:updated\");\n };\n\n RolesController.prototype.setRole = function(role) {\n this.scope.role = role;\n return this.scope.$broadcast(\"role:changed\", this.scope.role);\n };\n\n RolesController.prototype[\"delete\"] = function() {\n var choices, i, len, ref, replacement, role, subtitle, title, warning;\n choices = {};\n ref = this.scope.roles;\n for (i = 0, len = ref.length; i < len; i++) {\n role = ref[i];\n if (role.id !== this.scope.role.id) {\n choices[role.id] = role.name;\n }\n }\n if (_.keys(choices).length === 0) {\n return this.confirm.error(this.translate.instant(\"ADMIN.ROLES.ERROR_DELETE_ALL\"));\n }\n title = this.translate.instant(\"ADMIN.ROLES.TITLE_DELETE_ROLE\");\n subtitle = this.scope.role.name;\n replacement = this.translate.instant(\"ADMIN.ROLES.REPLACEMENT_ROLE\");\n warning = this.translate.instant(\"ADMIN.ROLES.WARNING_DELETE_ROLE\");\n return this.confirm.askChoice(title, subtitle, choices, replacement, warning).then((function(_this) {\n return function(response) {\n var onError, onSuccess;\n onSuccess = function() {\n _this.forceLoadProject();\n return _this.loadRoles()[\"finally\"](function() {\n return response.finish();\n });\n };\n onError = function() {\n return _this.confirm.notify('error');\n };\n return _this.repo.remove(_this.scope.role, {\n moveTo: response.selected\n }).then(onSuccess, onError);\n };\n })(this));\n };\n\n RolesController.prototype._enableComputable = function() {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this.confirm.notify(\"success\");\n return _this.forceLoadProject();\n };\n })(this);\n onError = (function(_this) {\n return function() {\n _this.confirm.notify(\"error\");\n return _this.scope.role.revert();\n };\n })(this);\n return this.repo.save(this.scope.role).then(onSuccess, onError);\n };\n\n RolesController.prototype._disableComputable = function() {\n var askOnError, askOnSuccess, subtitle, title;\n askOnSuccess = (function(_this) {\n return function(response) {\n var onError, onSuccess;\n onSuccess = function() {\n response.finish();\n _this.confirm.notify(\"success\");\n return _this.forceLoadProject();\n };\n onError = function() {\n response.finish();\n _this.confirm.notify(\"error\");\n return _this.scope.role.revert();\n };\n return _this.repo.save(_this.scope.role).then(onSuccess, onError);\n };\n })(this);\n askOnError = (function(_this) {\n return function(response) {\n return _this.scope.role.revert();\n };\n })(this);\n title = this.translate.instant(\"ADMIN.ROLES.DISABLE_COMPUTABLE_ALERT_TITLE\");\n subtitle = this.translate.instant(\"ADMIN.ROLES.DISABLE_COMPUTABLE_ALERT_SUBTITLE\", {\n roleName: this.scope.role.name\n });\n return this.confirm.ask(title, subtitle, \"\").then(askOnSuccess, askOnError);\n };\n\n RolesController.prototype.toggleComputable = debounce(2000, function() {\n if (!this.scope.role.computable) {\n return this._disableComputable();\n } else {\n return this._enableComputable();\n }\n });\n\n return RolesController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"RolesController\", RolesController);\n\n EditRoleDirective = function($repo, $confirm) {\n var link;\n link = function($scope, $el, $attrs) {\n var submit, toggleView;\n toggleView = function() {\n $el.find('.total').toggle();\n return $el.find('.edit-role').toggle();\n };\n submit = function() {\n var promise;\n $scope.role.name = $el.find(\"input\").val();\n promise = $repo.save($scope.role);\n promise.then(function() {\n return $confirm.notify(\"success\");\n });\n promise.then(null, function(data) {\n return $confirm.notify(\"error\");\n });\n return toggleView();\n };\n $el.on(\"click\", \".edit-value\", function() {\n toggleView();\n $el.find(\"input\").focus();\n return $el.find(\"input\").val($scope.role.name);\n });\n $el.on(\"click\", \"a.save\", submit);\n $el.on(\"keyup\", \"input\", function(event) {\n if (event.keyCode === 13) {\n return submit();\n } else if (event.keyCode === 27) {\n return toggleView();\n }\n });\n $scope.$on(\"role:changed\", function() {\n if ($el.find('.edit-role').is(\":visible\")) {\n return toggleView();\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgEditRole\", [\"$tgRepo\", \"$tgConfirm\", EditRoleDirective]);\n\n RolesDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var $ctrl;\n $ctrl = $el.controller();\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRoles\", RolesDirective);\n\n NewRoleDirective = function($tgrepo, $confirm) {\n var DEFAULT_PERMISSIONS, link;\n DEFAULT_PERMISSIONS = [\"view_project\", \"view_milestones\", \"view_us\", \"view_tasks\", \"view_issues\"];\n link = function($scope, $el, $attrs) {\n var $ctrl;\n $ctrl = $el.controller();\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n $el.on(\"click\", \"button.add-button\", function(event) {\n event.preventDefault();\n $el.find(\".new\").removeClass(\"hidden\");\n $el.find(\".new\").focus();\n return $el.find(\".add-button\").hide();\n });\n return $el.on(\"keyup\", \".new\", function(event) {\n var newRole, onError, onSuccess, target;\n event.preventDefault();\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n newRole = {\n project: $scope.projectId,\n name: target.val(),\n permissions: DEFAULT_PERMISSIONS,\n order: _.maxBy($scope.roles, function(r) {\n return r.order;\n }).order + 1,\n computable: false\n };\n $el.find(\".new\").addClass(\"hidden\");\n $el.find(\".new\").val('');\n onSuccess = function(role) {\n var insertPosition;\n insertPosition = $scope.roles.length - 1;\n $scope.roles.splice(insertPosition, 0, role);\n $ctrl.setRole(role);\n $el.find(\".add-button\").show();\n return $ctrl.forceLoadProject();\n };\n onError = function() {\n return $confirm.notify(\"error\");\n };\n return $tgrepo.create(\"roles\", newRole).then(onSuccess, onError);\n } else if (event.keyCode === 27) {\n target = angular.element(event.currentTarget);\n $el.find(\".new\").addClass(\"hidden\");\n $el.find(\".new\").val('');\n return $el.find(\".add-button\").show();\n }\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgNewRole\", [\"$tgRepo\", \"$tgConfirm\", NewRoleDirective]);\n\n RolePermissionsDirective = function($rootscope, $repo, $confirm, $compile) {\n var baseTemplate, categoryTemplate, link, resumeTemplate;\n resumeTemplate = _.template(\"
\\\">
\\n
\\n
<%- category.activePermissions %>/<%- category.permissions.length %>
\\n <% _.each(category.permissions, function(permission) { %>\\n
active<% } %>\\\"\\n title=\\\"{{ '<%- permission.name %>' | translate }}\\\">
\\n <% }) %>\\n
\\n\");\n categoryTemplate = _.template(\"
\\\">\\n
\\n
\\n
\\n
\\n <% _.each(category.permissions, function(permission) { %>\\n
\\\">\\n \\\">\\n
\\n disabled=\\\"disabled\\\" <% } %>\\n <% if(permission.active) { %> checked=\\\"checked\\\" <% } %>/>\\n
\\n \\n \\n
\\n
\\n <% }) %>\\n
\\n
\\n
\");\n baseTemplate = _.template(\"
\");\n link = function($scope, $el, $attrs) {\n var $ctrl, generateCategoriesFromRole, renderCategory, renderPermissions, renderResume;\n $ctrl = $el.controller();\n generateCategoriesFromRole = function(role) {\n var categories, epicPermissions, isPermissionEditable, issuePermissions, milestonePermissions, setActivePermissions, setActivePermissionsPerCategory, taskPermissions, userStoryPermissions, wikiPermissions;\n setActivePermissions = function(permissions) {\n return _.map(permissions, function(x) {\n var ref;\n return _.extend({}, x, {\n active: (ref = x[\"key\"], indexOf.call(role.permissions, ref) >= 0)\n });\n });\n };\n isPermissionEditable = function(permission, role, project) {\n if (role.external_user && !project.is_private && permission.key.indexOf(\"view_\") === 0) {\n return false;\n } else {\n return true;\n }\n };\n setActivePermissionsPerCategory = function(category) {\n return _.map(category, function(cat) {\n cat.permissions = cat.permissions.map(function(permission) {\n permission.editable = isPermissionEditable(permission, role, $scope.project);\n return permission;\n });\n return _.extend({}, cat, {\n activePermissions: _.filter(cat[\"permissions\"], \"active\").length\n });\n });\n };\n categories = [];\n epicPermissions = [\n {\n key: \"view_epics\",\n name: \"COMMON.PERMISIONS_CATEGORIES.EPICS.VIEW_EPICS\"\n }, {\n key: \"add_epic\",\n name: \"COMMON.PERMISIONS_CATEGORIES.EPICS.ADD_EPICS\"\n }, {\n key: \"modify_epic\",\n name: \"COMMON.PERMISIONS_CATEGORIES.EPICS.MODIFY_EPICS\"\n }, {\n key: \"comment_epic\",\n name: \"COMMON.PERMISIONS_CATEGORIES.EPICS.COMMENT_EPICS\"\n }, {\n key: \"delete_epic\",\n name: \"COMMON.PERMISIONS_CATEGORIES.EPICS.DELETE_EPICS\"\n }\n ];\n categories.push({\n name: \"COMMON.PERMISIONS_CATEGORIES.EPICS.NAME\",\n permissions: setActivePermissions(epicPermissions)\n });\n milestonePermissions = [\n {\n key: \"view_milestones\",\n name: \"COMMON.PERMISIONS_CATEGORIES.SPRINTS.VIEW_SPRINTS\"\n }, {\n key: \"add_milestone\",\n name: \"COMMON.PERMISIONS_CATEGORIES.SPRINTS.ADD_SPRINTS\"\n }, {\n key: \"modify_milestone\",\n name: \"COMMON.PERMISIONS_CATEGORIES.SPRINTS.MODIFY_SPRINTS\"\n }, {\n key: \"delete_milestone\",\n name: \"COMMON.PERMISIONS_CATEGORIES.SPRINTS.DELETE_SPRINTS\"\n }\n ];\n categories.push({\n name: \"COMMON.PERMISIONS_CATEGORIES.SPRINTS.NAME\",\n permissions: setActivePermissions(milestonePermissions)\n });\n userStoryPermissions = [\n {\n key: \"view_us\",\n name: \"COMMON.PERMISIONS_CATEGORIES.USER_STORIES.VIEW_USER_STORIES\"\n }, {\n key: \"add_us\",\n name: \"COMMON.PERMISIONS_CATEGORIES.USER_STORIES.ADD_USER_STORIES\"\n }, {\n key: \"modify_us\",\n name: \"COMMON.PERMISIONS_CATEGORIES.USER_STORIES.MODIFY_USER_STORIES\"\n }, {\n key: \"comment_us\",\n name: \"COMMON.PERMISIONS_CATEGORIES.USER_STORIES.COMMENT_USER_STORIES\"\n }, {\n key: \"delete_us\",\n name: \"COMMON.PERMISIONS_CATEGORIES.USER_STORIES.DELETE_USER_STORIES\"\n }\n ];\n categories.push({\n name: \"COMMON.PERMISIONS_CATEGORIES.USER_STORIES.NAME\",\n permissions: setActivePermissions(userStoryPermissions)\n });\n taskPermissions = [\n {\n key: \"view_tasks\",\n name: \"COMMON.PERMISIONS_CATEGORIES.TASKS.VIEW_TASKS\"\n }, {\n key: \"add_task\",\n name: \"COMMON.PERMISIONS_CATEGORIES.TASKS.ADD_TASKS\"\n }, {\n key: \"modify_task\",\n name: \"COMMON.PERMISIONS_CATEGORIES.TASKS.MODIFY_TASKS\"\n }, {\n key: \"comment_task\",\n name: \"COMMON.PERMISIONS_CATEGORIES.TASKS.COMMENT_TASKS\"\n }, {\n key: \"delete_task\",\n name: \"COMMON.PERMISIONS_CATEGORIES.TASKS.DELETE_TASKS\"\n }\n ];\n categories.push({\n name: \"COMMON.PERMISIONS_CATEGORIES.TASKS.NAME\",\n permissions: setActivePermissions(taskPermissions)\n });\n issuePermissions = [\n {\n key: \"view_issues\",\n name: \"COMMON.PERMISIONS_CATEGORIES.ISSUES.VIEW_ISSUES\"\n }, {\n key: \"add_issue\",\n name: \"COMMON.PERMISIONS_CATEGORIES.ISSUES.ADD_ISSUES\"\n }, {\n key: \"modify_issue\",\n name: \"COMMON.PERMISIONS_CATEGORIES.ISSUES.MODIFY_ISSUES\"\n }, {\n key: \"comment_issue\",\n name: \"COMMON.PERMISIONS_CATEGORIES.ISSUES.COMMENT_ISSUES\"\n }, {\n key: \"delete_issue\",\n name: \"COMMON.PERMISIONS_CATEGORIES.ISSUES.DELETE_ISSUES\"\n }\n ];\n categories.push({\n name: \"COMMON.PERMISIONS_CATEGORIES.ISSUES.NAME\",\n permissions: setActivePermissions(issuePermissions)\n });\n wikiPermissions = [\n {\n key: \"view_wiki_pages\",\n name: \"COMMON.PERMISIONS_CATEGORIES.WIKI.VIEW_WIKI_PAGES\"\n }, {\n key: \"add_wiki_page\",\n name: \"COMMON.PERMISIONS_CATEGORIES.WIKI.ADD_WIKI_PAGES\"\n }, {\n key: \"modify_wiki_page\",\n name: \"COMMON.PERMISIONS_CATEGORIES.WIKI.MODIFY_WIKI_PAGES\"\n }, {\n key: \"delete_wiki_page\",\n name: \"COMMON.PERMISIONS_CATEGORIES.WIKI.DELETE_WIKI_PAGES\"\n }, {\n key: \"add_wiki_link\",\n name: \"COMMON.PERMISIONS_CATEGORIES.WIKI.ADD_WIKI_LINKS\"\n }, {\n key: \"delete_wiki_link\",\n name: \"COMMON.PERMISIONS_CATEGORIES.WIKI.DELETE_WIKI_LINKS\"\n }, {\n key: \"view_wiki_links\",\n name: \"COMMON.PERMISIONS_CATEGORIES.WIKI.VIEW_WIKI_LINKS\"\n }\n ];\n categories.push({\n name: \"COMMON.PERMISIONS_CATEGORIES.WIKI.NAME\",\n permissions: setActivePermissions(wikiPermissions)\n });\n return setActivePermissionsPerCategory(categories);\n };\n renderResume = function(element, category) {\n return element.find(\".resume\").html($compile(resumeTemplate({\n category: category\n }))($scope));\n };\n renderCategory = function(category, index) {\n var html;\n html = categoryTemplate({\n category: category,\n index: index\n });\n html = angular.element(html);\n renderResume(html, category);\n return $compile(html)($scope);\n };\n renderPermissions = function() {\n var html;\n $el.off();\n html = baseTemplate();\n _.each(generateCategoriesFromRole($scope.role), function(category, index) {\n if (!$scope.project.is_private) {\n category.permissions.forEach((function(_this) {\n return function(permission) {\n if (publicPermissions.includes(permission.key)) {\n return permission.editable = false;\n }\n };\n })(this));\n }\n return html = angular.element(html).append(renderCategory(category, index));\n });\n $el.html(html);\n $el.on(\"click\", \".resume\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n target.toggleClass(\"open-drawer\");\n return target.next().toggleClass(\"open\");\n });\n return $el.on(\"change\", \".category-item input\", function(event) {\n var getActivePermissions, onError, onSuccess, target;\n getActivePermissions = function() {\n var activePermissions;\n activePermissions = _.filter($el.find(\".category-item input\"), function(t) {\n return angular.element(t).is(\":checked\");\n });\n activePermissions = _.sortBy(_.map(activePermissions, function(t) {\n var permission;\n return permission = angular.element(t).parents(\".category-item\").data(\"id\");\n }));\n if (activePermissions.length) {\n activePermissions.push(\"view_project\");\n }\n return activePermissions;\n };\n target = angular.element(event.currentTarget);\n $scope.role.permissions = getActivePermissions();\n onSuccess = function() {\n var categories, categoryId;\n categories = generateCategoriesFromRole($scope.role);\n categoryId = target.parents(\".category-config\").data(\"id\");\n renderResume(target.parents(\".category-config\"), categories[categoryId]);\n $rootscope.$broadcast(\"projects:reload\");\n $confirm.notify(\"success\");\n return $ctrl.forceLoadProject();\n };\n onError = function() {\n $confirm.notify(\"error\");\n target.prop(\"checked\", !target.prop(\"checked\"));\n return $scope.role.permissions = getActivePermissions();\n };\n if ($scope.role.external_user) {\n $scope.project.public_permissions = $scope.role.permissions;\n $scope.project.anon_permissions = $scope.role.permissions.filter(function(permission) {\n return permission.indexOf(\"view_\") === 0;\n });\n return $repo.save($scope.project).then(onSuccess, onError);\n } else {\n return $repo.save($scope.role).then(onSuccess, onError);\n }\n });\n };\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n $scope.$on(\"role:changed\", function() {\n return renderPermissions();\n });\n return bindOnce($scope, $attrs.ngModel, renderPermissions);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRolePermissions\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$compile\", RolePermissionsDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var BitbucketController, BitbucketWebhooksDirective, GithubController, GithubWebhooksDirective, GitlabController, GitlabWebhooksDirective, GogsController, GogsWebhooksDirective, NewWebhookDirective, SelectInputText, ValidOriginIpsDirective, WebhookDirective, WebhooksController, bindMethods, debounce, mixOf, module, taiga, timeout,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n bindMethods = this.taiga.bindMethods;\n\n debounce = this.taiga.debounce;\n\n timeout = this.taiga.timeout;\n\n module = angular.module(\"taigaAdmin\");\n\n WebhooksController = (function(superClass) {\n extend(WebhooksController, superClass);\n\n WebhooksController.$inject = [\"$scope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"$tgLocation\", \"$tgNavUrls\", \"tgAppMetaService\", \"$translate\", \"tgErrorHandlingService\", \"tgProjectService\"];\n\n function WebhooksController(scope, repo, rs, params, location, navUrls, appMetaService, translate, errorHandlingService, projectService) {\n var promise;\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.location = location;\n this.navUrls = navUrls;\n this.appMetaService = appMetaService;\n this.translate = translate;\n this.errorHandlingService = errorHandlingService;\n this.projectService = projectService;\n bindMethods(this);\n this.scope.sectionName = \"ADMIN.WEBHOOKS.SECTION_NAME\";\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n var description, title;\n title = _this.translate.instant(\"ADMIN.WEBHOOKS.PAGE_TITLE\", {\n projectName: _this.scope.project.name\n });\n description = _this.scope.project.description;\n return _this.appMetaService.setAll(title, description);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n this.scope.$on(\"webhooks:reload\", this.loadWebhooks);\n }\n\n WebhooksController.prototype.loadWebhooks = function() {\n return this.rs.webhooks.list(this.scope.projectId).then((function(_this) {\n return function(webhooks) {\n return _this.scope.webhooks = webhooks;\n };\n })(this));\n };\n\n WebhooksController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n if (!project.i_am_admin) {\n this.errorHandlingService.permissionDenied();\n }\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.$emit('project:loaded', project);\n return project;\n };\n\n WebhooksController.prototype.loadInitialData = function() {\n this.loadProject();\n return this.loadWebhooks();\n };\n\n return WebhooksController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"WebhooksController\", WebhooksController);\n\n WebhookDirective = function($rs, $repo, $confirm, $loading, $translate) {\n var link;\n link = function($scope, $el, $attrs) {\n var cancel, openHistory, save, showEditMode, showVisualizationMode, updateLogs, updateShowHideHistoryText, webhook;\n webhook = $scope.$eval($attrs.tgWebhook);\n updateLogs = function() {\n var prettyDate;\n prettyDate = $translate.instant(\"ADMIN.WEBHOOKS.DATE\");\n return $rs.webhooklogs.list(webhook.id).then((function(_this) {\n return function(webhooklogs) {\n var i, len, log, ref;\n for (i = 0, len = webhooklogs.length; i < len; i++) {\n log = webhooklogs[i];\n log.validStatus = (200 <= (ref = log.status) && ref < 300);\n log.prettySentHeaders = _.map(_.toPairs(log.request_headers), function(arg) {\n var header, value;\n header = arg[0], value = arg[1];\n return header + \": \" + value;\n }).join(\"\\n\");\n log.prettySentData = JSON.stringify(log.request_data);\n log.prettyDate = moment(log.created).format(prettyDate);\n }\n webhook.logs_counter = webhooklogs.length;\n webhook.logs = webhooklogs;\n return updateShowHideHistoryText();\n };\n })(this));\n };\n updateShowHideHistoryText = function() {\n var historyElement, text, textElement, title;\n textElement = $el.find(\".toggle-history\");\n historyElement = textElement.parents(\".single-webhook-wrapper\").find(\".webhooks-history\");\n if (historyElement.hasClass(\"open\")) {\n text = $translate.instant(\"ADMIN.WEBHOOKS.ACTION_HIDE_HISTORY\");\n title = $translate.instant(\"ADMIN.WEBHOOKS.ACTION_HIDE_HISTORY_TITLE\");\n } else {\n text = $translate.instant(\"ADMIN.WEBHOOKS.ACTION_SHOW_HISTORY\");\n title = $translate.instant(\"ADMIN.WEBHOOKS.ACTION_SHOW_HISTORY_TITLE\");\n }\n textElement.text(text);\n return textElement.prop(\"title\", title);\n };\n showVisualizationMode = function() {\n $el.find(\".edition-mode\").addClass(\"hidden\");\n return $el.find(\".visualization-mode\").removeClass(\"hidden\");\n };\n showEditMode = function() {\n $el.find(\".visualization-mode\").addClass(\"hidden\");\n return $el.find(\".edition-mode\").removeClass(\"hidden\");\n };\n openHistory = function() {\n return $el.find(\".webhooks-history\").addClass(\"open\");\n };\n cancel = function() {\n showVisualizationMode();\n return $scope.$apply(function() {\n return webhook.revert();\n });\n };\n save = debounce(2000, function(target) {\n var form, promise;\n form = target.parents(\"form\").checksley();\n if (!form.validate()) {\n return;\n }\n promise = $repo.save(webhook);\n promise.then((function(_this) {\n return function() {\n return showVisualizationMode();\n };\n })(this));\n return promise.then(null, function(data) {\n $confirm.notify(\"error\");\n return form.setErrors(data);\n });\n });\n $el.on(\"click\", \".test-webhook\", function() {\n openHistory();\n return $rs.webhooks.test(webhook.id).then((function(_this) {\n return function() {\n return updateLogs();\n };\n })(this));\n });\n $el.on(\"click\", \".edit-webhook\", function() {\n return showEditMode();\n });\n $el.on(\"click\", \".cancel-existing\", function() {\n return cancel();\n });\n $el.on(\"click\", \".edit-existing\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n return save(target);\n });\n $el.on(\"keyup\", \".edition-mode input\", function(event) {\n var target;\n if (event.keyCode === 13) {\n target = angular.element(event.currentTarget);\n return save(target);\n } else if (event.keyCode === 27) {\n target = angular.element(event.currentTarget);\n return cancel(target);\n }\n });\n $el.on(\"click\", \".delete-webhook\", function() {\n var message, title;\n title = $translate.instant(\"ADMIN.WEBHOOKS.DELETE\");\n message = $translate.instant(\"ADMIN.WEBHOOKS.WEBHOOK_NAME\", {\n name: webhook.name\n });\n return $confirm.askOnDelete(title, message).then((function(_this) {\n return function(askResponse) {\n var onError, onSucces;\n onSucces = function() {\n askResponse.finish();\n return $scope.$emit(\"webhooks:reload\");\n };\n onError = function() {\n askResponse.finish(false);\n return $confirm.notify(\"error\");\n };\n return $repo.remove(webhook).then(onSucces, onError);\n };\n })(this));\n });\n $el.on(\"click\", \".toggle-history\", function(event) {\n var target;\n target = angular.element(event.currentTarget);\n if ((webhook.logs == null) || webhook.logs.length === 0) {\n return updateLogs().then(function() {\n return timeout(0, function() {\n $el.find(\".webhooks-history\").toggleClass(\"open\").slideToggle();\n return updateShowHideHistoryText();\n });\n });\n } else {\n $el.find(\".webhooks-history\").toggleClass(\"open\").slideToggle();\n return $scope.$apply(function() {\n return updateShowHideHistoryText();\n });\n }\n });\n $el.on(\"click\", \".history-single\", function(event) {\n var target;\n target = angular.element(event.currentTarget);\n target.toggleClass(\"history-single-open\");\n return target.siblings(\".history-single-response\").toggleClass(\"open\");\n });\n return $el.on(\"click\", \".resend-request\", function(event) {\n var log, target;\n target = angular.element(event.currentTarget);\n log = target.data(\"log\");\n return $rs.webhooklogs.resend(log).then((function(_this) {\n return function() {\n return updateLogs();\n };\n })(this));\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgWebhook\", [\"$tgResources\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$translate\", WebhookDirective]);\n\n NewWebhookDirective = function($rs, $repo, $confirm, $loading, $analytics) {\n var link;\n link = function($scope, $el, $attrs) {\n var addWebhookDOMNode, formDOMNode, initializeNewValue, save, webhook;\n webhook = $scope.$eval($attrs.tgWebhook);\n formDOMNode = $el.find(\".new-webhook-form\");\n addWebhookDOMNode = $el.find(\".add-webhook\");\n initializeNewValue = function() {\n return $scope.newValue = {\n \"name\": \"\",\n \"url\": \"\",\n \"key\": \"\"\n };\n };\n initializeNewValue();\n $scope.$watch(\"webhooks\", function(webhooks) {\n if (webhooks != null) {\n if (webhooks.length === 0) {\n formDOMNode.removeClass(\"hidden\");\n addWebhookDOMNode.addClass(\"hidden\");\n return formDOMNode.find(\"input\")[0].focus();\n } else {\n formDOMNode.addClass(\"hidden\");\n return addWebhookDOMNode.removeClass(\"hidden\");\n }\n }\n });\n save = debounce(2000, function() {\n var form, promise;\n form = formDOMNode.checksley();\n if (!form.validate()) {\n return;\n }\n $scope.newValue.project = $scope.project.id;\n promise = $repo.create(\"webhooks\", $scope.newValue);\n promise.then((function(_this) {\n return function() {\n $analytics.trackEvent(\"webhooks\", \"create\", \"Create new webhook\", 1);\n $scope.$emit(\"webhooks:reload\");\n return initializeNewValue();\n };\n })(this));\n return promise.then(null, function(data) {\n $confirm.notify(\"error\");\n return form.setErrors(data);\n });\n });\n formDOMNode.on(\"click\", \".add-new\", function(event) {\n event.preventDefault();\n return save();\n });\n formDOMNode.on(\"keyup\", \"input\", function(event) {\n if (event.keyCode === 13) {\n return save();\n }\n });\n formDOMNode.on(\"click\", \".cancel-new\", function(event) {\n return $scope.$apply(function() {\n initializeNewValue();\n if ($scope.webhooks.length >= 1) {\n return formDOMNode.addClass(\"hidden\");\n }\n });\n });\n return addWebhookDOMNode.on(\"click\", function(event) {\n formDOMNode.removeClass(\"hidden\");\n return formDOMNode.find(\"input\")[0].focus();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgNewWebhook\", [\"$tgResources\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgAnalytics\", NewWebhookDirective]);\n\n GithubController = (function(superClass) {\n extend(GithubController, superClass);\n\n GithubController.$inject = [\"$scope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"tgAppMetaService\", \"$translate\", \"tgProjectService\"];\n\n function GithubController(scope, repo, rs, params, appMetaService, translate, projectService) {\n var promise;\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.appMetaService = appMetaService;\n this.translate = translate;\n this.projectService = projectService;\n bindMethods(this);\n this.scope.sectionName = this.translate.instant(\"ADMIN.GITHUB.SECTION_NAME\");\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n var description, title;\n title = _this.translate.instant(\"ADMIN.GITHUB.PAGE_TITLE\", {\n projectName: _this.scope.project.name\n });\n description = _this.scope.project.description;\n return _this.appMetaService.setAll(title, description);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n GithubController.prototype.loadModules = function() {\n return this.rs.modules.list(this.scope.projectId, \"github\").then((function(_this) {\n return function(github) {\n return _this.scope.github = github;\n };\n })(this));\n };\n\n GithubController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.$emit('project:loaded', project);\n return project;\n };\n\n GithubController.prototype.loadInitialData = function() {\n var promise;\n promise = this.loadProject();\n return this.loadModules();\n };\n\n return GithubController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"GithubController\", GithubController);\n\n GitlabController = (function(superClass) {\n extend(GitlabController, superClass);\n\n GitlabController.$inject = [\"$scope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"tgAppMetaService\", \"$translate\", \"tgProjectService\"];\n\n function GitlabController(scope, repo, rs, params, appMetaService, translate, projectService) {\n var promise;\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.appMetaService = appMetaService;\n this.translate = translate;\n this.projectService = projectService;\n bindMethods(this);\n this.scope.sectionName = this.translate.instant(\"ADMIN.GITLAB.SECTION_NAME\");\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n var description, title;\n title = _this.translate.instant(\"ADMIN.GITLAB.PAGE_TITLE\", {\n projectName: _this.scope.project.name\n });\n description = _this.scope.project.description;\n return _this.appMetaService.setAll(title, description);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n this.scope.$on(\"project:modules:reload\", (function(_this) {\n return function() {\n return _this.loadModules();\n };\n })(this));\n }\n\n GitlabController.prototype.loadModules = function() {\n return this.rs.modules.list(this.scope.projectId, \"gitlab\").then((function(_this) {\n return function(gitlab) {\n return _this.scope.gitlab = gitlab;\n };\n })(this));\n };\n\n GitlabController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.$emit('project:loaded', project);\n return project;\n };\n\n GitlabController.prototype.loadInitialData = function() {\n this.loadProject();\n return this.loadModules();\n };\n\n return GitlabController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"GitlabController\", GitlabController);\n\n BitbucketController = (function(superClass) {\n extend(BitbucketController, superClass);\n\n BitbucketController.$inject = [\"$scope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"tgAppMetaService\", \"$translate\", \"tgProjectService\"];\n\n function BitbucketController(scope, repo, rs, params, appMetaService, translate, projectService) {\n var promise;\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.appMetaService = appMetaService;\n this.translate = translate;\n this.projectService = projectService;\n bindMethods(this);\n this.scope.sectionName = this.translate.instant(\"ADMIN.BITBUCKET.SECTION_NAME\");\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n var description, title;\n title = _this.translate.instant(\"ADMIN.BITBUCKET.PAGE_TITLE\", {\n projectName: _this.scope.project.name\n });\n description = _this.scope.project.description;\n return _this.appMetaService.setAll(title, description);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n this.scope.$on(\"project:modules:reload\", (function(_this) {\n return function() {\n return _this.loadModules();\n };\n })(this));\n }\n\n BitbucketController.prototype.loadModules = function() {\n return this.rs.modules.list(this.scope.projectId, \"bitbucket\").then((function(_this) {\n return function(bitbucket) {\n return _this.scope.bitbucket = bitbucket;\n };\n })(this));\n };\n\n BitbucketController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.$emit('project:loaded', project);\n return project;\n };\n\n BitbucketController.prototype.loadInitialData = function() {\n this.loadProject();\n return this.loadModules();\n };\n\n return BitbucketController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n module.controller(\"BitbucketController\", BitbucketController);\n\n SelectInputText = function($translate, $confirm) {\n var link;\n link = function($scope, $el, $attrs) {\n return $el.on(\"click\", \".select-input-content\", function() {\n var source;\n source = $el.find(\"input\");\n if (!source.val()) {\n return;\n }\n source.select();\n document.execCommand('copy');\n return $confirm.notify(\"success\", $translate.instant(\"COMMON.COPIED_TO_CLIPBOARD\"));\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgSelectInputText\", [\"$translate\", \"$tgConfirm\", SelectInputText]);\n\n GithubWebhooksDirective = function($repo, $confirm, $loading, $analytics) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit, submitButton;\n form = $el.find(\"form\").checksley({\n \"onlyOneErrorElement\": true\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var currentLoading, promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n currentLoading = $loading().target(submitButton).start();\n promise = $repo.saveAttribute($scope.github, \"github\");\n promise.then(function() {\n $analytics.trackEvent(\"github-webhook\", \"created-or-changed\", \"Create or changed github webhook\", 1);\n currentLoading.finish();\n return $confirm.notify(\"success\");\n });\n return promise.then(null, function(data) {\n currentLoading.finish();\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"error\", data._error_message);\n }\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgGithubWebhooks\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgAnalytics\", GithubWebhooksDirective]);\n\n GitlabWebhooksDirective = function($repo, $confirm, $loading, $analytics) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit, submitButton;\n form = $el.find(\"form\").checksley({\n \"onlyOneErrorElement\": true\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var currentLoading, promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n currentLoading = $loading().target(submitButton).start();\n promise = $repo.saveAttribute($scope.gitlab, \"gitlab\");\n promise.then(function() {\n $analytics.trackEvent(\"gitlab-webhook\", \"created-or-changed\", \"Create or changed gitlab webhook\", 1);\n currentLoading.finish();\n $confirm.notify(\"success\");\n return $scope.$emit(\"project:modules:reload\");\n });\n return promise.then(null, function(data) {\n currentLoading.finish();\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"error\", data._error_message);\n }\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgGitlabWebhooks\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgAnalytics\", GitlabWebhooksDirective]);\n\n BitbucketWebhooksDirective = function($repo, $confirm, $loading, $analytics) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit, submitButton;\n form = $el.find(\"form\").checksley({\n \"onlyOneErrorElement\": true\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var currentLoading, promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n currentLoading = $loading().target(submitButton).start();\n promise = $repo.saveAttribute($scope.bitbucket, \"bitbucket\");\n promise.then(function() {\n $analytics.trackEvent(\"bitbucket-webhook\", \"created-or-changed\", \"Create or changed bitbucket webhook\", 1);\n currentLoading.finish();\n $confirm.notify(\"success\");\n return $scope.$emit(\"project:modules:reload\");\n });\n return promise.then(null, function(data) {\n currentLoading.finish();\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"error\", data._error_message);\n }\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n return $el.on(\"submit\", \"form\", submit);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgBitbucketWebhooks\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgAnalytics\", BitbucketWebhooksDirective]);\n\n ValidOriginIpsDirective = function() {\n var link;\n link = function($scope, $el, $attrs, $ngModel) {\n return $ngModel.$parsers.push(function(value) {\n value = $.trim(value);\n if (value === \"\") {\n return [];\n }\n return value.split(\",\");\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgValidOriginIps\", ValidOriginIpsDirective);\n\n GogsController = (function(superClass) {\n extend(GogsController, superClass);\n\n GogsController.$inject = [\"$scope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"tgAppMetaService\", \"$translate\", \"tgProjectService\"];\n\n function GogsController(scope, repo, rs, params, appMetaService, translate, projectService) {\n var promise;\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.appMetaService = appMetaService;\n this.translate = translate;\n this.projectService = projectService;\n bindMethods(this);\n this.scope.sectionName = this.translate.instant(\"ADMIN.GOGS.SECTION_NAME\");\n this.scope.project = {};\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n var description, title;\n title = _this.translate.instant(\"ADMIN.GOGS.PAGE_TITLE\", {\n projectName: _this.scope.project.name\n });\n description = _this.scope.project.description;\n return _this.appMetaService.setAll(title, description);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n GogsController.prototype.loadModules = function() {\n return this.rs.modules.list(this.scope.projectId, \"gogs\").then((function(_this) {\n return function(gogs) {\n return _this.scope.gogs = gogs;\n };\n })(this));\n };\n\n GogsController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.$emit('project:loaded', project);\n return project;\n };\n\n GogsController.prototype.loadInitialData = function() {\n this.loadProject();\n return this.loadModules();\n };\n\n return GogsController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n GogsWebhooksDirective = function($repo, $confirm, $loading, $analytics) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, submit, submitButton;\n form = $el.find(\"form\").checksley({\n \"onlyOneErrorElement\": true\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var currentLoading, promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n currentLoading = $loading().target(submitButton).start();\n promise = $repo.saveAttribute($scope.gogs, \"gogs\");\n promise.then(function() {\n $analytics.trackEvent(\"gogs-webhook\", \"create-or-change\", \"Create or change gogs webhook\", 1);\n currentLoading.finish();\n $confirm.notify(\"success\");\n return $scope.$emit(\"project:modules:reload\");\n });\n return promise.then(null, function(data) {\n currentLoading.finish();\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"error\", data._error_message);\n }\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n $el.on(\"submit\", \"form\", submit);\n return $el.on(\"click\", \".submit-button\", submit);\n };\n return {\n link: link\n };\n };\n\n module.controller(\"GogsController\", GogsController);\n\n module.directive(\"tgGogsWebhooks\", [\"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgAnalytics\", GogsWebhooksDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DeleteProjectDirective, bindOnce, debounce, module, taiga, timeout;\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n timeout = this.taiga.timeout;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaProject\");\n\n DeleteProjectDirective = function($repo, $rootscope, $auth, $location, $navUrls, $confirm, lightboxService, tgLoader, currentUserService, $analytics) {\n var link;\n link = function($scope, $el, $attrs) {\n var projectToDelete, submit;\n projectToDelete = null;\n $scope.$on(\"deletelightbox:new\", function(ctx, project) {\n lightboxService.open($el);\n return projectToDelete = project;\n });\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n submit = function() {\n var promise;\n tgLoader.start();\n lightboxService.close($el);\n promise = $repo.remove(projectToDelete);\n promise.then(function(data) {\n $analytics.trackEvent(\"projects\", \"delete\", \"Delete project\", 1);\n tgLoader.pageLoaded();\n $rootscope.$broadcast(\"projects:reload\");\n $location.path($navUrls.resolve(\"home\"));\n $confirm.notify(\"success\");\n return currentUserService.loadProjects();\n });\n return promise.then(null, function() {\n $confirm.notify(\"error\");\n return lightboxService.close($el);\n });\n };\n $el.on(\"click\", \".js-cancel\", function(event) {\n event.preventDefault();\n return lightboxService.close($el);\n });\n return $el.on(\"click\", \".js-confirm\", function(event) {\n event.preventDefault();\n return submit();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLbDeleteProject\", [\"$tgRepo\", \"$rootScope\", \"$tgAuth\", \"$tgLocation\", \"$tgNavUrls\", \"$tgConfirm\", \"lightboxService\", \"tgLoader\", \"tgCurrentUserService\", \"$tgAnalytics\", DeleteProjectDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var BindHtmlDirective, BindOnceAltDirective, BindOnceBindDirective, BindOnceHrefDirective, BindOnceHtmlDirective, BindOnceRefDirective, BindOnceSrcDirective, BindOnceTitleDirective, BindTitleDirective, bindOnce, module;\n\n bindOnce = this.taiga.bindOnce;\n\n BindOnceBindDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoBind, function(val) {\n return $el.text(val);\n });\n };\n return {\n link: link\n };\n };\n\n BindOnceHtmlDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoHtml, function(val) {\n return $el.html(val);\n });\n };\n return {\n link: link\n };\n };\n\n BindOnceRefDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoRef, function(val) {\n return $el.html(\"#\" + val + \" \");\n });\n };\n return {\n link: link\n };\n };\n\n BindOnceSrcDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoSrc, function(val) {\n return $el.attr(\"src\", val);\n });\n };\n return {\n link: link\n };\n };\n\n BindOnceHrefDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoHref, function(val) {\n return $el.attr(\"href\", val);\n });\n };\n return {\n link: link\n };\n };\n\n BindOnceAltDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoAlt, function(val) {\n return $el.attr(\"alt\", val);\n });\n };\n return {\n link: link\n };\n };\n\n BindOnceTitleDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, $attrs.tgBoTitle, function(val) {\n return $el.attr(\"title\", val);\n });\n };\n return {\n link: link\n };\n };\n\n BindTitleDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return $scope.$watch($attrs.tgTitleHtml, function(val) {\n if (val != null) {\n return $el.attr(\"title\", val);\n }\n });\n };\n return {\n link: link\n };\n };\n\n BindHtmlDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return $scope.$watch($attrs.tgBindHtml, function(val) {\n if (val != null) {\n return $el.html(val);\n }\n });\n };\n return {\n link: link\n };\n };\n\n module = angular.module(\"taigaBase\");\n\n module.directive(\"tgBoBind\", BindOnceBindDirective);\n\n module.directive(\"tgBoHtml\", BindOnceHtmlDirective);\n\n module.directive(\"tgBoRef\", BindOnceRefDirective);\n\n module.directive(\"tgBoSrc\", BindOnceSrcDirective);\n\n module.directive(\"tgBoHref\", BindOnceHrefDirective);\n\n module.directive(\"tgBoAlt\", BindOnceAltDirective);\n\n module.directive(\"tgBoTitle\", BindOnceTitleDirective);\n\n module.directive(\"tgBindTitle\", BindTitleDirective);\n\n module.directive(\"tgBindHtml\", BindHtmlDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ConfigurationService, module;\n\n ConfigurationService = (function() {\n function ConfigurationService() {\n this.config = window.taigaConfig;\n }\n\n ConfigurationService.prototype.get = function(key, defaultValue) {\n if (defaultValue == null) {\n defaultValue = null;\n }\n if (_.has(this.config, key)) {\n return this.config[key];\n }\n return defaultValue;\n };\n\n return ConfigurationService;\n\n })();\n\n module = angular.module(\"taigaBase\");\n\n module.service(\"$tgConfig\", ConfigurationService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ContribController, ContribUserSettingsController, module,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n module = angular.module(\"taigaBase\");\n\n ContribController = (function(superClass) {\n extend(ContribController, superClass);\n\n ContribController.$inject = [\"$rootScope\", \"$scope\", \"$routeParams\", \"$tgRepo\", \"$tgResources\", \"$tgConfirm\", \"tgProjectService\", \"tgErrorHandlingService\"];\n\n function ContribController(rootScope, scope, params, repo, rs, confirm, projectService, errorHandlingService) {\n this.rootScope = rootScope;\n this.scope = scope;\n this.params = params;\n this.repo = repo;\n this.rs = rs;\n this.confirm = confirm;\n this.projectService = projectService;\n this.errorHandlingService = errorHandlingService;\n this.scope.currentPlugin = _.head(_.filter(this.rootScope.adminPlugins, {\n \"slug\": this.params.plugin\n }));\n this.scope.projectSlug = this.params.pslug;\n this.loadInitialData();\n }\n\n ContribController.prototype.loadProject = function() {\n var project;\n project = this.projectService.project.toJS();\n if (!project.i_am_admin) {\n this.errorHandlingService.permissionDenied();\n }\n this.scope.projectId = project.id;\n this.scope.project = project;\n this.scope.$emit('project:loaded', project);\n this.scope.$broadcast('project:loaded', project);\n return project;\n };\n\n ContribController.prototype.loadInitialData = function() {\n return this.loadProject();\n };\n\n return ContribController;\n\n })(taiga.Controller);\n\n module.controller(\"ContribController\", ContribController);\n\n ContribUserSettingsController = (function(superClass) {\n extend(ContribUserSettingsController, superClass);\n\n ContribUserSettingsController.$inject = [\"$rootScope\", \"$scope\", \"$routeParams\"];\n\n function ContribUserSettingsController(rootScope, scope, params) {\n this.rootScope = rootScope;\n this.scope = scope;\n this.params = params;\n this.scope.currentPlugin = _.head(_.filter(this.rootScope.userSettingsPlugins, {\n \"slug\": this.params.plugin\n }));\n }\n\n return ContribUserSettingsController;\n\n })(taiga.Controller);\n\n module.controller(\"ContribUserSettingsController\", ContribUserSettingsController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var FiltersStorageService, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n FiltersStorageService = (function(superClass) {\n extend(FiltersStorageService, superClass);\n\n FiltersStorageService.$inject = [\"$tgStorage\", \"$routeParams\"];\n\n function FiltersStorageService(storage, params) {\n this.storage = storage;\n this.params = params;\n }\n\n FiltersStorageService.prototype.generateHash = function(components) {\n if (components == null) {\n components = [];\n }\n components = _.map(components, function(x) {\n return JSON.stringify(x);\n });\n return hex_sha1(components.join(\":\"));\n };\n\n return FiltersStorageService;\n\n })(taiga.Service);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var HttpService, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n HttpService = (function(superClass) {\n extend(HttpService, superClass);\n\n HttpService.$inject = [\"$http\", \"$q\", \"tgLoader\", \"$tgStorage\", \"$rootScope\", \"$cacheFactory\", \"$translate\"];\n\n function HttpService(http, q, tgLoader, storage, rootScope, cacheFactory, translate) {\n this.http = http;\n this.q = q;\n this.tgLoader = tgLoader;\n this.storage = storage;\n this.rootScope = rootScope;\n this.cacheFactory = cacheFactory;\n this.translate = translate;\n HttpService.__super__.constructor.call(this);\n this.cache = this.cacheFactory(\"httpget\");\n }\n\n HttpService.prototype.headers = function() {\n var headers, lang, token;\n headers = {};\n token = this.storage.get('token');\n if (token) {\n headers[\"Authorization\"] = \"Bearer \" + token;\n }\n lang = this.translate.preferredLanguage();\n if (lang) {\n headers[\"Accept-Language\"] = lang;\n }\n return headers;\n };\n\n HttpService.prototype.request = function(options) {\n options.headers = _.assign({}, options.headers || {}, this.headers());\n return this.http(options);\n };\n\n HttpService.prototype.get = function(url, params, options) {\n options = _.assign({\n method: \"GET\",\n url: url\n }, options);\n if (params) {\n options.params = params;\n }\n options.cache = this.cache;\n return this.request(options)[\"finally\"]((function(_this) {\n return function(data) {\n return _this.cache.removeAll();\n };\n })(this));\n };\n\n HttpService.prototype.post = function(url, data, params, options) {\n options = _.assign({\n method: \"POST\",\n url: url\n }, options);\n if (data) {\n options.data = data;\n }\n if (params) {\n options.params = params;\n }\n options.responseType = 'text';\n return this.request(options);\n };\n\n HttpService.prototype.put = function(url, data, params, options) {\n options = _.assign({\n method: \"PUT\",\n url: url\n }, options);\n if (data) {\n options.data = data;\n }\n if (params) {\n options.params = params;\n }\n return this.request(options);\n };\n\n HttpService.prototype.patch = function(url, data, params, options) {\n options = _.assign({\n method: \"PATCH\",\n url: url\n }, options);\n if (data) {\n options.data = data;\n }\n if (params) {\n options.params = params;\n }\n return this.request(options);\n };\n\n HttpService.prototype[\"delete\"] = function(url, data, params, options) {\n options = _.assign({\n method: \"DELETE\",\n url: url\n }, options);\n if (data) {\n options.data = data;\n }\n if (params) {\n options.params = params;\n }\n return this.request(options);\n };\n\n return HttpService;\n\n })(taiga.Service);\n\n module = angular.module(\"taigaBase\");\n\n module.service(\"$tgHttp\", HttpService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var LoadElementDirective, module, taiga;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaBase\");\n\n LoadElementDirective = function($parse) {\n var link;\n link = function($scope, $el, $attrs) {\n var unwatch;\n unwatch = $scope.$watch($parse($attrs.tgLoadElement), function(val) {\n var el, legacyObj;\n if (val) {\n legacyObj = $parse($attrs.tgLoadElement)($scope);\n el = $el[0];\n el.component = legacyObj.component;\n if (legacyObj.params) {\n el.params = legacyObj.params;\n }\n if (legacyObj.events) {\n return el.events = legacyObj.events;\n }\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return unwatch();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLoadElement\", ['$parse', LoadElementDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var locationFactory, module;\n\n locationFactory = function($location, $route, $rootscope) {\n $location.noreload = function(scope) {\n var lastRoute, un;\n lastRoute = $route.current;\n un = scope.$on(\"$locationChangeSuccess\", function() {\n $route.current = lastRoute;\n return un();\n });\n return $location;\n };\n $location.isInCurrentRouteParams = function(name, value) {\n var params;\n params = $location.search() || {};\n return params[name] === value;\n };\n return $location;\n };\n\n module = angular.module(\"taigaBase\");\n\n module.factory(\"$tgLocation\", [\"$location\", \"$route\", \"$rootScope\", locationFactory]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var Model, ModelService, module, provider, taiga,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n Model = (function() {\n function Model(name, data, dataTypes) {\n this._attrs = data;\n this._name = name;\n this._dataTypes = dataTypes;\n this.setAttrs(data);\n this.initialize();\n }\n\n Model.prototype.realClone = function() {\n var attrs, instance;\n attrs = _.cloneDeep(this._attrs);\n instance = new Model(this._name, attrs, this._dataTypes);\n instance._modifiedAttrs = _.cloneDeep(this._modifiedAttrs);\n instance._isModified = _.cloneDeep(this._isModified);\n return instance;\n };\n\n Model.prototype.clone = function() {\n var instance;\n instance = new Model(this._name, this._attrs, this._dataTypes);\n instance._modifiedAttrs = this._modifiedAttrs;\n instance._isModified = this._isModified;\n return instance;\n };\n\n Model.prototype.applyCasts = function() {\n var attrName, castMethod, castName, ref, results;\n ref = this._dataTypes;\n results = [];\n for (attrName in ref) {\n castName = ref[attrName];\n castMethod = service.casts[castName];\n if (!castMethod) {\n continue;\n }\n results.push(this._attrs[attrName] = castMethod(this._attrs[attrName]));\n }\n return results;\n };\n\n Model.prototype.getIdAttrName = function() {\n return \"id\";\n };\n\n Model.prototype.getName = function() {\n return this._name;\n };\n\n Model.prototype.getAttrs = function(patch) {\n if (patch == null) {\n patch = false;\n }\n if (this._attrs.version != null) {\n this._modifiedAttrs.version = this._attrs.version;\n }\n if (patch) {\n return _.extend({}, this._modifiedAttrs);\n }\n return _.extend({}, this._attrs, this._modifiedAttrs);\n };\n\n Model.prototype.setAttrs = function(attrs) {\n this._attrs = attrs;\n this._modifiedAttrs = {};\n this.applyCasts();\n return this._isModified = false;\n };\n\n Model.prototype.setAttr = function(name, value) {\n this._modifiedAttrs[name] = value;\n return this._isModified = true;\n };\n\n Model.prototype.initialize = function() {\n var getter, self, setter;\n self = this;\n getter = function(name) {\n return function() {\n if (typeof name === 'string' && name.substr(0, 2) === \"__\") {\n return self[name];\n }\n if (indexOf.call(_.keys(self._modifiedAttrs), name) < 0) {\n return self._attrs[name];\n }\n return self._modifiedAttrs[name];\n };\n };\n setter = function(name) {\n return function(value) {\n if (typeof name === 'string' && name.substr(0, 2) === \"__\") {\n self[name] = value;\n return;\n }\n if (self._attrs[name] !== value) {\n self._modifiedAttrs[name] = value;\n self._isModified = true;\n } else {\n delete self._modifiedAttrs[name];\n }\n };\n };\n return _.each(this._attrs, function(value, name) {\n var options;\n options = {\n get: getter(name),\n set: setter(name),\n enumerable: true,\n configurable: true\n };\n return Object.defineProperty(self, name, options);\n });\n };\n\n Model.prototype.serialize = function() {\n var data;\n data = {\n \"data\": _.clone(this._attrs),\n \"name\": this._name\n };\n return JSON.stringify(data);\n };\n\n Model.prototype.isModified = function() {\n return this._isModified;\n };\n\n Model.prototype.isAttributeModified = function(attribute) {\n return this._modifiedAttrs[attribute] != null;\n };\n\n Model.prototype.markSaved = function() {\n this._isModified = false;\n this._attrs = this.getAttrs();\n return this._modifiedAttrs = {};\n };\n\n Model.prototype.revert = function() {\n this._modifiedAttrs = {};\n return this._isModified = false;\n };\n\n Model.desSerialize = function(sdata) {\n var ddata, model;\n ddata = JSON.parse(sdata);\n model = new Model(ddata.url, ddata.data);\n return model;\n };\n\n return Model;\n\n })();\n\n taiga = this.taiga;\n\n ModelService = (function(superClass) {\n extend(ModelService, superClass);\n\n ModelService.$inject = [\"$q\", \"$tgUrls\", \"$tgStorage\", \"$tgHttp\"];\n\n function ModelService(q, urls, storage, http) {\n this.q = q;\n this.urls = urls;\n this.storage = storage;\n this.http = http;\n ModelService.__super__.constructor.call(this);\n }\n\n return ModelService;\n\n })(taiga.Service);\n\n provider = function($q, $http, $gmUrls, $gmStorage) {\n var service;\n service = {};\n service.make_model = function(name, data, cls, dataTypes) {\n if (cls == null) {\n cls = Model;\n }\n if (dataTypes == null) {\n dataTypes = {};\n }\n return new cls(name, data, dataTypes);\n };\n service.cls = Model;\n service.casts = {\n int: function(value) {\n return parseInt(value, 10);\n },\n float: function(value) {\n return parseFloat(value, 10);\n }\n };\n return service;\n };\n\n module = angular.module(\"taigaBase\");\n\n module.factory(\"$tgModel\", [\"$q\", \"$http\", \"$tgUrls\", \"$tgStorage\", provider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var NavigationUrlsDirective, NavigationUrlsService, bindOnce, module, taiga, trim,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n trim = this.taiga.trim;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaBase\");\n\n NavigationUrlsService = (function(superClass) {\n extend(NavigationUrlsService, superClass);\n\n function NavigationUrlsService() {\n this.urls = {};\n }\n\n NavigationUrlsService.prototype.update = function(urls) {\n return this.urls = _.merge({}, this.urls, urls || {});\n };\n\n NavigationUrlsService.prototype.formatUrl = function(url, ctx) {\n var replacer;\n if (ctx == null) {\n ctx = {};\n }\n replacer = function(match) {\n match = trim(match, \":\");\n return ctx[match] || \":\" + match;\n };\n return url.replace(/(:\\w+)/g, replacer);\n };\n\n NavigationUrlsService.prototype._resolve = function(name, ctx) {\n var url;\n url = this.urls[name];\n if (!url) {\n return \"\";\n }\n if (ctx) {\n return this.formatUrl(url, ctx);\n }\n return url;\n };\n\n NavigationUrlsService.prototype.resolve = function(name, ctx) {\n var url;\n url = this._resolve(name, ctx);\n if (url.startsWith('/')) {\n return url.slice(1);\n }\n return url;\n };\n\n return NavigationUrlsService;\n\n })(taiga.Service);\n\n module.service(\"$tgNavUrls\", NavigationUrlsService);\n\n NavigationUrlsDirective = function($navurls, $auth, $q, $location, lightboxService, tgSections) {\n var bindOnceP, link, parseNav;\n bindOnceP = function($scope, attr) {\n var defered;\n defered = $q.defer();\n bindOnce($scope, attr, function(v) {\n return defered.resolve(v);\n });\n return defered.promise;\n };\n parseNav = function(data, $scope) {\n var index, name, obj, params, promises, ref, result, values;\n ref = _.map(data.split(\":\"), trim), name = ref[0], params = ref[1];\n if (params) {\n result = params.split(/(\\w+)=/);\n result = _.filter(result, function(str) {\n return str.length;\n });\n result = _.map(result, function(str) {\n return trim(str.replace(/,$/g, ''));\n });\n params = [];\n index = 0;\n while (index < result.length) {\n obj = {};\n obj[result[index]] = result[index + 1];\n params.push(obj);\n index = index + 2;\n }\n } else {\n params = [];\n }\n values = _.map(params, function(param) {\n return _.values(param)[0];\n });\n promises = _.map(values, function(x) {\n return bindOnceP($scope, x);\n });\n return Promise.all(promises).then(function() {\n var i, key, len, options, param, value;\n options = {};\n for (i = 0, len = params.length; i < len; i++) {\n param = params[i];\n key = Object.keys(param)[0];\n value = param[key];\n options[key] = $scope.$eval(value);\n }\n return [name, options];\n });\n };\n link = function($scope, $el, $attrs) {\n if ($el.is(\"a\")) {\n $el.attr(\"href\", \"#\");\n }\n $el.on(\"pointerenter\", function(event) {\n var target;\n target = $(event.currentTarget);\n if (!target.data(\"fullUrl\") || $attrs.tgNavGetParams !== target.data(\"params\")) {\n return parseNav($attrs.tgNav, $scope).then(function(result) {\n var fullUrl, getURLParams, getURLParamsStr, name, options, path, url, user;\n name = result[0], options = result[1];\n user = $auth.getUser();\n if (user) {\n options.user = user.username;\n }\n if (name === 'project') {\n path = tgSections.getPath(options['project'], options['section']);\n name = name + \"-\" + path;\n }\n url = $navurls.resolve(name);\n fullUrl = $navurls.formatUrl(url, options);\n if ($attrs.tgNavGetParams) {\n getURLParams = JSON.parse($attrs.tgNavGetParams);\n getURLParamsStr = $.param(getURLParams);\n fullUrl = fullUrl + \"?\" + getURLParamsStr;\n target.data(\"params\", $attrs.tgNavGetParams);\n }\n target.data(\"fullUrl\", fullUrl);\n if (target.is(\"a\")) {\n target.attr(\"href\", fullUrl);\n }\n return $el.on(\"click\", function(event) {\n if (event.metaKey || event.ctrlKey) {\n return;\n }\n event.preventDefault();\n target = $(event.currentTarget);\n if (target.hasClass('noclick')) {\n return;\n }\n fullUrl = target.data(\"fullUrl\");\n switch (event.which) {\n case 1:\n $location.url(fullUrl);\n $scope.$apply();\n break;\n case 2:\n window.open(fullUrl);\n }\n return lightboxService.closeAll();\n });\n });\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgNav\", [\"$tgNavUrls\", \"$tgAuth\", \"$q\", \"$tgLocation\", \"lightboxService\", \"$tgSections\", NavigationUrlsDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var RepositoryService, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n RepositoryService = (function(superClass) {\n extend(RepositoryService, superClass);\n\n RepositoryService.$inject = [\"$q\", \"$tgModel\", \"$tgStorage\", \"$tgHttp\", \"$tgUrls\"];\n\n function RepositoryService(q, model1, storage, http, urls) {\n this.q = q;\n this.model = model1;\n this.storage = storage;\n this.http = http;\n this.urls = urls;\n RepositoryService.__super__.constructor.call(this);\n }\n\n RepositoryService.prototype.resolveUrlForModel = function(model) {\n var idAttrName;\n idAttrName = model.getIdAttrName();\n return (this.urls.resolve(model.getName())) + \"/\" + model[idAttrName];\n };\n\n RepositoryService.prototype.resolveUrlForAttributeModel = function(model) {\n return this.urls.resolve(model.getName(), model.parent);\n };\n\n RepositoryService.prototype.create = function(name, data, dataTypes, extraParams) {\n var defered, promise, url;\n if (dataTypes == null) {\n dataTypes = {};\n }\n if (extraParams == null) {\n extraParams = {};\n }\n defered = this.q.defer();\n url = this.urls.resolve(name);\n promise = this.http.post(url, JSON.stringify(data), extraParams);\n promise.success((function(_this) {\n return function(_data, _status) {\n return defered.resolve(_this.model.make_model(name, _data, null, dataTypes));\n };\n })(this));\n promise.error((function(_this) {\n return function(data, status) {\n return defered.reject(data);\n };\n })(this));\n return defered.promise;\n };\n\n RepositoryService.prototype.remove = function(model, params) {\n var defered, promise, url;\n if (params == null) {\n params = {};\n }\n defered = this.q.defer();\n url = this.resolveUrlForModel(model);\n promise = this.http[\"delete\"](url, {}, params);\n promise.success(function(data, status) {\n return defered.resolve(model);\n });\n promise.error(function(data, status) {\n return defered.reject(model);\n });\n return defered.promise;\n };\n\n RepositoryService.prototype.saveAll = function(models, patch) {\n var promises;\n if (patch == null) {\n patch = true;\n }\n promises = _.map(models, (function(_this) {\n return function(x) {\n return _this.save(x, true);\n };\n })(this));\n return this.q.all(promises);\n };\n\n RepositoryService.prototype.save = function(model, patch, params, options, returnHeaders) {\n var data, defered, promise, url;\n if (patch == null) {\n patch = true;\n }\n if (params == null) {\n params = {};\n }\n if (returnHeaders == null) {\n returnHeaders = false;\n }\n defered = this.q.defer();\n if (!model.isModified() && patch) {\n defered.resolve(model);\n return defered.promise;\n }\n url = this.resolveUrlForModel(model);\n data = JSON.stringify(model.getAttrs(patch));\n if (patch) {\n promise = this.http.patch(url, data, params, options);\n } else {\n promise = this.http.put(url, data, params, options);\n }\n promise.success((function(_this) {\n return function(data, status, headers, response) {\n model._isModified = false;\n model._attrs = _.extend(model.getAttrs(), data);\n model._modifiedAttrs = {};\n model.applyCasts();\n if (returnHeaders) {\n return defered.resolve([model, headers()]);\n } else {\n return defered.resolve(model);\n }\n };\n })(this));\n promise.error(function(data, status) {\n return defered.reject(data);\n });\n return defered.promise;\n };\n\n RepositoryService.prototype.saveAttribute = function(model, attribute, patch) {\n var data, defered, promise, url;\n if (patch == null) {\n patch = true;\n }\n defered = this.q.defer();\n if (!(model != null ? model.isModified() : void 0) && patch) {\n defered.resolve(model);\n return defered.promise;\n }\n url = this.resolveUrlForAttributeModel(model);\n data = {};\n data[attribute] = model.getAttrs();\n if (patch) {\n promise = this.http.patch(url, data);\n } else {\n promise = this.http.put(url, data);\n }\n promise.success((function(_this) {\n return function(data, status) {\n model._isModified = false;\n model._attrs = _.extend(model.getAttrs(), data);\n model._modifiedAttrs = {};\n model.applyCasts();\n return defered.resolve(model);\n };\n })(this));\n promise.error(function(data, status) {\n return defered.reject(data);\n });\n return defered.promise;\n };\n\n RepositoryService.prototype.refresh = function(model) {\n var defered, promise, url;\n defered = this.q.defer();\n url = this.resolveUrlForModel(model);\n promise = this.http.get(url);\n promise.success(function(data, status) {\n model._modifiedAttrs = {};\n model._attrs = data;\n model._isModified = false;\n model.applyCasts();\n return defered.resolve(model);\n });\n promise.error(function(data, status) {\n return defered.reject(data);\n });\n return defered.promise;\n };\n\n RepositoryService.prototype.queryMany = function(name, params, options, headers) {\n var httpOptions, url;\n if (options == null) {\n options = {};\n }\n if (headers == null) {\n headers = false;\n }\n url = this.urls.resolve(name);\n httpOptions = {\n headers: {}\n };\n if (!options.enablePagination) {\n httpOptions.headers[\"x-disable-pagination\"] = \"1\";\n }\n return this.http.get(url, params, httpOptions).then((function(_this) {\n return function(data) {\n var result;\n result = _.map(data.data, function(x) {\n return _this.model.make_model(name, x);\n });\n if (headers) {\n return [result, data.headers];\n }\n return result;\n };\n })(this));\n };\n\n RepositoryService.prototype.queryOneAttribute = function(name, id, attribute, params, options) {\n var httpOptions, url;\n if (options == null) {\n options = {};\n }\n url = this.urls.resolve(name, id);\n httpOptions = {\n headers: {}\n };\n if (!options.enablePagination) {\n httpOptions.headers[\"x-disable-pagination\"] = \"1\";\n }\n return this.http.get(url, params, httpOptions).then((function(_this) {\n return function(data) {\n var model;\n model = _this.model.make_model(name, data.data[attribute]);\n model.parent = id;\n return model;\n };\n })(this));\n };\n\n RepositoryService.prototype.queryOne = function(name, id, params, options) {\n var httpOptions, url;\n if (options == null) {\n options = {};\n }\n url = this.urls.resolve(name);\n if (id) {\n url = url + \"/\" + id;\n }\n httpOptions = {\n headers: {}\n };\n if (!options.enablePagination) {\n httpOptions.headers[\"x-disable-pagination\"] = \"1\";\n }\n return this.http.get(url, params, httpOptions).then((function(_this) {\n return function(data) {\n return _this.model.make_model(name, data.data);\n };\n })(this));\n };\n\n RepositoryService.prototype.queryOneRaw = function(name, id, params, options) {\n var httpOptions, url;\n if (options == null) {\n options = {};\n }\n url = this.urls.resolve(name);\n if (id) {\n url = url + \"/\" + id;\n }\n httpOptions = _.merge({\n headers: {}\n }, options);\n if (!options.enablePagination) {\n httpOptions.headers[\"x-disable-pagination\"] = \"1\";\n }\n return this.http.get(url, params, httpOptions).then((function(_this) {\n return function(data) {\n return data.data;\n };\n })(this));\n };\n\n RepositoryService.prototype.queryPaginated = function(name, params, options) {\n var httpOptions, url;\n if (options == null) {\n options = {};\n }\n url = this.urls.resolve(name);\n httpOptions = _.merge({\n headers: {}\n }, options);\n return this.http.get(url, params, httpOptions).then((function(_this) {\n return function(data) {\n var headers, result;\n headers = data.headers();\n result = {};\n result.models = _.map(data.data, function(x) {\n return _this.model.make_model(name, x);\n });\n result.count = parseInt(headers[\"x-pagination-count\"], 10);\n result.current = parseInt(headers[\"x-pagination-current\"] || 1, 10);\n result.paginatedBy = parseInt(headers[\"x-paginated-by\"], 10);\n return result;\n };\n })(this));\n };\n\n RepositoryService.prototype.queryOnePaginatedRaw = function(name, id, params, options) {\n var httpOptions, url;\n if (options == null) {\n options = {};\n }\n url = this.urls.resolve(name);\n if (id) {\n url = url + \"/\" + id;\n }\n httpOptions = _.merge({\n headers: {}\n }, options);\n return this.http.get(url, params, httpOptions).then((function(_this) {\n return function(data) {\n var headers, result;\n headers = data.headers();\n result = {};\n result.data = data.data;\n result.count = parseInt(headers[\"x-pagination-count\"], 10);\n result.current = parseInt(headers[\"x-pagination-current\"] || 1, 10);\n result.paginatedBy = parseInt(headers[\"x-paginated-by\"], 10);\n return result;\n };\n })(this));\n };\n\n RepositoryService.prototype.resolve = function(options) {\n var cache, params;\n params = {};\n if (options.pslug != null) {\n params.project = options.pslug;\n }\n if (options.usref != null) {\n params.us = options.usref;\n }\n if (options.taskref != null) {\n params.task = options.taskref;\n }\n if (options.issueref != null) {\n params.issue = options.issueref;\n }\n if (options.sslug != null) {\n params.milestone = options.sslug;\n }\n if (options.wikipage != null) {\n params.wikipage = options.wikipage;\n }\n if (options.ref != null) {\n params.ref = options.ref;\n }\n cache = !(options.wikipage || options.sslug);\n return this.queryOneRaw(\"resolver\", null, params, {\n cache: cache\n });\n };\n\n return RepositoryService;\n\n })(taiga.Service);\n\n module = angular.module(\"taigaBase\");\n\n module.service(\"$tgRepo\", RepositoryService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var StorageService, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n StorageService = (function(superClass) {\n extend(StorageService, superClass);\n\n StorageService.$inject = [\"$rootScope\"];\n\n function StorageService($rootScope) {\n StorageService.__super__.constructor.call(this);\n }\n\n StorageService.prototype.get = function(key, _default) {\n var e, serializedValue;\n serializedValue = localStorage.getItem(key);\n if (serializedValue === null) {\n return _default || null;\n }\n try {\n return JSON.parse(serializedValue);\n } catch (error) {\n e = error;\n return null;\n }\n };\n\n StorageService.prototype.set = function(key, val) {\n if (_.isObject(key)) {\n return _.each(key, (function(_this) {\n return function(val, key) {\n return _this.set(key, val);\n };\n })(this));\n } else {\n return localStorage.setItem(key, JSON.stringify(val));\n }\n };\n\n StorageService.prototype.contains = function(key) {\n var value;\n value = this.get(key);\n return value !== null;\n };\n\n StorageService.prototype.remove = function(key) {\n return localStorage.removeItem(key);\n };\n\n StorageService.prototype.clear = function() {\n return localStorage.clear();\n };\n\n return StorageService;\n\n })(taiga.Service);\n\n module = angular.module(\"taigaBase\");\n\n module.service(\"$tgStorage\", StorageService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UrlsService, format, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n format = function(fmt, obj) {\n obj = _.clone(obj);\n return fmt.replace(/%s/g, function(match) {\n return String(obj.shift());\n });\n };\n\n taiga = this.taiga;\n\n UrlsService = (function(superClass) {\n extend(UrlsService, superClass);\n\n UrlsService.$inject = [\"$tgConfig\"];\n\n function UrlsService(config) {\n this.config = config;\n this.urls = {};\n this.mainUrl = this.config.get(\"api\");\n }\n\n UrlsService.prototype.update = function(urls) {\n return this.urls = _.merge(this.urls, urls);\n };\n\n UrlsService.prototype.resolve = function() {\n var args, name, url;\n args = _.toArray(arguments);\n if (args.length === 0) {\n throw Error(\"wrong arguments to setUrls\");\n }\n name = args.slice(0, 1)[0];\n url = format(this.urls[name], args.slice(1));\n return format(\"%s/%s\", [_.trimEnd(this.mainUrl, \"/\"), _.trimStart(url, \"/\")]);\n };\n\n UrlsService.prototype.resolveAbsolute = function() {\n var url;\n url = this.resolve.apply(this, arguments);\n if (/^https?:\\/\\//i.test(url)) {\n return url;\n }\n if (/^\\//.test(url)) {\n return window.location.protocol + \"//\" + window.location.host + url;\n }\n return window.location.protocol + \"//\" + window.location.host + \"/\" + url;\n };\n\n return UrlsService;\n\n })(taiga.Service);\n\n module = angular.module(\"taigaBase\");\n\n module.service('$tgUrls', UrlsService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo) {\n var _get, service;\n _get = function(objectId, resource) {\n return $repo.queryOne(resource, objectId);\n };\n service = {\n epic: {\n get: function(objectId) {\n return _get(objectId, \"custom-attributes-values/epic\");\n }\n },\n userstory: {\n get: function(objectId) {\n return _get(objectId, \"custom-attributes-values/userstory\");\n }\n },\n task: {\n get: function(objectId) {\n return _get(objectId, \"custom-attributes-values/task\");\n }\n },\n issue: {\n get: function(objectId) {\n return _get(objectId, \"custom-attributes-values/issue\");\n }\n }\n };\n return function(instance) {\n return instance.customAttributesValues = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgCustomAttributesValuesResourcesProvider\", [\"$tgRepo\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, resourceProvider, sizeFormat, taiga;\n\n taiga = this.taiga;\n\n sizeFormat = this.taiga.sizeFormat;\n\n resourceProvider = function($repo) {\n var _list, service;\n _list = function(projectId, resource) {\n return $repo.queryMany(resource, {\n project: projectId\n });\n };\n service = {\n epic: {\n list: function(projectId) {\n return _list(projectId, \"custom-attributes/epic\");\n }\n },\n userstory: {\n list: function(projectId) {\n return _list(projectId, \"custom-attributes/userstory\");\n }\n },\n task: {\n list: function(projectId) {\n return _list(projectId, \"custom-attributes/task\");\n }\n },\n issue: {\n list: function(projectId) {\n return _list(projectId, \"custom-attributes/issue\");\n }\n }\n };\n return function(instance) {\n return instance.customAttributes = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgCustomAttributesResourcesProvider\", [\"$tgRepo\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var generateHash, module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n generateHash = taiga.generateHash;\n\n resourceProvider = function($repo, $http, $urls, $storage) {\n var hashSuffix, service;\n service = {};\n hashSuffix = \"epics-queryparams\";\n service.getByRef = function(projectId, ref) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n params.ref = ref;\n return $repo.queryOne(\"epics\", \"by_ref\", params);\n };\n service.listValues = function(projectId, type) {\n var params;\n params = {\n \"project\": projectId\n };\n service.storeQueryParams(projectId, params);\n return $repo.queryMany(type, params);\n };\n service.storeQueryParams = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getQueryParams = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || {};\n };\n service.upvote = function(epicId) {\n var url;\n url = $urls.resolve(\"epic-upvote\", epicId);\n return $http.post(url);\n };\n service.downvote = function(epicId) {\n var url;\n url = $urls.resolve(\"epic-downvote\", epicId);\n return $http.post(url);\n };\n service.watch = function(epicId) {\n var url;\n url = $urls.resolve(\"epic-watch\", epicId);\n return $http.post(url);\n };\n service.unwatch = function(epicId) {\n var url;\n url = $urls.resolve(\"epic-unwatch\", epicId);\n return $http.post(url);\n };\n return function(instance) {\n return instance.epics = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgEpicsResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", \"$tgStorage\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $http, $urls) {\n var service;\n service = {};\n service.get = function(contentType, objectId, entryType) {\n return $repo.queryOneRaw(\"history/\" + contentType, objectId, {\n type: entryType\n });\n };\n service.editComment = function(type, objectId, activityId, comment) {\n var commentData, params, url;\n url = $urls.resolve(\"history/\" + type);\n url = url + \"/\" + objectId + \"/edit_comment\";\n params = {\n id: activityId\n };\n commentData = {\n comment: comment\n };\n return $http.post(url, commentData, params).then((function(_this) {\n return function(data) {\n return data.data;\n };\n })(this));\n };\n service.getCommentHistory = function(type, objectId, activityId) {\n var params, url;\n url = $urls.resolve(\"history/\" + type);\n url = url + \"/\" + objectId + \"/comment_versions\";\n params = {\n id: activityId\n };\n return $http.get(url, params).then((function(_this) {\n return function(data) {\n return data.data;\n };\n })(this));\n };\n service.deleteComment = function(type, objectId, activityId) {\n var params, url;\n url = $urls.resolve(\"history/\" + type);\n url = url + \"/\" + objectId + \"/delete_comment\";\n params = {\n id: activityId\n };\n return $http.post(url, null, params).then((function(_this) {\n return function(data) {\n return data.data;\n };\n })(this));\n };\n service.undeleteComment = function(type, objectId, activityId) {\n var params, url;\n url = $urls.resolve(\"history/\" + type);\n url = url + \"/\" + objectId + \"/undelete_comment\";\n params = {\n id: activityId\n };\n return $http.post(url, null, params).then((function(_this) {\n return function(data) {\n return data.data;\n };\n })(this));\n };\n return function(instance) {\n return instance.history = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgHistoryResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo) {\n var service;\n service = {};\n service.get = function(token) {\n return $repo.queryOne(\"invitations\", token);\n };\n return function(instance) {\n return instance.invitations = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgInvitationsResourcesProvider\", [\"$tgRepo\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var generateHash, module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n generateHash = taiga.generateHash;\n\n resourceProvider = function($repo, $http, $urls, $storage, $q) {\n var hashIssuesShowTags, hashSprintShowTags, hashSuffix, service;\n service = {};\n hashSuffix = \"issues-queryparams\";\n hashSprintShowTags = \"taskboard-issues\";\n hashIssuesShowTags = \"issues-list\";\n service.get = function(projectId, issueId) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n return $repo.queryOne(\"issues\", issueId, params);\n };\n service.getByRef = function(projectId, ref) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n params.ref = ref;\n return $repo.queryOne(\"issues\", \"by_ref\", params);\n };\n service.listInAllProjects = function(filters) {\n return $repo.queryMany(\"issues\", filters);\n };\n service.list = function(projectId, filters, options) {\n var params;\n params = {\n project: projectId\n };\n params = _.extend({}, params, filters || {});\n service.storeQueryParams(projectId, params);\n return $repo.queryPaginated(\"issues\", params, options);\n };\n service.listInProject = function(projectId, sprintId, params) {\n if (sprintId == null) {\n sprintId = null;\n }\n params = _.merge(params, {\n project: projectId\n });\n if (sprintId) {\n params.milestone = sprintId;\n }\n service.storeQueryParams(projectId, params);\n return $repo.queryMany(\"issues\", params);\n };\n service.bulkCreate = function(projectId, milestoneId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-create-issues\");\n params = {\n project_id: projectId,\n milestone_id: milestoneId,\n bulk_issues: data\n };\n return $http.post(url, params);\n };\n service.upvote = function(issueId) {\n var url;\n url = $urls.resolve(\"issue-upvote\", issueId);\n return $http.post(url);\n };\n service.downvote = function(issueId) {\n var url;\n url = $urls.resolve(\"issue-downvote\", issueId);\n return $http.post(url);\n };\n service.watch = function(issueId) {\n var url;\n url = $urls.resolve(\"issue-watch\", issueId);\n return $http.post(url);\n };\n service.unwatch = function(issueId) {\n var url;\n url = $urls.resolve(\"issue-unwatch\", issueId);\n return $http.post(url);\n };\n service.stats = function(projectId) {\n return $repo.queryOneRaw(\"projects\", projectId + \"/issues_stats\");\n };\n service.filtersData = function(params) {\n return $repo.queryOneRaw(\"issues-filters\", null, params);\n };\n service.listValues = function(projectId, type) {\n var params;\n params = {\n \"project\": projectId\n };\n service.storeQueryParams(projectId, params);\n return $repo.queryMany(type, params);\n };\n service.createDefaultValues = function(projectId, type) {\n var data, url;\n data = {\n \"project_id\": projectId\n };\n url = $urls.resolve(type + \"-create-default\");\n return $http.post(url, data);\n };\n service.storeQueryParams = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getQueryParams = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || {};\n };\n service.bulkUpdateMilestone = function(projectId, milestoneId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-update-issue-milestone\");\n params = {\n project_id: projectId,\n milestone_id: milestoneId,\n bulk_issues: data\n };\n return $http.post(url, params);\n };\n service.promoteToUserStory = function(issueId, projectId) {\n var data, url;\n url = $urls.resolve(\"promote-issue-to-us\", issueId);\n data = {\n project_id: projectId\n };\n return $http.post(url, data);\n };\n service.storeIssuesShowTags = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashIssuesShowTags;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getIssuesShowTags = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashIssuesShowTags;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash);\n };\n service.storeSprintShowTags = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSprintShowTags;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getSprintShowTags = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSprintShowTags;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash);\n };\n return function(instance) {\n return instance.issues = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgIssuesResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", \"$tgStorage\", \"$q\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var generateHash, module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n generateHash = taiga.generateHash;\n\n resourceProvider = function($storage) {\n var hashSuffixStatusColumnModes, hashSuffixStatusViewModes, hashSuffixSwimlanesModes, service;\n service = {};\n hashSuffixStatusViewModes = \"kanban-statusviewmodels\";\n hashSuffixStatusColumnModes = \"kanban-statuscolumnmodels\";\n hashSuffixSwimlanesModes = \"kanban-swimlanesmodels\";\n service.storeStatusColumnModes = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixStatusColumnModes;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getStatusColumnModes = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixStatusColumnModes;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || {};\n };\n service.storeSwimlanesModes = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixSwimlanesModes;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getSwimlanesModes = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixSwimlanesModes;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || {};\n };\n return function(instance) {\n return instance.kanban = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgKanbanResourcesProvider\", [\"$tgStorage\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, resourceProvider, sizeFormat, taiga;\n\n taiga = this.taiga;\n\n sizeFormat = this.taiga.sizeFormat;\n\n resourceProvider = function($repo) {\n var service;\n service = {\n list: function() {\n return $repo.queryMany(\"locales\");\n }\n };\n return function(instance) {\n return instance.locales = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgLocalesResourcesProvider\", [\"$tgRepo\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $urls, $http) {\n var service;\n service = {};\n service.render = function(projectId, content) {\n var params, url;\n if ((content == null) || content === \"\") {\n content = ' ';\n }\n params = {\n project_id: projectId,\n content: content\n };\n url = $urls.resolve(\"wiki\");\n return $http.post(url + \"/render\", params).then((function(_this) {\n return function(data) {\n return data.data;\n };\n })(this));\n };\n return function(instance) {\n return instance.mdrender = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgMdRenderResourcesProvider\", [\"$tgRepo\", \"$tgUrls\", \"$tgHttp\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $http, $urls) {\n var service;\n service = {};\n service.get = function(id) {\n return $repo.queryOne(\"memberships\", id);\n };\n service.list = function(projectId, filters, enablePagination) {\n var options, params;\n if (enablePagination == null) {\n enablePagination = true;\n }\n params = {\n project: projectId\n };\n params = _.extend({}, params, filters || {});\n if (enablePagination) {\n return $repo.queryPaginated(\"memberships\", params);\n }\n return $repo.queryMany(\"memberships\", params, options = {\n enablePagination: enablePagination\n });\n };\n service.listByUser = function(userId, filters) {\n var params;\n params = {\n user: userId\n };\n params = _.extend({}, params, filters || {});\n return $repo.queryPaginated(\"memberships\", params);\n };\n service.resendInvitation = function(id) {\n var url;\n url = $urls.resolve(\"memberships\");\n return $http.post(url + \"/\" + id + \"/resend_invitation\", {});\n };\n service.bulkCreateMemberships = function(projectId, data, invitation_extra_text) {\n var params, url;\n url = $urls.resolve(\"bulk-create-memberships\");\n params = {\n project_id: projectId,\n bulk_memberships: data,\n invitation_extra_text: invitation_extra_text\n };\n return $http.post(url, params);\n };\n return function(instance) {\n return instance.memberships = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgMembershipsResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, resourceProvider;\n\n resourceProvider = function($repo) {\n var service;\n service = {};\n service.list = function(projectId, module) {\n return $repo.queryOneAttribute(\"project-modules\", projectId, module);\n };\n return function(instance) {\n return instance.modules = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgModulesResourcesProvider\", [\"$tgRepo\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $http, $urls) {\n var service;\n service = {};\n service.get = function(id) {\n return $repo.queryOne(\"notify-policies\", id);\n };\n service.list = function(filters) {\n var params;\n params = _.extend({}, params, filters || {});\n return $repo.queryMany(\"notify-policies\", params);\n };\n return function(instance) {\n return instance.notifyPolicies = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgNotifyPoliciesResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, resourceProvider, sizeFormat, taiga;\n\n taiga = this.taiga;\n\n sizeFormat = this.taiga.sizeFormat;\n\n resourceProvider = function($config, $repo, $http, $urls, $auth, $q, $translate) {\n var service;\n service = {};\n service.get = function(projectId) {\n return $repo.queryOne(\"projects\", projectId);\n };\n service.getBySlug = function(projectSlug) {\n return $repo.queryOne(\"projects\", \"by_slug?slug=\" + projectSlug);\n };\n service.list = function(filters) {\n var params;\n params = {\n \"order_by\": \"user_order\"\n };\n params = _.extend({}, params, filters || {});\n return $repo.queryMany(\"projects\", params);\n };\n service.listByMember = function(memberId) {\n var params;\n params = {\n \"member\": memberId,\n \"order_by\": \"user_order\"\n };\n return $repo.queryMany(\"projects\", params);\n };\n service.templates = function() {\n return $repo.queryMany(\"project-templates\");\n };\n service.usersList = function(projectId) {\n var params;\n params = {\n \"project\": projectId\n };\n return $repo.queryMany(\"users\", params);\n };\n service.rolesList = function(projectId) {\n var params;\n params = {\n \"project\": projectId\n };\n return $repo.queryMany(\"roles\", params);\n };\n service.stats = function(projectId) {\n return $repo.queryOneRaw(\"projects\", projectId + \"/stats\");\n };\n service.bulkUpdateOrder = function(bulkData) {\n var url;\n url = $urls.resolve(\"bulk-update-projects-order\");\n return $http.post(url, bulkData);\n };\n service.regenerate_epics_csv_uuid = function(projectId) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/regenerate_epics_csv_uuid\";\n return $http.post(url);\n };\n service.regenerate_userstories_csv_uuid = function(projectId) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/regenerate_userstories_csv_uuid\";\n return $http.post(url);\n };\n service.regenerate_tasks_csv_uuid = function(projectId) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/regenerate_tasks_csv_uuid\";\n return $http.post(url);\n };\n service.regenerate_issues_csv_uuid = function(projectId) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/regenerate_issues_csv_uuid\";\n return $http.post(url);\n };\n service.delete_epics_csv_uuid = function(projectId) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/delete_epics_csv_uuid\";\n return $http.post(url);\n };\n service.delete_userstories_csv_uuid = function(projectId) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/delete_userstories_csv_uuid\";\n return $http.post(url);\n };\n service.delete_tasks_csv_uuid = function(projectId) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/delete_tasks_csv_uuid\";\n return $http.post(url);\n };\n service.patch_default_swimlane = function(projectId, swimlaneId) {\n var data, url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId;\n data = {\n default_swimlane: swimlaneId\n };\n return $http.patch(url, data);\n };\n service.delete_issues_csv_uuid = function(projectId) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/delete_issues_csv_uuid\";\n return $http.post(url);\n };\n service.leave = function(projectId) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/leave\";\n return $http.post(url);\n };\n service.memberStats = function(projectId) {\n return $repo.queryOneRaw(\"projects\", projectId + \"/member_stats\");\n };\n service.tagsColors = function(projectId) {\n return $repo.queryOne(\"projects\", projectId + \"/tags_colors\");\n };\n service.deleteTag = function(projectId, tag) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/delete_tag\";\n return $http.post(url, {\n tag: tag\n });\n };\n service.createTag = function(projectId, tag, color) {\n var data, url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/create_tag\";\n data = {};\n data.tag = tag;\n data.color = null;\n if (color) {\n data.color = color;\n }\n return $http.post(url, data);\n };\n service.editTag = function(projectId, from_tag, to_tag, color) {\n var data, url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/edit_tag\";\n data = {};\n data.from_tag = from_tag;\n if (to_tag) {\n data.to_tag = to_tag;\n }\n data.color = null;\n if (color) {\n data.color = color;\n }\n return $http.post(url, data);\n };\n service.mixTags = function(projectId, to_tag, from_tags) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/mix_tags\";\n return $http.post(url, {\n to_tag: to_tag,\n from_tags: from_tags\n });\n };\n service[\"export\"] = function(projectId) {\n var url;\n url = ($urls.resolve(\"exporter\")) + \"/\" + projectId;\n return $http.get(url);\n };\n service[\"import\"] = function(file, statusUpdater) {\n var complete, data, defered, errorMsg, failed, maxFileSize, response, uploadComplete, uploadFailed, uploadProgress, xhr;\n defered = $q.defer();\n maxFileSize = $config.get(\"maxUploadFileSize\", null);\n if (maxFileSize && file.size > maxFileSize) {\n errorMsg = $translate.instant(\"PROJECT.IMPORT.ERROR_MAX_SIZE_EXCEEDED\", {\n fileName: file.name,\n fileSize: sizeFormat(file.size),\n maxFileSize: sizeFormat(maxFileSize)\n });\n response = {\n status: 413,\n data: {\n _error_message: errorMsg\n }\n };\n defered.reject(response);\n return defered.promise;\n }\n uploadProgress = (function(_this) {\n return function(evt) {\n var message, percent;\n percent = Math.round((evt.loaded / evt.total) * 100);\n message = $translate.instant(\"PROJECT.IMPORT.UPLOAD_IN_PROGRESS_MESSAGE\", {\n uploadedSize: sizeFormat(evt.loaded),\n totalSize: sizeFormat(evt.total)\n });\n return statusUpdater(\"in-progress\", null, message, percent);\n };\n })(this);\n uploadComplete = (function(_this) {\n return function(evt) {\n return statusUpdater(\"done\", $translate.instant(\"PROJECT.IMPORT.TITLE\"), $translate.instant(\"PROJECT.IMPORT.DESCRIPTION\"));\n };\n })(this);\n uploadFailed = (function(_this) {\n return function(evt) {\n return statusUpdater(\"error\");\n };\n })(this);\n complete = (function(_this) {\n return function(evt) {\n var ref;\n response = {};\n try {\n response.data = JSON.parse(evt.target.responseText);\n } catch (error) {\n response.data = {};\n }\n response.status = evt.target.status;\n if (evt.target.getResponseHeader('Taiga-Info-Project-Is-Private')) {\n response.headers = {\n isPrivate: evt.target.getResponseHeader('Taiga-Info-Project-Is-Private') === 'True',\n memberships: parseInt(evt.target.getResponseHeader('Taiga-Info-Project-Memberships'))\n };\n }\n if ((ref = response.status) === 201 || ref === 202) {\n defered.resolve(response);\n }\n return defered.reject(response);\n };\n })(this);\n failed = (function(_this) {\n return function(evt) {\n return defered.reject(\"fail\");\n };\n })(this);\n data = new FormData();\n data.append('dump', file);\n xhr = new XMLHttpRequest();\n xhr.upload.addEventListener(\"progress\", uploadProgress, false);\n xhr.upload.addEventListener(\"load\", uploadComplete, false);\n xhr.upload.addEventListener(\"error\", uploadFailed, false);\n xhr.upload.addEventListener(\"abort\", uploadFailed, false);\n xhr.addEventListener(\"load\", complete, false);\n xhr.addEventListener(\"error\", failed, false);\n xhr.open(\"POST\", $urls.resolve(\"importer\"));\n xhr.setRequestHeader(\"Authorization\", \"Bearer \" + ($auth.getToken()));\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send(data);\n return defered.promise;\n };\n service.changeLogo = function(projectId, file) {\n var data, defered, maxFileSize, options, response, url;\n maxFileSize = $config.get(\"maxUploadFileSize\", null);\n if (maxFileSize && file.size > maxFileSize) {\n response = {\n status: 413,\n data: {\n _error_message: \"'\" + file.name + \"' (\" + (sizeFormat(file.size)) + \") is too heavy for our oompa loompas, try it with a smaller than (\" + (sizeFormat(maxFileSize)) + \")\"\n }\n };\n defered = $q.defer();\n defered.reject(response);\n return defered.promise;\n }\n data = new FormData();\n data.append('logo', file);\n options = {\n transformRequest: angular.identity,\n headers: {\n 'Content-Type': void 0\n }\n };\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/change_logo\";\n return $http.post(url, data, {}, options);\n };\n service.removeLogo = function(projectId) {\n var url;\n url = ($urls.resolve(\"projects\")) + \"/\" + projectId + \"/remove_logo\";\n return $http.post(url);\n };\n return function(instance) {\n return instance.projects = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgProjectsResourcesProvider\", [\"$tgConfig\", \"$tgRepo\", \"$tgHttp\", \"$tgUrls\", \"$tgAuth\", \"$q\", \"$translate\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $http, $urls) {\n var service;\n service = {};\n service.get = function(id) {\n return $repo.queryOne(\"roles\", id);\n };\n service.list = function(projectId) {\n return $repo.queryMany(\"roles\", {\n project: projectId\n });\n };\n return function(instance) {\n return instance.roles = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgRolesResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $urls, $http, $q) {\n var service;\n service = {};\n service[\"do\"] = function(projectId, term) {\n var deferredAbort, params, request, url;\n deferredAbort = $q.defer();\n url = $urls.resolve(\"search\");\n params = {\n url: url,\n method: \"GET\",\n timeout: deferredAbort.promise,\n cancelable: true,\n params: {\n project: projectId,\n text: term,\n get_all: false\n }\n };\n request = $http.request(params).then(function(data) {\n return data.data;\n });\n request.abort = function() {\n return deferredAbort.resolve();\n };\n request[\"finally\"] = function() {\n request.abort = angular.noop;\n return deferredAbort = request = null;\n };\n return request;\n };\n return function(instance) {\n return instance.search = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgSearchResourcesProvider\", [\"$tgRepo\", \"$tgUrls\", \"$tgHttp\", \"$q\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var generateHash, module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n generateHash = taiga.generateHash;\n\n resourceProvider = function($repo, $model, $storage, $http, $urls) {\n var service;\n service = {};\n service.get = function(projectId, sprintId) {\n return $repo.queryOne(\"milestones\", sprintId).then(function(sprint) {\n var uses;\n uses = sprint.user_stories;\n uses = _.map(uses, function(u) {\n return $model.make_model(\"userstories\", u);\n });\n sprint._attrs.user_stories = uses;\n return sprint;\n });\n };\n service.stats = function(projectId, sprintId) {\n return $repo.queryOneRaw(\"milestones\", sprintId + \"/stats\");\n };\n service.list = function(projectId, filters) {\n var params;\n params = {\n \"project\": projectId\n };\n params = _.extend({}, params, filters || {});\n return $repo.queryMany(\"milestones\", params, {}, true).then((function(_this) {\n return function(result) {\n var headers, i, len, m, milestones, uses;\n milestones = result[0];\n headers = result[1];\n for (i = 0, len = milestones.length; i < len; i++) {\n m = milestones[i];\n uses = m.user_stories;\n uses = _.map(uses, function(u) {\n return $model.make_model(\"userstories\", u);\n });\n m._attrs.user_stories = uses;\n }\n return {\n milestones: milestones,\n closed: parseInt(headers(\"Taiga-Info-Total-Closed-Milestones\"), 10),\n open: parseInt(headers(\"Taiga-Info-Total-Opened-Milestones\"), 10)\n };\n };\n })(this));\n };\n service.moveUserStoriesMilestone = function(currentMilestoneId, projectId, milestoneId, data) {\n var params, url;\n url = $urls.resolve(\"move-userstories-to-milestone\", currentMilestoneId);\n params = {\n project_id: projectId,\n milestone_id: milestoneId,\n bulk_stories: data\n };\n return $http.post(url, params);\n };\n service.moveTasksMilestone = function(currentMilestoneId, projectId, milestoneId, data) {\n var params, url;\n url = $urls.resolve(\"move-tasks-to-milestone\", currentMilestoneId);\n params = {\n project_id: projectId,\n milestone_id: milestoneId,\n bulk_tasks: data\n };\n return $http.post(url, params);\n };\n service.moveIssuesMilestone = function(currentMilestoneId, projectId, milestoneId, data) {\n var params, url;\n url = $urls.resolve(\"move-issues-to-milestone\", currentMilestoneId);\n params = {\n project_id: projectId,\n milestone_id: milestoneId,\n bulk_issues: data\n };\n return $http.post(url, params);\n };\n return function(instance) {\n return instance.sprints = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgSprintsResourcesProvider\", [\"$tgRepo\", \"$tgModel\", \"$tgStorage\", \"$tgHttp\", \"$tgUrls\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var generateHash, module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n generateHash = taiga.generateHash;\n\n resourceProvider = function($repo, $http, $urls) {\n var service;\n service = {};\n service.list = function(projectId) {\n var params;\n params = {\n project: projectId\n };\n return $repo.queryMany(\"swimlanes\", params);\n };\n service.create = function(projectId, name, order) {\n var params, url;\n url = $urls.resolve(\"swimlanes\");\n params = {\n project: projectId,\n name: name\n };\n if (order) {\n params.order = order;\n }\n return $http.post(url, params);\n };\n service.edit = function(swimlaneId, name) {\n var params, url;\n url = $urls.resolve(\"swimlanes\");\n url = url + \"/\" + swimlaneId;\n params = {\n name: name\n };\n return $http.patch(url, params);\n };\n service.bulkUpdateOrder = function(project, swimlanesOrder) {\n var params, url;\n url = $urls.resolve(\"swimlanes\");\n url = url + \"/bulk_update_order\";\n params = {\n project: project,\n bulk_swimlanes: swimlanesOrder\n };\n return $http.post(url, params);\n };\n service.wipLimitUpdate = function(swimlaneId, wip_limit) {\n var params, url;\n url = $urls.resolve(\"swimlane-userstory-statuses\");\n url = url + \"/\" + swimlaneId;\n params = {\n wip_limit: wip_limit\n };\n return $http.patch(url, params);\n };\n service[\"delete\"] = function(swimlaneId, moveTo) {\n var url;\n url = $urls.resolve(\"swimlanes\");\n if (moveTo) {\n url = url + \"/\" + swimlaneId + \"?moveTo=\" + moveTo;\n } else {\n url = url + \"/\" + swimlaneId;\n }\n return $http[\"delete\"](url);\n };\n return function(instance) {\n return instance.swimlanes = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgSwimlanesResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var generateHash, module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n generateHash = taiga.generateHash;\n\n resourceProvider = function($repo, $http, $urls, $storage) {\n var hashSuffix, hashSuffixStatusColumnModes, hashSuffixUsRowModes, service;\n service = {};\n hashSuffix = \"tasks-queryparams\";\n hashSuffixStatusColumnModes = \"tasks-statuscolumnmodels\";\n hashSuffixUsRowModes = \"tasks-usrowmodels\";\n service.get = function(projectId, taskId, extraParams) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n params = _.extend({}, params, extraParams);\n return $repo.queryOne(\"tasks\", taskId, params);\n };\n service.getByRef = function(projectId, ref, extraParams) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n params.ref = ref;\n params = _.extend({}, params, extraParams);\n return $repo.queryOne(\"tasks\", \"by_ref\", params);\n };\n service.listInAllProjects = function(filters) {\n return $repo.queryMany(\"tasks\", filters);\n };\n service.filtersData = function(params) {\n return $repo.queryOneRaw(\"task-filters\", null, params);\n };\n service.list = function(projectId, sprintId, userStoryId, params) {\n if (sprintId == null) {\n sprintId = null;\n }\n if (userStoryId == null) {\n userStoryId = null;\n }\n params = _.merge(params, {\n project: projectId,\n order_by: 'us_order'\n });\n if (sprintId) {\n params.milestone = sprintId;\n }\n if (userStoryId) {\n params.user_story = userStoryId;\n }\n service.storeQueryParams(projectId, params);\n return $repo.queryMany(\"tasks\", params);\n };\n service.bulkCreate = function(projectId, sprintId, usId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-create-tasks\");\n params = {\n project_id: projectId,\n milestone_id: sprintId,\n us_id: usId,\n bulk_tasks: data\n };\n return $http.post(url, params).then(function(result) {\n return result.data;\n });\n };\n service.upvote = function(taskId) {\n var url;\n url = $urls.resolve(\"task-upvote\", taskId);\n return $http.post(url);\n };\n service.downvote = function(taskId) {\n var url;\n url = $urls.resolve(\"task-downvote\", taskId);\n return $http.post(url);\n };\n service.watch = function(taskId) {\n var url;\n url = $urls.resolve(\"task-watch\", taskId);\n return $http.post(url);\n };\n service.unwatch = function(taskId) {\n var url;\n url = $urls.resolve(\"task-unwatch\", taskId);\n return $http.post(url);\n };\n service.bulkUpdateTaskTaskboardOrder = function(projectId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-update-task-taskboard-order\");\n params = {\n project_id: projectId,\n bulk_tasks: data\n };\n return $http.post(url, params);\n };\n service.bulkUpdateMilestone = function(projectId, milestoneId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-update-task-milestone\");\n params = {\n project_id: projectId,\n milestone_id: milestoneId,\n bulk_tasks: data\n };\n return $http.post(url, params);\n };\n service.reorder = function(id, data, setOrders) {\n var options, url;\n url = $urls.resolve(\"tasks\") + (\"/\" + id);\n options = {\n \"headers\": {\n \"set-orders\": JSON.stringify(setOrders)\n }\n };\n return $http.patch(url, data, null, options).then(function(result) {\n return result.data;\n });\n };\n service.listValues = function(projectId, type) {\n var params;\n params = {\n \"project\": projectId\n };\n return $repo.queryMany(type, params);\n };\n service.createDefaultValues = function(projectId, type) {\n var data, url;\n data = {\n \"project_id\": projectId\n };\n url = $urls.resolve(type + \"-create-default\");\n return $http.post(url, data);\n };\n service.storeQueryParams = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getQueryParams = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || {};\n };\n service.storeStatusColumnModes = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixStatusColumnModes;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getStatusColumnModes = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixStatusColumnModes;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || {};\n };\n service.storeUsRowModes = function(projectId, sprintId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixUsRowModes;\n hash = generateHash([projectId, sprintId, ns]);\n return $storage.set(hash, params);\n };\n service.getUsRowModes = function(projectId, sprintId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffixUsRowModes;\n hash = generateHash([projectId, sprintId, ns]);\n return $storage.get(hash) || {};\n };\n service.promoteToUserStory = function(taskId, projectId) {\n var data, url;\n url = $urls.resolve(\"promote-task-to-us\", taskId);\n data = {\n project_id: projectId\n };\n return $http.post(url, data);\n };\n return function(instance) {\n return instance.tasks = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgTasksResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", \"$tgStorage\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $http, $urls) {\n var service;\n service = {};\n service.get = function(id) {\n return $repo.queryOne(\"user-project-settings\", id);\n };\n service.list = function(filters) {\n var params;\n params = _.extend({}, params, filters || {});\n return $repo.queryMany(\"user-project-settings\", params);\n };\n return function(instance) {\n return instance.userProjectSettings = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgUserProjectSettingsResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, resourceProvider, sizeFormat, taiga;\n\n taiga = this.taiga;\n\n sizeFormat = this.taiga.sizeFormat;\n\n resourceProvider = function($config, $repo, $http, $urls, $q) {\n var service;\n service = {};\n service.changeAvatar = function(file) {\n var data, defered, maxFileSize, options, response, url;\n maxFileSize = $config.get(\"maxUploadFileSize\", null);\n if (maxFileSize && file.size > maxFileSize) {\n response = {\n status: 413,\n data: {\n _error_message: \"'\" + file.name + \"' (\" + (sizeFormat(file.size)) + \") is too heavy for our oompa loompas, try it with a smaller than (\" + (sizeFormat(maxFileSize)) + \")\"\n }\n };\n defered = $q.defer();\n defered.reject(response);\n return defered.promise;\n }\n data = new FormData();\n data.append('avatar', file);\n options = {\n transformRequest: angular.identity,\n headers: {\n 'Content-Type': void 0\n }\n };\n url = ($urls.resolve(\"users\")) + \"/change_avatar\";\n return $http.post(url, data, {}, options);\n };\n service.removeAvatar = function() {\n var url;\n url = ($urls.resolve(\"users\")) + \"/remove_avatar\";\n return $http.post(url);\n };\n service.changePassword = function(currentPassword, newPassword) {\n var data, url;\n url = ($urls.resolve(\"users\")) + \"/change_password\";\n data = {\n current_password: currentPassword,\n password: newPassword\n };\n return $http.post(url, data);\n };\n return function(instance) {\n return instance.userSettings = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgUserSettingsResourcesProvider\", [\"$tgConfig\", \"$tgRepo\", \"$tgHttp\", \"$tgUrls\", \"$q\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, resourceProvider, sizeFormat, taiga;\n\n taiga = this.taiga;\n\n sizeFormat = this.taiga.sizeFormat;\n\n resourceProvider = function($http, $urls) {\n var service;\n service = {};\n service.contacts = function(userId, options) {\n var httpOptions, url;\n if (options == null) {\n options = {};\n }\n url = $urls.resolve(\"user-contacts\", userId);\n httpOptions = {\n headers: {}\n };\n if (!options.enablePagination) {\n httpOptions.headers[\"x-disable-pagination\"] = \"1\";\n }\n return $http.get(url, {}, httpOptions).then(function(result) {\n return result.data;\n });\n };\n return function(instance) {\n return instance.users = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgUsersResourcesProvider\", [\"$tgHttp\", \"$tgUrls\", \"$q\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var generateHash, hashShowTags, module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n generateHash = taiga.generateHash;\n\n hashShowTags = 'backlog-tags';\n\n resourceProvider = function($repo, $http, $urls, $storage, $q) {\n var hashSuffix, service;\n service = {};\n hashSuffix = \"userstories-queryparams\";\n service.get = function(projectId, usId, extraParams) {\n var params;\n params = service.getQueryParams(projectId);\n params.project = projectId;\n params = _.extend({}, params, extraParams);\n return $repo.queryOne(\"userstories\", usId, params);\n };\n service.getByRef = function(projectId, ref, extraParams) {\n var params;\n if (extraParams == null) {\n extraParams = {};\n }\n params = service.getQueryParams(projectId);\n params.project = projectId;\n params.ref = ref;\n params = _.extend({}, params, extraParams);\n if (params.milestone === 'null') {\n delete params.milestone;\n delete params['no-milestone'];\n }\n return $repo.queryOne(\"userstories\", \"by_ref\", params);\n };\n service.listInAllProjects = function(filters) {\n return $repo.queryMany(\"userstories\", filters);\n };\n service.filtersData = function(params) {\n return $repo.queryOneRaw(\"userstories-filters\", null, params);\n };\n service.listUnassigned = function(projectId, filters, pageSize, store) {\n var params;\n if (store == null) {\n store = true;\n }\n params = {\n \"project\": projectId,\n \"milestone\": \"null\"\n };\n params = _.extend({}, params, filters || {});\n if (store) {\n service.storeQueryParams(projectId, params);\n }\n return $repo.queryMany(\"userstories\", _.extend(params, {\n page_size: pageSize\n }), {\n enablePagination: true\n }, true);\n };\n service.listAll = function(projectId, filters) {\n var params;\n params = {\n \"project\": projectId\n };\n params = _.extend({}, params, filters || {});\n service.storeQueryParams(projectId, params);\n return $repo.queryMany(\"userstories\", params);\n };\n service.bulkCreate = function(projectId, status, bulk, swimlane) {\n var data, url;\n data = {\n project_id: projectId,\n status_id: status,\n bulk_stories: bulk,\n swimlane_id: swimlane\n };\n url = $urls.resolve(\"bulk-create-us\");\n return $http.post(url, data);\n };\n service.upvote = function(userStoryId) {\n var url;\n url = $urls.resolve(\"userstory-upvote\", userStoryId);\n return $http.post(url);\n };\n service.downvote = function(userStoryId) {\n var url;\n url = $urls.resolve(\"userstory-downvote\", userStoryId);\n return $http.post(url);\n };\n service.watch = function(userStoryId) {\n var url;\n url = $urls.resolve(\"userstory-watch\", userStoryId);\n return $http.post(url);\n };\n service.unwatch = function(userStoryId) {\n var url;\n url = $urls.resolve(\"userstory-unwatch\", userStoryId);\n return $http.post(url);\n };\n service.bulkUpdateBacklogOrder = function(projectId, milestoneId, afterUserstoryId, beforeUserstoryId, bulkUserstories) {\n var params, url;\n url = $urls.resolve(\"bulk-update-us-backlog-order\");\n params = {\n project_id: projectId,\n bulk_userstories: bulkUserstories\n };\n if (milestoneId) {\n params.milestone_id = milestoneId;\n }\n if (afterUserstoryId) {\n params.after_userstory_id = afterUserstoryId;\n } else if (beforeUserstoryId) {\n params.before_userstory_id = beforeUserstoryId;\n }\n return $http.post(url, params);\n };\n service.bulkUpdateMilestone = function(projectId, milestoneId, data) {\n var params, url;\n url = $urls.resolve(\"bulk-update-us-milestone\");\n params = {\n project_id: projectId,\n milestone_id: milestoneId,\n bulk_stories: data\n };\n return $http.post(url, params);\n };\n service.bulkUpdateKanbanOrder = function(projectId, statusId, swimlaneId, afterUserstoryId, beforeUserstoryId, bulkUserstories) {\n var params, url;\n url = $urls.resolve(\"bulk-update-us-kanban-order\");\n params = {\n project_id: projectId,\n status_id: statusId,\n bulk_userstories: bulkUserstories\n };\n if (afterUserstoryId) {\n params.after_userstory_id = afterUserstoryId;\n } else if (beforeUserstoryId) {\n params.before_userstory_id = beforeUserstoryId;\n }\n if (swimlaneId) {\n params.swimlane_id = swimlaneId;\n }\n return $http.post(url, params);\n };\n service.listValues = function(projectId, type) {\n var params;\n params = {\n \"project\": projectId\n };\n service.storeQueryParams(projectId, params);\n return $repo.queryMany(type, params);\n };\n service.createDefaultValues = function(projectId, type) {\n var data, url;\n data = {\n \"project_id\": projectId\n };\n url = $urls.resolve(type + \"-create-default\");\n return $http.post(url, data);\n };\n service.editStatus = function(statusId, wip_limit) {\n var params, url;\n url = $urls.resolve(\"userstory-statuses\");\n url = url + \"/\" + statusId;\n params = {\n wip_limit: wip_limit\n };\n return $http.patch(url, params);\n };\n service.storeQueryParams = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getQueryParams = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashSuffix;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || {};\n };\n service.storeBacklog = function(projectId, ids) {\n var hash, ns;\n ns = projectId + \":backlog-ids\";\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, ids);\n };\n service.getBacklog = function(projectId) {\n var hash, ns;\n ns = projectId + \":backlog-ids\";\n hash = generateHash([projectId, ns]);\n return $storage.get(hash) || [];\n };\n service.storeShowTags = function(projectId, params) {\n var hash, ns;\n ns = projectId + \":\" + hashShowTags;\n hash = generateHash([projectId, ns]);\n return $storage.set(hash, params);\n };\n service.getShowTags = function(projectId) {\n var hash, ns;\n ns = projectId + \":\" + hashShowTags;\n hash = generateHash([projectId, ns]);\n return $storage.get(hash);\n };\n return function(instance) {\n return instance.userstories = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgUserstoriesResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", \"$tgStorage\", \"$q\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, resourceProvider;\n\n resourceProvider = function($repo, $urls, $http) {\n var service;\n service = {};\n service.list = function(webhookId) {\n var params;\n params = {\n webhook: webhookId\n };\n return $repo.queryMany(\"webhooklogs\", params);\n };\n service.resend = function(webhooklogId) {\n var url;\n url = $urls.resolve(\"webhooklogs-resend\", webhooklogId);\n return $http.post(url);\n };\n return function(instance) {\n return instance.webhooklogs = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgWebhookLogsResourcesProvider\", [\"$tgRepo\", \"$tgUrls\", \"$tgHttp\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, resourceProvider;\n\n resourceProvider = function($repo, $urls, $http) {\n var service;\n service = {};\n service.list = function(projectId) {\n var params;\n params = {\n project: projectId\n };\n return $repo.queryMany(\"webhooks\", params);\n };\n service.test = function(webhookId) {\n var url;\n url = $urls.resolve(\"webhooks-test\", webhookId);\n return $http.post(url);\n };\n return function(instance) {\n return instance.webhooks = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgWebhooksResourcesProvider\", [\"$tgRepo\", \"$tgUrls\", \"$tgHttp\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, resourceProvider, taiga;\n\n taiga = this.taiga;\n\n resourceProvider = function($repo, $http, $urls) {\n var service;\n service = {};\n service.get = function(wikiId) {\n return $repo.queryOne(\"wiki\", wikiId);\n };\n service.getBySlug = function(projectId, slug) {\n return $repo.queryOne(\"wiki\", \"by_slug?project=\" + projectId + \"&slug=\" + slug);\n };\n service.list = function(projectId) {\n return $repo.queryMany(\"wiki\", {\n project: projectId\n });\n };\n service.listLinks = function(projectId) {\n return $repo.queryMany(\"wiki-links\", {\n project: projectId\n });\n };\n return function(instance) {\n return instance.wiki = service;\n };\n };\n\n module = angular.module(\"taigaResources\");\n\n module.factory(\"$tgWikiResourcesProvider\", [\"$tgRepo\", \"$tgHttp\", \"$tgUrls\", resourceProvider]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UserChangePasswordController, UserChangePasswordDirective, debounce, mixOf, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaUserSettings\");\n\n UserChangePasswordController = (function(superClass) {\n extend(UserChangePasswordController, superClass);\n\n UserChangePasswordController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"$tgAuth\", \"$translate\"];\n\n function UserChangePasswordController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, auth, translate) {\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.navUrls = navUrls;\n this.auth = auth;\n this.translate = translate;\n this.scope.sectionName = this.translate.instant(\"CHANGE_PASSWORD.SECTION_NAME\");\n this.scope.user = this.auth.getUser();\n }\n\n return UserChangePasswordController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"UserChangePasswordController\", UserChangePasswordController);\n\n UserChangePasswordDirective = function($rs, $confirm, $loading, $translate) {\n var link;\n link = function($scope, $el, $attrs, ctrl) {\n var form, submit, submitButton;\n form = new checksley.Form($el.find(\"form\"));\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var currentLoading, promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n if ($scope.newPassword1 !== $scope.newPassword2) {\n $confirm.notify('error', $translate.instant(\"CHANGE_PASSWORD.ERROR_PASSWORD_MATCH\"));\n return;\n }\n currentLoading = $loading().target(submitButton).start();\n promise = $rs.userSettings.changePassword($scope.currentPassword, $scope.newPassword1);\n promise.then(function() {\n currentLoading.finish();\n return $confirm.notify('success');\n });\n return promise.then(null, function(response) {\n currentLoading.finish();\n return $confirm.notify('error', response.data._error_message);\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n $el.on(\"submit\", \"form\", submit);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUserChangePassword\", [\"$tgResources\", \"$tgConfirm\", \"$tgLoading\", \"$translate\", UserChangePasswordDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DeleteUserDirective, bindOnce, debounce, module, taiga;\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaUserSettings\");\n\n DeleteUserDirective = function($repo, $rootscope, $auth, $location, $navUrls, lightboxService, $loading) {\n var link;\n link = function($scope, $el, $attrs) {\n var submit, submitButton;\n $scope.$on(\"deletelightbox:new\", function(ctx, user) {\n return lightboxService.open($el);\n });\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n submit = function() {\n var currentLoading, promise;\n currentLoading = $loading().target(submitButton).start();\n promise = $repo.remove($scope.user);\n promise.then(function(data) {\n currentLoading.finish();\n lightboxService.close($el);\n $auth.logout();\n return $location.path($navUrls.resolve(\"login\"));\n });\n return promise.then(null, function() {\n currentLoading.finish();\n return console.log(\"FAIL\");\n });\n };\n $el.on(\"click\", \".js-cancel\", function(event) {\n event.preventDefault();\n return lightboxService.close($el);\n });\n $el.on(\"click\", \".js-confirm\", debounce(2000, function(event) {\n event.preventDefault();\n return submit();\n }));\n return submitButton = $el.find(\".js-confirm\");\n };\n return {\n link: link,\n templateUrl: \"user/lightbox/lightbox-delete-account.html\"\n };\n };\n\n module.directive(\"tgLbDeleteUser\", [\"$tgRepo\", \"$rootScope\", \"$tgAuth\", \"$tgLocation\", \"$tgNavUrls\", \"lightboxService\", \"$tgLoading\", DeleteUserDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UserLiveNotificationsController, UserLiveNotificationsDirective, UserLiveNotificationsListDirective, bindOnce, mixOf, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaUserSettings\");\n\n UserLiveNotificationsController = (function(superClass) {\n extend(UserLiveNotificationsController, superClass);\n\n UserLiveNotificationsController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"$tgAuth\", \"tgErrorHandlingService\"];\n\n function UserLiveNotificationsController(scope, rootscope, repo, confirm, rs, params, q, location, navUrls, auth, errorHandlingService) {\n var promise;\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.navUrls = navUrls;\n this.auth = auth;\n this.errorHandlingService = errorHandlingService;\n this.scope.sectionName = \"USER_SETTINGS.NOTIFICATIONS.LIVE_SECTION_NAME\";\n this.scope.user = this.auth.getUser();\n promise = this.loadInitialData();\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n UserLiveNotificationsController.prototype.loadInitialData = function() {\n return this.rs.notifyPolicies.list().then((function(_this) {\n return function(notifyPolicies) {\n _this.scope.notifyPolicies = notifyPolicies;\n return notifyPolicies;\n };\n })(this));\n };\n\n return UserLiveNotificationsController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"UserLiveNotificationsController\", UserLiveNotificationsController);\n\n UserLiveNotificationsDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUserLiveNotifications\", UserLiveNotificationsDirective);\n\n UserLiveNotificationsListDirective = function($repo, $confirm, $compile) {\n var link, template;\n template = _.template(\"<% _.each(notifyPolicies, function (notifyPolicy, index) { %>\\n
\\\">\\n
<%- notifyPolicy.project_name %>
\\n
\\n
\\n \\\" id=\\\"policy-all-<%- notifyPolicy.id %>\\\"\\n value=\\\"2\\\" <% if (notifyPolicy.live_notify_level == 2) { %>checked=\\\"checked\\\"<% } %>/>\\n \\n
\\n
\\n
\\n
\\n \\\" id=\\\"policy-involved-<%- notifyPolicy.id %>\\\"\\n value=\\\"1\\\" <% if (notifyPolicy.live_notify_level == 1) { %>checked=\\\"checked\\\"<% } %> />\\n \\n
\\n
\\n
\\n
\\n \\\" id=\\\"policy-none-<%- notifyPolicy.id %>\\\"\\n value=\\\"3\\\" <% if (notifyPolicy.live_notify_level == 3) { %>checked=\\\"checked\\\"<% } %> />\\n \\n
\\n
\\n
\\n<% }) %>\");\n link = function($scope, $el, $attrs) {\n var render;\n render = function() {\n var ctx, html;\n $el.off();\n ctx = {\n notifyPolicies: $scope.notifyPolicies\n };\n html = template(ctx);\n $el.html($compile(html)($scope));\n return $el.on(\"change\", \"input[type=radio]\", function(event) {\n var onError, onSuccess, policy, policyIndex, prev_level, target;\n target = angular.element(event.currentTarget);\n policyIndex = target.parents(\".policy-table-row\").data('index');\n policy = $scope.notifyPolicies[policyIndex];\n prev_level = policy.live_notify_level;\n policy.live_notify_level = parseInt(target.val(), 10);\n onSuccess = function() {\n return $confirm.notify(\"success\");\n };\n onError = function() {\n $confirm.notify(\"error\");\n return target.parents(\".policy-table-row\").find(\"input[value=\" + prev_level + \"]\").prop(\"checked\", true);\n };\n return $repo.save(policy).then(onSuccess, onError);\n });\n };\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n return bindOnce($scope, $attrs.ngModel, render);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUserLiveNotificationsList\", [\"$tgRepo\", \"$tgConfirm\", \"$compile\", UserLiveNotificationsListDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TaigaAvatarModelDirective, UserAvatarDirective, UserProfileDirective, UserSettingsController, debounce, mixOf, module, sizeFormat, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n sizeFormat = this.taiga.sizeFormat;\n\n module = angular.module(\"taigaUserSettings\");\n\n debounce = this.taiga.debounce;\n\n UserSettingsController = (function(superClass) {\n extend(UserSettingsController, superClass);\n\n UserSettingsController.$inject = [\"$scope\", \"$rootScope\", \"$tgConfig\", \"$tgRepo\", \"$tgConfirm\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"$tgNavUrls\", \"$tgAuth\", \"$translate\", \"tgErrorHandlingService\", \"$window\"];\n\n function UserSettingsController(scope, rootscope, config, repo, confirm, rs, params, q, location, navUrls, auth, translate, errorHandlingService, window1) {\n var maxFileSize, promise, text;\n this.scope = scope;\n this.rootscope = rootscope;\n this.config = config;\n this.repo = repo;\n this.confirm = confirm;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.navUrls = navUrls;\n this.auth = auth;\n this.translate = translate;\n this.errorHandlingService = errorHandlingService;\n this.window = window1;\n this.scope.sectionName = \"USER_SETTINGS.MENU.SECTION_TITLE\";\n this.scope.project = {};\n this.scope.user = this.auth.getUser();\n if (!this.scope.user) {\n this.errorHandlingService.permissionDenied();\n } else {\n this.scope.lang = this.getLan();\n this.scope.theme = this.getTheme();\n }\n maxFileSize = this.config.get(\"maxUploadFileSize\", null);\n if (maxFileSize) {\n text = this.translate.instant(\"USER_SETTINGS.AVATAR_MAX_SIZE\", {\n \"maxFileSize\": sizeFormat(maxFileSize)\n });\n this.scope.maxFileSizeMsg = text;\n }\n promise = this.loadInitialData();\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n UserSettingsController.prototype.loadInitialData = function() {\n var compiledThemes;\n compiledThemes = window._taigaAvailableThemes;\n this.scope.availableThemes = this.config.get(\"themes\", []).filter((function(_this) {\n return function(theme) {\n return compiledThemes.includes(theme);\n };\n })(this));\n return this.rs.locales.list().then((function(_this) {\n return function(locales) {\n _this.scope.locales = locales;\n return locales;\n };\n })(this));\n };\n\n UserSettingsController.prototype.openDeleteLightbox = function() {\n return this.rootscope.$broadcast(\"deletelightbox:new\", this.scope.user);\n };\n\n UserSettingsController.prototype.getLan = function() {\n return this.scope.user.lang || this.translate.preferredLanguage();\n };\n\n UserSettingsController.prototype.getTheme = function() {\n var compiledThemes, theme;\n compiledThemes = window._taigaAvailableThemes;\n theme = this.scope.user.theme || this.config.get(\"defaultTheme\") || \"taiga\";\n if (!compiledThemes.includes(theme)) {\n theme = \"taiga\";\n }\n return theme;\n };\n\n UserSettingsController.prototype.exportProfile = function() {\n var onError, onSuccess;\n onSuccess = function(result) {\n var dumpUrl;\n dumpUrl = result.data.url;\n return this.window.open(dumpUrl, \"_blank\");\n };\n onError = (function(_this) {\n return function(response) {\n var ref;\n if ((ref = response.data) != null ? ref._error_message : void 0) {\n return _this.confirm.notify(\"error\", response.data._error_message);\n }\n };\n })(this);\n return this.auth.exportProfile().then(onSuccess, onError);\n };\n\n UserSettingsController.prototype.verifyEmail = function() {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function(result) {\n var text;\n text = _this.translate.instant(\"USER_PROFILE.VERIFY_EMAIL_SUCCESS\");\n return _this.confirm.notify(\"success\", text);\n };\n })(this);\n onError = (function(_this) {\n return function(response) {\n var ref;\n if ((ref = response.data) != null ? ref._error_message : void 0) {\n return _this.confirm.notify(\"error\", response.data._error_message);\n }\n };\n })(this);\n return this.auth.sendVerificationEmail().then(onSuccess, onError);\n };\n\n return UserSettingsController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"UserSettingsController\", UserSettingsController);\n\n UserProfileDirective = function($confirm, $auth, $repo, $translate) {\n var link;\n link = function($scope, $el, $attrs) {\n var submit;\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var changeEmail, form, onError, onSuccess;\n event.preventDefault();\n form = $el.find(\"form\").checksley();\n if (!form.validate()) {\n return;\n }\n changeEmail = $scope.user.isAttributeModified(\"email\");\n $scope.user.lang = $scope.lang;\n $scope.user.theme = $scope.theme;\n onSuccess = function(data) {\n var text;\n $auth.setUser(data);\n if (changeEmail) {\n text = $translate.instant(\"USER_PROFILE.CHANGE_EMAIL_SUCCESS\");\n return $confirm.success(text);\n } else {\n return $confirm.notify('success');\n }\n };\n onError = function(data) {\n form.setErrors(data);\n return $confirm.notify('error', data._error_message);\n };\n return $repo.save($scope.user).then(onSuccess, onError);\n };\n })(this));\n $el.on(\"submit\", \"form\", submit);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUserProfile\", [\"$tgConfirm\", \"$tgAuth\", \"$tgRepo\", \"$translate\", UserProfileDirective]);\n\n UserAvatarDirective = function($auth, $model, $rs, $confirm) {\n var link;\n link = function($scope, $el, $attrs) {\n var onError, onSuccess, showSizeInfo;\n showSizeInfo = function() {\n return $el.find(\".size-info\").removeClass(\"hidden\");\n };\n onSuccess = function(response) {\n var user;\n user = $model.make_model(\"users\", response.data);\n $auth.setUser(user);\n $scope.user = user;\n $el.find('.loading-overlay').removeClass('active');\n return $confirm.notify('success');\n };\n onError = function(response) {\n if (response.status === 413) {\n showSizeInfo();\n }\n $el.find('.loading-overlay').removeClass('active');\n return $confirm.notify('error', response.data._error_message);\n };\n $el.on(\"click\", \".js-change-avatar\", function(e) {\n e.preventDefault();\n return $el.find(\"#avatar-field\").click();\n });\n $el.on(\"change\", \"#avatar-field\", function(event) {\n if ($scope.avatarAttachment) {\n $el.find('.loading-overlay').addClass(\"active\");\n return $rs.userSettings.changeAvatar($scope.avatarAttachment).then(onSuccess, onError);\n }\n });\n $el.on(\"click\", \"a.js-use-gravatar\", function(event) {\n $el.find('.loading-overlay').addClass(\"active\");\n return $rs.userSettings.removeAvatar().then(onSuccess, onError);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUserAvatar\", [\"$tgAuth\", \"$tgModel\", \"$tgResources\", \"$tgConfirm\", UserAvatarDirective]);\n\n TaigaAvatarModelDirective = function($parse) {\n var link;\n link = function($scope, $el, $attrs) {\n var model, modelSetter;\n model = $parse($attrs.tgAvatarModel);\n modelSetter = model.assign;\n return $el.bind('change', function() {\n return $scope.$apply(function() {\n return modelSetter($scope, $el[0].files[0]);\n });\n });\n };\n return {\n link: link\n };\n };\n\n module.directive('tgAvatarModel', ['$parse', TaigaAvatarModelDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UserSettingsNavigationDirective, module;\n\n UserSettingsNavigationDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var section;\n section = $attrs.tgUserSettingsNavigation;\n $el.find(\".active\").removeClass(\"active\");\n $el.find(\"#usersettingsmenu-\" + section).addClass(\"active\");\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module = angular.module(\"taigaUserSettings\");\n\n module.directive(\"tgUserSettingsNavigation\", UserSettingsNavigationDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UserNotificationsController, UserNotificationsDirective, UserNotificationsListDirective, bindOnce, mixOf, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaUserSettings\");\n\n UserNotificationsController = (function(superClass) {\n extend(UserNotificationsController, superClass);\n\n UserNotificationsController.$inject = [\"$scope\", \"$tgConfirm\", \"$tgResources\", \"$tgAuth\", \"$tgConfig\", \"tgResources\", \"tgCurrentUserService\", \"$translate\"];\n\n function UserNotificationsController(scope, confirm, rs, auth, config, resources, currentUserService, translate) {\n var promise;\n this.scope = scope;\n this.confirm = confirm;\n this.rs = rs;\n this.auth = auth;\n this.config = config;\n this.resources = resources;\n this.currentUserService = currentUserService;\n this.translate = translate;\n this.scope.sectionName = \"USER_SETTINGS.NOTIFICATIONS.SECTION_NAME\";\n this.scope.user = this.auth.getUser();\n promise = this.loadInitialData();\n promise.then(null, this.onInitialDataError.bind(this));\n this.isSaas = this.config.get(\"isSaas\");\n this.onPremiseSubscribed = false;\n this.loadPremise = false;\n }\n\n UserNotificationsController.prototype.subscribed = function() {\n this.loadPremise = true;\n return this.resources.onPremise.subscribeOnPremiseNewsletter({\n \"email\": this.currentUserService.getUser().get('email'),\n \"full_name\": this.currentUserService.getUser().get('full_name'),\n \"origin_form\": 'Newsletter sign-up settings'\n }).then((function(_this) {\n return function() {\n var text;\n text = _this.translate.instant(\"PROJECT.NEWSLETTER_OPENING.SAVED_PREFERENCE\");\n _this.confirm.notify(\"success\", \"Your preferences have been save successfully\");\n _this.onPremiseSubscribed = true;\n _this.loadPremise = false;\n return _this.resources.user.getUserStorage('dont_ask_premise_newsletter').then(function(storageState) {\n return _this.resources.user.setUserStorage('dont_ask_premise_newsletter', true);\n })[\"catch\"](function(storageError) {\n if (storageError.status = 404) {\n return _this.resources.user.createUserStorage('dont_ask_premise_newsletter', false);\n }\n });\n };\n })(this))[\"catch\"]((function(_this) {\n return function() {\n _this.confirm.notify(\"light-error\", \"\");\n return _this.loadPremise = false;\n };\n })(this));\n };\n\n UserNotificationsController.prototype.loadInitialData = function() {\n return this.rs.notifyPolicies.list().then((function(_this) {\n return function(notifyPolicies) {\n _this.scope.notifyPolicies = notifyPolicies;\n return notifyPolicies;\n };\n })(this));\n };\n\n return UserNotificationsController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"UserNotificationsController\", UserNotificationsController);\n\n UserNotificationsDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUserNotifications\", UserNotificationsDirective);\n\n UserNotificationsListDirective = function($repo, $confirm, $compile) {\n var link, template;\n template = _.template(\"<% _.each(notifyPolicies, function (notifyPolicy, index) { %>\\n
\\\">\\n
<%- notifyPolicy.project_name %>
\\n
\\n
\\n \\\" id=\\\"policy-all-<%- notifyPolicy.id %>\\\"\\n value=\\\"2\\\" <% if (notifyPolicy.notify_level == 2) { %>checked=\\\"checked\\\"<% } %>/>\\n \\n
\\n
\\n
\\n
\\n \\\" id=\\\"policy-involved-<%- notifyPolicy.id %>\\\"\\n value=\\\"1\\\" <% if (notifyPolicy.notify_level == 1) { %>checked=\\\"checked\\\"<% } %> />\\n \\n
\\n
\\n
\\n
\\n \\\" id=\\\"policy-none-<%- notifyPolicy.id %>\\\"\\n value=\\\"3\\\" <% if (notifyPolicy.notify_level == 3) { %>checked=\\\"checked\\\"<% } %> />\\n \\n
\\n
\\n
\\n<% }) %>\");\n link = function($scope, $el, $attrs) {\n var render;\n render = function() {\n var ctx, html;\n $el.off();\n ctx = {\n notifyPolicies: $scope.notifyPolicies\n };\n html = template(ctx);\n $el.html($compile(html)($scope));\n return $el.on(\"change\", \"input[type=radio]\", function(event) {\n var onError, onSuccess, policy, policyIndex, prev_level, target;\n target = angular.element(event.currentTarget);\n policyIndex = target.parents(\".policy-table-row\").data('index');\n policy = $scope.notifyPolicies[policyIndex];\n prev_level = policy.notify_level;\n policy.notify_level = parseInt(target.val(), 10);\n onSuccess = function() {\n return $confirm.notify(\"success\");\n };\n onError = function() {\n $confirm.notify(\"error\");\n return target.parents(\".policy-table-row\").find(\"input[value=\" + prev_level + \"]\").prop(\"checked\", true);\n };\n return $repo.save(policy).then(onSuccess, onError);\n });\n };\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n return bindOnce($scope, $attrs.ngModel, render);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUserNotificationsList\", [\"$tgRepo\", \"$tgConfirm\", \"$compile\", UserNotificationsListDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UserProjectSettingsController, bindOnce, mixOf, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaUserSettings\");\n\n UserProjectSettingsController = (function(superClass) {\n extend(UserProjectSettingsController, superClass);\n\n UserProjectSettingsController.$inject = [\"$rootScope\", \"$scope\", \"$tgSections\", \"$tgResources\", \"$tgRepo\", \"$tgConfirm\", \"tgCurrentUserService\"];\n\n function UserProjectSettingsController(rootScope, scope, tgSections, rs, repo, confirm, currentUserService) {\n var promise;\n this.rootScope = rootScope;\n this.scope = scope;\n this.tgSections = tgSections;\n this.rs = rs;\n this.repo = repo;\n this.confirm = confirm;\n this.currentUserService = currentUserService;\n this.scope.sections = this.tgSections.list();\n promise = this.loadInitialData();\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n UserProjectSettingsController.prototype.loadInitialData = function() {\n return this.rs.userProjectSettings.list().then((function(_this) {\n return function(userProjectSettings) {\n return _this.scope.userProjectSettings = userProjectSettings;\n };\n })(this));\n };\n\n UserProjectSettingsController.prototype.updateCustomHomePage = function(projectSettings) {\n var onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this.currentUserService.loadProjects();\n _this.rootScope.$broadcast(\"dropdown-project-list:updated\");\n return _this.confirm.notify(\"success\");\n };\n })(this);\n onError = (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this);\n return this.repo.save(projectSettings).then(onSuccess, onError);\n };\n\n UserProjectSettingsController.prototype.filteredSections = function(projectSettings) {\n return _.filter(this.scope.sections, function(section) {\n var ref;\n return ref = section.id, indexOf.call(projectSettings.allowed_sections, ref) >= 0;\n });\n };\n\n return UserProjectSettingsController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"UserProjectSettingsController\", UserProjectSettingsController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UserWebNotificationsController, UserWebNotificationsDirective, UserWebNotificationsListDirective, bindOnce, mixOf, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaUserSettings\");\n\n UserWebNotificationsController = (function(superClass) {\n extend(UserWebNotificationsController, superClass);\n\n UserWebNotificationsController.$inject = [\"$scope\", \"$tgResources\", \"$tgAuth\"];\n\n function UserWebNotificationsController(scope, rs, auth) {\n var promise;\n this.scope = scope;\n this.rs = rs;\n this.auth = auth;\n this.scope.sectionName = \"USER_SETTINGS.EVENTS.SECTION_NAME\";\n this.scope.user = this.auth.getUser();\n promise = this.loadInitialData();\n promise.then(null, this.onInitialDataError.bind(this));\n }\n\n UserWebNotificationsController.prototype.loadInitialData = function() {\n return this.rs.notifyPolicies.list().then((function(_this) {\n return function(notifyPolicies) {\n _this.scope.notifyPolicies = notifyPolicies;\n return notifyPolicies;\n };\n })(this));\n };\n\n return UserWebNotificationsController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"UserWebNotificationsController\", UserWebNotificationsController);\n\n UserWebNotificationsDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUserWebNotifications\", UserWebNotificationsDirective);\n\n UserWebNotificationsListDirective = function($repo, $confirm, $compile) {\n var link, template;\n template = _.template(\"<% _.each(notifyPolicies, function (notifyPolicy, index) { %>\\n
\\n
<%- notifyPolicy.project_name %>
\\n
\\n
\\\">\\n checked=\\\"checked\\\" <% } %>\\n name=\\\"policy-<%- notifyPolicy.id %>\\\" id=\\\"policy-<%- notifyPolicy.id %>\\\"/>\\n
\\n \\n \\n
\\n
\\n
\\n<% }) %>\");\n link = function($scope, $el, $attrs) {\n var render;\n render = function() {\n var ctx, html;\n $el.off();\n ctx = {\n notifyPolicies: $scope.notifyPolicies\n };\n html = template(ctx);\n $el.html($compile(html)($scope));\n return $el.on(\"click\", \".check\", function(event) {\n var onError, onSuccess, policy, policyIndex, target;\n target = angular.element(event.currentTarget);\n policyIndex = target.data('index');\n policy = $scope.notifyPolicies[policyIndex];\n policy.web_notify_level = !policy.web_notify_level;\n onSuccess = function() {\n $confirm.notify(\"success\");\n return target.find(\"input\").prop(\"checked\", policy.web_notify_level);\n };\n onError = function() {\n return $confirm.notify(\"error\");\n };\n return $repo.save(policy).then(onSuccess, onError);\n });\n };\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n return bindOnce($scope, $attrs.ngModel, render);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUserWebNotificationsList\", [\"$tgRepo\", \"$tgConfirm\", \"$compile\", UserWebNotificationsListDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n angular.module(\"taigaComponents\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaDiscover\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaExternalApps\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n angular.module(\"taigaHistory\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaHome\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n angular.module(\"taigaNavigationBar\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n angular.module(\"taigaNotifications\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaProfile\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n angular.module(\"taigaProjects\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n angular.module(\"taigaResources2\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n angular.module(\"taigaUserTimeline\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaUtils\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n angular.module(\"taigaWikiHistory\", []);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AnimatedCounter;\n\n AnimatedCounter = function() {\n var link, template;\n template = \" data.wip}\\\"\\n class=\\\"animated-counter-inner\\\">\\n
\\n
\\n {{ nextUp.current || 0 }} / {{ nextUp.wip }}\\n
\\n
\\n {{ renderCount.current || 0 }} / {{ renderCount.wip }}\\n
\\n
\\n {{ nextDown.current || 0 }} / {{ nextDown.wip }}\\n
\\n
\\n\";\n link = function($scope, $el, $attrs) {\n var counter, initialLoad, lastCount, renderData, transitionEnd, unwatch;\n transitionEnd = function(event) {\n return $scope.$evalAsync((function(_this) {\n return function() {\n if ($scope.nextUp !== void 0) {\n $scope.renderCount = $scope.nextUp;\n } else {\n $scope.renderCount = $scope.nextDown;\n }\n return $(counter).removeClass('inc dec');\n };\n })(this));\n };\n counter = $el.find('.counter-translator');\n counter.on('transitionend', transitionEnd);\n initialLoad = false;\n lastCount = void 0;\n unwatch = $scope.$on('kanban:userstories:loaded', function() {\n initialLoad = true;\n return unwatch();\n });\n renderData = function(data) {\n var getCounter;\n getCounter = (function(_this) {\n return function(num) {\n return {\n current: num,\n wip: data.wip\n };\n };\n })(this);\n $scope.nextUp = void 0;\n $scope.nextDown = void 0;\n if (!$scope.data || $scope.data.count === void 0) {\n lastCount = 0;\n $scope.renderCount = getCounter(lastCount);\n return;\n } else if (lastCount === $scope.data.count) {\n return;\n } else if (!initialLoad || lastCount === void 0) {\n lastCount = $scope.data.count;\n $scope.renderCount = getCounter(lastCount);\n return;\n }\n if ($scope.data.count > lastCount) {\n lastCount = $scope.data.count;\n $scope.nextUp = getCounter($scope.data.count);\n } else if ($scope.data.count < lastCount) {\n lastCount = $scope.data.count;\n $scope.nextDown = getCounter($scope.data.count);\n }\n if ($scope.nextUp !== void 0 || $scope.nextDown !== void 0) {\n counter.removeClass('inc dec');\n return $scope.$evalAsync((function(_this) {\n return function() {\n if ($scope.nextUp !== void 0) {\n return counter.addClass('inc');\n } else if ($scope.nextDown !== void 0) {\n return counter.addClass('dec');\n }\n };\n })(this));\n }\n };\n $scope.$watch('disabled', function(disabled) {\n if ($scope.disabled) {\n return;\n }\n return renderData($scope.data);\n });\n $scope.$watch('data', function(data) {\n if ($scope.disabled) {\n return;\n }\n return renderData(data);\n });\n return $scope.$on(\"$destroy\", function() {\n $el.off();\n return counter.off();\n });\n };\n return {\n link: link,\n template: template,\n scope: {\n data: '<',\n disabled: '<'\n }\n };\n };\n\n angular.module('taigaComponents').directive(\"tgAnimatedCounter\", [AnimatedCounter]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AssignedToInlineDirective;\n\n AssignedToInlineDirective = function($rootscope, $confirm, $repo, $loading, $modelTransform, $template, $translate, $compile, $currentUserService, avatarService, $userListService) {\n var link;\n link = function($scope, $el, $attr, $model) {\n var isEditable, renderUser, renderUserList;\n isEditable = function() {\n var ref, ref1;\n return ((ref = $scope.project) != null ? (ref1 = ref.my_permissions) != null ? ref1.indexOf($attr.requiredPerm) : void 0 : void 0) !== -1;\n };\n renderUserList = function(text) {\n var selectedId, users, visibleUsers;\n selectedId = $model.$modelValue.assigned_to;\n users = $userListService.searchUsers(text);\n if (selectedId) {\n users = _.reject(users, {\n \"id\": selectedId\n });\n }\n visibleUsers = _.slice(users, 0, 5);\n visibleUsers = _.map(visibleUsers, function(user) {\n return user.avatar = avatarService.getAvatar(user);\n });\n $scope.users = _.slice(users, 0, 5);\n return $scope.showMore = users.length > 5;\n };\n renderUser = function(assignedObject) {\n var assigned_to_extra_info;\n if (assignedObject != null ? assignedObject.assigned_to : void 0) {\n $scope.selected = assignedObject.assigned_to;\n assigned_to_extra_info = $scope.usersById[$scope.selected];\n $scope.fullName = assigned_to_extra_info != null ? assigned_to_extra_info.full_name_display : void 0;\n $scope.isUnassigned = false;\n $scope.avatar = avatarService.getAvatar(assigned_to_extra_info);\n $scope.bg = $scope.avatar.bg;\n $scope.isIocaine = assignedObject != null ? assignedObject.is_iocaine : void 0;\n } else {\n $scope.fullName = $translate.instant(\"COMMON.ASSIGNED_TO.ASSIGN\");\n $scope.isUnassigned = true;\n $scope.avatar = avatarService.getAvatar(null);\n $scope.bg = null;\n $scope.isIocaine = false;\n }\n $scope.fullNameVisible = !($scope.isUnassigned && !$currentUserService.isAuthenticated());\n return $scope.isEditable = isEditable();\n };\n $el.on(\"click\", \".users-search\", function(event) {\n return event.stopPropagation();\n });\n $el.on(\"click\", \".users-dropdown\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n $scope.usersSearch = \"\";\n renderUserList();\n $scope.$apply();\n return $el.find(\".pop-users\").popover().open();\n });\n $scope.selfAssign = function() {\n $model.$modelValue.assigned_to = $currentUserService.getUser().get('id');\n return renderUser($model.$modelValue);\n };\n $scope.unassign = function() {\n $model.$modelValue.assigned_to = null;\n return renderUser();\n };\n $scope.$watch(\"usersSearch\", function(searchingText) {\n if (searchingText != null) {\n renderUserList(searchingText);\n return $el.find('input').focus();\n }\n });\n $el.on(\"click\", \".user-list-single\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n $model.$modelValue.assigned_to = target.data(\"user-id\");\n renderUser($model.$modelValue);\n return $scope.$apply();\n });\n $scope.$watch($attr.ngModel, function(instance) {\n return renderUser(instance);\n });\n $scope.$on(\"isiocaine:changed\", function(ctx, instance) {\n return renderUser(instance);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n templateUrl: \"components/assigned-inline/assigned-to-inline.html\",\n require: \"ngModel\"\n };\n };\n\n angular.module('taigaComponents').directive(\"tgAssignedToInline\", [\"$rootScope\", \"$tgConfirm\", \"$tgRepo\", \"$tgLoading\", \"$tgQueueModelTransformation\", \"$tgTemplate\", \"$translate\", \"$compile\", \"tgCurrentUserService\", \"tgAvatarService\", \"tgUserListService\", AssignedToInlineDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AssignedUsersInlineDirective,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n AssignedUsersInlineDirective = function($rootscope, $confirm, $repo, $loading, $modelTransform, $template, $translate, $compile, $currentUserService, avatarService, $userListService) {\n var link;\n link = function($scope, $el, $attrs, $model) {\n var applyToModel, currentAssignedIds, currentAssignedTo, isAssigned, renderUsers, renderUsersList;\n currentAssignedIds = [];\n currentAssignedTo = null;\n isAssigned = function() {\n return currentAssignedIds.length > 0;\n };\n renderUsersList = function(text) {\n var selected, users, visible;\n users = $userListService.searchUsers(text);\n selected = [];\n _.map(users, function(user) {\n var ref;\n if (ref = user.id, indexOf.call(currentAssignedIds, ref) >= 0) {\n user.avatar = avatarService.getAvatar(user);\n return selected.push(user);\n }\n });\n visible = [];\n _.map(users, function(user) {\n var ref;\n if (ref = user.id, indexOf.call(currentAssignedIds, ref) < 0) {\n user.avatar = avatarService.getAvatar(user);\n return visible.push(user);\n }\n });\n $scope.selected = _.slice(selected, 0, 5);\n if ($scope.selected.length < 5) {\n $scope.users = _.slice(visible, 0, 5 - $scope.selected.length);\n } else {\n $scope.users = [];\n }\n return $scope.showMore = users.length > 5;\n };\n renderUsers = function() {\n var assignedUsers;\n assignedUsers = _.map(currentAssignedIds, function(assignedUserId) {\n return $scope.usersById[assignedUserId];\n });\n assignedUsers = _.filter(assignedUsers, function(it) {\n return !!it;\n });\n $scope.hiddenUsers = currentAssignedIds.length > 3 ? currentAssignedIds.length - 3 : 0;\n $scope.assignedUsers = _.slice(assignedUsers, 0, 3);\n return $scope.isAssigned = isAssigned();\n };\n applyToModel = function() {\n _.map(currentAssignedIds, function(userId) {\n if (!$scope.usersById[userId]) {\n return currentAssignedIds.splice(currentAssignedIds.indexOf(userId), 1);\n }\n });\n if (currentAssignedIds.length === 0) {\n currentAssignedTo = null;\n } else if (currentAssignedIds.indexOf(currentAssignedTo) === -1 || !currentAssignedTo) {\n currentAssignedTo = currentAssignedIds[0];\n }\n if (!$model.$modelValue.assigned_users) {\n $model.$modelValue.assigned_users = currentAssignedIds;\n } else {\n $model.$modelValue.setAttr('assigned_users', currentAssignedIds);\n }\n return $model.$modelValue.assigned_to = currentAssignedTo;\n };\n $el.on(\"click\", \".users-dropdown\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n $scope.usersSearch = null;\n renderUsersList();\n $scope.$apply();\n return $el.find(\".pop-users\").popover().open();\n });\n $scope.assign = function(user) {\n currentAssignedIds.push(user.id);\n renderUsers();\n return applyToModel();\n };\n $scope.selfAssign = function() {\n currentAssignedIds.push($currentUserService.getUser().get('id'));\n renderUsers();\n return applyToModel();\n };\n $scope.unassign = function(user) {\n var index;\n index = currentAssignedIds.indexOf(user.id);\n currentAssignedIds.splice(index, 1);\n renderUsers();\n return applyToModel();\n };\n $el.on(\"click\", \".users-search\", function(event) {\n return event.stopPropagation();\n });\n $scope.$watch(\"usersSearch\", function(searchingText) {\n if (searchingText != null) {\n renderUsersList(searchingText);\n return $el.find('input').focus();\n }\n });\n $scope.$watch($attrs.ngModel, function(item) {\n var assigned_to;\n if (item == null) {\n return;\n }\n currentAssignedIds = [];\n assigned_to = null;\n if (item.assigned_users != null) {\n currentAssignedIds = item.assigned_users;\n }\n assigned_to = item.assigned_to;\n return renderUsers();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n scope: true,\n link: link,\n templateUrl: \"components/assigned-inline/assigned-users-inline.html\",\n require: \"ngModel\"\n };\n };\n\n angular.module('taigaComponents').directive(\"tgAssignedUsersInline\", [\"$rootScope\", \"$tgConfirm\", \"$tgRepo\", \"$tgLoading\", \"$tgQueueModelTransformation\", \"$tgTemplate\", \"$translate\", \"$compile\", \"tgCurrentUserService\", \"tgAvatarService\", \"tgUserListService\", AssignedUsersInlineDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AttachmentLinkDirective;\n\n AttachmentLinkDirective = function($parse, attachmentsPreviewService, lightboxService) {\n var link;\n link = function(scope, el, attrs) {\n var attachment;\n attachment = $parse(attrs.tgAttachmentLink)(scope);\n el.on(\"click\", function(event) {\n if (taiga.isImage(attachment.getIn(['file', 'name']))) {\n event.preventDefault();\n return scope.$apply(function() {\n lightboxService.open($('tg-attachments-preview'));\n return attachmentsPreviewService.fileId = attachment.getIn(['file', 'id']);\n });\n } else if (taiga.isPdf(attachment.getIn(['file', 'name']))) {\n event.preventDefault();\n return window.open(attachment.getIn(['file', 'url']));\n }\n });\n return scope.$on(\"$destroy\", function() {\n return el.off();\n });\n };\n return {\n link: link\n };\n };\n\n AttachmentLinkDirective.$inject = [\"$parse\", \"tgAttachmentsPreviewService\", \"lightboxService\"];\n\n angular.module(\"taigaComponents\").directive(\"tgAttachmentLink\", AttachmentLinkDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AttachmentGalleryDirective;\n\n AttachmentGalleryDirective = function() {\n var link;\n link = function(scope, el, attrs, ctrl) {};\n return {\n scope: {},\n bindToController: {\n attachment: \"=\",\n onDelete: \"&\",\n onUpdate: \"&\",\n type: \"=\"\n },\n controller: \"Attachment\",\n controllerAs: \"vm\",\n templateUrl: \"components/attachment/attachment-gallery.html\",\n link: link\n };\n };\n\n AttachmentGalleryDirective.$inject = [];\n\n angular.module(\"taigaComponents\").directive(\"tgAttachmentGallery\", AttachmentGalleryDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AttachmentController;\n\n AttachmentController = (function() {\n AttachmentController.$inject = ['tgAttachmentsService', '$translate'];\n\n function AttachmentController(attachmentsService, translate) {\n this.attachmentsService = attachmentsService;\n this.translate = translate;\n this.form = {};\n this.form.description = this.attachment.getIn(['file', 'description']);\n this.form.is_deprecated = this.attachment.get(['file', 'is_deprecated']);\n this.title = this.translate.instant(\"ATTACHMENT.TITLE\", {\n fileName: this.attachment.get('name'),\n date: moment(this.attachment.get('created_date')).format(this.translate.instant(\"ATTACHMENT.DATE\"))\n });\n }\n\n AttachmentController.prototype.editMode = function(mode) {\n var attachment;\n attachment = this.attachment.set('editable', mode);\n return this.onUpdate({\n attachment: attachment\n });\n };\n\n AttachmentController.prototype[\"delete\"] = function() {\n return this.onDelete({\n attachment: this.attachment\n });\n };\n\n AttachmentController.prototype.save = function() {\n var attachment;\n attachment = this.attachment.set('loading', true);\n this.onUpdate({\n attachment: attachment\n });\n attachment = this.attachment.merge({\n editable: false,\n loading: false\n });\n attachment = attachment.mergeIn(['file'], {\n description: this.form.description,\n is_deprecated: !!this.form.is_deprecated\n });\n return this.onUpdate({\n attachment: attachment\n });\n };\n\n return AttachmentController;\n\n })();\n\n angular.module('taigaComponents').controller('Attachment', AttachmentController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AttachmentDirective;\n\n AttachmentDirective = function() {\n var link;\n link = function(scope, el, attrs, ctrl) {};\n return {\n scope: {},\n bindToController: {\n attachment: \"=\",\n onDelete: \"&\",\n onUpdate: \"&\",\n type: \"=\"\n },\n controller: \"Attachment\",\n controllerAs: \"vm\",\n templateUrl: \"components/attachment/attachment.html\",\n link: link\n };\n };\n\n AttachmentDirective.$inject = [];\n\n angular.module(\"taigaComponents\").directive(\"tgAttachment\", AttachmentDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AttachmentsDropDirective;\n\n AttachmentsDropDirective = function($parse) {\n var link;\n link = function(scope, el, attrs) {\n var eventAttr;\n eventAttr = $parse(attrs.tgAttachmentsDrop);\n el.on('dragover', function(e) {\n e.preventDefault();\n e.currentTarget.classList.add('attachment-dragover');\n return false;\n });\n el.on('dragleave', function(e) {\n e.preventDefault();\n e.currentTarget.classList.remove('attachment-dragover');\n return false;\n });\n el.on('drop', function(e) {\n var dataTransfer;\n e.stopPropagation();\n e.preventDefault();\n e.currentTarget.classList.remove('attachment-dragover');\n dataTransfer = e.dataTransfer || (e.originalEvent && e.originalEvent.dataTransfer);\n return scope.$apply(function() {\n return eventAttr(scope, {\n files: dataTransfer.files\n });\n });\n });\n return scope.$on(\"$destroy\", function() {\n return el.off();\n });\n };\n return {\n link: link\n };\n };\n\n AttachmentsDropDirective.$inject = [\"$parse\"];\n\n angular.module(\"taigaComponents\").directive(\"tgAttachmentsDrop\", AttachmentsDropDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AttachmentsFullController, sizeFormat;\n\n sizeFormat = this.taiga.sizeFormat;\n\n AttachmentsFullController = (function() {\n AttachmentsFullController.$inject = [\"$translate\", \"$tgConfirm\", \"$tgConfig\", \"$tgStorage\", \"tgAttachmentsFullService\", \"tgProjectService\", \"tgAttachmentsPreviewService\"];\n\n function AttachmentsFullController(translate, confirm, config, storage, attachmentsFullService, projectService, attachmentsPreviewService) {\n this.translate = translate;\n this.confirm = confirm;\n this.config = config;\n this.storage = storage;\n this.attachmentsFullService = attachmentsFullService;\n this.projectService = projectService;\n this.attachmentsPreviewService = attachmentsPreviewService;\n this.mode = this.storage.get('attachment-mode', 'list');\n this.maxFileSize = this.config.get(\"maxUploadFileSize\", null);\n if (this.maxFileSize) {\n this.maxFileSize = sizeFormat(this.maxFileSize);\n }\n this.maxFileSizeMsg = this.maxFileSize ? this.translate.instant(\"ATTACHMENT.MAX_UPLOAD_SIZE\", {\n maxFileSize: this.maxFileSize\n }) : \"\";\n taiga.defineImmutableProperty(this, 'attachments', (function(_this) {\n return function() {\n return _this.attachmentsFullService.attachments;\n };\n })(this));\n taiga.defineImmutableProperty(this, 'deprecatedsCount', (function(_this) {\n return function() {\n return _this.attachmentsFullService.deprecatedsCount;\n };\n })(this));\n taiga.defineImmutableProperty(this, 'attachmentsVisible', (function(_this) {\n return function() {\n return _this.attachmentsFullService.attachmentsVisible;\n };\n })(this));\n taiga.defineImmutableProperty(this, 'deprecatedsVisible', (function(_this) {\n return function() {\n return _this.attachmentsFullService.deprecatedsVisible;\n };\n })(this));\n }\n\n AttachmentsFullController.prototype.uploadingAttachments = function() {\n return this.attachmentsFullService.uploadingAttachments;\n };\n\n AttachmentsFullController.prototype.addAttachment = function(file) {\n var editable;\n editable = this.mode === 'list';\n return this.attachmentsFullService.addAttachment(this.projectId, this.objId, this.type, file, editable);\n };\n\n AttachmentsFullController.prototype.setMode = function(mode) {\n this.mode = mode;\n return this.storage.set('attachment-mode', mode);\n };\n\n AttachmentsFullController.prototype.toggleDeprecatedsVisible = function() {\n return this.attachmentsFullService.toggleDeprecatedsVisible();\n };\n\n AttachmentsFullController.prototype.addAttachments = function(files) {\n return _.forEach(files, (function(_this) {\n return function(file) {\n return _this.addAttachment(file);\n };\n })(this));\n };\n\n AttachmentsFullController.prototype.loadAttachments = function() {\n return this.attachmentsFullService.loadAttachments(this.type, this.objId, this.projectId);\n };\n\n AttachmentsFullController.prototype.deleteAttachment = function(toDeleteAttachment) {\n var message, title;\n this.attachmentsPreviewService.fileId = null;\n title = this.translate.instant(\"ATTACHMENT.TITLE_LIGHTBOX_DELETE_ATTACHMENT\");\n message = this.translate.instant(\"ATTACHMENT.MSG_LIGHTBOX_DELETE_ATTACHMENT\", {\n fileName: toDeleteAttachment.getIn(['file', 'name'])\n });\n return this.confirm.askOnDelete(title, message).then((function(_this) {\n return function(askResponse) {\n var onError, onSuccess;\n onError = function() {\n message = _this.translate.instant(\"ATTACHMENT.ERROR_DELETE_ATTACHMENT\", {\n errorMessage: message\n });\n _this.confirm.notify(\"error\", null, message);\n return askResponse.finish(false);\n };\n onSuccess = function() {\n return askResponse.finish();\n };\n return _this.attachmentsFullService.deleteAttachment(toDeleteAttachment, _this.type).then(onSuccess, onError);\n };\n })(this));\n };\n\n AttachmentsFullController.prototype.reorderAttachment = function(attachment, newIndex) {\n return this.attachmentsFullService.reorderAttachment(this.objId, this.type, attachment, newIndex);\n };\n\n AttachmentsFullController.prototype.updateAttachment = function(toUpdateAttachment) {\n return this.attachmentsFullService.updateAttachment(toUpdateAttachment, this.type);\n };\n\n AttachmentsFullController.prototype._isEditable = function() {\n if (this.projectService.project) {\n return this.projectService.hasPermission(this.editPermission);\n }\n return false;\n };\n\n AttachmentsFullController.prototype.showAttachments = function() {\n return this._isEditable() || this.attachmentsFullService.attachments.size;\n };\n\n return AttachmentsFullController;\n\n })();\n\n angular.module(\"taigaComponents\").controller(\"AttachmentsFull\", AttachmentsFullController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AttachmentsFullDirective, bindOnce;\n\n bindOnce = this.taiga.bindOnce;\n\n AttachmentsFullDirective = function() {\n var link;\n link = function(scope, el, attrs, ctrl) {\n return scope.displayAttachmentInput = function(event) {\n angular.element('#add-attach').click();\n return false;\n };\n };\n return {\n scope: {},\n bindToController: {\n type: \"@\",\n objId: \"=\",\n projectId: \"=\",\n editPermission: \"@\"\n },\n controller: \"AttachmentsFull\",\n controllerAs: \"vm\",\n templateUrl: \"components/attachments-full/attachments-full.html\",\n link: link\n };\n };\n\n AttachmentsFullDirective.$inject = [];\n\n angular.module(\"taigaComponents\").directive(\"tgAttachmentsFull\", AttachmentsFullDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AttachmentsFullService,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n AttachmentsFullService = (function(superClass) {\n extend(AttachmentsFullService, superClass);\n\n AttachmentsFullService.$inject = [\"tgAttachmentsService\", \"$rootScope\", \"$q\"];\n\n function AttachmentsFullService(attachmentsService, rootScope, q) {\n this.attachmentsService = attachmentsService;\n this.rootScope = rootScope;\n this.q = q;\n this._attachments = Immutable.List();\n this._deprecatedsCount = 0;\n this._attachmentsVisible = Immutable.List();\n this._deprecatedsVisible = false;\n this.uploadingAttachments = [];\n this.types = this.attachmentsService.types;\n taiga.defineImmutableProperty(this, 'attachments', (function(_this) {\n return function() {\n return _this._attachments;\n };\n })(this));\n taiga.defineImmutableProperty(this, 'deprecatedsCount', (function(_this) {\n return function() {\n return _this._deprecatedsCount;\n };\n })(this));\n taiga.defineImmutableProperty(this, 'attachmentsVisible', (function(_this) {\n return function() {\n return _this._attachmentsVisible;\n };\n })(this));\n taiga.defineImmutableProperty(this, 'deprecatedsVisible', (function(_this) {\n return function() {\n return _this._deprecatedsVisible;\n };\n })(this));\n }\n\n AttachmentsFullService.prototype.toggleDeprecatedsVisible = function() {\n this._deprecatedsVisible = !this._deprecatedsVisible;\n return this.regenerate();\n };\n\n AttachmentsFullService.prototype.regenerate = function() {\n this._deprecatedsCount = this._attachments.count(function(it) {\n return it.getIn(['file', 'is_deprecated']);\n });\n if (this._deprecatedsVisible) {\n return this._attachmentsVisible = this._attachments;\n } else {\n return this._attachmentsVisible = this._attachments.filter(function(it) {\n return !it.getIn(['file', 'is_deprecated']);\n });\n }\n };\n\n AttachmentsFullService.prototype.addAttachment = function(projectId, objId, type, file, editable, comment) {\n if (editable == null) {\n editable = true;\n }\n if (comment == null) {\n comment = false;\n }\n return this.q((function(_this) {\n return function(resolve, reject) {\n var promise;\n if (_this.attachmentsService.validate(file)) {\n _this.uploadingAttachments.push(file);\n promise = _this.attachmentsService.upload(file, objId, projectId, type, comment);\n return promise.then(function(file) {\n var attachment;\n _this.uploadingAttachments = _this.uploadingAttachments.filter(function(uploading) {\n return uploading.name !== file.get('name');\n });\n attachment = Immutable.Map();\n attachment = attachment.merge({\n file: file,\n editable: editable,\n loading: false,\n from_comment: comment\n });\n _this._attachments = _this._attachments.push(attachment);\n _this.regenerate();\n _this.rootScope.$broadcast(\"attachment:create\");\n return resolve(attachment);\n });\n } else {\n return reject(new Error(file));\n }\n };\n })(this));\n };\n\n AttachmentsFullService.prototype.loadAttachments = function(type, objId, projectId) {\n return this.attachmentsService.list(type, objId, projectId).then((function(_this) {\n return function(files) {\n _this._attachments = files.map(function(file) {\n var attachment;\n attachment = Immutable.Map();\n return attachment.merge({\n loading: false,\n editable: false,\n file: file\n });\n });\n _this.rootScope.$broadcast(\"attachments:loaded\", _this._attachments);\n return _this.regenerate();\n };\n })(this));\n };\n\n AttachmentsFullService.prototype.deleteAttachment = function(toDeleteAttachment, type) {\n var onSuccess;\n onSuccess = (function(_this) {\n return function() {\n _this._attachments = _this._attachments.filter(function(attachment) {\n return attachment !== toDeleteAttachment;\n });\n return _this.regenerate();\n };\n })(this);\n return this.attachmentsService[\"delete\"](type, toDeleteAttachment.getIn(['file', 'id'])).then(onSuccess);\n };\n\n AttachmentsFullService.prototype.reorderAttachment = function(objectId, type, attachment, newIndex) {\n var afterAttachmentId, attachments, oldIndex, previousAttachment;\n oldIndex = this.attachments.findIndex(function(it) {\n return it === attachment;\n });\n attachments = this.attachments.remove(oldIndex);\n attachments = attachments.splice(newIndex, 0, attachment);\n attachments = attachments.map(function(x, i) {\n return x.setIn(['file', 'order'], i + 1);\n });\n this._attachments = attachments;\n this.regenerate();\n afterAttachmentId = null;\n if (newIndex > 0) {\n previousAttachment = this.attachments.get(newIndex - 1);\n afterAttachmentId = previousAttachment.getIn(['file', 'id']);\n }\n return this.attachmentsService.bulkUpdateOrder(objectId, type, afterAttachmentId, [attachment.getIn(['file', 'id'])]);\n };\n\n AttachmentsFullService.prototype.updateAttachment = function(toUpdateAttachment, type) {\n var index, oldAttachment, patch;\n index = this._attachments.findIndex(function(attachment) {\n return attachment.getIn(['file', 'id']) === toUpdateAttachment.getIn(['file', 'id']);\n });\n oldAttachment = this._attachments.get(index);\n patch = taiga.patch(oldAttachment.get('file'), toUpdateAttachment.get('file'));\n if (toUpdateAttachment.get('loading')) {\n return this.setAttachments(index, toUpdateAttachment);\n } else {\n if (_.isEmpty(patch)) {\n return this.setAttachments(index, toUpdateAttachment);\n } else {\n return this.attachmentsService.patch(toUpdateAttachment.getIn(['file', 'id']), type, patch).then((function(_this) {\n return function() {\n return _this.setAttachments(index, toUpdateAttachment);\n };\n })(this));\n }\n }\n };\n\n AttachmentsFullService.prototype.setAttachments = function(index, toUpdateAttachment) {\n this._attachments = this._attachments.set(index, toUpdateAttachment);\n return this.regenerate();\n };\n\n return AttachmentsFullService;\n\n })(taiga.Service);\n\n angular.module(\"taigaComponents\").service(\"tgAttachmentsFullService\", AttachmentsFullService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AttachmentsPreviewController;\n\n AttachmentsPreviewController = (function() {\n AttachmentsPreviewController.$inject = [\"tgAttachmentsPreviewService\"];\n\n function AttachmentsPreviewController(attachmentsPreviewService) {\n this.attachmentsPreviewService = attachmentsPreviewService;\n taiga.defineImmutableProperty(this, \"current\", (function(_this) {\n return function() {\n if (!_this.attachmentsPreviewService.fileId) {\n return null;\n }\n return _this.getCurrent();\n };\n })(this));\n }\n\n AttachmentsPreviewController.prototype.hasPagination = function() {\n var images;\n images = this.attachments.filter((function(_this) {\n return function(attachment) {\n return taiga.isImage(attachment.getIn(['file', 'name']));\n };\n })(this));\n return images.size > 1;\n };\n\n AttachmentsPreviewController.prototype.getCurrent = function() {\n var attachment, file;\n attachment = this.attachments.find((function(_this) {\n return function(attachment) {\n return _this.attachmentsPreviewService.fileId === attachment.getIn(['file', 'id']);\n };\n })(this));\n if (!attachment) {\n return null;\n }\n file = attachment.get('file');\n return file;\n };\n\n AttachmentsPreviewController.prototype.getIndex = function() {\n return this.attachments.findIndex((function(_this) {\n return function(attachment) {\n return _this.attachmentsPreviewService.fileId === attachment.getIn(['file', 'id']);\n };\n })(this));\n };\n\n AttachmentsPreviewController.prototype.next = function() {\n var attachmentIndex, image;\n attachmentIndex = this.getIndex();\n image = this.attachments.slice(attachmentIndex + 1).find(function(attachment) {\n return taiga.isImage(attachment.getIn(['file', 'name']));\n });\n if (!image) {\n image = this.attachments.find(function(attachment) {\n return taiga.isImage(attachment.getIn(['file', 'name']));\n });\n }\n return this.attachmentsPreviewService.fileId = image.getIn(['file', 'id']);\n };\n\n AttachmentsPreviewController.prototype.previous = function() {\n var attachmentIndex, image;\n attachmentIndex = this.getIndex();\n image = this.attachments.slice(0, attachmentIndex).findLast(function(attachment) {\n return taiga.isImage(attachment.getIn(['file', 'name']));\n });\n if (!image) {\n image = this.attachments.findLast(function(attachment) {\n return taiga.isImage(attachment.getIn(['file', 'name']));\n });\n }\n return this.attachmentsPreviewService.fileId = image.getIn(['file', 'id']);\n };\n\n return AttachmentsPreviewController;\n\n })();\n\n angular.module('taigaComponents').controller('AttachmentsPreview', AttachmentsPreviewController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AttachmentPreviewLightboxDirective;\n\n AttachmentPreviewLightboxDirective = function(lightboxService, attachmentsPreviewService) {\n var link;\n link = function($scope, el, attrs, ctrl) {\n $(document.body).on(\"keydown.image-preview\", function(e) {\n if (attachmentsPreviewService.fileId) {\n if (e.keyCode === 39) {\n ctrl.next();\n } else if (e.keyCode === 37) {\n ctrl.previous();\n }\n }\n return $scope.$digest();\n });\n return $scope.$on('$destroy', function() {\n return $(document.body).off('.image-preview');\n });\n };\n return {\n scope: {},\n controller: 'AttachmentsPreview',\n templateUrl: 'components/attachments-preview/attachments-preview.html',\n link: link,\n controllerAs: \"vm\",\n bindToController: {\n attachments: \"=\"\n }\n };\n };\n\n angular.module('taigaComponents').directive(\"tgAttachmentsPreview\", [\"lightboxService\", \"tgAttachmentsPreviewService\", AttachmentPreviewLightboxDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AttachmentsPreviewService,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n AttachmentsPreviewService = (function(superClass) {\n extend(AttachmentsPreviewService, superClass);\n\n AttachmentsPreviewService.$inject = [];\n\n function AttachmentsPreviewService() {}\n\n return AttachmentsPreviewService;\n\n })(taiga.Service);\n\n angular.module(\"taigaComponents\").service(\"tgAttachmentsPreviewService\", AttachmentsPreviewService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AttachmentsSimpleController;\n\n AttachmentsSimpleController = (function() {\n AttachmentsSimpleController.$inject = [\"tgAttachmentsService\"];\n\n function AttachmentsSimpleController(attachmentsService) {\n this.attachmentsService = attachmentsService;\n }\n\n AttachmentsSimpleController.prototype.addAttachment = function(file) {\n var attachment;\n attachment = Immutable.fromJS({\n file: file,\n name: file.name,\n size: file.size\n });\n if (this.attachmentsService.validate(file)) {\n this.attachments = this.attachments.push(attachment);\n if (this.onAdd) {\n return this.onAdd({\n attachment: attachment\n });\n }\n }\n };\n\n AttachmentsSimpleController.prototype.addAttachments = function(files) {\n return _.forEach(files, this.addAttachment.bind(this));\n };\n\n AttachmentsSimpleController.prototype.deleteAttachment = function(toDeleteAttachment) {\n this.attachments = this.attachments.filter(function(attachment) {\n return attachment !== toDeleteAttachment;\n });\n if (this.onDelete) {\n return this.onDelete({\n attachment: toDeleteAttachment\n });\n }\n };\n\n return AttachmentsSimpleController;\n\n })();\n\n angular.module(\"taigaComponents\").controller(\"AttachmentsSimple\", AttachmentsSimpleController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AttachmentsSimpleDirective;\n\n AttachmentsSimpleDirective = function() {\n var link;\n link = function(scope, el, attrs, ctrl) {\n return scope.displayAttachmentInput = function(event) {\n angular.element('#add-attach').click();\n return false;\n };\n };\n return {\n scope: {},\n bindToController: {\n attachments: \"=\",\n onAdd: \"&\",\n onDelete: \"&\"\n },\n controller: \"AttachmentsSimple\",\n controllerAs: \"vm\",\n templateUrl: \"components/attachments-simple/attachments-simple.html\",\n link: link\n };\n };\n\n AttachmentsSimpleDirective.$inject = [];\n\n angular.module(\"taigaComponents\").directive(\"tgAttachmentsSimple\", AttachmentsSimpleDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AttachmentSortableDirective;\n\n AttachmentSortableDirective = function($parse) {\n var link;\n link = function(scope, el, attrs) {\n var callback, drake, scroll;\n callback = $parse(attrs.tgAttachmentsSortable);\n drake = dragula([el[0]], {\n copySortSource: false,\n copy: false,\n mirrorContainer: el[0],\n moves: function(item) {\n return $(item).is('div[tg-bind-scope]');\n }\n });\n drake.on('dragend', function(item) {\n var attachment, newIndex;\n item = $(item);\n attachment = item.scope().attachment;\n newIndex = item.index();\n return scope.$apply(function() {\n return callback(scope, {\n attachment: attachment,\n index: newIndex\n });\n });\n });\n scroll = autoScroll(window, {\n margin: 20,\n pixels: 30,\n scrollWhenOutside: true,\n autoScroll: function() {\n return this.down && drake.dragging;\n }\n });\n return scope.$on(\"$destroy\", function() {\n el.off();\n return drake.destroy();\n });\n };\n return {\n link: link\n };\n };\n\n AttachmentSortableDirective.$inject = [\"$parse\"];\n\n angular.module(\"taigaComponents\").directive(\"tgAttachmentsSortable\", AttachmentSortableDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AutoSelectDirective;\n\n AutoSelectDirective = function($timeout) {\n return {\n link: function(scope, elm) {\n return $timeout(function() {\n return elm[0].select();\n });\n }\n };\n };\n\n AutoSelectDirective.$inject = ['$timeout'];\n\n angular.module(\"taigaComponents\").directive(\"tgAutoSelect\", AutoSelectDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AvatarDirective;\n\n AvatarDirective = function(avatarService) {\n var link;\n link = function(scope, el, attrs) {\n var attributeName;\n if (attrs.tgAvatarBig) {\n attributeName = 'avatarBig';\n } else {\n attributeName = 'avatar';\n }\n return scope.$watch(attributeName, function(user) {\n var avatar;\n avatar = avatarService.getAvatar(user, attributeName);\n el.attr('src', avatar.url);\n el.attr('title', \"\" + avatar.fullName);\n el.attr('alt', \"\" + avatar.fullName);\n return el.css('background', avatar.bg || \"\");\n });\n };\n return {\n link: link,\n scope: {\n avatar: \"=tgAvatar\",\n avatarBig: \"=tgAvatarBig\"\n }\n };\n };\n\n AvatarDirective.$inject = ['tgAvatarService'];\n\n angular.module(\"taigaComponents\").directive(\"tgAvatar\", AvatarDirective);\n\n angular.module(\"taigaComponents\").directive(\"tgAvatarBig\", AvatarDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var BelongToEpicsDirective, module;\n\n module = angular.module('taigaEpics');\n\n BelongToEpicsDirective = function($translate, $confirm, $rs, $rs2, lightboxService) {\n var link, templateUrl;\n link = function(scope, el, attrs) {\n var updateEpics;\n scope.$watch('epics', function(epics) {\n return updateEpics(epics);\n });\n scope.$on(\"related-epics:changed\", function(ctx, userStory) {\n return $rs.userstories.getByRef(userStory.project, userStory.ref, {}).then(function(us) {\n scope.item.epics = us.epics;\n return updateEpics(us.epics);\n });\n });\n scope.removeEpicRelationship = function(epic) {\n var message, title;\n title = $translate.instant(\"LIGHTBOX.REMOVE_RELATIONSHIP_WITH_EPIC.TITLE\");\n message = $translate.instant(\"LIGHTBOX.REMOVE_RELATIONSHIP_WITH_EPIC.MESSAGE\", {\n epicSubject: epic.get('subject')\n });\n return $confirm.ask(title, null, message).then(function(askResponse) {\n var epicId, onError, onSuccess, usId;\n onSuccess = function() {\n askResponse.finish();\n return scope.$broadcast(\"related-epics:changed\", scope.item);\n };\n onError = function() {\n askResponse.finish(false);\n return $confirm.notify(\"error\");\n };\n epicId = epic.get('id');\n usId = scope.item.id;\n return $rs2.epics.deleteRelatedUserstory(epicId, usId).then(onSuccess, onError);\n });\n };\n return updateEpics = function(epics) {\n scope.epicsLength = 0;\n scope.immutable_epics = [];\n if (epics && !epics.isIterable) {\n scope.epicsLength = epics.length;\n return scope.immutable_epics = Immutable.fromJS(epics);\n }\n };\n };\n templateUrl = function(el, attrs) {\n if (attrs.format) {\n return \"components/belong-to-epics/belong-to-epics-\" + attrs.format + \".html\";\n }\n return \"components/belong-to-epics/belong-to-epics-pill.html\";\n };\n return {\n link: link,\n scope: {\n epics: '=',\n item: \"=\"\n },\n templateUrl: templateUrl\n };\n };\n\n module.directive(\"tgBelongToEpics\", [\"$translate\", \"$tgConfirm\", \"$tgResources\", \"tgResources\", \"lightboxService\", BelongToEpicsDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var BindCode;\n\n BindCode = function($sce, $parse, $compile, wysiwygService) {\n return {\n restrict: 'A',\n compile: function(tElement, tAttrs) {\n var render, tgBindWysiwygHtmlGetter, tgBindWysiwygHtmlWatch;\n tgBindWysiwygHtmlGetter = $parse(tAttrs.tgBindWysiwygHtml);\n tgBindWysiwygHtmlWatch = $parse(tAttrs.tgBindWysiwygHtml, function(value) {\n return (value || '').toString();\n });\n $compile.$$addBindingClass(tElement);\n render = (function(_this) {\n return function(element, html) {\n var anchor;\n window._extraValidHtmlElments = {\n input: true\n };\n window._extraValidAttrs = {\n checked: true\n };\n element.html($sce.getTrustedHtml(html) || '');\n element[0].querySelectorAll('pre code').forEach(function(block) {\n var blockClasses, language, match, matchResult, resultHighlight;\n blockClasses = block.className + ' ';\n blockClasses += block.parentNode ? block.parentNode.className : '';\n match = /\\blang(?:uage)?-([\\w-]+)\\b/i.exec(blockClasses);\n matchResult = 'plaintext';\n if (match && match.length) {\n matchResult = match[1];\n }\n language = hljs.getLanguage(matchResult);\n if (language) {\n return resultHighlight = hljs.highlightBlock(block);\n } else {\n return ljs.load((\"/\" + window._version + \"/highlightjs-languages/\") + matchResult + \".min.js\", function() {\n return hljs.highlightBlock(block);\n });\n }\n });\n anchor = element[0].querySelectorAll('a[href^=\"#\"]');\n return anchor.forEach(function(link) {\n return link.addEventListener('click', function(e) {\n var node;\n e.preventDefault();\n node = document.querySelector(link.getAttribute('href'));\n if (node) {\n return node.scrollIntoView();\n }\n });\n });\n };\n })(this);\n return function(scope, element, attr) {\n $compile.$$addBindingInfo(element, attr.tgBindWysiwygHtml);\n return scope.$watch(tgBindWysiwygHtmlWatch, function() {\n var html;\n html = wysiwygService.getHTML(tgBindWysiwygHtmlGetter(scope));\n html = wysiwygService.relativePaths(html);\n wysiwygService.refreshAttachmentURL(html).then((function(_this) {\n return function(html) {\n return render(element, html);\n };\n })(this));\n return render(element, html);\n });\n };\n }\n };\n };\n\n angular.module(\"taigaComponents\").directive(\"tgBindWysiwygHtml\", [\"$sce\", \"$parse\", \"$compile\", \"tgWysiwygService\", BindCode]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var BoardZoomDirective;\n\n BoardZoomDirective = function() {\n return {\n scope: {\n levels: \"=\",\n value: \"=\"\n },\n templateUrl: 'components/board-zoom/board-zoom.html'\n };\n };\n\n angular.module('taigaComponents').directive(\"tgBoardZoom\", [BoardZoomDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CardSlideshowController;\n\n CardSlideshowController = (function() {\n CardSlideshowController.$inject = [];\n\n function CardSlideshowController() {\n this.index = 0;\n }\n\n CardSlideshowController.prototype.next = function() {\n this.index++;\n if (this.index >= this.images.size) {\n return this.index = 0;\n }\n };\n\n CardSlideshowController.prototype.previous = function() {\n this.index--;\n if (this.index < 0) {\n return this.index = this.images.size - 1;\n }\n };\n\n return CardSlideshowController;\n\n })();\n\n angular.module('taigaComponents').controller('CardSlideshow', CardSlideshowController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var cardSlideshowDirective, module;\n\n module = angular.module(\"taigaComponents\");\n\n cardSlideshowDirective = function() {\n return {\n controller: \"CardSlideshow\",\n templateUrl: \"components/card-slideshow/card-slideshow.html\",\n bindToController: true,\n controllerAs: \"vm\",\n scope: {\n images: \"=\"\n }\n };\n };\n\n module.directive('tgCardSlideshow', cardSlideshowDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CardController;\n\n CardController = (function() {\n CardController.$inject = [\"$scope\"];\n\n function CardController(scope1) {\n this.scope = scope1;\n }\n\n CardController.prototype.getLinkParams = function() {\n var ParsedLastLoadUserstoriesParams, ctrl, lastLoadUserstoriesParams;\n ctrl = taiga.findScope(this.scope, function(scope) {\n if (scope && scope.ctrl) {\n return scope.ctrl;\n }\n return false;\n });\n lastLoadUserstoriesParams = ctrl.lastLoadUserstoriesParams;\n if (lastLoadUserstoriesParams) {\n lastLoadUserstoriesParams['status'] = this.scope.vm.item.getIn(['model', 'status']);\n lastLoadUserstoriesParams['swimlane'] = this.scope.vm.item.getIn(['model', 'swimlane']);\n lastLoadUserstoriesParams = _.pickBy(lastLoadUserstoriesParams, _.identity);\n if (ctrl.scope.swimlanesList.size && !lastLoadUserstoriesParams['swimlane']) {\n lastLoadUserstoriesParams.swimlane = \"null\";\n }\n ParsedLastLoadUserstoriesParams = {};\n Object.keys(lastLoadUserstoriesParams).forEach(function(key) {\n return ParsedLastLoadUserstoriesParams['kanban-' + key] = lastLoadUserstoriesParams[key];\n });\n return ParsedLastLoadUserstoriesParams;\n } else {\n return {};\n }\n };\n\n CardController.prototype.visible = function(name) {\n return this.zoom.indexOf(name) !== -1;\n };\n\n CardController.prototype.hasTasks = function() {\n var tasks;\n tasks = this.item.getIn(['model', 'tasks']);\n return tasks && tasks.size > 0;\n };\n\n CardController.prototype.getTagColor = function(color) {\n if (color) {\n return color;\n }\n return \"#A9AABC\";\n };\n\n CardController.prototype.hasMultipleAssignedUsers = function() {\n var assignedUsers;\n assignedUsers = this.item.getIn(['model', 'assigned_users']);\n return assignedUsers && assignedUsers.size > 1;\n };\n\n CardController.prototype.hasVisibleAttachments = function() {\n return this.item.get('images').size > 0;\n };\n\n CardController.prototype.toggleFold = function() {\n return this.onToggleFold({\n id: this.item.get('id')\n });\n };\n\n CardController.prototype.getClosedTasks = function() {\n return this.item.getIn(['model', 'tasks']).filter(function(task) {\n return task.get('is_closed');\n });\n };\n\n CardController.prototype.closedTasksPercent = function() {\n return this.getClosedTasks().size * 100 / this.item.getIn(['model', 'tasks']).size;\n };\n\n CardController.prototype.getModifyPermisionKey = function() {\n if (this.type === 'task') {\n return 'modify_task';\n } else {\n return 'modify_us';\n }\n };\n\n CardController.prototype.getDeletePermisionKey = function() {\n if (this.type === 'task') {\n return 'delete_task';\n } else {\n return 'delete_us';\n }\n };\n\n CardController.prototype._setVisibility = function() {\n var visibility;\n visibility = {\n related: this.visible('related_tasks'),\n slides: this.visible('attachments')\n };\n if (!_.isUndefined(this.item.get('foldStatusChanged')) && this.visible('unfold')) {\n if (this.zoomLevel === 2) {\n visibility.related = this.item.get('foldStatusChanged');\n visibility.slides = this.item.get('foldStatusChanged');\n } else {\n visibility.related = !this.item.get('foldStatusChanged');\n visibility.slides = !this.item.get('foldStatusChanged');\n }\n }\n if (!this.item.getIn(['model', 'tasks']) || !this.item.getIn(['model', 'tasks']).size) {\n visibility.related = false;\n }\n if (!this.item.get('images') || !this.item.get('images').size) {\n visibility.slides = false;\n }\n return visibility;\n };\n\n CardController.prototype.isRelatedTasksVisible = function() {\n var visibility;\n visibility = this._setVisibility();\n return visibility.related;\n };\n\n CardController.prototype.isSlideshowVisible = function() {\n var visibility;\n visibility = this._setVisibility();\n return visibility.slides;\n };\n\n CardController.prototype.getNavKey = function() {\n if (this.type === 'task') {\n return 'project-tasks-detail';\n } else if (this.type === 'issue') {\n return 'project-issues-detail';\n } else {\n return 'project-userstories-detail';\n }\n };\n\n return CardController;\n\n })();\n\n angular.module('taigaComponents').controller('Card', CardController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var cardDirective, module;\n\n module = angular.module(\"taigaComponents\");\n\n cardDirective = function() {\n return {\n controller: \"Card\",\n controllerAs: \"vm\",\n templateUrl: \"components/card/card.html\",\n bindToController: {\n onToggleFold: \"&\",\n onClickAssignedTo: \"&\",\n onClickEdit: \"&\",\n onClickRemove: \"&\",\n onClickDelete: \"&\",\n onClickMoveToTop: \"&\",\n project: \"<\",\n item: \"<\",\n zoom: \"<\",\n zoomLevel: \"<\",\n archived: \"<\",\n inViewPort: \"<\",\n folded: \"<\",\n type: \"@\",\n isFirst: \"<\"\n }\n };\n };\n\n module.directive('tgCard', cardDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ClickInputFile;\n\n ClickInputFile = function() {\n return {\n link: function(scope, el) {\n el.on('click', function(e) {\n var inputFile;\n if (!$(e.target).is('input')) {\n e.preventDefault();\n inputFile = el.find('input[type=\"file\"]');\n inputFile.val('');\n return inputFile.trigger('click');\n }\n });\n return scope.$on(\"$destroy\", function() {\n return el.off();\n });\n }\n };\n };\n\n angular.module(\"taigaComponents\").directive(\"tgClickInputFile\", [ClickInputFile]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ColorSelectorController, getDefaulColorList, taiga;\n\n taiga = this.taiga;\n\n getDefaulColorList = taiga.getDefaulColorList;\n\n ColorSelectorController = (function() {\n ColorSelectorController.$inject = [\"tgProjectService\"];\n\n function ColorSelectorController(projectService) {\n this.projectService = projectService;\n this.colorList = getDefaulColorList();\n this.checkIsColorRequired();\n this.displayColorList = false;\n }\n\n ColorSelectorController.prototype.userCanChangeColor = function() {\n if (!this.requiredPerm) {\n return true;\n }\n return this.projectService.hasPermission(this.requiredPerm);\n };\n\n ColorSelectorController.prototype.checkIsColorRequired = function() {\n if (!this.isColorRequired) {\n return this.colorList = _.dropRight(this.colorList);\n }\n };\n\n ColorSelectorController.prototype.setColor = function(color) {\n this.color = color;\n return this.customColor = color;\n };\n\n ColorSelectorController.prototype.resetColor = function() {\n if (this.isColorRequired && !this.color) {\n return this.color = this.initColor;\n }\n };\n\n ColorSelectorController.prototype.toggleColorList = function() {\n this.displayColorList = !this.displayColorList;\n this.customColor = this.color;\n return this.resetColor();\n };\n\n ColorSelectorController.prototype.onSelectDropdownColor = function(color) {\n this.color = color;\n this.onSelectColor({\n color: color\n });\n return this.toggleColorList();\n };\n\n ColorSelectorController.prototype.onKeyDown = function(event) {\n if (event.which === 13) {\n if (this.customColor || !this.isColorRequired) {\n this.onSelectDropdownColor(this.customColor);\n }\n return event.preventDefault();\n }\n };\n\n return ColorSelectorController;\n\n })();\n\n angular.module('taigaComponents').controller(\"ColorSelectorCtrl\", ColorSelectorController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ColorSelectorDirective, bindOnce;\n\n bindOnce = this.taiga.bindOnce;\n\n ColorSelectorDirective = function($timeout) {\n var link;\n link = function(scope, el, attrs, ctrl) {\n var _timeout, cancel, close;\n _timeout = null;\n cancel = function() {\n $timeout.cancel(_timeout);\n return _timeout = null;\n };\n close = function() {\n if (_timeout) {\n return;\n }\n return _timeout = $timeout((function() {\n ctrl.displayColorList = false;\n return ctrl.resetColor();\n }), 400);\n };\n el.find('.color-selector').mouseenter(cancel).mouseleave(close);\n el.find('.color-selector-dropdown').mouseenter(cancel).mouseleave(close);\n return scope.$watch('vm.initColor', function(color) {\n return ctrl.setColor(color);\n });\n };\n return {\n link: link,\n templateUrl: \"components/color-selector/color-selector.html\",\n controller: \"ColorSelectorCtrl\",\n controllerAs: \"vm\",\n bindToController: {\n isColorRequired: \"=\",\n onSelectColor: \"&\",\n initColor: \"=\",\n requiredPerm: \"@\"\n },\n scope: {}\n };\n };\n\n ColorSelectorDirective.$inject = [\"$timeout\"];\n\n angular.module('taigaComponents').directive(\"tgColorSelector\", ColorSelectorDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DetailHeaderController, module;\n\n module = angular.module('taigaBase');\n\n DetailHeaderController = (function() {\n DetailHeaderController.$inject = [\"$rootScope\", \"$tgConfirm\", \"$tgQueueModelTransformation\", \"$tgNavUrls\", \"$window\"];\n\n function DetailHeaderController(rootScope, confirm, modelTransform, navUrls, window) {\n this.rootScope = rootScope;\n this.confirm = confirm;\n this.modelTransform = modelTransform;\n this.navUrls = navUrls;\n this.window = window;\n this.editMode = false;\n this.loadingSubject = false;\n this.originalSubject = this.item.subject;\n this.objType = {\n 'tasks': 'task',\n 'issues': 'issue',\n 'userstories': 'us'\n }[this.item._name];\n }\n\n DetailHeaderController.prototype._checkPermissions = function() {\n return this.permissions = {\n canEdit: _.includes(this.project.my_permissions, this.requiredPerm)\n };\n };\n\n DetailHeaderController.prototype.cancelEdit = function() {\n this.editMode = false;\n return this.item.subject = this.originalSubject;\n };\n\n DetailHeaderController.prototype.editSubject = function(value) {\n var selection;\n selection = this.window.getSelection();\n if (selection.type !== \"Range\") {\n if (value) {\n this.editMode = true;\n }\n if (!value) {\n return this.editMode = false;\n }\n }\n };\n\n DetailHeaderController.prototype.onKeyDown = function(event) {\n if (event.which === 13) {\n this.saveSubject();\n }\n if (event.which === 27) {\n this.item.subject = this.originalSubject;\n return this.editSubject(false);\n }\n };\n\n DetailHeaderController.prototype.saveSubject = function() {\n var item, onEditSubjectError, onEditSubjectSuccess, transform;\n onEditSubjectSuccess = (function(_this) {\n return function() {\n _this.loadingSubject = false;\n _this.rootScope.$broadcast(\"object:updated\");\n _this.confirm.notify('success');\n return _this.originalSubject = _this.item.subject;\n };\n })(this);\n onEditSubjectError = (function(_this) {\n return function() {\n _this.loadingSubject = false;\n return _this.confirm.notify('error');\n };\n })(this);\n this.editMode = false;\n this.loadingSubject = true;\n item = this.item;\n transform = this.modelTransform.save(function(item) {\n return item;\n });\n return transform.then(onEditSubjectSuccess, onEditSubjectError);\n };\n\n return DetailHeaderController;\n\n })();\n\n module.controller(\"DetailHeaderCtrl\", DetailHeaderController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DetailHeaderDirective, module;\n\n module = angular.module('taigaBase');\n\n DetailHeaderDirective = function($tgWysiwygService) {\n var link;\n this.$inject = [];\n link = function(scope, el, attrs, ctrl) {\n scope.blocked_html_note = '';\n scope.$watch(\"vm.item.blocked_note\", function(blocked_note) {\n var html_note;\n html_note = $tgWysiwygService.getHTML(blocked_note);\n return scope.blocked_html_note = html_note;\n });\n return ctrl._checkPermissions();\n };\n return {\n link: link,\n controller: \"DetailHeaderCtrl\",\n bindToController: true,\n scope: {\n item: \"=\",\n project: \"=\",\n sectionName: \"=\",\n requiredPerm: \"@\"\n },\n controllerAs: \"vm\",\n templateUrl: \"components/detail/header/detail-header.html\"\n };\n };\n\n module.directive(\"tgDetailHeader\", [\"tgWysiwygService\", DetailHeaderDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DetailNavController, module;\n\n module = angular.module(\"taigaBase\");\n\n DetailNavController = (function() {\n DetailNavController.$inject = [\"$tgNavUrls\", \"$tgResources\"];\n\n function DetailNavController(navUrls, rs) {\n this.navUrls = navUrls;\n this.rs = rs;\n return;\n }\n\n DetailNavController.prototype._checkNav = function() {\n var ctx, index, neighbors, noMilestone, params, ref1, ref2, uss;\n params = this.rs.userstories.getQueryParams(this.item.project_extra_info.id);\n noMilestone = params.milestone === 'null';\n neighbors = this.item.neighbors;\n this.previousUrl = null;\n this.nextUrl = null;\n if (noMilestone) {\n uss = this.rs.userstories.getBacklog(this.item.project_extra_info.id);\n index = uss.findIndex((function(_this) {\n return function(ref) {\n return ref === _this.item.ref;\n };\n })(this));\n if (index !== -1) {\n neighbors = {\n previous: {\n ref: uss[index - 1]\n },\n next: {\n ref: uss[index + 1]\n }\n };\n }\n }\n if (((ref1 = neighbors.previous) != null ? ref1.ref : void 0) != null) {\n ctx = {\n project: this.item.project_extra_info.slug,\n ref: neighbors.previous.ref\n };\n this.previousUrl = this.navUrls.resolve(\"project-\" + this.item._name + \"-detail\", ctx);\n }\n if (((ref2 = neighbors.next) != null ? ref2.ref : void 0) != null) {\n ctx = {\n project: this.item.project_extra_info.slug,\n ref: neighbors.next.ref\n };\n return this.nextUrl = this.navUrls.resolve(\"project-\" + this.item._name + \"-detail\", ctx);\n }\n };\n\n return DetailNavController;\n\n })();\n\n module.controller(\"DetailNavCtrl\", DetailNavController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DetailNavDirective, module;\n\n module = angular.module('taigaBase');\n\n DetailNavDirective = function() {\n var link;\n link = function(scope, el, attrs, ctrl) {\n return scope.$watch(\"vm.item\", function(value) {\n if (!value) {\n return;\n }\n return ctrl._checkNav();\n });\n };\n return {\n link: link,\n controller: \"DetailNavCtrl\",\n bindToController: true,\n scope: {\n item: \"=\"\n },\n controllerAs: \"vm\",\n templateUrl: \"components/detail/nav/detail-nav.html\"\n };\n };\n\n module.directive(\"tgDetailNav\", DetailNavDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DueDateController;\n\n DueDateController = (function() {\n DueDateController.$inject = [\"tgDueDateService\", \"tgLightboxFactory\"];\n\n function DueDateController(dueDateService, tgLightboxFactory) {\n this.dueDateService = dueDateService;\n this.tgLightboxFactory = tgLightboxFactory;\n }\n\n DueDateController.prototype.visible = function() {\n return this.dueDateService.visible(this._getScope());\n };\n\n DueDateController.prototype.disabled = function() {\n return this.dueDateService.disabled(this._getScope());\n };\n\n DueDateController.prototype.color = function() {\n return this.dueDateService.color(this._getScope());\n };\n\n DueDateController.prototype.title = function() {\n return this.dueDateService.title(this._getScope());\n };\n\n DueDateController.prototype.setDueDate = function() {\n if (this.disabled()) {\n return;\n }\n return this.tgLightboxFactory.create(\"tg-lb-set-due-date\", {\n \"class\": \"lightbox lightbox-set-due-date\"\n }, {\n \"object\": this.item,\n \"notAutoSave\": this.notAutoSave\n });\n };\n\n DueDateController.prototype._getScope = function() {\n return {\n dueDate: this.dueDate,\n isClosed: this.isClosed,\n item: this.item,\n objType: this.objType,\n format: this.format,\n notAutoSave: this.notAutoSave\n };\n };\n\n return DueDateController;\n\n })();\n\n angular.module('taigaComponents').controller('DueDateCtrl', DueDateController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var dueDatePopoverDirective, module;\n\n module = angular.module(\"taigaComponents\");\n\n dueDatePopoverDirective = function($translate, datePickerConfigService) {\n return {\n link: function(scope, el, attrs, ctrl) {\n var datePickerConfig;\n scope.open = false;\n datePickerConfig = datePickerConfigService.get();\n _.merge(datePickerConfig, {\n field: el.find('.due-date-button')[0],\n container: el.find('.date-picker-container')[0],\n bound: true,\n onClose: function() {\n scope.open = false;\n return scope.$apply();\n },\n onSelect: function() {\n return ctrl.dueDate = this.getMoment().format('YYYY-MM-DD');\n }\n });\n el.picker = new Pikaday(datePickerConfig);\n el.on(\"click\", \".due-date-button\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n if (scope.open) {\n el.picker.hide();\n return;\n }\n if (!el.picker.getDate() && ctrl.dueDate) {\n el.picker.setDate(moment(ctrl.dueDate).format('YYYY-MM-DD'));\n }\n el.picker.show();\n scope.open = true;\n return scope.$apply();\n });\n el.on(\"click\", \".date-picker-clean\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n ctrl.dueDate = null;\n el.picker.setDate(ctrl.dueDate);\n scope.open = false;\n el.picker.hide();\n return scope.$apply();\n });\n return scope.$on(\"status:changed\", function(ctx, status) {\n return ctrl.isClosed = ctrl.item.is_closed;\n });\n },\n controller: \"DueDateCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n templateUrl: \"components/due-date/due-date-popover.html\",\n scope: {\n dueDate: '=',\n isClosed: '=',\n item: '=',\n objType: '@',\n format: '@',\n notAutoSave: '='\n }\n };\n };\n\n module.directive('tgDueDatePopover', ['$translate', 'tgDatePickerConfigService', dueDatePopoverDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var dueDateDirective, module;\n\n module = angular.module(\"taigaComponents\");\n\n dueDateDirective = function($translate, datePickerConfigService) {\n var templateUrl;\n templateUrl = function(el, attrs) {\n if (attrs.format) {\n return \"components/due-date/due-date-\" + attrs.format + \".html\";\n }\n return \"components/due-date/due-date-icon.html\";\n };\n return {\n link: function(scope, el, attrs, ctrl) {\n var renderDatePicker;\n renderDatePicker = function() {\n var datePickerConfig, prettyDate;\n prettyDate = $translate.instant(\"COMMON.PICKERDATE.FORMAT\");\n if (ctrl.dueDate) {\n ctrl.dueDate = moment(ctrl.dueDate, prettyDate);\n }\n el.on(\"click\", \".date-picker-popover-trigger\", function(event) {\n if (ctrl.disabled()) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n return el.find(\".date-picker-popover\").popover().open();\n });\n el.on(\"click\", \".date-picker-clean\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n ctrl.dueDate = null;\n scope.$apply();\n return el.find(\".date-picker-popover\").popover().close();\n });\n datePickerConfig = datePickerConfigService.get();\n _.merge(datePickerConfig, {\n field: el.find('input.due-date')[0],\n container: el.find('.date-picker-container')[0],\n bound: false,\n onSelect: function() {\n ctrl.dueDate = this.getMoment().format('YYYY-MM-DD');\n el.find(\".date-picker-popover\").popover().close();\n return scope.$apply();\n }\n });\n return el.picker = new Pikaday(datePickerConfig);\n };\n if (attrs.format === 'button-popover') {\n return renderDatePicker();\n }\n },\n controller: \"DueDateCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n templateUrl: templateUrl,\n scope: {\n dueDate: '=',\n isClosed: '=',\n item: '=',\n objType: '@',\n format: '@',\n notAutoSave: '='\n }\n };\n };\n\n module.directive('tgDueDate', ['$translate', 'tgDatePickerConfigService', dueDateDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DueDateService, taiga;\n\n taiga = this.taiga;\n\n DueDateService = (function() {\n DueDateService.$inject = [\"$translate\", \"tgProjectService\"];\n\n function DueDateService(translate, projectService) {\n this.translate = translate;\n this.projectService = projectService;\n this.defaultConfig = [\n {\n \"color\": \"#93C45D\",\n \"name\": \"normal due\",\n \"days_to_due\": null,\n \"by_default\": true\n }, {\n \"color\": \"#EA7B4B\",\n \"name\": \"due soon\",\n \"days_to_due\": 14,\n \"by_default\": false\n }, {\n \"color\": \"#E44057\",\n \"name\": \"past due\",\n \"days_to_due\": 0,\n \"by_default\": false\n }\n ];\n }\n\n DueDateService.prototype.visible = function(options) {\n return options.format === 'button' || (options.dueDate != null);\n };\n\n DueDateService.prototype.disabled = function(options) {\n return options.isClosed;\n };\n\n DueDateService.prototype.color = function(options) {\n var ref;\n return ((ref = this.getStatus(options)) != null ? ref.color : void 0) || null;\n };\n\n DueDateService.prototype.title = function(options) {\n if (options.dueDate) {\n return this._formatTitle(options);\n } else if (options.format === 'button') {\n return this.translate.instant('COMMON.DUE_DATE.TITLE_ACTION_SET_DUE_DATE');\n }\n return '';\n };\n\n DueDateService.prototype.getStatus = function(options) {\n var config, project;\n if (!options.dueDate) {\n return null;\n }\n project = this.projectService.project.toJS();\n config = project[options.objType + \"_duedates\"];\n if (!config) {\n config = this.defaultConfig;\n }\n return this._getAppearance(options, config);\n };\n\n DueDateService.prototype._getDefaultAppearance = function(config) {\n var defaultAppearance;\n defaultAppearance = null;\n _.map(config, function(it) {\n if (it.by_default === true) {\n return defaultAppearance = it;\n }\n });\n return defaultAppearance;\n };\n\n DueDateService.prototype._getAppearance = function(options, config) {\n var currentAppearance, dueDate, now;\n currentAppearance = this._getDefaultAppearance(config);\n config = _.sortBy(config, function(o) {\n return -o.days_to_due;\n });\n dueDate = moment(options.dueDate);\n now = moment();\n _.map(config, function(appearance) {\n var limitDate;\n if (appearance.days_to_due === null) {\n return;\n }\n limitDate = moment(dueDate - moment.duration(appearance.days_to_due, \"days\"));\n if (now >= limitDate) {\n return currentAppearance = appearance;\n }\n });\n return currentAppearance;\n };\n\n DueDateService.prototype._formatTitle = function(options) {\n var formatedDate, prettyDate, status;\n prettyDate = this.translate.instant(\"COMMON.PICKERDATE.FORMAT\");\n formatedDate = moment(options.dueDate).format(prettyDate);\n status = this.getStatus(options);\n if (status != null ? status.name : void 0) {\n return formatedDate + \" (\" + status.name + \")\";\n }\n return formatedDate;\n };\n\n return DueDateService;\n\n })();\n\n taiga.DueDateService = DueDateService;\n\n angular.module(\"taigaCommon\").service(\"tgDueDateService\", DueDateService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var FileChangeDirective;\n\n FileChangeDirective = function($parse) {\n var link;\n link = function(scope, el, attrs, ctrl) {\n var eventAttr;\n eventAttr = $parse(attrs.tgFileChange);\n el.on('change', function(event) {\n return scope.$apply(function() {\n return eventAttr(scope, {\n files: event.currentTarget.files\n });\n });\n });\n return scope.$on(\"$destroy\", function() {\n return el.off();\n });\n };\n return {\n restrict: \"A\",\n link: link\n };\n };\n\n FileChangeDirective.$inject = [\"$parse\"];\n\n angular.module(\"taigaComponents\").directive(\"tgFileChange\", FileChangeDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var FilterRemoteStorageService, generateHash,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n generateHash = taiga.generateHash;\n\n FilterRemoteStorageService = (function(superClass) {\n extend(FilterRemoteStorageService, superClass);\n\n FilterRemoteStorageService.$inject = [\"$q\", \"$tgUrls\", \"$tgHttp\"];\n\n function FilterRemoteStorageService(q, urls, http) {\n this.q = q;\n this.urls = urls;\n this.http = http;\n }\n\n FilterRemoteStorageService.prototype.storeFilters = function(projectId, myFilters, filtersHashSuffix) {\n var deferred, hash, ns, promise, url;\n deferred = this.q.defer();\n url = this.urls.resolve(\"user-storage\");\n ns = projectId + \":\" + filtersHashSuffix;\n hash = generateHash([projectId, ns]);\n if (_.isEmpty(myFilters)) {\n promise = this.http[\"delete\"](url + \"/\" + hash, {\n key: hash,\n value: myFilters\n });\n promise.then(function() {\n return deferred.resolve();\n });\n promise.then(null, function() {\n return deferred.reject();\n });\n } else {\n promise = this.http.put(url + \"/\" + hash, {\n key: hash,\n value: myFilters\n });\n promise.then(function(data) {\n return deferred.resolve();\n });\n promise.then(null, (function(_this) {\n return function(data) {\n var innerPromise;\n innerPromise = _this.http.post(\"\" + url, {\n key: hash,\n value: myFilters\n });\n innerPromise.then(function() {\n return deferred.resolve();\n });\n return innerPromise.then(null, function() {\n return deferred.reject();\n });\n };\n })(this));\n }\n return deferred.promise;\n };\n\n FilterRemoteStorageService.prototype.getFilters = function(projectId, filtersHashSuffix) {\n var deferred, hash, ns, promise, url;\n deferred = this.q.defer();\n url = this.urls.resolve(\"user-storage\");\n ns = projectId + \":\" + filtersHashSuffix;\n hash = generateHash([projectId, ns]);\n promise = this.http.get(url + \"/\" + hash);\n promise.then(function(data) {\n return deferred.resolve(data.data.value);\n });\n promise.then(null, function(data) {\n return deferred.resolve({});\n });\n return deferred.promise;\n };\n\n return FilterRemoteStorageService;\n\n })(taiga.Service);\n\n angular.module(\"taigaComponents\").service(\"tgFilterRemoteStorageService\", FilterRemoteStorageService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var FilterSlideDownDirective;\n\n FilterSlideDownDirective = function() {\n var link;\n link = function(scope, el, attrs, ctrl) {\n var filter;\n filter = $('tg-filter');\n return scope.$watch(attrs.ngIf, function(value) {\n var contentHeight, wrapperHeight;\n if (value) {\n filter.find('.filter-list').hide();\n wrapperHeight = filter.height();\n contentHeight = 0;\n filter.children().each(function() {\n return contentHeight += $(this).outerHeight(true);\n });\n return $(el.context.nextSibling).css({\n \"display\": \"block\"\n });\n }\n });\n };\n return {\n priority: 900,\n link: link\n };\n };\n\n angular.module('taigaComponents').directive(\"tgFilterSlideDown\", [FilterSlideDownDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var FilterController;\n\n FilterController = (function() {\n FilterController.$inject = ['$translate'];\n\n FilterController.activeCustomFilter = null;\n\n FilterController.repeatedFilterError = false;\n\n FilterController.lengthZeroError = false;\n\n function FilterController(translate) {\n this.translate = translate;\n this.opened = null;\n this.filterModeOptions = [\"include\", \"exclude\"];\n this.filterModeLabels = {\n \"include\": this.translate.instant(\"COMMON.FILTERS.ADVANCED_FILTERS.INCLUDE\"),\n \"exclude\": this.translate.instant(\"COMMON.FILTERS.ADVANCED_FILTERS.EXCLUDE\")\n };\n this.filterMode = 'include';\n this.customFilterForm = false;\n this.customFilterName = '';\n this.$onChanges = function(changes) {\n if (changes.selectedFilters) {\n this.getIncludedFilters();\n return this.getExcludedFilters();\n }\n };\n this.includedFilters = this.getIncludedFilters();\n this.excludedFilters = this.getExcludedFilters();\n }\n\n FilterController.prototype.toggleFilterCategory = function(filterName) {\n if (this.opened === filterName) {\n return this.opened = null;\n } else {\n return this.opened = filterName;\n }\n };\n\n FilterController.prototype.isOpen = function(filterName) {\n return this.opened === filterName;\n };\n\n FilterController.prototype.openCustomFilter = function() {\n this.customFilterForm = true;\n this.lengthZeroError = false;\n return this.repeatedFilterError = false;\n };\n\n FilterController.prototype.saveCustomFilter = function() {\n if (this.customFilterName.length > 0 && !this.customFilters.find((function(_this) {\n return function(filter) {\n return filter.name === _this.customFilterName;\n };\n })(this))) {\n this.lengthZeroError = false;\n this.repeatedFilterError = false;\n this.onSaveCustomFilter({\n name: this.customFilterName\n });\n this.customFilterForm = false;\n this.opened = 'custom-filter';\n this.customFilterName = '';\n }\n if (this.customFilterName.length === 0) {\n this.lengthZeroError = true;\n } else {\n this.lengthZeroError = false;\n }\n if (!this.customFilters.find((function(_this) {\n return function(filter) {\n return filter.name === _this.customFilterName;\n };\n })(this))) {\n return this.repeatedFilterError = false;\n } else {\n return this.repeatedFilterError = true;\n }\n };\n\n FilterController.prototype.unselectFilter = function(filter) {\n this.activeCustomFilter = null;\n return this.onRemoveFilter({\n filter: filter\n });\n };\n\n FilterController.prototype.selectFilter = function(filterCategory, filter) {\n filter = {\n category: filterCategory,\n filter: filter,\n mode: this.filterMode\n };\n this.activeCustomFilter = null;\n return this.onAddFilter({\n filter: filter\n });\n };\n\n FilterController.prototype.removeCustomFilter = function(filter) {\n this.activeCustomFilter = null;\n return this.onRemoveCustomFilter({\n filter: filter\n });\n };\n\n FilterController.prototype.selectCustomFilter = function(filter) {\n this.activeCustomFilter = filter.id;\n return this.onSelectCustomFilter({\n filter: filter\n });\n };\n\n FilterController.prototype.getIncludedFilters = function() {\n return this.includedFilters = _.filter(this.selectedFilters, function(it) {\n return it.mode === 'include';\n });\n };\n\n FilterController.prototype.getExcludedFilters = function() {\n return this.excludedFilters = _.filter(this.selectedFilters, function(it) {\n return it.mode === 'exclude';\n });\n };\n\n FilterController.prototype.isFilterSelected = function(filterCategory, filter) {\n return !!_.find(this.selectedFilters, function(it) {\n return filter.id === it.id && filterCategory.dataType === it.dataType;\n });\n };\n\n return FilterController;\n\n })();\n\n angular.module('taigaComponents').controller('Filter', FilterController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var FilterDirective;\n\n FilterDirective = function() {\n var link;\n link = function(scope, el, attrs, ctrl) {\n var taskboard, watchTaskboardHeight;\n watchTaskboardHeight = (function(_this) {\n return function(taskboard) {\n var resizeObserver;\n resizeObserver = new ResizeObserver(function() {\n var currentMax, maxSize;\n maxSize = null;\n currentMax = Number(el[0].style.getPropertyValue('--filter-list-max-height').replace('px', ''));\n if (scope.vm.opened) {\n maxSize = taskboard.offsetHeight - el[0].offsetHeight + currentMax;\n } else {\n maxSize = taskboard.offsetHeight - el[0].offsetHeight;\n }\n if (maxSize < 100) {\n maxSize = 100;\n } else if (maxSize > 380) {\n maxSize = 380;\n }\n el[0].style.setProperty('--filter-list-max-height', maxSize + \"px\");\n return resizeObserver.unobserve(el[0]);\n });\n return resizeObserver.observe(taskboard);\n };\n })(this);\n attrs.$observe(\"open\", function(open) {\n open = scope.$eval(open);\n if (open) {\n return el.addClass('open');\n } else {\n return el.removeClass('open');\n }\n });\n taskboard = $('.js-taskboard-manager');\n if (taskboard.length) {\n return watchTaskboardHeight(taskboard[0]);\n }\n };\n return {\n scope: {\n onChangeQ: \"&\",\n onAddFilter: \"&\",\n onSelectCustomFilter: \"&\",\n onRemoveFilter: \"&\",\n onRemoveCustomFilter: \"&\",\n onSaveCustomFilter: \"&\",\n customFilters: \"<\",\n filters: \"<\",\n customFilters: \"<\",\n selectedFilters: \"<\"\n },\n bindToController: true,\n controller: \"Filter\",\n controllerAs: \"vm\",\n templateUrl: 'components/filter/filter.html',\n link: link\n };\n };\n\n angular.module('taigaComponents').directive(\"tgFilter\", [FilterDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var InputSearchComponent;\n\n InputSearchComponent = {\n bindings: {\n q: '<',\n change: '&'\n },\n template: \"\\n\",\n controller: function() {\n this.searchText = '';\n this.dirty = false;\n this.$onChanges = function(changes) {\n if (changes.q && !this.dirty) {\n return this.searchText = this.q;\n }\n };\n this.onChange = (function(_this) {\n return function(text) {\n _this.dirty = true;\n return _this.change({\n q: text\n });\n };\n })(this);\n }\n };\n\n angular.module(\"taigaComponents\").component(\"tgInputSearch\", InputSearchComponent);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var IssuesTableController;\n\n IssuesTableController = (function() {\n function IssuesTableController() {}\n\n IssuesTableController.prototype.edit = function(issue) {\n return this.onEditIssue({\n id: issue.id\n });\n };\n\n IssuesTableController.prototype.toggleTags = function() {\n return this.onToggleTags({\n tags: this.showTags\n });\n };\n\n IssuesTableController.prototype.detach = function(issue) {\n return this.onDetachIssue({\n id: issue.id\n });\n };\n\n IssuesTableController.prototype[\"delete\"] = function(issue) {\n return this.onDeleteIssue({\n id: issue.id\n });\n };\n\n return IssuesTableController;\n\n })();\n\n angular.module('taigaComponents').controller('IssuesTable', IssuesTableController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var issuesTableDirective, module;\n\n module = angular.module(\"taigaComponents\");\n\n issuesTableDirective = function($timeout) {\n var link;\n link = function(scope, el, attrs, ctrl) {\n scope.issueOptions = null;\n scope.displayOptions = function(id) {\n var timeout;\n if (timeout) {\n $timeout.cancel(timeout);\n timeout = null;\n }\n return scope.issueOptions = id;\n };\n return scope.hideOptions = function() {\n var timeout;\n return timeout = $timeout((function() {\n return scope.issueOptions = null;\n }), 200);\n };\n };\n return {\n controller: \"IssuesTable\",\n controllerAs: \"ctrl\",\n templateUrl: \"components/issues-table/issues-table.html\",\n bindToController: {\n issues: \"<\",\n showTags: \"=\",\n onLoadIssues: '&',\n onAddIssuesInBulk: '&',\n onAddNewIssue: '&',\n sprintIssues: '<',\n onDeleteIssue: '&',\n onEditIssue: '&',\n onDetachIssue: '&',\n onToggleTags: '&'\n },\n scope: true,\n link: link\n };\n };\n\n module.directive('tgIssuesTable', ['$timeout', issuesTableDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var JoyRideDirective, taiga;\n\n taiga = this.taiga;\n\n JoyRideDirective = function($rootScope, currentUserService, joyRideService, $location, $translate) {\n var link;\n link = function(scope, el, attrs, ctrl) {\n var initJoyrRide, intro, unsuscribe;\n unsuscribe = null;\n intro = introJs();\n intro.oncomplete(function() {\n return $('html,body').scrollTop(0);\n });\n intro.onexit(function() {\n return currentUserService.disableJoyRide();\n });\n initJoyrRide = function(next, config) {\n if (!config[next.joyride]) {\n return;\n }\n intro.setOptions({\n exitOnEsc: false,\n exitOnOverlayClick: false,\n showStepNumbers: false,\n nextLabel: $translate.instant('JOYRIDE.NAV.NEXT') + ' →',\n prevLabel: '← ' + $translate.instant('JOYRIDE.NAV.BACK'),\n skipLabel: $translate.instant('JOYRIDE.NAV.SKIP'),\n doneLabel: $translate.instant('JOYRIDE.NAV.DONE'),\n disableInteraction: true\n });\n intro.setOption('steps', joyRideService.get(next.joyride));\n return intro.start();\n };\n return $rootScope.$on('$routeChangeSuccess', function(event, next) {\n if (!next.joyride || !currentUserService.isAuthenticated()) {\n intro.exit();\n if (unsuscribe) {\n unsuscribe();\n }\n return;\n }\n intro.oncomplete(function() {\n return currentUserService.disableJoyRide(next.joyride);\n });\n if (next.loader) {\n return unsuscribe = $rootScope.$on('loader:end', function() {\n currentUserService.loadJoyRideConfig().then(function(config) {\n return initJoyrRide(next, config);\n });\n return unsuscribe();\n });\n } else {\n return currentUserService.loadJoyRideConfig().then(function(config) {\n return initJoyrRide(next, config);\n });\n }\n });\n };\n return {\n scope: {},\n link: link\n };\n };\n\n JoyRideDirective.$inject = [\"$rootScope\", \"tgCurrentUserService\", \"tgJoyRideService\", \"$location\", \"$translate\"];\n\n angular.module(\"taigaComponents\").directive(\"tgJoyRide\", JoyRideDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var JoyRideService,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n JoyRideService = (function(superClass) {\n extend(JoyRideService, superClass);\n\n JoyRideService.$inject = ['$translate', 'tgCheckPermissionsService'];\n\n function JoyRideService(translate, checkPermissionsService) {\n this.translate = translate;\n this.checkPermissionsService = checkPermissionsService;\n }\n\n JoyRideService.prototype.getConfig = function() {\n return {\n dashboard: (function(_this) {\n return function() {\n var steps;\n steps = [\n {\n element: '.project-list > section:not(.ng-hide)',\n position: 'left',\n joyride: {\n title: _this.translate.instant('JOYRIDE.DASHBOARD.STEP1.TITLE'),\n text: _this.translate.instant('JOYRIDE.DASHBOARD.STEP1.TEXT')\n }\n }, {\n element: '.working-on-container',\n position: 'right',\n joyride: {\n title: _this.translate.instant('JOYRIDE.DASHBOARD.STEP2.TITLE'),\n text: _this.translate.instant('JOYRIDE.DASHBOARD.STEP2.TEXT')\n }\n }, {\n element: '.watching-container',\n position: 'right',\n joyride: {\n title: _this.translate.instant('JOYRIDE.DASHBOARD.STEP3.TITLE'),\n text: [_this.translate.instant('JOYRIDE.DASHBOARD.STEP3.TEXT1'), _this.translate.instant('JOYRIDE.DASHBOARD.STEP3.TEXT2')]\n }\n }\n ];\n if (!$('.project-list .create-project-button').is(':hidden')) {\n steps.push({\n element: '.project-list .create-project-button',\n position: 'bottom',\n joyride: {\n title: _this.translate.instant('JOYRIDE.DASHBOARD.STEP4.TITLE'),\n text: [_this.translate.instant('JOYRIDE.DASHBOARD.STEP4.TEXT1'), _this.translate.instant('JOYRIDE.DASHBOARD.STEP4.TEXT2')]\n }\n });\n }\n return steps;\n };\n })(this),\n backlog: (function(_this) {\n return function() {\n var steps;\n steps = [\n {\n element: '.summary',\n position: 'bottom',\n joyride: {\n title: _this.translate.instant('JOYRIDE.BACKLOG.STEP1.TITLE'),\n text: [_this.translate.instant('JOYRIDE.BACKLOG.STEP1.TEXT1'), _this.translate.instant('JOYRIDE.BACKLOG.STEP1.TEXT2')]\n }\n }, {\n element: '.backlog-table-empty',\n position: 'bottom',\n joyride: {\n title: _this.translate.instant('JOYRIDE.BACKLOG.STEP2.TITLE'),\n text: _this.translate.instant('JOYRIDE.BACKLOG.STEP2.TEXT')\n }\n }, {\n element: '.sprints',\n position: 'left',\n joyride: {\n title: _this.translate.instant('JOYRIDE.BACKLOG.STEP3.TITLE'),\n text: _this.translate.instant('JOYRIDE.BACKLOG.STEP3.TEXT')\n }\n }\n ];\n if (_this.checkPermissionsService.check('add_us')) {\n steps.push({\n element: '.new-us',\n position: 'rigth',\n joyride: {\n title: _this.translate.instant('JOYRIDE.BACKLOG.STEP4.TITLE'),\n text: _this.translate.instant('JOYRIDE.BACKLOG.STEP4.TEXT')\n }\n });\n }\n return steps;\n };\n })(this),\n kanban: (function(_this) {\n return function() {\n var steps;\n steps = [\n {\n element: '.kanban-table-inner',\n position: 'bottom',\n joyride: {\n title: _this.translate.instant('JOYRIDE.KANBAN.STEP1.TITLE'),\n text: _this.translate.instant('JOYRIDE.KANBAN.STEP1.TEXT')\n }\n }, {\n element: '.card-placeholder',\n position: 'right',\n joyride: {\n title: _this.translate.instant('JOYRIDE.KANBAN.STEP2.TITLE'),\n text: _this.translate.instant('JOYRIDE.KANBAN.STEP2.TEXT')\n }\n }\n ];\n if (_this.checkPermissionsService.check('add_us')) {\n steps.push({\n element: '.add-action',\n position: 'bottom',\n joyride: {\n title: _this.translate.instant('JOYRIDE.KANBAN.STEP3.TITLE'),\n text: [_this.translate.instant('JOYRIDE.KANBAN.STEP3.TEXT1'), _this.translate.instant('JOYRIDE.KANBAN.STEP3.TEXT2')]\n }\n });\n }\n return steps;\n };\n })(this)\n };\n };\n\n JoyRideService.prototype.get = function(name) {\n var joyRide, joyRides;\n joyRides = this.getConfig();\n joyRide = joyRides[name].call(this);\n return _.map(joyRide, function(item) {\n var html;\n html = \"\";\n if (item.joyride.title) {\n html += \"

\" + item.joyride.title + \"

\";\n }\n if (_.isArray(item.joyride.text)) {\n _.forEach(item.joyride.text, function(text) {\n return html += \"

\" + text + \"

\";\n });\n } else {\n html += \"

\" + item.joyride.text + \"

\";\n }\n item.intro = html;\n return item;\n });\n };\n\n return JoyRideService;\n\n })(taiga.Service);\n\n angular.module(\"taigaComponents\").service(\"tgJoyRideService\", JoyRideService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var KanbanBoardZoomDirective;\n\n KanbanBoardZoomDirective = function(storage, projectService) {\n var link;\n link = function(scope, el, attrs, ctrl) {\n var getZoomView, zooms;\n scope.zoomIndex = storage.get(\"kanban_zoom\", 1);\n scope.levels = 4;\n zooms = [[\"assigned_to\", \"ref\"], [\"subject\", \"card-data\", \"assigned_to_extended\"], [\"tags\", \"extra_info\", \"unfold\"], [\"related_tasks\", \"attachments\"]];\n getZoomView = function(zoomIndex) {\n if (zoomIndex == null) {\n zoomIndex = 0;\n }\n if (zoomIndex > 3) {\n zoomIndex = 3;\n }\n zoomIndex = Number(zoomIndex);\n if (Number(storage.get(\"kanban_zoom\")) !== zoomIndex) {\n storage.set(\"kanban_zoom\", zoomIndex);\n }\n return _.reduce(zooms, function(result, value, key) {\n if (key <= zoomIndex) {\n result = result.concat(value);\n }\n return result;\n });\n };\n return scope.$watch('zoomIndex', function(zoomLevel) {\n var zoom;\n zoom = getZoomView(zoomLevel);\n return scope.onZoomChange({\n zoomLevel: zoomLevel,\n zoom: zoom\n });\n });\n };\n return {\n scope: {\n onZoomChange: \"&\"\n },\n template: \"\",\n link: link\n };\n };\n\n angular.module('taigaComponents').directive(\"tgKanbanBoardZoom\", [\"$tgStorage\", \"tgProjectService\", KanbanBoardZoomDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var SelectUserDirective, truncate;\n\n truncate = taiga.truncate;\n\n SelectUserDirective = function($rootScope, $repo, $translate, lightboxService, lightboxKeyboardNavigationService, avatarService, projectService) {\n var link;\n link = function($scope, $el, $attrs) {\n var closeLightbox, confirmSelection, getFilteredUsers, roles, users;\n users = [];\n roles = [];\n lightboxService.open($el);\n getFilteredUsers = function(text) {\n var _filterRows, available, collection, selected;\n if (text == null) {\n text = \"\";\n }\n selected = _.compact(_.sortBy(_.filter(users, function(x) {\n return _.includes($scope.currentUsers, x.id);\n }), 'name'));\n _filterRows = function(text, row) {\n var name;\n if (row.type === 'user' && _.find(selected, ['id', row.id])) {\n return false;\n }\n name = row.name.toUpperCase();\n text = text.toUpperCase();\n return _.includes(name, text);\n };\n collection = _.union(users, _.filter(roles, (function(_this) {\n return function(role) {\n var difference;\n difference = _.difference(role.userIds, _.map(selected, 'id'));\n return difference.length > 0;\n };\n })(this)));\n available = _.sortBy(_.filter(collection, _.partial(_filterRows, text)), 'name');\n if (!text) {\n $scope.selected = selected;\n return $scope.collection = _.union(selected, available);\n } else {\n $scope.selected = [];\n return $scope.collection = available;\n }\n };\n closeLightbox = function() {\n lightboxKeyboardNavigationService.stop();\n return lightboxService.close($el);\n };\n $scope.$on(\"watcher:add\", function(ctx, item) {\n $scope.item = item;\n getFilteredUsers();\n return lightboxService.open($el).then(function() {\n $el.find(\"input\").focus();\n return lightboxKeyboardNavigationService.init($el);\n });\n });\n $scope.$watch(\"activeUsers\", function(activeUsers) {\n var project;\n if (!activeUsers) {\n return;\n }\n users = _.map(activeUsers, function(user) {\n return {\n id: user.id,\n type: 'user',\n name: user.full_name_display,\n avatar: avatarService.getAvatar(user)\n };\n });\n if ($scope.single) {\n return;\n }\n project = projectService.project.toJS();\n return roles = _.map(project.roles, function(role) {\n var roleUsers, suffix;\n roleUsers = _.filter(activeUsers, {\n 'role': role.id\n });\n suffix = $translate.instant(\"LIGHTBOX.SELECT_USER.ROLE\");\n return {\n id: role.id,\n type: 'role',\n name: suffix + \": \" + role.name,\n avatar: null,\n userIds: _.map(roleUsers, 'id'),\n userNames: truncate('(' + _.join(_.map(roleUsers, 'full_name_display'), ', ') + ')', 110)\n };\n });\n });\n $scope.$watch(\"currentUsers\", function(currentUsers) {\n if (!currentUsers) {\n return;\n }\n return getFilteredUsers();\n });\n $scope.$watch(\"searchText\", function(searchingText) {\n getFilteredUsers(searchingText);\n return $el.find(\"input\").focus();\n });\n $scope.removeItem = function(user, $event) {\n $event.preventDefault();\n $event.stopPropagation();\n $event.currentTarget.remove();\n $scope.searchText = null;\n _.pull($scope.currentUsers, user.id);\n return getFilteredUsers();\n };\n $scope.addItem = function(item) {\n if (item.type === 'user') {\n if ($scope.currentUsers.includes(item.id)) {\n return;\n }\n if ($scope.single) {\n $scope.currentUsers = [item.id];\n confirmSelection();\n return;\n }\n $scope.currentUsers.push(item.id);\n }\n if (item.type === 'role') {\n $scope.currentUsers = _.union($scope.currentUsers, item.userIds);\n }\n $scope.searchText = null;\n return getFilteredUsers();\n };\n $scope.clearSearch = function() {\n return $scope.searchText = '';\n };\n confirmSelection = function() {\n $scope.loading = true;\n $scope.onClose($scope.currentUsers);\n closeLightbox();\n return $scope.loading = false;\n };\n $el.on(\"click\", \".lb-select-user-confirm\", function(event) {\n if ($scope.loading) {\n return;\n }\n event.preventDefault();\n return confirmSelection();\n });\n $el.on(\"click\", \".close\", function(event) {\n event.preventDefault();\n closeLightbox();\n return $scope.$apply(function() {\n return $scope.searchText = null;\n });\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n templateUrl: \"components/lb-select-user/lb-select-user.html\",\n link: link,\n scope: true\n };\n };\n\n SelectUserDirective.$inject = [\"$rootScope\", \"$tgRepo\", \"$translate\", \"lightboxService\", \"lightboxKeyboardNavigationService\", \"tgAvatarService\", \"tgProjectService\"];\n\n angular.module(\"taigaComponents\").directive(\"tgLbSelectUser\", SelectUserDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var LiveAnnouncementDirective;\n\n LiveAnnouncementDirective = function(liveAnnouncementService) {\n var link;\n link = function(scope, el, attrs) {};\n return {\n restrict: \"AE\",\n scope: {},\n controllerAs: 'vm',\n controller: function() {\n this.close = function() {\n return liveAnnouncementService.open = false;\n };\n return Object.defineProperties(this, {\n open: {\n get: function() {\n return liveAnnouncementService.open;\n }\n },\n title: {\n get: function() {\n return liveAnnouncementService.title;\n }\n },\n desc: {\n get: function() {\n return liveAnnouncementService.desc;\n }\n }\n });\n },\n link: link,\n templateUrl: \"components/live-announcement/live-announcement.html\"\n };\n };\n\n LiveAnnouncementDirective.$inject = [\"tgLiveAnnouncementService\"];\n\n angular.module(\"taigaComponents\").directive(\"tgLiveAnnouncement\", LiveAnnouncementDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var LiveAnnouncementService,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n LiveAnnouncementService = (function(superClass) {\n extend(LiveAnnouncementService, superClass);\n\n function LiveAnnouncementService() {\n this.open = false;\n this.title = \"\";\n this.desc = \"\";\n }\n\n LiveAnnouncementService.prototype.show = function(title, desc) {\n this.open = true;\n this.title = title;\n return this.desc = desc;\n };\n\n return LiveAnnouncementService;\n\n })(taiga.Service);\n\n angular.module(\"taigaComponents\").service(\"tgLiveAnnouncementService\", LiveAnnouncementService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var MoveToSprintLightboxController, module;\n\n module = angular.module(\"taigaComponents\");\n\n MoveToSprintLightboxController = (function() {\n MoveToSprintLightboxController.$inject = ['$rootScope', '$scope', '$tgResources', 'tgProjectService', '$translate', 'lightboxService', '$tgConfirm', '$q'];\n\n function MoveToSprintLightboxController(rootScope, scope, rs, projectService, translate, lightboxService, confirm, q) {\n this.rootScope = rootScope;\n this.scope = scope;\n this.rs = rs;\n this.projectService = projectService;\n this.translate = translate;\n this.lightboxService = lightboxService;\n this.confirm = confirm;\n this.q = q;\n this.projectId = this.projectService.project.get('id');\n this.loading = false;\n this.someSelected = false;\n this.selectedSprintId = null;\n this.typesSelected = {\n uss: false,\n tasks: false,\n issues: false\n };\n this.itemsToMove = {};\n this._loadSprints();\n this.scope.$watch(\"vm.openItems\", (function(_this) {\n return function(openItems) {\n if (!openItems) {\n return;\n }\n return _this._init(openItems);\n };\n })(this));\n }\n\n MoveToSprintLightboxController.prototype._init = function(openItems) {\n var ref, ref1, ref2;\n this.hasManyItemTypes = _.size(this.openItems) > 1;\n this.ussCount = parseInt((ref = openItems.uss) != null ? ref.length : void 0);\n this.updateSelected('uss', this.ussCount > 0);\n this.tasksCount = parseInt((ref1 = openItems.tasks) != null ? ref1.length : void 0);\n this.updateSelected('tasks', this.tasksCount > 0);\n this.issuesCount = parseInt((ref2 = openItems.issues) != null ? ref2.length : void 0);\n return this.updateSelected('issues', this.issuesCount > 0);\n };\n\n MoveToSprintLightboxController.prototype._loadSprints = function() {\n return this.rs.sprints.list(this.projectId, {\n closed: false\n }).then((function(_this) {\n return function(data) {\n return _this.sprints = _.filter(data.milestones, function(x) {\n return x.id !== _this.sprint.id;\n });\n };\n })(this));\n };\n\n MoveToSprintLightboxController.prototype.updateSelected = function(itemType, value) {\n this.typesSelected[itemType] = value;\n this.someSelected = _.some(this.typesSelected);\n if (value === true) {\n return this.itemsToMove[itemType] = this.openItems[itemType];\n } else if (this.itemsToMove[itemType]) {\n return delete this.itemsToMove[itemType];\n }\n };\n\n MoveToSprintLightboxController.prototype.submit = function() {\n var itemsNotMoved;\n itemsNotMoved = {};\n _.map(this.openItems, (function(_this) {\n return function(itemsList, itemsType) {\n if (!_this.itemsToMove[itemsType]) {\n return itemsNotMoved[itemsType] = true;\n }\n };\n })(this));\n this.loading = true;\n return this.moveItems().then((function(_this) {\n return function() {\n _this.rootScope.$broadcast(\"taskboard:items:move\", _this.typesSelected);\n _this.lightboxService.closeAll();\n _this.loading = false;\n if (_.size(itemsNotMoved) > 0) {\n return _this.displayWarning(itemsNotMoved);\n }\n };\n })(this));\n };\n\n MoveToSprintLightboxController.prototype.moveItems = function() {\n var promises;\n promises = [];\n if (this.itemsToMove.uss) {\n promises.push(this.rs.sprints.moveUserStoriesMilestone(this.sprint.id, this.projectId, this.selectedSprintId, this.itemsToMove.uss));\n }\n if (this.itemsToMove.tasks) {\n promises.push(this.rs.sprints.moveTasksMilestone(this.sprint.id, this.projectId, this.selectedSprintId, this.itemsToMove.tasks));\n }\n if (this.itemsToMove.issues) {\n promises.push(this.rs.sprints.moveIssuesMilestone(this.sprint.id, this.projectId, this.selectedSprintId, this.itemsToMove.issues));\n }\n return this.q.all(promises);\n };\n\n MoveToSprintLightboxController.prototype.displayWarning = function(itemsNotMoved) {\n var action, desc, ref, title, totalItemsMoved;\n action = this.translate.instant('COMMON.I_GET_IT');\n if (_.size(itemsNotMoved) === 1 && itemsNotMoved.issues === true) {\n title = this.translate.instant('TASKBOARD.MOVE_TO_SPRINT.WARNING_ISSUES_NOT_MOVED_TITLE');\n desc = this.translate.instant('TASKBOARD.MOVE_TO_SPRINT.WARNING_ISSUES_NOT_MOVED');\n } else {\n totalItemsMoved = 0;\n _.map(this.itemsToMove, function(itemsList, itemsType) {\n return totalItemsMoved += itemsList.length;\n });\n title = this.translate.instant('TASKBOARD.MOVE_TO_SPRINT.WARNING_SPRINT_STILL_OPEN_TITLE', {\n total: totalItemsMoved\n }, 'messageformat');\n desc = this.translate.instant('TASKBOARD.MOVE_TO_SPRINT.WARNING_SPRINT_STILL_OPEN', {\n sprintName: (ref = this.sprint) != null ? ref.name : void 0\n });\n }\n return this.confirm.success(title, desc, null, action);\n };\n\n return MoveToSprintLightboxController;\n\n })();\n\n module.controller(\"MoveToSprintLbCtrl\", MoveToSprintLightboxController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, moveToSprintLightboxDirective;\n\n module = angular.module(\"taigaComponents\");\n\n moveToSprintLightboxDirective = function(lightboxService) {\n var link;\n link = function(scope, el, attrs, ctrl) {\n return lightboxService.open(el);\n };\n return {\n scope: {},\n bindToController: {\n openItems: \"=\",\n sprint: \"=\"\n },\n templateUrl: \"components/move-to-sprint/move-to-sprint-lb/move-to-sprint-lb.html\",\n controller: \"MoveToSprintLbCtrl\",\n controllerAs: \"vm\",\n link: link\n };\n };\n\n moveToSprintLightboxDirective.$inject = [\"lightboxService\"];\n\n module.directive(\"tgLbMoveToSprint\", moveToSprintLightboxDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var MoveToSprintController, taiga;\n\n taiga = this.taiga;\n\n MoveToSprintController = (function() {\n MoveToSprintController.$inject = ['$scope', 'tgLightboxFactory', 'tgProjectService'];\n\n function MoveToSprintController(scope, lightboxFactory, projectService) {\n this.scope = scope;\n this.lightboxFactory = lightboxFactory;\n this.projectService = projectService;\n this.permissions = this.projectService.project.get('my_permissions');\n this.hasOpenItems = false;\n this.disabled = false;\n this.openItems = {\n uss: [],\n tasks: [],\n issues: []\n };\n this.scope.$watch(\"vm.uss\", (function(_this) {\n return function() {\n return _this.getOpenUss();\n };\n })(this));\n this.scope.$watch(\"vm.unnasignedTasks\", (function(_this) {\n return function() {\n return _this.getOpenStorylessTasks();\n };\n })(this));\n this.scope.$watch(\"vm.issues\", (function(_this) {\n return function() {\n return _this.getOpenIssues();\n };\n })(this));\n }\n\n MoveToSprintController.prototype.checkOpenItems = function() {\n return _.some(Object.keys(this.openItems), (function(_this) {\n return function(x) {\n return _this.openItems[x].length > 0;\n };\n })(this));\n };\n\n MoveToSprintController.prototype.openLightbox = function() {\n var openItems;\n if (this.disabled === !true && this.hasOpenItems) {\n openItems = {};\n _.map(this.openItems, function(itemsList, itemsType) {\n if (itemsList.length) {\n return openItems[itemsType] = itemsList;\n }\n });\n return this.lightboxFactory.create('tg-lb-move-to-sprint', {\n \"class\": \"lightbox lightbox-move-to-sprint\",\n \"sprint\": \"sprint\",\n \"open-items\": \"openItems\"\n }, {\n sprint: this.sprint,\n openItems: openItems\n });\n }\n };\n\n MoveToSprintController.prototype.getOpenUss = function() {\n if (!this.uss || this.permissions.indexOf(\"modify_us\") === -1) {\n return;\n }\n this.openItems.uss = [];\n this.uss.map((function(_this) {\n return function(us) {\n if (us.is_closed === false) {\n return _this.openItems.uss.push({\n us_id: us.id,\n order: us.sprint_order\n });\n }\n };\n })(this));\n return this.hasOpenItems = this.checkOpenItems();\n };\n\n MoveToSprintController.prototype.getOpenStorylessTasks = function() {\n if (!this.unnasignedTasks || this.permissions.indexOf(\"modify_task\") === -1) {\n return;\n }\n this.openItems.tasks = [];\n this.unnasignedTasks.map((function(_this) {\n return function(column) {\n return column.map(function(taskId) {\n var task;\n task = _this.taskMap.get(taskId);\n if (task.get('model').get('is_closed') === false) {\n return _this.openItems.tasks.push({\n task_id: task.get('model').get('id'),\n order: task.get('model').get('taskboard_order')\n });\n }\n });\n };\n })(this));\n return this.hasOpenItems = this.checkOpenItems();\n };\n\n MoveToSprintController.prototype.getOpenIssues = function() {\n if (!this.issues || this.permissions.indexOf(\"modify_issue\") === -1) {\n return;\n }\n this.openItems.issues = [];\n this.issues.map((function(_this) {\n return function(issue) {\n if (issue.get('status').get('is_closed') === false) {\n return _this.openItems.issues.push({\n issue_id: issue.get('id')\n });\n }\n };\n })(this));\n return this.hasOpenItems = this.checkOpenItems();\n };\n\n return MoveToSprintController;\n\n })();\n\n angular.module('taigaComponents').controller('MoveToSprintCtrl', MoveToSprintController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, moveToSprintDirective;\n\n module = angular.module(\"taigaComponents\");\n\n moveToSprintDirective = function(taskboardTasksService) {\n return {\n controller: \"MoveToSprintCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n templateUrl: 'components/move-to-sprint/move-to-sprint.html',\n scope: {\n sprint: '=',\n uss: '=',\n unnasignedTasks: '=',\n issues: '=',\n disabled: '=',\n taskMap: '='\n }\n };\n };\n\n moveToSprintDirective.$inject = ['tgTaskboardTasks'];\n\n module.directive('tgMoveToSprint', [moveToSprintDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProjectLogoBigSrcDirective;\n\n ProjectLogoBigSrcDirective = function(projectLogoService) {\n var link;\n link = function(scope, el, attrs) {\n return scope.$watch('project', function(project) {\n var logo, projectLogo;\n project = Immutable.fromJS(project);\n if (!project) {\n return;\n }\n projectLogo = project.get('logo_big_url');\n if (projectLogo) {\n el.attr('src', projectLogo);\n return el.css('background', \"\");\n } else {\n logo = projectLogoService.getDefaultProjectLogo(project.get('slug'), project.get('id'));\n el.attr('src', logo.src);\n return el.css('background', logo.color);\n }\n });\n };\n return {\n link: link,\n scope: {\n project: \"=tgProjectLogoBigSrc\"\n }\n };\n };\n\n ProjectLogoBigSrcDirective.$inject = [\"tgProjectLogoService\"];\n\n angular.module(\"taigaComponents\").directive(\"tgProjectLogoBigSrc\", ProjectLogoBigSrcDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProjectLogoSmallSrcDirective;\n\n ProjectLogoSmallSrcDirective = function(projectLogoService) {\n var link;\n link = function(scope, el, attrs) {\n return scope.$watch('project', function(project) {\n var logo, projectLogo;\n project = Immutable.fromJS(project);\n if (!project) {\n return;\n }\n projectLogo = project.get('logo_small_url');\n if (projectLogo) {\n el.attr('src', projectLogo);\n return el.css('background', \"\");\n } else {\n logo = projectLogoService.getDefaultProjectLogo(project.get('slug'), project.get('id'));\n el.attr('src', logo.src);\n return el.css('background', logo.color);\n }\n });\n };\n return {\n link: link,\n scope: {\n project: \"=tgProjectLogoSmallSrc\"\n }\n };\n };\n\n ProjectLogoSmallSrcDirective.$inject = [\"tgProjectLogoService\"];\n\n angular.module(\"taigaComponents\").directive(\"tgProjectLogoSmallSrc\", ProjectLogoSmallSrcDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProjectMenuController;\n\n ProjectMenuController = (function() {\n ProjectMenuController.$inject = [\"tgProjectService\", \"tgLightboxFactory\"];\n\n function ProjectMenuController(projectService, lightboxFactory) {\n this.projectService = projectService;\n this.lightboxFactory = lightboxFactory;\n this.project = null;\n this.menu = Immutable.Map();\n }\n\n ProjectMenuController.prototype.show = function() {\n var ref;\n this.project = this.projectService.project;\n this.sprints = (ref = this.project.get('milestones')) != null ? ref.toJS() : void 0;\n this.active = this._getActiveSection();\n this.projectMenu = {\n component: 'tg-project-navigation',\n params: {\n project: this.projectService.project.toJS()\n },\n events: {\n search: (function(_this) {\n return function() {\n return _this.search();\n };\n })(this)\n }\n };\n this._setVideoConference();\n return this._setMenuPermissions();\n };\n\n ProjectMenuController.prototype.hide = function() {\n this.project = null;\n return this.menu = {};\n };\n\n ProjectMenuController.prototype.search = function() {\n return this.lightboxFactory.create(\"tg-search-box\", {\n \"class\": \"lightbox lightbox-search\"\n });\n };\n\n ProjectMenuController.prototype._setVideoConference = function() {\n var videoconferenceUrl;\n videoconferenceUrl = this._videoConferenceUrl();\n if (videoconferenceUrl) {\n return this.project = this.project.set(\"videoconferenceUrl\", videoconferenceUrl);\n }\n };\n\n ProjectMenuController.prototype._setMenuPermissions = function() {\n this.menu = Immutable.Map({\n epics: false,\n backlog: false,\n kanban: false,\n issues: false,\n wiki: false\n });\n if (this.project.get(\"is_epics_activated\") && this.project.get(\"my_permissions\").indexOf(\"view_epics\") !== -1) {\n this.menu = this.menu.set(\"epics\", true);\n }\n if (this.project.get(\"is_backlog_activated\") && this.project.get(\"my_permissions\").indexOf(\"view_us\") !== -1) {\n this.menu = this.menu.set(\"backlog\", true);\n }\n if (this.project.get(\"is_kanban_activated\") && this.project.get(\"my_permissions\").indexOf(\"view_us\") !== -1) {\n this.menu = this.menu.set(\"kanban\", true);\n }\n if (this.project.get(\"is_issues_activated\") && this.project.get(\"my_permissions\").indexOf(\"view_issues\") !== -1) {\n this.menu = this.menu.set(\"issues\", true);\n }\n if (this.project.get(\"is_wiki_activated\") && this.project.get(\"my_permissions\").indexOf(\"view_wiki_pages\") !== -1) {\n return this.menu = this.menu.set(\"wiki\", true);\n }\n };\n\n ProjectMenuController.prototype._getActiveSection = function() {\n var indexBacklog, indexKanban, oldSectionName, sectionName, sectionsBreadcrumb;\n sectionName = this.projectService.section;\n sectionsBreadcrumb = this.projectService.sectionsBreadcrumb;\n indexBacklog = sectionsBreadcrumb.lastIndexOf(\"backlog\");\n indexKanban = sectionsBreadcrumb.lastIndexOf(\"kanban\");\n if (indexBacklog !== -1 || indexKanban !== -1) {\n if (indexKanban === -1 || indexBacklog > indexKanban) {\n oldSectionName = \"backlog\";\n } else {\n oldSectionName = \"kanban\";\n }\n }\n if (sectionName === \"backlog-kanban\") {\n if (oldSectionName === \"backlog\" || oldSectionName === \"kanban\") {\n sectionName = oldSectionName;\n } else if (this.project.get(\"is_backlog_activated\") && !this.project.get(\"is_kanban_activated\")) {\n sectionName = \"backlog\";\n } else if (!this.project.get(\"is_backlog_activated\") && this.project.get(\"is_kanban_activated\")) {\n sectionName = \"kanban\";\n }\n }\n return sectionName;\n };\n\n ProjectMenuController.prototype._videoConferenceUrl = function() {\n var baseUrl, url;\n if (this.project.get(\"videoconferences\") === \"whereby-com\") {\n baseUrl = \"https://whereby.com/\";\n } else if (this.project.get(\"videoconferences\") === \"talky\") {\n baseUrl = \"https://talky.io/\";\n } else if (this.project.get(\"videoconferences\") === \"jitsi\") {\n baseUrl = \"https://meet.jit.si/\";\n } else if (this.project.get(\"videoconferences\") === \"custom\") {\n return this.project.get(\"videoconferences_extra_data\");\n } else {\n return \"\";\n }\n if (this.project.get(\"videoconferences_extra_data\")) {\n url = this.project.get(\"slug\") + \"-\" + taiga.slugify(this.project.get(\"videoconferences_extra_data\"));\n } else {\n url = this.project.get(\"slug\");\n }\n if (this.project.get(\"videoconferences\") === \"jitsi\") {\n url = url.replace(/-/g, \"\");\n }\n return baseUrl + url;\n };\n\n return ProjectMenuController;\n\n })();\n\n angular.module(\"taigaComponents\").controller(\"ProjectMenu\", ProjectMenuController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProjectMenuDirective, taiga;\n\n taiga = this.taiga;\n\n ProjectMenuDirective = function(projectService, lightboxFactory) {\n var link;\n link = function(scope, el, attrs, ctrl) {\n var fixed, projectChange, topBarHeight;\n projectChange = function() {\n if (projectService.project) {\n return ctrl.show();\n } else {\n return ctrl.hide();\n }\n };\n scope.$watch((function() {\n return projectService.project;\n }), projectChange);\n fixed = false;\n topBarHeight = 48;\n return window.addEventListener(\"scroll\", function() {\n var position;\n position = $(window).scrollTop();\n if (position > topBarHeight && fixed === false) {\n el.find('.sticky-project-menu').addClass('unblock');\n return fixed = true;\n } else if (position === 0 && fixed === true) {\n el.find('.sticky-project-menu').removeClass('unblock');\n return fixed = false;\n }\n });\n };\n return {\n scope: {},\n controller: \"ProjectMenu\",\n controllerAs: \"vm\",\n templateUrl: \"components/project-menu/project-menu.html\",\n link: link\n };\n };\n\n ProjectMenuDirective.$inject = [\"tgProjectService\", \"tgLightboxFactory\"];\n\n angular.module(\"taigaComponents\").directive(\"tgProjectMenu\", ProjectMenuDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var PromoteToUsButtonDirective;\n\n PromoteToUsButtonDirective = function($rootScope, $rs, $confirm, $translate) {\n var link;\n link = function($scope, $el, $attrs, $model) {\n var itemType, save;\n itemType = null;\n save = function(item, askResponse) {\n var data, onError, onSuccess;\n data = {\n project: item.project\n };\n onSuccess = function(response) {\n askResponse.finish();\n $confirm.notify(\"success\");\n return $rootScope.$broadcast(\"promote-\" + itemType + \"-to-us:success\", response.data[0]);\n };\n onError = function() {\n askResponse.finish();\n return $confirm.notify(\"error\");\n };\n return $rs[item._name].promoteToUserStory(item.id, item.project).then(onSuccess, onError);\n };\n $el.on(\"click\", \".promote-button\", function(event) {\n var ctx, item, message, subtitle, title;\n event.preventDefault();\n item = $model.$modelValue;\n itemType = _.get({\n tasks: 'task',\n issues: 'issue'\n }, item._name);\n ctx = \"COMMON.CONFIRM_PROMOTE.\" + (itemType.toUpperCase());\n title = $translate.instant(ctx + \".TITLE\");\n message = $translate.instant(ctx + \".MESSAGE\");\n subtitle = item.subject;\n return $confirm.ask(title, subtitle, message).then(function(response) {\n return save(item, response);\n });\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n restrict: \"AE\",\n require: \"ngModel\",\n templateUrl: \"components/promote-to-us/promote-to-us.html\",\n link: link\n };\n };\n\n angular.module(\"taigaComponents\").directive(\"tgPromoteToUsButton\", [\"$rootScope\", \"$tgResources\", \"$tgConfirm\", \"$translate\", PromoteToUsButtonDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var groupBy, module, normalizeString, searchListDirective;\n\n module = angular.module(\"taigaComponents\");\n\n normalizeString = this.taiga.normalizeString;\n\n groupBy = this.taiga.groupBy;\n\n searchListDirective = function($translate) {\n var link;\n link = function(scope, el, attrs, model) {\n var avaliableItems, filtering, isContainedIn, itemsById, parseString, resetAll, resetSelected;\n scope.templateUrl = \"components/search-list/search-list-\" + scope.itemType + \"-choice.html\";\n scope.currentSelected = null;\n filtering = false;\n avaliableItems = [];\n itemsById = {};\n if (scope.itemType === 'issue') {\n scope.milestonesById = groupBy(scope.project.milestones, function(e) {\n return e.id;\n });\n }\n if (scope.filterClosed) {\n scope.showClosed = false;\n if (scope.itemType === 'sprint') {\n scope.textShowClosed = $translate.instant(\"BACKLOG.SPRINTS.ACTION_SHOW_CLOSED_SPRINTS\");\n scope.textHideClosed = $translate.instant(\"BACKLOG.SPRINTS.ACTION_HIDE_CLOSED_SPRINTS\");\n }\n }\n el.on(\"click\", \".choice\", function(event) {\n var choiceId, ref, value;\n choiceId = parseInt($(event.currentTarget).data(\"choice-id\"));\n value = ((ref = attrs.ngModel) != null ? ref.id : void 0) !== choiceId ? itemsById[choiceId] : null;\n model.$setViewValue(value);\n scope.currentSelected = value;\n return scope.$apply();\n });\n isContainedIn = function(needle, haystack) {\n return _.includes(parseString(haystack), parseString(needle));\n };\n parseString = function(value) {\n if (typeof value !== 'string') {\n value = value.toString();\n }\n return normalizeString(value.toUpperCase());\n };\n resetSelected = function() {\n scope.currentSelected = null;\n return model.$setViewValue(null);\n };\n resetAll = function() {\n resetSelected();\n scope.searchText = '';\n avaliableItems = angular.copy(scope.items);\n return itemsById = groupBy(avaliableItems, function(x) {\n return x.id;\n });\n };\n scope.isVisible = function(item) {\n var ref;\n if (!scope.filterClosed || scope.showClosed) {\n return true;\n }\n if (scope.itemType === 'sprint' && (item.closed || item.is_closed)) {\n if (((ref = scope.currentSelected) != null ? ref.id : void 0) === item.id) {\n resetSelected();\n }\n return false;\n }\n return true;\n };\n scope.toggleShowClosed = function(item) {\n return scope.showClosed = !scope.showClosed;\n };\n scope.filterItems = function(searchText) {\n scope.filtering = true;\n scope.items = _.filter(avaliableItems, function(item) {\n var itemAttrs;\n itemAttrs = item.getAttrs();\n if (Array.isArray(scope.filterBy)) {\n return _.some(scope.filterBy, function(attr) {\n return isContainedIn(searchText, itemAttrs[attr]);\n });\n } else {\n return isContainedIn(searchText, itemAttrs[scope.filterBy]);\n }\n });\n if (!_.find(scope.items, scope.currentSelected)) {\n return resetSelected();\n }\n };\n return scope.$watch('items', function(items) {\n if (!scope.filtering && items) {\n return resetAll();\n }\n });\n };\n return {\n link: link,\n templateUrl: \"components/search-list/search-list.html\",\n require: \"ngModel\",\n scope: {\n label: '@',\n placeholder: '@',\n project: '=',\n filterBy: '=',\n items: '=',\n itemType: '@',\n filterClosed: '=',\n itemDisabled: '='\n }\n };\n };\n\n module.directive('tgSearchList', ['$translate', searchListDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var SwimlaneSelector, cancelTimeout, taiga, timeout;\n\n taiga = this.taiga;\n\n timeout = this.taiga.timeout;\n\n cancelTimeout = this.taiga.cancelTimeout;\n\n SwimlaneSelector = function($timeout, $translate) {\n var link;\n link = function(scope, el, attrs) {\n var getCurrentSwimlane, getSelectedSwimlane, mount;\n scope.displaySelector = false;\n scope.selectedSwimlane = null;\n timeout = null;\n mount = function() {\n return getCurrentSwimlane();\n };\n getCurrentSwimlane = function() {\n var filteredSwimlanes;\n if (scope.userStory.id) {\n if (scope.userStory.swimlane) {\n filteredSwimlanes = scope.swimlanes.filter(function(swimlane) {\n return swimlane.id === scope.userStory.swimlane;\n });\n scope.currentSwimlane = filteredSwimlanes.get(0);\n } else {\n scope.currentSwimlane = null;\n }\n } else {\n filteredSwimlanes = scope.swimlanes.filter(function(swimlane) {\n return swimlane.id === scope.defaultSwimlaneId;\n });\n scope.currentSwimlane = filteredSwimlanes.get(0);\n }\n return getSelectedSwimlane();\n };\n getSelectedSwimlane = function() {\n if (scope.userStory.id) {\n if (scope.currentSwimlane) {\n return scope.selectedSwimlane = scope.currentSwimlane.id;\n } else {\n return scope.selectedSwimlane = null;\n }\n } else {\n return scope.selectedSwimlane = scope.currentSwimlane.id;\n }\n };\n scope.displayOptions = function() {\n if (timeout) {\n $timeout.cancel(timeout);\n timeout = null;\n }\n return scope.displaySelector = true;\n };\n scope.hideOptions = function() {\n return timeout = $timeout((function() {\n return scope.displaySelector = false;\n }), 100);\n };\n scope.selectSwimlane = function(swimlane) {\n if (swimlane === 'noSwimlane') {\n swimlane = {\n id: null,\n kanban_order: 1,\n name: $translate.instant(\"KANBAN.UNCLASSIFIED_USER_STORIES\")\n };\n scope.ngModel = swimlane.id;\n scope.currentSwimlane = swimlane;\n scope.hideOptions();\n } else {\n scope.ngModel = swimlane.id !== -1 ? swimlane.id : null;\n scope.currentSwimlane = swimlane;\n scope.hideOptions();\n }\n return getSelectedSwimlane();\n };\n scope.$watch('userStory', function(userStory) {\n return getCurrentSwimlane();\n });\n return mount();\n };\n return {\n link: link,\n templateUrl: \"components/swimlane-selector/swimlane-selector.html\",\n scope: {\n swimlanes: '<',\n defaultSwimlaneId: '<',\n userStory: '<',\n hasUnclassifiedStories: '<',\n ngModel: '='\n },\n require: \"ngModel\"\n };\n };\n\n angular.module('taigaComponents').directive(\"tgSwimlaneSelector\", ['$timeout', \"$translate\", SwimlaneSelector]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TagOptionDirective, module;\n\n module = angular.module('taigaCommon');\n\n TagOptionDirective = function() {\n var dispatch, link, select, stop;\n select = function(selected) {\n var containerHeight, diff, selectedPosition;\n selected.addClass('selected');\n selectedPosition = selected.position().top + selected.outerHeight();\n containerHeight = selected.parent().outerHeight();\n if (selectedPosition > containerHeight) {\n diff = selectedPosition - containerHeight;\n return selected.parent().scrollTop(selected.parent().scrollTop() + diff);\n } else if (selected.position().top < 0) {\n return selected.parent().scrollTop(selected.parent().scrollTop() + selected.position().top);\n }\n };\n dispatch = function(el, code, scope) {\n var activeElement, next, prev;\n activeElement = el.find(\".selected\");\n if (code === 40) {\n if (!activeElement.length) {\n return select(el.find('li:first'));\n } else {\n next = activeElement.next('li');\n if (next.length) {\n activeElement.removeClass('selected');\n return select(next);\n }\n }\n } else if (code === 38) {\n if (!activeElement.length) {\n return select(el.find('li:last'));\n } else {\n prev = activeElement.prev('li');\n if (prev.length) {\n activeElement.removeClass('selected');\n return select(prev);\n }\n }\n }\n };\n stop = function() {\n return $(document).off(\".tags-keyboard-navigation\");\n };\n link = function(scope, el) {\n stop();\n $(el).parent().on(\"keydown.tags-keyboard-navigation\", (function(_this) {\n return function(event) {\n var code;\n code = event.keyCode ? event.keyCode : event.which;\n if (code === 40 || code === 38) {\n event.preventDefault();\n return dispatch(el, code, scope);\n }\n };\n })(this));\n return scope.$on(\"$destroy\", stop);\n };\n return {\n link: link,\n templateUrl: \"components/tags/tag-dropdown/tag-dropdown.html\",\n scope: {\n onSelectTag: \"&\",\n colorArray: \"=\",\n tag: \"=\"\n }\n };\n };\n\n module.directive(\"tgTagsDropdown\", TagOptionDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TagLineCommonController, module, trim;\n\n trim = this.taiga.trim;\n\n module = angular.module('taigaCommon');\n\n TagLineCommonController = (function() {\n TagLineCommonController.$inject = [\"tgTagLineService\"];\n\n function TagLineCommonController(tagLineService) {\n this.tagLineService = tagLineService;\n this.disableColorSelection = false;\n this.newTag = {\n name: \"\",\n color: null\n };\n this.colorArray = [];\n this.addTag = false;\n }\n\n TagLineCommonController.prototype.checkPermissions = function() {\n var hasPermissions;\n hasPermissions = this.tagLineService.checkPermissions(this.project.my_permissions, this.permissions);\n return hasPermissions;\n };\n\n TagLineCommonController.prototype._createColorsArray = function(projectTagColors) {\n return this.colorArray = this.tagLineService.createColorsArray(projectTagColors);\n };\n\n TagLineCommonController.prototype.displayTagInput = function() {\n return this.addTag = true;\n };\n\n TagLineCommonController.prototype.addNewTag = function(name, color) {\n this.newTag.name = \"\";\n this.newTag.color = null;\n if (!name.length) {\n return;\n }\n if (this.disableColorSelection) {\n if (name.length) {\n return this.onAddTag({\n name: name,\n color: color\n });\n }\n } else {\n if (this.project.tags_colors[name]) {\n color = this.project.tags_colors[name];\n }\n return this.onAddTag({\n name: name,\n color: color\n });\n }\n };\n\n TagLineCommonController.prototype.selectColor = function(color) {\n return this.newTag.color = color;\n };\n\n return TagLineCommonController;\n\n })();\n\n module.controller(\"TagLineCommonCtrl\", TagLineCommonController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TagLineCommonDirective, module;\n\n module = angular.module('taigaCommon');\n\n TagLineCommonDirective = function() {\n var link;\n link = function(scope, el, attr, ctrl) {\n var unwatch;\n if (!_.isUndefined(attr.disableColorSelection)) {\n ctrl.disableColorSelection = true;\n }\n unwatch = scope.$watch(\"vm.project\", function(project) {\n if (!project || !Object.keys(project).length) {\n return;\n }\n unwatch();\n if (!ctrl.disableColorSelection) {\n return ctrl.colorArray = ctrl._createColorsArray(ctrl.project.tags_colors);\n }\n });\n return el.on(\"keydown\", \".tag-input\", function(event) {\n var tagName;\n if (event.keyCode === 27) {\n ctrl.addTag = false;\n ctrl.newTag.name = \"\";\n ctrl.newTag.color = \"\";\n event.stopPropagation();\n } else if (event.keyCode === 13) {\n event.preventDefault();\n if (el.find('.tags-dropdown .selected').length) {\n tagName = $('.tags-dropdown .selected .tags-dropdown-name').text();\n ctrl.addNewTag(tagName, null);\n } else {\n ctrl.addNewTag(ctrl.newTag.name, ctrl.newTag.color);\n }\n }\n return scope.$apply();\n });\n };\n return {\n link: link,\n scope: {\n permissions: \"@\",\n loadingAddTag: \"=\",\n loadingRemoveTag: \"=\",\n tags: \"=\",\n project: \"=\",\n onAddTag: \"&\",\n onDeleteTag: \"&\"\n },\n templateUrl: \"components/tags/tag-line-common/tag-line-common.html\",\n controller: \"TagLineCommonCtrl\",\n controllerAs: \"vm\",\n bindToController: true\n };\n };\n\n module.directive(\"tgTagLineCommon\", TagLineCommonDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TagLineController, module, trim;\n\n trim = this.taiga.trim;\n\n module = angular.module('taigaCommon');\n\n TagLineController = (function() {\n TagLineController.$inject = [\"$rootScope\", \"$tgConfirm\", \"$tgQueueModelTransformation\"];\n\n function TagLineController(rootScope, confirm, modelTransform) {\n this.rootScope = rootScope;\n this.confirm = confirm;\n this.modelTransform = modelTransform;\n this.loadingAddTag = false;\n }\n\n TagLineController.prototype.onDeleteTag = function(tag) {\n var onDeleteTagError, onDeleteTagSuccess, tagName, transform;\n this.loadingRemoveTag = tag[0];\n onDeleteTagSuccess = (function(_this) {\n return function(item) {\n _this.rootScope.$broadcast(\"object:updated\");\n _this.loadingRemoveTag = false;\n return item;\n };\n })(this);\n onDeleteTagError = (function(_this) {\n return function() {\n _this.confirm.notify(\"error\");\n return _this.loadingRemoveTag = false;\n };\n })(this);\n tagName = trim(tag[0].toLowerCase());\n transform = this.modelTransform.save(function(item) {\n var itemtags;\n itemtags = _.clone(item.tags);\n _.remove(itemtags, function(tag) {\n return tag[0] === tagName;\n });\n item.tags = itemtags;\n return item;\n });\n return transform.then(onDeleteTagSuccess, onDeleteTagError);\n };\n\n TagLineController.prototype.onAddTag = function(tag, color) {\n var onAddTagError, onAddTagSuccess, transform;\n this.loadingAddTag = true;\n onAddTagSuccess = (function(_this) {\n return function(item) {\n _this.rootScope.$broadcast(\"object:updated\");\n _this.rootScope.$broadcast(\"tags:updated\");\n _this.addTag = false;\n _this.loadingAddTag = false;\n return item;\n };\n })(this);\n onAddTagError = (function(_this) {\n return function() {\n _this.loadingAddTag = false;\n return _this.confirm.notify(\"error\");\n };\n })(this);\n transform = this.modelTransform.save((function(_this) {\n return function(item) {\n var itemtags, value;\n value = trim(tag.toLowerCase());\n itemtags = _.clone(item.tags);\n itemtags.push([tag, color]);\n item.tags = itemtags;\n return item;\n };\n })(this));\n return transform.then(onAddTagSuccess, onAddTagError);\n };\n\n return TagLineController;\n\n })();\n\n module.controller(\"TagLineCtrl\", TagLineController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TagLineDirective, module;\n\n module = angular.module('taigaCommon');\n\n TagLineDirective = function() {\n return {\n scope: {\n item: \"=\",\n permissions: \"@\",\n project: \"=\"\n },\n templateUrl: \"components/tags/tag-line-detail/tag-line-detail.html\",\n controller: \"TagLineCtrl\",\n controllerAs: \"vm\",\n bindToController: true\n };\n };\n\n module.directive(\"tgTagLine\", TagLineDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TagLineService, module,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n module = angular.module('taigaCommon');\n\n TagLineService = (function(superClass) {\n extend(TagLineService, superClass);\n\n TagLineService.$inject = [];\n\n function TagLineService() {}\n\n TagLineService.prototype.checkPermissions = function(myPermissions, projectPermissions) {\n return _.includes(myPermissions, projectPermissions);\n };\n\n TagLineService.prototype.createColorsArray = function(projectTagColors) {\n return _.map(projectTagColors, function(index, value) {\n return [value, index];\n });\n };\n\n return TagLineService;\n\n })(taiga.Service);\n\n module.service(\"tgTagLineService\", TagLineService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TagDirective, module;\n\n module = angular.module('taigaCommon');\n\n TagDirective = function() {\n return {\n templateUrl: \"components/tags/tag/tag.html\",\n scope: {\n tag: \"<\",\n loadingRemoveTag: \"<\",\n onDeleteTag: \"&\",\n hasPermissions: \"<\"\n }\n };\n };\n\n module.directive(\"tgTag\", TagDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TaskboardZoomDirective;\n\n TaskboardZoomDirective = function(storage) {\n var link;\n link = function(scope, el, attrs, ctrl) {\n var getZoomView, zooms;\n scope.zoomIndex = storage.get(\"taskboard_zoom\", 2);\n scope.levels = 4;\n zooms = [[\"assigned_to\", \"ref\"], [\"subject\"], [\"tags\", \"extra_info\", \"unfold\", \"card-data\", \"assigned_to_extended\"], [\"related_tasks\", \"attachments\"]];\n getZoomView = function(zoomIndex) {\n if (zoomIndex == null) {\n zoomIndex = 0;\n }\n zoomIndex = Number(zoomIndex);\n if (Number(storage.get(\"taskboard_zoom\")) !== zoomIndex) {\n storage.set(\"taskboard_zoom\", zoomIndex);\n }\n return _.reduce(zooms, function(result, value, key) {\n if (key <= zoomIndex) {\n result = result.concat(value);\n }\n return result;\n });\n };\n return scope.$watch('zoomIndex', function(zoomLevel) {\n var zoom;\n zoom = getZoomView(zoomLevel);\n return scope.onZoomChange({\n zoomLevel: zoomLevel,\n zoom: zoom\n });\n });\n };\n return {\n scope: {\n onZoomChange: \"&\"\n },\n template: \"\",\n link: link\n };\n };\n\n angular.module('taigaComponents').directive(\"tgTaskboardZoom\", [\"$tgStorage\", TaskboardZoomDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TasksSortableDirective;\n\n TasksSortableDirective = function($parse, projectService) {\n var link;\n link = function(scope, el, attrs) {\n var callback, drake, scroll;\n if (!projectService.hasPermission(\"modify_task\")) {\n return;\n }\n callback = $parse(attrs.tgTasksSortable);\n drake = dragula([el[0]], {\n copySortSource: false,\n copy: false,\n mirrorContainer: el[0],\n moves: function(item) {\n return $(item).is('div.single-related-task.js-related-task');\n }\n });\n drake.on('dragend', function(item) {\n var itemEl, newIndex, task;\n itemEl = $(item);\n task = itemEl.scope().task;\n newIndex = itemEl.index();\n return scope.$apply(function() {\n return callback(scope, {\n task: task,\n newIndex: newIndex\n });\n });\n });\n scroll = autoScroll(window, {\n margin: 20,\n pixels: 30,\n scrollWhenOutside: true,\n autoScroll: function() {\n return this.down && drake.dragging;\n }\n });\n return scope.$on(\"$destroy\", function() {\n el.off();\n return drake.destroy();\n });\n };\n return {\n link: link\n };\n };\n\n TasksSortableDirective.$inject = [\"$parse\", \"tgProjectService\"];\n\n angular.module(\"taigaComponents\").directive(\"tgTasksSortable\", TasksSortableDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TermsOfServiceAndPrivacyPolicyNoticeDirective;\n\n TermsOfServiceAndPrivacyPolicyNoticeDirective = function($config) {\n var link;\n link = function(scope, el, attrs) {\n scope.privacyPolicyUrl = $config.get(\"privacyPolicyUrl\");\n scope.termsOfServiceUrl = $config.get(\"termsOfServiceUrl\");\n scope.target = false;\n if (!scope.privacyPolicyUrl || !scope.termsOfServiceUrl) {\n scope.target = true;\n }\n return el.on(\"change\", \"input[name='accepted_terms']\", function(event) {\n var target;\n target = angular.element(event.currentTarget);\n scope.target = target.is(\":checked\");\n return scope.$apply();\n });\n };\n return {\n restrict: \"AE\",\n link: link,\n scope: {\n target: \"=\"\n },\n templateUrl: \"components/terms-of-service-and-privacy-policy-notice/terms-of-service-and-privacy-policy-notice.html\"\n };\n };\n\n angular.module(\"taigaComponents\").directive(\"tgTermsOfServiceAndPrivacyPolicyNotice\", [\"$tgConfig\", TermsOfServiceAndPrivacyPolicyNoticeDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AssignedToDirective;\n\n AssignedToDirective = function($rootscope, $confirm, $repo, $loading, $modelTransform, $template, $translate, $compile, $currentUserService, avatarService, $lightboxFactory) {\n var link;\n link = function($scope, $el, $attrs, $model) {\n var currentUserId, isEditable, isIocaine, isSelfAssigned, ref, render, save;\n currentUserId = (ref = $currentUserService.getUser()) != null ? ref.get('id') : void 0;\n isEditable = function() {\n var ref1, ref2;\n return ((ref1 = $scope.project) != null ? (ref2 = ref1.my_permissions) != null ? ref2.indexOf($attrs.requiredPerm) : void 0 : void 0) !== -1;\n };\n isIocaine = function(item) {\n return item != null ? item.is_iocaine : void 0;\n };\n isSelfAssigned = function() {\n return $scope.assignedUser && $scope.assignedUser.id === currentUserId;\n };\n save = function(userId) {\n var transform;\n $scope.loading = true;\n transform = $modelTransform.save(function(item) {\n item.assigned_to = userId;\n return item;\n });\n transform.then(function(item) {\n $attrs.ngModel = item;\n return $rootscope.$broadcast(\"object:updated\");\n });\n transform.then(null, function() {\n return $confirm.notify(\"error\");\n });\n transform[\"finally\"](function() {\n return $scope.loading = false;\n });\n return transform;\n };\n render = function(item) {\n $scope.assignedUser = $scope.usersById[item != null ? item.assigned_to : void 0];\n $scope.isEditable = isEditable();\n $scope.isIocaine = isIocaine(item);\n return $scope.isSelfAssigned = isSelfAssigned();\n };\n $el.on(\"click\", \".remove-user\", function(event) {\n var title;\n if (!isEditable()) {\n return;\n }\n event.stopPropagation();\n title = $translate.instant(\"COMMON.ASSIGNED_TO.CONFIRM_UNASSIGNED\");\n return $confirm.ask(title).then(function(response) {\n response.finish();\n return save(null);\n });\n });\n $scope.openAssignedUsers = function() {\n var item, onClose;\n onClose = (function(_this) {\n return function(assignedUsers) {\n return save(assignedUsers.pop() || null);\n };\n })(this);\n item = _.clone($model.$modelValue, false);\n return $lightboxFactory.create('tg-lb-select-user', {\n \"class\": \"lightbox lightbox-select-user\"\n }, {\n \"currentUsers\": [item.assigned_to],\n \"activeUsers\": this.activeUsers,\n \"onClose\": onClose,\n \"single\": true,\n \"lbTitle\": $translate.instant(\"COMMON.ASSIGNED_USERS.ADD\")\n });\n };\n $scope.selfAssign = function() {\n return save(currentUserId);\n };\n $scope.$watch($attrs.ngModel, function(item, currentItem) {\n if (item == null) {\n return;\n }\n return render(item);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n templateUrl: \"components/ticket-assigned/assigned-to.html\",\n require: \"ngModel\"\n };\n };\n\n angular.module('taigaComponents').directive(\"tgAssignedTo\", [\"$rootScope\", \"$tgConfirm\", \"$tgRepo\", \"$tgLoading\", \"$tgQueueModelTransformation\", \"$tgTemplate\", \"$translate\", \"$compile\", \"tgCurrentUserService\", \"tgAvatarService\", \"tgLightboxFactory\", AssignedToDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AssignedUsersDirective,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n AssignedUsersDirective = function($rootscope, $confirm, $repo, $modelTransform, $template, $compile, $translate, $currentUserService, $lightboxFactory) {\n var link;\n link = function($scope, $el, $attrs, $model) {\n var currentUserId, deleteAssignedUser, isEditable, ref, render, save;\n currentUserId = (ref = $currentUserService.getUser()) != null ? ref.get('id') : void 0;\n $scope.visibleAssignedUsersCount = 4;\n $scope.displayHidden = false;\n $scope.toggleFold = function() {\n return $scope.displayHidden = !$scope.displayHidden;\n };\n isEditable = function() {\n var ref1, ref2;\n return ((ref1 = $scope.project) != null ? (ref2 = ref1.my_permissions) != null ? ref2.indexOf($attrs.requiredPerm) : void 0 : void 0) !== -1;\n };\n save = function(assignedUsersIds, assignedToUser) {\n var transform;\n $scope.loading = true;\n transform = $modelTransform.save(function(item) {\n item.assigned_users = assignedUsersIds;\n if (assignedToUser) {\n item.assigned_to = assignedToUser;\n } else if (!assignedUsersIds.length) {\n item.assigned_to = null;\n } else if (!_.includes(assignedUsersIds, item.assigned_to)) {\n item.assigned_to = assignedUsersIds[0];\n }\n return item;\n });\n transform.then(function() {\n var result;\n return result = $rootscope.$broadcast(\"object:updated\");\n });\n transform.then(null, function() {\n return $confirm.notify(\"error\");\n });\n return transform[\"finally\"](function() {\n return $scope.loading = false;\n });\n };\n $scope.openAssignedUsers = function() {\n var item, onClose;\n onClose = (function(_this) {\n return function(assignedUsers) {\n return save(assignedUsers);\n };\n })(this);\n item = _.clone($model.$modelValue, false);\n return $lightboxFactory.create('tg-lb-select-user', {\n \"class\": \"lightbox lightbox-select-user\"\n }, {\n \"currentUsers\": item.assigned_users,\n \"activeUsers\": $scope.activeUsers,\n \"onClose\": onClose,\n \"lbTitle\": $translate.instant(\"COMMON.ASSIGNED_USERS.ADD\")\n });\n };\n $el.on(\"click\", \".user-list-single\", function(event) {\n if (!isEditable()) {\n return;\n }\n event.stopPropagation();\n return $scope.openAssignedUsers();\n });\n $el.on(\"click\", \".remove-user\", function(event) {\n var assignedUserId, message, target, title;\n if (!isEditable()) {\n return;\n }\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n assignedUserId = target.data(\"user-id\");\n title = $translate.instant(\"COMMON.ASSIGNED_USERS.TITLE_LIGHTBOX_DELETE_ASSIGNED\");\n message = $scope.usersById[assignedUserId].full_name_display;\n return $confirm.askOnDelete(title, message).then(function(askResponse) {\n var assignedUserIds;\n askResponse.finish();\n assignedUserIds = _.clone($model.$modelValue.assigned_users, false);\n assignedUserIds = _.pull(assignedUserIds, assignedUserId);\n return deleteAssignedUser(assignedUserIds);\n });\n });\n $scope.selfAssign = function() {\n var assignedUsers;\n if (!isEditable()) {\n return;\n }\n assignedUsers = _.clone($model.$modelValue.assigned_users, false);\n assignedUsers.push(currentUserId);\n assignedUsers = _.uniq(assignedUsers);\n return save(assignedUsers, currentUserId);\n };\n deleteAssignedUser = function(assignedUserIds) {\n var transform;\n $scope.loading = true;\n transform = $modelTransform.save(function(item) {\n var ref1;\n item.assigned_users = assignedUserIds;\n if ((ref1 = item.assigned_to, indexOf.call(assignedUserIds, ref1) < 0) && assignedUserIds.length > 0) {\n item.assigned_to = assignedUserIds[0];\n }\n if (assignedUserIds.length === 0) {\n item.assigned_to = null;\n }\n return item;\n });\n transform.then(function() {\n var item;\n item = $modelTransform.getObj();\n $attrs.ngModel = item;\n return $rootscope.$broadcast(\"object:updated\");\n });\n transform.then(null, function() {\n item.revert();\n return $confirm.notify(\"error\");\n });\n return transform[\"finally\"](function() {\n return $scope.loading = false;\n });\n };\n render = function(assignedUserIds) {\n var assignedUsers;\n assignedUsers = _.map(assignedUserIds, function(assignedUserId) {\n return $scope.usersById[assignedUserId];\n });\n $scope.assignedUsers = _.compact(assignedUsers);\n $scope.selfAssigned = _.includes(assignedUserIds, currentUserId);\n return $scope.isEditable = isEditable();\n };\n $scope.$on(\"assigned-user:deleted\", function(ctx, assignedUserId) {\n var assignedUsersIds;\n assignedUsersIds = _.clone($model.$modelValue.assigned_users, false);\n assignedUsersIds = _.pull(assignedUsersIds, assignedUserId);\n assignedUsersIds = _.uniq(assignedUsersIds);\n return deleteAssignedUser(assignedUsersIds);\n });\n $scope.$on(\"assigned-user:added\", function(ctx, assignedUserId) {\n var assignedUsers;\n assignedUsers = _.clone($model.$modelValue.assigned_users, false);\n assignedUsers.push(assignedUserId);\n assignedUsers = _.uniq(assignedUsers);\n return save(assignedUsers, assignedUserId);\n });\n $scope.$watch($attrs.ngModel, function(item, currentItem) {\n if (item == null) {\n return;\n }\n return render(item.assigned_users);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n scope: true,\n templateUrl: \"components/ticket-assigned/assigned-users.html\",\n link: link,\n require: \"ngModel\"\n };\n };\n\n angular.module('taigaComponents').directive(\"tgAssignedUsers\", [\"$rootScope\", \"$tgConfirm\", \"$tgRepo\", \"$tgQueueModelTransformation\", \"$tgTemplate\", \"$compile\", \"$translate\", \"tgCurrentUserService\", \"tgLightboxFactory\", AssignedUsersDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TicketWatchersController;\n\n TicketWatchersController = (function() {\n TicketWatchersController.$inject = [\"tgCurrentUserService\", \"$rootScope\", \"tgLightboxFactory\", \"$translate\", \"$tgQueueModelTransformation\"];\n\n function TicketWatchersController(currentUserService, rootScope, lightboxFactory, translate, modelTransform) {\n this.currentUserService = currentUserService;\n this.rootScope = rootScope;\n this.lightboxFactory = lightboxFactory;\n this.translate = translate;\n this.modelTransform = modelTransform;\n this.user = this.currentUserService.getUser();\n this.loading = false;\n }\n\n TicketWatchersController.prototype.openWatchers = function() {\n var onClose;\n onClose = (function(_this) {\n return function(watchersIds) {\n return _this.save(watchersIds);\n };\n })(this);\n return this.lightboxFactory.create('tg-lb-select-user', {\n \"class\": \"lightbox lightbox-select-user\"\n }, {\n \"currentUsers\": this.item.watchers,\n \"activeUsers\": this.activeUsers,\n \"onClose\": onClose,\n \"lbTitle\": this.translate.instant(\"COMMON.WATCHERS.ADD\")\n });\n };\n\n TicketWatchersController.prototype.getPerms = function() {\n var name, perms;\n if (!this.item) {\n return \"\";\n }\n name = this.item._name;\n perms = {\n userstories: 'modify_us',\n issues: 'modify_issue',\n tasks: 'modify_task',\n epics: 'modify_epic'\n };\n return perms[name];\n };\n\n TicketWatchersController.prototype.watch = function() {\n var promise;\n this.loading = true;\n promise = this._watch();\n promise[\"finally\"]((function(_this) {\n return function() {\n return _this.loading = false;\n };\n })(this));\n return promise;\n };\n\n TicketWatchersController.prototype.unwatch = function() {\n var promise;\n this.loading = true;\n promise = this._unwatch();\n promise[\"finally\"]((function(_this) {\n return function() {\n return _this.loading = false;\n };\n })(this));\n return promise;\n };\n\n TicketWatchersController.prototype.deleteWatcher = function(watcherId) {\n var watchersIds;\n watchersIds = _.filter(this.item.watchers, (function(_this) {\n return function(x) {\n return x !== watcherId;\n };\n })(this));\n return this.save(watchersIds);\n };\n\n TicketWatchersController.prototype.save = function(watchersIds) {\n var transform;\n this.loading = true;\n transform = this.modelTransform.save(function(item) {\n item.watchers = watchersIds;\n return item;\n });\n transform.then((function(_this) {\n return function() {\n return _this.rootScope.$broadcast(\"object:updated\");\n };\n })(this));\n return transform[\"finally\"]((function(_this) {\n return function() {\n return _this.loading = false;\n };\n })(this));\n };\n\n TicketWatchersController.prototype._watch = function() {\n return this.onWatch();\n };\n\n TicketWatchersController.prototype._unwatch = function() {\n return this.onUnwatch();\n };\n\n return TicketWatchersController;\n\n })();\n\n angular.module(\"taigaComponents\").controller(\"TicketWatchersController\", TicketWatchersController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var WatchersDirective;\n\n WatchersDirective = function($rootscope, $confirm, $repo, $modelTransform, $template, $compile, $translate, $currentUserService) {\n var link;\n link = function($scope, $el, $attrs) {\n var isEditable, render;\n $scope.visibleWatchersCount = 4;\n $scope.displayHidden = false;\n $scope.isAuthenticated = !!$currentUserService.getUser();\n isEditable = function() {\n var ref, ref1;\n return ((ref = $scope.project) != null ? (ref1 = ref.my_permissions) != null ? ref1.indexOf($attrs.requiredPerm) : void 0 : void 0) !== -1;\n };\n render = function() {\n var ref, watchers, watchersIds;\n watchersIds = _.clone((ref = $scope.vm.item) != null ? ref.watchers : void 0, false);\n watchers = _.map(watchersIds, function(watcherId) {\n return $scope.usersById[watcherId];\n });\n watchers = _.filter(watchers, function(it) {\n return !!it;\n });\n $scope.vm.watchers = _.compact(watchers);\n return $scope.isEditable = isEditable();\n };\n $scope.toggleFold = function() {\n return $scope.displayHidden = !$scope.displayHidden;\n };\n $el.on(\"click\", \".user-list-single\", function(event) {\n if (!isEditable()) {\n return;\n }\n event.stopPropagation();\n return $scope.vm.openWatchers();\n });\n $el.on(\"click\", \".remove-user\", function(event) {\n var message, target, title, watcherId;\n if (!isEditable()) {\n return;\n }\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n watcherId = target.data(\"watcher-id\");\n title = $translate.instant(\"COMMON.WATCHERS.TITLE_LIGHTBOX_DELETE_WARTCHER\");\n message = $scope.usersById[watcherId].full_name_display;\n return $confirm.askOnDelete(title, message).then((function(_this) {\n return function(askResponse) {\n askResponse.finish();\n return $scope.vm.deleteWatcher(watcherId);\n };\n })(this));\n });\n $scope.$on(\"watcher:added\", function(ctx, watcherId) {\n var watchersIds;\n watchersIds = _.clone($scope.item.watchers, false);\n watchersIds.push(watcherId);\n watchersIds = _.uniq(watchers);\n return $scope.vm.save(watchersIds);\n });\n $scope.$on(\"watchers:selected\", function(ctx, watchersIds) {\n return $scope.vm.save(watchersIds);\n });\n $scope.$watch(\"vm.item\", function(item) {\n if (!item) {\n return;\n }\n return render();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n scope: true,\n controller: \"TicketWatchersController\",\n bindToController: {\n item: \"=\",\n onWatch: \"=\",\n onUnwatch: \"=\",\n activeUsers: \"=\"\n },\n controllerAs: \"vm\",\n templateUrl: \"components/ticket-watchers/ticket-watchers.html\",\n link: link\n };\n };\n\n WatchersDirective.$inject = [\"$rootScope\", \"$tgConfirm\", \"$tgRepo\", \"$tgQueueModelTransformation\", \"$tgTemplate\", \"$compile\", \"$translate\", \"tgCurrentUserService\"];\n\n angular.module(\"taigaComponents\").directive(\"tgWatchers\", WatchersDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var module, timeout, tipsDirective;\n\n timeout = this.taiga.timeout;\n\n module = angular.module(\"taigaComponents\");\n\n tipsDirective = function(tgLoader, $translate) {\n var link, randomInt, tips;\n tips = [\n {\n contentType: \"icon\",\n icon: \"icon-project\",\n message: \"PROJECTS_ORDER\"\n }, {\n contentType: \"icon\",\n icon: \"icon-upvote\",\n message: \"VOTING\"\n }, {\n contentType: \"icon\",\n icon: \"icon-attach\",\n message: \"ISSUES_TO_SPRINT\"\n }, {\n contentType: \"icon\",\n icon: \"icon-clock\",\n message: \"DUE_DATE\"\n }, {\n contentType: \"icon\",\n icon: \"icon-iocaine\",\n message: \"IOCAIN\"\n }, {\n contentType: \"icon\",\n icon: \"icon-blocked-project\",\n message: \"BLOCKED\"\n }, {\n contentType: \"icon\",\n icon: \"icon-promote\",\n message: \"PROMOTE\"\n }, {\n contentType: \"icon\",\n icon: \"icon-bulk\",\n message: \"BULK\"\n }, {\n contentType: \"range\",\n message: \"ZOOM\"\n }, {\n contentType: \"icon\",\n icon: \"icon-settings\",\n message: \"CUSTOM_FIELDS\"\n }, {\n contentType: \"arrows\",\n message: \"SLIDE_ARROWS\"\n }\n ];\n randomInt = function(size) {\n return Math.floor(Math.random() * size) + 1;\n };\n link = function(scope, el, attrs) {\n var loadTip, waitingTimeout;\n scope.tipLoaded = false;\n waitingTimeout = null;\n tgLoader.onStart(function() {\n return waitingTimeout = timeout(1000, function() {\n return loadTip();\n });\n });\n tgLoader.onEnd(function() {\n clearTimeout(waitingTimeout);\n return scope.tipLoaded = false;\n });\n return loadTip = function() {\n var tip;\n scope.tipLoaded = true;\n tip = tips[randomInt(tips.length - 1)];\n return scope.tip = {\n contentType: tip.contentType,\n message: \"TIPS.TIP_\" + tip.message,\n icon: tip.icon,\n color: \"tip-color-\" + (randomInt(5))\n };\n };\n };\n return {\n link: link,\n scope: true,\n templateUrl: \"components/tips/tip.html\"\n };\n };\n\n module.directive('tgTips', ['tgLoader', '$translate', tipsDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TribeButtonDirective;\n\n TribeButtonDirective = function(configService, locationService) {\n var link;\n link = function(scope, el, attrs) {\n scope.vm = {};\n scope.vm.tribeHost = configService.config.tribeHost;\n scope.vm.url = (locationService.protocol()) + \"://\" + (locationService.host());\n if (locationService.protocol() === \"http\" && locationService.port() !== 80) {\n return scope.vm.url = scope.vm.url + \":\" + (locationService.port());\n } else if (locationService.protocol() === \"https\" && locationService.port() !== 443) {\n return scope.vm.url = scope.vm.url + \":\" + (locationService.port());\n }\n };\n return {\n scope: {\n usId: \"=\",\n projectSlug: \"=\"\n },\n controllerAs: \"vm\",\n templateUrl: \"components/tribe-button/tribe-button.html\",\n link: link\n };\n };\n\n TribeButtonDirective.$inject = [\"$tgConfig\", \"$tgLocation\"];\n\n angular.module(\"taigaComponents\").directive(\"tgTribeButton\", TribeButtonDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TribeLinkedDirective;\n\n TribeLinkedDirective = function(configService) {\n var directive, link;\n link = function(scope, el, attrs) {\n scope.vm = {};\n scope.vm.tribeHost = configService.config.tribeHost;\n scope.vm.show = function() {\n return scope.vm.open = true;\n };\n return scope.vm.hide = function(event) {\n return scope.vm.open = false;\n };\n };\n directive = {\n templateUrl: \"components/tribe-button/tribe-linked.html\",\n scope: {\n gigTitle: \"=\",\n gigId: \"=\"\n },\n link: link\n };\n return directive;\n };\n\n TribeLinkedDirective.$inject = [\"$tgConfig\"];\n\n angular.module(\"taigaComponents\").directive(\"tgTribeLinked\", TribeLinkedDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var VoteButtonController;\n\n VoteButtonController = (function() {\n VoteButtonController.$inject = [\"tgCurrentUserService\"];\n\n function VoteButtonController(currentUserService) {\n this.currentUserService = currentUserService;\n this.user = this.currentUserService.getUser();\n this.loading = false;\n }\n\n VoteButtonController.prototype.toggleVote = function() {\n var promise;\n this.loading = true;\n if (!this.item.is_voter) {\n promise = this.onUpvote();\n } else {\n promise = this.onDownvote();\n }\n promise[\"finally\"]((function(_this) {\n return function() {\n return _this.loading = false;\n };\n })(this));\n return promise;\n };\n\n return VoteButtonController;\n\n })();\n\n angular.module(\"taigaComponents\").controller(\"VoteButton\", VoteButtonController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var VoteButtonDirective;\n\n VoteButtonDirective = function() {\n return {\n scope: {},\n controller: \"VoteButton\",\n bindToController: {\n item: \"=\",\n onUpvote: \"=\",\n onDownvote: \"=\"\n },\n controllerAs: \"vm\",\n templateUrl: \"components/vote-button/vote-button.html\"\n };\n };\n\n angular.module(\"taigaComponents\").directive(\"tgVoteButton\", VoteButtonDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProjectSwimlanesWipLimitController;\n\n ProjectSwimlanesWipLimitController = (function() {\n ProjectSwimlanesWipLimitController.$inject = [\"$scope\", \"$rootScope\", \"$tgResources\"];\n\n function ProjectSwimlanesWipLimitController(scope, rootscope, rs) {\n this.scope = scope;\n this.rootscope = rootscope;\n this.rs = rs;\n this.new_wip_limit = this.status.wip_limit;\n }\n\n ProjectSwimlanesWipLimitController.prototype.submitSwimlaneNewStatus = function() {\n this.scope.displayWipLimitSelector = false;\n if (!!this.status.swimlane_userstory_status_id) {\n return this.rs.swimlanes.wipLimitUpdate(this.status.swimlane_userstory_status_id, this.new_wip_limit).then((function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"swimlane:load\");\n };\n })(this));\n } else {\n return this.rs.userstories.editStatus(this.status.id, this.new_wip_limit).then((function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"project:load\");\n };\n })(this));\n }\n };\n\n return ProjectSwimlanesWipLimitController;\n\n })();\n\n angular.module(\"taigaComponents\").controller(\"ProjectSwimlanesWipLimit\", ProjectSwimlanesWipLimitController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var WipLimitSelector, cancelTimeout, taiga, timeout;\n\n taiga = this.taiga;\n\n timeout = this.taiga.timeout;\n\n cancelTimeout = this.taiga.cancelTimeout;\n\n WipLimitSelector = function($timeout) {\n var link;\n link = function(scope, el, attrs) {\n scope.displayWipLimitSelector = false;\n return scope.toggleWipSelectorVisibility = function() {\n return scope.displayWipLimitSelector = !scope.displayWipLimitSelector;\n };\n };\n return {\n link: link,\n scope: {},\n templateUrl: \"components/wip-limit-selector/wip-limit-selector.html\",\n controller: \"ProjectSwimlanesWipLimit\",\n bindToController: {\n status: '='\n },\n controllerAs: \"vm\"\n };\n };\n\n angular.module('taigaComponents').directive(\"tgWipLimitSelector\", [WipLimitSelector]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CommentEditWysiwyg;\n\n CommentEditWysiwyg = function(attachmentsFullService) {\n var link;\n link = function($scope, $el, $attrs) {\n return $scope.uploadFiles = function(file, cb) {\n var object, projectId;\n projectId = parseInt($scope.vm.projectId, 10);\n object = parseInt($scope.vm.object, 10);\n if (!projectId) {\n projectId = parseInt($scope.vm.project.id, 10);\n }\n return attachmentsFullService.addAttachment(projectId, object, attachmentsFullService.types[$scope.vm.name], file, true, true).then(function(result) {\n return cb({\n \"default\": result.getIn(['file', 'url'])\n });\n });\n };\n };\n return {\n scope: true,\n link: link,\n template: \"
\\n \\n \\n
\"\n };\n };\n\n angular.module(\"taigaComponents\").directive(\"tgCommentEditWysiwyg\", [\"tgAttachmentsFullService\", CommentEditWysiwyg]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CommentWysiwyg;\n\n CommentWysiwyg = function($modelTransform, $rootscope, attachmentsFullService) {\n var link;\n link = function($scope, $el, $attrs) {\n var types;\n $scope.editableDescription = false;\n $scope.saveComment = function(description, cb) {\n var transform;\n $scope.content = '';\n $scope.vm.type.comment = description;\n transform = $modelTransform.save(function(item) {});\n transform.then(function() {\n if ($scope.vm.onAddComment) {\n $scope.vm.onAddComment();\n }\n return $rootscope.$broadcast(\"object:updated\");\n });\n return transform[\"finally\"](cb);\n };\n types = {\n epics: \"epic\",\n userstories: \"us\",\n userstory: \"us\",\n issues: \"issue\",\n tasks: \"task\",\n epic: \"epic\",\n us: \"us\",\n issue: \"issue\",\n task: \"task\"\n };\n $scope.onChange = function(markdown) {\n return $scope.vm.type.comment = markdown;\n };\n $scope.uploadFiles = function(file, cb) {\n return attachmentsFullService.addAttachment($scope.vm.project.id, $scope.vm.type.id, types[$scope.vm.type._name], file, true, true).then(function(result) {\n return cb({\n \"default\": result.getIn(['file', 'url'])\n });\n });\n };\n $scope.content = '';\n return $scope.$watch(\"vm.type\", function(value) {\n if (!value) {\n return;\n }\n return $scope.storageKey = \"comment-\" + value.project + \"-\" + value.id + \"-\" + value._name;\n });\n };\n return {\n scope: true,\n link: link,\n template: \"
\\n \\n \\n
\"\n };\n };\n\n angular.module(\"taigaComponents\").directive(\"tgCommentWysiwyg\", [\"$tgQueueModelTransformation\", \"$rootScope\", \"tgAttachmentsFullService\", CommentWysiwyg]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CustomFieldEditWysiwyg;\n\n CustomFieldEditWysiwyg = function(attachmentsFullService) {\n var link;\n link = function($scope, $el, $attrs) {\n var types;\n types = {\n epics: \"epic\",\n userstories: \"us\",\n userstory: \"us\",\n issues: \"issue\",\n tasks: \"task\",\n epic: \"epic\",\n us: \"us\",\n issue: \"issue\",\n task: \"task\"\n };\n return $scope.uploadFiles = function(file, cb) {\n return attachmentsFullService.addAttachment($scope.project.id, $scope.ctrl.objectId.toString(), types[$scope.ctrl.type], file).then(function(result) {\n return cb({\n \"default\": result.getIn(['file', 'url'])\n });\n });\n };\n };\n return {\n scope: true,\n link: link,\n template: \"\\n\"\n };\n };\n\n angular.module(\"taigaComponents\").directive(\"tgCustomFieldEditWysiwyg\", [\"tgAttachmentsFullService\", CustomFieldEditWysiwyg]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ItemWysiwyg;\n\n ItemWysiwyg = function($modelTransform, $rootscope, $confirm, attachmentsFullService, $translate) {\n var link;\n link = function($scope, $el, $attrs) {\n var types;\n $scope.editableDescription = false;\n $scope.saveDescription = function(description, cb) {\n var transform;\n transform = $modelTransform.save(function(item) {\n item.description = description;\n return item;\n });\n transform.then(function() {\n $confirm.notify(\"success\");\n return $rootscope.$broadcast(\"object:updated\");\n });\n transform.then(null, function() {\n return $confirm.notify(\"error\");\n });\n return transform[\"finally\"](cb);\n };\n types = {\n epics: \"epic\",\n userstories: \"us\",\n userstory: \"us\",\n issues: \"issue\",\n tasks: \"task\",\n epic: \"epic\",\n us: \"us\",\n issue: \"issue\",\n task: \"task\"\n };\n $scope.uploadFiles = function(file, cb) {\n return attachmentsFullService.addAttachment($scope.project.id, $scope.item.id, types[$attrs.type], file).then(function(result) {\n return cb({\n \"default\": result.getIn(['file', 'url'])\n });\n });\n };\n $scope.$watch($attrs.model, function(value) {\n if (!value) {\n return;\n }\n $scope.item = value;\n $scope.version = value.version;\n return $scope.storageKey = $scope.project.id + \"-\" + value.id + \"-\" + $attrs.type;\n });\n return $scope.$watch('project', function(project) {\n if (!project) {\n return;\n }\n return $scope.editableDescription = project.my_permissions.indexOf($attrs.requiredPerm) !== -1;\n });\n };\n return {\n scope: true,\n link: link,\n template: \"
\\n \\n \\n
\\n\\n \\n {{'COMMON.DESCRIPTION.NO_DESCRIPTION' | translate}}\\n \\n\"\n };\n };\n\n angular.module(\"taigaComponents\").directive(\"tgItemWysiwyg\", [\"$tgQueueModelTransformation\", \"$rootScope\", \"$tgConfirm\", \"tgAttachmentsFullService\", \"$translate\", ItemWysiwyg]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var Wysiwyg, taiga;\n\n taiga = this.taiga;\n\n Wysiwyg = function($translate, $confirm, $storage, wysiwygService, animationFrame, tgLoader, analytics, $location, $attachmentsFullService) {\n var link;\n link = function($scope, $el, $attrs) {\n var change, clean, create, discardLocalStorage, editorLinks, getCurrentContent, isDraft, isEditOnly, isOutdated, linksEvents, localSave, notPersist, pageAttachments, saveEnd, setHtmlEditor, textEditor, throttleChange, unwatchContent, updateMarkdownWithCurrentHtml;\n isEditOnly = !!$attrs.$attr.editonly;\n notPersist = !!$attrs.$attr.notPersist;\n if ($scope.editonly !== void 0) {\n isEditOnly = $scope.editonly;\n }\n $scope.required = !!$attrs.$attr.required;\n $scope.editMode = isEditOnly || false;\n $scope.mode = localStorage.getItem('editor-mode') || 'html';\n if ($scope.mode !== 'html' && $scope.mode !== 'markdown') {\n $scope.mode = 'html';\n }\n $scope.markdown = '';\n $scope.html = '';\n textEditor = null;\n pageAttachments = $attachmentsFullService.attachments.toJS();\n editorLinks = [];\n linksEvents = function() {\n $el.on('mousedown', '.js-wysiwyg-html', (function(_this) {\n return function(e) {\n if (e.target.tagName !== 'A' && e.target.parentElement.tagName !== 'A') {\n return $scope.$applyAsync(function() {\n return $scope.setEditMode(true);\n });\n }\n };\n })(this));\n editorLinks = textEditor.querySelectorAll('a[target=\"_blank\"]:not(.link-event)');\n if (editorLinks.length) {\n return editorLinks.forEach((function(_this) {\n return function(link) {\n link.classList.add('link-event');\n link.addEventListener('mousedown', function(e) {\n if (!$scope.editMode) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n return link.addEventListener('click', function(e) {\n if (!$scope.editMode) {\n return window.open(e.currentTarget.getAttribute('href'), '_blank');\n }\n });\n };\n })(this));\n }\n };\n unwatchContent = $scope.$watch('content', function(content) {\n var unwatchLoader;\n if (!_.isUndefined(content)) {\n $scope.outdated = isOutdated();\n if (($scope.markdown.length || content.length) && $scope.markdown === content) {\n return;\n }\n content = getCurrentContent();\n $scope.markdown = content;\n if (tgLoader.open()) {\n unwatchLoader = tgLoader.onEnd(function() {\n return $scope.$evalAsync(function() {\n create(content);\n return unwatchLoader();\n });\n });\n } else {\n create(content);\n }\n return unwatchContent();\n }\n });\n create = (function(_this) {\n return function(text) {\n if (textEditor) {\n return;\n }\n textEditor = document.createElement('tg-text-editor');\n textEditor.projectId = $scope.project.id;\n textEditor.projectSlug = $scope.project.slug;\n textEditor.placeholder = $scope.placeholder;\n setHtmlEditor(text);\n textEditor.mode = $scope.mode;\n textEditor.lan = $translate.preferredLanguage();\n textEditor.uploadFunction = $scope.onUploadFile;\n textEditor.members = $scope.project.members.map(function(member) {\n return Object.assign(member, {\n fullNameDisplay: member.full_name_display\n });\n });\n $scope.$applyAsync(function() {\n return linksEvents();\n });\n if (isDraft()) {\n $scope.setEditMode(true);\n }\n textEditor.addEventListener('modeChanged', function(event) {\n return $scope.$evalAsync(function() {\n $scope.mode = event.detail;\n $scope.setEditMode(true);\n return localStorage.setItem('editor-mode', $scope.mode);\n });\n });\n textEditor.addEventListener('focusChanged', function(event) {\n if (event.detail) {\n return $scope.$evalAsync(function() {\n return $scope.setEditMode(true);\n });\n }\n });\n textEditor.addEventListener('changed', function(event) {\n if ($scope.mode === 'html') {\n $scope.html = event.detail;\n } else {\n $scope.markdown = event.detail;\n }\n return throttleChange();\n });\n return $el.find('.editor-wrapper')[0].appendChild(textEditor);\n };\n })(this);\n setHtmlEditor = function(markdown) {\n return wysiwygService.refreshAttachmentURLFromMarkdown(markdown).then((function(_this) {\n return function(markdown) {\n return textEditor.markdown = markdown;\n };\n })(this));\n };\n $scope.setEditMode = function(editMode) {\n $scope.editMode = editMode;\n if (editMode) {\n return textEditor.mode = $scope.mode;\n } else {\n return textEditor.mode = 'html';\n }\n };\n $scope.save = function(e) {\n if (e) {\n e.preventDefault();\n }\n setHtmlEditor($scope.markdown);\n if ($scope.required && !$scope.markdown.length) {\n return;\n }\n $scope.saving = true;\n $scope.outdated = false;\n $scope.onSave({\n text: $scope.markdown,\n cb: saveEnd\n });\n linksEvents();\n };\n $scope.cancel = function(e) {\n if (e) {\n e.preventDefault();\n }\n if (!isEditOnly) {\n $scope.setEditMode(false);\n }\n if (notPersist) {\n clean();\n } else {\n $scope.markdown = $scope.content;\n setHtmlEditor($scope.content || '');\n }\n discardLocalStorage();\n $scope.outdated = false;\n $scope.onCancel();\n linksEvents();\n };\n clean = function() {\n $scope.markdown = '';\n return setHtmlEditor('');\n };\n saveEnd = function() {\n $scope.saving = false;\n if (!isEditOnly) {\n $scope.setEditMode(false);\n }\n if (notPersist) {\n clean();\n }\n discardLocalStorage();\n return analytics.trackEvent('develop', 'save wysiwyg', $scope.mode, 1);\n };\n isOutdated = function() {\n var store;\n store = $storage.get($scope.storageKey);\n if (store && store.version && store.version !== $scope.version) {\n return true;\n }\n return false;\n };\n isDraft = function() {\n var store;\n store = $storage.get($scope.storageKey);\n if (store) {\n return true;\n }\n return false;\n };\n getCurrentContent = function() {\n var store;\n store = $storage.get($scope.storageKey);\n if (store) {\n return store.text;\n }\n return $scope.content;\n };\n discardLocalStorage = function() {\n return $storage.remove($scope.storageKey);\n };\n $scope.cancelWithConfirmation = function() {\n var message, title;\n if ($scope.content === $scope.markdown) {\n $scope.cancel();\n if (document.activeElement.blur) {\n document.activeElement.blur();\n }\n document.body.click();\n return null;\n }\n title = $translate.instant(\"COMMON.CONFIRM_CLOSE_EDIT_MODE_TITLE\");\n message = $translate.instant(\"COMMON.CONFIRM_CLOSE_EDIT_MODE_MESSAGE\");\n return $confirm.ask(title, null, message).then(function(askResponse) {\n $scope.cancel();\n return askResponse.finish();\n });\n };\n updateMarkdownWithCurrentHtml = function() {\n return $scope.markdown = wysiwygService.getMarkdown($scope.html);\n };\n localSave = function(markdown) {\n var store;\n if ($scope.storageKey) {\n store = {};\n store.version = $scope.version || 0;\n store.text = markdown;\n return $storage.set($scope.storageKey, store);\n }\n };\n change = function() {\n if (!$scope.editMode) {\n return;\n }\n if ($scope.mode === 'html') {\n updateMarkdownWithCurrentHtml();\n }\n localSave($scope.markdown);\n return $scope.onChange({\n markdown: $scope.markdown\n });\n };\n return throttleChange = _.throttle(change, 200);\n };\n return {\n templateUrl: \"common/components/wysiwyg-toolbar.html\",\n scope: {\n htmlReadMode: '<',\n editonly: '<',\n project: '<',\n placeholder: '<',\n version: '<',\n storageKey: '<',\n content: '<',\n onCancel: '&',\n onSave: '&',\n onUploadFile: '<',\n onChange: '&'\n },\n link: link\n };\n };\n\n angular.module(\"taigaComponents\").directive(\"tgWysiwyg\", [\"$translate\", \"$tgConfirm\", \"$tgStorage\", \"tgWysiwygService\", \"animationFrame\", \"tgLoader\", \"$tgAnalytics\", \"$location\", \"tgAttachmentsFullService\", Wysiwyg]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var WysiwygService;\n\n WysiwygService = (function() {\n WysiwygService.$inject = [\"tgProjectService\", \"tgAttachmentsFullService\", \"tgAttachmentsService\", \"$sce\"];\n\n function WysiwygService(projectService, attachmentsFullService, attachmentsService, sce) {\n this.projectService = projectService;\n this.attachmentsFullService = attachmentsFullService;\n this.attachmentsService = attachmentsService;\n this.sce = sce;\n this.projectDataConversion = {};\n this.cache = {};\n }\n\n WysiwygService.prototype.getMarkdown = function(html) {\n var projectId;\n projectId = this.projectService.project.get('id');\n if (!this.projectDataConversion[projectId]) {\n this.dataConversion = window.angularDataConversion();\n this.dataConversion.setUp(this.projectService.project.get('slug'));\n this.projectDataConversion[projectId] = this.dataConversion;\n }\n return this.projectDataConversion[projectId].toMarkdown(html);\n };\n\n WysiwygService.prototype.getHTML = function(text) {\n var projectId;\n if (!text || !text.length) {\n return \"\";\n }\n projectId = this.projectService.project.get('id');\n if (!this.projectDataConversion[projectId]) {\n this.dataConversion = window.angularDataConversion();\n this.dataConversion.setUp(this.projectService.project.get('slug'));\n this.projectDataConversion[projectId] = this.dataConversion;\n }\n return this.projectDataConversion[projectId].toHtml(text);\n };\n\n WysiwygService.prototype.getAttachmentData = function(tokens) {\n return this.attachmentsService.get(tokens[0], tokens[1]).then((function(_this) {\n return function(response) {\n return response.data.url;\n };\n })(this));\n };\n\n WysiwygService.prototype.getCachedAttachment = function(tokens) {\n var attachment, attachmentId, attachments, cache_key, cached_result;\n attachmentId = parseInt(tokens[1], 10);\n attachments = this.attachmentsFullService.attachments.toJS();\n attachment = attachments.find((function(_this) {\n return function(attachment) {\n return attachment.file.id === attachmentId;\n };\n })(this));\n if (attachment) {\n return Promise.resolve(attachment.file.url);\n } else {\n cache_key = tokens[0] + tokens[1];\n cached_result = this.cache[cache_key];\n if (cached_result) {\n return Promise.resolve(cached_result);\n } else {\n return this.getAttachmentData(tokens).then((function(_this) {\n return function(url) {\n _this.cache[cache_key] = url;\n return url;\n };\n })(this));\n }\n }\n };\n\n WysiwygService.prototype.relativePaths = function(html) {\n var el;\n el = document.createElement('html');\n el.innerHTML = this.sce.getTrustedHtml(html) || '';\n el.querySelectorAll('a').forEach((function(_this) {\n return function(link) {\n var currentHref, href, newHref;\n href = link.getAttribute('href');\n if (href && !href.startsWith('http') && !href.startsWith('/') && !link.classList.contains('mention')) {\n currentHref = window.location.href.slice(0, window.location.href.lastIndexOf('/') + 1);\n if (!currentHref.endsWith('/')) {\n currentHref = currentHref + '/';\n }\n newHref = currentHref + link.getAttribute('href');\n link.removeAttribute('rel');\n link.removeAttribute('target');\n link.setAttribute('href', newHref);\n }\n if (href.startsWith('project') && link.classList.contains('mention')) {\n link.removeAttribute('rel');\n return link.removeAttribute('target');\n }\n };\n })(this));\n return el.innerHTML;\n };\n\n WysiwygService.prototype.refreshAttachmentURLFromMarkdown = function(markdown) {\n var html;\n html = this.getHTML(markdown);\n return this.refreshAttachmentURL(html).then((function(_this) {\n return function(html) {\n return _this.getMarkdown(html);\n };\n })(this));\n };\n\n WysiwygService.prototype.refreshAttachmentURL = function(html) {\n var el, images, links, promises, regex;\n el = document.createElement('html');\n window._extraValidHtmlElments = {\n input: true\n };\n window._extraValidAttrs = {\n checked: true\n };\n el.innerHTML = this.sce.getTrustedHtml(html) || '';\n regex = /#_taiga-refresh=([a-zA-Z]*\\:\\d+)/;\n links = {\n \"elements\": el.querySelectorAll('a'),\n \"attr\": \"href\"\n };\n images = {\n \"elements\": el.querySelectorAll('img'),\n \"attr\": \"src\"\n };\n promises = [];\n _.map([links, images], (function(_this) {\n return function(tag) {\n return _.map(tag.elements, function(e) {\n var attrValue, match, promise, tokens;\n attrValue = e.getAttribute(tag.attr);\n if (attrValue && attrValue.indexOf && attrValue.indexOf('#_taiga-refresh=') !== -1) {\n match = attrValue.match(regex);\n if (match && match.length === 2) {\n tokens = match[1].split(\":\");\n promise = _this.getCachedAttachment(tokens).then(function(url) {\n return e.setAttribute(tag.attr, url);\n })[\"catch\"](function() {\n return console.warn('attachment ref not found', attrValue);\n });\n return promises.push(promise);\n }\n }\n });\n };\n })(this));\n return Promise.all(promises).then(function() {\n return el.innerHTML;\n });\n };\n\n return WysiwygService;\n\n })();\n\n angular.module(\"taigaComponents\").service(\"tgWysiwygService\", WysiwygService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DiscoverHomeOrderByController;\n\n DiscoverHomeOrderByController = (function() {\n DiscoverHomeOrderByController.$inject = ['$translate'];\n\n function DiscoverHomeOrderByController(translate) {\n this.translate = translate;\n this.is_open = false;\n this.texts = {\n week: this.translate.instant('DISCOVER.FILTERS.WEEK'),\n month: this.translate.instant('DISCOVER.FILTERS.MONTH'),\n year: this.translate.instant('DISCOVER.FILTERS.YEAR'),\n all: this.translate.instant('DISCOVER.FILTERS.ALL_TIME')\n };\n }\n\n DiscoverHomeOrderByController.prototype.currentText = function() {\n return this.texts[this.currentOrderBy];\n };\n\n DiscoverHomeOrderByController.prototype.open = function() {\n return this.is_open = true;\n };\n\n DiscoverHomeOrderByController.prototype.close = function() {\n return this.is_open = false;\n };\n\n DiscoverHomeOrderByController.prototype.orderBy = function(type) {\n this.currentOrderBy = type;\n this.is_open = false;\n return this.onChange({\n orderBy: this.currentOrderBy\n });\n };\n\n return DiscoverHomeOrderByController;\n\n })();\n\n angular.module(\"taigaDiscover\").controller(\"DiscoverHomeOrderBy\", DiscoverHomeOrderByController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DiscoverHomeOrderByDirective;\n\n DiscoverHomeOrderByDirective = function() {\n var link;\n link = function(scope, el, attrs) {};\n return {\n controller: \"DiscoverHomeOrderBy\",\n controllerAs: \"vm\",\n bindToController: true,\n templateUrl: \"discover/components/discover-home-order-by/discover-home-order-by.html\",\n scope: {\n currentOrderBy: \"=orderBy\",\n onChange: \"&\"\n },\n link: link\n };\n };\n\n DiscoverHomeOrderByDirective.$inject = [];\n\n angular.module(\"taigaDiscover\").directive(\"tgDiscoverHomeOrderBy\", DiscoverHomeOrderByDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DiscoverSearchBarController;\n\n DiscoverSearchBarController = (function() {\n DiscoverSearchBarController.$inject = ['tgDiscoverProjectsService'];\n\n function DiscoverSearchBarController(discoverProjectsService) {\n this.discoverProjectsService = discoverProjectsService;\n taiga.defineImmutableProperty(this, 'projects', (function(_this) {\n return function() {\n return _this.discoverProjectsService.projectsCount;\n };\n })(this));\n this.discoverProjectsService.fetchStats();\n }\n\n DiscoverSearchBarController.prototype.selectFilter = function(filter) {\n return this.onChange({\n filter: filter,\n q: this.q\n });\n };\n\n DiscoverSearchBarController.prototype.submitFilter = function() {\n return this.onChange({\n filter: this.filter,\n q: this.q\n });\n };\n\n return DiscoverSearchBarController;\n\n })();\n\n angular.module(\"taigaDiscover\").controller(\"DiscoverSearchBar\", DiscoverSearchBarController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DiscoverSearchBarDirective;\n\n DiscoverSearchBarDirective = function() {\n var link;\n link = function(scope, el, attrs, ctrl) {};\n return {\n controller: \"DiscoverSearchBar\",\n controllerAs: \"vm\",\n templateUrl: 'discover/components/discover-search-bar/discover-search-bar.html',\n bindToController: true,\n scope: {\n q: \"=\",\n filter: \"=\",\n onChange: \"&\"\n },\n compile: function(element, attrs) {\n if (!attrs.q) {\n return attrs.q = '';\n }\n },\n link: link\n };\n };\n\n DiscoverSearchBarDirective.$inject = [];\n\n angular.module('taigaDiscover').directive('tgDiscoverSearchBar', DiscoverSearchBarDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DiscoverSearchListHeaderController;\n\n DiscoverSearchListHeaderController = (function() {\n DiscoverSearchListHeaderController.$inject = [];\n\n function DiscoverSearchListHeaderController() {\n this.like_is_open = this.orderBy.indexOf('-total_fans') === 0;\n this.activity_is_open = this.orderBy.indexOf('-total_activity') === 0;\n }\n\n DiscoverSearchListHeaderController.prototype.openLike = function() {\n this.like_is_open = true;\n this.activity_is_open = false;\n return this.setOrderBy('-total_fans_last_week');\n };\n\n DiscoverSearchListHeaderController.prototype.openActivity = function() {\n this.activity_is_open = true;\n this.like_is_open = false;\n return this.setOrderBy('-total_activity_last_week');\n };\n\n DiscoverSearchListHeaderController.prototype.setOrderBy = function(type) {\n if (type == null) {\n type = '';\n }\n if (!type) {\n this.like_is_open = false;\n this.activity_is_open = false;\n }\n return this.onChange({\n orderBy: type\n });\n };\n\n return DiscoverSearchListHeaderController;\n\n })();\n\n angular.module(\"taigaDiscover\").controller(\"DiscoverSearchListHeader\", DiscoverSearchListHeaderController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DiscoverSearchListHeaderDirective;\n\n DiscoverSearchListHeaderDirective = function() {\n var link;\n link = function(scope, el, attrs) {};\n return {\n controller: \"DiscoverSearchListHeader\",\n controllerAs: \"vm\",\n bindToController: true,\n templateUrl: \"discover/components/discover-search-list-header/discover-search-list-header.html\",\n scope: {\n onChange: \"&\",\n orderBy: \"=\"\n },\n link: link\n };\n };\n\n DiscoverSearchListHeaderDirective.$inject = [];\n\n angular.module(\"taigaDiscover\").directive(\"tgDiscoverSearchListHeader\", DiscoverSearchListHeaderDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var FeaturedProjectsController;\n\n FeaturedProjectsController = (function() {\n FeaturedProjectsController.$inject = [\"tgDiscoverProjectsService\"];\n\n function FeaturedProjectsController(discoverProjectsService) {\n this.discoverProjectsService = discoverProjectsService;\n taiga.defineImmutableProperty(this, \"featured\", (function(_this) {\n return function() {\n return _this.discoverProjectsService.featured;\n };\n })(this));\n this.discoverProjectsService.fetchFeatured();\n }\n\n return FeaturedProjectsController;\n\n })();\n\n angular.module(\"taigaDiscover\").controller(\"FeaturedProjects\", FeaturedProjectsController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var FeaturedProjectsDirective;\n\n FeaturedProjectsDirective = function() {\n var link;\n link = function(scope, el, attrs) {};\n return {\n controller: \"FeaturedProjects\",\n controllerAs: \"vm\",\n templateUrl: \"discover/components/featured-projects/featured-projects.html\",\n scope: {},\n link: link\n };\n };\n\n FeaturedProjectsDirective.$inject = [];\n\n angular.module(\"taigaDiscover\").directive(\"tgFeaturedProjects\", FeaturedProjectsDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var HighlightedDirective;\n\n HighlightedDirective = function() {\n return {\n templateUrl: \"discover/components/highlighted/highlighted.html\",\n scope: {\n loading: \"=\",\n highlighted: \"=\",\n orderBy: \"=\"\n }\n };\n };\n\n HighlightedDirective.$inject = [];\n\n angular.module(\"taigaDiscover\").directive(\"tgHighlighted\", HighlightedDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var MostActiveController;\n\n MostActiveController = (function() {\n MostActiveController.$inject = [\"tgDiscoverProjectsService\"];\n\n function MostActiveController(discoverProjectsService) {\n this.discoverProjectsService = discoverProjectsService;\n taiga.defineImmutableProperty(this, \"highlighted\", (function(_this) {\n return function() {\n return _this.discoverProjectsService.mostActive;\n };\n })(this));\n this.currentOrderBy = 'year';\n this.order_by = this.getOrderBy();\n }\n\n MostActiveController.prototype.fetch = function() {\n this.loading = true;\n this.order_by = this.getOrderBy();\n return this.discoverProjectsService.fetchMostActive({\n order_by: this.order_by\n }).then((function(_this) {\n return function() {\n return _this.loading = false;\n };\n })(this));\n };\n\n MostActiveController.prototype.orderBy = function(type) {\n this.currentOrderBy = type;\n return this.fetch();\n };\n\n MostActiveController.prototype.getOrderBy = function(type) {\n if (this.currentOrderBy === 'all') {\n return '-total_activity';\n } else {\n return '-total_activity_last_' + this.currentOrderBy;\n }\n };\n\n return MostActiveController;\n\n })();\n\n angular.module(\"taigaDiscover\").controller(\"MostActive\", MostActiveController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var MostActiveDirective;\n\n MostActiveDirective = function() {\n var link;\n link = function(scope, el, attrs, ctrl) {\n return ctrl.fetch();\n };\n return {\n controller: \"MostActive\",\n controllerAs: \"vm\",\n templateUrl: \"discover/components/most-active/most-active.html\",\n scope: {},\n link: link\n };\n };\n\n MostActiveDirective.$inject = [];\n\n angular.module(\"taigaDiscover\").directive(\"tgMostActive\", MostActiveDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var MostLikedController;\n\n MostLikedController = (function() {\n MostLikedController.$inject = [\"tgDiscoverProjectsService\"];\n\n function MostLikedController(discoverProjectsService) {\n this.discoverProjectsService = discoverProjectsService;\n taiga.defineImmutableProperty(this, \"highlighted\", (function(_this) {\n return function() {\n return _this.discoverProjectsService.mostLiked;\n };\n })(this));\n this.currentOrderBy = 'year';\n this.order_by = this.getOrderBy();\n }\n\n MostLikedController.prototype.fetch = function() {\n this.loading = true;\n this.order_by = this.getOrderBy();\n return this.discoverProjectsService.fetchMostLiked({\n order_by: this.order_by\n }).then((function(_this) {\n return function() {\n return _this.loading = false;\n };\n })(this));\n };\n\n MostLikedController.prototype.orderBy = function(type) {\n this.currentOrderBy = type;\n return this.fetch();\n };\n\n MostLikedController.prototype.getOrderBy = function() {\n if (this.currentOrderBy === 'all') {\n return '-total_fans';\n } else {\n return '-total_fans_last_' + this.currentOrderBy;\n }\n };\n\n return MostLikedController;\n\n })();\n\n angular.module(\"taigaDiscover\").controller(\"MostLiked\", MostLikedController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var MostLikedDirective;\n\n MostLikedDirective = function() {\n var link;\n link = function(scope, el, attrs, ctrl) {\n return ctrl.fetch();\n };\n return {\n controller: \"MostLiked\",\n controllerAs: \"vm\",\n templateUrl: \"discover/components/most-liked/most-liked.html\",\n scope: {},\n link: link\n };\n };\n\n MostLikedDirective.$inject = [];\n\n angular.module(\"taigaDiscover\").directive(\"tgMostLiked\", MostLikedDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DiscoverHomeController;\n\n DiscoverHomeController = (function() {\n DiscoverHomeController.$inject = ['$tgLocation', '$tgNavUrls', 'tgAppMetaService', '$translate'];\n\n function DiscoverHomeController(location, navUrls, appMetaService, translate) {\n var description, title;\n this.location = location;\n this.navUrls = navUrls;\n this.appMetaService = appMetaService;\n this.translate = translate;\n title = this.translate.instant(\"DISCOVER.PAGE_TITLE\");\n description = this.translate.instant(\"DISCOVER.PAGE_DESCRIPTION\");\n this.appMetaService.setAll(title, description);\n }\n\n DiscoverHomeController.prototype.onSubmit = function(q) {\n var url;\n url = this.navUrls.resolve('discover-search');\n return this.location.search('text', q).path(url);\n };\n\n return DiscoverHomeController;\n\n })();\n\n angular.module(\"taigaDiscover\").controller(\"DiscoverHome\", DiscoverHomeController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DiscoverSearchController;\n\n DiscoverSearchController = (function() {\n DiscoverSearchController.$inject = ['$routeParams', 'tgDiscoverProjectsService', '$route', '$tgLocation', '$tgAnalytics', 'tgAppMetaService', '$translate'];\n\n function DiscoverSearchController(routeParams, discoverProjectsService, route, location, analytics, appMetaService, translate) {\n var description, title;\n this.routeParams = routeParams;\n this.discoverProjectsService = discoverProjectsService;\n this.route = route;\n this.location = location;\n this.analytics = analytics;\n this.appMetaService = appMetaService;\n this.translate = translate;\n this.page = 1;\n taiga.defineImmutableProperty(this, \"searchResult\", (function(_this) {\n return function() {\n return _this.discoverProjectsService.searchResult;\n };\n })(this));\n taiga.defineImmutableProperty(this, \"nextSearchPage\", (function(_this) {\n return function() {\n return _this.discoverProjectsService.nextSearchPage;\n };\n })(this));\n this.q = this.routeParams.text;\n this.filter = this.routeParams.filter || 'all';\n this.orderBy = this.routeParams['order_by'] || '';\n this.loadingGlobal = false;\n this.loadingList = false;\n this.loadingPagination = false;\n title = this.translate.instant(\"DISCOVER.SEARCH.PAGE_TITLE\");\n description = this.translate.instant(\"DISCOVER.SEARCH.PAGE_DESCRIPTION\");\n this.appMetaService.setAll(title, description);\n this.analytics.trackPage(this.location.url(), \"Discover Search\");\n }\n\n DiscoverSearchController.prototype.fetch = function() {\n this.page = 1;\n this.discoverProjectsService.resetSearchList();\n return this.search();\n };\n\n DiscoverSearchController.prototype.fetchByGlobalSearch = function() {\n if (this.loadingGlobal) {\n return;\n }\n this.loadingGlobal = true;\n return this.fetch().then((function(_this) {\n return function() {\n return _this.loadingGlobal = false;\n };\n })(this));\n };\n\n DiscoverSearchController.prototype.fetchByOrderBy = function() {\n if (this.loadingList) {\n return;\n }\n this.loadingList = true;\n return this.fetch().then((function(_this) {\n return function() {\n return _this.loadingList = false;\n };\n })(this));\n };\n\n DiscoverSearchController.prototype.showMore = function() {\n if (this.loadingPagination) {\n return;\n }\n this.loadingPagination = true;\n this.page++;\n return this.search().then((function(_this) {\n return function() {\n return _this.loadingPagination = false;\n };\n })(this));\n };\n\n DiscoverSearchController.prototype.search = function() {\n var filter, params;\n filter = this.getFilter();\n params = {\n page: this.page,\n q: this.q,\n order_by: this.orderBy\n };\n _.assign(params, filter);\n return this.discoverProjectsService.fetchSearch(params);\n };\n\n DiscoverSearchController.prototype.getFilter = function() {\n if (this.filter === 'people') {\n return {\n is_looking_for_people: true\n };\n } else if (this.filter === 'scrum') {\n return {\n is_backlog_activated: true\n };\n } else if (this.filter === 'kanban') {\n return {\n is_kanban_activated: true\n };\n }\n return {};\n };\n\n DiscoverSearchController.prototype.onChangeFilter = function(filter, q) {\n this.filter = filter;\n this.q = q;\n this.route.updateParams({\n filter: this.filter,\n text: this.q\n });\n this.analytics.trackPage(this.location.url(), \"Discover Search\");\n return this.fetchByGlobalSearch();\n };\n\n DiscoverSearchController.prototype.onChangeOrder = function(orderBy) {\n this.orderBy = orderBy;\n this.route.updateParams({\n order_by: orderBy\n });\n this.analytics.trackPage(this.location.url(), \"Discover Search\");\n return this.fetchByOrderBy();\n };\n\n return DiscoverSearchController;\n\n })();\n\n angular.module(\"taigaDiscover\").controller(\"DiscoverSearch\", DiscoverSearchController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DiscoverSearchDirective;\n\n DiscoverSearchDirective = function() {\n var link;\n link = function(scope, element, attrs, ctrl) {\n return ctrl.fetch();\n };\n return {\n controller: \"DiscoverSearch\",\n controllerAs: \"vm\",\n link: link\n };\n };\n\n DiscoverSearchDirective.$inject = [];\n\n angular.module(\"taigaDiscover\").directive(\"tgDiscoverSearch\", DiscoverSearchDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DiscoverProjectsService, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n DiscoverProjectsService = (function(superClass) {\n var _discoverParams;\n\n extend(DiscoverProjectsService, superClass);\n\n DiscoverProjectsService.$inject = [\"tgResources\", \"tgProjectsService\"];\n\n _discoverParams = {\n discover_mode: true\n };\n\n function DiscoverProjectsService(rs, projectsService) {\n this.rs = rs;\n this.projectsService = projectsService;\n this._mostLiked = Immutable.List();\n this._mostActive = Immutable.List();\n this._featured = Immutable.List();\n this._searchResult = Immutable.List();\n this._projectsCount = 0;\n this.decorate = this.projectsService._decorate.bind(this.projectsService);\n taiga.defineImmutableProperty(this, \"mostLiked\", (function(_this) {\n return function() {\n return _this._mostLiked;\n };\n })(this));\n taiga.defineImmutableProperty(this, \"mostActive\", (function(_this) {\n return function() {\n return _this._mostActive;\n };\n })(this));\n taiga.defineImmutableProperty(this, \"featured\", (function(_this) {\n return function() {\n return _this._featured;\n };\n })(this));\n taiga.defineImmutableProperty(this, \"searchResult\", (function(_this) {\n return function() {\n return _this._searchResult;\n };\n })(this));\n taiga.defineImmutableProperty(this, \"nextSearchPage\", (function(_this) {\n return function() {\n return _this._nextSearchPage;\n };\n })(this));\n taiga.defineImmutableProperty(this, \"projectsCount\", (function(_this) {\n return function() {\n return _this._projectsCount;\n };\n })(this));\n }\n\n DiscoverProjectsService.prototype.fetchMostLiked = function(params) {\n var _params;\n _params = _.extend({}, _discoverParams, params);\n return this.rs.projects.getProjects(_params, false).then((function(_this) {\n return function(result) {\n var data, projects;\n data = result.data.slice(0, 4);\n projects = Immutable.fromJS(data);\n projects = projects.map(_this.decorate);\n return _this._mostLiked = projects;\n };\n })(this));\n };\n\n DiscoverProjectsService.prototype.fetchMostActive = function(params) {\n var _params;\n _params = _.extend({}, _discoverParams, params);\n return this.rs.projects.getProjects(_params, false).then((function(_this) {\n return function(result) {\n var data, projects;\n data = result.data.slice(0, 4);\n projects = Immutable.fromJS(data);\n projects = projects.map(_this.decorate);\n return _this._mostActive = projects;\n };\n })(this));\n };\n\n DiscoverProjectsService.prototype.fetchFeatured = function() {\n var _params;\n _params = _.extend({}, _discoverParams);\n _params.is_featured = true;\n return this.rs.projects.getProjects(_params, false).then((function(_this) {\n return function(result) {\n var data, projects;\n data = result.data.slice(0, 4);\n projects = Immutable.fromJS(data);\n projects = projects.map(_this.decorate);\n return _this._featured = projects;\n };\n })(this));\n };\n\n DiscoverProjectsService.prototype.resetSearchList = function() {\n return this._searchResult = Immutable.List();\n };\n\n DiscoverProjectsService.prototype.fetchStats = function() {\n return this.rs.stats.discover().then((function(_this) {\n return function(discover) {\n return _this._projectsCount = discover.getIn(['projects', 'total']);\n };\n })(this));\n };\n\n DiscoverProjectsService.prototype.fetchSearch = function(params) {\n var _params;\n _params = _.extend({}, _discoverParams, params);\n return this.rs.projects.getProjects(_params).then((function(_this) {\n return function(result) {\n var projects;\n _this._nextSearchPage = !!result.headers('X-Pagination-Next');\n projects = Immutable.fromJS(result.data);\n projects = projects.map(_this.decorate);\n return _this._searchResult = _this._searchResult.concat(projects);\n };\n })(this));\n };\n\n return DiscoverProjectsService;\n\n })(taiga.Service);\n\n angular.module(\"taigaDiscover\").service(\"tgDiscoverProjectsService\", DiscoverProjectsService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CreateEpicController, getRandomDefaultColor, taiga, trim;\n\n taiga = this.taiga;\n\n trim = taiga.trim;\n\n getRandomDefaultColor = taiga.getRandomDefaultColor;\n\n CreateEpicController = (function() {\n CreateEpicController.$inject = [\"$tgConfirm\", \"tgProjectService\", \"tgEpicsService\", \"$tgAnalytics\"];\n\n function CreateEpicController(confirm, projectService, epicsService, analytics) {\n this.confirm = confirm;\n this.projectService = projectService;\n this.epicsService = epicsService;\n this.analytics = analytics;\n this.project = this.projectService.project.toJS();\n this.newEpic = {\n color: getRandomDefaultColor(),\n status: this.project.default_epic_status,\n tags: []\n };\n this.attachments = Immutable.List();\n this.loading = false;\n }\n\n CreateEpicController.prototype.createEpic = function() {\n if (!this.validateForm()) {\n return;\n }\n this.loading = true;\n return this.epicsService.createEpic(this.newEpic, this.attachments).then((function(_this) {\n return function(response) {\n _this.analytics.trackEvent(\"epic\", \"create\", \"create epic\", 1);\n _this.onCreateEpic();\n return _this.loading = false;\n };\n })(this))[\"catch\"]((function(_this) {\n return function(response) {\n _this.loading = false;\n _this.setFormErrors(response.data);\n if (response.data._error_message) {\n return _this.confirm.notify(\"error\", response.data._error_message);\n }\n };\n })(this));\n };\n\n CreateEpicController.prototype.selectColor = function(color) {\n return this.newEpic.color = color;\n };\n\n CreateEpicController.prototype.addTag = function(name, color) {\n name = trim(name.toLowerCase());\n if (!_.find(this.newEpic.tags, function(it) {\n return it[0] === name;\n })) {\n return this.newEpic.tags.push([name, color]);\n }\n };\n\n CreateEpicController.prototype.deleteTag = function(tag) {\n return _.remove(this.newEpic.tags, function(it) {\n return it[0] === tag[0];\n });\n };\n\n CreateEpicController.prototype.addAttachment = function(attachment) {\n return this.attachments.push(attachment);\n };\n\n return CreateEpicController;\n\n })();\n\n angular.module(\"taigaEpics\").controller(\"CreateEpicCtrl\", CreateEpicController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CreateEpicDirective;\n\n CreateEpicDirective = function() {\n var link;\n link = function(scope, el, attrs, ctrl) {\n var form;\n form = el.find(\"form\").checksley();\n ctrl.validateForm = (function(_this) {\n return function() {\n return form.validate();\n };\n })(this);\n return ctrl.setFormErrors = (function(_this) {\n return function(errors) {\n return form.setErrors(errors);\n };\n })(this);\n };\n return {\n link: link,\n templateUrl: \"epics/create-epic/create-epic.html\",\n controller: \"CreateEpicCtrl\",\n controllerAs: \"vm\",\n bindToController: {\n onCreateEpic: '&'\n },\n scope: {}\n };\n };\n\n angular.module('taigaEpics').directive(\"tgCreateEpic\", CreateEpicDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var EpicRowController;\n\n EpicRowController = (function() {\n EpicRowController.$inject = [\"$tgConfirm\", \"tgProjectService\", \"tgEpicsService\"];\n\n function EpicRowController(confirm, projectService, epicsService) {\n this.confirm = confirm;\n this.projectService = projectService;\n this.epicsService = epicsService;\n this.displayUserStories = false;\n this.displayAssignedTo = false;\n this.displayStatusList = false;\n this.loadingStatus = false;\n this.project = this.projectService.project.toJS();\n this._calculateProgressBar();\n }\n\n EpicRowController.prototype._calculateProgressBar = function() {\n var progress, total;\n if (this.epic.getIn(['status_extra_info', 'is_closed']) === true) {\n return this.percentage = \"100%\";\n } else {\n progress = this.epic.getIn(['user_stories_counts', 'progress']);\n total = this.epic.getIn(['user_stories_counts', 'total']);\n if (total === 0) {\n return this.percentage = \"0%\";\n } else {\n return this.percentage = (progress * 100 / total) + \"%\";\n }\n }\n };\n\n EpicRowController.prototype.canEditEpics = function() {\n return this.projectService.hasPermission(\"modify_epic\");\n };\n\n EpicRowController.prototype.toggleUserStoryList = function() {\n if (!this.displayUserStories) {\n return this.epicsService.listRelatedUserStories(this.epic).then((function(_this) {\n return function(userStories) {\n _this.epicStories = userStories;\n return _this.displayUserStories = true;\n };\n })(this))[\"catch\"]((function(_this) {\n return function() {\n return _this.confirm.notify('error');\n };\n })(this));\n } else {\n return this.displayUserStories = false;\n }\n };\n\n EpicRowController.prototype.updateStatus = function(statusId) {\n this.displayStatusList = false;\n this.loadingStatus = true;\n return this.epicsService.updateEpicStatus(this.epic, statusId)[\"catch\"]((function(_this) {\n return function() {\n return _this.confirm.notify('error');\n };\n })(this))[\"finally\"]((function(_this) {\n return function() {\n return _this.loadingStatus = false;\n };\n })(this));\n };\n\n EpicRowController.prototype.updateAssignedTo = function(member) {\n this.assignLoader = true;\n return this.epicsService.updateEpicAssignedTo(this.epic, (member != null ? member.id : void 0) || null)[\"catch\"]((function(_this) {\n return function() {\n return _this.confirm.notify('error');\n };\n })(this)).then((function(_this) {\n return function() {\n return _this.assignLoader = false;\n };\n })(this));\n };\n\n return EpicRowController;\n\n })();\n\n angular.module(\"taigaEpics\").controller(\"EpicRowCtrl\", EpicRowController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var EpicRowDirective;\n\n EpicRowDirective = function() {\n return {\n templateUrl: \"epics/dashboard/epic-row/epic-row.html\",\n controller: \"EpicRowCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n epic: '=',\n options: '='\n }\n };\n };\n\n angular.module('taigaEpics').directive(\"tgEpicRow\", EpicRowDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var EpicsDashboardController, taiga;\n\n taiga = this.taiga;\n\n EpicsDashboardController = (function() {\n EpicsDashboardController.$inject = [\"$routeParams\", \"tgErrorHandlingService\", \"tgLightboxFactory\", \"lightboxService\", \"$tgConfirm\", \"tgProjectService\", \"tgEpicsService\", \"tgAppMetaService\", \"$translate\"];\n\n function EpicsDashboardController(params, errorHandlingService, lightboxFactory, lightboxService, confirm, projectService, epicsService, appMetaService, translate) {\n this.params = params;\n this.errorHandlingService = errorHandlingService;\n this.lightboxFactory = lightboxFactory;\n this.lightboxService = lightboxService;\n this.confirm = confirm;\n this.projectService = projectService;\n this.epicsService = epicsService;\n this.appMetaService = appMetaService;\n this.translate = translate;\n this.sectionName = \"EPICS.SECTION_NAME\";\n taiga.defineImmutableProperty(this, 'project', (function(_this) {\n return function() {\n return _this.projectService.project;\n };\n })(this));\n taiga.defineImmutableProperty(this, 'epics', (function(_this) {\n return function() {\n return _this.epicsService.epics;\n };\n })(this));\n this.appMetaService.setfn(this._setMeta.bind(this));\n }\n\n EpicsDashboardController.prototype._setMeta = function() {\n var ctx;\n if (!this.project) {\n return null;\n }\n ctx = {\n projectName: this.project.get(\"name\"),\n projectDescription: this.project.get(\"description\")\n };\n return {\n title: this.translate.instant(\"EPICS.PAGE_TITLE\", ctx),\n description: this.translate.instant(\"EPICS.PAGE_DESCRIPTION\", ctx)\n };\n };\n\n EpicsDashboardController.prototype.loadInitialData = function() {\n this.epicsService.clear();\n return this.projectService.setProjectBySlug(this.params.pslug).then((function(_this) {\n return function() {\n if (!_this.projectService.isEpicsDashboardEnabled()) {\n return _this.errorHandlingService.notFound();\n }\n if (!_this.projectService.hasPermission(\"view_epics\")) {\n return _this.errorHandlingService.permissionDenied();\n }\n return _this.epicsService.fetchEpics();\n };\n })(this));\n };\n\n EpicsDashboardController.prototype.canCreateEpics = function() {\n return this.projectService.hasPermission(\"add_epic\");\n };\n\n EpicsDashboardController.prototype.onCreateEpic = function() {\n var onCreateEpic;\n onCreateEpic = (function(_this) {\n return function() {\n _this.lightboxService.closeAll();\n _this.confirm.notify(\"success\");\n };\n })(this);\n return this.lightboxFactory.create('tg-create-epic', {\n \"class\": \"lightbox lightbox-create-epic open\",\n \"on-create-epic\": \"onCreateEpic()\"\n }, {\n \"onCreateEpic\": onCreateEpic.bind(this)\n });\n };\n\n return EpicsDashboardController;\n\n })();\n\n angular.module(\"taigaEpics\").controller(\"EpicsDashboardCtrl\", EpicsDashboardController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var EpicsSortableDirective;\n\n EpicsSortableDirective = function($parse, projectService) {\n var link;\n link = function(scope, el, attrs) {\n var callback, drake, scroll;\n if (!projectService.hasPermission(\"modify_epic\")) {\n return;\n }\n callback = $parse(attrs.tgEpicsSortable);\n drake = dragula([el[0]], {\n copySortSource: false,\n copy: false,\n mirrorContainer: el[0],\n moves: function(item) {\n return $(item).is('div.epics-table-body-row');\n }\n });\n drake.on('dragend', function(item) {\n var epic, itemEl, newIndex;\n itemEl = $(item);\n epic = itemEl.scope().epic;\n newIndex = itemEl.index();\n return scope.$apply(function() {\n return callback(scope, {\n epic: epic,\n newIndex: newIndex\n });\n });\n });\n scroll = autoScroll(window, {\n margin: 20,\n pixels: 30,\n scrollWhenOutside: true,\n autoScroll: function() {\n return this.down && drake.dragging;\n }\n });\n return scope.$on(\"$destroy\", function() {\n el.off();\n return drake.destroy();\n });\n };\n return {\n link: link\n };\n };\n\n EpicsSortableDirective.$inject = [\"$parse\", \"tgProjectService\"];\n\n angular.module(\"taigaComponents\").directive(\"tgEpicsSortable\", EpicsSortableDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var EpicsTableController, generateHash, taiga;\n\n taiga = this.taiga;\n\n generateHash = this.taiga.generateHash;\n\n EpicsTableController = (function() {\n EpicsTableController.$inject = [\"$tgConfirm\", \"tgEpicsService\", \"$timeout\", \"$tgStorage\", \"tgProjectService\"];\n\n function EpicsTableController(confirm, epicsService, timeout, storage, projectService) {\n this.confirm = confirm;\n this.epicsService = epicsService;\n this.timeout = timeout;\n this.storage = storage;\n this.projectService = projectService;\n this.hash = generateHash([this.projectService.project.get('id'), 'epics']);\n this.displayOptions = false;\n this.displayVotes = true;\n this.options = this.storage.get(this.hash, {\n votes: true,\n name: true,\n project: true,\n sprint: true,\n assigned: true,\n status: true,\n progress: true,\n closed: true,\n closed_us: true\n });\n taiga.defineImmutableProperty(this, 'epics', (function(_this) {\n return function() {\n return _this.epicsService.epics;\n };\n })(this));\n taiga.defineImmutableProperty(this, 'disabledEpicsPagination', (function(_this) {\n return function() {\n return _this.epicsService._disablePagination;\n };\n })(this));\n taiga.defineImmutableProperty(this, 'loadingEpics', (function(_this) {\n return function() {\n return _this.epicsService._loadingEpics;\n };\n })(this));\n }\n\n EpicsTableController.prototype.toggleEpicTableOptions = function() {\n return this.displayOptions = !this.displayOptions;\n };\n\n EpicsTableController.prototype.reorderEpic = function(epic, newIndex) {\n if (epic.get('epics_order') === newIndex) {\n return null;\n }\n return this.epicsService.reorderEpic(epic, newIndex).then(null, (function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this));\n };\n\n EpicsTableController.prototype.nextPage = function() {\n return this.epicsService.nextPage();\n };\n\n EpicsTableController.prototype.hoverEpicTableOption = function() {\n if (this.timer) {\n return this.timeout.cancel(this.timer);\n }\n };\n\n EpicsTableController.prototype.hideEpicTableOption = function() {\n return this.timer = this.timeout(((function(_this) {\n return function() {\n return _this.displayOptions = false;\n };\n })(this)), 400);\n };\n\n EpicsTableController.prototype.updateViewOptions = function() {\n return this.storage.set(this.hash, this.options);\n };\n\n return EpicsTableController;\n\n })();\n\n angular.module(\"taigaEpics\").controller(\"EpicsTableCtrl\", EpicsTableController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var EpicsTableDirective;\n\n EpicsTableDirective = function() {\n return {\n templateUrl: \"epics/dashboard/epics-table/epics-table.html\",\n controller: \"EpicsTableCtrl\",\n controllerAs: \"vm\",\n scope: {}\n };\n };\n\n angular.module('taigaEpics').directive(\"tgEpicsTable\", EpicsTableDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var StoryRowController, module;\n\n module = angular.module(\"taigaEpics\");\n\n StoryRowController = (function() {\n StoryRowController.$inject = [];\n\n function StoryRowController() {\n this._calculateProgressBar();\n }\n\n StoryRowController.prototype._calculateProgressBar = function() {\n var totalTasks, totalTasksCompleted;\n if (this.story.get('is_closed') === true) {\n return this.percentage = \"100%\";\n } else {\n totalTasks = this.story.get('tasks').size;\n totalTasksCompleted = this.story.get('tasks').filter(function(it) {\n return it.get(\"is_closed\");\n }).size;\n if (totalTasks === 0) {\n return this.percentage = \"0%\";\n } else {\n return this.percentage = (totalTasksCompleted * 100 / totalTasks) + \"%\";\n }\n }\n };\n\n return StoryRowController;\n\n })();\n\n module.controller(\"StoryRowCtrl\", StoryRowController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var StoryRowDirective, module;\n\n module = angular.module('taigaEpics');\n\n StoryRowDirective = function() {\n return {\n templateUrl: \"epics/dashboard/story-row/story-row.html\",\n controller: \"StoryRowCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n story: '=',\n options: '='\n }\n };\n };\n\n module.directive(\"tgStoryRow\", StoryRowDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var EpicsService, taiga;\n\n taiga = this.taiga;\n\n EpicsService = (function() {\n EpicsService.$inject = ['tgProjectService', 'tgAttachmentsService', 'tgResources', 'tgXhrErrorService', '$q'];\n\n function EpicsService(projectService, attachmentsService, resources, xhrError, q) {\n this.projectService = projectService;\n this.attachmentsService = attachmentsService;\n this.resources = resources;\n this.xhrError = xhrError;\n this.q = q;\n this.clear();\n taiga.defineImmutableProperty(this, 'epics', (function(_this) {\n return function() {\n return _this._epics;\n };\n })(this));\n }\n\n EpicsService.prototype.clear = function() {\n this._loadingEpics = false;\n this._disablePagination = false;\n this._page = 1;\n return this._epics = Immutable.List();\n };\n\n EpicsService.prototype.fetchEpics = function(reset) {\n if (reset == null) {\n reset = false;\n }\n this._loadingEpics = true;\n this._disablePagination = true;\n return this.resources.epics.list(this.projectService.project.get('id'), this._page).then((function(_this) {\n return function(result) {\n if (reset) {\n _this.clear();\n _this._epics = result.list;\n } else {\n _this._epics = _this._epics.concat(result.list);\n }\n _this._loadingEpics = false;\n return _this._disablePagination = !result.headers('x-pagination-next');\n };\n })(this))[\"catch\"]((function(_this) {\n return function(xhr) {\n return _this.xhrError.response(xhr);\n };\n })(this));\n };\n\n EpicsService.prototype.nextPage = function() {\n this._page++;\n return this.fetchEpics();\n };\n\n EpicsService.prototype.listRelatedUserStories = function(epic) {\n return this.resources.userstories.listInEpic(epic.get('id'));\n };\n\n EpicsService.prototype.createEpic = function(epicData, attachments, projectId) {\n if (projectId) {\n epicData.project = projectId;\n } else {\n epicData.project = this.projectService.project.get('id');\n }\n return this.resources.epics.post(epicData).then((function(_this) {\n return function(epic) {\n var promises;\n if (!attachments) {\n return epic;\n } else {\n promises = _.map(attachments.toJS(), function(attachment) {\n return _this.attachmentsService.upload(attachment.file, epic.get('id'), epic.get('project'), 'epic');\n });\n return _this.q.all(promises).then(_this.fetchEpics.bind(_this, true));\n }\n };\n })(this));\n };\n\n EpicsService.prototype.reorderEpic = function(epic, newIndex) {\n var afterDestination, beforeDestination, data, newOrder, orderList, previous, previousWithTheSameOrder, setOrders, withoutMoved;\n orderList = {};\n this._epics.forEach(function(it) {\n return orderList[it.get('id')] = it.get('epics_order');\n });\n withoutMoved = this.epics.filter((function(_this) {\n return function(it) {\n return it.get('id') !== epic.get('id');\n };\n })(this));\n beforeDestination = withoutMoved.slice(0, newIndex);\n afterDestination = withoutMoved.slice(newIndex);\n previous = beforeDestination.last();\n newOrder = !previous ? 0 : previous.get('epics_order') + 1;\n orderList[epic.get('id')] = newOrder;\n previousWithTheSameOrder = beforeDestination.filter((function(_this) {\n return function(it) {\n return it.get('epics_order') === previous.get('epics_order');\n };\n })(this));\n setOrders = _.fromPairs(previousWithTheSameOrder.map((function(_this) {\n return function(it) {\n return [it.get('id'), it.get('epics_order')];\n };\n })(this)).toJS());\n afterDestination.forEach(function(it) {\n return orderList[it.get('id')] = it.get('epics_order') + 1;\n });\n this._epics = this._epics.map(function(it) {\n return it.set('epics_order', orderList[it.get('id')]);\n });\n this._epics = this._epics.sortBy(function(it) {\n return it.get('epics_order');\n });\n data = {\n epics_order: newOrder,\n version: epic.get('version')\n };\n return this.resources.epics.reorder(epic.get('id'), data, setOrders).then((function(_this) {\n return function(newEpic) {\n return _this._epics = _this._epics.map(function(it) {\n if (it.get('id') === newEpic.get('id')) {\n return newEpic;\n }\n return it;\n });\n };\n })(this));\n };\n\n EpicsService.prototype.reorderRelatedUserstory = function(epic, epicUserstories, userstory, newIndex) {\n var beforeDestination, data, epicId, newOrder, previous, previousWithTheSameOrder, setOrders, userstoryId, withoutMoved;\n withoutMoved = epicUserstories.filter((function(_this) {\n return function(it) {\n return it.get('id') !== userstory.get('id');\n };\n })(this));\n beforeDestination = withoutMoved.slice(0, newIndex);\n previous = beforeDestination.last();\n newOrder = !previous ? 0 : previous.get('epic_order') + 1;\n previousWithTheSameOrder = beforeDestination.filter((function(_this) {\n return function(it) {\n return it.get('epic_order') === previous.get('epic_order');\n };\n })(this));\n setOrders = _.fromPairs(previousWithTheSameOrder.map((function(_this) {\n return function(it) {\n return [it.get('id'), it.get('epic_order')];\n };\n })(this)).toJS());\n data = {\n order: newOrder\n };\n epicId = epic.get('id');\n userstoryId = userstory.get('id');\n return this.resources.epics.reorderRelatedUserstory(epicId, userstoryId, data, setOrders).then((function(_this) {\n return function() {\n return _this.listRelatedUserStories(epic);\n };\n })(this));\n };\n\n EpicsService.prototype.replaceEpic = function(epic) {\n return this._epics = this._epics.map(function(it) {\n if (it.get('id') === epic.get('id')) {\n return epic;\n }\n return it;\n });\n };\n\n EpicsService.prototype.updateEpicStatus = function(epic, statusId) {\n var data;\n data = {\n status: statusId,\n version: epic.get('version')\n };\n return this.resources.epics.patch(epic.get('id'), data).then(this.replaceEpic.bind(this));\n };\n\n EpicsService.prototype.updateEpicAssignedTo = function(epic, userId) {\n var data;\n data = {\n assigned_to: userId,\n version: epic.get('version')\n };\n return this.resources.epics.patch(epic.get('id'), data).then(this.replaceEpic.bind(this));\n };\n\n return EpicsService;\n\n })();\n\n angular.module('taigaEpics').service('tgEpicsService', EpicsService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var RelatedUserStoriesController, module;\n\n module = angular.module(\"taigaEpics\");\n\n RelatedUserStoriesController = (function() {\n RelatedUserStoriesController.$inject = [\"tgProjectService\", \"tgEpicsService\"];\n\n function RelatedUserStoriesController(projectService, epicsService) {\n this.projectService = projectService;\n this.epicsService = epicsService;\n this.sectionName = \"Epics\";\n this.showCreateRelatedUserstoriesLightbox = false;\n }\n\n RelatedUserStoriesController.prototype.showRelatedUserStoriesSection = function() {\n var ref;\n return this.projectService.hasPermission(\"view_epics\") || ((ref = this.userstories) != null ? ref.length : void 0) > 0;\n };\n\n RelatedUserStoriesController.prototype.userCanSort = function() {\n return this.projectService.hasPermission(\"modify_epic\");\n };\n\n RelatedUserStoriesController.prototype.loadRelatedUserstories = function() {\n return this.epicsService.listRelatedUserStories(this.epic).then((function(_this) {\n return function(userstories) {\n return _this.userstories = userstories;\n };\n })(this));\n };\n\n RelatedUserStoriesController.prototype.reorderRelatedUserstory = function(us, newIndex) {\n return this.epicsService.reorderRelatedUserstory(this.epic, this.userstories, us, newIndex).then((function(_this) {\n return function(userstories) {\n return _this.userstories = userstories;\n };\n })(this));\n };\n\n return RelatedUserStoriesController;\n\n })();\n\n module.controller(\"RelatedUserStoriesCtrl\", RelatedUserStoriesController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var RelatedUserstoriesCreateController, module;\n\n module = angular.module(\"taigaEpics\");\n\n RelatedUserstoriesCreateController = (function() {\n RelatedUserstoriesCreateController.$inject = [\"tgCurrentUserService\", \"tgResources\", \"$tgConfirm\", \"$tgAnalytics\"];\n\n function RelatedUserstoriesCreateController(currentUserService, rs, confirm, analytics) {\n this.currentUserService = currentUserService;\n this.rs = rs;\n this.confirm = confirm;\n this.analytics = analytics;\n this.projects = null;\n this.projectUserstories = Immutable.List();\n this.loading = false;\n }\n\n RelatedUserstoriesCreateController.prototype.loadProjects = function() {\n if (this.projects === null) {\n return this.projects = this.currentUserService.projects.get(\"unblocked\");\n }\n };\n\n RelatedUserstoriesCreateController.prototype.filterUss = function(selectedProjectId, filterText) {\n var promise;\n promise = this.rs.userstories.listInAllProjects({\n project: selectedProjectId,\n q: filterText\n }, true).then((function(_this) {\n return function(data) {\n var excludeIds, filteredData;\n excludeIds = _this.epicUserstories.map(function(us) {\n return us.get('id');\n });\n filteredData = data.filter(function(us) {\n return excludeIds.indexOf(us.get('id')) === -1;\n });\n return _this.projectUserstories = filteredData;\n };\n })(this));\n return promise;\n };\n\n RelatedUserstoriesCreateController.prototype.saveRelatedUserStory = function(selectedUserstoryId, onSavedRelatedUserstory) {\n var epicId, onError, onSuccess;\n if (!this.validateExistingUserstoryForm()) {\n return;\n }\n this.loading = true;\n onError = (function(_this) {\n return function(data) {\n _this.loading = false;\n _this.confirm.notify(\"error\");\n return _this.setExistingUserstoryFormErrors(data);\n };\n })(this);\n onSuccess = (function(_this) {\n return function() {\n _this.analytics.trackEvent(\"epic related user story\", \"create\", \"create related user story on epic\", 1);\n _this.loading = false;\n if (onSavedRelatedUserstory) {\n onSavedRelatedUserstory();\n }\n return _this.loadRelatedUserstories();\n };\n })(this);\n epicId = this.epic.get('id');\n return this.rs.epics.addRelatedUserstory(epicId, selectedUserstoryId).then(onSuccess, onError);\n };\n\n RelatedUserstoriesCreateController.prototype.bulkCreateRelatedUserStories = function(selectedProjectId, userstoriesText, onCreatedRelatedUserstory) {\n var epicId, onError, onSuccess;\n if (!this.validateNewUserstoryForm()) {\n return;\n }\n this.loading = true;\n onError = (function(_this) {\n return function(data) {\n _this.loading = false;\n _this.confirm.notify(\"error\");\n return _this.setNewUserstoryFormErrors(data);\n };\n })(this);\n onSuccess = (function(_this) {\n return function() {\n _this.analytics.trackEvent(\"epic related user story\", \"create\", \"create related user story on epic\", 1);\n _this.loading = false;\n if (onCreatedRelatedUserstory) {\n onCreatedRelatedUserstory();\n }\n return _this.loadRelatedUserstories();\n };\n })(this);\n epicId = this.epic.get('id');\n return this.rs.epics.bulkCreateRelatedUserStories(epicId, selectedProjectId, userstoriesText).then(onSuccess, onError);\n };\n\n return RelatedUserstoriesCreateController;\n\n })();\n\n module.controller(\"RelatedUserstoriesCreateCtrl\", RelatedUserstoriesCreateController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var RelatedUserstoriesCreateDirective, debounceLeading, module;\n\n module = angular.module('taigaEpics');\n\n debounceLeading = this.taiga.debounceLeading;\n\n RelatedUserstoriesCreateDirective = function(lightboxService1) {\n var link;\n this.lightboxService = lightboxService1;\n link = function(scope, el, attrs, ctrl) {\n var existingUserstoryForm, newUserstoryForm;\n newUserstoryForm = el.find(\".new-user-story-form\").checksley();\n existingUserstoryForm = el.find(\".existing-user-story-form\").checksley();\n ctrl.validateNewUserstoryForm = (function(_this) {\n return function() {\n return newUserstoryForm.validate();\n };\n })(this);\n ctrl.setNewUserstoryFormErrors = (function(_this) {\n return function(errors) {\n return newUserstoryForm.setErrors(errors);\n };\n })(this);\n ctrl.validateExistingUserstoryForm = (function(_this) {\n return function() {\n return existingUserstoryForm.validate();\n };\n })(this);\n ctrl.setExistingUserstoryFormErrors = (function(_this) {\n return function(errors) {\n return existingUserstoryForm.setErrors(errors);\n };\n })(this);\n scope.showLightbox = function(selectedProjectId) {\n ctrl.loadProjects();\n return scope.selectProject(selectedProjectId).then((function(_this) {\n return function() {\n return lightboxService.open(el.find(\".lightbox-create-related-user-stories\"));\n };\n })(this));\n };\n scope.closeLightbox = function() {\n scope.selectedUserstory = null;\n scope.searchUserstory = \"\";\n scope.relatedUserstoriesText = \"\";\n return lightboxService.close(el.find(\".lightbox-create-related-user-stories\"));\n };\n scope.$watch('vm.project', function(project) {\n if (project != null) {\n return scope.selectedProject = project.get('id');\n }\n });\n scope.selectProject = function(selectedProjectId) {\n scope.selectedUserstory = null;\n scope.searchUserstory = \"\";\n return ctrl.filterUss(selectedProjectId, scope.searchUserstory);\n };\n return scope.onUpdateSearchUserstory = debounceLeading(300, function() {\n scope.selectedUserstory = null;\n return ctrl.filterUss(scope.selectedProject, scope.searchUserstory);\n });\n };\n return {\n link: link,\n templateUrl: \"epics/related-userstories/related-userstories-create/related-userstories-create.html\",\n controller: \"RelatedUserstoriesCreateCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n showCreateRelatedUserstoriesLightbox: \"=\",\n project: \"=\",\n epic: \"=\",\n epicUserstories: \"=\",\n loadRelatedUserstories: \"&\"\n }\n };\n };\n\n RelatedUserstoriesCreateDirective.$inject = [\"lightboxService\"];\n\n module.directive(\"tgRelatedUserstoriesCreate\", RelatedUserstoriesCreateDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var RelatedUserstoriesSortableDirective, module;\n\n module = angular.module('taigaEpics');\n\n RelatedUserstoriesSortableDirective = function($parse, projectService) {\n var link;\n link = function(scope, el, attrs) {\n var callback, drake, scroll;\n if (!projectService.hasPermission(\"modify_epic\")) {\n return;\n }\n callback = $parse(attrs.tgRelatedUserstoriesSortable);\n drake = dragula([el[0]], {\n copySortSource: false,\n copy: false,\n mirrorContainer: el[0],\n moves: function(item) {\n return $(item).is('tg-related-userstory-row');\n }\n });\n drake.on('dragend', function(item) {\n var itemEl, newIndex, us;\n itemEl = $(item);\n us = itemEl.scope().us;\n newIndex = itemEl.index();\n return scope.$apply(function() {\n return callback(scope, {\n us: us,\n newIndex: newIndex\n });\n });\n });\n scroll = autoScroll(window, {\n margin: 20,\n pixels: 30,\n scrollWhenOutside: true,\n autoScroll: function() {\n return this.down && drake.dragging;\n }\n });\n return scope.$on(\"$destroy\", function() {\n el.off();\n return drake.destroy();\n });\n };\n return {\n link: link\n };\n };\n\n RelatedUserstoriesSortableDirective.$inject = [\"$parse\", \"tgProjectService\"];\n\n module.directive(\"tgRelatedUserstoriesSortable\", RelatedUserstoriesSortableDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var RelatedUserStoriesDirective, module;\n\n module = angular.module('taigaEpics');\n\n RelatedUserStoriesDirective = function() {\n return {\n templateUrl: \"epics/related-userstories/related-userstories.html\",\n controller: \"RelatedUserStoriesCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n userstories: '=',\n project: '=',\n epic: '='\n }\n };\n };\n\n RelatedUserStoriesDirective.$inject = [];\n\n module.directive(\"tgRelatedUserstories\", RelatedUserStoriesDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var RelatedUserstoryRowController, module;\n\n module = angular.module(\"taigaEpics\");\n\n RelatedUserstoryRowController = (function() {\n RelatedUserstoryRowController.$inject = [\"tgAvatarService\", \"$translate\", \"$tgConfirm\", \"tgResources\"];\n\n function RelatedUserstoryRowController(avatarService, translate, confirm, rs) {\n this.avatarService = avatarService;\n this.translate = translate;\n this.confirm = confirm;\n this.rs = rs;\n }\n\n RelatedUserstoryRowController.prototype.setAvatarData = function() {\n var member;\n member = this.userstory.get('assigned_to_extra_info');\n return this.avatar = this.avatarService.getAvatar(member);\n };\n\n RelatedUserstoryRowController.prototype.getAssignedToFullNameDisplay = function() {\n if (this.userstory.get('assigned_to')) {\n return this.userstory.getIn(['assigned_to_extra_info', 'full_name_display']);\n }\n return this.translate.instant(\"COMMON.ASSIGNED_TO.NOT_ASSIGNED\");\n };\n\n RelatedUserstoryRowController.prototype.onDeleteRelatedUserstory = function() {\n var message, title;\n title = this.translate.instant(\"LIGHTBOX.REMOVE_RELATIONSHIP_WITH_EPIC.TITLE\");\n message = this.translate.instant(\"LIGHTBOX.REMOVE_RELATIONSHIP_WITH_EPIC.MESSAGE\", {\n epicSubject: this.epic.get('subject')\n });\n return this.confirm.ask(title, null, message).then((function(_this) {\n return function(askResponse) {\n var epicId, onError, onSuccess, userstoryId;\n onError = function() {\n message = _this.translate.instant('EPIC.ERROR_UNLINK_RELATED_USERSTORY', {\n errorMessage: message\n });\n _this.confirm.notify(\"error\", null, message);\n return askResponse.finish(false);\n };\n onSuccess = function() {\n _this.loadRelatedUserstories();\n return askResponse.finish();\n };\n epicId = _this.epic.get('id');\n userstoryId = _this.userstory.get('id');\n return _this.rs.epics.deleteRelatedUserstory(epicId, userstoryId).then(onSuccess, onError);\n };\n })(this));\n };\n\n return RelatedUserstoryRowController;\n\n })();\n\n module.controller(\"RelatedUserstoryRowCtrl\", RelatedUserstoryRowController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var RelatedUserstoryRowDirective, module;\n\n module = angular.module('taigaEpics');\n\n RelatedUserstoryRowDirective = function() {\n var link;\n link = function(scope, el, attrs, ctrl) {\n return ctrl.setAvatarData();\n };\n return {\n link: link,\n templateUrl: \"epics/related-userstories/related-userstory-row/related-userstory-row.html\",\n controller: \"RelatedUserstoryRowCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n userstory: '=',\n epic: '=',\n project: '=',\n loadRelatedUserstories: \"&\"\n }\n };\n };\n\n RelatedUserstoryRowDirective.$inject = [];\n\n module.directive(\"tgRelatedUserstoryRow\", RelatedUserstoryRowDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ExternalAppController, taiga,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n ExternalAppController = (function(superClass) {\n extend(ExternalAppController, superClass);\n\n ExternalAppController.$inject = [\"$routeParams\", \"tgExternalAppsService\", \"$window\", \"tgCurrentUserService\", \"$location\", \"$tgNavUrls\", \"tgXhrErrorService\", \"tgLoader\"];\n\n function ExternalAppController(routeParams, externalAppsService, window, currentUserService, location, navUrls, xhrError, loader) {\n var loginUrl, nextUrl;\n this.routeParams = routeParams;\n this.externalAppsService = externalAppsService;\n this.window = window;\n this.currentUserService = currentUserService;\n this.location = location;\n this.navUrls = navUrls;\n this.xhrError = xhrError;\n this.loader = loader;\n this.createApplicationToken = bind(this.createApplicationToken, this);\n this._getApplicationToken = bind(this._getApplicationToken, this);\n this._redirect = bind(this._redirect, this);\n this.loader.start(false);\n this._applicationId = this.routeParams.application;\n this._state = this.routeParams.state;\n this._getApplicationToken();\n this._user = this.currentUserService.getUser();\n this._application = null;\n nextUrl = encodeURIComponent(this.location.url());\n loginUrl = this.navUrls.resolve(\"login\");\n this.loginWithAnotherUserUrl = loginUrl + \"?next=\" + nextUrl + \"&force_login=1\";\n taiga.defineImmutableProperty(this, \"user\", (function(_this) {\n return function() {\n return _this._user;\n };\n })(this));\n taiga.defineImmutableProperty(this, \"application\", (function(_this) {\n return function() {\n return _this._application;\n };\n })(this));\n }\n\n ExternalAppController.prototype._redirect = function(applicationToken) {\n var nextUrl;\n nextUrl = applicationToken.get(\"next_url\");\n return this.window.open(nextUrl, \"_self\");\n };\n\n ExternalAppController.prototype._getApplicationToken = function() {\n return this.externalAppsService.getApplicationToken(this._applicationId, this._state).then((function(_this) {\n return function(data) {\n _this._application = data.get(\"application\");\n if (data.get(\"auth_code\")) {\n return _this._redirect(data);\n } else {\n return _this.loader.pageLoaded();\n }\n };\n })(this))[\"catch\"]((function(_this) {\n return function(xhr) {\n _this.loader.pageLoaded();\n return _this.xhrError.response(xhr);\n };\n })(this));\n };\n\n ExternalAppController.prototype.cancel = function() {\n return this.window.history.back();\n };\n\n ExternalAppController.prototype.createApplicationToken = function() {\n return this.externalAppsService.authorizeApplicationToken(this._applicationId, this._state).then((function(_this) {\n return function(data) {\n return _this._redirect(data);\n };\n })(this))[\"catch\"]((function(_this) {\n return function(xhr) {\n return _this.xhrError.response(xhr);\n };\n })(this));\n };\n\n return ExternalAppController;\n\n })(taiga.Controller);\n\n angular.module(\"taigaExternalApps\").controller(\"ExternalApp\", ExternalAppController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ExternalAppsService,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n ExternalAppsService = (function(superClass) {\n extend(ExternalAppsService, superClass);\n\n ExternalAppsService.$inject = [\"tgResources\"];\n\n function ExternalAppsService(rs) {\n this.rs = rs;\n }\n\n ExternalAppsService.prototype.getApplicationToken = function(applicationId, state) {\n return this.rs.externalapps.getApplicationToken(applicationId, state);\n };\n\n ExternalAppsService.prototype.authorizeApplicationToken = function(applicationId, state) {\n return this.rs.externalapps.authorizeApplicationToken(applicationId, state);\n };\n\n return ExternalAppsService;\n\n })(taiga.Service);\n\n angular.module(\"taigaExternalApps\").service(\"tgExternalAppsService\", ExternalAppsService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var FeedbackService,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n FeedbackService = (function(superClass) {\n extend(FeedbackService, superClass);\n\n FeedbackService.$inject = [\"tgLightboxFactory\"];\n\n function FeedbackService(lightboxFactory) {\n this.lightboxFactory = lightboxFactory;\n }\n\n FeedbackService.prototype.sendFeedback = function() {\n return this.lightboxFactory.create(\"tg-lb-feedback\", {\n \"class\": \"lightbox lightbox-feedback lightbox-generic-form\"\n });\n };\n\n return FeedbackService;\n\n })(taiga.Service);\n\n angular.module(\"taigaFeedback\").service(\"tgFeedbackService\", FeedbackService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ActivityService, taiga;\n\n taiga = this.taiga;\n\n ActivityService = (function() {\n ActivityService.$inject = ['tgResources', 'tgXhrErrorService'];\n\n function ActivityService(rs, xhrError) {\n this.rs = rs;\n this.xhrError = xhrError;\n this._contentType = null;\n this._objectId = null;\n this.clear();\n }\n\n ActivityService.prototype.clear = function() {\n this.page = 1;\n this.loadingEntries = false;\n this.disablePagination = false;\n this.entries = Immutable.List();\n return this.count = null;\n };\n\n ActivityService.prototype.fetchEntries = function(reset) {\n if (reset == null) {\n reset = false;\n }\n if (reset) {\n this.page = 1;\n }\n this.loadingEntries = true;\n this.disablePagination = true;\n if (!this._contentType || !this._objectId) {\n return;\n }\n return this.rs.history.getHistory('activity', this._contentType, this._objectId, this.page).then((function(_this) {\n return function(result) {\n if (reset) {\n _this.clear();\n _this.entries = result.list;\n } else {\n _this.entries = _this.entries.concat(result.list);\n }\n _this.loadingEntries = false;\n _this.disablePagination = !result.headers('x-pagination-next');\n _this.count = result.headers('x-pagination-count');\n return _this.entries;\n };\n })(this))[\"catch\"]((function(_this) {\n return function(xhr) {\n return _this.xhrError.response(_this.entries);\n };\n })(this));\n };\n\n ActivityService.prototype.nextPage = function(historyType) {\n if (historyType == null) {\n historyType = 'comment';\n }\n this.page++;\n return this.fetchEntries();\n };\n\n ActivityService.prototype.init = function(contentType, objectId) {\n this._contentType = contentType;\n this._objectId = objectId;\n return this.clear();\n };\n\n return ActivityService;\n\n })();\n\n angular.module('taigaHistory').service('tgActivityService', ActivityService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CommentController, module;\n\n module = angular.module(\"taigaHistory\");\n\n CommentController = (function() {\n CommentController.$inject = [\"tgCurrentUserService\", \"tgCheckPermissionsService\", \"tgLightboxFactory\"];\n\n function CommentController(currentUserService, permissionService, lightboxFactory) {\n this.currentUserService = currentUserService;\n this.permissionService = permissionService;\n this.lightboxFactory = lightboxFactory;\n this.hiddenDeletedComment = true;\n }\n\n CommentController.prototype.showDeletedComment = function() {\n return this.hiddenDeletedComment = false;\n };\n\n CommentController.prototype.hideDeletedComment = function() {\n return this.hiddenDeletedComment = true;\n };\n\n CommentController.prototype.checkCancelComment = function(event) {\n if (event.keyCode === 27) {\n return this.onEditMode({\n commentId: this.comment.id\n });\n }\n };\n\n CommentController.prototype.canEditDeleteComment = function() {\n if (this.currentUserService.getUser()) {\n this.user = this.currentUserService.getUser();\n return this.user.get('id') === this.comment.user.pk || this.permissionService.check('modify_project');\n }\n };\n\n CommentController.prototype.saveComment = function(text, cb) {\n return this.onEditComment({\n commentId: this.comment.id,\n commentData: text,\n callback: cb\n });\n };\n\n CommentController.prototype.displayCommentHistory = function() {\n return this.lightboxFactory.create('tg-lb-display-historic', {\n \"class\": \"lightbox lightbox-display-historic\",\n \"comment\": \"comment\",\n \"name\": \"name\",\n \"object\": \"object\"\n }, {\n \"comment\": this.comment,\n \"name\": this.name,\n \"object\": this.object\n });\n };\n\n return CommentController;\n\n })();\n\n module.controller(\"CommentCtrl\", CommentController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CommentDirective, module;\n\n module = angular.module('taigaHistory');\n\n CommentDirective = function() {\n return {\n scope: {\n name: \"@\",\n projectId: \"@\",\n object: \"@\",\n comment: \"<\",\n type: \"<\",\n loading: \"<\",\n editing: \"<\",\n deleting: \"<\",\n objectId: \"<\",\n editMode: \"<\",\n project: \"<\",\n onEditMode: \"&\",\n onDeleteComment: \"&\",\n onRestoreDeletedComment: \"&\",\n onEditComment: \"&\"\n },\n templateUrl: \"history/comments/comment.html\",\n bindToController: true,\n controller: 'CommentCtrl',\n controllerAs: \"vm\"\n };\n };\n\n module.directive(\"tgComment\", CommentDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CommentsController, module;\n\n module = angular.module(\"taigaHistory\");\n\n CommentsController = (function() {\n CommentsController.$inject = [];\n\n function CommentsController() {}\n\n CommentsController.prototype.initializePermissions = function() {\n return this.canAddCommentPermission = 'comment_' + this.name;\n };\n\n return CommentsController;\n\n })();\n\n module.controller(\"CommentsCtrl\", CommentsController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CommentsDirective, module;\n\n module = angular.module('taigaHistory');\n\n CommentsDirective = function() {\n var link;\n link = function(scope, el, attrs, ctrl) {\n return ctrl.initializePermissions();\n };\n return {\n scope: {\n type: \"<\",\n name: \"@\",\n object: \"@\",\n comments: \"<\",\n onEditMode: \"&\",\n onDeleteComment: \"&\",\n onRestoreDeletedComment: \"&\",\n onAddComment: \"&\",\n onEditComment: \"&\",\n editMode: \"<\",\n loading: \"<\",\n deleting: \"<\",\n editing: \"<\",\n project: \"=\",\n reverse: \"=\"\n },\n templateUrl: \"history/comments/comments.html\",\n bindToController: true,\n controller: 'CommentsCtrl',\n controllerAs: \"vm\",\n link: link\n };\n };\n\n module.directive(\"tgComments\", CommentsDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var LightboxDisplayHistoricController, module;\n\n module = angular.module(\"taigaHistory\");\n\n LightboxDisplayHistoricController = (function() {\n LightboxDisplayHistoricController.$inject = [\"$tgResources\"];\n\n function LightboxDisplayHistoricController(rs) {\n this.rs = rs;\n }\n\n LightboxDisplayHistoricController.prototype._loadHistoric = function() {\n var activityId, objectId, type;\n type = this.name;\n objectId = this.object;\n activityId = this.comment.id;\n return this.rs.history.getCommentHistory(type, objectId, activityId).then((function(_this) {\n return function(data) {\n return _this.commentHistoryEntries = data;\n };\n })(this));\n };\n\n return LightboxDisplayHistoricController;\n\n })();\n\n module.controller(\"LightboxDisplayHistoricCtrl\", LightboxDisplayHistoricController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var LightboxDisplayHistoricDirective;\n\n LightboxDisplayHistoricDirective = function(lightboxService) {\n var link;\n link = function(scope, el, attrs, ctrl) {\n ctrl._loadHistoric();\n return lightboxService.open(el);\n };\n return {\n scope: {},\n bindToController: {\n name: '=',\n object: '=',\n comment: '='\n },\n templateUrl: \"history/history-lightbox/comment-history-lightbox.html\",\n controller: \"LightboxDisplayHistoricCtrl\",\n controllerAs: \"vm\",\n link: link\n };\n };\n\n LightboxDisplayHistoricDirective.$inject = [\"lightboxService\"];\n\n angular.module('taigaHistory').directive(\"tgLbDisplayHistoric\", LightboxDisplayHistoricDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var HistoryEntryDirective;\n\n HistoryEntryDirective = function() {\n return {\n scope: {\n entry: \"<\"\n },\n templateUrl: \"history/history-lightbox/history-entry.html\"\n };\n };\n\n angular.module('taigaHistory').directive(\"tgHistoryEntry\", HistoryEntryDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var HistoryTabsDirective, module;\n\n module = angular.module('taigaHistory');\n\n HistoryTabsDirective = function() {\n return {\n templateUrl: \"history/history-tabs/history-tabs.html\",\n scope: {\n showCommentTab: \"&\",\n showActivityTab: \"&\",\n onActiveComments: \"&\",\n onActiveActivities: \"&\",\n onOrderComments: \"&\",\n activeTab: \"<\",\n commentsNum: \"<\",\n activitiesNum: \"<\",\n onReverse: \"<\"\n }\n };\n };\n\n module.directive(\"tgHistoryTabs\", HistoryTabsDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var HistorySectionController, module;\n\n module = angular.module(\"taigaHistory\");\n\n HistorySectionController = (function() {\n HistorySectionController.$inject = [\"$tgResources\", \"$tgRepo\", \"$tgStorage\", \"tgProjectService\", \"tgActivityService\", \"tgWysiwygService\"];\n\n function HistorySectionController(rs, repo, storage, projectService, activityService, wysiwygService) {\n this.rs = rs;\n this.repo = repo;\n this.storage = storage;\n this.projectService = projectService;\n this.activityService = activityService;\n this.wysiwygService = wysiwygService;\n this.editing = null;\n this.deleting = null;\n this.editMode = {};\n this.viewComments = true;\n this.reverse = this.storage.get(\"orderComments\");\n taiga.defineImmutableProperty(this, 'disabledActivityPagination', (function(_this) {\n return function() {\n return _this.activityService.disablePagination;\n };\n })(this));\n taiga.defineImmutableProperty(this, 'loadingActivity', (function(_this) {\n return function() {\n return _this.activityService.loading;\n };\n })(this));\n }\n\n HistorySectionController.prototype._loadHistory = function() {\n this._loadComments();\n return this._loadActivity();\n };\n\n HistorySectionController.prototype._loadActivity = function() {\n this.activityService.init(this.name, this.id);\n return this.activityService.fetchEntries().then((function(_this) {\n return function(response) {\n _this.activitiesNum = _this.activityService.count;\n return _this.activities = response.toJS();\n };\n })(this));\n };\n\n HistorySectionController.prototype._loadComments = function() {\n return this.rs.history.get(this.name, this.id, 'comment').then((function(_this) {\n return function(comments) {\n _this.comments = _.filter(comments, function(item) {\n return item.comment !== \"\";\n });\n if (_this.reverse) {\n _this.comments - _.reverse(_this.comments);\n }\n return _this.commentsNum = _this.comments.length;\n };\n })(this));\n };\n\n HistorySectionController.prototype.nextActivityPage = function() {\n return this.activityService.nextPage().then((function(_this) {\n return function(response) {\n return _this.activities = response.toJS();\n };\n })(this));\n };\n\n HistorySectionController.prototype.showHistorySection = function() {\n return this.showCommentTab() || this.showActivityTab();\n };\n\n HistorySectionController.prototype.showCommentTab = function() {\n return this.commentsNum > 0 || this.projectService.hasPermission(\"comment_\" + this.name);\n };\n\n HistorySectionController.prototype.showActivityTab = function() {\n return this.activitiesNum > 0;\n };\n\n HistorySectionController.prototype.toggleEditMode = function(commentId) {\n return this.editMode[commentId] = !this.editMode[commentId];\n };\n\n HistorySectionController.prototype.onActiveHistoryTab = function(active) {\n return this.viewComments = active;\n };\n\n HistorySectionController.prototype.deleteComment = function(commentId) {\n var activityId, objectId, type;\n type = this.name;\n objectId = this.id;\n activityId = commentId;\n this.deleting = commentId;\n return this.rs.history.deleteComment(type, objectId, activityId).then((function(_this) {\n return function() {\n _this._loadComments();\n return _this.deleting = null;\n };\n })(this));\n };\n\n HistorySectionController.prototype.editComment = function(commentId, comment) {\n var activityId, objectId, type;\n type = this.name;\n objectId = this.id;\n activityId = commentId;\n this.editing = commentId;\n return this.rs.history.editComment(type, objectId, activityId, comment).then((function(_this) {\n return function() {\n _this._loadComments();\n _this.toggleEditMode(commentId);\n return _this.editing = null;\n };\n })(this));\n };\n\n HistorySectionController.prototype.restoreDeletedComment = function(commentId) {\n var activityId, objectId, type;\n type = this.name;\n objectId = this.id;\n activityId = commentId;\n this.editing = commentId;\n return this.rs.history.undeleteComment(type, objectId, activityId).then((function(_this) {\n return function() {\n _this._loadComments();\n return _this.editing = null;\n };\n })(this));\n };\n\n HistorySectionController.prototype.addComment = function() {\n this.editMode = {};\n this.editing = null;\n return this._loadComments();\n };\n\n HistorySectionController.prototype.onOrderComments = function() {\n this.reverse = !this.reverse;\n this.storage.set(\"orderComments\", this.reverse);\n return this._loadComments();\n };\n\n return HistorySectionController;\n\n })();\n\n module.controller(\"HistorySection\", HistorySectionController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var HistorySectionDirective, bindOnce, module;\n\n module = angular.module('taigaHistory');\n\n bindOnce = this.taiga.bindOnce;\n\n HistorySectionDirective = function() {\n var link;\n link = function(scope, el, attr, ctrl) {\n scope.$on(\"object:updated\", function() {\n return ctrl._loadActivity();\n });\n return scope.$watch('vm.id', function(value) {\n return ctrl._loadHistory();\n });\n };\n return {\n link: link,\n templateUrl: \"history/history.html\",\n controller: \"HistorySection\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n type: \"=\",\n name: \"@\",\n id: \"=\",\n project: \"=\"\n }\n };\n };\n\n HistorySectionDirective.$inject = [];\n\n module.directive(\"tgHistorySection\", HistorySectionDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ActivitiesDiffController, module;\n\n module = angular.module(\"taigaHistory\");\n\n ActivitiesDiffController = (function() {\n ActivitiesDiffController.$inject = [];\n\n function ActivitiesDiffController() {}\n\n ActivitiesDiffController.prototype.diffTags = function() {\n var diff;\n if (this.type === 'tags') {\n this.diffRemoveTags = _.difference(this.diff[0], this.diff[1]).toString();\n return this.diffAddTags = _.difference(this.diff[1], this.diff[0]).toString();\n } else if (this.type === 'promoted_to') {\n diff = _.difference(this.diff[1], this.diff[0]);\n return this.promotedTo = _.filter(this.model.generated_user_stories, (function(_this) {\n return function(x) {\n return _.includes(diff, x.id);\n };\n })(this));\n }\n };\n\n return ActivitiesDiffController;\n\n })();\n\n module.controller(\"ActivitiesDiffCtrl\", ActivitiesDiffController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var HistoryDiffDirective, module;\n\n module = angular.module('taigaHistory');\n\n HistoryDiffDirective = function() {\n var link;\n link = function(scope, el, attrs, ctrl) {\n return ctrl.diffTags();\n };\n return {\n scope: {\n model: \"<\",\n type: \"<\",\n diff: \"<\"\n },\n templateUrl: \"history/history/history-diff.html\",\n controller: \"ActivitiesDiffCtrl\",\n controllerAs: 'vm',\n bindToController: true,\n link: link\n };\n };\n\n module.directive(\"tgHistoryDiff\", HistoryDiffDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var HistoryDirective, module;\n\n module = angular.module('taigaHistory');\n\n HistoryDirective = function() {\n var link;\n link = function(scope, el, attrs) {};\n return {\n scope: {\n activities: \"<\",\n model: \"<\"\n },\n templateUrl: \"history/history/history.html\",\n link: link\n };\n };\n\n module.directive(\"tgHistory\", HistoryDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DutyDirective;\n\n DutyDirective = function(navurls, $translate) {\n var link;\n link = function(scope, el, attrs, ctrl) {\n scope.vm = {};\n scope.vm.duty = scope.duty;\n scope.vm.type = scope.type;\n scope.vm.isHidden = scope.isHidden;\n scope.vm.getDutyType = function() {\n if (scope.vm.duty) {\n if (scope.vm.duty.get('_name') === \"epics\") {\n return $translate.instant(\"COMMON.EPIC\");\n }\n if (scope.vm.duty.get('_name') === \"userstories\") {\n return $translate.instant(\"COMMON.USER_STORY\");\n }\n if (scope.vm.duty.get('_name') === \"tasks\") {\n return $translate.instant(\"COMMON.TASK\");\n }\n if (scope.vm.duty.get('_name') === \"issues\") {\n return $translate.instant(\"COMMON.ISSUE\");\n }\n }\n };\n return el.on(\"click\", \".button-hide\", function(event) {\n event.preventDefault();\n el.remove();\n return scope.$emit('duty:toggle-hidden', scope.vm.duty, scope.vm.type);\n });\n };\n return {\n templateUrl: \"home/duties/duty.html\",\n scope: {\n \"duty\": \"=tgDuty\",\n \"isHidden\": \"=\",\n \"type\": \"@\"\n },\n link: link\n };\n };\n\n DutyDirective.$inject = [\"$tgNavUrls\", \"$translate\"];\n\n angular.module(\"taigaHome\").directive(\"tgDuty\", DutyDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var HomeController;\n\n HomeController = (function() {\n HomeController.$inject = [\"tgCurrentUserService\", \"$location\", \"$tgNavUrls\"];\n\n function HomeController(currentUserService, location, navUrls) {\n this.currentUserService = currentUserService;\n this.location = location;\n this.navUrls = navUrls;\n if (!this.currentUserService.getUser()) {\n this.location.path(this.navUrls.resolve(\"discover\"));\n }\n }\n\n return HomeController;\n\n })();\n\n angular.module(\"taigaHome\").controller(\"Home\", HomeController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var HomeService, groupBy,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n groupBy = this.taiga.groupBy;\n\n HomeService = (function(superClass) {\n extend(HomeService, superClass);\n\n HomeService.$inject = [\"$tgNavUrls\", \"tgResources\", \"tgProjectsService\", \"$q\"];\n\n function HomeService(navurls, rs, projectsService, q) {\n this.navurls = navurls;\n this.rs = rs;\n this.projectsService = projectsService;\n this.q = q;\n }\n\n HomeService.prototype._attachProjectInfoToWorkInProgress = function(workInProgress, projectsById) {\n var _attachProjectInfoToDuty, _duties, _getValidDutiesAndAttachProjectInfo, assignedTo, watching;\n _attachProjectInfoToDuty = (function(_this) {\n return function(duty, objType) {\n var ctx, project, url;\n project = projectsById.get(String(duty.get('project')));\n ctx = {\n project: project.get('slug'),\n ref: duty.get('ref')\n };\n url = _this.navurls.resolve(\"project-\" + objType + \"-detail\", ctx);\n duty = duty.set('url', url);\n duty = duty.set('project', project);\n duty = duty.set(\"_name\", objType);\n return duty;\n };\n })(this);\n _getValidDutiesAndAttachProjectInfo = function(duties, dutyType) {\n duties = duties.filter(function(duty) {\n return projectsById.get(String(duty.get('project')));\n });\n duties = duties.map(function(duty) {\n return _attachProjectInfoToDuty(duty, dutyType);\n });\n return duties;\n };\n assignedTo = workInProgress.get(\"assignedTo\");\n if (assignedTo.get(\"epics\")) {\n _duties = _getValidDutiesAndAttachProjectInfo(assignedTo.get(\"epics\"), \"epics\");\n assignedTo = assignedTo.set(\"epics\", _duties);\n }\n if (assignedTo.get(\"userStories\")) {\n _duties = _getValidDutiesAndAttachProjectInfo(assignedTo.get(\"userStories\"), \"userstories\");\n assignedTo = assignedTo.set(\"userStories\", _duties);\n }\n if (assignedTo.get(\"tasks\")) {\n _duties = _getValidDutiesAndAttachProjectInfo(assignedTo.get(\"tasks\"), \"tasks\");\n assignedTo = assignedTo.set(\"tasks\", _duties);\n }\n if (assignedTo.get(\"issues\")) {\n _duties = _getValidDutiesAndAttachProjectInfo(assignedTo.get(\"issues\"), \"issues\");\n assignedTo = assignedTo.set(\"issues\", _duties);\n }\n watching = workInProgress.get(\"watching\");\n if (watching.get(\"epics\")) {\n _duties = _getValidDutiesAndAttachProjectInfo(watching.get(\"epics\"), \"epics\");\n watching = watching.set(\"epics\", _duties);\n }\n if (watching.get(\"userStories\")) {\n _duties = _getValidDutiesAndAttachProjectInfo(watching.get(\"userStories\"), \"userstories\");\n watching = watching.set(\"userStories\", _duties);\n }\n if (watching.get(\"tasks\")) {\n _duties = _getValidDutiesAndAttachProjectInfo(watching.get(\"tasks\"), \"tasks\");\n watching = watching.set(\"tasks\", _duties);\n }\n if (watching.get(\"issues\")) {\n _duties = _getValidDutiesAndAttachProjectInfo(watching.get(\"issues\"), \"issues\");\n watching = watching.set(\"issues\", _duties);\n }\n workInProgress = workInProgress.set(\"assignedTo\", assignedTo);\n return workInProgress = workInProgress.set(\"watching\", watching);\n };\n\n HomeService.prototype.getWorkInProgress = function(userId) {\n var assignedEpicsPromise, assignedIssuesPromise, assignedTasksPromise, assignedTo, assignedUserStoriesPromise, params_epics, params_issues, params_tasks, params_uss, projectsById, projectsPromise, watching, watchingEpicsPromise, watchingIssuesPromise, watchingTasksPromise, watchingUserStoriesPromise, workInProgress;\n projectsById = Immutable.Map();\n projectsPromise = this.projectsService.getListProjectsByUserId(userId).then(function(projects) {\n return projectsById = Immutable.fromJS(groupBy(projects.toJS(), function(p) {\n return p.id;\n }));\n });\n assignedTo = Immutable.Map();\n params_epics = {\n status__is_closed: false,\n assigned_to: userId\n };\n params_uss = {\n is_closed: false,\n assigned_users: userId,\n dashboard: true\n };\n params_tasks = {\n status__is_closed: false,\n assigned_to: userId\n };\n params_issues = {\n status__is_closed: false,\n assigned_to: userId\n };\n assignedEpicsPromise = this.rs.epics.listInAllProjects(params_epics).then(function(epics) {\n return assignedTo = assignedTo.set(\"epics\", epics);\n });\n assignedUserStoriesPromise = this.rs.userstories.listInAllProjects(params_uss).then(function(userstories) {\n return assignedTo = assignedTo.set(\"userStories\", userstories);\n });\n assignedTasksPromise = this.rs.tasks.listInAllProjects(params_tasks).then(function(tasks) {\n return assignedTo = assignedTo.set(\"tasks\", tasks);\n });\n assignedIssuesPromise = this.rs.issues.listInAllProjects(params_issues).then(function(issues) {\n return assignedTo = assignedTo.set(\"issues\", issues);\n });\n params_epics = {\n status__is_closed: false,\n watchers: userId\n };\n params_uss = {\n is_closed: false,\n watchers: userId,\n dashboard: true\n };\n params_tasks = {\n status__is_closed: false,\n watchers: userId\n };\n params_issues = {\n status__is_closed: false,\n watchers: userId\n };\n watching = Immutable.Map();\n watchingEpicsPromise = this.rs.epics.listInAllProjects(params_epics).then(function(epics) {\n return watching = watching.set(\"epics\", epics);\n });\n watchingUserStoriesPromise = this.rs.userstories.listInAllProjects(params_uss).then(function(userstories) {\n return watching = watching.set(\"userStories\", userstories);\n });\n watchingTasksPromise = this.rs.tasks.listInAllProjects(params_tasks).then(function(tasks) {\n return watching = watching.set(\"tasks\", tasks);\n });\n watchingIssuesPromise = this.rs.issues.listInAllProjects(params_issues).then(function(issues) {\n return watching = watching.set(\"issues\", issues);\n });\n workInProgress = Immutable.Map();\n return this.q.all([projectsPromise, assignedEpicsPromise, watchingEpicsPromise, assignedUserStoriesPromise, watchingUserStoriesPromise, assignedTasksPromise, watchingTasksPromise, assignedIssuesPromise, watchingIssuesPromise]).then((function(_this) {\n return function() {\n workInProgress = workInProgress.set(\"assignedTo\", assignedTo);\n workInProgress = workInProgress.set(\"watching\", watching);\n workInProgress = _this._attachProjectInfoToWorkInProgress(workInProgress, projectsById);\n return workInProgress;\n };\n })(this));\n };\n\n return HomeService;\n\n })(taiga.Service);\n\n angular.module(\"taigaHome\").service(\"tgHomeService\", HomeService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var HomeProjectListDirective;\n\n HomeProjectListDirective = function(currentUserService) {\n var directive, link;\n link = function(scope, el, attrs, ctrl) {\n scope.vm = {};\n return taiga.defineImmutableProperty(scope.vm, \"projects\", function() {\n return currentUserService.projects.get(\"recents\");\n });\n };\n directive = {\n templateUrl: \"home/projects/home-project-list.html\",\n scope: {},\n link: link\n };\n return directive;\n };\n\n HomeProjectListDirective.$inject = [\"tgCurrentUserService\"];\n\n angular.module(\"taigaHome\").directive(\"tgHomeProjectList\", HomeProjectListDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var WorkingOnController;\n\n WorkingOnController = (function() {\n WorkingOnController.$inject = [\"tgHomeService\"];\n\n function WorkingOnController(homeService) {\n this.homeService = homeService;\n this.assignedTo = Immutable.Map();\n this.hiddenAssignedTo = [];\n this.showHiddenAssignedTo = false;\n this.watching = Immutable.Map();\n this.showHiddenWatching = false;\n }\n\n WorkingOnController.prototype._setAssignedTo = function(workInProgress) {\n var epics, issues, tasks, userStories;\n epics = workInProgress.get(\"assignedTo\").get(\"epics\");\n userStories = workInProgress.get(\"assignedTo\").get(\"userStories\");\n tasks = workInProgress.get(\"assignedTo\").get(\"tasks\");\n issues = workInProgress.get(\"assignedTo\").get(\"issues\");\n this.assignedTo = userStories.concat(tasks).concat(issues).concat(epics);\n if (this.assignedTo.size > 0) {\n return this.assignedTo = this.assignedTo.sortBy(function(elem) {\n return elem.get(\"modified_date\");\n }).reverse();\n }\n };\n\n WorkingOnController.prototype._setWatching = function(workInProgress) {\n var epics, issues, tasks, userStories;\n epics = workInProgress.get(\"watching\").get(\"epics\");\n userStories = workInProgress.get(\"watching\").get(\"userStories\");\n tasks = workInProgress.get(\"watching\").get(\"tasks\");\n issues = workInProgress.get(\"watching\").get(\"issues\");\n this.watching = userStories.concat(tasks).concat(issues).concat(epics);\n if (this.watching.size > 0) {\n return this.watching = this.watching.sortBy(function(elem) {\n return elem.get(\"modified_date\");\n }).reverse();\n }\n };\n\n WorkingOnController.prototype.getWorkInProgress = function(userId) {\n return this.homeService.getWorkInProgress(userId).then((function(_this) {\n return function(workInProgress) {\n _this._setAssignedTo(workInProgress);\n return _this._setWatching(workInProgress);\n };\n })(this));\n };\n\n return WorkingOnController;\n\n })();\n\n angular.module(\"taigaHome\").controller(\"WorkingOn\", WorkingOnController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var WorkingOnDirective, generateHash, taiga,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n taiga = this.taiga;\n\n generateHash = this.taiga.generateHash;\n\n WorkingOnDirective = function(homeService, currentUserService, storage) {\n var link;\n link = function(scope, el, attrs, ctrl) {\n var getHiddenDuties, getShowHiddenDuties, i, len, slot, slots, toggleDutyHidden, updateHiddenDuties, updateShowHiddenDuties, user, userId;\n updateShowHiddenDuties = function(slot) {\n var hash;\n hash = generateHash(['ShowHiddenDashboardDuties', slot]);\n return storage.set(hash, scope.showHiddenDuties[slot]);\n };\n getShowHiddenDuties = function(slot) {\n var hash;\n hash = generateHash(['ShowHiddenDashboardDuties', slot]);\n return storage.get(hash) || false;\n };\n updateHiddenDuties = function(slot) {\n var hash;\n hash = generateHash(['HiddenDashboardDuties', slot]);\n return storage.set(hash, scope.hiddenDuties[slot]);\n };\n getHiddenDuties = function(slot) {\n var hash;\n hash = generateHash(['HiddenDashboardDuties', slot]);\n return storage.get(hash) || [];\n };\n toggleDutyHidden = function(duty, slot) {\n var ref;\n if (ref = duty.get('id'), indexOf.call(scope.hiddenDuties[slot], ref) >= 0) {\n scope.hiddenDuties[slot].splice(scope.hiddenDuties[slot].indexOf(duty.get('id')), 1);\n } else {\n scope.hiddenDuties[slot].push(duty.get('id'));\n }\n updateHiddenDuties(slot);\n return scope.$apply();\n };\n user = currentUserService.getUser();\n if (!user) {\n return;\n }\n userId = user.get(\"id\");\n ctrl.getWorkInProgress(userId);\n slots = ['working-on', 'watching'];\n scope.hiddenDuties = {};\n scope.showHiddenDuties = {};\n scope.toggleShowHiddenDuties = function(slot) {\n if (!(indexOf.call(slots, slot) >= 0)) {\n return console.error(\"Invalid duties slot `\" + slot + \"`\");\n }\n scope.showHiddenDuties[slot] = !scope.showHiddenDuties[slot];\n return updateShowHiddenDuties(slot);\n };\n for (i = 0, len = slots.length; i < len; i++) {\n slot = slots[i];\n scope.hiddenDuties[slot] = getHiddenDuties(slot);\n scope.showHiddenDuties[slot] = getShowHiddenDuties(slot);\n }\n return scope.$on(\"duty:toggle-hidden\", (function(_this) {\n return function(event, duty, slot) {\n if (!(indexOf.call(slots, slot) >= 0)) {\n return console.error(\"Invalid duties slot `\" + slot + \"`\");\n }\n return toggleDutyHidden(duty, slot);\n };\n })(this));\n };\n return {\n controller: \"WorkingOn\",\n controllerAs: \"vm\",\n templateUrl: \"home/working-on/working-on.html\",\n scope: {},\n link: link\n };\n };\n\n WorkingOnDirective.$inject = [\"tgHomeService\", \"tgCurrentUserService\", \"$tgStorage\"];\n\n angular.module(\"taigaHome\").directive(\"tgWorkingOn\", WorkingOnDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var InviteMembersFormController, taiga;\n\n taiga = this.taiga;\n\n InviteMembersFormController = (function() {\n InviteMembersFormController.$inject = [\"tgProjectService\", \"$tgResources\", \"lightboxService\", \"$tgConfirm\", \"$rootScope\"];\n\n function InviteMembersFormController(projectService, rs, lightboxService, confirm, rootScope) {\n this.projectService = projectService;\n this.rs = rs;\n this.lightboxService = lightboxService;\n this.confirm = confirm;\n this.rootScope = rootScope;\n this.project = this.projectService.project;\n this.roles = this.projectService.project.get('roles');\n this.rolesValues = {};\n this.loading = false;\n this.defaultMaxInvites = 4;\n }\n\n InviteMembersFormController.prototype._areRolesValidated = function() {\n return Object.defineProperty(this, 'areRolesValidated', {\n get: (function(_this) {\n return function() {\n var roleIds;\n roleIds = _.filter(_.values(_this.rolesValues), function(it) {\n return it;\n });\n return roleIds.length === _this.contactsToInvite.size + _this.emailsToInvite.size;\n };\n })(this)\n });\n };\n\n InviteMembersFormController.prototype._checkLimitMemberships = function() {\n var pendingMembersCount;\n if (this.project.get('max_memberships') === null) {\n this.membersLimit = this.defaultMaxInvites;\n } else {\n pendingMembersCount = Math.max(this.project.get('max_memberships') - this.project.get('total_memberships'), 0);\n this.membersLimit = Math.min(pendingMembersCount, this.defaultMaxInvites);\n }\n return this.showWarningMessage = this.membersLimit < this.defaultMaxInvites;\n };\n\n InviteMembersFormController.prototype.sendInvites = function() {\n this.setInvitedContacts = [];\n _.forEach(this.rolesValues, (function(_this) {\n return function(key, value) {\n return _this.setInvitedContacts.push({\n 'role_id': key,\n 'username': value\n });\n };\n })(this));\n this.loading = true;\n return this.rs.memberships.bulkCreateMemberships(this.project.get('id'), this.setInvitedContacts, this.inviteContactsMessage).then((function(_this) {\n return function(response) {\n return _this.projectService.fetchProject().then(function() {\n _this.loading = false;\n _this.lightboxService.closeAll();\n _this.rootScope.$broadcast(\"membersform:new:success\");\n return _this.confirm.notify('success');\n });\n };\n })(this))[\"catch\"]((function(_this) {\n return function(response) {\n _this.loading = false;\n if (response.data._error_message) {\n return _this.confirm.notify(\"error\", response.data._error_message);\n } else if (response.data.__all__) {\n return _this.confirm.notify(\"error\", response.data.__all__[0]);\n }\n };\n })(this));\n };\n\n return InviteMembersFormController;\n\n })();\n\n angular.module(\"taigaAdmin\").controller(\"InviteMembersFormCtrl\", InviteMembersFormController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var InviteMembersFormDirective;\n\n InviteMembersFormDirective = function() {\n var link;\n link = function(scope, el, attrs, ctrl) {\n ctrl._areRolesValidated();\n return ctrl._checkLimitMemberships();\n };\n return {\n scope: {},\n templateUrl: \"invite-members/invite-members-form/invite-members-form.html\",\n controller: \"InviteMembersFormCtrl\",\n controllerAs: \"vm\",\n bindToController: {\n contactsToInvite: '<',\n emailsToInvite: '=',\n onDisplayContactList: '&',\n onRemoveInvitedContact: '&',\n onRemoveInvitedEmail: '&',\n onSendInvites: '&'\n },\n link: link\n };\n };\n\n angular.module(\"taigaAdmin\").directive(\"tgInviteMembersForm\", InviteMembersFormDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AddMembersController, taiga;\n\n taiga = this.taiga;\n\n AddMembersController = (function() {\n AddMembersController.$inject = [\"tgUserService\", \"tgCurrentUserService\", \"tgProjectService\"];\n\n function AddMembersController(userService, currentUserService, projectService) {\n this.userService = userService;\n this.currentUserService = currentUserService;\n this.projectService = projectService;\n this.contactsToInvite = Immutable.List();\n this.emailsToInvite = Immutable.List();\n this.contacts = Immutable.List();\n this.displayContactList = false;\n }\n\n AddMembersController.prototype._getContacts = function() {\n var excludeProjectId, userId;\n userId = this.currentUserService.getUser().get(\"id\");\n excludeProjectId = this.projectService.project.get(\"id\");\n return this.userService.getContacts(userId, excludeProjectId).then((function(_this) {\n return function(contacts) {\n return _this.contacts = contacts;\n };\n })(this));\n };\n\n AddMembersController.prototype._filterContacts = function(invited) {\n return this.contacts = this.contacts.filter((function(_this) {\n return function(contact) {\n return contact.get('id') !== invited.get('id');\n };\n })(this));\n };\n\n AddMembersController.prototype.inviteSuggested = function(contact) {\n this.contactsToInvite = this.contactsToInvite.push(contact);\n this._filterContacts(contact);\n return this.displayContactList = true;\n };\n\n AddMembersController.prototype.removeContact = function(invited) {\n this.contactsToInvite = this.contactsToInvite.filter((function(_this) {\n return function(contact) {\n return contact.get('id') !== invited.id;\n };\n })(this));\n invited = Immutable.fromJS(invited);\n this.contacts = this.contacts.push(invited);\n return this.testEmptyContacts();\n };\n\n AddMembersController.prototype.inviteEmail = function(email) {\n var emailData;\n emailData = Immutable.Map({\n 'email': email\n });\n this.emailsToInvite = this.emailsToInvite.push(emailData);\n return this.displayContactList = true;\n };\n\n AddMembersController.prototype.removeEmail = function(invited) {\n this.emailsToInvite = this.emailsToInvite.filter((function(_this) {\n return function(email) {\n return email.get('email') !== invited.email;\n };\n })(this));\n return this.testEmptyContacts();\n };\n\n AddMembersController.prototype.testEmptyContacts = function() {\n if (this.emailsToInvite.size + this.contactsToInvite.size === 0) {\n return this.displayContactList = false;\n }\n };\n\n return AddMembersController;\n\n })();\n\n angular.module(\"taigaAdmin\").controller(\"AddMembersCtrl\", AddMembersController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var LightboxAddMembersDirective;\n\n LightboxAddMembersDirective = function(lightboxService) {\n var link;\n link = function(scope, el, attrs, ctrl) {\n lightboxService.open(el);\n return ctrl._getContacts();\n };\n return {\n scope: {},\n templateUrl: \"invite-members/lightbox-add-members.html\",\n controller: \"AddMembersCtrl\",\n controllerAs: \"vm\",\n link: link\n };\n };\n\n angular.module(\"taigaAdmin\").directive(\"tgLbAddMembers\", [\"lightboxService\", LightboxAddMembersDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var SuggestAddMembersController, taiga;\n\n taiga = this.taiga;\n\n SuggestAddMembersController = (function() {\n SuggestAddMembersController.$inject = [];\n\n function SuggestAddMembersController() {\n this.contactQuery = \"\";\n }\n\n SuggestAddMembersController.prototype.isEmail = function() {\n return taiga.isEmail(this.contactQuery);\n };\n\n SuggestAddMembersController.prototype.filterContacts = function() {\n return this.filteredContacts = this.contacts.filter((function(_this) {\n return function(contact) {\n return contact.get('full_name_display').toLowerCase().includes(_this.contactQuery.toLowerCase()) || contact.get('username').toLowerCase().includes(_this.contactQuery.toLowerCase());\n };\n })(this)).slice(0, 12);\n };\n\n SuggestAddMembersController.prototype.setInvited = function(contact) {\n return this.onInviteSuggested({\n 'contact': contact\n });\n };\n\n return SuggestAddMembersController;\n\n })();\n\n angular.module(\"taigaAdmin\").controller(\"SuggestAddMembersCtrl\", SuggestAddMembersController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var SuggestAddMembersDirective;\n\n SuggestAddMembersDirective = function(lightboxService) {\n var link;\n link = function(scope, el, attrs, ctrl) {\n return scope.$watch(\"vm.contacts\", (function(_this) {\n return function(contacts) {\n if (contacts) {\n return ctrl.filterContacts();\n }\n };\n })(this));\n };\n return {\n scope: {},\n templateUrl: \"invite-members/suggest-add-members/suggest-add-members.html\",\n controller: \"SuggestAddMembersCtrl\",\n controllerAs: \"vm\",\n bindToController: {\n contacts: '=',\n onInviteSuggested: '&',\n onInviteEmail: '&'\n },\n link: link\n };\n };\n\n angular.module(\"taigaAdmin\").directive(\"tgSuggestAddMembers\", [\"lightboxService\", SuggestAddMembersDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DropdownNotificationsDirective, timeout;\n\n timeout = this.taiga.timeout;\n\n DropdownNotificationsDirective = function($rootScope, notificationsService, currentUserService) {\n var directive, link;\n link = function($scope, $el, $attrs, $ctrl) {\n $scope.notificationsList = [];\n $scope.loading = false;\n $scope.$on(\"notifications:loaded\", function(event, total) {\n $scope.loading = false;\n if ($scope.total !== void 0 && total > $scope.total) {\n $scope.newEvent = true;\n timeout(100, function() {\n $scope.total = total;\n return $scope.$apply();\n });\n return timeout(2000, function() {\n return $scope.newEvent = false;\n });\n } else {\n return $scope.total = total;\n }\n });\n $scope.$on(\"notifications:loading\", function() {\n return $scope.loading = true;\n });\n return $scope.setAllAsRead = function() {\n return notificationsService.setNotificationsAsRead().then(function() {\n return $rootScope.$emit(\"notifications:dismiss-all\");\n });\n };\n };\n directive = {\n templateUrl: \"navigation-bar/dropdown-notifications/dropdown-notifications.html\",\n scope: {\n active: \"=\"\n },\n link: link\n };\n return directive;\n };\n\n angular.module(\"taigaNavigationBar\").directive(\"tgDropdownNotifications\", [\"$rootScope\", \"tgNotificationsService\", \"tgCurrentUserService\", DropdownNotificationsDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DropdownProjectListDirective;\n\n DropdownProjectListDirective = function(rootScope, currentUserService, projectsService, projectService) {\n var directive, link;\n link = function(scope, el, attrs, ctrl) {\n var updateLinks;\n scope.vm = {};\n taiga.defineImmutableProperty(scope.vm, \"projects\", function() {\n return currentUserService.projects.get(\"recents\");\n });\n taiga.defineImmutableProperty(scope.vm, \"currentProject\", function() {\n if (projectService.project) {\n return projectService.project.get('id');\n }\n return null;\n });\n scope.vm.newProject = function() {\n return projectsService.newProject();\n };\n updateLinks = function() {\n return el.find(\".dropdown-project-list ul li a\").data(\"fullUrl\", \"\");\n };\n return rootScope.$on(\"dropdown-project-list:updated\", updateLinks);\n };\n directive = {\n templateUrl: \"navigation-bar/dropdown-project-list/dropdown-project-list.html\",\n scope: {\n active: \"=\"\n },\n link: link\n };\n return directive;\n };\n\n DropdownProjectListDirective.$inject = [\"$rootScope\", \"tgCurrentUserService\", \"tgProjectsService\", \"tgProjectService\"];\n\n angular.module(\"taigaNavigationBar\").directive(\"tgDropdownProjectList\", DropdownProjectListDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DropdownUserDirective;\n\n DropdownUserDirective = function(authService, configService, locationService, navUrlsService, $rootScope) {\n var directive, link;\n link = function(scope, el, attrs, ctrl) {\n scope.vm = {};\n scope.vm.isFeedbackEnabled = configService.get(\"feedbackEnabled\");\n scope.vm.customSupportUrl = configService.get(\"supportUrl\");\n taiga.defineImmutableProperty(scope.vm, \"user\", function() {\n return authService.userData;\n });\n scope.vm.logout = function() {\n authService.logout();\n locationService.url(navUrlsService.resolve(\"discover\"));\n return locationService.search({});\n };\n return scope.vm.userSettingsPlugins = _.filter($rootScope.userSettingsPlugins, {\n userMenu: true\n });\n };\n directive = {\n templateUrl: \"navigation-bar/dropdown-user/dropdown-user.html\",\n scope: {},\n link: link\n };\n return directive;\n };\n\n DropdownUserDirective.$inject = [\"$tgAuth\", \"$tgConfig\", \"$tgLocation\", \"$tgNavUrls\", \"$rootScope\"];\n\n angular.module(\"taigaNavigationBar\").directive(\"tgDropdownUser\", DropdownUserDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var NavigationBarDirective;\n\n NavigationBarDirective = function(currentUserService, navigationBarService, locationService, navUrlsService, config, feedbackService) {\n var directive, link;\n link = function(scope, el, attrs, ctrl) {\n var attempts, loadUserPilot, userPilotInterval;\n scope.vm = {};\n taiga.defineImmutableProperty(scope.vm, \"projects\", function() {\n return currentUserService.projects.get(\"recents\");\n });\n taiga.defineImmutableProperty(scope.vm, \"isAuthenticated\", function() {\n return currentUserService.isAuthenticated();\n });\n taiga.defineImmutableProperty(scope.vm, \"isEnabledHeader\", function() {\n return navigationBarService.isEnabledHeader();\n });\n scope.vm.publicRegisterEnabled = config.get(\"publicRegisterEnabled\");\n scope.vm.customSupportUrl = config.get(\"supportUrl\");\n scope.vm.isFeedbackEnabled = config.get(\"feedbackEnabled\");\n loadUserPilot = (function(_this) {\n return function() {\n var userPilotIframe;\n userPilotIframe = document.querySelector('#userpilot-resource-centre-frame');\n if (userPilotIframe) {\n return scope.$applyAsync(function() {\n var userPilotIframeDocument, widget;\n userPilotIframeDocument = userPilotIframe.contentWindow.document.body;\n widget = userPilotIframeDocument.querySelector('#widget-title');\n if (widget) {\n scope.vm.userPilotTitle = widget.innerText;\n return clearInterval(userPilotInterval);\n }\n });\n }\n };\n })(this);\n attempts = 10;\n if (window.TAIGA_USER_PILOT_TOKEN) {\n scope.vm.userPilotTitle = 'Help center';\n scope.vm.userpilotEnabled = true;\n userPilotInterval = setInterval((function(_this) {\n return function() {\n loadUserPilot();\n attempts--;\n if (!attempts) {\n return clearInterval(userPilotInterval);\n }\n };\n })(this), 1000);\n }\n scope.vm.login = function() {\n var nextUrl;\n nextUrl = encodeURIComponent(locationService.url());\n locationService.url(navUrlsService.resolve(\"login\"));\n return locationService.search({\n next: nextUrl\n });\n };\n scope.vm.sendFeedback = function() {\n return feedbackService.sendFeedback();\n };\n window._taigaSendFeedback = scope.vm.sendFeedback;\n return scope.$on(\"$routeChangeSuccess\", function() {\n var path;\n scope.vm.active = null;\n path = locationService.path();\n switch (path) {\n case \"/\":\n return scope.vm.active = 'dashboard';\n case \"/discover\":\n return scope.vm.active = 'discover';\n case \"/notifications\":\n return scope.vm.active = 'notifications';\n case \"/projects/\":\n return scope.vm.active = 'projects';\n default:\n if (path.startsWith('/project')) {\n return scope.vm.active = 'project';\n }\n }\n });\n };\n directive = {\n templateUrl: \"navigation-bar/navigation-bar.html\",\n scope: {},\n link: link\n };\n return directive;\n };\n\n NavigationBarDirective.$inject = [\"tgCurrentUserService\", \"tgNavigationBarService\", \"$tgLocation\", \"$tgNavUrls\", \"$tgConfig\", \"tgFeedbackService\"];\n\n angular.module(\"taigaNavigationBar\").directive(\"tgNavigationBar\", NavigationBarDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var NavigationBarService,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NavigationBarService = (function(superClass) {\n extend(NavigationBarService, superClass);\n\n function NavigationBarService() {\n this.disableHeader();\n }\n\n NavigationBarService.prototype.enableHeader = function() {\n return this.enabledHeader = true;\n };\n\n NavigationBarService.prototype.disableHeader = function() {\n return this.enabledHeader = false;\n };\n\n NavigationBarService.prototype.isEnabledHeader = function() {\n return this.enabledHeader;\n };\n\n return NavigationBarService;\n\n })(taiga.Service);\n\n angular.module(\"taigaNavigationBar\").service(\"tgNavigationBarService\", NavigationBarService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var NotificationsListDirective;\n\n NotificationsListDirective = function() {\n return {\n templateUrl: \"notifications/notifications-list/notifications-list.html\",\n controller: \"Notifications\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n infiniteScrollContainer: \"@\",\n infiniteScrollDistance: \"=\",\n infiniteScrollDisabled: \"=\",\n onlyUnread: \"=onlyUnread\"\n }\n };\n };\n\n angular.module(\"taigaNotifications\").directive(\"tgNotificationsList\", NotificationsListDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var NotificationsController, debounceLeading, mixOf, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n debounceLeading = this.taiga.debounceLeading;\n\n NotificationsController = (function(superClass) {\n extend(NotificationsController, superClass);\n\n NotificationsController.$inject = [\"$rootScope\", \"$scope\", \"tgNotificationsService\", \"tgCurrentUserService\", \"$tgEvents\", \"$location\", \"$window\"];\n\n function NotificationsController(rootScope, scope, notificationsService, currentUserService, events, location, window) {\n this.rootScope = rootScope;\n this.scope = scope;\n this.notificationsService = notificationsService;\n this.currentUserService = currentUserService;\n this.events = events;\n this.location = location;\n this.window = window;\n this.total = 0;\n this.user = this.currentUserService.getUser();\n this.scrollDisabled = false;\n this.initList();\n this.loadNotifications();\n this.rootScope.$on(\"notifications:dismiss\", (function(_this) {\n return function(event) {\n if (_this.onlyUnread) {\n return _this.reloadList();\n }\n };\n })(this));\n this.rootScope.$on(\"notifications:new\", (function(_this) {\n return function(event) {\n return _this.reloadList();\n };\n })(this));\n this.rootScope.$on(\"notifications:dismiss-all\", (function(_this) {\n return function(event) {\n return _this.reloadList();\n };\n })(this));\n }\n\n NotificationsController.prototype.initList = function() {\n this.notificationsList = Immutable.List();\n if (this.user) {\n this.list = this.notificationsService.getNotificationsList(this.user.get(\"id\"), this.onlyUnread != null);\n }\n return this.loading = this.list == null;\n };\n\n NotificationsController.prototype.reloadList = function() {\n this.initList();\n return this.loadNotifications();\n };\n\n NotificationsController.prototype.loadNotifications = function() {\n this.scrollDisabled = true;\n this.loading = true;\n this.scope.$emit(\"notifications:loading\");\n return this.list.next().then((function(_this) {\n return function(response) {\n _this.notificationsList = _this.notificationsList.concat(response.get(\"items\"));\n if (!_this.infiniteScrollDisabled && response.get(\"next\")) {\n _this.scrollDisabled = false;\n }\n _this.total = response.get(\"total\");\n _this.scope.$emit(\"notifications:loaded\", _this.total);\n _this.loading = false;\n return _this.notificationsList;\n };\n })(this));\n };\n\n NotificationsController.prototype.setAsRead = function(notification, url) {\n return this.notificationsService.setNotificationAsRead(notification.get(\"id\")).then((function(_this) {\n return function() {\n if (_this.location.$$url === url) {\n _this.window.location.reload();\n } else {\n _this.location.path(url);\n }\n return _this.rootScope.$broadcast(\"notifications:dismiss\");\n };\n })(this));\n };\n\n NotificationsController.prototype.setAllAsRead = function() {\n return this.notificationsService.setNotificationsAsRead().then((function(_this) {\n return function() {\n return _this.rootScope.$broadcast(\"notifications:dismiss-all\");\n };\n })(this));\n };\n\n return NotificationsController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n angular.module(\"taigaNotifications\").controller(\"Notifications\", NotificationsController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var NotificationsService, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n NotificationsService = (function(superClass) {\n var _notificationTypes, _params;\n\n extend(NotificationsService, superClass);\n\n NotificationsService.$inject = [\"tgResources\", \"tgUserTimelinePaginationSequenceService\", \"$translate\", \"$tgNavUrls\", \"$tgSections\"];\n\n _notificationTypes = [\n {\n check: function(notification) {\n return notification.get('event_type') === 1;\n },\n key: 'EVENTS.ASSIGNED_YOU',\n translate_params: ['username', 'obj_name']\n }, {\n check: function(notification) {\n return notification.get('event_type') === 2;\n },\n key: 'EVENTS.MENTIONED_YOU',\n translate_params: ['username', 'obj_name']\n }, {\n check: function(notification) {\n return notification.get('event_type') === 3;\n },\n key: 'EVENTS.ADDED_YOU_AS_WATCHER',\n translate_params: ['username', 'obj_name']\n }, {\n check: function(notification) {\n return notification.get('event_type') === 4;\n },\n key: 'EVENTS.ADDED_YOU_AS_MEMBER',\n translate_params: ['username']\n }, {\n check: function(notification) {\n return notification.get('event_type') === 5;\n },\n key: 'EVENTS.COMMENTED',\n translate_params: ['username', 'obj_name']\n }, {\n check: function(notification) {\n return notification.get('event_type') === 6;\n },\n key: 'EVENTS.MENTIONED_YOU_IN_COMMENT',\n translate_params: ['username', 'obj_name']\n }\n ];\n\n _params = {\n username: function(notification) {\n var title_attr, url, user;\n user = notification.getIn(['data', 'user']);\n if (user.get('is_profile_visible')) {\n title_attr = this.translate.instant('COMMON.SEE_USER_PROFILE', {\n username: user.get('username')\n });\n url = this.navUrls.resolve('user-profile', {\n username: notification.getIn(['data', 'user', 'username'])\n });\n return this._getLink(notification, url, user.get('name'), 'user-link', title_attr);\n } else {\n return this._getUsernameSpan(user.get('name'));\n }\n },\n project_name: function(notification) {\n var url;\n url = this.navUrls.resolve('project', {\n project: notification.getIn(['data', 'project', 'slug'])\n });\n return this._getLink(notification, url, notification.getIn([\"data\", \"project\", \"name\"]), 'project-link');\n },\n obj_name: function(notification) {\n var obj, text, url;\n obj = this._getNotificationObject(notification);\n url = this._getDetailObjUrl(notification, obj.get('content_type'));\n text = '#' + obj.get('ref') + ' ' + obj.get('subject');\n return this._getLink(notification, url, text, 'object-link');\n }\n };\n\n function NotificationsService(rs, userTimelinePaginationSequenceService, translate, navUrls, tgSections) {\n this.rs = rs;\n this.userTimelinePaginationSequenceService = userTimelinePaginationSequenceService;\n this.translate = translate;\n this.navUrls = navUrls;\n this.tgSections = tgSections;\n }\n\n NotificationsService.prototype.getNotificationsList = function(userId, onlyUnread) {\n var config, total;\n total = 0;\n config = {};\n config.fetch = (function(_this) {\n return function(page) {\n return _this.rs.users.getNotifications(userId, page, onlyUnread).then(function(response) {\n return response;\n });\n };\n })(this);\n config.map = (function(_this) {\n return function(obj) {\n return _this._addNotificationAttributes(obj);\n };\n })(this);\n return this.userTimelinePaginationSequenceService.generate(config);\n };\n\n NotificationsService.prototype.setNotificationAsRead = function(notificationId) {\n return this.rs.users.setNotificationAsRead(notificationId);\n };\n\n NotificationsService.prototype.setNotificationsAsRead = function() {\n return this.rs.users.setNotificationsAsRead();\n };\n\n NotificationsService.prototype._getNotificationObject = function(notification) {\n if (notification.get('data').get('obj')) {\n return notification.get('data').get('obj');\n }\n };\n\n NotificationsService.prototype._getType = function(notification) {\n return _.find(_notificationTypes, function(obj) {\n return obj.check(notification);\n });\n };\n\n NotificationsService.prototype._addNotificationAttributes = function(notification) {\n var event_type, projectSectionPath, projectSlug, projectUrl, title, type;\n event_type = notification.get('event_type');\n type = this._getType(notification);\n title = this._getTitle(notification, event_type, type);\n notification = notification.set('title_html', title);\n projectSlug = notification.getIn(['data', 'project', 'slug']);\n projectSectionPath = this.tgSections.getPath(projectSlug);\n projectUrl = this.navUrls.resolve(\"project-\" + projectSectionPath, {\n project: projectSlug\n });\n notification = notification.set('projectUrl', projectUrl);\n notification = notification.set('obj', this._getNotificationObject(notification));\n return notification;\n };\n\n NotificationsService.prototype._translateTitleParams = function(param, notification, event) {\n return _params[param].call(this, notification, event);\n };\n\n NotificationsService.prototype._getDetailObjUrl = function(notification, contentType) {\n var url, urlMapping;\n urlMapping = {\n \"issue\": \"project-issues-detail\",\n \"task\": \"project-tasks-detail\",\n \"userstory\": \"project-userstories-detail\"\n };\n url = this.navUrls.resolve(urlMapping[contentType], {\n project: notification.getIn(['data', 'project', 'slug']),\n ref: notification.getIn(['data', 'obj', 'ref'])\n });\n return url;\n };\n\n NotificationsService.prototype._getLink = function(notification, url, text, css, title) {\n var span;\n title = title || text;\n span = $('').attr('ng-non-bindable', true).text(text);\n return $('').attr('title', title).attr('class', css).attr('ng-click', \"vm.setAsRead(notification, \\\"\" + url + \"\\\")\").append(span).prop('outerHTML');\n };\n\n NotificationsService.prototype._getUsernameSpan = function(text) {\n var title;\n title = title || text;\n return $('').addClass('username').text(text).prop('outerHTML');\n };\n\n NotificationsService.prototype._getParams = function(notification, event_type, notification_type) {\n var params;\n params = {};\n notification_type.translate_params.forEach((function(_this) {\n return function(param) {\n return params[param] = _this._translateTitleParams(param, notification, event_type);\n };\n })(this));\n return params;\n };\n\n NotificationsService.prototype._getTitle = function(notification, event_type, notification_type) {\n var params, paramsKeys, translation;\n params = this._getParams(notification, event_type, notification_type);\n paramsKeys = {};\n Object.keys(params).forEach(function(key) {\n return paramsKeys[key] = '{{' + key + '}}';\n });\n translation = this.translate.instant(notification_type.key, paramsKeys);\n Object.keys(params).forEach(function(key) {\n var find;\n find = '{{' + key + '}}';\n return translation = translation.replace(new RegExp(find, 'g'), params[key]);\n });\n return translation;\n };\n\n return NotificationsService;\n\n })(taiga.Service);\n\n angular.module(\"taigaNotifications\").service(\"tgNotificationsService\", NotificationsService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProfileBarController;\n\n ProfileBarController = (function() {\n ProfileBarController.$inject = [\"tgUserService\"];\n\n function ProfileBarController(userService) {\n this.userService = userService;\n this.loadStats();\n }\n\n ProfileBarController.prototype.loadStats = function() {\n return this.userService.getStats(this.user.get(\"id\")).then((function(_this) {\n return function(stats) {\n return _this.stats = stats;\n };\n })(this));\n };\n\n return ProfileBarController;\n\n })();\n\n angular.module(\"taigaProfile\").controller(\"ProfileBar\", ProfileBarController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProfileBarDirective;\n\n ProfileBarDirective = function() {\n return {\n templateUrl: \"profile/profile-bar/profile-bar.html\",\n controller: \"ProfileBar\",\n controllerAs: \"vm\",\n scope: {\n user: \"=user\",\n isCurrentUser: \"=iscurrentuser\"\n },\n bindToController: true\n };\n };\n\n angular.module(\"taigaProfile\").directive(\"tgProfileBar\", ProfileBarDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProfileContactsController;\n\n ProfileContactsController = (function() {\n ProfileContactsController.$inject = [\"tgUserService\", \"tgCurrentUserService\"];\n\n function ProfileContactsController(userService, currentUserService) {\n this.userService = userService;\n this.currentUserService = currentUserService;\n this.currentUser = this.currentUserService.getUser();\n this.isCurrentUser = false;\n if (this.currentUser && this.currentUser.get(\"id\") === this.user.get(\"id\")) {\n this.isCurrentUser = true;\n }\n }\n\n ProfileContactsController.prototype.loadContacts = function() {\n return this.userService.getContacts(this.user.get(\"id\")).then((function(_this) {\n return function(contacts) {\n return _this.contacts = contacts;\n };\n })(this));\n };\n\n return ProfileContactsController;\n\n })();\n\n angular.module(\"taigaProfile\").controller(\"ProfileContacts\", ProfileContactsController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProfileContactsDirective;\n\n ProfileContactsDirective = function() {\n var link;\n link = function(scope, elm, attrs, ctrl) {\n return ctrl.loadContacts();\n };\n return {\n templateUrl: \"profile/profile-contacts/profile-contacts.html\",\n scope: {\n user: \"=\"\n },\n controllerAs: \"vm\",\n controller: \"ProfileContacts\",\n link: link,\n bindToController: true\n };\n };\n\n angular.module(\"taigaProfile\").directive(\"tgProfileContacts\", ProfileContactsDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var FavItemDirective;\n\n FavItemDirective = function() {\n var link, templateUrl;\n link = function(scope, el, attrs, ctrl) {\n return scope.vm = {\n item: scope.item\n };\n };\n templateUrl = function(el, attrs) {\n if (attrs.itemType === \"project\") {\n return \"profile/profile-favs/items/project.html\";\n } else {\n return \"profile/profile-favs/items/ticket.html\";\n }\n };\n return {\n scope: {\n \"item\": \"=tgFavItem\"\n },\n link: link,\n templateUrl: templateUrl\n };\n };\n\n angular.module(\"taigaProfile\").directive(\"tgFavItem\", FavItemDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var FavsBaseController, ProfileLikedController, ProfileVotedController, ProfileWatchedController, debounceLeading,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n debounceLeading = this.taiga.debounceLeading;\n\n FavsBaseController = (function() {\n function FavsBaseController() {\n this._init();\n }\n\n FavsBaseController.prototype._init = function() {\n this.enableFilterByAll = true;\n this.enableFilterByProjects = true;\n this.enableFilterByEpics = true;\n this.enableFilterByUserStories = true;\n this.enableFilterByTasks = true;\n this.enableFilterByIssues = true;\n this.enableFilterByTextQuery = true;\n this._resetList();\n this.q = null;\n return this.type = null;\n };\n\n FavsBaseController.prototype._resetList = function() {\n this.items = Immutable.List();\n this.scrollDisabled = false;\n return this._page = 1;\n };\n\n FavsBaseController.prototype._enableLoadingSpinner = function() {\n return this.isLoading = true;\n };\n\n FavsBaseController.prototype._disableLoadingSpinner = function() {\n return this.isLoading = false;\n };\n\n FavsBaseController.prototype._enableScroll = function() {\n return this.scrollDisabled = false;\n };\n\n FavsBaseController.prototype._disableScroll = function() {\n return this.scrollDisabled = true;\n };\n\n FavsBaseController.prototype._checkIfHasMorePages = function(hasNext) {\n if (hasNext) {\n this._page += 1;\n return this._enableScroll();\n } else {\n return this._disableScroll();\n }\n };\n\n FavsBaseController.prototype._checkIfHasNoResults = function() {\n return this.hasNoResults = this.items.size === 0;\n };\n\n FavsBaseController.prototype.loadItems = function() {\n this._enableLoadingSpinner();\n this._disableScroll();\n return this._getItems(this.user.get(\"id\"), this._page, this.type, this.q).then((function(_this) {\n return function(response) {\n _this.items = _this.items.concat(response.get(\"data\"));\n _this._checkIfHasMorePages(response.get(\"next\"));\n _this._checkIfHasNoResults();\n _this._disableLoadingSpinner();\n return _this.items;\n };\n })(this))[\"catch\"]((function(_this) {\n return function() {\n _this._disableLoadingSpinner();\n return _this.items;\n };\n })(this));\n };\n\n FavsBaseController.prototype.filterByTextQuery = debounceLeading(500, function() {\n this._resetList();\n return this.loadItems();\n });\n\n FavsBaseController.prototype.showAll = function() {\n if (this.type !== null) {\n this.type = null;\n this._resetList();\n return this.loadItems();\n }\n };\n\n FavsBaseController.prototype.showProjectsOnly = function() {\n if (this.type !== \"project\") {\n this.type = \"project\";\n this._resetList();\n return this.loadItems();\n }\n };\n\n FavsBaseController.prototype.showEpicsOnly = function() {\n if (this.type !== \"epic\") {\n this.type = \"epic\";\n this._resetList();\n return this.loadItems();\n }\n };\n\n FavsBaseController.prototype.showUserStoriesOnly = function() {\n if (this.type !== \"userstory\") {\n this.type = \"userstory\";\n this._resetList();\n return this.loadItems();\n }\n };\n\n FavsBaseController.prototype.showTasksOnly = function() {\n if (this.type !== \"task\") {\n this.type = \"task\";\n this._resetList();\n return this.loadItems();\n }\n };\n\n FavsBaseController.prototype.showIssuesOnly = function() {\n if (this.type !== \"issue\") {\n this.type = \"issue\";\n this._resetList();\n return this.loadItems();\n }\n };\n\n return FavsBaseController;\n\n })();\n\n ProfileLikedController = (function(superClass) {\n extend(ProfileLikedController, superClass);\n\n ProfileLikedController.$inject = [\"tgUserService\"];\n\n function ProfileLikedController(userService) {\n this.userService = userService;\n ProfileLikedController.__super__.constructor.call(this);\n this.tabName = 'likes';\n this.enableFilterByAll = false;\n this.enableFilterByProjects = false;\n this.enableFilterByEpics = false;\n this.enableFilterByUserStories = false;\n this.enableFilterByTasks = false;\n this.enableFilterByIssues = false;\n this.enableFilterByTextQuery = true;\n this._getItems = this.userService.getLiked;\n }\n\n return ProfileLikedController;\n\n })(FavsBaseController);\n\n angular.module(\"taigaProfile\").controller(\"ProfileLiked\", ProfileLikedController);\n\n ProfileVotedController = (function(superClass) {\n extend(ProfileVotedController, superClass);\n\n ProfileVotedController.$inject = [\"tgUserService\"];\n\n function ProfileVotedController(userService) {\n this.userService = userService;\n ProfileVotedController.__super__.constructor.call(this);\n this.tabName = 'upvotes';\n this.enableFilterByAll = true;\n this.enableFilterByProjects = false;\n this.enableFilterByEpics = true;\n this.enableFilterByUserStories = true;\n this.enableFilterByTasks = true;\n this.enableFilterByIssues = true;\n this.enableFilterByTextQuery = true;\n this._getItems = this.userService.getVoted;\n }\n\n return ProfileVotedController;\n\n })(FavsBaseController);\n\n angular.module(\"taigaProfile\").controller(\"ProfileVoted\", ProfileVotedController);\n\n ProfileWatchedController = (function(superClass) {\n extend(ProfileWatchedController, superClass);\n\n ProfileWatchedController.$inject = [\"tgUserService\"];\n\n function ProfileWatchedController(userService) {\n this.userService = userService;\n ProfileWatchedController.__super__.constructor.call(this);\n this.tabName = 'watchers';\n this._getItems = this.userService.getWatched;\n }\n\n return ProfileWatchedController;\n\n })(FavsBaseController);\n\n angular.module(\"taigaProfile\").controller(\"ProfileWatched\", ProfileWatchedController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProfileLikedDirective, ProfileVotedDirective, ProfileWatchedDirective, base;\n\n base = {\n scope: {},\n bindToController: {\n user: \"=\",\n type: \"@\",\n q: \"@\",\n scrollDisabled: \"@\",\n isLoading: \"@\",\n hasNoResults: \"@\"\n },\n controller: null,\n controllerAs: \"vm\",\n templateUrl: \"profile/profile-favs/profile-favs.html\"\n };\n\n ProfileLikedDirective = function() {\n return _.extend({}, base, {\n controller: \"ProfileLiked\"\n });\n };\n\n angular.module(\"taigaProfile\").directive(\"tgProfileLiked\", ProfileLikedDirective);\n\n ProfileVotedDirective = function() {\n return _.extend({}, base, {\n controller: \"ProfileVoted\"\n });\n };\n\n angular.module(\"taigaProfile\").directive(\"tgProfileVoted\", ProfileVotedDirective);\n\n ProfileWatchedDirective = function() {\n return _.extend({}, base, {\n controller: \"ProfileWatched\"\n });\n };\n\n angular.module(\"taigaProfile\").directive(\"tgProfileWatched\", ProfileWatchedDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProfileHints;\n\n ProfileHints = (function() {\n ProfileHints.prototype.HINTS = [\n {\n url: \"https://community.taiga.io/t/import-export-taiga-projects/168\"\n }, {\n url: \"https://community.taiga.io/t/customisation-for-your-projects/127#tier-4-custom-fields-and-due-dates-5\"\n }, {}, {}\n ];\n\n function ProfileHints(translate) {\n var hintKey;\n this.translate = translate;\n hintKey = Math.floor(Math.random() * this.HINTS.length) + 1;\n this.hint = this.HINTS[hintKey - 1];\n this.hint.linkText = this.hint.linkText || 'HINTS.LINK';\n this.hint.title = this.translate.instant(\"HINTS.HINT\" + hintKey + \"_TITLE\");\n this.hint.text = this.translate.instant(\"HINTS.HINT\" + hintKey + \"_TEXT\");\n }\n\n return ProfileHints;\n\n })();\n\n ProfileHints.$inject = [\"$translate\"];\n\n angular.module(\"taigaProfile\").controller(\"ProfileHints\", ProfileHints);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProfileHints;\n\n ProfileHints = function($translate) {\n return {\n scope: {},\n controller: \"ProfileHints\",\n controllerAs: \"vm\",\n templateUrl: \"profile/profile-hints/profile-hints.html\"\n };\n };\n\n ProfileHints.$inject = [\"$translate\"];\n\n angular.module(\"taigaProfile\").directive(\"tgProfileHints\", ProfileHints);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProfileProjectsController;\n\n ProfileProjectsController = (function() {\n ProfileProjectsController.$inject = [\"tgProjectsService\", \"tgUserService\"];\n\n function ProfileProjectsController(projectsService, userService) {\n this.projectsService = projectsService;\n this.userService = userService;\n }\n\n ProfileProjectsController.prototype.loadProjects = function() {\n return this.projectsService.getProjectsByUserId(this.user.get(\"id\")).then((function(_this) {\n return function(projects) {\n return _this.userService.attachUserContactsToProjects(_this.user.get(\"id\"), projects);\n };\n })(this)).then((function(_this) {\n return function(projects) {\n return _this.projects = projects;\n };\n })(this));\n };\n\n return ProfileProjectsController;\n\n })();\n\n angular.module(\"taigaProfile\").controller(\"ProfileProjects\", ProfileProjectsController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProfileProjectsDirective;\n\n ProfileProjectsDirective = function() {\n var link;\n link = function(scope, elm, attr, ctrl) {\n return ctrl.loadProjects();\n };\n return {\n templateUrl: \"profile/profile-projects/profile-projects.html\",\n scope: {\n user: \"=\"\n },\n link: link,\n bindToController: true,\n controllerAs: \"vm\",\n controller: \"ProfileProjects\"\n };\n };\n\n angular.module(\"taigaProfile\").directive(\"tgProfileProjects\", ProfileProjectsDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProfileTabDirective;\n\n ProfileTabDirective = function() {\n var link;\n link = function(scope, element, attrs, ctrl, transclude) {\n scope.tab = {};\n attrs.$observe(\"tgProfileTab\", function(name) {\n return scope.tab.name = name;\n });\n attrs.$observe(\"tabTitle\", function(title) {\n return scope.tab.title = title;\n });\n scope.tab.icon = attrs.tabIcon;\n scope.tab.active = !!attrs.tabActive;\n if (scope.$eval(attrs.tabDisabled) !== true) {\n return ctrl.addTab(scope.tab);\n }\n };\n return {\n templateUrl: \"profile/profile-tab/profile-tab.html\",\n scope: {},\n require: \"^tgProfileTabs\",\n link: link,\n transclude: true\n };\n };\n\n angular.module(\"taigaProfile\").directive(\"tgProfileTab\", ProfileTabDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProfileTabsController;\n\n ProfileTabsController = (function() {\n function ProfileTabsController() {\n this.tabs = [];\n }\n\n ProfileTabsController.prototype.addTab = function(tab) {\n return this.tabs.push(tab);\n };\n\n ProfileTabsController.prototype.toggleTab = function(tab) {\n _.map(this.tabs, function(tab) {\n return tab.active = false;\n });\n return tab.active = true;\n };\n\n return ProfileTabsController;\n\n })();\n\n angular.module(\"taigaProfile\").controller(\"ProfileTabs\", ProfileTabsController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProfileTabsDirective;\n\n ProfileTabsDirective = function() {\n return {\n scope: {},\n controller: \"ProfileTabs\",\n controllerAs: \"vm\",\n templateUrl: \"profile/profile-tabs/profile-tabs.html\",\n transclude: true\n };\n };\n\n angular.module(\"taigaProfile\").directive(\"tgProfileTabs\", ProfileTabsDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProfileController;\n\n ProfileController = (function() {\n ProfileController.$inject = [\"tgAppMetaService\", \"tgCurrentUserService\", \"$routeParams\", \"tgUserService\", \"tgXhrErrorService\", \"$translate\"];\n\n function ProfileController(appMetaService, currentUserService, routeParams, userService, xhrError, translate) {\n this.appMetaService = appMetaService;\n this.currentUserService = currentUserService;\n this.routeParams = routeParams;\n this.userService = userService;\n this.xhrError = xhrError;\n this.translate = translate;\n this.isCurrentUser = false;\n if (this.routeParams.slug) {\n this.userService.getUserByUserName(this.routeParams.slug).then((function(_this) {\n return function(user) {\n if (!user.get('is_active')) {\n return _this.xhrError.notFound();\n } else {\n _this.user = user;\n _this.isCurrentUser = false;\n _this._setMeta(_this.user);\n return user;\n }\n };\n })(this))[\"catch\"]((function(_this) {\n return function(xhr) {\n return _this.xhrError.response(xhr);\n };\n })(this));\n } else {\n this.user = this.currentUserService.getUser();\n this.isCurrentUser = true;\n this._setMeta(this.user);\n }\n }\n\n ProfileController.prototype._setMeta = function(user) {\n var ctx, description, title;\n ctx = {\n userFullName: user.get(\"full_name_display\"),\n userUsername: user.get(\"username\")\n };\n title = this.translate.instant(\"USER.PROFILE.PAGE_TITLE\", ctx);\n description = user.get(\"bio\");\n return this.appMetaService.setAll(title, description);\n };\n\n return ProfileController;\n\n })();\n\n angular.module(\"taigaProfile\").controller(\"Profile\", ProfileController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var BlockedProjectExplanationDirective;\n\n BlockedProjectExplanationDirective = function() {\n return {\n templateUrl: \"projects/project/blocked-project-explanation.html\"\n };\n };\n\n angular.module(\"taigaProjects\").directive(\"tgBlockedProjectExplanation\", BlockedProjectExplanationDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ContactProjectButtonController;\n\n ContactProjectButtonController = (function() {\n ContactProjectButtonController.$inject = ['tgLightboxFactory'];\n\n function ContactProjectButtonController(lightboxFactory) {\n this.lightboxFactory = lightboxFactory;\n }\n\n ContactProjectButtonController.prototype.launchContactForm = function() {\n return this.lightboxFactory.create('tg-lb-contact-project', {\n \"class\": \"lightbox lightbox-contact-project e2e-lightbox-contact-project\",\n \"project\": \"project\"\n }, {\n \"project\": this.project\n });\n };\n\n return ContactProjectButtonController;\n\n })();\n\n angular.module(\"taigaProjects\").controller(\"ContactProjectButtonCtrl\", ContactProjectButtonController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ContactProjectButtonDirective;\n\n ContactProjectButtonDirective = function() {\n return {\n scope: {},\n controller: \"ContactProjectButtonCtrl\",\n bindToController: {\n project: '=',\n layout: '@'\n },\n controllerAs: \"vm\",\n templateUrl: \"projects/components/contact-project-button/contact-project-button.html\"\n };\n };\n\n angular.module(\"taigaProjects\").directive(\"tgContactProjectButton\", ContactProjectButtonDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ContactProjectLbController;\n\n ContactProjectLbController = (function() {\n ContactProjectLbController.$inject = [\"lightboxService\", \"tgResources\", \"$tgConfirm\"];\n\n function ContactProjectLbController(lightboxService, rs, confirm) {\n this.lightboxService = lightboxService;\n this.rs = rs;\n this.confirm = confirm;\n this.contact = {};\n }\n\n ContactProjectLbController.prototype.contactProject = function() {\n var message, project, promise;\n project = this.project.get('id');\n message = this.contact.message;\n promise = this.rs.projects.contactProject(project, message);\n this.sendingFeedback = true;\n return promise.then((function(_this) {\n return function() {\n _this.lightboxService.closeAll();\n _this.sendingFeedback = false;\n return _this.confirm.notify(\"success\");\n };\n })(this));\n };\n\n return ContactProjectLbController;\n\n })();\n\n angular.module(\"taigaProjects\").controller(\"ContactProjectLbCtrl\", ContactProjectLbController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ContactProjectLbDirective;\n\n ContactProjectLbDirective = function(lightboxService) {\n var link;\n this.inject = ['lightboxService'];\n link = function(scope, el) {\n return lightboxService.open(el);\n };\n return {\n controller: \"ContactProjectLbCtrl\",\n bindToController: {\n project: '='\n },\n controllerAs: \"vm\",\n templateUrl: \"projects/components/lb-contact-project/lb-contact-project.html\",\n link: link\n };\n };\n\n angular.module(\"taigaProjects\").directive(\"tgLbContactProject\", [\"lightboxService\", ContactProjectLbDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var LikeProjectButtonController;\n\n LikeProjectButtonController = (function() {\n LikeProjectButtonController.$inject = [\"$tgConfirm\", \"tgLikeProjectButtonService\"];\n\n function LikeProjectButtonController(confirm, likeButtonService) {\n this.confirm = confirm;\n this.likeButtonService = likeButtonService;\n this.isMouseOver = false;\n this.loading = false;\n }\n\n LikeProjectButtonController.prototype.showTextWhenMouseIsOver = function() {\n return this.isMouseOver = true;\n };\n\n LikeProjectButtonController.prototype.showTextWhenMouseIsLeave = function() {\n return this.isMouseOver = false;\n };\n\n LikeProjectButtonController.prototype.toggleLike = function() {\n var promise;\n this.loading = true;\n if (!this.project.get(\"is_fan\")) {\n promise = this._like();\n } else {\n promise = this._unlike();\n }\n promise[\"finally\"]((function(_this) {\n return function() {\n return _this.loading = false;\n };\n })(this));\n return promise;\n };\n\n LikeProjectButtonController.prototype._like = function() {\n return this.likeButtonService.like(this.project.get('id')).then((function(_this) {\n return function() {\n return _this.showTextWhenMouseIsLeave();\n };\n })(this))[\"catch\"]((function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this));\n };\n\n LikeProjectButtonController.prototype._unlike = function() {\n return this.likeButtonService.unlike(this.project.get('id'))[\"catch\"]((function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this));\n };\n\n return LikeProjectButtonController;\n\n })();\n\n angular.module(\"taigaProjects\").controller(\"LikeProjectButton\", LikeProjectButtonController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var LikeProjectButtonDirective;\n\n LikeProjectButtonDirective = function() {\n return {\n scope: {},\n controller: \"LikeProjectButton\",\n bindToController: {\n project: '='\n },\n controllerAs: \"vm\",\n templateUrl: \"projects/components/like-project-button/like-project-button.html\"\n };\n };\n\n angular.module(\"taigaProjects\").directive(\"tgLikeProjectButton\", LikeProjectButtonDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var LikeProjectButtonService, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n LikeProjectButtonService = (function(superClass) {\n extend(LikeProjectButtonService, superClass);\n\n LikeProjectButtonService.$inject = [\"tgResources\", \"tgCurrentUserService\", \"tgProjectService\"];\n\n function LikeProjectButtonService(rs, currentUserService, projectService) {\n this.rs = rs;\n this.currentUserService = currentUserService;\n this.projectService = projectService;\n }\n\n LikeProjectButtonService.prototype._getProjectIndex = function(projectId) {\n return this.currentUserService.projects.get('all').findIndex(function(project) {\n return project.get('id') === projectId;\n });\n };\n\n LikeProjectButtonService.prototype._updateProjects = function(projectId, isFan) {\n var projectIndex, projects;\n projectIndex = this._getProjectIndex(projectId);\n if (projectIndex === -1) {\n return;\n }\n projects = this.currentUserService.projects.get('all').update(projectIndex, function(project) {\n var totalFans;\n totalFans = project.get(\"total_fans\");\n if (isFan) {\n totalFans++;\n } else {\n totalFans--;\n }\n return project.merge({\n is_fan: isFan,\n total_fans: totalFans\n });\n });\n return this.currentUserService.setProjects(projects);\n };\n\n LikeProjectButtonService.prototype._updateCurrentProject = function(isFan) {\n var project, totalFans;\n totalFans = this.projectService.project.get(\"total_fans\");\n if (isFan) {\n totalFans++;\n } else {\n totalFans--;\n }\n project = this.projectService.project.merge({\n is_fan: isFan,\n total_fans: totalFans\n });\n return this.projectService.setProject(project);\n };\n\n LikeProjectButtonService.prototype.like = function(projectId) {\n return this.rs.projects.likeProject(projectId).then((function(_this) {\n return function() {\n _this._updateProjects(projectId, true);\n return _this._updateCurrentProject(true);\n };\n })(this));\n };\n\n LikeProjectButtonService.prototype.unlike = function(projectId) {\n return this.rs.projects.unlikeProject(projectId).then((function(_this) {\n return function() {\n _this._updateProjects(projectId, false);\n return _this._updateCurrentProject(false);\n };\n })(this));\n };\n\n return LikeProjectButtonService;\n\n })(taiga.Service);\n\n angular.module(\"taigaProjects\").service(\"tgLikeProjectButtonService\", LikeProjectButtonService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var SortProjectsDirective;\n\n SortProjectsDirective = function(currentUserService) {\n var directive, link;\n link = function(scope, el, attrs, ctrl) {\n var drake, itemEl, scroll;\n itemEl = null;\n drake = dragula([el[0]], {\n copySortSource: false,\n copy: false,\n mirrorContainer: el[0],\n moves: function(item) {\n return $(item).hasClass('list-itemtype-project');\n }\n });\n drake.on('dragend', function(item) {\n var i, index, len, project, sortData, sorted_project_ids, value;\n itemEl = $(item);\n project = itemEl.scope().project;\n index = itemEl.index();\n sorted_project_ids = _.map(scope.projects.toJS(), function(p) {\n return p.id;\n });\n sorted_project_ids = _.without(sorted_project_ids, project.get(\"id\"));\n sorted_project_ids.splice(index, 0, project.get('id'));\n sortData = [];\n for (index = i = 0, len = sorted_project_ids.length; i < len; index = ++i) {\n value = sorted_project_ids[index];\n sortData.push({\n \"project_id\": value,\n \"order\": index\n });\n }\n return currentUserService.bulkUpdateProjectsOrder(sortData);\n });\n scroll = autoScroll(window, {\n margin: 20,\n pixels: 30,\n scrollWhenOutside: true,\n autoScroll: function() {\n return this.down && drake.dragging;\n }\n });\n return scope.$on(\"$destroy\", function() {\n el.off();\n return drake.destroy();\n });\n };\n directive = {\n scope: {\n projects: \"=tgSortProjects\"\n },\n link: link\n };\n return directive;\n };\n\n angular.module(\"taigaProjects\").directive(\"tgSortProjects\", [\"tgCurrentUserService\", SortProjectsDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var WatchProjectButtonController;\n\n WatchProjectButtonController = (function() {\n WatchProjectButtonController.$inject = [\"$tgConfirm\", \"tgWatchProjectButtonService\"];\n\n function WatchProjectButtonController(confirm, watchButtonService) {\n this.confirm = confirm;\n this.watchButtonService = watchButtonService;\n this.showWatchOptions = false;\n this.loading = false;\n }\n\n WatchProjectButtonController.prototype.toggleWatcherOptions = function() {\n return this.showWatchOptions = !this.showWatchOptions;\n };\n\n WatchProjectButtonController.prototype.closeWatcherOptions = function() {\n return this.showWatchOptions = false;\n };\n\n WatchProjectButtonController.prototype.watch = function(notifyLevel) {\n if (notifyLevel === this.project.get('notify_level')) {\n return;\n }\n this.loading = true;\n this.closeWatcherOptions();\n return this.watchButtonService.watch(this.project.get('id'), notifyLevel)[\"catch\"]((function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this))[\"finally\"]((function(_this) {\n return function() {\n return _this.loading = false;\n };\n })(this));\n };\n\n WatchProjectButtonController.prototype.unwatch = function() {\n this.loading = true;\n this.closeWatcherOptions();\n return this.watchButtonService.unwatch(this.project.get('id'))[\"catch\"]((function(_this) {\n return function() {\n return _this.confirm.notify(\"error\");\n };\n })(this))[\"finally\"]((function(_this) {\n return function() {\n return _this.loading = false;\n };\n })(this));\n };\n\n return WatchProjectButtonController;\n\n })();\n\n angular.module(\"taigaProjects\").controller(\"WatchProjectButton\", WatchProjectButtonController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var WatchProjectButtonDirective;\n\n WatchProjectButtonDirective = function() {\n return {\n scope: {},\n controller: \"WatchProjectButton\",\n bindToController: {\n project: \"=\"\n },\n controllerAs: \"vm\",\n templateUrl: \"projects/components/watch-project-button/watch-project-button.html\"\n };\n };\n\n angular.module(\"taigaProjects\").directive(\"tgWatchProjectButton\", WatchProjectButtonDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var WatchProjectButtonService, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n WatchProjectButtonService = (function(superClass) {\n extend(WatchProjectButtonService, superClass);\n\n WatchProjectButtonService.$inject = [\"tgResources\", \"tgCurrentUserService\", \"tgProjectService\"];\n\n function WatchProjectButtonService(rs, currentUserService, projectService) {\n this.rs = rs;\n this.currentUserService = currentUserService;\n this.projectService = projectService;\n }\n\n WatchProjectButtonService.prototype._getProjectIndex = function(projectId) {\n return this.currentUserService.projects.get('all').findIndex(function(project) {\n return project.get('id') === projectId;\n });\n };\n\n WatchProjectButtonService.prototype._updateProjects = function(projectId, notifyLevel, isWatcher) {\n var projectIndex, projects;\n projectIndex = this._getProjectIndex(projectId);\n if (projectIndex === -1) {\n return;\n }\n projects = this.currentUserService.projects.get('all').update(projectIndex, (function(_this) {\n return function(project) {\n var totalWatchers;\n totalWatchers = project.get('total_watchers');\n if (!_this.projectService.project.get('is_watcher') && isWatcher) {\n totalWatchers++;\n } else if (_this.projectService.project.get('is_watcher') && !isWatcher) {\n totalWatchers--;\n }\n return project.merge({\n is_watcher: isWatcher,\n total_watchers: totalWatchers,\n notify_level: notifyLevel\n });\n };\n })(this));\n return this.currentUserService.setProjects(projects);\n };\n\n WatchProjectButtonService.prototype._updateCurrentProject = function(notifyLevel, isWatcher) {\n var project, totalWatchers;\n totalWatchers = this.projectService.project.get(\"total_watchers\");\n if (!this.projectService.project.get('is_watcher') && isWatcher) {\n totalWatchers++;\n } else if (this.projectService.project.get('is_watcher') && !isWatcher) {\n totalWatchers--;\n }\n project = this.projectService.project.merge({\n is_watcher: isWatcher,\n notify_level: notifyLevel,\n total_watchers: totalWatchers\n });\n return this.projectService.setProject(project);\n };\n\n WatchProjectButtonService.prototype.watch = function(projectId, notifyLevel) {\n return this.rs.projects.watchProject(projectId, notifyLevel).then((function(_this) {\n return function() {\n _this._updateProjects(projectId, notifyLevel, true);\n return _this._updateCurrentProject(notifyLevel, true);\n };\n })(this));\n };\n\n WatchProjectButtonService.prototype.unwatch = function(projectId) {\n return this.rs.projects.unwatchProject(projectId).then((function(_this) {\n return function() {\n _this._updateProjects(projectId, null, false);\n return _this._updateCurrentProject(null, false);\n };\n })(this));\n };\n\n return WatchProjectButtonService;\n\n })(taiga.Service);\n\n angular.module(\"taigaProjects\").service(\"tgWatchProjectButtonService\", WatchProjectButtonService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AsanaImportProjectFormController;\n\n AsanaImportProjectFormController = (function() {\n AsanaImportProjectFormController.$inject = [\"tgCurrentUserService\"];\n\n function AsanaImportProjectFormController(currentUserService) {\n this.currentUserService = currentUserService;\n this.canCreatePublicProjects = this.currentUserService.canCreatePublicProjects();\n this.canCreatePrivateProjects = this.currentUserService.canCreatePrivateProjects();\n this.projectForm = this.project.toJS();\n this.platformName = \"Asana\";\n this.projectForm.is_private = false;\n this.projectForm.keepExternalReference = false;\n this.projectForm.project_type = \"scrum\";\n if (!this.canCreatePublicProjects.valid && this.canCreatePrivateProjects.valid) {\n this.projectForm.is_private = true;\n }\n }\n\n AsanaImportProjectFormController.prototype.checkUsersLimit = function() {\n this.limitMembersPrivateProject = this.currentUserService.canAddMembersPrivateProject(this.members.size);\n return this.limitMembersPublicProject = this.currentUserService.canAddMembersPublicProject(this.members.size);\n };\n\n AsanaImportProjectFormController.prototype.saveForm = function() {\n return this.onSaveProjectDetails({\n project: Immutable.fromJS(this.projectForm)\n });\n };\n\n AsanaImportProjectFormController.prototype.canCreateProject = function() {\n if (this.projectForm.is_private) {\n return this.canCreatePrivateProjects.valid;\n } else {\n return this.canCreatePublicProjects.valid;\n }\n };\n\n AsanaImportProjectFormController.prototype.isDisabled = function() {\n return !this.canCreateProject();\n };\n\n return AsanaImportProjectFormController;\n\n })();\n\n angular.module('taigaProjects').controller('AsanaImportProjectFormCtrl', AsanaImportProjectFormController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AsanaImportProjectFormDirective;\n\n AsanaImportProjectFormDirective = function() {\n return {\n link: function(scope, elm, attr, ctrl) {\n return scope.$watch('vm.members', ctrl.checkUsersLimit.bind(ctrl));\n },\n templateUrl: \"projects/create/asana-import/asana-import-project-form/asana-import-project-form.html\",\n controller: \"AsanaImportProjectFormCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n members: '<',\n project: '<',\n onSaveProjectDetails: '&',\n onCancelForm: '&',\n fetchingUsers: '<'\n }\n };\n };\n\n AsanaImportProjectFormDirective.$inject = [];\n\n angular.module(\"taigaProjects\").directive(\"tgAsanaImportProjectForm\", AsanaImportProjectFormDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AsanaImportController;\n\n AsanaImportController = (function() {\n AsanaImportController.$inject = ['tgAsanaImportService', '$tgConfirm', '$translate', 'tgImportProjectService'];\n\n function AsanaImportController(asanaImportService, confirm, translate, importProjectService) {\n this.asanaImportService = asanaImportService;\n this.confirm = confirm;\n this.translate = translate;\n this.importProjectService = importProjectService;\n this.step = 'autorization-asana';\n this.project = null;\n taiga.defineImmutableProperty(this, 'projects', (function(_this) {\n return function() {\n return _this.asanaImportService.projects;\n };\n })(this));\n taiga.defineImmutableProperty(this, 'members', (function(_this) {\n return function() {\n return _this.asanaImportService.projectUsers;\n };\n })(this));\n }\n\n AsanaImportController.prototype.startProjectSelector = function() {\n this.step = 'project-select-asana';\n return this.asanaImportService.fetchProjects();\n };\n\n AsanaImportController.prototype.onSelectProject = function(project) {\n this.step = 'project-form-asana';\n this.project = project;\n this.fetchingUsers = true;\n return this.asanaImportService.fetchUsers(this.project.get('id')).then((function(_this) {\n return function() {\n return _this.fetchingUsers = false;\n };\n })(this));\n };\n\n AsanaImportController.prototype.onSaveProjectDetails = function(project) {\n this.project = project;\n return this.step = 'project-members-asana';\n };\n\n AsanaImportController.prototype.onCancelMemberSelection = function() {\n return this.step = 'project-form-asana';\n };\n\n AsanaImportController.prototype.startImport = function(users) {\n var loader, promise;\n loader = this.confirm.loader(this.translate.instant('PROJECT.IMPORT.IN_PROGRESS.TITLE'), this.translate.instant('PROJECT.IMPORT.IN_PROGRESS.DESCRIPTION'), true);\n loader.start();\n promise = this.asanaImportService.importProject(this.project.get('name'), this.project.get('description'), this.project.get('id'), users, this.project.get('keepExternalReference'), this.project.get('is_private'), this.project.get('project_type'));\n return this.importProjectService.importPromise(promise).then((function(_this) {\n return function() {\n return loader.stop();\n };\n })(this));\n };\n\n AsanaImportController.prototype.submitUserSelection = function(users) {\n this.startImport(users);\n return null;\n };\n\n return AsanaImportController;\n\n })();\n\n angular.module('taigaProjects').controller('AsanaImportCtrl', AsanaImportController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AsanaImportDirective;\n\n AsanaImportDirective = function() {\n return {\n link: function(scope, elm, attrs, ctrl) {\n return ctrl.startProjectSelector();\n },\n templateUrl: \"projects/create/asana-import/asana-import.html\",\n controller: \"AsanaImportCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n onCancel: '&'\n }\n };\n };\n\n AsanaImportDirective.$inject = [];\n\n angular.module(\"taigaProjects\").directive(\"tgAsanaImport\", AsanaImportDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AsanaImportService,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n AsanaImportService = (function(superClass) {\n extend(AsanaImportService, superClass);\n\n AsanaImportService.$inject = ['tgResources', '$location', '$q'];\n\n function AsanaImportService(resources, location, q) {\n this.resources = resources;\n this.location = location;\n this.q = q;\n this.projects = Immutable.List();\n this.projectUsers = Immutable.List();\n this.token = null;\n }\n\n AsanaImportService.prototype.setToken = function(token) {\n return this.token = token;\n };\n\n AsanaImportService.prototype.fetchProjects = function() {\n return this.resources.asanaImporter.listProjects(this.token).then((function(_this) {\n return function(projects) {\n return _this.projects = projects;\n };\n })(this));\n };\n\n AsanaImportService.prototype.fetchUsers = function(projectId) {\n return this.resources.asanaImporter.listUsers(this.token, projectId).then((function(_this) {\n return function(users) {\n return _this.projectUsers = users;\n };\n })(this));\n };\n\n AsanaImportService.prototype.importProject = function(name, description, projectId, userBindings, keepExternalReference, isPrivate, projectType) {\n return this.resources.asanaImporter.importProject(this.token, name, description, projectId, userBindings, keepExternalReference, isPrivate, projectType);\n };\n\n AsanaImportService.prototype.getAuthUrl = function() {\n return this.q((function(_this) {\n return function(resolve) {\n return _this.resources.asanaImporter.getAuthUrl().then(function(response) {\n _this.authUrl = response.data.url;\n return resolve(_this.authUrl);\n });\n };\n })(this));\n };\n\n AsanaImportService.prototype.authorize = function(code) {\n return this.q((function(_this) {\n return function(resolve, reject) {\n return _this.resources.asanaImporter.authorize(code).then((function(response) {\n _this.token = response.data.token;\n return resolve(_this.token);\n }), function(error) {\n return reject(new Error(error.status));\n });\n };\n })(this));\n };\n\n return AsanaImportService;\n\n })(taiga.Service);\n\n angular.module(\"taigaProjects\").service(\"tgAsanaImportService\", AsanaImportService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CreatetProjectFormController;\n\n CreatetProjectFormController = (function() {\n CreatetProjectFormController.$inject = [\"tgCurrentUserService\", \"tgProjectsService\", \"$projectUrl\", \"$location\", \"$tgNavUrls\", \"$tgAnalytics\"];\n\n function CreatetProjectFormController(currentUserService, projectsService, projectUrl, location, navUrls, analytics) {\n this.currentUserService = currentUserService;\n this.projectsService = projectsService;\n this.projectUrl = projectUrl;\n this.location = location;\n this.navUrls = navUrls;\n this.analytics = analytics;\n this.errorList = [];\n this.projectForm = {\n is_private: false\n };\n this.canCreatePublicProjects = this.currentUserService.canCreatePublicProjects();\n this.canCreatePrivateProjects = this.currentUserService.canCreatePrivateProjects();\n if (!this.canCreatePublicProjects.valid && this.canCreatePrivateProjects.valid) {\n this.projectForm.is_private = true;\n }\n if (this.type === 'scrum') {\n this.projectForm.creation_template = 1;\n } else {\n this.projectForm.creation_template = 2;\n }\n }\n\n CreatetProjectFormController.prototype.submit = function() {\n this.errorList = [];\n if (!this.projectForm.name) {\n this.errorList.push('name');\n }\n if (!this.projectForm.description) {\n this.errorList.push('description');\n }\n if (this.errorList.length === 0) {\n this.formSubmitLoading = true;\n return this.projectsService.create(this.projectForm).then((function(_this) {\n return function(project) {\n _this.analytics.trackEvent(\"project\", \"create\", \"project creation\", {\n slug: project.get('slug'),\n id: project.get('id')\n });\n _this.location.url(_this.projectUrl.get(project));\n return _this.currentUserService.loadProjects();\n };\n })(this));\n }\n };\n\n CreatetProjectFormController.prototype.onCancelForm = function() {\n return this.location.path(this.navUrls.resolve(\"create-project\"));\n };\n\n CreatetProjectFormController.prototype.canCreateProject = function() {\n if (this.projectForm.is_private) {\n return this.canCreatePrivateProjects.valid;\n } else {\n return this.canCreatePublicProjects.valid;\n }\n };\n\n CreatetProjectFormController.prototype.isDisabled = function() {\n return this.formSubmitLoading || !this.canCreateProject();\n };\n\n return CreatetProjectFormController;\n\n })();\n\n angular.module('taigaProjects').controller('CreateProjectFormCtrl', CreatetProjectFormController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CreateProjectFormDirective;\n\n CreateProjectFormDirective = function() {\n return {\n templateUrl: \"projects/create/create-project-form/create-project-form.html\",\n controller: \"CreateProjectFormCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n type: '@'\n }\n };\n };\n\n angular.module(\"taigaProjects\").directive(\"tgCreateProjectForm\", CreateProjectFormDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var createProjectMembersRestrictionsDirective, module;\n\n module = angular.module(\"taigaProject\");\n\n createProjectMembersRestrictionsDirective = function() {\n return {\n scope: {\n isPrivate: '=',\n limitMembersPrivateProject: '=',\n limitMembersPublicProject: '='\n },\n templateUrl: \"projects/create/create-project-members-restrictions/create-project-members-restrictions.html\"\n };\n };\n\n module.directive('tgCreateProjectMembersRestrictions', [createProjectMembersRestrictionsDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var createProjectRestrictionsDirective, module;\n\n module = angular.module(\"taigaProject\");\n\n createProjectRestrictionsDirective = function() {\n return {\n scope: {\n isPrivate: '=',\n canCreatePrivateProjects: '=',\n canCreatePublicProjects: '='\n },\n templateUrl: \"projects/create/create-project-restrictions/create-project-restrictions.html\"\n };\n };\n\n module.directive('tgCreateProjectRestrictions', [createProjectRestrictionsDirective]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CreateProjectController;\n\n CreateProjectController = (function() {\n CreateProjectController.$inject = [\"tgAppMetaService\", \"$translate\", \"tgProjectService\", \"$tgAuth\", \"tgLightboxFactory\", \"tgResources\", \"$tgConfig\"];\n\n function CreateProjectController(appMetaService, translate, projectService, authService, lightboxFactory, rs, config) {\n this.appMetaService = appMetaService;\n this.translate = translate;\n this.projectService = projectService;\n this.authService = authService;\n this.lightboxFactory = lightboxFactory;\n this.rs = rs;\n this.config = config;\n taiga.defineImmutableProperty(this, \"project\", (function(_this) {\n return function() {\n return _this.projectService.project;\n };\n })(this));\n this.appMetaService.setfn(this._setMeta.bind(this));\n this.authService.refresh();\n this.displayScrumDesc = false;\n this.dontAsk = false;\n if (!this.config.get(\"isSaas\")) {\n this.rs.user.getUserStorage('dont_ask_premise_newsletter').then((function(_this) {\n return function(storageState) {\n _this.dontAsk = storageState;\n return _this.displayOnPremise();\n };\n })(this))[\"catch\"]((function(_this) {\n return function(storageError) {\n if (storageError.status = 404) {\n _this.rs.user.createUserStorage('dont_ask_premise_newsletter', false);\n _this.dontAsk = false;\n return _this.displayOnPremise();\n }\n };\n })(this));\n }\n }\n\n CreateProjectController.prototype._setMeta = function() {\n var ctx;\n if (!this.project) {\n return null;\n }\n ctx = {\n projectName: this.project.get(\"name\")\n };\n return {\n title: this.translate.instant(\"PROJECT.PAGE_TITLE\", ctx),\n description: this.project.get(\"description\")\n };\n };\n\n CreateProjectController.prototype.displayOnPremise = function() {\n if (!this.dontAsk) {\n return this.lightboxFactory.create(\"tg-newsletter-email-lightbox\", {\n \"class\": \"lightbox newsletter-email\"\n });\n }\n };\n\n CreateProjectController.prototype.displayHelp = function(type, $event) {\n $event.stopPropagation();\n $event.preventDefault();\n if (type === 'scrum') {\n this.displayScrumDesc = !this.displayScrumDesc;\n }\n if (type === 'kanban') {\n return this.displayKanbanDesc = !this.displayKanbanDesc;\n }\n };\n\n return CreateProjectController;\n\n })();\n\n angular.module(\"taigaProjects\").controller(\"CreateProjectCtrl\", CreateProjectController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DuplicateProjectController;\n\n DuplicateProjectController = (function() {\n DuplicateProjectController.$inject = [\"tgCurrentUserService\", \"tgProjectsService\", \"$tgLocation\", \"$tgNavUrls\"];\n\n function DuplicateProjectController(currentUserService, projectsService, location, navUrls) {\n this.currentUserService = currentUserService;\n this.projectsService = projectsService;\n this.location = location;\n this.navUrls = navUrls;\n this.user = this.currentUserService.getUser();\n this.members = Immutable.List();\n this.canCreatePublicProjects = this.currentUserService.canCreatePublicProjects();\n this.canCreatePrivateProjects = this.currentUserService.canCreatePrivateProjects();\n taiga.defineImmutableProperty(this, 'projects', (function(_this) {\n return function() {\n return _this.currentUserService.projects.get(\"all\");\n };\n })(this));\n this.projectForm = {\n is_private: false\n };\n if (!this.canCreatePublicProjects.valid && this.canCreatePrivateProjects.valid) {\n this.projectForm.is_private = true;\n }\n }\n\n DuplicateProjectController.prototype.refreshReferenceProject = function(slug) {\n return this.projectsService.getProjectBySlug(slug).then((function(_this) {\n return function(project) {\n _this.referenceProject = project;\n _this.members = project.get('members').filter(function(it) {\n return it.get('id') !== _this.user.get('id');\n });\n _this.invitedMembers = _this.members.map(function(it) {\n return it.get('id');\n });\n return _this.checkUsersLimit();\n };\n })(this));\n };\n\n DuplicateProjectController.prototype.toggleInvitedMember = function(member) {\n if (this.invitedMembers.includes(member)) {\n this.invitedMembers = this.invitedMembers.filter(function(it) {\n return it !== member;\n });\n } else {\n this.invitedMembers = this.invitedMembers.push(member);\n }\n return this.checkUsersLimit();\n };\n\n DuplicateProjectController.prototype.checkUsersLimit = function() {\n this.limitMembersPrivateProject = this.currentUserService.canAddMembersPrivateProject(this.invitedMembers.size + 1);\n return this.limitMembersPublicProject = this.currentUserService.canAddMembersPublicProject(this.invitedMembers.size + 1);\n };\n\n DuplicateProjectController.prototype.submit = function() {\n var data, projectId;\n projectId = this.referenceProject.get('id');\n data = this.projectForm;\n data.users = this.invitedMembers;\n this.formSubmitLoading = true;\n return this.projectsService.duplicate(projectId, data).then((function(_this) {\n return function(newProject) {\n _this.formSubmitLoading = false;\n _this.location.path(_this.navUrls.resolve(\"project\", {\n project: newProject.data.slug\n }));\n return _this.currentUserService.loadProjects();\n };\n })(this));\n };\n\n DuplicateProjectController.prototype.canCreateProject = function() {\n if (this.projectForm.is_private) {\n return this.canCreatePrivateProjects.valid && this.limitMembersPrivateProject.valid;\n } else {\n return this.canCreatePublicProjects.valid && this.limitMembersPublicProject.valid;\n }\n };\n\n DuplicateProjectController.prototype.isDisabled = function() {\n return this.formSubmitLoading || !this.canCreateProject();\n };\n\n DuplicateProjectController.prototype.onCancelForm = function() {\n return this.location.path(this.navUrls.resolve(\"create-project\"));\n };\n\n return DuplicateProjectController;\n\n })();\n\n angular.module(\"taigaProjects\").controller(\"DuplicateProjectCtrl\", DuplicateProjectController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var DuplicateProjectDirective;\n\n DuplicateProjectDirective = function() {\n var link;\n link = function(scope, el, attr, ctrl) {};\n return {\n link: link,\n templateUrl: \"projects/create/duplicate/duplicate-project.html\",\n controller: \"DuplicateProjectCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {}\n };\n };\n\n DuplicateProjectDirective.$inject = [];\n\n angular.module(\"taigaProjects\").directive(\"tgDuplicateProject\", DuplicateProjectDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var GithubImportProjectFormController;\n\n GithubImportProjectFormController = (function() {\n GithubImportProjectFormController.$inject = [\"tgCurrentUserService\"];\n\n function GithubImportProjectFormController(currentUserService) {\n this.currentUserService = currentUserService;\n this.canCreatePublicProjects = this.currentUserService.canCreatePublicProjects();\n this.canCreatePrivateProjects = this.currentUserService.canCreatePrivateProjects();\n this.projectForm = this.project.toJS();\n this.platformName = \"Github\";\n this.projectForm.is_private = false;\n this.projectForm.keepExternalReference = false;\n this.projectForm.project_type = \"kanban\";\n if (!this.canCreatePublicProjects.valid && this.canCreatePrivateProjects.valid) {\n this.projectForm.is_private = true;\n }\n }\n\n GithubImportProjectFormController.prototype.checkUsersLimit = function() {\n this.limitMembersPrivateProject = this.currentUserService.canAddMembersPrivateProject(this.members.size);\n return this.limitMembersPublicProject = this.currentUserService.canAddMembersPublicProject(this.members.size);\n };\n\n GithubImportProjectFormController.prototype.saveForm = function() {\n return this.onSaveProjectDetails({\n project: Immutable.fromJS(this.projectForm)\n });\n };\n\n GithubImportProjectFormController.prototype.canCreateProject = function() {\n if (this.projectForm.is_private) {\n return this.canCreatePrivateProjects.valid;\n } else {\n return this.canCreatePublicProjects.valid;\n }\n };\n\n GithubImportProjectFormController.prototype.isDisabled = function() {\n return !this.canCreateProject();\n };\n\n return GithubImportProjectFormController;\n\n })();\n\n angular.module('taigaProjects').controller('GithubImportProjectFormCtrl', GithubImportProjectFormController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var GithubImportProjectFormDirective;\n\n GithubImportProjectFormDirective = function() {\n return {\n link: function(scope, elm, attr, ctrl) {\n return scope.$watch('vm.members', ctrl.checkUsersLimit.bind(ctrl));\n },\n templateUrl: \"projects/create/github-import/github-import-project-form/github-import-project-form.html\",\n controller: \"GithubImportProjectFormCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n members: '<',\n project: '<',\n onSaveProjectDetails: '&',\n onCancelForm: '&',\n fetchingUsers: '<'\n }\n };\n };\n\n GithubImportProjectFormDirective.$inject = [];\n\n angular.module(\"taigaProjects\").directive(\"tgGithubImportProjectForm\", GithubImportProjectFormDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var GithubImportController;\n\n GithubImportController = (function() {\n GithubImportController.$inject = ['tgGithubImportService', '$tgConfirm', '$translate', 'tgImportProjectService'];\n\n function GithubImportController(githubImportService, confirm, translate, importProjectService) {\n this.githubImportService = githubImportService;\n this.confirm = confirm;\n this.translate = translate;\n this.importProjectService = importProjectService;\n this.step = 'autorization-github';\n this.project = null;\n taiga.defineImmutableProperty(this, 'projects', (function(_this) {\n return function() {\n return _this.githubImportService.projects;\n };\n })(this));\n taiga.defineImmutableProperty(this, 'members', (function(_this) {\n return function() {\n return _this.githubImportService.projectUsers;\n };\n })(this));\n }\n\n GithubImportController.prototype.startProjectSelector = function() {\n this.step = 'project-select-github';\n return this.githubImportService.fetchProjects();\n };\n\n GithubImportController.prototype.onSelectProject = function(project) {\n this.step = 'project-form-github';\n this.project = project;\n this.fetchingUsers = true;\n return this.githubImportService.fetchUsers(this.project.get('id')).then((function(_this) {\n return function() {\n return _this.fetchingUsers = false;\n };\n })(this));\n };\n\n GithubImportController.prototype.onSaveProjectDetails = function(project) {\n this.project = project;\n return this.step = 'project-members-github';\n };\n\n GithubImportController.prototype.onCancelMemberSelection = function() {\n return this.step = 'project-form-github';\n };\n\n GithubImportController.prototype.startImport = function(users) {\n var loader, promise;\n loader = this.confirm.loader(this.translate.instant('PROJECT.IMPORT.IN_PROGRESS.TITLE'), this.translate.instant('PROJECT.IMPORT.IN_PROGRESS.DESCRIPTION'), true);\n loader.start();\n promise = this.githubImportService.importProject(this.project.get('name'), this.project.get('description'), this.project.get('id'), users, this.project.get('keepExternalReference'), this.project.get('is_private'), this.project.get('project_type'));\n return this.importProjectService.importPromise(promise).then((function(_this) {\n return function() {\n return loader.stop();\n };\n })(this));\n };\n\n GithubImportController.prototype.submitUserSelection = function(users) {\n this.startImport(users);\n return null;\n };\n\n return GithubImportController;\n\n })();\n\n angular.module('taigaProjects').controller('GithubImportCtrl', GithubImportController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var GithubImportDirective;\n\n GithubImportDirective = function() {\n return {\n link: function(scope, elm, attrs, ctrl) {\n return ctrl.startProjectSelector();\n },\n templateUrl: \"projects/create/github-import/github-import.html\",\n controller: \"GithubImportCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n onCancel: '&'\n }\n };\n };\n\n GithubImportDirective.$inject = [];\n\n angular.module(\"taigaProjects\").directive(\"tgGithubImport\", GithubImportDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var GithubImportService,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n GithubImportService = (function(superClass) {\n extend(GithubImportService, superClass);\n\n GithubImportService.$inject = ['tgResources', '$q'];\n\n function GithubImportService(resources, q) {\n this.resources = resources;\n this.q = q;\n this.projects = Immutable.List();\n this.projectUsers = Immutable.List();\n }\n\n GithubImportService.prototype.setToken = function(token) {\n return this.token = token;\n };\n\n GithubImportService.prototype.fetchProjects = function() {\n return this.resources.githubImporter.listProjects(this.token).then((function(_this) {\n return function(projects) {\n return _this.projects = projects;\n };\n })(this));\n };\n\n GithubImportService.prototype.fetchUsers = function(projectId) {\n return this.resources.githubImporter.listUsers(this.token, projectId).then((function(_this) {\n return function(users) {\n return _this.projectUsers = users;\n };\n })(this));\n };\n\n GithubImportService.prototype.importProject = function(name, description, projectId, userBindings, keepExternalReference, isPrivate, projectType) {\n return this.resources.githubImporter.importProject(this.token, name, description, projectId, userBindings, keepExternalReference, isPrivate, projectType);\n };\n\n GithubImportService.prototype.getAuthUrl = function(callbackUri) {\n return this.q((function(_this) {\n return function(resolve) {\n return _this.resources.githubImporter.getAuthUrl(callbackUri).then(function(response) {\n _this.authUrl = response.data.url;\n return resolve(_this.authUrl);\n });\n };\n })(this));\n };\n\n GithubImportService.prototype.authorize = function(code) {\n return this.q((function(_this) {\n return function(resolve, reject) {\n return _this.resources.githubImporter.authorize(code).then((function(response) {\n _this.token = response.data.token;\n return resolve(_this.token);\n }), function(error) {\n return reject(new Error(error.status));\n });\n };\n })(this));\n };\n\n return GithubImportService;\n\n })(taiga.Service);\n\n angular.module(\"taigaProjects\").service(\"tgGithubImportService\", GithubImportService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ImportProjectMembersController;\n\n ImportProjectMembersController = (function() {\n ImportProjectMembersController.$inject = ['tgCurrentUserService', 'tgUserService'];\n\n function ImportProjectMembersController(currentUserService, userService) {\n this.currentUserService = currentUserService;\n this.userService = userService;\n this.selectImportUserLightbox = false;\n this.warningImportUsers = false;\n this.displayEmailSelector = true;\n this.cancelledUsers = Immutable.List();\n this.selectedUsers = Immutable.List();\n this.selectableUsers = Immutable.List();\n this.userContacts = Immutable.List();\n }\n\n ImportProjectMembersController.prototype.fetchUser = function() {\n this.currentUser = this.currentUserService.getUser();\n return this.userService.getContacts(this.currentUser.get('id')).then((function(_this) {\n return function(userContacts) {\n _this.userContacts = userContacts;\n return _this.refreshSelectableUsers();\n };\n })(this));\n };\n\n ImportProjectMembersController.prototype.searchUser = function(user) {\n this.selectImportUserLightbox = true;\n return this.searchingUser = user;\n };\n\n ImportProjectMembersController.prototype.beforeSubmitUsers = function() {\n if (this.selectedUsers.size !== this.members.size) {\n return this.warningImportUsers = true;\n } else {\n return this.submit();\n }\n };\n\n ImportProjectMembersController.prototype.confirmUser = function(externalUser, taigaUser) {\n var user;\n this.selectImportUserLightbox = false;\n user = Immutable.Map();\n user = user.set('user', externalUser);\n user = user.set('taigaUser', taigaUser);\n this.selectedUsers = this.selectedUsers.push(user);\n this.discardSuggestedUser(externalUser);\n return this.refreshSelectableUsers();\n };\n\n ImportProjectMembersController.prototype.unselectUser = function(user) {\n var index;\n index = this.selectedUsers.findIndex(function(it) {\n return it.getIn(['user', 'id']) === user.get('id');\n });\n this.selectedUsers = this.selectedUsers[\"delete\"](index);\n return this.refreshSelectableUsers();\n };\n\n ImportProjectMembersController.prototype.discardSuggestedUser = function(member) {\n return this.cancelledUsers = this.cancelledUsers.push(member.get('id'));\n };\n\n ImportProjectMembersController.prototype.getSelectedMember = function(member) {\n return this.selectedUsers.find(function(it) {\n return it.getIn(['user', 'id']) === member.get('id');\n });\n };\n\n ImportProjectMembersController.prototype.isMemberSelected = function(member) {\n return !!this.getSelectedMember(member);\n };\n\n ImportProjectMembersController.prototype.getUser = function(user) {\n var userSelected;\n userSelected = this.getSelectedMember(user);\n if (userSelected) {\n return userSelected.get('taigaUser');\n } else {\n return null;\n }\n };\n\n ImportProjectMembersController.prototype.submit = function() {\n var users;\n this.warningImportUsers = false;\n users = Immutable.Map();\n this.selectedUsers.map(function(it) {\n var id;\n id = '';\n if (_.isString(it.get('taigaUser'))) {\n id = it.get('taigaUser');\n } else {\n id = it.getIn(['taigaUser', 'id']);\n }\n return users = users.set(it.getIn(['user', 'id']), id);\n });\n return this.onSubmit({\n users: users\n });\n };\n\n ImportProjectMembersController.prototype.checkUsersLimit = function() {\n this.limitMembersPrivateProject = this.currentUserService.canAddMembersPrivateProject(this.members.size + 1);\n return this.limitMembersPublicProject = this.currentUserService.canAddMembersPublicProject(this.members.size + 1);\n };\n\n ImportProjectMembersController.prototype.showSuggestedMatch = function(member) {\n return member.get('user') && this.cancelledUsers.indexOf(member.get('id')) === -1 && !this.isMemberSelected(member);\n };\n\n ImportProjectMembersController.prototype.getDistinctSelectedTaigaUsers = function() {\n var ids, users;\n ids = [];\n users = this.selectedUsers.filter(function(it) {\n var id;\n id = it.getIn(['taigaUser', 'id']);\n if (ids.indexOf(id) === -1) {\n ids.push(id);\n return true;\n }\n return false;\n });\n return users.filter((function(_this) {\n return function(it) {\n return it.getIn(['taigaUser', 'id']) !== _this.currentUser.get('id');\n };\n })(this));\n };\n\n ImportProjectMembersController.prototype.refreshSelectableUsers = function() {\n var users;\n this.importMoreUsersDisabled = this.isImportMoreUsersDisabled();\n if (this.importMoreUsersDisabled) {\n users = this.getDistinctSelectedTaigaUsers();\n this.selectableUsers = users.map(function(it) {\n return it.get('taigaUser');\n });\n this.displayEmailSelector = false;\n } else {\n this.selectableUsers = this.userContacts;\n this.displayEmailSelector = true;\n }\n return this.selectableUsers = this.selectableUsers.push(this.currentUser);\n };\n\n ImportProjectMembersController.prototype.isImportMoreUsersDisabled = function() {\n var total, users;\n users = this.getDistinctSelectedTaigaUsers();\n total = users.size + 2;\n if (this.project.get('is_private')) {\n return !this.currentUserService.canAddMembersPrivateProject(total).valid;\n } else {\n return !this.currentUserService.canAddMembersPublicProject(total).valid;\n }\n };\n\n return ImportProjectMembersController;\n\n })();\n\n angular.module('taigaProjects').controller('ImportProjectMembersCtrl', ImportProjectMembersController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ImportProjectMembersDirective;\n\n ImportProjectMembersDirective = function() {\n return {\n link: function(scope, elm, attr, ctrl) {\n ctrl.fetchUser();\n return scope.$watch('vm.members', ctrl.checkUsersLimit.bind(ctrl));\n },\n templateUrl: \"projects/create/import-project-members/import-project-members.html\",\n controller: \"ImportProjectMembersCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n members: '<',\n project: '<',\n onSubmit: '&',\n platform: '@',\n logo: '@',\n onCancel: '&'\n }\n };\n };\n\n ImportProjectMembersDirective.$inject = [];\n\n angular.module(\"taigaProjects\").directive(\"tgImportProjectMembers\", ImportProjectMembersDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ImportProjectSelectorController;\n\n ImportProjectSelectorController = (function() {\n function ImportProjectSelectorController() {}\n\n ImportProjectSelectorController.prototype.selectProject = function(project) {\n return this.onSelectProject({\n project: Immutable.fromJS(project)\n });\n };\n\n return ImportProjectSelectorController;\n\n })();\n\n angular.module('taigaProjects').controller('ImportProjectSelectorCtrl', ImportProjectSelectorController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ImportProjectSelectorDirective;\n\n ImportProjectSelectorDirective = function() {\n return {\n templateUrl: \"projects/create/import-project-selector/import-project-selector.html\",\n controller: \"ImportProjectSelectorCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n projects: '<',\n onCancel: '&',\n onSelectProject: '&',\n logo: '@',\n noProjectsMsg: '@',\n search: '@'\n }\n };\n };\n\n angular.module(\"taigaProjects\").directive(\"tgImportProjectSelector\", ImportProjectSelectorDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ImportTaigaController;\n\n ImportTaigaController = (function() {\n ImportTaigaController.$inject = ['$tgConfirm', '$tgResources', 'tgImportProjectService', '$translate', '$tgAnalytics'];\n\n function ImportTaigaController(confirm, rs, importProjectService, translate, analytics) {\n this.confirm = confirm;\n this.rs = rs;\n this.importProjectService = importProjectService;\n this.translate = translate;\n this.analytics = analytics;\n }\n\n ImportTaigaController.prototype.importTaiga = function(files) {\n var file, loader, promise;\n this.analytics.trackEvent(\"import\", \"taiga\", \"Start import from taiga\", 1);\n file = files[0];\n loader = this.confirm.loader(this.translate.instant('PROJECT.IMPORT.IN_PROGRESS.TITLE'), this.translate.instant('PROJECT.IMPORT.IN_PROGRESS.DESCRIPTION'), true);\n loader.start();\n promise = this.rs.projects[\"import\"](file, loader.update);\n this.importProjectService.importPromise(promise)[\"finally\"](function() {\n return loader.stop();\n });\n };\n\n return ImportTaigaController;\n\n })();\n\n angular.module(\"taigaProjects\").controller(\"ImportTaigaCtrl\", ImportTaigaController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ImportTaigaDirective;\n\n ImportTaigaDirective = function() {\n return {\n templateUrl: \"projects/create/import-taiga/import-taiga.html\",\n controller: \"ImportTaigaCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {}\n };\n };\n\n angular.module(\"taigaProjects\").directive(\"tgImportTaiga\", ImportTaigaDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var LbImportErrorDirective;\n\n LbImportErrorDirective = function(lightboxService) {\n var link;\n link = function(scope, el, attrs) {\n lightboxService.open(el);\n return scope.close = function() {\n lightboxService.close(el);\n };\n };\n return {\n templateUrl: \"projects/create/import/import-project-error-lb.html\",\n link: link\n };\n };\n\n LbImportErrorDirective.$inject = [\"lightboxService\"];\n\n angular.module(\"taigaProjects\").directive(\"tgLbImportError\", LbImportErrorDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ImportProjectController;\n\n ImportProjectController = (function() {\n ImportProjectController.$inject = ['tgTrelloImportService', 'tgJiraImportService', 'tgGithubImportService', 'tgAsanaImportService', '$location', '$window', '$routeParams', '$tgNavUrls', '$tgConfig', '$tgConfirm', '$tgAnalytics'];\n\n function ImportProjectController(trelloService, jiraService, githubService, asanaService, location, window, routeParams, tgNavUrls, config, confirm, analytics) {\n this.trelloService = trelloService;\n this.jiraService = jiraService;\n this.githubService = githubService;\n this.asanaService = asanaService;\n this.location = location;\n this.window = window;\n this.routeParams = routeParams;\n this.tgNavUrls = tgNavUrls;\n this.config = config;\n this.confirm = confirm;\n this.analytics = analytics;\n }\n\n ImportProjectController.prototype.start = function() {\n var asanaOauthToken, githubOauthToken, jiraOauthToken, jiraOauthVerifier, locationSearch, trelloOauthToken;\n this.token = null;\n this.from = this.routeParams.platform;\n locationSearch = this.location.search();\n if (this.from) {\n this.analytics.trackEvent(\"import\", this.from, \"Start import from \" + this.from, 1);\n }\n if (this.from === \"asana\") {\n asanaOauthToken = locationSearch.code;\n if (locationSearch.code) {\n asanaOauthToken = locationSearch.code;\n return this.asanaService.authorize(asanaOauthToken).then(((function(_this) {\n return function(token) {\n return _this.location.search({\n token: encodeURIComponent(JSON.stringify(token))\n });\n };\n })(this)), this.cancelCurrentImport.bind(this));\n } else {\n this.token = JSON.parse(decodeURIComponent(locationSearch.token));\n this.asanaService.setToken(this.token);\n }\n }\n if (this.from === 'trello') {\n if (locationSearch.oauth_verifier) {\n trelloOauthToken = locationSearch.oauth_verifier;\n return this.trelloService.authorize(trelloOauthToken).then(((function(_this) {\n return function(token) {\n return _this.location.search({\n token: token\n });\n };\n })(this)), this.cancelCurrentImport.bind(this));\n } else if (locationSearch.token) {\n this.token = locationSearch.token;\n this.trelloService.setToken(locationSearch.token);\n }\n }\n if (this.from === \"github\") {\n if (locationSearch.code) {\n githubOauthToken = locationSearch.code;\n return this.githubService.authorize(githubOauthToken).then(((function(_this) {\n return function(token) {\n return _this.location.search({\n token: token\n });\n };\n })(this)), this.cancelCurrentImport.bind(this));\n } else if (locationSearch.token) {\n this.token = locationSearch.token;\n this.githubService.setToken(locationSearch.token);\n }\n }\n if (this.from === \"jira\") {\n jiraOauthToken = locationSearch.oauth_token;\n if (jiraOauthToken) {\n jiraOauthVerifier = locationSearch.oauth_verifier;\n return this.jiraService.authorize(jiraOauthVerifier).then(((function(_this) {\n return function(data) {\n return _this.location.search({\n token: data.token,\n url: data.url\n });\n };\n })(this)), this.cancelCurrentImport.bind(this));\n } else {\n this.token = locationSearch.token;\n return this.jiraService.setToken(locationSearch.token, locationSearch.url);\n }\n }\n };\n\n ImportProjectController.prototype.select = function(from) {\n var callbackUri;\n if (from === \"trello\") {\n return this.trelloService.getAuthUrl().then((function(_this) {\n return function(url) {\n return _this.window.open(url, \"_self\");\n };\n })(this));\n } else if (from === \"jira\") {\n return this.jiraService.getAuthUrl(this.jiraUrl).then((function(_this) {\n return function(url) {\n return _this.window.open(url, \"_self\");\n };\n })(this), (function(_this) {\n return function(err) {\n return _this.confirm.notify('error', err);\n };\n })(this));\n } else if (from === \"github\") {\n callbackUri = this.location.absUrl() + \"/github\";\n return this.githubService.getAuthUrl(callbackUri).then((function(_this) {\n return function(url) {\n return _this.window.open(url, \"_self\");\n };\n })(this));\n } else if (from === \"asana\") {\n return this.asanaService.getAuthUrl().then((function(_this) {\n return function(url) {\n return _this.window.open(url, \"_self\");\n };\n })(this));\n } else {\n return this.from = from;\n }\n };\n\n ImportProjectController.prototype.unfoldOptions = function(options) {\n return this.unfoldedOptions = options;\n };\n\n ImportProjectController.prototype.isActiveImporter = function(importer) {\n switch (importer) {\n case \"asana\":\n return this.config.get('enableAsanaImporter');\n case \"github\":\n return this.config.get('enableGithubImporter');\n case \"jira\":\n return this.config.get('enableJiraImporter');\n case \"trello\":\n return this.config.get('enableTrelloImporter');\n default:\n return false;\n }\n };\n\n ImportProjectController.prototype.cancelCurrentImport = function() {\n return this.location.url(this.tgNavUrls.resolve('create-project-import'));\n };\n\n ImportProjectController.prototype.backToCreate = function() {\n return this.location.url(this.tgNavUrls.resolve('create-project'));\n };\n\n return ImportProjectController;\n\n })();\n\n angular.module(\"taigaProjects\").controller(\"ImportProjectCtrl\", ImportProjectController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ImportProjectDirective;\n\n ImportProjectDirective = function() {\n var link;\n link = function(scope, el, attr, ctrl) {\n return ctrl.start();\n };\n return {\n link: link,\n templateUrl: \"projects/create/import/import-project.html\",\n controller: \"ImportProjectCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n onCancelImport: '&'\n }\n };\n };\n\n ImportProjectDirective.$inject = [];\n\n angular.module(\"taigaProjects\").directive(\"tgImportProject\", ImportProjectDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ImportProjectService,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n ImportProjectService = (function(superClass) {\n extend(ImportProjectService, superClass);\n\n ImportProjectService.$inject = ['tgCurrentUserService', '$tgAuth', 'tgLightboxFactory', '$translate', '$tgConfirm', '$location', '$tgNavUrls'];\n\n function ImportProjectService(currentUserService, tgAuth, lightboxFactory, translate, confirm, location, tgNavUrls) {\n this.currentUserService = currentUserService;\n this.tgAuth = tgAuth;\n this.lightboxFactory = lightboxFactory;\n this.translate = translate;\n this.confirm = confirm;\n this.location = location;\n this.tgNavUrls = tgNavUrls;\n }\n\n ImportProjectService.prototype.importPromise = function(promise) {\n return promise.then(this.importSuccess.bind(this), this.importError.bind(this));\n };\n\n ImportProjectService.prototype.importSuccess = function(result) {\n var promise;\n promise = this.currentUserService.loadProjects();\n promise.then((function(_this) {\n return function() {\n var ctx, message, msg, title;\n if (result.status === 202) {\n title = _this.translate.instant('PROJECT.IMPORT.ASYNC_IN_PROGRESS_TITLE');\n message = _this.translate.instant('PROJECT.IMPORT.ASYNC_IN_PROGRESS_MESSAGE');\n _this.location.path(_this.tgNavUrls.resolve('home'));\n return _this.confirm.success(title, message);\n } else {\n ctx = {\n project: result.data.slug\n };\n _this.location.path(_this.tgNavUrls.resolve('project-admin-project-profile-details', ctx));\n msg = _this.translate.instant('PROJECT.IMPORT.SYNC_SUCCESS');\n return _this.confirm.notify('success', msg);\n }\n };\n })(this));\n return promise;\n };\n\n ImportProjectService.prototype.importError = function(result) {\n var promise;\n promise = this.tgAuth.refresh();\n promise.then((function(_this) {\n return function() {\n var errorMsg, ref, restrictionError;\n restrictionError = _this.getRestrictionError(result);\n if (restrictionError) {\n return _this.lightboxFactory.create('tg-lb-import-error', {\n \"class\": 'lightbox lightbox-import-error'\n }, restrictionError);\n } else {\n errorMsg = _this.translate.instant(\"PROJECT.IMPORT.ERROR\");\n if (result.status === 429) {\n errorMsg = _this.translate.instant(\"PROJECT.IMPORT.ERROR_TOO_MANY_REQUEST\");\n } else if ((ref = result.data) != null ? ref._error_message : void 0) {\n errorMsg = _this.translate.instant(\"PROJECT.IMPORT.ERROR_MESSAGE\", {\n error_message: result.data._error_message\n });\n }\n return _this.confirm.notify(\"error\", errorMsg);\n }\n };\n })(this));\n return promise;\n };\n\n ImportProjectService.prototype.getRestrictionError = function(result) {\n var errorKey, maxMemberships, membersError, privateError, publicError, user;\n if (result.headers) {\n errorKey = '';\n user = this.currentUserService.getUser();\n maxMemberships = null;\n if (result.headers.isPrivate) {\n privateError = !this.currentUserService.canCreatePrivateProjects().valid;\n if (user.get('max_memberships_private_projects') !== null && result.headers.memberships >= user.get('max_memberships_private_projects')) {\n membersError = true;\n } else {\n membersError = false;\n }\n if (privateError && membersError) {\n errorKey = 'private-space-members';\n maxMemberships = user.get('max_memberships_private_projects');\n } else if (privateError) {\n errorKey = 'private-space';\n } else if (membersError) {\n errorKey = 'private-members';\n maxMemberships = user.get('max_memberships_private_projects');\n }\n } else {\n publicError = !this.currentUserService.canCreatePublicProjects().valid;\n if (user.get('max_memberships_public_projects') !== null && result.headers.memberships >= user.get('max_memberships_public_projects')) {\n membersError = true;\n } else {\n membersError = false;\n }\n if (publicError && membersError) {\n errorKey = 'public-space-members';\n maxMemberships = user.get('max_memberships_public_projects');\n } else if (publicError) {\n errorKey = 'public-space';\n } else if (membersError) {\n errorKey = 'public-members';\n maxMemberships = user.get('max_memberships_public_projects');\n }\n }\n if (!errorKey) {\n return false;\n }\n return {\n key: errorKey,\n values: {\n max_memberships: maxMemberships,\n members: result.headers.memberships\n }\n };\n } else {\n return false;\n }\n };\n\n return ImportProjectService;\n\n })(taiga.Service);\n\n angular.module(\"taigaProjects\").service(\"tgImportProjectService\", ImportProjectService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var InviteMembersController;\n\n InviteMembersController = (function() {\n function InviteMembersController() {}\n\n InviteMembersController.$inject = [];\n\n InviteMembersController.prototype.isDisabled = function(id) {\n return this.invitedMembers.indexOf(id) === -1;\n };\n\n return InviteMembersController;\n\n })();\n\n angular.module(\"taigaProjects\").controller(\"InviteMembersCtrl\", InviteMembersController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var InviteMembersDirective;\n\n InviteMembersDirective = function() {\n var link;\n link = function(scope, el, attr, ctrl) {};\n return {\n link: link,\n templateUrl: \"projects/create/invite-members/invite-members.html\",\n controller: \"InviteMembersCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n invitedMembers: '<',\n members: '<',\n onToggleInvitedMember: '&'\n }\n };\n };\n\n InviteMembersDirective.$inject = [];\n\n angular.module(\"taigaProjects\").directive(\"tgInviteMembers\", InviteMembersDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var SingleMemberDirective;\n\n SingleMemberDirective = function() {\n return {\n templateUrl: \"projects/create/invite-members/single-member/single-member.html\",\n scope: {\n disabled: \"<\",\n avatar: \"=\"\n }\n };\n };\n\n SingleMemberDirective.$inject = [];\n\n angular.module(\"taigaProjects\").directive(\"tgSingleMember\", SingleMemberDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var JiraImportProjectFormController;\n\n JiraImportProjectFormController = (function() {\n JiraImportProjectFormController.$inject = [\"tgCurrentUserService\"];\n\n function JiraImportProjectFormController(currentUserService) {\n this.currentUserService = currentUserService;\n this.canCreatePublicProjects = this.currentUserService.canCreatePublicProjects();\n this.canCreatePrivateProjects = this.currentUserService.canCreatePrivateProjects();\n this.projectForm = this.project.toJS();\n this.projectForm.is_private = false;\n this.projectForm.keepExternalReference = false;\n if (this.projectForm.importer_type === \"agile\") {\n this.projectForm.project_type = null;\n } else {\n this.projectForm.project_type = \"scrum\";\n }\n this.projectForm.create_subissues = true;\n if (!this.canCreatePublicProjects.valid && this.canCreatePrivateProjects.valid) {\n this.projectForm.is_private = true;\n }\n }\n\n JiraImportProjectFormController.prototype.checkUsersLimit = function() {\n this.limitMembersPrivateProject = this.currentUserService.canAddMembersPrivateProject(this.members.size);\n return this.limitMembersPublicProject = this.currentUserService.canAddMembersPublicProject(this.members.size);\n };\n\n JiraImportProjectFormController.prototype.saveForm = function() {\n return this.onSaveProjectDetails({\n project: Immutable.fromJS(this.projectForm)\n });\n };\n\n JiraImportProjectFormController.prototype.canCreateProject = function() {\n if (this.projectForm.is_private) {\n return this.canCreatePrivateProjects.valid;\n } else {\n return this.canCreatePublicProjects.valid;\n }\n };\n\n JiraImportProjectFormController.prototype.isDisabled = function() {\n return !this.canCreateProject();\n };\n\n return JiraImportProjectFormController;\n\n })();\n\n angular.module('taigaProjects').controller('JiraImportProjectFormCtrl', JiraImportProjectFormController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var JiraImportProjectFormDirective;\n\n JiraImportProjectFormDirective = function() {\n return {\n link: function(scope, elm, attr, ctrl) {\n return scope.$watch('vm.members', ctrl.checkUsersLimit.bind(ctrl));\n },\n templateUrl: \"projects/create/jira-import/jira-import-project-form/jira-import-project-form.html\",\n controller: \"JiraImportProjectFormCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n members: '<',\n project: '<',\n onSaveProjectDetails: '&',\n onCancelForm: '&',\n fetchingUsers: '<'\n }\n };\n };\n\n JiraImportProjectFormDirective.$inject = [];\n\n angular.module(\"taigaProjects\").directive(\"tgJiraImportProjectForm\", JiraImportProjectFormDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var JiraImportController;\n\n JiraImportController = (function() {\n JiraImportController.$inject = ['tgJiraImportService', '$tgConfirm', '$translate', 'tgImportProjectService'];\n\n function JiraImportController(jiraImportService, confirm, translate, importProjectService) {\n this.jiraImportService = jiraImportService;\n this.confirm = confirm;\n this.translate = translate;\n this.importProjectService = importProjectService;\n this.step = 'autorization-jira';\n this.project = null;\n taiga.defineImmutableProperty(this, 'projects', (function(_this) {\n return function() {\n return _this.jiraImportService.projects;\n };\n })(this));\n taiga.defineImmutableProperty(this, 'members', (function(_this) {\n return function() {\n return _this.jiraImportService.projectUsers;\n };\n })(this));\n }\n\n JiraImportController.prototype.startProjectSelector = function() {\n this.step = 'project-select-jira';\n return this.jiraImportService.fetchProjects();\n };\n\n JiraImportController.prototype.onSelectProject = function(project) {\n this.step = 'project-form-jira';\n this.project = project;\n this.fetchingUsers = true;\n return this.jiraImportService.fetchUsers(this.project.get('id')).then((function(_this) {\n return function() {\n return _this.fetchingUsers = false;\n };\n })(this));\n };\n\n JiraImportController.prototype.onSaveProjectDetails = function(project) {\n this.project = project;\n return this.step = 'project-members-jira';\n };\n\n JiraImportController.prototype.onCancelMemberSelection = function() {\n return this.step = 'project-form-jira';\n };\n\n JiraImportController.prototype.startImport = function(users) {\n var loader, projectType, promise;\n loader = this.confirm.loader(this.translate.instant('PROJECT.IMPORT.IN_PROGRESS.TITLE'), this.translate.instant('PROJECT.IMPORT.IN_PROGRESS.DESCRIPTION'), true);\n loader.start();\n projectType = this.project.get('project_type');\n if (projectType === \"issues\" && this.project.get('create_subissues')) {\n projectType = \"issues-with-subissues\";\n }\n promise = this.jiraImportService.importProject(this.project.get('name'), this.project.get('description'), this.project.get('id'), users, this.project.get('keepExternalReference'), this.project.get('is_private'), projectType, this.project.get('importer_type'));\n return this.importProjectService.importPromise(promise).then((function(_this) {\n return function() {\n return loader.stop();\n };\n })(this));\n };\n\n JiraImportController.prototype.submitUserSelection = function(users) {\n this.startImport(users);\n return null;\n };\n\n return JiraImportController;\n\n })();\n\n angular.module('taigaProjects').controller('JiraImportCtrl', JiraImportController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var JiraImportDirective;\n\n JiraImportDirective = function() {\n return {\n link: function(scope, elm, attrs, ctrl) {\n return ctrl.startProjectSelector();\n },\n templateUrl: \"projects/create/jira-import/jira-import.html\",\n controller: \"JiraImportCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n onCancel: '&'\n }\n };\n };\n\n JiraImportDirective.$inject = [];\n\n angular.module(\"taigaProjects\").directive(\"tgJiraImport\", JiraImportDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var JiraImportService,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n JiraImportService = (function(superClass) {\n extend(JiraImportService, superClass);\n\n JiraImportService.$inject = ['tgResources', '$location', '$q'];\n\n function JiraImportService(resources, location, q) {\n this.resources = resources;\n this.location = location;\n this.q = q;\n this.projects = Immutable.List();\n this.projectUsers = Immutable.List();\n }\n\n JiraImportService.prototype.setToken = function(token, url) {\n this.token = token;\n return this.url = url;\n };\n\n JiraImportService.prototype.fetchProjects = function() {\n return this.resources.jiraImporter.listProjects(this.url, this.token).then((function(_this) {\n return function(projects) {\n return _this.projects = projects;\n };\n })(this));\n };\n\n JiraImportService.prototype.fetchUsers = function(projectId) {\n return this.resources.jiraImporter.listUsers(this.url, this.token, projectId).then((function(_this) {\n return function(users) {\n return _this.projectUsers = users;\n };\n })(this));\n };\n\n JiraImportService.prototype.importProject = function(name, description, projectId, userBindings, keepExternalReference, isPrivate, projectType, importerType) {\n return this.resources.jiraImporter.importProject(this.url, this.token, name, description, projectId, userBindings, keepExternalReference, isPrivate, projectType, importerType);\n };\n\n JiraImportService.prototype.getAuthUrl = function(url) {\n return this.q((function(_this) {\n return function(resolve, reject) {\n return _this.resources.jiraImporter.getAuthUrl(url).then(function(response) {\n _this.authUrl = response.data.url;\n return resolve(_this.authUrl);\n }, function(err) {\n return reject(err.data._error_message);\n });\n };\n })(this));\n };\n\n JiraImportService.prototype.authorize = function(oauth_verifier) {\n return this.q((function(_this) {\n return function(resolve, reject) {\n return _this.resources.jiraImporter.authorize(oauth_verifier).then((function(response) {\n _this.token = response.data.token;\n _this.url = response.data.url;\n return resolve(response.data);\n }), function(error) {\n return reject(new Error(error.status));\n });\n };\n })(this));\n };\n\n return JiraImportService;\n\n })(taiga.Service);\n\n angular.module(\"taigaProjects\").service(\"tgJiraImportService\", JiraImportService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var NewsletterEmailLightboxDirective;\n\n NewsletterEmailLightboxDirective = function(lightboxService, lightboxKeyboardNavigationService, $storageService, $rs, $currentUserService, $rs2, $confirm) {\n var link;\n link = function(scope, el, attrs, ctrl) {\n lightboxService.open(el);\n scope.dontAsk = false;\n scope.preference = false;\n scope.$watch('vm.visible', function(visible) {\n if (visible && !el.hasClass('open')) {\n ctrl.start();\n return lightboxService.open(el, null, scope.vm.onClose).then(function() {\n el.find('input').focus();\n return lightboxKeyboardNavigationService.init(el);\n });\n } else if (!visible && el.hasClass('open')) {\n return lightboxService.close(el).then(function() {\n ctrl.userEmail = '';\n return ctrl.usersSearch = '';\n });\n }\n });\n scope.closeLightbox = function() {\n return lightboxService.close(el);\n };\n return scope.setEmail = function() {\n if (scope.preference) {\n return $rs2.onPremise.subscribeOnPremiseNewsletter({\n \"email\": $currentUserService.getUser().get('email'),\n \"full_name\": $currentUserService.getUser().get('full_name'),\n \"origin_form\": 'Newsletter sign-up create'\n }).then((function(_this) {\n return function() {\n $rs.user.setUserStorage('dont_ask_premise_newsletter', true);\n return scope.closeLightbox();\n };\n })(this))[\"catch\"]((function(_this) {\n return function() {\n return $confirm.notify(\"light-error\", \"\");\n };\n })(this));\n } else {\n $rs.user.setUserStorage('dont_ask_premise_newsletter', scope.dontAsk);\n return scope.closeLightbox();\n }\n };\n };\n return {\n scope: {\n visible: '<',\n openNewsletter: '<',\n onClose: '&',\n onSelectUser: '&'\n },\n templateUrl: 'projects/create/newsletter-email-lightbox/newsletter-email-lightbox.html',\n link: link\n };\n };\n\n NewsletterEmailLightboxDirective.$inject = ['lightboxService', 'lightboxKeyboardNavigationService', \"$tgStorage\", \"tgResources\", \"tgCurrentUserService\", \"tgResources\", \"$tgConfirm\"];\n\n angular.module(\"taigaProjects\").directive(\"tgNewsletterEmailLightbox\", NewsletterEmailLightboxDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var SelectImportUserLightboxCtrl;\n\n SelectImportUserLightboxCtrl = (function() {\n SelectImportUserLightboxCtrl.$inject = [];\n\n function SelectImportUserLightboxCtrl() {}\n\n SelectImportUserLightboxCtrl.prototype.start = function() {\n this.mode = 'search';\n return this.invalid = false;\n };\n\n SelectImportUserLightboxCtrl.prototype.assignUser = function() {\n return this.onSelectUser({\n user: this.user,\n taigaUser: this.userEmail\n });\n };\n\n SelectImportUserLightboxCtrl.prototype.selectUser = function(taigaUser) {\n return this.onSelectUser({\n user: this.user,\n taigaUser: Immutable.fromJS(taigaUser)\n });\n };\n\n return SelectImportUserLightboxCtrl;\n\n })();\n\n angular.module('taigaProjects').controller('SelectImportUserLightboxCtrl', SelectImportUserLightboxCtrl);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var SelectImportUserLightboxDirective;\n\n SelectImportUserLightboxDirective = function(lightboxService, lightboxKeyboardNavigationService) {\n var link;\n link = function(scope, el, attrs, ctrl) {\n return scope.$watch('vm.visible', function(visible) {\n if (visible && !el.hasClass('open')) {\n ctrl.start();\n return lightboxService.open(el, null, scope.vm.onClose).then(function() {\n el.find('input').focus();\n return lightboxKeyboardNavigationService.init(el);\n });\n } else if (!visible && el.hasClass('open')) {\n return lightboxService.close(el).then(function() {\n ctrl.userEmail = '';\n return ctrl.usersSearch = '';\n });\n }\n });\n };\n return {\n controller: \"SelectImportUserLightboxCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n user: '<',\n visible: '<',\n onClose: '&',\n onSelectUser: '&',\n selectableUsers: '<',\n isPrivate: '<',\n limitMembersPrivateProject: '<',\n limitMembersPublicProject: '<',\n displayEmailSelector: '<'\n },\n templateUrl: 'projects/create/select-import-user-lightbox/select-import-user-lightbox.html',\n link: link\n };\n };\n\n SelectImportUserLightboxDirective.$inject = ['lightboxService', 'lightboxKeyboardNavigationService'];\n\n angular.module(\"taigaProjects\").directive(\"tgSelectImportUserLightbox\", SelectImportUserLightboxDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TrelloImportProjectFormController;\n\n TrelloImportProjectFormController = (function() {\n TrelloImportProjectFormController.$inject = [\"tgCurrentUserService\"];\n\n function TrelloImportProjectFormController(currentUserService) {\n this.currentUserService = currentUserService;\n this.canCreatePublicProjects = this.currentUserService.canCreatePublicProjects();\n this.canCreatePrivateProjects = this.currentUserService.canCreatePrivateProjects();\n this.projectForm = this.project.toJS();\n this.platformName = \"Trello\";\n this.projectForm.is_private = false;\n this.projectForm.keepExternalReference = false;\n if (!this.canCreatePublicProjects.valid && this.canCreatePrivateProjects.valid) {\n this.projectForm.is_private = true;\n }\n }\n\n TrelloImportProjectFormController.prototype.checkUsersLimit = function() {\n this.limitMembersPrivateProject = this.currentUserService.canAddMembersPrivateProject(this.members.size);\n return this.limitMembersPublicProject = this.currentUserService.canAddMembersPublicProject(this.members.size);\n };\n\n TrelloImportProjectFormController.prototype.saveForm = function() {\n return this.onSaveProjectDetails({\n project: Immutable.fromJS(this.projectForm)\n });\n };\n\n TrelloImportProjectFormController.prototype.canCreateProject = function() {\n if (this.projectForm.is_private) {\n return this.canCreatePrivateProjects.valid;\n } else {\n return this.canCreatePublicProjects.valid;\n }\n };\n\n TrelloImportProjectFormController.prototype.isDisabled = function() {\n return !this.canCreateProject();\n };\n\n return TrelloImportProjectFormController;\n\n })();\n\n angular.module('taigaProjects').controller('TrelloImportProjectFormCtrl', TrelloImportProjectFormController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TrelloImportProjectFormDirective;\n\n TrelloImportProjectFormDirective = function() {\n return {\n link: function(scope, elm, attr, ctrl) {\n return scope.$watch('vm.members', ctrl.checkUsersLimit.bind(ctrl));\n },\n templateUrl: \"projects/create/trello-import/trello-import-project-form/trello-import-project-form.html\",\n controller: \"TrelloImportProjectFormCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n members: '<',\n project: '<',\n onSaveProjectDetails: '&',\n onCancelForm: '&',\n fetchingUsers: '<'\n }\n };\n };\n\n TrelloImportProjectFormDirective.$inject = [];\n\n angular.module(\"taigaProjects\").directive(\"tgTrelloImportProjectForm\", TrelloImportProjectFormDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TrelloImportController;\n\n TrelloImportController = (function() {\n TrelloImportController.$inject = ['tgTrelloImportService', '$tgConfirm', '$translate', 'tgImportProjectService'];\n\n function TrelloImportController(trelloImportService, confirm, translate, importProjectService) {\n this.trelloImportService = trelloImportService;\n this.confirm = confirm;\n this.translate = translate;\n this.importProjectService = importProjectService;\n this.project = null;\n taiga.defineImmutableProperty(this, 'projects', (function(_this) {\n return function() {\n return _this.trelloImportService.projects;\n };\n })(this));\n taiga.defineImmutableProperty(this, 'members', (function(_this) {\n return function() {\n return _this.trelloImportService.projectUsers;\n };\n })(this));\n }\n\n TrelloImportController.prototype.startProjectSelector = function() {\n return this.trelloImportService.fetchProjects().then((function(_this) {\n return function() {\n return _this.step = 'project-select-trello';\n };\n })(this));\n };\n\n TrelloImportController.prototype.onSelectProject = function(project) {\n this.step = 'project-form-trello';\n this.project = project;\n this.fetchingUsers = true;\n return this.trelloImportService.fetchUsers(this.project.get('id')).then((function(_this) {\n return function() {\n return _this.fetchingUsers = false;\n };\n })(this));\n };\n\n TrelloImportController.prototype.onSaveProjectDetails = function(project) {\n this.project = project;\n return this.step = 'project-members-trello';\n };\n\n TrelloImportController.prototype.onCancelMemberSelection = function() {\n return this.step = 'project-form-trello';\n };\n\n TrelloImportController.prototype.startImport = function(users) {\n var loader, promise;\n loader = this.confirm.loader(this.translate.instant('PROJECT.IMPORT.IN_PROGRESS.TITLE'), this.translate.instant('PROJECT.IMPORT.IN_PROGRESS.DESCRIPTION'), true);\n loader.start();\n promise = this.trelloImportService.importProject(this.project.get('name'), this.project.get('description'), this.project.get('id'), users, this.project.get('keepExternalReference'), this.project.get('is_private'));\n return this.importProjectService.importPromise(promise).then((function(_this) {\n return function() {\n return loader.stop();\n };\n })(this));\n };\n\n TrelloImportController.prototype.submitUserSelection = function(users) {\n this.startImport(users);\n return null;\n };\n\n return TrelloImportController;\n\n })();\n\n angular.module('taigaProjects').controller('TrelloImportCtrl', TrelloImportController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TrelloImportDirective;\n\n TrelloImportDirective = function() {\n return {\n link: function(scope, elm, attrs, ctrl) {\n return ctrl.startProjectSelector();\n },\n templateUrl: \"projects/create/trello-import/trello-import.html\",\n controller: \"TrelloImportCtrl\",\n controllerAs: \"vm\",\n bindToController: true,\n scope: {\n onCancel: '&'\n }\n };\n };\n\n TrelloImportDirective.$inject = [];\n\n angular.module(\"taigaProjects\").directive(\"tgTrelloImport\", TrelloImportDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TrelloImportService,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n TrelloImportService = (function(superClass) {\n extend(TrelloImportService, superClass);\n\n TrelloImportService.$inject = ['tgResources', '$q'];\n\n function TrelloImportService(resources, q) {\n this.resources = resources;\n this.q = q;\n this.projects = Immutable.List();\n this.projectUsers = Immutable.List();\n this.token = null;\n }\n\n TrelloImportService.prototype.setToken = function(token) {\n return this.token = token;\n };\n\n TrelloImportService.prototype.fetchProjects = function() {\n return this.resources.trelloImporter.listProjects(this.token).then((function(_this) {\n return function(projects) {\n return _this.projects = projects;\n };\n })(this));\n };\n\n TrelloImportService.prototype.fetchUsers = function(projectId) {\n return this.resources.trelloImporter.listUsers(this.token, projectId).then((function(_this) {\n return function(users) {\n return _this.projectUsers = users;\n };\n })(this));\n };\n\n TrelloImportService.prototype.importProject = function(name, description, projectId, userBindings, keepExternalReference, isPrivate) {\n return this.resources.trelloImporter.importProject(this.token, name, description, projectId, userBindings, keepExternalReference, isPrivate);\n };\n\n TrelloImportService.prototype.getAuthUrl = function() {\n return this.q((function(_this) {\n return function(resolve) {\n return _this.resources.trelloImporter.getAuthUrl().then(function(response) {\n _this.authUrl = response.data.url;\n return resolve(_this.authUrl);\n });\n };\n })(this));\n };\n\n TrelloImportService.prototype.authorize = function(verifyCode) {\n return this.q((function(_this) {\n return function(resolve, reject) {\n return _this.resources.trelloImporter.authorize(verifyCode).then((function(response) {\n _this.token = response.data.token;\n return resolve(_this.token);\n }), function(error) {\n return reject(new Error(error.status));\n });\n };\n })(this));\n };\n\n return TrelloImportService;\n\n })(taiga.Service);\n\n angular.module(\"taigaProjects\").service(\"tgTrelloImportService\", TrelloImportService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var WarningUserImportDirective;\n\n WarningUserImportDirective = function(lightboxService, lightboxKeyboardNavigationService) {\n return {\n link: function(scope, el, attr) {\n return scope.$watch('visible', function(visible) {\n if (visible && !el.hasClass('open')) {\n return lightboxService.open(el, scope.onClose).then(function() {\n el.find('input').focus();\n return lightboxKeyboardNavigationService.init(el);\n });\n } else if (!visible && el.hasClass('open')) {\n return lightboxService.close(el);\n }\n });\n },\n templateUrl: \"projects/create/warning-user-import-lightbox/warning-user-import-lightbox.html\",\n scope: {\n visible: '<',\n onClose: '&',\n onConfirm: '&'\n }\n };\n };\n\n WarningUserImportDirective.$inject = ['lightboxService', 'lightboxKeyboardNavigationService'];\n\n angular.module(\"taigaProjects\").directive(\"tgWarningUserImportLightbox\", WarningUserImportDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProjectsListingController;\n\n ProjectsListingController = (function() {\n ProjectsListingController.$inject = [\"tgCurrentUserService\"];\n\n function ProjectsListingController(currentUserService) {\n this.currentUserService = currentUserService;\n taiga.defineImmutableProperty(this, \"projects\", (function(_this) {\n return function() {\n return _this.currentUserService.projects.get(\"all\");\n };\n })(this));\n }\n\n return ProjectsListingController;\n\n })();\n\n angular.module(\"taigaProjects\").controller(\"ProjectsListing\", ProjectsListingController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProjectRouterController;\n\n ProjectRouterController = (function() {\n ProjectRouterController.$inject = [\"$routeParams\", \"$location\", \"tgProjectService\", \"$tgResources\", \"$tgSections\"];\n\n function ProjectRouterController(routeParams, location, projectService, rs, tgSections) {\n this.routeParams = routeParams;\n this.location = location;\n this.projectService = projectService;\n this.rs = rs;\n this.tgSections = tgSections;\n this.getProjectHomepage().then((function(_this) {\n return function(section) {\n if (section) {\n return _this.location.url(\"project/\" + _this.routeParams.pslug + \"/\" + section);\n } else {\n return _this.gotoDefaultProjectHomepage();\n }\n };\n })(this)).then(null, function() {\n return this.gotoDefaultProjectHomepage();\n });\n }\n\n ProjectRouterController.prototype.gotoDefaultProjectHomepage = function() {\n return this.location.url(\"project/\" + this.routeParams.pslug + \"/timeline\");\n };\n\n ProjectRouterController.prototype.getProjectHomepage = function() {\n var project;\n project = this.projectService.project.toJS();\n return this.rs.userProjectSettings.list({\n project: project.id\n }).then((function(_this) {\n return function(userProjectSettings) {\n var settings;\n settings = _.find(userProjectSettings, {\n \"project\": project.id\n });\n if (!settings) {\n return;\n }\n return _this.tgSections.getPath(project.slug, settings.homepage);\n };\n })(this));\n };\n\n return ProjectRouterController;\n\n })();\n\n angular.module(\"taigaProjects\").controller(\"ProjectRouter\", ProjectRouterController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProjectController;\n\n ProjectController = (function() {\n ProjectController.$inject = [\"$routeParams\", \"tgAppMetaService\", \"$tgAuth\", \"$translate\", \"tgProjectService\", \"$tgConfig\", \"$tgNavUrls\", \"$location\"];\n\n function ProjectController(routeParams, appMetaService, auth, translate, projectService, config, navUrls, location) {\n var nextUrl;\n this.routeParams = routeParams;\n this.appMetaService = appMetaService;\n this.auth = auth;\n this.translate = translate;\n this.projectService = projectService;\n this.config = config;\n this.navUrls = navUrls;\n this.location = location;\n this.user = this.auth.userData;\n taiga.defineImmutableProperty(this, \"project\", (function(_this) {\n return function() {\n return _this.projectService.project;\n };\n })(this));\n taiga.defineImmutableProperty(this, \"members\", (function(_this) {\n return function() {\n return _this.projectService.activeMembers;\n };\n })(this));\n taiga.defineImmutableProperty(this, \"isAuthenticated\", (function(_this) {\n return function() {\n return !!_this.user;\n };\n })(this));\n nextUrl = this.location.url();\n this.registerUrl = (this.navUrls.resolve(\"register\")) + \"?next=\" + nextUrl;\n this.loginUrl = (this.navUrls.resolve(\"login\")) + \"?next=\" + nextUrl;\n this.publicRegisterEnabled = this.config.get(\"publicRegisterEnabled\");\n this.appMetaService.setfn(this._setMeta.bind(this));\n }\n\n ProjectController.prototype._setMeta = function() {\n var ctx;\n if (!this.project) {\n return null;\n }\n ctx = {\n projectName: this.project.get(\"name\")\n };\n return {\n title: this.translate.instant(\"PROJECT.PAGE_TITLE\", ctx),\n description: this.project.get(\"description\")\n };\n };\n\n return ProjectController;\n\n })();\n\n angular.module(\"taigaProjects\").controller(\"Project\", ProjectController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProjectsService, groupBy, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n ProjectsService = (function(superClass) {\n extend(ProjectsService, superClass);\n\n ProjectsService.$inject = [\"tgResources\", \"$projectUrl\"];\n\n function ProjectsService(rs, projectUrl) {\n this.rs = rs;\n this.projectUrl = projectUrl;\n }\n\n ProjectsService.prototype.create = function(data) {\n return this.rs.projects.create(data);\n };\n\n ProjectsService.prototype.duplicate = function(projectId, data) {\n return this.rs.projects.duplicate(projectId, data);\n };\n\n ProjectsService.prototype.getProjectBySlug = function(projectSlug) {\n return this.rs.projects.getProjectBySlug(projectSlug).then((function(_this) {\n return function(project) {\n return _this._decorate(project);\n };\n })(this));\n };\n\n ProjectsService.prototype.getProjectStats = function(projectId) {\n return this.rs.projects.getProjectStats(projectId);\n };\n\n ProjectsService.prototype.getProjectsByUserId = function(userId, paginate) {\n return this.rs.projects.getProjectsByUserId(userId, paginate).then((function(_this) {\n return function(projects) {\n return projects.map(_this._decorate.bind(_this));\n };\n })(this));\n };\n\n ProjectsService.prototype.getListProjectsByUserId = function(userId, paginate) {\n return this.rs.projects.getListProjectsByUserId(userId, paginate).then((function(_this) {\n return function(projects) {\n return projects.map(_this._decorate.bind(_this));\n };\n })(this));\n };\n\n ProjectsService.prototype._decorate = function(project) {\n var url;\n url = this.projectUrl.get(project.toJS());\n project = project.set(\"url\", url);\n return project;\n };\n\n ProjectsService.prototype.bulkUpdateProjectsOrder = function(sortData) {\n return this.rs.projects.bulkUpdateOrder(sortData);\n };\n\n ProjectsService.prototype.transferValidateToken = function(projectId, token) {\n return this.rs.projects.transferValidateToken(projectId, token);\n };\n\n ProjectsService.prototype.transferAccept = function(projectId, token, reason) {\n return this.rs.projects.transferAccept(projectId, token, reason);\n };\n\n ProjectsService.prototype.transferReject = function(projectId, token, reason) {\n return this.rs.projects.transferReject(projectId, token, reason);\n };\n\n return ProjectsService;\n\n })(taiga.Service);\n\n angular.module(\"taigaProjects\").service(\"tgProjectsService\", ProjectsService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CantOwnProjectExplanationDirective;\n\n CantOwnProjectExplanationDirective = function() {\n return {\n templateUrl: \"projects/transfer/cant-own-project-explanation.html\"\n };\n };\n\n angular.module(\"taigaProjects\").directive(\"tgCantOwnProjectExplanation\", CantOwnProjectExplanationDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TransferProject, module;\n\n module = angular.module('taigaProjects');\n\n TransferProject = (function() {\n TransferProject.$inject = [\"$routeParams\", \"tgProjectsService\", \"tgProjectService\", \"$location\", \"$tgAuth\", \"tgCurrentUserService\", \"$tgNavUrls\", \"$translate\", \"$tgConfirm\", \"tgErrorHandlingService\"];\n\n function TransferProject(routeParams, projectsService, projectService, location, authService, currentUserService, navUrls, translate, confirmService, errorHandlingService) {\n this.routeParams = routeParams;\n this.projectsService = projectsService;\n this.projectService = projectService;\n this.location = location;\n this.authService = authService;\n this.currentUserService = currentUserService;\n this.navUrls = navUrls;\n this.translate = translate;\n this.confirmService = confirmService;\n this.errorHandlingService = errorHandlingService;\n }\n\n TransferProject.prototype.initialize = function() {\n this.projectId = this.project.get(\"id\");\n this.token = this.routeParams.token;\n this.showAddComment = false;\n return this._refreshUserData();\n };\n\n TransferProject.prototype._validateToken = function() {\n return this.projectsService.transferValidateToken(this.projectId, this.token).then(null, (function(_this) {\n return function(data, status) {\n return _this.errorHandlingService.notfound();\n };\n })(this));\n };\n\n TransferProject.prototype._refreshUserData = function() {\n return this.authService.refresh().then((function(_this) {\n return function() {\n _this._validateToken();\n _this._setProjectData();\n return _this._checkOwnerData();\n };\n })(this));\n };\n\n TransferProject.prototype._setProjectData = function() {\n return this.canBeOwnedByUser = this.currentUserService.canOwnProject(this.project);\n };\n\n TransferProject.prototype._checkOwnerData = function() {\n var currentUser, maxMemberships;\n currentUser = this.currentUserService.getUser();\n if (this.project.get('is_private')) {\n this.currentProjects = currentUser.get('total_private_projects');\n this.maxProjects = currentUser.get('max_private_projects');\n maxMemberships = currentUser.get('max_memberships_private_projects');\n if (this.maxProjects === null) {\n this.maxProjects = this.translate.instant('ADMIN.PROJECT_TRANSFER.UNLIMITED_PROJECTS');\n this.ownerMessage = 'ADMIN.PROJECT_TRANSFER.OWNER_MESSAGE.PRIVATE';\n } else {\n if (this.currentProjects < this.maxProjects) {\n this.ownerMessage = 'ADMIN.PROJECT_TRANSFER.OWNER_MESSAGE.PRIVATE';\n } else {\n this.ownerMessage = 'ADMIN.PROJECT_TRANSFER.OWNER_MESSAGE.PRIVATE_EXCEEDED';\n }\n }\n } else {\n this.currentProjects = currentUser.get('total_public_projects');\n this.maxProjects = currentUser.get('max_public_projects');\n maxMemberships = currentUser.get('max_memberships_public_projects');\n if (this.maxProjects === null) {\n this.maxProjects = this.translate.instant('ADMIN.PROJECT_TRANSFER.UNLIMITED_PROJECTS');\n this.ownerMessage = 'ADMIN.PROJECT_TRANSFER.OWNER_MESSAGE.PUBLIC';\n } else {\n if (this.currentProjects < this.maxProjects) {\n this.ownerMessage = 'ADMIN.PROJECT_TRANSFER.OWNER_MESSAGE.PUBLIC';\n } else {\n this.ownerMessage = 'ADMIN.PROJECT_TRANSFER.OWNER_MESSAGE.PUBLIC_EXCEEDED';\n }\n }\n }\n return this.validNumberOfMemberships = maxMemberships === null || this.project.get('total_memberships') <= maxMemberships;\n };\n\n TransferProject.prototype.transferAccept = function(token, reason) {\n this.loadingAccept = true;\n return this.projectsService.transferAccept(this.project.get(\"id\"), token, reason).then((function(_this) {\n return function() {\n return _this.projectService.fetchProject().then(function() {\n var newUrl;\n newUrl = _this.navUrls.resolve(\"project-admin-project-profile-details\", {\n project: _this.project.get(\"slug\")\n });\n _this.loadingAccept = false;\n _this.location.path(newUrl);\n _this.confirmService.notify(\"success\", _this.translate.instant(\"ADMIN.PROJECT_TRANSFER.ACCEPTED_PROJECT_OWNERNSHIP\"), '', 5000);\n });\n };\n })(this));\n };\n\n TransferProject.prototype.transferReject = function(token, reason) {\n this.loadingReject = true;\n return this.projectsService.transferReject(this.project.get(\"id\"), token, reason).then((function(_this) {\n return function() {\n var newUrl;\n newUrl = _this.navUrls.resolve(\"home\", {\n project: _this.project.get(\"slug\")\n });\n _this.loadingReject = false;\n _this.location.path(newUrl);\n _this.confirmService.notify(\"success\", _this.translate.instant(\"ADMIN.PROJECT_TRANSFER.REJECTED_PROJECT_OWNERNSHIP\"), '', 5000);\n };\n })(this));\n };\n\n TransferProject.prototype.addComment = function() {\n return this.showAddComment = true;\n };\n\n TransferProject.prototype.hideComment = function() {\n this.showAddComment = false;\n return this.reason = '';\n };\n\n return TransferProject;\n\n })();\n\n module.controller(\"TransferProjectController\", TransferProject);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var TransferProjectDirective, module;\n\n module = angular.module('taigaProjects');\n\n TransferProjectDirective = function() {\n var link;\n link = function(scope, el, attrs, ctrl) {\n return ctrl.initialize();\n };\n return {\n link: link,\n scope: {},\n bindToController: {\n project: \"=\"\n },\n templateUrl: \"projects/transfer/transfer-project.html\",\n controller: 'TransferProjectController',\n controllerAs: 'vm'\n };\n };\n\n module.directive('tgTransferProject', TransferProjectDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var Resource, module, sizeFormat, taiga;\n\n taiga = this.taiga;\n\n sizeFormat = this.taiga.sizeFormat;\n\n Resource = function(urlsService, http, config, $rootScope, $q, storage) {\n var service;\n service = {};\n service.list = function(type, objectId, projectId) {\n var httpOptions, params, url, urlname;\n urlname = \"attachments/\" + type;\n params = {\n object_id: objectId,\n project: projectId\n };\n httpOptions = {\n headers: {\n \"x-disable-pagination\": \"1\"\n }\n };\n url = urlsService.resolve(urlname);\n return http.get(url, params, httpOptions).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n service.get = function(type, id) {\n var url, urlname;\n urlname = \"attachments/\" + type;\n url = urlsService.resolve(urlname) + (\"/\" + id);\n return http.get(url);\n };\n service[\"delete\"] = function(type, id) {\n var url, urlname;\n urlname = \"attachments/\" + type;\n url = urlsService.resolve(urlname) + (\"/\" + id);\n return http[\"delete\"](url);\n };\n service.patch = function(type, id, patch) {\n var url, urlname;\n urlname = \"attachments/\" + type;\n url = urlsService.resolve(urlname) + (\"/\" + id);\n return http.patch(url, patch);\n };\n service.bulkAttachments = function(objectId, type, afterAttachmentId, bulkAttachments) {\n var url, urlname;\n urlname = \"attachments/\" + type;\n url = urlsService.resolve(urlname) + \"/bulk_update_order\";\n return http.post(url, {\n object_id: objectId,\n after_attachment_id: afterAttachmentId,\n bulk_attachments: bulkAttachments\n });\n };\n service.create = function(type, projectId, objectId, file, from_comment) {\n var data, defered, maxFileSize, response, token, uploadComplete, uploadFailed, uploadProgress, url, urlname, xhr;\n urlname = \"attachments/\" + type;\n url = urlsService.resolve(urlname);\n defered = $q.defer();\n if (file === void 0) {\n defered.reject(null);\n return defered.promise;\n }\n maxFileSize = config.get(\"maxUploadFileSize\", null);\n if (maxFileSize && file.size > maxFileSize) {\n response = {\n status: 413,\n data: {\n _error_message: \"'\" + file.name + \"' (\" + (sizeFormat(file.size)) + \") is too heavy for our oompa loompas, try it with a smaller than (\" + (sizeFormat(maxFileSize)) + \")\"\n }\n };\n defered.reject(response);\n return defered.promise;\n }\n uploadProgress = (function(_this) {\n return function(evt) {\n return $rootScope.$apply(function() {\n file.status = \"in-progress\";\n file.size = sizeFormat(evt.total);\n file.progressMessage = \"upload \" + (sizeFormat(evt.loaded)) + \" of \" + (sizeFormat(evt.total));\n return file.progressPercent = \"\" + (Math.round((evt.loaded / evt.total) * 100));\n });\n };\n })(this);\n uploadComplete = (function(_this) {\n return function(evt) {\n return $rootScope.$apply(function() {\n var attachment, ref, status;\n file.status = \"done\";\n status = evt.target.status;\n try {\n attachment = JSON.parse(evt.target.responseText);\n } catch (error) {\n attachment = {};\n }\n if (status >= 200 && status < 400) {\n attachment = Immutable.fromJS(attachment);\n return defered.resolve(attachment);\n } else {\n response = {\n status: status,\n data: {\n _error_message: (ref = data['attached_file']) != null ? ref[0] : void 0\n }\n };\n return defered.reject(response);\n }\n });\n };\n })(this);\n uploadFailed = (function(_this) {\n return function(evt) {\n return $rootScope.$apply(function() {\n file.status = \"error\";\n return defered.reject(\"fail\");\n });\n };\n })(this);\n data = new FormData();\n data.append(\"project\", projectId);\n data.append(\"object_id\", objectId);\n data.append(\"attached_file\", file);\n data.append(\"from_comment\", from_comment);\n xhr = new XMLHttpRequest();\n xhr.upload.addEventListener(\"progress\", uploadProgress, false);\n xhr.addEventListener(\"load\", uploadComplete, false);\n xhr.addEventListener(\"error\", uploadFailed, false);\n token = storage.get('token');\n xhr.open(\"POST\", url);\n xhr.setRequestHeader(\"Authorization\", \"Bearer \" + token);\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send(data);\n return defered.promise;\n };\n return function() {\n return {\n \"attachments\": service\n };\n };\n };\n\n Resource.$inject = [\"$tgUrls\", \"$tgHttp\", \"$tgConfig\", \"$rootScope\", \"$q\", \"$tgStorage\"];\n\n module = angular.module(\"taigaResources2\");\n\n module.factory(\"tgAttachmentsResource\", Resource);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var Resource, module;\n\n Resource = function(urlsService, http) {\n var service;\n service = {};\n service.listInAllProjects = function(params) {\n var httpOptions, url;\n url = urlsService.resolve(\"epics\");\n httpOptions = {\n headers: {\n \"x-disable-pagination\": \"1\"\n }\n };\n return http.get(url, params, httpOptions).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n service.list = function(projectId, page) {\n var params, url;\n if (page == null) {\n page = 0;\n }\n url = urlsService.resolve(\"epics\");\n params = {\n project: projectId,\n page: page\n };\n return http.get(url, params).then(function(result) {\n return {\n list: Immutable.fromJS(result.data),\n headers: result.headers\n };\n });\n };\n service.patch = function(id, patch) {\n var url;\n url = urlsService.resolve(\"epics\") + (\"/\" + id);\n return http.patch(url, patch).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n service.post = function(params) {\n var url;\n url = urlsService.resolve(\"epics\");\n return http.post(url, params).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n service.reorder = function(id, data, setOrders) {\n var options, url;\n url = urlsService.resolve(\"epics\") + (\"/\" + id);\n options = {\n \"headers\": {\n \"set-orders\": JSON.stringify(setOrders)\n }\n };\n return http.patch(url, data, null, options).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n service.addRelatedUserstory = function(epicId, userstoryId) {\n var params, url;\n url = urlsService.resolve(\"epic-related-userstories\", epicId);\n params = {\n user_story: userstoryId,\n epic: epicId\n };\n return http.post(url, params);\n };\n service.reorderRelatedUserstory = function(epicId, userstoryId, data, setOrders) {\n var options, url;\n url = urlsService.resolve(\"epic-related-userstories\", epicId) + (\"/\" + userstoryId);\n options = {\n \"headers\": {\n \"set-orders\": JSON.stringify(setOrders)\n }\n };\n return http.patch(url, data, null, options);\n };\n service.bulkCreateRelatedUserStories = function(epicId, projectId, bulk_userstories) {\n var params, url;\n url = urlsService.resolve(\"epic-related-userstories-bulk-create\", epicId);\n params = {\n bulk_userstories: bulk_userstories,\n project_id: projectId\n };\n return http.post(url, params);\n };\n service.deleteRelatedUserstory = function(epicId, userstoryId) {\n var url;\n url = urlsService.resolve(\"epic-related-userstories\", epicId) + (\"/\" + userstoryId);\n return http[\"delete\"](url);\n };\n return function() {\n return {\n \"epics\": service\n };\n };\n };\n\n Resource.$inject = [\"$tgUrls\", \"$tgHttp\"];\n\n module = angular.module(\"taigaResources2\");\n\n module.factory(\"tgEpicsResource\", Resource);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var Resource, module;\n\n Resource = function(urlsService, http) {\n var service;\n service = {};\n service.getApplicationToken = function(applicationId, state) {\n var url;\n url = urlsService.resolve(\"applications\");\n url = url + \"/\" + applicationId + \"/token?state=\" + state;\n return http.get(url).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n service.authorizeApplicationToken = function(applicationId, state) {\n var data, url;\n url = urlsService.resolve(\"application-tokens\");\n url = url + \"/authorize\";\n data = {\n \"state\": state,\n \"application\": applicationId\n };\n return http.post(url, data).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n return function() {\n return {\n \"externalapps\": service\n };\n };\n };\n\n Resource.$inject = [\"$tgUrls\", \"$tgHttp\"];\n\n module = angular.module(\"taigaResources2\");\n\n module.factory(\"tgExternalAppsResource\", Resource);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var Resource, module;\n\n Resource = function(urlsService, http) {\n var service;\n service = {};\n service.getHistory = function(historyType, contentType, objectId, page) {\n var url;\n url = urlsService.resolve(\"history/\" + contentType);\n return http.get(url + \"/\" + objectId, {\n page: page,\n type: historyType\n }).then(function(result) {\n return {\n list: Immutable.fromJS(result.data),\n headers: result.headers\n };\n });\n };\n return function() {\n return {\n \"history\": service\n };\n };\n };\n\n Resource.$inject = [\"$tgUrls\", \"$tgHttp\"];\n\n module = angular.module(\"taigaResources2\");\n\n module.factory(\"tgHistory\", Resource);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AsanaResource, GithubResource, JiraResource, TrelloResource, module, taiga;\n\n taiga = this.taiga;\n\n TrelloResource = function(urlsService, http) {\n var service;\n service = {};\n service.getAuthUrl = function(url) {\n url = urlsService.resolve(\"importers-trello-auth-url\");\n return http.get(url);\n };\n service.authorize = function(verifyCode) {\n var url;\n url = urlsService.resolve(\"importers-trello-authorize\");\n return http.post(url, {\n code: verifyCode\n });\n };\n service.listProjects = function(token) {\n var url;\n url = urlsService.resolve(\"importers-trello-list-projects\");\n return http.post(url, {\n token: token\n }).then(function(response) {\n return Immutable.fromJS(response.data);\n });\n };\n service.listUsers = function(token, projectId) {\n var url;\n url = urlsService.resolve(\"importers-trello-list-users\");\n return http.post(url, {\n token: token,\n project: projectId\n }).then(function(response) {\n return Immutable.fromJS(response.data);\n });\n };\n service.importProject = function(token, name, description, projectId, userBindings, keepExternalReference, isPrivate) {\n var data, url;\n url = urlsService.resolve(\"importers-trello-import-project\");\n data = {\n token: token,\n name: name,\n description: description,\n project: projectId,\n users_bindings: userBindings.toJS(),\n keep_external_reference: keepExternalReference,\n is_private: isPrivate,\n template: \"kanban\"\n };\n return http.post(url, data);\n };\n return function() {\n return {\n \"trelloImporter\": service\n };\n };\n };\n\n TrelloResource.$inject = [\"$tgUrls\", \"$tgHttp\"];\n\n JiraResource = function(urlsService, http) {\n var service;\n service = {};\n service.getAuthUrl = function(jira_url) {\n var url;\n url = urlsService.resolve(\"importers-jira-auth-url\") + \"?url=\" + jira_url;\n return http.get(url);\n };\n service.authorize = function(oauth_verifier) {\n var url;\n url = urlsService.resolve(\"importers-jira-authorize\");\n return http.post(url, {\n oauth_verifier: oauth_verifier\n });\n };\n service.listProjects = function(jira_url, token) {\n var url;\n url = urlsService.resolve(\"importers-jira-list-projects\");\n return http.post(url, {\n url: jira_url,\n token: token\n }).then(function(response) {\n return Immutable.fromJS(response.data);\n });\n };\n service.listUsers = function(jira_url, token, projectId) {\n var url;\n url = urlsService.resolve(\"importers-jira-list-users\");\n return http.post(url, {\n url: jira_url,\n token: token,\n project: projectId\n }).then(function(response) {\n return Immutable.fromJS(response.data);\n });\n };\n service.importProject = function(jira_url, token, name, description, projectId, userBindings, keepExternalReference, isPrivate, projectType, importerType) {\n var data, projectTemplate, url;\n url = urlsService.resolve(\"importers-jira-import-project\");\n projectTemplate = \"kanban\";\n if (projectType !== \"kanban\") {\n projectTemplate = \"scrum\";\n }\n data = {\n url: jira_url,\n token: token,\n name: name,\n description: description,\n project: projectId,\n users_bindings: userBindings.toJS(),\n keep_external_reference: keepExternalReference,\n is_private: isPrivate,\n project_type: projectType,\n importer_type: importerType,\n template: projectTemplate\n };\n return http.post(url, data);\n };\n return function() {\n return {\n \"jiraImporter\": service\n };\n };\n };\n\n JiraResource.$inject = [\"$tgUrls\", \"$tgHttp\"];\n\n GithubResource = function(urlsService, http) {\n var service;\n service = {};\n service.getAuthUrl = function(callbackUri) {\n var url;\n url = urlsService.resolve(\"importers-github-auth-url\") + \"?uri=\" + callbackUri;\n return http.get(url);\n };\n service.authorize = function(code) {\n var url;\n url = urlsService.resolve(\"importers-github-authorize\");\n return http.post(url, {\n code: code\n });\n };\n service.listProjects = function(token) {\n var url;\n url = urlsService.resolve(\"importers-github-list-projects\");\n return http.post(url, {\n token: token\n }).then(function(response) {\n return Immutable.fromJS(response.data);\n });\n };\n service.listUsers = function(token, projectId) {\n var url;\n url = urlsService.resolve(\"importers-github-list-users\");\n return http.post(url, {\n token: token,\n project: projectId\n }).then(function(response) {\n return Immutable.fromJS(response.data);\n });\n };\n service.importProject = function(token, name, description, projectId, userBindings, keepExternalReference, isPrivate, projectType) {\n var data, url;\n url = urlsService.resolve(\"importers-github-import-project\");\n data = {\n token: token,\n name: name,\n description: description,\n project: projectId,\n users_bindings: userBindings.toJS(),\n keep_external_reference: keepExternalReference,\n is_private: isPrivate,\n template: projectType\n };\n return http.post(url, data);\n };\n return function() {\n return {\n \"githubImporter\": service\n };\n };\n };\n\n GithubResource.$inject = [\"$tgUrls\", \"$tgHttp\"];\n\n AsanaResource = function(urlsService, http) {\n var service;\n service = {};\n service.getAuthUrl = function() {\n var url;\n url = urlsService.resolve(\"importers-asana-auth-url\");\n return http.get(url);\n };\n service.authorize = function(code) {\n var url;\n url = urlsService.resolve(\"importers-asana-authorize\");\n return http.post(url, {\n code: code\n });\n };\n service.listProjects = function(token) {\n var url;\n url = urlsService.resolve(\"importers-asana-list-projects\");\n return http.post(url, {\n token: token\n }).then(function(response) {\n return Immutable.fromJS(response.data);\n });\n };\n service.listUsers = function(token, projectId) {\n var url;\n url = urlsService.resolve(\"importers-asana-list-users\");\n return http.post(url, {\n token: token,\n project: projectId\n }).then(function(response) {\n return Immutable.fromJS(response.data);\n });\n };\n service.importProject = function(token, name, description, projectId, userBindings, keepExternalReference, isPrivate, projectType) {\n var data, url;\n url = urlsService.resolve(\"importers-asana-import-project\");\n data = {\n token: token,\n name: name,\n description: description,\n project: projectId,\n users_bindings: userBindings.toJS(),\n keep_external_reference: keepExternalReference,\n is_private: isPrivate,\n template: projectType\n };\n return http.post(url, data);\n };\n return function() {\n return {\n \"asanaImporter\": service\n };\n };\n };\n\n AsanaResource.$inject = [\"$tgUrls\", \"$tgHttp\"];\n\n module = angular.module(\"taigaResources2\");\n\n module.factory(\"tgTrelloImportResource\", TrelloResource);\n\n module.factory(\"tgJiraImportResource\", JiraResource);\n\n module.factory(\"tgGithubImportResource\", GithubResource);\n\n module.factory(\"tgAsanaImportResource\", AsanaResource);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var Resource, module;\n\n Resource = function(urlsService, http) {\n var service;\n service = {};\n service.listInAllProjects = function(params) {\n var httpOptions, url;\n url = urlsService.resolve(\"issues\");\n httpOptions = {\n headers: {\n \"x-disable-pagination\": \"1\"\n }\n };\n return http.get(url, params, httpOptions).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n return function() {\n return {\n \"issues\": service\n };\n };\n };\n\n Resource.$inject = [\"$tgUrls\", \"$tgHttp\"];\n\n module = angular.module(\"taigaResources2\");\n\n module.factory(\"tgIssuesResource\", Resource);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var Resource, module;\n\n Resource = function(urlsService, http, config) {\n var service;\n service = {};\n service.subscribeOnPremiseNewsletter = function(requestParams) {\n var params;\n params = {\n url: config.get(\"newsletterSubscriberUrl\") + \"/subscribe/\",\n method: \"POST\",\n cancelable: true,\n data: requestParams\n };\n return http.request(params).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n return function() {\n return {\n \"onPremise\": service\n };\n };\n };\n\n Resource.$inject = [\"$tgUrls\", \"$tgHttp\", \"$tgConfig\"];\n\n module = angular.module(\"taigaResources2\");\n\n module.factory(\"tgOnPremiseResource\", Resource);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var Resource, module, pagination;\n\n pagination = function() {};\n\n Resource = function(urlsService, http, paginateResponseService) {\n var service;\n service = {};\n service.create = function(data) {\n var url;\n url = urlsService.resolve('projects');\n return http.post(url, JSON.stringify(data)).then((function(_this) {\n return function(result) {\n return Immutable.fromJS(result.data);\n };\n })(this));\n };\n service.duplicate = function(projectId, data) {\n var members, params, url;\n url = urlsService.resolve(\"projects\");\n url = url + \"/\" + projectId + \"/duplicate\";\n members = data.users.map((function(_this) {\n return function(member) {\n return {\n \"id\": member\n };\n };\n })(this));\n params = {\n \"name\": data.name,\n \"description\": data.description,\n \"is_private\": data.is_private,\n \"users\": members\n };\n return http.post(url, params);\n };\n service.getProjects = function(params, pagination) {\n var httpOptions, url;\n if (params == null) {\n params = {};\n }\n if (pagination == null) {\n pagination = true;\n }\n url = urlsService.resolve(\"projects\");\n httpOptions = {};\n if (!pagination) {\n httpOptions = {\n headers: {\n \"x-lazy-pagination\": true\n }\n };\n }\n return http.get(url, params, httpOptions);\n };\n service.getProjectBySlug = function(projectSlug) {\n var url;\n url = urlsService.resolve(\"projects\");\n url = url + \"/by_slug?slug=\" + projectSlug;\n return http.get(url).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n service.getProjectsByUserId = function(userId, paginate) {\n var httpOptions, params, url;\n if (paginate == null) {\n paginate = false;\n }\n url = urlsService.resolve(\"projects\");\n httpOptions = {};\n if (!paginate) {\n httpOptions.headers = {\n \"x-disable-pagination\": \"1\"\n };\n }\n params = {\n \"member\": userId,\n \"order_by\": \"user_order\"\n };\n return http.get(url, params, httpOptions).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n service.getListProjectsByUserId = function(userId, paginate) {\n var httpOptions, params, url;\n if (paginate == null) {\n paginate = false;\n }\n url = urlsService.resolve(\"projects\");\n httpOptions = {};\n if (!paginate) {\n httpOptions.headers = {\n \"x-disable-pagination\": \"1\"\n };\n }\n params = {\n \"member\": userId,\n \"order_by\": \"user_order\",\n \"slight\": true\n };\n return http.get(url, params, httpOptions).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n service.getProjectStats = function(projectId) {\n var url;\n url = urlsService.resolve(\"projects\");\n url = url + \"/\" + projectId;\n return http.get(url).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n service.bulkUpdateOrder = function(bulkData) {\n var url;\n url = urlsService.resolve(\"bulk-update-projects-order\");\n return http.post(url, bulkData);\n };\n service.getTimeline = function(projectId, page) {\n var params, url;\n params = {\n page: page,\n only_relevant: true\n };\n url = urlsService.resolve(\"timeline-project\");\n url = url + \"/\" + projectId;\n return http.get(url, params, {\n headers: {\n 'x-lazy-pagination': true\n }\n }).then(function(result) {\n result = Immutable.fromJS(result);\n return paginateResponseService(result);\n });\n };\n service.likeProject = function(projectId) {\n var url;\n url = urlsService.resolve(\"project-like\", projectId);\n return http.post(url);\n };\n service.unlikeProject = function(projectId) {\n var url;\n url = urlsService.resolve(\"project-unlike\", projectId);\n return http.post(url);\n };\n service.watchProject = function(projectId, notifyLevel) {\n var data, url;\n data = {\n notify_level: notifyLevel,\n live_notify_level: notifyLevel\n };\n url = urlsService.resolve(\"project-watch\", projectId);\n return http.post(url, data);\n };\n service.unwatchProject = function(projectId) {\n var url;\n url = urlsService.resolve(\"project-unwatch\", projectId);\n return http.post(url);\n };\n service.contactProject = function(projectId, message) {\n var params, url;\n params = {\n project: projectId,\n comment: message\n };\n url = urlsService.resolve(\"project-contact\");\n return http.post(url, params);\n };\n service.transferValidateToken = function(projectId, token) {\n var data, url;\n data = {\n token: token\n };\n url = urlsService.resolve(\"project-transfer-validate-token\", projectId);\n return http.post(url, data);\n };\n service.transferAccept = function(projectId, token, reason) {\n var data, url;\n data = {\n token: token,\n reason: reason\n };\n url = urlsService.resolve(\"project-transfer-accept\", projectId);\n return http.post(url, data);\n };\n service.transferReject = function(projectId, token, reason) {\n var data, url;\n data = {\n token: token,\n reason: reason\n };\n url = urlsService.resolve(\"project-transfer-reject\", projectId);\n return http.post(url, data);\n };\n service.transferRequest = function(projectId) {\n var url;\n url = urlsService.resolve(\"project-transfer-request\", projectId);\n return http.post(url);\n };\n service.transferStart = function(projectId, userId, reason) {\n var data, url;\n data = {\n user: userId,\n reason: reason\n };\n url = urlsService.resolve(\"project-transfer-start\", projectId);\n return http.post(url, data);\n };\n return function() {\n return {\n \"projects\": service\n };\n };\n };\n\n Resource.$inject = [\"$tgUrls\", \"$tgHttp\", \"tgPaginateResponseService\"];\n\n module = angular.module(\"taigaResources2\");\n\n module.factory(\"tgProjectsResources\", Resource);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var Resources, services;\n\n services = [\"tgProjectsResources\", \"tgUserResources\", \"tgUsersResources\", \"tgUserstoriesResource\", \"tgTasksResource\", \"tgIssuesResource\", \"tgExternalAppsResource\", \"tgAttachmentsResource\", \"tgStatsResource\", \"tgHistory\", \"tgEpicsResource\", \"tgTrelloImportResource\", \"tgJiraImportResource\", \"tgGithubImportResource\", \"tgAsanaImportResource\", \"tgOnPremiseResource\"];\n\n Resources = function($injector) {\n var i, j, len, len1, ref, service, serviceFn, serviceName, serviceProperty;\n for (i = 0, len = services.length; i < len; i++) {\n serviceName = services[i];\n serviceFn = $injector.get(serviceName);\n service = $injector.invoke(serviceFn);\n ref = Object.keys(service);\n for (j = 0, len1 = ref.length; j < len1; j++) {\n serviceProperty = ref[j];\n if (this[serviceProperty]) {\n console.warn(\"repeated resource \" + serviceProperty);\n }\n this[serviceProperty] = service[serviceProperty];\n }\n }\n return this;\n };\n\n Resources.$inject = [\"$injector\"];\n\n angular.module(\"taigaResources2\").service(\"tgResources\", Resources);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var Resource, module;\n\n Resource = function(urlsService, http) {\n var service;\n service = {};\n service.discover = function(applicationId, state) {\n var url;\n url = urlsService.resolve(\"stats-discover\");\n return http.get(url).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n return function() {\n return {\n \"stats\": service\n };\n };\n };\n\n Resource.$inject = [\"$tgUrls\", \"$tgHttp\"];\n\n module = angular.module(\"taigaResources2\");\n\n module.factory(\"tgStatsResource\", Resource);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var Resource, module;\n\n Resource = function(urlsService, http) {\n var service;\n service = {};\n service.listInAllProjects = function(params) {\n var httpOptions, url;\n url = urlsService.resolve(\"tasks\");\n httpOptions = {\n headers: {\n \"x-disable-pagination\": \"1\"\n }\n };\n return http.get(url, params, httpOptions).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n return function() {\n return {\n \"tasks\": service\n };\n };\n };\n\n Resource.$inject = [\"$tgUrls\", \"$tgHttp\"];\n\n module = angular.module(\"taigaResources2\");\n\n module.factory(\"tgTasksResource\", Resource);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var Resource, module;\n\n Resource = function(urlsService, http, paginateResponseService) {\n var service;\n service = {};\n service.getUserStorage = function(key) {\n var httpOptions, url;\n url = urlsService.resolve(\"user-storage\");\n if (key) {\n url += '/' + key;\n }\n httpOptions = {};\n return http.get(url, {}).then(function(response) {\n return response.data.value;\n });\n };\n service.setUserStorage = function(key, value) {\n var params, url;\n url = urlsService.resolve(\"user-storage\") + '/' + key;\n params = {\n key: key,\n value: value\n };\n return http.put(url, params);\n };\n service.createUserStorage = function(key, value) {\n var params, url;\n url = urlsService.resolve(\"user-storage\");\n params = {\n key: key,\n value: value\n };\n return http.post(url, params);\n };\n return function() {\n return {\n \"user\": service\n };\n };\n };\n\n Resource.$inject = [\"$tgUrls\", \"$tgHttp\"];\n\n module = angular.module(\"taigaResources2\");\n\n module.factory(\"tgUserResources\", Resource);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var Resource, module;\n\n Resource = function(urlsService, http, paginateResponseService) {\n var service;\n service = {};\n service.getUserByUsername = function(username) {\n var httpOptions, params, url;\n url = urlsService.resolve(\"by_username\");\n httpOptions = {\n headers: {\n \"x-disable-pagination\": \"1\"\n }\n };\n params = {\n username: username\n };\n return http.get(url, params, httpOptions).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n service.getStats = function(userId) {\n var httpOptions, url;\n url = urlsService.resolve(\"user-stats\", userId);\n httpOptions = {\n headers: {\n \"x-disable-pagination\": \"1\"\n }\n };\n return http.get(url, {}, httpOptions).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n service.getContacts = function(userId, excludeProjectId) {\n var httpOptions, params, url;\n url = urlsService.resolve(\"user-contacts\", userId);\n params = {};\n if (excludeProjectId != null) {\n params.exclude_project = excludeProjectId;\n }\n httpOptions = {\n headers: {\n \"x-disable-pagination\": \"1\"\n }\n };\n return http.get(url, params, httpOptions).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n service.getLiked = function(userId, page, type, q) {\n var params, url;\n url = urlsService.resolve(\"user-liked\", userId);\n params = {};\n if (page != null) {\n params.page = page;\n }\n if (type != null) {\n params.type = type;\n }\n if (q != null) {\n params.q = q;\n }\n params.only_relevant = true;\n return http.get(url, params, {\n headers: {\n 'x-lazy-pagination': true\n }\n }).then(function(result) {\n result = Immutable.fromJS(result);\n return paginateResponseService(result);\n });\n };\n service.getVoted = function(userId, page, type, q) {\n var params, url;\n url = urlsService.resolve(\"user-voted\", userId);\n params = {};\n if (page != null) {\n params.page = page;\n }\n if (type != null) {\n params.type = type;\n }\n if (q != null) {\n params.q = q;\n }\n return http.get(url, params, {\n headers: {\n 'x-lazy-pagination': true\n }\n }).then(function(result) {\n result = Immutable.fromJS(result);\n return paginateResponseService(result);\n });\n };\n service.getWatched = function(userId, page, type, q) {\n var params, url;\n url = urlsService.resolve(\"user-watched\", userId);\n params = {};\n if (page != null) {\n params.page = page;\n }\n if (type != null) {\n params.type = type;\n }\n if (q != null) {\n params.q = q;\n }\n return http.get(url, params, {\n headers: {\n 'x-lazy-pagination': true\n }\n }).then(function(result) {\n result = Immutable.fromJS(result);\n return paginateResponseService(result);\n });\n };\n service.getProfileTimeline = function(userId, page) {\n var params, url;\n params = {\n page: page\n };\n url = urlsService.resolve(\"timeline-profile\");\n url = url + \"/\" + userId;\n return http.get(url, params, {\n headers: {\n 'x-lazy-pagination': true\n }\n }).then(function(result) {\n result = Immutable.fromJS(result);\n return paginateResponseService(result);\n });\n };\n service.getUserTimeline = function(userId, page) {\n var params, url;\n params = {\n page: page,\n only_relevant: true\n };\n url = urlsService.resolve(\"timeline-user\");\n url = url + \"/\" + userId;\n return http.get(url, params, {\n headers: {\n 'x-lazy-pagination': true\n }\n }).then(function(result) {\n result = Immutable.fromJS(result);\n return paginateResponseService(result);\n });\n };\n service.getNotifications = function(userId, page, onlyUnread) {\n var params, url;\n params = {\n page: page\n };\n if (onlyUnread) {\n params['only_unread'] = true;\n }\n url = urlsService.resolve(\"notifications\");\n return http.get(url, params, {\n headers: {\n 'x-lazy-pagination': true\n }\n }).then(function(result) {\n var paginateResponse;\n result = Immutable.fromJS(result);\n paginateResponse = Immutable.Map({\n \"data\": result.get(\"data\").get(\"objects\"),\n \"next\": !!result.get(\"headers\")(\"x-pagination-next\"),\n \"prev\": !!result.get(\"headers\")(\"x-pagination-prev\"),\n \"current\": result.get(\"headers\")(\"x-pagination-current\"),\n \"count\": result.get(\"headers\")(\"x-pagination-count\"),\n \"total\": result.get(\"data\").get(\"total\")\n });\n return paginateResponse;\n });\n };\n service.setNotificationAsRead = function(notificationId) {\n var url;\n url = (urlsService.resolve(\"notifications\")) + \"/\" + notificationId + \"/set-as-read\";\n return http.patch(url).then(function(result) {\n return result;\n });\n };\n service.setNotificationsAsRead = function() {\n var url;\n url = (urlsService.resolve(\"notifications\")) + \"/set-as-read\";\n return http.post(url).then(function(result) {\n return result;\n });\n };\n return function() {\n return {\n \"users\": service\n };\n };\n };\n\n Resource.$inject = [\"$tgUrls\", \"$tgHttp\", \"tgPaginateResponseService\"];\n\n module = angular.module(\"taigaResources2\");\n\n module.factory(\"tgUsersResources\", Resource);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var Resource, module;\n\n Resource = function(urlsService, http) {\n var service;\n service = {};\n service.listInAllProjects = function(params, pagination) {\n var httpOptions, url;\n if (pagination == null) {\n pagination = false;\n }\n url = urlsService.resolve(\"userstories\");\n if (!pagination) {\n httpOptions = {\n headers: {\n \"x-disable-pagination\": \"1\"\n }\n };\n }\n return http.get(url, params, httpOptions).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n service.listAllInProject = function(projectId) {\n var httpOptions, params, url;\n url = urlsService.resolve(\"userstories\");\n httpOptions = {\n headers: {\n \"x-disable-pagination\": \"1\"\n }\n };\n params = {\n project: projectId\n };\n return http.get(url, params, httpOptions).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n service.listInEpic = function(epicIid) {\n var httpOptions, params, url;\n url = urlsService.resolve(\"userstories\");\n httpOptions = {\n headers: {\n \"x-disable-pagination\": \"1\"\n }\n };\n params = {\n epic: epicIid,\n order_by: 'epic_order',\n include_tasks: true\n };\n return http.get(url, params, httpOptions).then(function(result) {\n return Immutable.fromJS(result.data);\n });\n };\n return function() {\n return {\n \"userstories\": service\n };\n };\n };\n\n Resource.$inject = [\"$tgUrls\", \"$tgHttp\"];\n\n module = angular.module(\"taigaResources2\");\n\n module.factory(\"tgUserstoriesResource\", Resource);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AppMetaService, taiga, truncate;\n\n taiga = this.taiga;\n\n truncate = taiga.truncate;\n\n AppMetaService = (function() {\n AppMetaService.$inject = [\"$rootScope\"];\n\n function AppMetaService(rootScope) {\n this.rootScope = rootScope;\n }\n\n AppMetaService.prototype._set = function(key, value) {\n var meta;\n if (!key) {\n return;\n }\n if (key === \"title\") {\n meta = $(\"head title\");\n if (meta.length === 0) {\n meta = $(\"\");\n $(\"head\").append(meta);\n }\n return meta.html(value || \"\");\n } else if (key.indexOf(\"og:\") === 0) {\n meta = $(\"head meta[property='\" + key + \"']\");\n if (meta.length === 0) {\n meta = $(\"\");\n $(\"head\").append(meta);\n }\n return meta.attr(\"content\", value || \"\");\n } else {\n meta = $(\"head meta[name='\" + key + \"']\");\n if (meta.length === 0) {\n meta = $(\"\");\n $(\"head\").append(meta);\n }\n return meta.attr(\"content\", value || \"\");\n }\n };\n\n AppMetaService.prototype.setTitle = function(title) {\n return this._set('title', title);\n };\n\n AppMetaService.prototype.setDescription = function(description) {\n return this._set(\"description\", truncate(description, 250));\n };\n\n AppMetaService.prototype.setTwitterMetas = function(title, description) {\n this._set(\"twitter:card\", \"summary\");\n this._set(\"twitter:site\", \"@taigaio\");\n this._set(\"twitter:title\", title);\n this._set(\"twitter:description\", truncate(description, 300));\n return this._set(\"twitter:image\", window.location.origin + \"/\" + window._version + \"/images/logo-color.png\");\n };\n\n AppMetaService.prototype.setOpenGraphMetas = function(title, description) {\n this._set(\"og:type\", \"object\");\n this._set(\"og:site_name\", \"Taiga - Love your projects\");\n this._set(\"og:title\", title);\n this._set(\"og:description\", truncate(description, 300));\n this._set(\"og:image\", window.location.origin + \"/\" + window._version + \"/images/logo-color.png\");\n return this._set(\"og:url\", window.location.href);\n };\n\n AppMetaService.prototype.setAll = function(title, description) {\n this.setTitle(title);\n this.setDescription(description);\n this.setTwitterMetas(title, description);\n return this.setOpenGraphMetas(title, description);\n };\n\n AppMetaService.prototype.addMobileViewport = function() {\n return $(\"head\").append(\"\");\n };\n\n AppMetaService.prototype.removeMobileViewport = function() {\n return $(\"head meta[name=\\\"viewport\\\"]\").remove();\n };\n\n AppMetaService.prototype.setfn = function(fn) {\n if (this.listener) {\n this._listener();\n }\n return this._listener = this.rootScope.$watchCollection(fn, (function(_this) {\n return function(metas) {\n if (metas) {\n _this.setAll(metas.title, metas.description);\n return _this._listener();\n }\n };\n })(this));\n };\n\n return AppMetaService;\n\n })();\n\n angular.module(\"taigaCommon\").service(\"tgAppMetaService\", AppMetaService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AttachmentsService, sizeFormat;\n\n sizeFormat = this.taiga.sizeFormat;\n\n AttachmentsService = (function() {\n AttachmentsService.$inject = [\"$tgConfirm\", \"$tgConfig\", \"$translate\", \"tgResources\"];\n\n function AttachmentsService(confirm, config, translate, rs) {\n this.confirm = confirm;\n this.config = config;\n this.translate = translate;\n this.rs = rs;\n this.types = {\n epics: \"epic\",\n userstories: \"us\",\n userstory: \"us\",\n issues: \"issue\",\n tasks: \"task\",\n epic: \"epic\",\n us: \"us\",\n issue: \"issue\",\n task: \"task\",\n wiki: \"wiki\",\n wikipage: \"wiki\"\n };\n this.maxFileSize = this.getMaxFileSize();\n if (this.maxFileSize) {\n this.maxFileSizeFormated = sizeFormat(this.maxFileSize);\n }\n }\n\n AttachmentsService.prototype.sizeError = function(file) {\n var message;\n message = this.translate.instant(\"ATTACHMENT.ERROR_MAX_SIZE_EXCEEDED\", {\n fileName: file.name,\n fileSize: sizeFormat(file.size),\n maxFileSize: this.maxFileSizeFormated\n });\n return this.confirm.notify(\"error\", message);\n };\n\n AttachmentsService.prototype.validate = function(file) {\n if (this.maxFileSize && file.size > this.maxFileSize) {\n this.sizeError(file);\n return false;\n }\n return true;\n };\n\n AttachmentsService.prototype.getMaxFileSize = function() {\n return this.config.get(\"maxUploadFileSize\", null);\n };\n\n AttachmentsService.prototype.list = function(type, objId, projectId) {\n return this.rs.attachments.list(type, objId, projectId).then((function(_this) {\n return function(attachments) {\n return attachments.sortBy(function(attachment) {\n return attachment.get('order');\n });\n };\n })(this));\n };\n\n AttachmentsService.prototype.get = function(type, id) {\n return this.rs.attachments.get(this.types[type], id);\n };\n\n AttachmentsService.prototype[\"delete\"] = function(type, id) {\n return this.rs.attachments[\"delete\"](type, id);\n };\n\n AttachmentsService.prototype.saveError = function(file, data) {\n var message;\n message = \"\";\n if (file) {\n message = this.translate.instant(\"ATTACHMENT.ERROR_UPLOAD_ATTACHMENT\", {\n fileName: file.name,\n errorMessage: data.data._error_message\n });\n }\n return this.confirm.notify(\"error\", message);\n };\n\n AttachmentsService.prototype.upload = function(file, objId, projectId, type, from_comment) {\n var promise;\n if (from_comment == null) {\n from_comment = false;\n }\n promise = this.rs.attachments.create(type, projectId, objId, file, from_comment);\n promise.then(null, this.saveError.bind(this, file));\n return promise;\n };\n\n AttachmentsService.prototype.bulkUpdateOrder = function(objectId, type, afterAttachmentId, bulkAttachments) {\n var promise;\n promise = this.rs.attachments.bulkAttachments(objectId, type, afterAttachmentId, bulkAttachments);\n promise.then(null, this.saveError.bind(this, null));\n return promise;\n };\n\n AttachmentsService.prototype.patch = function(id, type, patch) {\n var promise;\n promise = this.rs.attachments.patch(type, id, patch);\n promise.then(null, this.saveError.bind(this, null));\n return promise;\n };\n\n return AttachmentsService;\n\n })();\n\n angular.module(\"taigaCommon\").service(\"tgAttachmentsService\", AttachmentsService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var AvatarService,\n modulo = function(a, b) { return (+a % (b = +b) + b) % b; };\n\n AvatarService = (function() {\n function AvatarService(config) {\n var COLORS, IMAGES;\n this.config = config;\n IMAGES = [window._version + \"/images/user-avatars/user-avatar-01.png\", window._version + \"/images/user-avatars/user-avatar-02.png\", window._version + \"/images/user-avatars/user-avatar-03.png\", window._version + \"/images/user-avatars/user-avatar-04.png\", window._version + \"/images/user-avatars/user-avatar-05.png\"];\n COLORS = [\"rgba( 178, 176, 204, 1 )\", \"rgba( 183, 203, 131, 1 )\", \"rgba( 210, 198, 139, 1 )\", \"rgba( 214, 161, 212, 1 )\", \"rgba( 247, 154, 154, 1 )\"];\n this.logos = _.cartesianProduct(IMAGES, COLORS);\n }\n\n AvatarService.prototype.getDefault = function(key) {\n var idx, logo;\n idx = modulo(murmurhash3_32_gc(key, 42), this.logos.length);\n logo = this.logos[idx];\n return {\n src: logo[0],\n color: logo[1]\n };\n };\n\n AvatarService.prototype.getUnnamed = function() {\n return {\n url: window._version + \"/images/unnamed.png\",\n username: ''\n };\n };\n\n AvatarService.prototype.getAvatar = function(user, type) {\n var avatarParamName, fullName, gravatar, logo, logoUrl, photo, root, username;\n if (!user) {\n return this.getUnnamed();\n }\n avatarParamName = 'photo';\n if (type === 'avatarBig') {\n avatarParamName = 'big_photo';\n }\n photo = null;\n if (user instanceof Immutable.Map) {\n gravatar = user.get('gravatar_id');\n photo = user.get(avatarParamName);\n username = \"@\" + (user.get('username'));\n fullName = user.get('full_name_display');\n } else {\n gravatar = user.gravatar_id;\n photo = user[avatarParamName];\n username = \"@\" + user.username;\n fullName = user.full_name_display;\n }\n if (!gravatar) {\n return this.getUnnamed();\n }\n if (photo) {\n return {\n url: photo,\n username: username,\n fullName: fullName\n };\n } else if (location.host.indexOf('localhost') !== -1 || !this.config.get(\"gravatar\", true)) {\n root = location.protocol + '//' + location.host + this.config.get('baseHref');\n logo = this.getDefault(gravatar);\n return {\n url: root + logo.src,\n bg: logo.color,\n username: username,\n fullName: fullName\n };\n } else {\n root = location.protocol + '//' + location.host + this.config.get('baseHref');\n logo = this.getDefault(gravatar);\n logoUrl = encodeURIComponent(root + logo.src);\n return {\n url: 'https://www.gravatar.com/avatar/' + gravatar + \"?s=200&d=\" + logoUrl,\n bg: logo.color,\n username: username,\n fullName: fullName\n };\n }\n };\n\n return AvatarService;\n\n })();\n\n angular.module(\"taigaCommon\").service(\"tgAvatarService\", [\"$tgConfig\", AvatarService]);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CheckPermissionsService, taiga;\n\n taiga = this.taiga;\n\n CheckPermissionsService = (function() {\n CheckPermissionsService.$inject = [\"tgProjectService\"];\n\n function CheckPermissionsService(projectService) {\n this.projectService = projectService;\n }\n\n CheckPermissionsService.prototype.check = function(permission) {\n if (!this.projectService.project) {\n return false;\n }\n return this.projectService.project.get('my_permissions').indexOf(permission) !== -1;\n };\n\n return CheckPermissionsService;\n\n })();\n\n angular.module(\"taigaCommon\").service(\"tgCheckPermissionsService\", CheckPermissionsService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var CurrentUserService, groupBy, taiga;\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n CurrentUserService = (function() {\n CurrentUserService.$inject = [\"tgProjectsService\", \"$tgStorage\", \"tgResources\", \"$q\"];\n\n function CurrentUserService(projectsService, storageService, rs, q) {\n this.projectsService = projectsService;\n this.storageService = storageService;\n this.rs = rs;\n this.q = q;\n this._user = null;\n this._projects = Immutable.Map();\n this._projectsById = Immutable.Map();\n this._joyride = null;\n taiga.defineImmutableProperty(this, \"projects\", (function(_this) {\n return function() {\n return _this._projects;\n };\n })(this));\n taiga.defineImmutableProperty(this, \"projectsById\", (function(_this) {\n return function() {\n return _this._projectsById;\n };\n })(this));\n }\n\n CurrentUserService.prototype.isAuthenticated = function() {\n if (this.getUser() !== null) {\n return true;\n }\n return false;\n };\n\n CurrentUserService.prototype.getUser = function() {\n var userData;\n if (!this._user) {\n userData = this.storageService.get(\"userInfo\");\n if (userData) {\n userData = Immutable.fromJS(userData);\n this.setUser(userData);\n }\n }\n return this._user;\n };\n\n CurrentUserService.prototype.removeUser = function() {\n this._user = null;\n this._projects = Immutable.Map();\n this._projectsById = Immutable.Map();\n return this._joyride = null;\n };\n\n CurrentUserService.prototype.setUser = function(user) {\n this._user = user;\n return this._loadUserInfo();\n };\n\n CurrentUserService.prototype.bulkUpdateProjectsOrder = function(sortData) {\n return this.projectsService.bulkUpdateProjectsOrder(sortData).then((function(_this) {\n return function() {\n return _this.loadProjects();\n };\n })(this));\n };\n\n CurrentUserService.prototype.loadProjects = function() {\n return this.projectsService.getProjectsByUserId(this._user.get(\"id\")).then((function(_this) {\n return function(projects) {\n return _this.setProjects(projects);\n };\n })(this));\n };\n\n CurrentUserService.prototype.loadProjectsList = function() {\n return this.projectsService.getListProjectsByUserId(this._user.get(\"id\"), null).then((function(_this) {\n return function(projects) {\n return _this.setProjects(projects);\n };\n })(this));\n };\n\n CurrentUserService.prototype.disableJoyRide = function(section) {\n if (!this.isAuthenticated()) {\n return;\n }\n if (section) {\n this._joyride[section] = false;\n } else {\n this._joyride = {\n backlog: false,\n kanban: false,\n dashboard: false\n };\n }\n return this.rs.user.setUserStorage('joyride', this._joyride);\n };\n\n CurrentUserService.prototype.loadJoyRideConfig = function() {\n return this.q((function(_this) {\n return function(resolve) {\n if (_this._joyride !== null) {\n resolve(_this._joyride);\n return;\n }\n return _this.rs.user.getUserStorage('joyride').then(function(config) {\n _this._joyride = config;\n return resolve(_this._joyride);\n })[\"catch\"](function() {\n _this._joyride = {\n backlog: true,\n kanban: true,\n dashboard: true\n };\n _this.rs.user.createUserStorage('joyride', _this._joyride);\n return resolve(_this._joyride);\n });\n };\n })(this));\n };\n\n CurrentUserService.prototype._loadUserInfo = function() {\n return this.q.all([this.loadProjectsList()]);\n };\n\n CurrentUserService.prototype.setProjects = function(projects) {\n this._projects = this._projects.set(\"all\", projects);\n this._projects = this._projects.set(\"recents\", projects.slice(0, 4));\n this._projects = this._projects.set(\"unblocked\", projects.filter(function(project) {\n return project.toJS().blocked_code === null;\n }));\n this._projectsById = Immutable.fromJS(groupBy(projects.toJS(), function(p) {\n return p.id;\n }));\n return this.projects;\n };\n\n CurrentUserService.prototype.canCreatePrivateProjects = function() {\n var user;\n user = this.getUser();\n if (user.get('max_private_projects') !== null && user.get('total_private_projects') >= user.get('max_private_projects')) {\n return {\n valid: false,\n reason: 'max_private_projects',\n type: 'private_project',\n current: user.get('total_private_projects'),\n max: user.get('max_private_projects')\n };\n }\n return {\n valid: true\n };\n };\n\n CurrentUserService.prototype.canCreatePublicProjects = function() {\n var user;\n user = this.getUser();\n if (user && user.get('max_public_projects') !== null && user.get('total_public_projects') >= user.get('max_public_projects')) {\n return {\n valid: false,\n reason: 'max_public_projects',\n type: 'public_project',\n current: user.get('total_public_projects'),\n max: user.get('max_public_projects')\n };\n }\n return {\n valid: true\n };\n };\n\n CurrentUserService.prototype.canAddMembersPublicProject = function(totalMembers) {\n var user;\n user = this.getUser();\n if (user.get('max_memberships_public_projects') !== null && totalMembers > user.get('max_memberships_public_projects')) {\n return {\n valid: false,\n reason: 'max_members_public_projects',\n type: 'public_project',\n current: totalMembers,\n max: user.get('max_memberships_public_projects')\n };\n }\n return {\n valid: true\n };\n };\n\n CurrentUserService.prototype.canAddMembersPrivateProject = function(totalMembers) {\n var user;\n user = this.getUser();\n if (user.get('max_memberships_private_projects') !== null && totalMembers > user.get('max_memberships_private_projects')) {\n return {\n valid: false,\n reason: 'max_members_private_projects',\n type: 'private_project',\n current: totalMembers,\n max: user.get('max_memberships_private_projects')\n };\n }\n return {\n valid: true\n };\n };\n\n CurrentUserService.prototype.canOwnProject = function(project) {\n var membersResult, result, user;\n user = this.getUser();\n if (project.get('is_private')) {\n result = this.canCreatePrivateProjects();\n if (!result.valid) {\n return result;\n }\n membersResult = this.canAddMembersPrivateProject(project.get('total_memberships'));\n if (!membersResult.valid) {\n return membersResult;\n }\n } else {\n result = this.canCreatePublicProjects();\n if (!result.valid) {\n return result;\n }\n membersResult = this.canAddMembersPublicProject(project.get('total_memberships'));\n if (!membersResult.valid) {\n return membersResult;\n }\n }\n return {\n valid: true\n };\n };\n\n return CurrentUserService;\n\n })();\n\n angular.module(\"taigaCommon\").service(\"tgCurrentUserService\", CurrentUserService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ErrorHandlingService, taiga;\n\n taiga = this.taiga;\n\n ErrorHandlingService = (function() {\n ErrorHandlingService.$inject = [\"$rootScope\"];\n\n function ErrorHandlingService(rootScope) {\n this.rootScope = rootScope;\n }\n\n ErrorHandlingService.prototype.init = function() {\n return this.rootScope.errorHandling = {};\n };\n\n ErrorHandlingService.prototype.notfound = function() {\n this.rootScope.errorHandling.showingError = true;\n return this.rootScope.errorHandling.notfound = true;\n };\n\n ErrorHandlingService.prototype.error = function() {\n this.rootScope.errorHandling.showingError = true;\n return this.rootScope.errorHandling.error = true;\n };\n\n ErrorHandlingService.prototype.permissionDenied = function() {\n this.rootScope.errorHandling.showingError = true;\n return this.rootScope.errorHandling.permissionDenied = true;\n };\n\n ErrorHandlingService.prototype.block = function() {\n this.rootScope.errorHandling.showingError = true;\n return this.rootScope.errorHandling.blocked = true;\n };\n\n return ErrorHandlingService;\n\n })();\n\n angular.module(\"taigaCommon\").service(\"tgErrorHandlingService\", ErrorHandlingService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var LightboxFactory;\n\n LightboxFactory = (function() {\n LightboxFactory.$inject = [\"$rootScope\", \"$compile\"];\n\n function LightboxFactory(rootScope, compile) {\n this.rootScope = rootScope;\n this.compile = compile;\n }\n\n LightboxFactory.prototype.create = function(name, attrs, scopeAttrs) {\n var elm, html, scope;\n scope = this.rootScope.$new();\n scope = _.merge(scope, scopeAttrs);\n elm = $(\"
\").attr(name, true).attr(\"tg-bind-scope\", true);\n if (attrs) {\n elm.attr(attrs);\n }\n elm.addClass(\"remove-on-close\");\n html = this.compile(elm)(scope);\n $(document.body).append(html);\n };\n\n return LightboxFactory;\n\n })();\n\n angular.module(\"taigaCommon\").service(\"tgLightboxFactory\", LightboxFactory);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var PaginateResponse;\n\n PaginateResponse = function() {\n return function(result) {\n var paginateResponse;\n paginateResponse = Immutable.Map({\n \"data\": result.get(\"data\"),\n \"next\": !!result.get(\"headers\")(\"x-pagination-next\"),\n \"prev\": !!result.get(\"headers\")(\"x-pagination-prev\"),\n \"current\": result.get(\"headers\")(\"x-pagination-current\"),\n \"count\": result.get(\"headers\")(\"x-pagination-count\")\n });\n return paginateResponse;\n };\n };\n\n angular.module(\"taigaCommon\").factory(\"tgPaginateResponseService\", PaginateResponse);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProjectLogoService,\n modulo = function(a, b) { return (+a % (b = +b) + b) % b; };\n\n ProjectLogoService = (function() {\n function ProjectLogoService() {\n var COLORS, IMAGES;\n IMAGES = [window._version + \"/images/project-logos/project-logo-01.png\", window._version + \"/images/project-logos/project-logo-02.png\", window._version + \"/images/project-logos/project-logo-03.png\", window._version + \"/images/project-logos/project-logo-04.png\", window._version + \"/images/project-logos/project-logo-05.png\"];\n COLORS = [\"rgba( 153, 214, 220, 1 )\", \"rgba( 213, 156, 156, 1 )\", \"rgba( 214, 161, 212, 1 )\", \"rgba( 164, 162, 219, 1 )\", \"rgba( 152, 224, 168, 1 )\"];\n this.logos = _.cartesianProduct(IMAGES, COLORS);\n }\n\n ProjectLogoService.prototype.getDefaultProjectLogo = function(slug, id) {\n var idx, key, logo;\n key = slug + \"-\" + id;\n idx = modulo(murmurhash3_32_gc(key, 42), this.logos.length);\n logo = this.logos[idx];\n return {\n src: logo[0],\n color: logo[1]\n };\n };\n\n return ProjectLogoService;\n\n })();\n\n angular.module(\"taigaCommon\").service(\"tgProjectLogoService\", ProjectLogoService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ProjectService, taiga,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n taiga = this.taiga;\n\n ProjectService = (function() {\n ProjectService.$inject = [\"$rootScope\", \"tgProjectsService\", \"tgXhrErrorService\", \"tgUserActivityService\", \"$interval\", \"$q\"];\n\n function ProjectService(rootScope, projectsService, xhrError, userActivityService, interval, q) {\n this.rootScope = rootScope;\n this.projectsService = projectsService;\n this.xhrError = xhrError;\n this.userActivityService = userActivityService;\n this.interval = interval;\n this.q = q;\n this.manageProjectSignal = bind(this.manageProjectSignal, this);\n this._project = null;\n this._section = null;\n this._sectionsBreadcrumb = Immutable.List();\n this._activeMembers = Immutable.List();\n taiga.defineImmutableProperty(this, \"project\", (function(_this) {\n return function() {\n return _this._project;\n };\n })(this));\n taiga.defineImmutableProperty(this, \"section\", (function(_this) {\n return function() {\n return _this._section;\n };\n })(this));\n taiga.defineImmutableProperty(this, \"sectionsBreadcrumb\", (function(_this) {\n return function() {\n return _this._sectionsBreadcrumb;\n };\n })(this));\n taiga.defineImmutableProperty(this, \"activeMembers\", (function(_this) {\n return function() {\n return _this._activeMembers;\n };\n })(this));\n if (!window.localStorage.e2e) {\n this.autoRefresh();\n }\n this.watchSignals();\n }\n\n ProjectService.prototype.watchSignals = function() {\n var fetchRequiredSignals, i, len, results, signal;\n fetchRequiredSignals = [\"admin:project-modules:updated\", \"admin:project-roles:updated\", \"admin:project-default-values:updated\", \"admin:project-values:updated\", \"admin:project-values:move\", \"admin:project-custom-attributes:updated\", \"sprintform:create:success\", \"sprintform:edit:success\", \"sprintform:remove:success\", \"tags:updated\"];\n results = [];\n for (i = 0, len = fetchRequiredSignals.length; i < len; i++) {\n signal = fetchRequiredSignals[i];\n results.push(this.rootScope.$on(signal, this.manageProjectSignal));\n }\n return results;\n };\n\n ProjectService.prototype.manageProjectSignal = function(ctx) {\n return this.fetchProject();\n };\n\n ProjectService.prototype.cleanProject = function() {\n this._project = null;\n this._activeMembers = Immutable.List();\n this._section = null;\n return this._sectionsBreadcrumb = Immutable.List();\n };\n\n ProjectService.prototype.autoRefresh = function() {\n var intervalId;\n intervalId = this.interval((function(_this) {\n return function() {\n return _this.fetchProject();\n };\n })(this), 60 * 10 * 1000);\n this.userActivityService.onInactive((function(_this) {\n return function() {\n return _this.interval.cancel(intervalId);\n };\n })(this));\n return this.userActivityService.onActive((function(_this) {\n return function() {\n _this.fetchProject();\n return _this.autoRefresh();\n };\n })(this));\n };\n\n ProjectService.prototype.setSection = function(section) {\n this._section = section;\n if (section) {\n return this._sectionsBreadcrumb = this._sectionsBreadcrumb.push(this._section);\n } else {\n return this._sectionsBreadcrumb = Immutable.List();\n }\n };\n\n ProjectService.prototype.setProject = function(project) {\n this._project = project;\n return this._activeMembers = this._project.get('members').filter(function(member) {\n return member.get('is_active');\n });\n };\n\n ProjectService.prototype.setProjectBySlug = function(pslug) {\n return this.q((function(_this) {\n return function(resolve, reject) {\n if (!_this.project || _this.project.get('slug') !== pslug) {\n return _this.projectsService.getProjectBySlug(pslug).then(function(project) {\n _this.setProject(project);\n return resolve();\n })[\"catch\"](function(xhr) {\n return _this.xhrError.response(xhr);\n });\n } else {\n return resolve();\n }\n };\n })(this));\n };\n\n ProjectService.prototype.fetchProject = function() {\n var pslug;\n if (!this.project) {\n return;\n }\n pslug = this.project.get('slug');\n return this.projectsService.getProjectBySlug(pslug).then((function(_this) {\n return function(project) {\n return _this.setProject(project);\n };\n })(this));\n };\n\n ProjectService.prototype.hasPermission = function(permission) {\n return this._project.get('my_permissions').indexOf(permission) !== -1;\n };\n\n ProjectService.prototype.isEpicsDashboardEnabled = function() {\n return this._project.get(\"is_epics_activated\");\n };\n\n return ProjectService;\n\n })();\n\n angular.module(\"taigaCommon\").service(\"tgProjectService\", ProjectService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var ThemeService, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n ThemeService = (function(superClass) {\n extend(ThemeService, superClass);\n\n function ThemeService() {\n return ThemeService.__super__.constructor.apply(this, arguments);\n }\n\n ThemeService.prototype.use = function(themeName) {\n var stylesheetEl;\n stylesheetEl = $(\"link[rel='stylesheet']:first\");\n if (stylesheetEl.length === 0) {\n stylesheetEl = $(\"\");\n $(\"head\").append(stylesheetEl);\n }\n return stylesheetEl.attr(\"href\", window._version + \"/styles/theme-\" + themeName + \".css\");\n };\n\n return ThemeService;\n\n })(taiga.Service);\n\n angular.module(\"taigaCommon\").service(\"tgThemeService\", ThemeService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UserActivityService, groupBy, taiga;\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n UserActivityService = (function() {\n UserActivityService.$inject = ['$timeout'];\n\n UserActivityService.prototype.idleTimeout = 60 * 5 * 1000;\n\n function UserActivityService(timeout) {\n this.timeout = timeout;\n if (window.localStorage.e2e) {\n return null;\n }\n window.addEventListener('mousemove', this.resetTimer.bind(this), false);\n window.addEventListener('mousedown', this.resetTimer.bind(this), false);\n window.addEventListener('keypress', this.resetTimer.bind(this), false);\n window.addEventListener('mousewheel', this.resetTimer.bind(this), false);\n window.addEventListener('touchmove', this.resetTimer.bind(this), false);\n this.subscriptionsActive = [];\n this.subscriptionsInactive = [];\n this.isActive = true;\n this.startTimer();\n }\n\n UserActivityService.prototype.startTimer = function() {\n return this.timerId = this.timeout(this._fireInactive.bind(this), this.idleTimeout);\n };\n\n UserActivityService.prototype.resetTimer = function() {\n if (!this.isActive) {\n this._fireActive();\n }\n this.timeout.cancel(this.timerId);\n this.startTimer();\n return this.isActive = true;\n };\n\n UserActivityService.prototype.onActive = function(cb) {\n this.subscriptionsActive.push(cb);\n return this._unSubscriptionsActive.bind(this, cb);\n };\n\n UserActivityService.prototype.onInactive = function(cb) {\n this.subscriptionsInactive.push(cb);\n return this._unSubscriptionsInactive.bind(this, cb);\n };\n\n UserActivityService.prototype._fireActive = function() {\n return this.subscriptionsActive.forEach(function(it) {\n return it();\n });\n };\n\n UserActivityService.prototype._fireInactive = function() {\n this.isActive = false;\n return this.subscriptionsInactive.forEach(function(it) {\n return it();\n });\n };\n\n UserActivityService.prototype._unSubscriptionsActive = function(cb) {\n return this.subscriptionsActive = this.subscriptionsActive.filter(function(fn) {\n return fn !== cb;\n });\n };\n\n UserActivityService.prototype._unSubscriptionsInactive = function(cb) {\n return this.subscriptionsInactive = this.subscriptionsInactive.filter(function(fn) {\n return fn !== cb;\n });\n };\n\n return UserActivityService;\n\n })();\n\n angular.module(\"taigaCommon\").service(\"tgUserActivityService\", UserActivityService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UserListService, normalizeString, taiga;\n\n taiga = this.taiga;\n\n normalizeString = this.taiga.normalizeString;\n\n UserListService = (function() {\n UserListService.$inject = [\"tgCurrentUserService\", \"tgProjectService\"];\n\n function UserListService(currentUserService, projectService) {\n this.currentUserService = currentUserService;\n this.projectService = projectService;\n }\n\n UserListService.prototype.filterUsers = function(text, user) {\n var username;\n username = user.full_name_display.toUpperCase();\n username = normalizeString(username);\n text = text.toUpperCase();\n text = normalizeString(text);\n return _.includes(username, text);\n };\n\n UserListService.prototype.searchUsers = function(text, excludedUser) {\n var users;\n this.currentUser = this.currentUserService.getUser();\n users = _.clone(this.projectService.activeMembers.toJS(), true);\n if (excludedUser) {\n users = _.reject(users, {\n \"id\": excludedUser.id\n });\n }\n users = _.sortBy(users, (function(_this) {\n return function(o) {\n var ref;\n if (o.id === ((ref = _this.currentUser) != null ? ref.get('id') : void 0)) {\n return 0;\n } else {\n return o.id;\n }\n };\n })(this));\n if (text != null) {\n users = _.filter(users, _.partial(this.filterUsers, text));\n }\n return users;\n };\n\n return UserListService;\n\n })();\n\n angular.module(\"taigaCommon\").service(\"tgUserListService\", UserListService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UserService, bindMethods, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n bindMethods = taiga.bindMethods;\n\n UserService = (function(superClass) {\n extend(UserService, superClass);\n\n UserService.$inject = [\"tgResources\"];\n\n function UserService(rs) {\n this.rs = rs;\n bindMethods(this);\n }\n\n UserService.prototype.getUserByUserName = function(username) {\n return this.rs.users.getUserByUsername(username);\n };\n\n UserService.prototype.getContacts = function(userId, excludeProjectId) {\n return this.rs.users.getContacts(userId, excludeProjectId);\n };\n\n UserService.prototype.getLiked = function(userId, pageNumber, objectType, textQuery) {\n return this.rs.users.getLiked(userId, pageNumber, objectType, textQuery);\n };\n\n UserService.prototype.getVoted = function(userId, pageNumber, objectType, textQuery) {\n return this.rs.users.getVoted(userId, pageNumber, objectType, textQuery);\n };\n\n UserService.prototype.getWatched = function(userId, pageNumber, objectType, textQuery) {\n return this.rs.users.getWatched(userId, pageNumber, objectType, textQuery);\n };\n\n UserService.prototype.getStats = function(userId) {\n return this.rs.users.getStats(userId);\n };\n\n UserService.prototype.attachUserContactsToProjects = function(userId, projects) {\n return this.getContacts(userId).then(function(contacts) {\n projects = projects.map(function(project) {\n var contactsFiltered;\n contactsFiltered = contacts.filter(function(contact) {\n var contactId;\n contactId = contact.get(\"id\");\n return project.get('members').indexOf(contactId) !== -1;\n });\n project = project.set(\"contacts\", contactsFiltered);\n return project;\n });\n return projects;\n });\n };\n\n return UserService;\n\n })(taiga.Service);\n\n angular.module(\"taigaCommon\").service(\"tgUserService\", UserService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var xhrError,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n xhrError = (function(superClass) {\n extend(xhrError, superClass);\n\n xhrError.$inject = [\"$q\", \"tgErrorHandlingService\"];\n\n function xhrError(q, errorHandlingService) {\n this.q = q;\n this.errorHandlingService = errorHandlingService;\n }\n\n xhrError.prototype.notFound = function() {\n return this.errorHandlingService.notfound();\n };\n\n xhrError.prototype.permissionDenied = function() {\n return this.errorHandlingService.permissionDenied();\n };\n\n xhrError.prototype.response = function(xhr) {\n if (xhr) {\n if (xhr.status === 404) {\n this.notFound();\n } else if (xhr.status === 403) {\n this.permissionDenied();\n }\n }\n return this.q.reject(xhr);\n };\n\n return xhrError;\n\n })(taiga.Service);\n\n angular.module(\"taigaCommon\").service(\"tgXhrErrorService\", xhrError);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UserTimelineAttachmentDirective;\n\n UserTimelineAttachmentDirective = function(template, $compile) {\n var isImage, link, validFileExtensions;\n validFileExtensions = [\".jpg\", \".jpeg\", \".bmp\", \".gif\", \".png\"];\n isImage = function(url) {\n url = url.toLowerCase();\n return _.some(validFileExtensions, function(extension) {\n return url.indexOf(extension, url - extension.length) !== -1;\n });\n };\n link = function(scope, el) {\n var is_image, templateHtml;\n is_image = isImage(scope.attachment.get('url'));\n if (is_image) {\n templateHtml = template.get(\"user-timeline/user-timeline-attachment/user-timeline-attachment-image.html\");\n } else {\n templateHtml = template.get(\"user-timeline/user-timeline-attachment/user-timeline-attachment.html\");\n }\n el.html(templateHtml);\n $compile(el.contents())(scope);\n return el.find(\"img\").error(function() {\n return this.remove();\n });\n };\n return {\n link: link,\n scope: {\n attachment: \"=tgUserTimelineAttachment\"\n }\n };\n };\n\n UserTimelineAttachmentDirective.$inject = [\"$tgTemplate\", \"$compile\"];\n\n angular.module(\"taigaUserTimeline\").directive(\"tgUserTimelineAttachment\", UserTimelineAttachmentDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UserTimelineItemTitle, unslugify;\n\n unslugify = this.taiga.unslugify;\n\n UserTimelineItemTitle = (function() {\n UserTimelineItemTitle.$inject = [\"$translate\", \"$sce\"];\n\n UserTimelineItemTitle.prototype._fieldTranslationKey = {\n 'status': 'COMMON.FIELDS.STATUS',\n 'subject': 'COMMON.FIELDS.SUBJECT',\n 'description_diff': 'COMMON.FIELDS.DESCRIPTION',\n 'points': 'COMMON.FIELDS.POINTS',\n 'assigned_to': 'COMMON.FIELDS.ASSIGNED_TO',\n 'assigned_users': 'COMMON.FIELDS.ASSIGNED_USERS',\n 'severity': 'ISSUES.FIELDS.SEVERITY',\n 'priority': 'ISSUES.FIELDS.PRIORITY',\n 'type': 'ISSUES.FIELDS.TYPE',\n 'is_iocaine': 'TASK.FIELDS.IS_IOCAINE',\n 'is_blocked': 'COMMON.FIELDS.IS_BLOCKED',\n 'color': 'COMMON.FIELDS.COLOR',\n 'due_date': 'COMMON.FIELDS.DUE_DATE',\n 'due_date_reason': 'COMMON.FIELDS.DUE_DATE_REASON',\n 'milestone': 'COMMON.FIELDS.SPRINT'\n };\n\n UserTimelineItemTitle.prototype._params = {\n username: function(timeline, event) {\n var title_attr, url, user;\n user = timeline.getIn(['data', 'user']);\n if (user.get('is_profile_visible')) {\n title_attr = this.translate.instant('COMMON.SEE_USER_PROFILE', {\n username: user.get('username')\n });\n url = \"user-profile:username=timeline.getIn(['data', 'user', 'username'])\";\n return this._getLink(url, user.get('name'), title_attr);\n } else {\n return this._getUsernameSpan(user.get('name'));\n }\n },\n field_name: function(timeline, event) {\n var field_name;\n field_name = timeline.getIn(['data', 'value_diff', 'key']);\n return this.translate.instant(this._fieldTranslationKey[field_name]);\n },\n project_name: function(timeline, event) {\n var url;\n url = \"project:project=timeline.getIn(['data', 'project', 'slug'])\";\n return this._getLink(url, timeline.getIn([\"data\", \"project\", \"name\"]));\n },\n new_value: function(timeline, event) {\n var new_value, prettyDate, value;\n if (_.isArray(timeline.getIn([\"data\", \"value_diff\", \"value\"]).toJS())) {\n value = timeline.getIn([\"data\", \"value_diff\", \"value\"]).get(1);\n if (value === null && timeline.getIn([\"data\", \"value_diff\", \"key\"]) === 'assigned_to') {\n value = this.translate.instant('ACTIVITY.VALUES.UNASSIGNED');\n }\n if (value === null && timeline.getIn([\"data\", \"value_diff\", \"key\"]) === 'assigned_users') {\n value = this.translate.instant('ACTIVITY.VALUES.UNASSIGNED');\n } else if (timeline.getIn([\"data\", \"value_diff\", \"key\"]) === 'due_date') {\n if (value) {\n prettyDate = this.translate.instant(\"COMMON.PICKERDATE.FORMAT\");\n value = moment(value, \"YYYY-MM-DD\").format(prettyDate);\n } else {\n value = this.translate.instant('ACTIVITY.VALUES.NOT_SET');\n }\n }\n new_value = value;\n } else {\n new_value = timeline.getIn([\"data\", \"value_diff\", \"value\"]).first().get(1);\n }\n return $('').attr('ng-non-bindable', true).text(new_value).prop('outerHTML');\n },\n sprint_name: function(timeline, event) {\n var url;\n url = \"project-taskboard:project=timeline.getIn(['data', 'project', 'slug']),sprint=timeline.getIn(['data', 'milestone', 'slug'])\";\n return this._getLink(url, timeline.getIn(['data', 'milestone', 'name']));\n },\n us_name: function(timeline, event) {\n var event_us, obj, text, url;\n obj = this._getTimelineObj(timeline, event).get('userstory');\n event_us = {\n obj: 'parent_userstory'\n };\n url = this._getDetailObjUrl(event_us);\n text = '#' + obj.get('ref') + ' ' + obj.get('subject');\n return this._getLink(url, text);\n },\n related_us_name: function(timeline, event) {\n var obj, text, url;\n obj = timeline.getIn([\"data\", \"userstory\"]);\n url = \"project-userstories-detail:project=timeline.getIn(['data', 'userstory', 'project', 'slug']),ref=timeline.getIn(['data', 'userstory', 'ref'])\";\n text = '#' + obj.get('ref') + ' ' + obj.get('subject');\n return this._getLink(url, text);\n },\n epic_name: function(timeline, event) {\n var obj, text, url;\n obj = timeline.getIn([\"data\", \"epic\"]);\n url = \"project-epics-detail:project=timeline.getIn(['data', 'project', 'slug']),ref=timeline.getIn(['data', 'epic', 'ref'])\";\n text = '#' + obj.get('ref') + ' ' + obj.get('subject');\n return this._getLink(url, text);\n },\n obj_name: function(timeline, event) {\n var obj, text, url;\n obj = this._getTimelineObj(timeline, event);\n url = this._getDetailObjUrl(event);\n if (event.obj === 'wikipage') {\n text = unslugify(obj.get('slug'));\n } else if (event.obj === 'milestone') {\n text = obj.get('name');\n } else {\n text = '#' + obj.get('ref') + ' ' + obj.get('subject');\n }\n return this._getLink(url, text);\n },\n role_name: function(timeline, event) {\n return _.escape(timeline.getIn(['data', 'value_diff', 'value']).keySeq().first());\n }\n };\n\n function UserTimelineItemTitle(translate, sce) {\n this.translate = translate;\n this.sce = sce;\n }\n\n UserTimelineItemTitle.prototype._translateTitleParams = function(param, timeline, event) {\n return this._params[param].call(this, timeline, event);\n };\n\n UserTimelineItemTitle.prototype._getTimelineObj = function(timeline, event) {\n return timeline.getIn(['data', event.obj]);\n };\n\n UserTimelineItemTitle.prototype._getDetailObjUrl = function(event) {\n var url;\n url = {\n \"issue\": [\"project-issues-detail\", \":project=timeline.getIn(['data', 'project', 'slug']),ref=timeline.getIn(['obj', 'ref'])\"],\n \"wikipage\": [\"project-wiki-page\", \":project=timeline.getIn(['data', 'project', 'slug']),slug=timeline.getIn(['obj', 'slug'])\"],\n \"task\": [\"project-tasks-detail\", \":project=timeline.getIn(['data', 'project', 'slug']),ref=timeline.getIn(['obj', 'ref'])\"],\n \"userstory\": [\"project-userstories-detail\", \":project=timeline.getIn(['data', 'project', 'slug']),ref=timeline.getIn(['obj', 'ref'])\"],\n \"parent_userstory\": [\"project-userstories-detail\", \":project=timeline.getIn(['data', 'project', 'slug']),ref=timeline.getIn(['obj', 'userstory', 'ref'])\"],\n \"milestone\": [\"project-taskboard\", \":project=timeline.getIn(['data', 'project', 'slug']),sprint=timeline.getIn(['obj', 'slug'])\"],\n \"epic\": [\"project-epics-detail\", \":project=timeline.getIn(['data', 'project', 'slug']),ref=timeline.getIn(['obj', 'ref'])\"]\n };\n return url[event.obj][0] + url[event.obj][1];\n };\n\n UserTimelineItemTitle.prototype._getLink = function(url, text, title) {\n var span;\n title = title || text;\n span = $('').attr('ng-non-bindable', true).text(text);\n return $('').attr('tg-nav', url).append(span).prop('outerHTML');\n };\n\n UserTimelineItemTitle.prototype._getUsernameSpan = function(text) {\n var title;\n title = title || text;\n return $('').addClass('username').text(text).prop('outerHTML');\n };\n\n UserTimelineItemTitle.prototype._getParams = function(timeline, event, timeline_type) {\n var params;\n params = {};\n timeline_type.translate_params.forEach((function(_this) {\n return function(param) {\n return params[param] = _this._translateTitleParams(param, timeline, event);\n };\n })(this));\n return params;\n };\n\n UserTimelineItemTitle.prototype.getTitle = function(timeline, event, type) {\n var params, paramsKeys, translation;\n params = this._getParams(timeline, event, type);\n paramsKeys = {};\n Object.keys(params).forEach(function(key) {\n return paramsKeys[key] = '{{' + key + '}}';\n });\n translation = this.translate.instant(type.key, paramsKeys);\n Object.keys(params).forEach(function(key) {\n var find;\n find = '{{' + key + '}}';\n return translation = translation.replace(new RegExp(find, 'g'), params[key]);\n });\n return translation;\n };\n\n return UserTimelineItemTitle;\n\n })();\n\n angular.module(\"taigaUserTimeline\").service(\"tgUserTimelineItemTitle\", UserTimelineItemTitle);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UserTimelineType, timelineType;\n\n timelineType = function(timeline, event) {\n var types;\n types = [\n {\n check: function(timeline, event) {\n return event.obj === 'membership';\n },\n key: 'TIMELINE.NEW_MEMBER',\n translate_params: ['project_name'],\n member: function(timeline) {\n return Immutable.Map({\n user: timeline.getIn(['data', 'user']),\n role: timeline.getIn(['data', 'role'])\n });\n }\n }, {\n check: function(timeline, event) {\n return event.obj === 'project' && event.type === 'create';\n },\n key: 'TIMELINE.NEW_PROJECT',\n translate_params: ['username', 'project_name'],\n description: function(timeline) {\n return timeline.getIn(['data', 'project', 'description']);\n }\n }, {\n check: function(timeline, event) {\n return event.type === 'change' && timeline.hasIn(['data', 'value_diff']) && timeline.getIn(['data', 'value_diff', 'key']) === 'attachments';\n },\n key: 'TIMELINE.UPLOAD_ATTACHMENT',\n translate_params: ['username', 'obj_name']\n }, {\n check: function(timeline, event) {\n return event.obj === 'userstory' && event.type === 'create';\n },\n key: 'TIMELINE.US_CREATED',\n translate_params: ['username', 'project_name', 'obj_name']\n }, {\n check: function(timeline, event) {\n return event.obj === 'issue' && event.type === 'create';\n },\n key: 'TIMELINE.ISSUE_CREATED',\n translate_params: ['username', 'project_name', 'obj_name']\n }, {\n check: function(timeline, event) {\n return event.obj === 'wikipage' && event.type === 'create';\n },\n key: 'TIMELINE.WIKI_CREATED',\n translate_params: ['username', 'project_name', 'obj_name']\n }, {\n check: function(timeline, event) {\n return event.obj === 'task' && event.type === 'create' && !timeline.getIn(['data', 'task', 'userstory']);\n },\n key: 'TIMELINE.TASK_CREATED',\n translate_params: ['username', 'project_name', 'obj_name']\n }, {\n check: function(timeline, event) {\n return event.obj === 'task' && event.type === 'create' && timeline.getIn(['data', 'task', 'userstory']);\n },\n key: 'TIMELINE.TASK_CREATED_WITH_US',\n translate_params: ['username', 'project_name', 'obj_name', 'us_name']\n }, {\n check: function(timeline, event) {\n return event.obj === 'milestone' && event.type === 'create';\n },\n key: 'TIMELINE.MILESTONE_CREATED',\n translate_params: ['username', 'project_name', 'obj_name']\n }, {\n check: function(timeline, event) {\n return event.obj === 'epic' && event.type === 'create';\n },\n key: 'TIMELINE.EPIC_CREATED',\n translate_params: ['username', 'project_name', 'obj_name']\n }, {\n check: function(timeline, event) {\n return event.obj === 'relateduserstory' && event.type === 'create';\n },\n key: 'TIMELINE.EPIC_RELATED_USERSTORY_CREATED',\n translate_params: ['username', 'project_name', 'related_us_name', 'epic_name']\n }, {\n check: function(timeline, event) {\n return timeline.getIn(['data', 'comment']) && event.obj === 'userstory';\n },\n key: 'TIMELINE.NEW_COMMENT_US',\n translate_params: ['username', 'obj_name'],\n description: function(timeline) {\n var text;\n text = timeline.getIn(['data', 'comment_html']);\n return $($.parseHTML(text)).text();\n }\n }, {\n check: function(timeline, event) {\n return timeline.getIn(['data', 'comment']) && event.obj === 'issue';\n },\n key: 'TIMELINE.NEW_COMMENT_ISSUE',\n translate_params: ['username', 'obj_name'],\n description: function(timeline) {\n var text;\n text = timeline.getIn(['data', 'comment_html']);\n return $($.parseHTML(text)).text();\n }\n }, {\n check: function(timeline, event) {\n return timeline.getIn(['data', 'comment']) && event.obj === 'task';\n },\n key: 'TIMELINE.NEW_COMMENT_TASK',\n translate_params: ['username', 'obj_name'],\n description: function(timeline) {\n var text;\n text = timeline.getIn(['data', 'comment_html']);\n return $($.parseHTML(text)).text();\n }\n }, {\n check: function(timeline, event) {\n return timeline.getIn(['data', 'comment']) && event.obj === 'epic';\n },\n key: 'TIMELINE.NEW_COMMENT_EPIC',\n translate_params: ['username', 'obj_name'],\n description: function(timeline) {\n var text;\n text = timeline.getIn(['data', 'comment_html']);\n return $($.parseHTML(text)).text();\n }\n }, {\n check: function(timeline, event) {\n return timeline.hasIn(['data', 'value_diff']) && timeline.getIn(['data', 'value_diff', 'key']) === 'moveInBacklog' && timeline.hasIn(['data', 'value_diff', 'value', 'backlog_order']) && event.type === 'change';\n },\n key: 'TIMELINE.US_MOVED',\n translate_params: ['username', 'obj_name']\n }, {\n check: function(timeline, event) {\n if (timeline.hasIn(['data', 'value_diff']) && timeline.getIn(['data', 'value_diff', 'key']) === 'moveInBacklog' && event.type === 'change' && event.obj === 'userstory') {\n return timeline.getIn(['data', 'value_diff', 'value', 'milestone']).get(1) === null;\n }\n return false;\n },\n key: 'TIMELINE.US_REMOVED_FROM_MILESTONE',\n translate_params: ['username', 'obj_name']\n }, {\n check: function(timeline, event) {\n return timeline.hasIn(['data', 'value_diff']) && timeline.getIn(['data', 'value_diff', 'key']) === 'moveInBacklog' && event.type === 'change' && event.obj === 'userstory';\n },\n key: 'TIMELINE.US_ADDED_MILESTONE',\n translate_params: ['username', 'obj_name', 'sprint_name']\n }, {\n check: function(timeline, event) {\n if (timeline.hasIn(['data', 'value_diff']) && timeline.getIn(['data', 'value_diff', 'key']) === 'blocked' && event.type === 'change') {\n return timeline.getIn(['data', 'value_diff', 'value', 'is_blocked']).get(1) === true;\n }\n return false;\n },\n key: 'TIMELINE.BLOCKED',\n translate_params: ['username', 'obj_name'],\n description: function(timeline) {\n var text;\n if (timeline.hasIn(['data', 'value_diff', 'value', 'blocked_note_html'])) {\n text = timeline.getIn(['data', 'value_diff', 'value', 'blocked_note_html']).get(1);\n return $($.parseHTML(text)).text();\n } else {\n return false;\n }\n }\n }, {\n check: function(timeline, event) {\n if (timeline.hasIn(['data', 'value_diff']) && timeline.getIn(['data', 'value_diff', 'key']) === 'blocked' && event.type === 'change') {\n return timeline.getIn(['data', 'value_diff', 'value', 'is_blocked']).get(1) === false;\n }\n return false;\n },\n key: 'TIMELINE.UNBLOCKED',\n translate_params: ['username', 'obj_name']\n }, {\n check: function(timeline, event) {\n return event.obj === 'milestone' && event.type === 'change';\n },\n key: 'TIMELINE.MILESTONE_UPDATED',\n translate_params: ['username', 'obj_name']\n }, {\n check: function(timeline, event) {\n return event.obj === 'wikipage' && event.type === 'change';\n },\n key: 'TIMELINE.WIKI_UPDATED',\n translate_params: ['username', 'obj_name']\n }, {\n check: function(timeline, event) {\n return event.obj === 'userstory' && event.type === 'change' && timeline.hasIn(['data', 'value_diff']) && timeline.getIn(['data', 'value_diff', 'key']) === 'points';\n },\n key: 'TIMELINE.US_UPDATED_POINTS',\n translate_params: ['username', 'field_name', 'obj_name', 'new_value', 'role_name']\n }, {\n check: function(timeline, event) {\n return event.obj === 'userstory' && event.type === 'change' && timeline.hasIn(['data', 'value_diff']) && timeline.getIn(['data', 'value_diff', 'key']) === 'description_diff';\n },\n key: 'TIMELINE.US_UPDATED',\n translate_params: ['username', 'field_name', 'obj_name']\n }, {\n check: function(timeline, event) {\n return event.obj === 'userstory' && event.type === 'change';\n },\n key: 'TIMELINE.US_UPDATED_WITH_NEW_VALUE',\n translate_params: ['username', 'field_name', 'obj_name', 'new_value']\n }, {\n check: function(timeline, event) {\n return event.obj === 'issue' && event.type === 'change' && timeline.hasIn(['data', 'value_diff']) && timeline.getIn(['data', 'value_diff', 'key']) === 'description_diff';\n },\n key: 'TIMELINE.ISSUE_UPDATED',\n translate_params: ['username', 'field_name', 'obj_name']\n }, {\n check: function(timeline, event) {\n return event.obj === 'issue' && event.type === 'change';\n },\n key: 'TIMELINE.ISSUE_UPDATED_WITH_NEW_VALUE',\n translate_params: ['username', 'field_name', 'obj_name', 'new_value']\n }, {\n check: function(timeline, event) {\n return event.obj === 'task' && event.type === 'change' && !timeline.getIn(['data', 'task', 'userstory']) && timeline.hasIn(['data', 'value_diff']) && timeline.getIn(['data', 'value_diff', 'key']) === 'description_diff';\n },\n key: 'TIMELINE.TASK_UPDATED',\n translate_params: ['username', 'field_name', 'obj_name']\n }, {\n check: function(timeline, event) {\n return event.obj === 'task' && event.type === 'change' && timeline.getIn(['data', 'task', 'userstory']) && timeline.hasIn(['data', 'value_diff']) && timeline.getIn(['data', 'value_diff', 'key']) === 'description_diff';\n },\n key: 'TIMELINE.TASK_UPDATED_WITH_US',\n translate_params: ['username', 'field_name', 'obj_name', 'us_name']\n }, {\n check: function(timeline, event) {\n return event.obj === 'task' && event.type === 'change' && !timeline.getIn(['data', 'task', 'userstory']);\n },\n key: 'TIMELINE.TASK_UPDATED_WITH_NEW_VALUE',\n translate_params: ['username', 'field_name', 'obj_name', 'new_value']\n }, {\n check: function(timeline, event) {\n return event.obj === 'task' && event.type === 'change' && timeline.getIn(['data', 'task', 'userstory']);\n },\n key: 'TIMELINE.TASK_UPDATED_WITH_US_NEW_VALUE',\n translate_params: ['username', 'field_name', 'obj_name', 'us_name', 'new_value']\n }, {\n check: function(timeline, event) {\n return event.obj === 'epic' && event.type === 'change' && timeline.hasIn(['data', 'value_diff']) && timeline.getIn(['data', 'value_diff', 'key']) === 'description_diff';\n },\n key: 'TIMELINE.EPIC_UPDATED',\n translate_params: ['username', 'field_name', 'obj_name']\n }, {\n check: function(timeline, event) {\n return event.obj === 'epic' && event.type === 'change' && timeline.hasIn(['data', 'value_diff']) && timeline.getIn(['data', 'value_diff', 'key']) === 'color';\n },\n key: 'TIMELINE.EPIC_UPDATED_WITH_NEW_COLOR',\n translate_params: ['username', 'field_name', 'obj_name', 'new_value']\n }, {\n check: function(timeline, event) {\n return event.obj === 'epic' && event.type === 'change';\n },\n key: 'TIMELINE.EPIC_UPDATED_WITH_NEW_VALUE',\n translate_params: ['username', 'field_name', 'obj_name', 'new_value']\n }, {\n check: function(timeline, event) {\n return event.obj === 'user' && event.type === 'create';\n },\n key: 'TIMELINE.NEW_USER',\n translate_params: ['username']\n }\n ];\n return _.find(types, function(obj) {\n return obj.check(timeline, event);\n });\n };\n\n UserTimelineType = (function() {\n function UserTimelineType() {}\n\n UserTimelineType.prototype.getType = function(timeline, event) {\n return timelineType(timeline, event);\n };\n\n return UserTimelineType;\n\n })();\n\n angular.module(\"taigaUserTimeline\").service(\"tgUserTimelineItemType\", UserTimelineType);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UserTimelineItemDirective;\n\n UserTimelineItemDirective = function() {\n return {\n templateUrl: \"user-timeline/user-timeline-item/user-timeline-item.html\",\n scope: {\n timeline: \"=tgUserTimelineItem\"\n }\n };\n };\n\n angular.module(\"taigaUserTimeline\").directive(\"tgUserTimelineItem\", UserTimelineItemDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UserTimelinePaginationSequence;\n\n UserTimelinePaginationSequence = function() {\n var obj;\n obj = {};\n obj.generate = function(config) {\n var getContent, items, next, page;\n page = 1;\n items = Immutable.List();\n config.minItems = config.minItems || 20;\n next = function() {\n items = Immutable.List();\n return getContent();\n };\n getContent = function() {\n return config.fetch(page).then(function(response) {\n var data, pagination;\n page++;\n data = response.get(\"data\");\n if (config.filter) {\n data = config.filter(data);\n }\n if (config.map && data) {\n data = data.map(config.map);\n }\n items = items.concat(data);\n if (items.size < config.minItems && response.get(\"next\")) {\n return getContent();\n }\n pagination = Immutable.Map({\n items: items,\n total: response.get(\"total\"),\n next: response.get(\"next\")\n });\n return pagination;\n });\n };\n return {\n next: function() {\n return next();\n }\n };\n };\n return obj;\n };\n\n angular.module(\"taigaUserTimeline\").factory(\"tgUserTimelinePaginationSequenceService\", UserTimelinePaginationSequence);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UserTimelineController, mixOf, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n mixOf = this.taiga.mixOf;\n\n UserTimelineController = (function(superClass) {\n extend(UserTimelineController, superClass);\n\n UserTimelineController.$inject = [\"tgUserTimelineService\"];\n\n function UserTimelineController(userTimelineService) {\n this.userTimelineService = userTimelineService;\n this.timelineList = Immutable.List();\n this.scrollDisabled = false;\n this.timeline = null;\n if (this.projectId) {\n this.timeline = this.userTimelineService.getProjectTimeline(this.projectId);\n } else if (this.currentUser) {\n this.timeline = this.userTimelineService.getProfileTimeline(this.user.get(\"id\"));\n } else {\n this.timeline = this.userTimelineService.getUserTimeline(this.user.get(\"id\"));\n }\n this.loadTimeline();\n }\n\n UserTimelineController.prototype.loadTimeline = function() {\n this.scrollDisabled = true;\n return this.timeline.next().then((function(_this) {\n return function(response) {\n _this.timelineList = _this.timelineList.concat(response.get(\"items\"));\n if (response.get(\"next\")) {\n _this.scrollDisabled = false;\n }\n return _this.timelineList;\n };\n })(this));\n };\n\n return UserTimelineController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin, taiga.FiltersMixin));\n\n angular.module(\"taigaUserTimeline\").controller(\"UserTimeline\", UserTimelineController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UserTimelineDirective;\n\n UserTimelineDirective = function() {\n return {\n templateUrl: \"user-timeline/user-timeline/user-timeline.html\",\n controller: \"UserTimeline\",\n controllerAs: \"vm\",\n scope: {\n projectId: \"=projectid\",\n user: \"=\",\n currentUser: \"=\"\n },\n bindToController: true\n };\n };\n\n angular.module(\"taigaProfile\").directive(\"tgUserTimeline\", UserTimelineDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var UserTimelineService, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n UserTimelineService = (function(superClass) {\n extend(UserTimelineService, superClass);\n\n UserTimelineService.$inject = [\"tgResources\", \"tgUserTimelinePaginationSequenceService\", \"tgUserTimelineItemType\", \"tgUserTimelineItemTitle\"];\n\n function UserTimelineService(rs, userTimelinePaginationSequenceService, userTimelineItemType, userTimelineItemTitle) {\n this.rs = rs;\n this.userTimelinePaginationSequenceService = userTimelinePaginationSequenceService;\n this.userTimelineItemType = userTimelineItemType;\n this.userTimelineItemTitle = userTimelineItemTitle;\n }\n\n UserTimelineService.prototype._valid_fields = ['status', 'subject', 'description_diff', 'assigned_users', 'assigned_to', 'points', 'severity', 'priority', 'type', 'attachments', 'is_iocaine', 'content_diff', 'name', 'estimated_finish', 'estimated_start', 'blocked', 'moveInBacklog', 'milestone', 'color', 'due_date', 'due_date_reason'];\n\n UserTimelineService.prototype._invalid = [\n {\n check: function(timeline) {\n var fieldKey, value_diff;\n value_diff = timeline.get(\"data\").get(\"value_diff\");\n if (value_diff) {\n fieldKey = value_diff.get('key');\n if (this._valid_fields.indexOf(fieldKey) === -1) {\n return true;\n } else if (fieldKey === 'attachments' && value_diff.get('value').get('new').size === 0) {\n return true;\n }\n }\n return false;\n }\n }, {\n check: function(timeline) {\n var event, value_diff;\n event = timeline.get('event_type').split(\".\");\n value_diff = timeline.get(\"data\").get(\"value_diff\");\n return event[2] === 'change' && value_diff === void 0;\n }\n }, {\n check: function(timeline) {\n var event;\n event = timeline.get('event_type').split(\".\");\n return event[2] === 'delete';\n }\n }, {\n check: function(timeline) {\n var event;\n event = timeline.get('event_type').split(\".\");\n return event[1] === 'project' && event[2] === 'change';\n }\n }, {\n check: function(timeline) {\n return !!timeline.get(\"data\").get(\"comment_deleted\");\n }\n }, {\n check: function(timeline) {\n var event, value_diff;\n event = timeline.get('event_type').split(\".\");\n value_diff = timeline.get(\"data\").get(\"value_diff\");\n if (value_diff && event[1] === \"task\" && event[2] === \"change\" && value_diff.get(\"key\") === \"milestone\") {\n return timeline.get(\"data\").get(\"value_diff\").get(\"value\");\n }\n return false;\n }\n }\n ];\n\n UserTimelineService.prototype._isInValidTimeline = function(timeline) {\n return _.some(this._invalid, (function(_this) {\n return function(invalid) {\n return invalid.check.call(_this, timeline);\n };\n })(this));\n };\n\n UserTimelineService.prototype._parseEventType = function(event_type) {\n event_type = event_type.split(\".\");\n return {\n section: event_type[0],\n obj: event_type[1],\n type: event_type[2]\n };\n };\n\n UserTimelineService.prototype._getTimelineObject = function(timeline, event) {\n if (timeline.get('data').get(event.obj)) {\n return timeline.get('data').get(event.obj);\n }\n };\n\n UserTimelineService.prototype._attachExtraInfoToTimelineEntry = function(timeline, event, type) {\n var title;\n title = this.userTimelineItemTitle.getTitle(timeline, event, type);\n timeline = timeline.set('title_html', title);\n timeline = timeline.set('obj', this._getTimelineObject(timeline, event));\n if (type.description) {\n timeline = timeline.set('description', type.description(timeline));\n }\n if (type.member) {\n timeline = timeline.set('member', type.member(timeline));\n }\n if (timeline.getIn(['data', 'value_diff', 'key']) === 'attachments' && timeline.hasIn(['data', 'value_diff', 'value', 'new'])) {\n timeline = timeline.set('attachments', timeline.getIn(['data', 'value_diff', 'value', 'new']));\n }\n return timeline;\n };\n\n UserTimelineService.prototype._parseTimeline = function(response) {\n var newdata;\n newdata = Immutable.List();\n response.get('data').forEach((function(_this) {\n return function(item) {\n var data, event, newItem, values_diff;\n event = _this._parseEventType(item.get('event_type'));\n data = item.get('data');\n values_diff = data.get('values_diff');\n if (values_diff && values_diff.count()) {\n if (values_diff.has('is_blocked')) {\n values_diff = Immutable.Map({\n 'blocked': values_diff\n });\n }\n if (values_diff.has('milestone')) {\n if (event.obj === 'userstory') {\n values_diff = Immutable.Map({\n 'moveInBacklog': values_diff\n });\n } else {\n values_diff = values_diff.deleteIn(['values_diff', 'milestone']);\n }\n } else if (event.obj === 'milestone') {\n values_diff = Immutable.Map({\n 'milestone': values_diff\n });\n }\n return values_diff.forEach(function(value, key) {\n var newItem, obj;\n obj = Immutable.Map({\n key: key,\n value: value\n });\n newItem = item.setIn(['data', 'value_diff'], obj);\n newItem = newItem.deleteIn(['data', 'values_diff']);\n return newdata = newdata.push(newItem);\n });\n } else {\n newItem = item.deleteIn(['data', 'values_diff']);\n return newdata = newdata.push(newItem);\n }\n };\n })(this));\n return response.set('data', newdata);\n };\n\n UserTimelineService.prototype._addEntyAttributes = function(item) {\n var event, type;\n event = this._parseEventType(item.get('event_type'));\n type = this.userTimelineItemType.getType(item, event);\n return this._attachExtraInfoToTimelineEntry(item, event, type);\n };\n\n UserTimelineService.prototype.getProfileTimeline = function(userId) {\n var config;\n config = {};\n config.fetch = (function(_this) {\n return function(page) {\n return _this.rs.users.getProfileTimeline(userId, page).then(function(response) {\n return _this._parseTimeline(response);\n });\n };\n })(this);\n config.map = (function(_this) {\n return function(obj) {\n return _this._addEntyAttributes(obj);\n };\n })(this);\n config.filter = (function(_this) {\n return function(items) {\n return items.filterNot(function(item) {\n return _this._isInValidTimeline(item);\n });\n };\n })(this);\n return this.userTimelinePaginationSequenceService.generate(config);\n };\n\n UserTimelineService.prototype.getUserTimeline = function(userId) {\n var config;\n config = {};\n config.fetch = (function(_this) {\n return function(page) {\n return _this.rs.users.getUserTimeline(userId, page).then(function(response) {\n return _this._parseTimeline(response);\n });\n };\n })(this);\n config.map = (function(_this) {\n return function(obj) {\n return _this._addEntyAttributes(obj);\n };\n })(this);\n config.filter = (function(_this) {\n return function(items) {\n return items.filterNot(function(item) {\n return _this._isInValidTimeline(item);\n });\n };\n })(this);\n return this.userTimelinePaginationSequenceService.generate(config);\n };\n\n UserTimelineService.prototype.getProjectTimeline = function(projectId) {\n var config;\n config = {};\n config.fetch = (function(_this) {\n return function(page) {\n return _this.rs.projects.getTimeline(projectId, page).then(function(response) {\n return _this._parseTimeline(response);\n });\n };\n })(this);\n config.map = (function(_this) {\n return function(obj) {\n return _this._addEntyAttributes(obj);\n };\n })(this);\n config.filter = (function(_this) {\n return function(items) {\n return items.filterNot(function(item) {\n return _this._isInValidTimeline(item);\n });\n };\n })(this);\n return this.userTimelinePaginationSequenceService.generate(config);\n };\n\n return UserTimelineService;\n\n })(taiga.Service);\n\n angular.module(\"taigaUserTimeline\").service(\"tgUserTimelineService\", UserTimelineService);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var IsolateClickDirective;\n\n IsolateClickDirective = function() {\n var link;\n link = function(scope, el, attrs) {\n return el.on('click', (function(_this) {\n return function(e) {\n return e.stopPropagation();\n };\n })(this));\n };\n return {\n link: link\n };\n };\n\n angular.module(\"taigaUtils\").directive(\"tgIsolateClick\", IsolateClickDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var WikiHistoryDiffDirective, module;\n\n module = angular.module('taigaWikiHistory');\n\n WikiHistoryDiffDirective = function() {\n return {\n templateUrl: \"wiki/history/wiki-history-diff.html\",\n scope: {\n key: \"<\",\n diff: \"<\"\n }\n };\n };\n\n module.directive(\"tgWikiHistoryDiff\", WikiHistoryDiffDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var WikiHistoryEntryDirective, module;\n\n module = angular.module('taigaWikiHistory');\n\n WikiHistoryEntryDirective = function() {\n var link;\n link = function(scope, el, attr) {\n return scope.singleHistoryEntry = scope.historyEntry.toJS();\n };\n return {\n link: link,\n templateUrl: \"wiki/history/wiki-history-entry.html\",\n scope: {\n historyEntry: \"<\"\n }\n };\n };\n\n module.directive(\"tgWikiHistoryEntry\", WikiHistoryEntryDirective);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var WikiHistoryController, module, taiga;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaWikiHistory\");\n\n WikiHistoryController = (function() {\n WikiHistoryController.$inject = [\"tgActivityService\"];\n\n function WikiHistoryController(activityService) {\n this.activityService = activityService;\n taiga.defineImmutableProperty(this, 'historyEntries', (function(_this) {\n return function() {\n return _this.activityService.entries;\n };\n })(this));\n taiga.defineImmutableProperty(this, 'disablePagination', (function(_this) {\n return function() {\n return _this.activityService.disablePagination;\n };\n })(this));\n this.toggle = false;\n }\n\n WikiHistoryController.prototype.initializeHistory = function(wikiId) {\n if (wikiId) {\n this.activityService.init('wiki', wikiId);\n }\n return this.loadHistory();\n };\n\n WikiHistoryController.prototype.loadHistory = function() {\n return this.activityService.fetchEntries();\n };\n\n WikiHistoryController.prototype.nextPage = function() {\n return this.activityService.nextPage();\n };\n\n return WikiHistoryController;\n\n })();\n\n module.controller(\"WikiHistoryCtrl\", WikiHistoryController);\n\n}).call(this);\n\n\n/*\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * Copyright (c) 2021-present Kaleidos Ventures SL\n */\n\n(function() {\n var WikiHistoryDirective, bindOnce, module;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module('taigaWikiHistory');\n\n WikiHistoryDirective = function() {\n var link;\n link = function(scope, el, attrs, ctrl) {\n return bindOnce(scope, 'vm.wikiId', function(value) {\n return ctrl.initializeHistory(value);\n });\n };\n return {\n scope: {},\n bindToController: {\n wikiId: \"<\"\n },\n controller: \"WikiHistoryCtrl\",\n controllerAs: \"vm\",\n templateUrl: \"wiki/history/wiki-history.html\",\n link: link\n };\n };\n\n module.directive(\"tgWikiHistory\", WikiHistoryDirective);\n\n}).call(this);\n\n//# sourceMappingURL=maps/app.js.map\n"],"names":["configure","i18nInit","init","oldWindowOpen","pluginsWithModule","taiga","this","emojis","window","taigaContribPlugins","generateHash","components","_","map","x","JSON","stringify","hex_sha1","join","generateUniqueSessionIdentifier","date","Date","getTime","randomNumber","Math","floor","random","sessionId","open","url","name","config","startsWith","document","baseURI","$routeProvider","$locationProvider","$httpProvider","$provide","$tgEventsProvider","$compileProvider","$translateProvider","$translatePartialLoaderProvider","$animateProvider","$logProvider","originalWhen","userInfo","classNameFilter","when","path","route","resolve","angular","extend","languageLoad","$q","$translate","deferred","defer","then","promise","projectLoaded","projectService","$route","setSection","ref","current","$$route","section","params","pslug","setProjectBySlug","cleanProject","call","templateUrl","controller","controllerAs","loader","title","description","joyride","reloadOnSearch","access","requiresLogin","template","redirectTo","disableHeader","taigaConfig","publicRegisterEnabled","mobileViewport","otherwise","html5Mode","enabled","requireBase","defaultHeaders","Content-Type","Accept-Language","defaultLanguage","X-Session-Id","defaults","headers","patch","post","put","get","useApplyAsync","setSessionId","authHttpIntercept","$location","$navUrls","$lightboxService","errorHandlingService","$injector","urls","storage","retry","inProgress","responseError","response","includes","reject","status","cancelable","closeAll","error","indexOf","Promise","apiUrl","refreshToken","search","$http","removeUser","remove","refreshTokenReponse","responseRefresh","set","data","auth_token","refresh","Authorization","result","errorToken","nextUrl","force_next","location","href","err","request","factory","interceptors","push","loaderIntercept","loaderService","logRequest","requestError","rejection","logResponse","versionCheckHttpIntercept","version","element","injector","invoke","$confirm","versionErrorMsg","instant","notify","blockingIntercept","redirectToBlockedPage","block","blocked_code","debugInfoEnabled","debugInfo","localStorage","parse","preferedLangCode","lang","addPart","useLoader","urlTemplate","_version","useSanitizeValueStrategy","addInterpolation","preferredLanguage","useMissingTranslationHandlerLog","fallbackLanguage","decorators","getDecorators","each","decorator","provider","debugEnabled","debug","console","info","moment","locale","querySelector","setAttribute","ljs","load","messages","defaultMessage","type","email","urlstrict","number","digits","dateIso","alphanum","phone","notnull","notblank","required","regexp","min","max","range","minlength","maxlength","rangelength","mincheck","maxcheck","rangecheck","equalto","linewidth","pikaday","checksley","updateMessages","$log","$rootscope","$auth","$events","$analytics","$tagManager","$userPilot","appMetaService","navigationBarService","lightboxService","$tgConfig","un","$on","validators","val","width","lines","nl2br","split","every","line","length","prettyDate","isValid","RegExp","test","updateValidators","contribPlugins","adminPlugins","filter","authPlugins","userSettingsPlugins","e","ctx","language","rtlLanguages","isRTL","translations","translationTable","getTranslationTable","lan","setupConnection","isAuthenticated","getUser","initialize","identify","event","getLightboxOpen","preventDefault","next","start","project","setAll","addMobileViewport","removeMobileViewport","enableHeader","module","value","plugin","pluginsModules","modules","concat","run","TaigaBase","TaigaService","child","parent","key","hasProp","ctor","constructor","prototype","__super__","hasOwnProperty","bind","fn","me","apply","arguments","TaigaController","onInitialDataError","xhr","notfound","permissionDenied","q","Base","Service","Controller","DEFAULT_COLOR_LIST","findScope","getDefaulColorList","getMatches","getRandomDefaultColor","isEmail","isImage","isPdf","normalizeString","randomInt","item","i","l","slice","addClass","el","className","classList","add","str","replace","bindMethods","object","dependencies","keys","methods","forIn","isFunction","bindAll","bindOnce","scope","attr","continuation","delBind","$eval","$watch","mixOf","Mixed","base","method","mixins","trim","char","slugify","toString","toLowerCase","unslugify","capitalize","toggleText","texts","nextTextPosition","text","groupBy","coll","pred","len","timeout","wait","setTimeout","cancelTimeout","timeoutVar","clearTimeout","scopeDefer","func","$apply","isNumber","isString","isPlainObject","isUndefined","joinStr","debounce","leading","trailing","debounceLeading","startswith","str1","str2","truncate","maxLength","suffix","out","String","substring","lastIndexOf","sizeFormat","input","precision","units","isNaN","parseFloat","isFinite","log","pow","toFixed","stripTags","exception","pattern","replaceTags","tags","defineImmutableProperty","obj","Object","defineProperty","fn_result","isObject","size","mixin","removeKeys","chain","flatten","reduce","cartesianProduct","reduceRight","a","b","y","match","oldImmutable","newImmutable","pathObj","forEach","newValue","toJS","sample","clone","string","regex","index","matches","exec","end","interval","normalizedString","$scope","condition","$parent","PageMixin","FiltersMixin","UsFiltersMixin","fillUsersAndRoles","users","roles","computableRoles","activeUsers","user","is_active","sortBy","activeUsersById","id","usersById","members","uniq","loadUsersAndRoles","_this","all","rs","projects","usersList","projectId","rolesList","results","excludePrefix","selectFilter","mode","existing","compact","isInCurrentRouteParams","noreload","replaceFilter","replaceAllFilters","filters","unselectFilter","parsedValues","newValues","isEmpty","applyStoredFilters","projectSlug","validKeys","getFilters","pick","storeFilters","filtersHashSuffix","ns","hash","formatSelectedFilters","list","urlIds","selectedFilters","selectedIds","it","invalidTags","find","sit","invalidAppliedTags","dataType","validAppliedTags","color","filterCategories","excludeFilters","changeQ","filterQ","filtersReloadContent","removeFilter","generateFilters","addFilter","newFilter","category","selectCustomFilter","customFilter","saveCustomFilter","excludeKey","urlfilters","filterRemoteStorageService","storeCustomFiltersName","userFilters","removeCustomFilter","isFilterDataTypeSelected","filterDataType","milestone","loadFilters","storeFiltersName","userstories","filtersData","j","len1","ref1","selected","customFiltersRaw","dataCollection","statuses","tagsWithAtLeastOneElement","tag","count","assigned_users","full_name","assigned_to","role","owner","owners","epic","epics","subject","translate","content","hideEmpty","totalTaggedElements","customFilters","forOwn","$translateMissingTranslationHandlerLog","translationId","$inject","displayName","LoginPage","currentUserService","$routeParams","decodeURIComponent","clear","removeToken","AuthService","rootscope","model","http","config1","userpilot","currentUserService1","themeService","analytics","userModel","_currentTheme","_getUserTheme","setUserdata","userData","Immutable","fromJS","getAttrs","setUser","setUserId","ref2","compiledThemes","_taigaAvailableThemes","defaultTheme","theme","_setTheme","newTheme","use","_setLocales","make_model","auth","setRefreshToken","token","getRefreshToken","setToken","getToken","$broadcast","login","logout","register","getInvitation","invitations","acceptInvitiationWithNewUser","forgotPassword","changePasswordFromRecovery","changeEmail","cancelAccount","exportProfile","sendVerificationEmail","service","PublicRegisterMessageDirective","$config","templates","restrict","encodeURIComponent","directive","LoginDirective","$window","link","$el","$attrs","onError","onSuccess","submit","form","Form","defaultLoginEnabled","trackEvent","onKeyUp","currentTarget","iscapsLockActivated","validate","username","password","loginFormType","on","prerenderReady","off","RegisterDirective","onErrorSubmit","onSuccessSubmit","onlyOneErrorElement","_error_message","setErrors","RegisterOptionsDirective","ForgotPasswordDirective","message","success","ChangePasswordFromRecoveryDirective","$params","tokenInParams","InvitationDirective","loginForm","onErrorSubmitLogin","onErrorSubmitRegister","onSuccessSubmitLogin","onSuccessSubmitRegister","registerForm","submitLogin","invitation","dataLogin","project_slug","project_name","invitation_token","dataRegister","submitRegister","VerifyEmailDirective","$repo","$model","email_token","queryOne","ChangeEmailDirective","CancelAccountDirective","cancel_token","TaigaMainDirective","onresize","home","not-found","permission-denied","discover","discover-search","forgot-password","change-password","change-email","verified-email","cancel-account","create-project","create-project-scrum","create-project-kanban","create-project-duplicate","create-project-import","create-project-import-platform","profile","user-profile","blocked-project","project-detail-ref","project-backlog","project-taskboard","project-kanban","project-issues","project-epics","project-search","project-timeline","project-epics-detail","project-userstories-detail","project-tasks-detail","project-issues-detail","project-wiki","project-wiki-list","project-wiki-page","project-team","project-admin-home","project-admin-project-profile-details","project-admin-project-profile-default-values","project-admin-project-profile-modules","project-admin-project-profile-export","project-admin-project-profile-reports","project-admin-project-values-status","project-admin-project-values-points","project-admin-project-values-priorities","project-admin-project-values-severities","project-admin-project-values-types","project-admin-project-values-custom-fields","project-admin-project-values-tags","project-admin-project-values-due-dates","project-admin-project-values-kanban-power-ups","project-admin-memberships","project-admin-roles","project-admin-third-parties-webhooks","project-admin-third-parties-github","project-admin-third-parties-gitlab","project-admin-third-parties-bitbucket","project-admin-third-parties-gogs","project-admin-contrib","user-settings-user-profile","user-settings-user-change-password","user-settings-user-avatar","user-settings-user-project-settings","user-settings-mail-notifications","user-settings-live-notifications","user-settings-web-notifications","user-settings-contrib","notifications","$navurls","update","ToggleCommentDirective","QueueModelTransformation","qqueue1","repo","model1","qqueue","DataPickerConfig","i18n","previousMonth","nextMonth","months","weekdays","weekdaysShort","firstDay","parseInt","format","SelectedText","$document","getSelection","selection","createRange","CheckPermissionDirective","render","permission","removeClass","unObserve","unwatch","tgCheckPermission","$observe","ClassPermissionDirective","unbindWatcher","checkPermissions","negation","my_permissions","tgClassPermissionWatchAction","classes","AnimationFrame","animationFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","performAnimation","time","tail","shift","ProjectUrl","slug","is_backlog_activated","is_kanban_activated","is_wiki_activated","is_issues_activated","Qqueue","lastPromise","bindAdd","args","setObject","scope1","prop","attrs","cloneDeep","_attrs","_name","getObj","save","transformation","defered","comment","modified","omit","_modifiedAttrs","assign","Template","$templateCache","lodash","tmp","Capslock","Svg","svgIcon","svgTitle","svgTitleTranslate","svgTitleTranslateValues","svgFill","Autofocus","$timeout","$parse","$element","ngShow","focus","spinner","preload","src","onLoad","image","Image","onload","transclude","show","prepend","hide","DetailController","navurls","issue","task","us","wikipage","EventsService","win","liveAnnouncementService1","rootScope","liveAnnouncementService","processMessage","EventsProvider","subscriptions","connected","pendingMessages","reconnectTryInterval","maxConnectionErrors","errors","missedHeartbeats","heartbeatInterval","WebSocket","loc","scheme","stopExistingConnection","protocol","trimStart","host","ws","addEventListener","onOpen","onMessage","onClose","removeEventListener","stopHeartBeatMessages","close","subscribe","desc","$digest","liveNotifications","userId","notification","Notification","icon","body","onshow","onclick","requestPermission","webNotifications","routingKey","startHeartBeatMessages","maxMissedHeartbeats","heartbeatIntervalTime","setInterval","Error","sendMessage","cmd","error1","clearInterval","processHeartBeatPongMessage","serialize","msg","send","subscription","routing_key","callback","options","unsubscribe","randomTryInterval","$get","$win","$conf","$rootScope","FeedbackDirective","$loading","feedbackService","currentLoading","target","submitButton","create","feedback","finish","openLightbox","RelatedTaskRowDirective","$compile","$template","$emojis","templateView","templateEdit","saveTask","renderEdit","childScope","$destroy","$new","html","keyCode","$modelValue","renderView","perms","modify_task","delete_task","emojify","replaceEmojiNameByHtmlImgs","escape","select","askOnDelete","askResponse","$emit","ngModel","require","RelatedTaskCreateFormDirective","$tgmodel","newTask","createTask","default_task_status","openNewRelatedTask","reset","RelatedTaskCreateButtonDirective","RelatedTasksDirective","$rs","loadTasks","tasks","usId","_isVisible","reorderTask","newIndex","showAddTaks","showRelatedTasks","RelatedTaskAssignedToInlineEditionDirective","avatarService","$lightboxFactory","updateRelatedTask","member","avatar","getAvatar","imgurl","bg","full_name_display","tgRelatedTaskAssignedToInlineEdition","autoSave","notAutoSave","stopPropagation","assignedUsers","pop","class","currentUsers","single","lbTitle","unbind","ResourcesService","initResources","initUrls","auth-register","by_username","users-password-recovery","users-change-password-from-recovery","users-change-password","users-change-email","users-cancel-account","users-export","user-stats","user-liked","user-voted","user-watched","user-contacts","user-me","user-send-verification-email","permissions","notify-policies","user-project-settings","user-storage","memberships","bulk-create-memberships","resolver","project-templates","project-modules","bulk-update-projects-order","project-like","project-unlike","project-watch","project-unwatch","project-contact","project-transfer-validate-token","project-transfer-accept","project-transfer-reject","project-transfer-request","project-transfer-start","epic-statuses","userstory-statuses","userstory-due-dates","userstory-due-dates-create-default","points","task-statuses","task-due-dates","task-due-dates-create-default","issue-statuses","issue-due-dates","issue-due-dates-create-default","issue-types","priorities","severities","milestones","move-userstories-to-milestone","move-tasks-to-milestone","move-issues-to-milestone","epic-upvote","epic-downvote","epic-watch","epic-unwatch","epic-related-userstories","epic-related-userstories-bulk-create","bulk-create-us","bulk-update-us-backlog-order","bulk-update-us-milestone","bulk-update-us-miles-order","bulk-update-us-kanban-order","userstories-filters","userstory-upvote","userstory-downvote","userstory-watch","userstory-unwatch","bulk-create-tasks","bulk-update-task-taskboard-order","bulk-update-task-milestone","task-upvote","task-downvote","task-watch","task-unwatch","task-filters","promote-task-to-us","issues","bulk-create-issues","bulk-update-issue-milestone","issues-filters","issue-upvote","issue-downvote","issue-watch","issue-unwatch","promote-issue-to-us","swimlanes","swimlane-userstory-statuses","wiki","wiki-restore","wiki-links","history/epic","history/us","history/issue","history/task","history/wiki","attachments/epic","attachments/us","attachments/issue","attachments/task","attachments/wiki_page","attachments/wikipage","attachments/wiki","custom-attributes/epic","custom-attributes/userstory","custom-attributes/task","custom-attributes/issue","custom-attributes-values/epic","custom-attributes-values/userstory","custom-attributes-values/task","custom-attributes-values/issue","webhooks","webhooks-test","webhooklogs","webhooklogs-resend","epics-csv","userstories-csv","tasks-csv","issues-csv","timeline-profile","timeline-user","timeline-project","exporter","importer","locales","applications","application-tokens","stats-discover","importers-trello-auth-url","importers-trello-authorize","importers-trello-list-projects","importers-trello-list-users","importers-trello-import-project","importers-jira-auth-url","importers-jira-authorize","importers-jira-list-projects","importers-jira-list-users","importers-jira-import-project","importers-github-auth-url","importers-github-authorize","importers-github-list-projects","importers-github-list-users","importers-github-import-project","importers-asana-auth-url","importers-asana-authorize","importers-asana-list-projects","importers-asana-list-users","importers-asana-import-project","$urls","providers","toArray","SearchController","navUrls","projectService1","sectionName","loadInitialData","projectName","projectDescription","searchTerm","t","loadSearchData","searchResults","term","loadProject","epicStatusById","epic_statuses","issueStatusById","issue_statuses","taskStatusById","task_statuses","severityById","priorityById","usStatusById","us_statuses","loading","_loadSearchData","_promise","abort","SearchBoxDirective","reload","SearchDirective","$templatecache","$routeparams","linkTable","$ctrl","applyAutoTab","activeSectionName","tabsDom","currentSearchResults","getActiveSection","maxVal","selectedSection","renderFilterTabs","markSectionTabActive","wikipages","renderTableContent","oldElements","children","oldScope","parseHTML","activeSection","trackPage","sectionData","searchText","AnalyticsService","doc","initialized","conf","accountId","pageEvent","trackRoutes","ignoreFirstPageLoad","injectAnalytics","ga","getUrl","uuid","s","o","g","r","m","createElement","getElementsByTagName","async","parentNode","insertBefore","page","action","label","ecViewPlan","plan","plan_id","quantity","position","ecClickPlan","ecListPlans","arg","plans","ecAddToCart","plan_name","plan_price","price","ecConfirmChange","step","ecPurchase","revenue","BindScope","jQuery","CompileHtmlDirective","tgCompileHtml","oldValue","contents","DateRangeDirective","renderRange","first","second","startDate","endDate","tgDateRange","valFirst","valSecond","DateSelectorDirective","datePickerConfigService","datePickerConfig","merge","field","picker","Pikaday","destroy","setDate","SprintProgressBarDirective","renderProgress","percentage","visual_percentage","hasClass","css","tgSprintProgressbar","sprint","closedPoints","closed_points","totalPoints","total_points","round","CreatedByDisplayDirective","owner_extra_info","created_date","UserDisplayDirective","tgUserId","BlockButtonDirective","isEditable","DeleteButtonDirective","onDeleteGoToUrl","onDeleteTitle","subtitle","ListItemEpicStatusDirective","tgListitemEpicStatus","ListItemUsStatusDirective","tgListitemUsStatus","ListItemTaskStatusDirective","tgListitemTaskStatus","ListItemAssignedtoDirective","tgListitemAssignedto","ListItemIssueStatusDirective","tgListitemIssueStatus","ListItemTypeDirective","issueTypeById","domNode","tgListitemType","ListItemPriorityDirective","priority","tgListitemPriority","ListItemSeverityDirective","severity","tgListitemSeverity","TgProgressBarDirective","tgProgressBar","TgMainTitleDirective","i18nSectionName","ConfirmService","NOTIFICATION_MSG","light-error","ask","lightboxSelector","currentWidth","ok","onEsc","askDelete","lightbox","askChoice","choices","replacement","warning","choicesField","append","detailImage","svgContainer","useSVG","$","createElementNS","setAttributeNS","appendChild","spin","stop","percent","selector","tsem","one","CHECKBOX_TYPE","CustomAttributesValuesController","DATE_TYPE","DROPDOWN_TYPE","NUMBER_TYPE","confirm","objectId","customAttributes","customAttributesValues","loadCustomAttributesValues","getAttributeValue","attribute","attributeValue","attributes_values","updateAttributeValue","attributesValues","CustomAttributesValuesDirective","$templates","$storage","collapsedHash","$ctrls","collapsed","toggleCollapse","requiredEditionPerm","CustomAttributeValueDirective","$selectedText","wysiwygService","setFocusAndSelectOnInputField","edit","editable","attributeHtml","getHTML","extra","onSelect","selectedDate","saveCustomRichText","markdown","cancelCustomRichText","formControl","checked","tgCustomAttributeValue","customAttributeValue","EmojisService","replaceEmojiNameByImgs","replaceImgsByEmojiName","getEmojiByName","getEmojiById","searchByName","emojisById","keyBy","emojisByName","emojiId","regexImgs","emojiIds","emoji","escapeRegExp","LbUsEstimationDirective","$tgEstimationsService","estimationProcess","onSelectedPointForRole","roleId","pointId","$setViewValue","calculateTotalPoints","calculateRoles","UsEstimationDirective","$modelTransform","$watchCollection","EstimationsService","$qqueue","EstimationProcess","pointsTemplate","$el1","us1","project1","bindClickEvents","pointsById","revert","values","v","k","notNullValues","acc","num","pointObj","renderPointsSelector","siblings","popover","point","horizontalList","some","horizontal","closest","offset","top","height","clientHeight","defaultFilter","defaultValue","yesNoFilter","momentFormat","momentFromNow","without_suffix","fromNow","toMutableFilter","toMutable","js","memoizedMutable","memoize","List","byRefFilter","$filterFilter","cleanRef","substr","darkerFilter","luminosity","c","newColor","markdownToHTML","wysiwigService","inArray","$filter","arrayFilter","listItem","unescape","textToHTML","superClass","LightboxService","LightboxKeyboardNavigationService","ignoreEsc","lightboxContent","not","firstField","activeElement","blur","which","$applyAsync","docEl","removeAttr","lightboxEl","dispatch","code","trigger","prev","LightboxDirective","$attr","visible","LightboxClose","elm","BlockLightboxDirective","$tgrepo","unblock","finishCallback","transform","is_blocked","blocked_note","BlockingMessageInputDirective","ngmodel","watch","CreateBulkUserstoriesDirective","getCurrentStatus","displayStatusSelector","currentStatus","statusId","toggleStatus","displayStatus","hideStatus","setStatus","swimlaneId","bulk","us_position","swimlane","default_swimlane","bulkCreate","swimlane_id","parents","LightboxLeaveProjectWarningDirective","SetDueDateDirective","due_date","new_due_date","unit","due_date_reason","CreateEditDirective","attachmentsService","checkClose","createAttachments","deleteAttachments","getSchema","isDisabledExisting","mount","resetAttachments","saveItem","sprintChangeConfirmAndSave","schema","attachmentsToAdd","attachmentsToDelete","schemas","objName","include_attachments","include_tasks","translationID","translationIDPlural","statusList","initialData","default_us_status","is_archived","sprintId","user_story","typeById","issue_types","typeList","severityList","priorityList","milestonesById","default_priority","default_severity","default_issue_status","default_issue_type","setMode","getOrCreate","existingFilterText","listInAllProjects","existingItems","copy","objType","attachments","lightboxOpen","addAttachment","attachment","deleteAttachment","addTag","projectTags","tags_colors","itemtags","deleteTag","pull","promises","upload","file","addExistingToSprint","oldSprintName","newSprintName","relatedObjectId","setAttr","relatedField","broadcastEvent","isLoading","getByRef","isModified","team_requirement","client_requirement","is_iocaine","isTeamRequirement","isClientRequirement","selectedStatus","is_closed","templateScope","compiledTemplate","RelateToEpicLightboxDirective","$tgCurrentUserService","tgResources","$tgResources","$epicsService","tgAnalytics","existingEpicForm","filterEpics","loadProjects","newEpicForm","selectProject","projectEpics","selectedProject","selectedProjectId","filterText","is_epics_activated","project__blocked_code","excludeIds","filteredData","selectedEpic","searchEpic","onUpdateSearchEpic","saveRelatedEpic","selectedEpicId","onSavedRelatedEpic","addRelatedUserstory","createEpic","epicSubject","onCreateEpic","epicId","Loaded","compile","$event","LoaderDirective","tgLoader","onStart","onEnd","Loader","minTime","startLoadTime","requestCount","lastResponseDate","pageLoaded","force","timeoutValue","diff","autoClose","intervalAuto","auto","TgLoadingService","settings","removeClasses","classess","timeoutId","LoadingDirective","tgLoading","showLoading","UsStatusDirective","usStatusDomParent","usStatusDom","statusElement","tgUsStatus","onUpdate","RelatedTaskStatusDirective","selectionTemplate","updateTaskStatus","taskStatusDomParent","taskStatusDom","tgRelatedTaskStatus","isVisible","docViewBottom","docViewRight","docViewTop","elemBottom","elemLeft","elemTop","elemWidth","display","visibility","scrollTop","left","elemRight","closePopover","fadeOut","fadeIn","globalPopover","cb","createSvg","elementPosition","followElement","ul","wrapper","attrHref","tgSvg","svg","xlink","createAttribute","setAttributeNode","rect","getBoundingClientRect","right","paddingTop","paddingLeft","style","option","li","button","innerHTML","createTextNode","ExceptionHandlerFactory","ravenConfig","Raven","install","cause","captureException","SECTIONS","SectionsService","1","2","3","4","5","6","getPath","sectionId","defaultHomePage","p","TagManagerService","injectTagManager","w","d","gtm.start","f","dl","TagsDirective","formatter","isArray","parser","$formatters","$parsers","ColorizeTagsBacklogDirective","tgColorizeBacklogTags","LbTagLineDirective","templateTags","autocomplete","withoutColors","has","renderTags","tagsColors","showSaveButton","hideSaveButton","resetInput","addValue","deleteValue","saveInputTag","fromCharCode","Awesomplete","UserPilotService","checkZendeskConditions","hasPaidPlan","is_new_user","getJoinedLimit","userPilotId","getItem","calculateUserPilotId","userPilotCustomer","prepareUserPilotCustomer","zE","setZendeskWidgetStatus","created_at","now","taiga_id","taiga_username","taiga_date_joined","taiga_lang","taiga_max_private_projects","taiga_max_memberships_private_projects","taiga_verified_email","taiga_total_private_projects","taiga_total_public_projects","taiga_roles","maxPrivateProjects","limit","getDate","supress","webWidget","chat","suppress","contactForm","helpCenter","talk","answerBot","CreateEditSprint","getLastSprint","openFn","resetSprint","ussToAdd","hasErrors","createSprint","newSprint","createEditOpen","estimated_start","estimated_finish","estimated_end","realClone","sprintsCounter","sprints","__all__","milestonesCounter","openSprints","closed","sortedSprints","uss","estimatedStart","lastSprint","estimatedFinish","lastSprintNameDom","editSprint","BacklogController","params1","events","rs2","modelTransform","backlogOrder","milestonesOrder","disablePagination","firstLoadComplete","translationData","totalUserStories","pendingDrag","noSwimlaneUserStories","swimlanesList","validQueryParams","showTags","activeFilters","showGraphPlaceholder","displayVelocity","initializeEventHandlers","loadSwimlanes","getShowTags","newUs","preloadUsIds","usIds","loadNextPage","lastLoadUserstoriesParams","only_ref","listUnassigned","header","storeBacklog","loadUserstories","loadProjectStats","els","moveUsToTopOfBacklog","ussToMove","loadSprints","toggleVelocityForecasting","loadClosedSprints","findIndex","moveUs","resetFirstStoryIndicator","unloadClosedSprints","initializeSubscription","routingKey1","loadAllPaginatedUserstories","routingKey2","selfNotification","toggleShowTags","storeShowTags","toggleActiveFilters","calculateForecasting","visibleUserStories","forecastedStories","stats","defined_points","completedPercentage","total_milestones","setMilestonesOrder","user_stories","results1","sprint_order","closedSprints","totalClosedMilestones","closedSprintsById","totalMilestones","totalOpenMilestones","sprintsById","currentSprint","findCurrentSprint","resetPagination","pageSize","loadingUserstories","storeQueryParams","parseLoadUserstoriesResponse","backlog_order","loadBacklog","getLinkParams","ParsedLastLoadUserstoriesParams","pickBy","identity","sprintTotalPoints","backlog_points_sum","assigned_points","forecastNewSprint","speed","closedMilestones","total_closed_milestones","usStatusList","toggleTags","prepareBulkUpdateData","uses","us_id","order","first_us_in_backlog","nextUs","Array","usList","newUsIndex","newSprintId","previousUs","currentSprintId","len2","targetList","oldSprintId","bulkUserstories","splice","bulkUpdateBacklogOrder","updatedUs","n","len3","updateUserStoryStatus","editUserStory","deleteUserStory","without","addNewUs","addNewSprint","currentDate","addFilterBacklog","removeFilterBacklog","BacklogDirective","doomLineTemplate","linkDoomLine","reloadDoomLine","current_sum","domElement","removeDoomlineDom","addDoomLineDom","before","linkToolbar","checkSelected","lastChecked","shiftPressed","getUsToMove","ussDom","itemScope","moveUssToSprint","selectedUss","ussCurrent","extraPoints","totalExtraPoints","union","bulkUpdateMilestone","moveToCurrentSprint","moveToLatestSprint","partial","toggleClass","moveToSprintDom","shiftKey","elements","nextAll","prevAll","nextUntil","prevUntil","showHideTags","ussToMoveList","openFilterInit","showHideFilter","linkFilters","filtersSearch","UsEditSelector","$tgTemplate","mainTemplate","removePopupOpenState","contains","UsRolePointsSelectorDirective","roleName","is","UsPointsDirective","rolesTemplate","bindClickElements","renderRolesSelector","updatingSelectedRoleId","selectedRoleId","tgBacklogUsPoints","popRolesDom","ToggleBurndownVisibility","firstLoad","toggleGraph","isBurndownGraphCollapsed","BurndownBacklogGraphDirective","redrawChart","dataToDraw","milestonesRange","zero_line","ml","zip","fillColor","optimal_line","optimal","evolution_line","evolution","client_increment_line","team_increment_line","colors","grid","borderWidth","bottom","borderColor","hoverable","margin","xaxis","ticks","axisLabel","axisLabelUseCanvas","axisLabelFontSizePixels","axisLabelFontFamily","axisLabelPadding","tickFormatter","axis","yaxis","series","shadowSize","fill","radius","lineWidth","tooltip","tooltipOpts","xval","yval","flotItem","seriesIndex","sprintName","abs","empty","plot","TgBacklogProgressBarDirective","projectPointsPercentaje","closedPointsPercentaje","adjustPercentaje","adjusted","tgBacklogProgressBar","definedPoints","deleteElement","BacklogSortableDirective","ctrl","drake","initIsBacklog","oldIndex","emptyBacklog","dragula","copySortSource","isContainer","moves","source","sibling","dataset","Number","container","dragMultiple","firstElement","dragMultipleItems","getElements","parentEl","isBacklog","sameContainer","autoScroll","pixels","scrollWhenOutside","down","dragging","BacklogSprintDirective","slideOptions","duration","easing","toggleSprint","sprintTable","tgBacklogSprint","slideToggle","BacklogSprintHeaderDirective","taskboardUrl","estimatedDateRange","ToggleExcludeClosedSprintsVisualization","excludeClosedSprints","loadingElm","after","SprintDirective","SprintChartDirective","days","utc","day","unshift","open_points","optimal_points","tickSize","last","daysNames","formattedDate","roundedValue","CreateBulkTasksDirective","TaskboardController","rs1","q1","taskboardTasksService","taskboardIssuesService","lightboxFactory","timeout1","openFilter","backToBacklogUrl","usTasks","taskMap","milestoneIssues","tasksByUs","milestoneIssue","issuesRaw","rawIssue","getQueryParams","_setMeta","setZoom","zoomLevel","zoom","previousZoomLevel","isFirstLoad","resetFolds","zoomLoading","loadIssues","completedPoints","completedPointsSum","totalPointsSum","openTasks","totalTasks","total_tasks","refreshTagsColors","replaceModel","taskMove","onAssignedToChanged","itemsMoved","userid","getName","loadTaskboard","loadSprintStats","loadSprint","pointsList","roleById","taskStatusList","res","completed_points","remainingPointsSum","remainingTasks","completed_tasks","setUserstories","locationParams","listInProject","initIssues","notFoundTasks","initialLoad","sslug","getSprintShowTags","setRolePoints","storeSprintShowTags","showPlaceHolder","tasksRaw","editTask","getTask","getIn","editingTask","editIssue","getIssue","editingIssue","deleteTask","deletingTask","deleteIssue","deletingIssue","removeIssueFromSprint","removingIssue","oldStatusId","movingTask","getTaskModel","moveUpdateData","move","status__is_archived","set-orders","set_orders","reloadUserStory","assignOrders","userStoryId","addNewTask","addNewIssue","targetName","toggleFold","modelName","openUsersSelection","changeTaskAssignedTo","changeIssueAssignedTo","getIssueModel","getPoint","pointsByRole","getRole","getIssuesOrderBy","order_by","TaskboardDirective","scrollLeft","TaskboardSquishColumnDirective","getCeilWidth","recalculateStatusColumnWidth","recalculateTaskboardWidth","setStatusColumnWidth","statusesFolded","getStatusColumnModes","usFolded","getUsRowModes","foldStatus","storeStatusColumnModes","foldUs","rowId","storeUsRowModes","isStatusFolded","isUSFolded","columns","ceil","avatarWidth","statusFoldedWidth","initialWidth","total","TaskboardSortableDirective","filterError","initialContainer","itemEl","newParentScope","oldParentScope","$tgConfirm","containers","accepts","cancel","itemIndex","itemTask","newStatusId","newUsId","oldUsId","st","tableBody","TaskboardIssuesService","foldStatusChanged","issueId","issueModel","images","thumbnail_card_url","colorized_tags","TaskboardTasksService","Map","taskId","refreshRawOrder","taskboard_order","invert","afterDestination","previous","previousWithTheSameOrder","setOrders","taksWithoutMoved","taskByUsStatus","beforeDestination","task_id","taskModel","KanbanUserstoriesService","resetSwimlanesList","resetArchivedStatus","resetHideStatud","userstoriesRaw","usByStatus","usMap","usByStatusSwimlanes","statusHide","archivedStatus","refreshUserStory","initUsByStatusList","usModel","refreshSwimlanes","retrieveUserStoryData","addArchivedStatus","isUsInArchivedHiddenStatus","deleteStatus","showStatus","getStatus","toDelete","archived","difference","kanban_order","previousCard","nextCard","initialLength","previousUsIndex","previousUsOrder","usByStatusWithoutMoved","listIt","moveIt","getUsModel","afterUserstoryId","beforeUserstoryId","moveToEnd","usItem","getUs","assignedUserId","assignedUserData","assigned_users_preview","refreshUsMap","collection","emptySwimlaneExists","userstoriesNoSwimlane","emptySwimlane","insert","swimlaneUsByStatus","usListSwimlanes","CardSvgTemplate","KanbanController","kanbanUserstoriesService1","kanbanUserstoriesService","renderUserStories","changeUsAssignedUsers","movedUs","foldedSwimlane","renderBatching","isLightboxOpened","isRefreshNeeded","cleanSelectedUss","toggleSelectedUs","moveToTopDropdown","moveUsToTop","nextUsId","lastUsId","newOrder","loadUserStoriesForStatus","hideUserStoriesForStatus","refreshAfterSwimlanesOrUserstoryStatusesHaveChanged","fetchProject","randomTimeout","routingKeyUserstories","eventsLoadUserstories","routingKeyProject","editUs","editingUserStory","deleteUs","deletingUserStory","firstStatus","firstSwimlane","toggleSwimlane","kanban","storeSwimlanesModes","assignedUsersIds","renderBatch","clean","renderInProgress","take","queue","batchSize","rendered","drop","batchTimings","userstoriesMap","loadUserstoriesParams","modifiedUs","eventUserstories","pk","raw","listAll","newUss","archivedPromises","lastSearch","loadPromises","openArchived","archivedStatusId","archivedRedult","notFoundUserstories","filteredStatus","waitEmptyQuote","loadKanban","swimlanesStatuses","usCardVisibility","getSwimlanesModes","newSwimlaneId","apiNewSwimlaneId","bulkUpdateKanbanOrder","KanbanDirective","_tableBody","watchKanbanSize","kanbanStyles","getComputedStyle","columnMargin","getPropertyValue","resizeObserver","ResizeObserver","entries","column","offsetWidth","unobserve","setProperty","observe","board","initBoard","visibleEntries","entry","$evalAsync","taskColumnLoaded","addSwimlane","cardLoaded","addCard","isTableLoaded","kanbanTableLoaded","tableHeaderDom","openSwimlane","scroll","KanbanArchivedShowStatusHeaderDirective","tgKanbanArchivedShowStatusHeader","KanbanArchivedStatusIntroDirective","tgKanbanArchivedStatusIntro","userStoriesLoaded","KanbanSquishColumnDirective","folds","unfold","archivedFolds","KanbanWipLimitDirective","tgKanbanWipLimit","redrawWipLimit","cards","wipLimitClass","wip_limit","CardAssignedToDirective","svgTemplate","vm","avatars","checkPermission","svgData","initializeZoom","onChange","ctrlKey","metaKey","onClickAssignedTo","CardDataDirective","dueDateService","emptyTask","dueDateColor","dueDate","isClosed","dueDateTitle","totalAttachments","CardActionsDirective","openPopup","actions","getModifyPermisionKey","onClickEdit","getDeletePermisionKey","onClickDelete","isFirst","onClickMoveToTop","KanbanSwimlaneDirective","currentSwimlane","mouseleaveSwimlane","mouseoverSwimlane","querySelectorAll","KanbanTaskboardColumnDirective","KanbanSortableDirective","dropTarget","finalUsList","newStatus","newSwimlane","oldSwimlaneId","oldStatus","tableLoaded","EpicDetailController","attachmentsFullService","epicRef","epicref","attachmentsReady","initializeOnDeleteGoToUrl","epicStatus","statusById","epicDescription","description_html","loadAttachments","loadEpic","immutableProject","immutableEpic","commentModel","neighbors","previousUrl","listInEpic","onUpvote","upvote","onDownvote","downvote","onWatch","onUnwatch","onSelectColor","onSelectColorSuccess","onSelectColorError","EpicStatusDisplayDirective","EpicStatusButtonDirective","IssueDetailController","issueRef","issueref","issueSubject","issueStatus","issueType","issueSeverity","issuePriority","ref3","issueDescription","loadIssue","milestoneId","IssueStatusDisplayDirective","IssueStatusButtonDirective","IssueTypeButtonDirective","typees","IssueSeverityButtonDirective","severityes","IssuePriorityButtonDirective","priorityes","AssignSprintToIssueButtonDirective","existsMilestone","avaliableMilestones","selectedSprint","needle","haystack","toUpperCase","filterMilestones","saveIssueToSprint","CreateBulkIssuesDirective","IssuesController","voting","isOrderedBy","myFiltersHashSuffix","storeIssuesShowTags","fieldName","orderBy","types","issueStatusList","issueTypes","loadIssuesRequests","models","paginatedBy","getIssuesShowTags","addIssuesInBulk","IssuesPaginationDirective","linkPagination","$pagEl","getNumPages","numPages","renderPagination","cpage","pages","showPrevious","showNext","pagenum","IssuesOrderingDirective","linkOrdering","colHeadElement","currentOrder","finalOrder","IssueStatusInlineEditionDirective","updateIssueStatus","issueStatusDomParent","issueStatusDom","tgIssueStatusInlineEdition","_isModified","IssueAssignedToInlineEditionDirective","updateIssue","tgIssueAssignedToInlineEdition","UserStoryDetailController","configService","tgmodel","sce","usRef","usref","tribeEnabled","tribeHost","closedTasks","progressPercentage","userStoryRef","userStorySubject","descriptionHtml","getTrustedHtml","userStoryStatus","userStoryPoints","userStoryDescription","userStoryClosedTasks","userStoryTotalTasks","userStoryProgressPercentage","relateToEpic","allClosed","loadUs","kanbanHttpParams","locationSearch","backlogHttpParams","legacyChannel","onTribeInfo","publishTitle","alt","publishDesc","withoutMoved","orderList","us_order","fromPairs","reorder","UsStatusDisplayDirective","UsStatusButtonDirective","UsTeamRequirementButtonDirective","canEdit","isRequired","UsClientRequirementButtonDirective","TaskDetailController","taskRef","taskref","taskSubject","taskStatus","taskDescription","loadTask","loadUserStory","TaskStatusDisplayDirective","TaskStatusButtonDirective","TaskIsIocaineButtonDirective","isIocaine","TeamController","setRole","filtersRole","loadMembers","totals","currentUser","issuesEnabled","tasksEnabled","wikiEnabled","loadMemberStats","memberStats","vals","statsKey","sum","_processStats","_processStat","stat","singleStat","userRoles","TeamFiltersDirective","TeamMemberStatsDirective","TeamMemberCurrentUserDirective","TeamMembersDirective","filtersQ","LeaveProjectDirective","leaveConfirm","leave_project_text","confirm_leave_project_text","leave","isCurrentUser","membersFilter","WikiDetailController","attachmentsFullService1","moveLink","loadWiki","wikiSlug","linksVisible","wikiPageName","wikiPageContent","totalEditions","editions","lastModifiedDate","modified_date","wikiId","getBySlug","loadWikiLinks","listLinks","wikiLinks","checkLinksPerms","saveAll","WikiSummaryDirective","last_modifier","wikiPage","WikiWysiwyg","activityService","editableDescription","saveDescription","fetchEntries","uploadFiles","default","storageKey","WikiNavDirective","linkWikiLinks","addWikiLinkPermission","tdom","deleteWikiLinkPermission","direction","mirrorContainer","linkId","newLink","loadPromise","WikiPagesListController","loadWikiPages","TransferProjectStartSuccessDirective","ChangeOwnerLightboxController","lightboxService1","commentOpen","LightboxAddMembersWarningMessageDirective","LbRequestOwnershipDirective","confirmService","transferRequest","filterUsers","getUsers","currentOwnerId","totalUsers","userSearch","selectUser","transferStart","ChangeOwnerLightboxDirective","lightboxKeyboardNavigationService","bindToController","MembershipsController","lightboxFactory1","i_am_admin","canAddUsers","max_memberships","total_memberships","httpFilters","getUrlFilters","membership","is_user_active","is_owner","projectOwnerEmail","user_email","addNewMembers","showLimitUsersWarningMessage","MembershipsDirective","MembershipsRowAvatarDirective","pending","isOwner","tgMembershipsRowAvatar","MembershipsRowAdminCheckboxDirective","tgMembershipsRowAdminCheckbox","inputId","is_admin","MembershipsRowRoleSelectorDirective","roleList","selectedRole","tgMembershipsRowRoleSelector","newRole","MembershipsRowActionsDirective","tgMembershipsRowActions","resendInvitation","defaultMsg","NoMoreMembershipsExplanationDirective","ownerEmail","AdminNavigationDirective","tgAdminNavigation","ProjectProfileDirective","ProjectProfileController","tgAuth","CsvExporterController","_deleteUuid","_generateUuid","setCsvUuid","csvUrl","resolveAbsolute","CsvExporterEpicsController","CsvExporterUserstoriesController","CsvExporterTasksController","CsvExporterIssuesController","epicStatusList","issueTypesList","prioritiesList","severitiesList","canCreatePrivateProjects","valid","openDeleteLightbox","privacyChanged","isAttributeModified","newUrl","is_private","ProjectDefaultValuesDirective","ProjectModulesDirective","initializeFields","newVal","oldVal","videoconferences_extra_data","videoconferences","isVideoconferenceActivated","ProjectExportDirective","buttonsEl","showButtons","hideButtons","resultEl","showResult","hideResult","spinnerEl","showSpinner","hideSpinner","resultTitleEl","loading_title","loading_msg","dump_ready_text","asyn_message","syn_message","setLoadingTitle","setAsyncTitle","setSyncTitle","resultMessageEl","setLoadingMessage","setAsyncMessage","setSyncMessage","showLoadingMode","showExportResultAsyncMode","showExportResultSyncMode","showErrorMode","dumpUrl","errorMsg","csvUuid","regenerateUuid","deleteUuid","CsvEpicDirective","sectionTitle","CsvUsDirective","CsvTaskDirective","CsvIssueDirective","ProjectLogoDirective","showSizeInfo","click","logoAttachment","changeLogo","removeLogo","ProjectLogoModelDirective","modelSetter","tgProjectLogoModel","files","AdminProjectRestrictionsDirective","AdminProjectRequestOwnershipDirective","requestOwnership","canRequest","AdminProjectChangeOwnerDirective","changeOwner","project-id","active-users","current-owner-id","ProjectValuesDirective","TYPE_CHOICES","ProjectValuesSectionController","ProjectValuesController","moveValue","loadValues","resource","ProjectSwimlanesValuesController","removeSwimlane","filterArchivedSwimlaneStatus","filterArchivedProjectStatuses","updatedSwimlanePosition","setDefaultSwimlane","updateSwimlane","ProjectDueDatesValuesController","displayValues","createDefaultValues","ProjectCustomAttributesController","moveCustomAttributes","deleteCustomAttribute","saveCustomAttribute","createCustomAttribute","loadCustomAttributes","_onCustomAttributesModified","ProjectTagsController","mixingClass","cancelMixingTags","confirmMixingTags","toggleMixingFromTags","startMixingTags","editTag","createTag","filterAndSortTags","loadTags","listValues","maxValueOrder","maxBy","itemValue","swimlaneAdded","hideSwimlaneForm","patch_default_swimlane","prevSwimlane","swimlanesOrderArrayFiltered","newSwimlanesOrder","bulkUpdateOrder","moveTo","ProjectSwimlanesValue","isFormVisible","isNewSwimlane","displaySwimlaneForm","ProjectSwimlanesSingle","$animate","displaySwimlaneSingleForm","swimlaneSingleForm","getDefaultTitle","removeSwimlaneTitle","editSwimlaneSingleForm","cancelEditSwimlaneSingleForm","removeSwimlaneDialog","phase","deletingSwimlane","SortableSwimlanes","days_to_due_abs","days_to_due","sign","linkDragAndDrop","linkValue","goToBottomList","saveNewValue","saveValue","valueType","objname","initializeNewValue","initializeTextTranslations","addNewElementText","table","formEl","row","editionRow","onSucces","ProjectDueDatesValues","parentDirective","linkDueDateStatusValue","_setDaysToDue","_valueFromEventTarget","due_date_status_name","_parseAttributesExtra","_parseAttributeExtra","maxOrder","attrValues","attrModel","idx","ProjectCustomAttributesDirective","_manageExtraFormEvent","_manageFormEvent","addExtraOption","cancelCreate","cancelUpdate","hideAddButton","hideCancelButton","hideCreateForm","hideEditForm","hideExtra","initAttrType","initDraggable","removeExtraOption","resetNewAttr","revertChangesInCustomAttribute","showAddButton","showCancelButton","showCreateForm","showEditForm","showExtra","isExtraVisible","sortableChildren","sortableEl","handle","itemAttr","attrExtra","sourceIndex","$index","targetIndex","newAttr","toggleExtraVisible","formExtraEl","formScope","projectTagsAll","tagsFilter","from_tag","to_tag","loadingDelete","mixingTags","toTag","fromTags","loadingMixing","mixTags","ProjectTagsDirective","initializeTagsFilter","initializeMixingTags","originalTag","loadingEdit","loadingCreate","ProjectSwimlanesWipDirective","wipClosed","toggleWipVisibility","publicPermissions","RolesController","_disableComputable","_enableComputable","anyComputableRole","computable","loadRoles","public_permission","external_user","public_permissions","forceLoadProject","askOnSuccess","askOnError","toggleComputable","EditRoleDirective","toggleView","toggle","RolesDirective","NewRoleDirective","DEFAULT_PERMISSIONS","insertPosition","RolePermissionsDirective","resumeTemplate","categoryTemplate","baseTemplate","generateCategoriesFromRole","setActivePermissions","active","isPermissionEditable","setActivePermissionsPerCategory","cat","activePermissions","categories","epicPermissions","milestonePermissions","userStoryPermissions","taskPermissions","issuePermissions","wikiPermissions","renderResume","renderCategory","renderPermissions","getActivePermissions","categoryId","anon_permissions","WebhooksController","loadWebhooks","GithubController","GitlabController","loadModules","BitbucketController","GogsController","WebhookDirective","webhook","tgWebhook","updateLogs","validStatus","prettySentHeaders","toPairs","request_headers","prettySentData","request_data","created","logs_counter","logs","updateShowHideHistoryText","textElement","showVisualizationMode","showEditMode","openHistory","resend","NewWebhookDirective","formDOMNode","addWebhookDOMNode","github","gitlab","bitbucket","SelectInputText","execCommand","GithubWebhooksDirective","saveAttribute","GitlabWebhooksDirective","BitbucketWebhooksDirective","ValidOriginIpsDirective","$ngModel","gogs","GogsWebhooksDirective","DeleteProjectDirective","projectToDelete","BindOnceBindDirective","tgBoBind","BindOnceHtmlDirective","tgBoHtml","BindOnceRefDirective","tgBoRef","BindOnceSrcDirective","tgBoSrc","BindOnceHrefDirective","tgBoHref","BindOnceAltDirective","tgBoAlt","BindOnceTitleDirective","tgBoTitle","BindTitleDirective","tgTitleHtml","BindHtmlDirective","tgBindHtml","ConfigurationService","ContribController","currentPlugin","head","ContribUserSettingsController","FiltersStorageService","HttpService","cacheFactory","cache","removeAll","responseType","LoadElementDirective","tgLoadElement","legacyObj","component","locationFactory","lastRoute","Model","dataTypes","_dataTypes","setAttrs","ModelService","instance","applyCasts","attrName","castName","castMethod","casts","getIdAttrName","self","getter","setter","enumerable","configurable","markSaved","desSerialize","sdata","ddata","$gmUrls","$gmStorage","cls","int","float","NavigationUrlsService","formatUrl","replacer","_resolve","NavigationUrlsDirective","tgSections","bindOnceP","parseNav","param","tgNavGetParams","tgNav","fullUrl","getURLParams","getURLParamsStr","RepositoryService","resolveUrlForModel","idAttrName","resolveUrlForAttributeModel","extraParams","_data","_status","returnHeaders","queryMany","httpOptions","enablePagination","queryOneAttribute","queryOneRaw","queryPaginated","queryOnePaginatedRaw","StorageService","_default","serializedValue","setItem","removeItem","UrlsService","mainUrl","fmt","trimEnd","resourceProvider","_get","userstory","_list","hashSuffix","contentType","entryType","editComment","activityId","commentData","getCommentHistory","deleteComment","undeleteComment","history","hashSprintShowTags","hashIssuesShowTags","project_id","milestone_id","bulk_issues","promoteToUserStory","hashSuffixStatusColumnModes","hashSuffixSwimlanesModes","mdrender","listByUser","bulkCreateMemberships","invitation_extra_text","bulk_memberships","notifyPolicies","listByMember","memberId","bulkData","regenerate_epics_csv_uuid","regenerate_userstories_csv_uuid","regenerate_tasks_csv_uuid","regenerate_issues_csv_uuid","delete_epics_csv_uuid","delete_userstories_csv_uuid","delete_tasks_csv_uuid","delete_issues_csv_uuid","from_tags","export","import","statusUpdater","complete","uploadComplete","uploadFailed","uploadProgress","maxFileSize","fileName","fileSize","evt","loaded","uploadedSize","totalSize","responseText","getResponseHeader","isPrivate","failed","FormData","XMLHttpRequest","setRequestHeader","transformRequest","do","deferredAbort","get_all","noop","u","moveUserStoriesMilestone","currentMilestoneId","bulk_stories","moveTasksMilestone","bulk_tasks","moveIssuesMilestone","swimlanesOrder","bulk_swimlanes","wipLimitUpdate","delete","hashSuffixUsRowModes","bulkUpdateTaskTaskboardOrder","userProjectSettings","changeAvatar","removeAvatar","changePassword","currentPassword","newPassword","current_password","userSettings","contacts","hashShowTags","store","page_size","status_id","bulk_userstories","after_userstory_id","before_userstory_id","editStatus","ids","getBacklog","webhookId","webhooklogId","UserChangePasswordController","UserChangePasswordDirective","newPassword1","newPassword2","DeleteUserDirective","UserLiveNotificationsController","UserLiveNotificationsDirective","UserLiveNotificationsListDirective","policyIndex","policy","prev_level","live_notify_level","UserSettingsController","window1","getLan","getTheme","maxFileSizeMsg","availableThemes","verifyEmail","UserProfileDirective","UserAvatarDirective","avatarAttachment","TaigaAvatarModelDirective","tgAvatarModel","UserSettingsNavigationDirective","tgUserSettingsNavigation","UserNotificationsController","resources","isSaas","onPremiseSubscribed","loadPremise","subscribed","onPremise","subscribeOnPremiseNewsletter","origin_form","getUserStorage","storageState","setUserStorage","storageError","createUserStorage","UserNotificationsDirective","UserNotificationsListDirective","notify_level","UserProjectSettingsController","sections","updateCustomHomePage","projectSettings","filteredSections","allowed_sections","UserWebNotificationsController","UserWebNotificationsDirective","UserWebNotificationsListDirective","web_notify_level","AnimatedCounter","lastCount","renderData","transitionEnd","nextUp","renderCount","nextDown","counter","getCounter","wip","disabled","AssignedToInlineDirective","$currentUserService","$userListService","requiredPerm","renderUserList","selectedId","searchUsers","visibleUsers","showMore","renderUser","assignedObject","assigned_to_extra_info","fullName","isUnassigned","fullNameVisible","usersSearch","selfAssign","unassign","searchingText","AssignedUsersInlineDirective","currentAssignedIds","currentAssignedTo","isAssigned","renderUsersList","renderUsers","hiddenUsers","applyToModel","AttachmentLinkDirective","attachmentsPreviewService","tgAttachmentLink","fileId","AttachmentGalleryDirective","onDelete","AttachmentController","is_deprecated","editMode","mergeIn","AttachmentDirective","AttachmentsDropDirective","eventAttr","tgAttachmentsDrop","dataTransfer","originalEvent","AttachmentsFullController","deprecatedsCount","attachmentsVisible","deprecatedsVisible","uploadingAttachments","objId","toggleDeprecatedsVisible","addAttachments","toDeleteAttachment","errorMessage","reorderAttachment","updateAttachment","toUpdateAttachment","_isEditable","hasPermission","editPermission","showAttachments","AttachmentsFullDirective","displayAttachmentInput","AttachmentsFullService","_attachments","_deprecatedsCount","_attachmentsVisible","_deprecatedsVisible","regenerate","uploading","from_comment","setIn","afterAttachmentId","oldAttachment","setAttachments","AttachmentsPreviewController","getCurrent","hasPagination","getIndex","attachmentIndex","findLast","AttachmentPreviewLightboxDirective","AttachmentsPreviewService","AttachmentsSimpleController","onAdd","AttachmentsSimpleDirective","AttachmentSortableDirective","tgAttachmentsSortable","AutoSelectDirective","AvatarDirective","attributeName","tgAvatarBig","avatarBig","BelongToEpicsDirective","$rs2","updateEpics","userStory","removeEpicRelationship","deleteRelatedUserstory","epicsLength","immutable_epics","isIterable","BindCode","$sce","tElement","tAttrs","tgBindWysiwygHtmlGetter","tgBindWysiwygHtml","tgBindWysiwygHtmlWatch","$$addBindingClass","_extraValidHtmlElments","_extraValidAttrs","matchResult","blockClasses","hljs","getLanguage","highlightBlock","node","getAttribute","scrollIntoView","$$addBindingInfo","relativePaths","refreshAttachmentURL","BoardZoomDirective","levels","CardSlideshowController","cardSlideshowDirective","CardController","hasTasks","getTagColor","hasMultipleAssignedUsers","hasVisibleAttachments","onToggleFold","getClosedTasks","closedTasksPercent","_setVisibility","related","slides","isRelatedTasksVisible","isSlideshowVisible","getNavKey","cardDirective","onClickRemove","inViewPort","folded","ClickInputFile","inputFile","ColorSelectorController","colorList","checkIsColorRequired","displayColorList","userCanChangeColor","isColorRequired","dropRight","setColor","customColor","resetColor","initColor","toggleColorList","onSelectDropdownColor","onKeyDown","ColorSelectorDirective","_timeout","mouseenter","mouseleave","DetailHeaderController","loadingSubject","originalSubject","_checkPermissions","cancelEdit","editSubject","saveSubject","onEditSubjectSuccess","onEditSubjectError","DetailHeaderDirective","$tgWysiwygService","blocked_html_note","html_note","DetailNavController","_checkNav","noMilestone","project_extra_info","DetailNavDirective","DueDateController","tgLightboxFactory","_getScope","setDueDate","dueDatePopoverDirective","bound","getMoment","dueDateDirective","renderDatePicker","DueDateService","defaultConfig","by_default","_formatTitle","_getAppearance","_getDefaultAppearance","defaultAppearance","currentAppearance","appearance","formatedDate","FileChangeDirective","tgFileChange","FilterRemoteStorageService","myFilters","innerPromise","FilterSlideDownDirective","ngIf","contentHeight","outerHeight","context","nextSibling","FilterController","opened","filterModeOptions","filterModeLabels","include","exclude","filterMode","customFilterForm","customFilterName","$onChanges","changes","getIncludedFilters","getExcludedFilters","includedFilters","excludedFilters","activeCustomFilter","repeatedFilterError","lengthZeroError","toggleFilterCategory","filterName","isOpen","openCustomFilter","onSaveCustomFilter","onRemoveFilter","filterCategory","onAddFilter","onRemoveCustomFilter","onSelectCustomFilter","isFilterSelected","FilterDirective","onChangeQ","watchTaskboardHeight","taskboard","maxSize","currentMax","offsetHeight","InputSearchComponent","bindings","change","dirty","IssuesTableController","onEditIssue","onToggleTags","detach","onDetachIssue","onDeleteIssue","issuesTableDirective","onLoadIssues","onAddIssuesInBulk","onAddNewIssue","sprintIssues","issueOptions","displayOptions","hideOptions","JoyRideDirective","joyRideService","initJoyrRide","unsuscribe","intro","introJs","oncomplete","onexit","disableJoyRide","setOptions","exitOnEsc","exitOnOverlayClick","showStepNumbers","nextLabel","prevLabel","skipLabel","doneLabel","disableInteraction","setOption","loadJoyRideConfig","exit","JoyRideService","checkPermissionsService","getConfig","dashboard","steps","backlog","check","joyRide","KanbanBoardZoomDirective","onZoomChange","getZoomView","zooms","zoomIndex","SelectUserDirective","closeLightbox","confirmSelection","getFilteredUsers","available","_filterRows","userIds","roleUsers","userNames","addItem","clearSearch","LiveAnnouncementDirective","defineProperties","LiveAnnouncementService","MoveToSprintLightboxController","someSelected","selectedSprintId","typesSelected","itemsToMove","_loadSprints","openItems","_init","hasManyItemTypes","ussCount","updateSelected","tasksCount","issuesCount","itemType","itemsNotMoved","itemsList","itemsType","moveItems","displayWarning","totalItemsMoved","moveToSprintLightboxDirective","MoveToSprintController","hasOpenItems","getOpenUss","getOpenStorylessTasks","getOpenIssues","checkOpenItems","open-items","unnasignedTasks","issue_id","moveToSprintDirective","ProjectLogoBigSrcDirective","projectLogoService","projectLogo","logo","getDefaultProjectLogo","ProjectLogoSmallSrcDirective","ProjectMenuController","menu","_getActiveSection","projectMenu","_setVideoConference","_setMenuPermissions","videoconferenceUrl","_videoConferenceUrl","oldSectionName","sectionsBreadcrumb","indexBacklog","indexKanban","baseUrl","ProjectMenuDirective","fixed","projectChange","PromoteToUsButtonDirective","searchListDirective","avaliableItems","isContainedIn","itemsById","parseString","resetAll","resetSelected","currentSelected","filterClosed","showClosed","textShowClosed","textHideClosed","choiceId","items","toggleShowClosed","filterItems","filtering","itemAttrs","filterBy","placeholder","itemDisabled","SwimlaneSelector","getCurrentSwimlane","getSelectedSwimlane","displaySelector","selectedSwimlane","filteredSwimlanes","defaultSwimlaneId","selectSwimlane","hasUnclassifiedStories","TagOptionDirective","selectedPosition","containerHeight","onSelectTag","colorArray","TagLineCommonController","tagLineService","disableColorSelection","newTag","_createColorsArray","projectTagColors","createColorsArray","displayTagInput","addNewTag","onAddTag","selectColor","TagLineCommonDirective","tagName","loadingAddTag","loadingRemoveTag","onDeleteTag","TagLineController","onDeleteTagError","onDeleteTagSuccess","onAddTagError","onAddTagSuccess","TagLineDirective","TagLineService","myPermissions","projectPermissions","TagDirective","hasPermissions","TaskboardZoomDirective","TasksSortableDirective","tgTasksSortable","TermsOfServiceAndPrivacyPolicyNoticeDirective","privacyPolicyUrl","termsOfServiceUrl","AssignedToDirective","currentUserId","isSelfAssigned","assignedUser","openAssignedUsers","currentItem","AssignedUsersDirective","deleteAssignedUser","visibleAssignedUsersCount","displayHidden","assignedToUser","assignedUserIds","selfAssigned","TicketWatchersController","openWatchers","watchersIds","watchers","getPerms","_watch","_unwatch","deleteWatcher","watcherId","WatchersDirective","visibleWatchersCount","tipsDirective","tips","loadTip","waitingTimeout","tipLoaded","tip","TribeButtonDirective","locationService","port","TribeLinkedDirective","gigTitle","gigId","VoteButtonController","toggleVote","is_voter","VoteButtonDirective","ProjectSwimlanesWipLimitController","new_wip_limit","submitSwimlaneNewStatus","displayWipLimitSelector","swimlane_userstory_status_id","WipLimitSelector","toggleWipSelectorVisibility","CommentEditWysiwyg","CommentWysiwyg","saveComment","onAddComment","CustomFieldEditWysiwyg","ItemWysiwyg","Wysiwyg","$attachmentsFullService","htmlReadMode","editonly","onCancel","onSave","onUploadFile","discardLocalStorage","editorLinks","getCurrentContent","isDraft","isOutdated","linksEvents","localSave","saveEnd","setHtmlEditor","textEditor","throttleChange","unwatchContent","updateMarkdownWithCurrentHtml","isEditOnly","notPersist","parentElement","setEditMode","unwatchLoader","outdated","uploadFunction","fullNameDisplay","detail","refreshAttachmentURLFromMarkdown","saving","cancelWithConfirmation","getMarkdown","throttle","WysiwygService","projectDataConversion","dataConversion","angularDataConversion","setUp","toMarkdown","toHtml","getAttachmentData","tokens","getCachedAttachment","cache_key","attachmentId","cached_result","newHref","currentHref","endsWith","removeAttribute","links","attrValue","warn","DiscoverHomeOrderByController","is_open","week","month","year","currentText","currentOrderBy","DiscoverHomeOrderByDirective","DiscoverSearchBarController","discoverProjectsService","projectsCount","fetchStats","submitFilter","DiscoverSearchBarDirective","DiscoverSearchListHeaderController","like_is_open","activity_is_open","openLike","setOrderBy","openActivity","DiscoverSearchListHeaderDirective","FeaturedProjectsController","featured","fetchFeatured","FeaturedProjectsDirective","HighlightedDirective","highlighted","MostActiveController","mostActive","getOrderBy","fetch","fetchMostActive","MostActiveDirective","MostLikedController","mostLiked","fetchMostLiked","MostLikedDirective","DiscoverHomeController","onSubmit","DiscoverSearchController","routeParams","searchResult","nextSearchPage","loadingGlobal","loadingList","loadingPagination","resetSearchList","fetchByGlobalSearch","fetchByOrderBy","getFilter","fetchSearch","is_looking_for_people","onChangeFilter","updateParams","onChangeOrder","DiscoverSearchDirective","DiscoverProjectsService","_discoverParams","projectsService","_mostLiked","_mostActive","_featured","_searchResult","_projectsCount","decorate","_decorate","_nextSearchPage","discover_mode","_params","getProjects","is_featured","CreateEpicController","epicsService","newEpic","default_epic_status","validateForm","setFormErrors","CreateEpicDirective","EpicRowController","displayUserStories","displayAssignedTo","displayStatusList","loadingStatus","_calculateProgressBar","progress","canEditEpics","toggleUserStoryList","listRelatedUserStories","userStories","epicStories","updateStatus","updateEpicStatus","updateAssignedTo","assignLoader","updateEpicAssignedTo","EpicRowDirective","EpicsDashboardController","setfn","isEpicsDashboardEnabled","fetchEpics","notFound","canCreateEpics","on-create-epic","EpicsSortableDirective","tgEpicsSortable","EpicsTableController","displayVotes","votes","assigned","closed_us","_disablePagination","_loadingEpics","toggleEpicTableOptions","reorderEpic","nextPage","hoverEpicTableOption","timer","hideEpicTableOption","updateViewOptions","EpicsTableDirective","StoryRowController","totalTasksCompleted","story","StoryRowDirective","EpicsService","xhrError","_epics","_page","epicData","epics_order","reorderRelatedUserstory","epicUserstories","userstoryId","replaceEpic","RelatedUserStoriesController","showCreateRelatedUserstoriesLightbox","showRelatedUserStoriesSection","userCanSort","loadRelatedUserstories","RelatedUserstoriesCreateController","projectUserstories","filterUss","saveRelatedUserStory","selectedUserstoryId","onSavedRelatedUserstory","validateExistingUserstoryForm","setExistingUserstoryFormErrors","bulkCreateRelatedUserStories","userstoriesText","onCreatedRelatedUserstory","validateNewUserstoryForm","setNewUserstoryFormErrors","RelatedUserstoriesCreateDirective","newUserstoryForm","existingUserstoryForm","showLightbox","selectedUserstory","searchUserstory","relatedUserstoriesText","onUpdateSearchUserstory","RelatedUserstoriesSortableDirective","tgRelatedUserstoriesSortable","RelatedUserStoriesDirective","RelatedUserstoryRowController","setAvatarData","getAssignedToFullNameDisplay","onDeleteRelatedUserstory","RelatedUserstoryRowDirective","ExternalAppController","externalAppsService","createApplicationToken","_getApplicationToken","_redirect","_applicationId","application","_state","state","_user","_application","loginUrl","loginWithAnotherUserUrl","applicationToken","getApplicationToken","back","authorizeApplicationToken","ExternalAppsService","applicationId","externalapps","FeedbackService","sendFeedback","ActivityService","_contentType","_objectId","loadingEntries","getHistory","historyType","CommentController","permissionService","hiddenDeletedComment","showDeletedComment","hideDeletedComment","checkCancelComment","onEditMode","commentId","canEditDeleteComment","onEditComment","displayCommentHistory","CommentDirective","editing","deleting","onDeleteComment","onRestoreDeletedComment","CommentsController","initializePermissions","canAddCommentPermission","CommentsDirective","comments","reverse","LightboxDisplayHistoricController","_loadHistoric","commentHistoryEntries","LightboxDisplayHistoricDirective","HistoryEntryDirective","HistoryTabsDirective","showCommentTab","showActivityTab","onActiveComments","onActiveActivities","onOrderComments","activeTab","commentsNum","activitiesNum","onReverse","HistorySectionController","viewComments","_loadHistory","_loadComments","_loadActivity","activities","nextActivityPage","showHistorySection","toggleEditMode","onActiveHistoryTab","restoreDeletedComment","addComment","HistorySectionDirective","ActivitiesDiffController","diffTags","diffRemoveTags","diffAddTags","promotedTo","generated_user_stories","HistoryDiffDirective","HistoryDirective","DutyDirective","duty","isHidden","getDutyType","HomeController","HomeService","_attachProjectInfoToWorkInProgress","workInProgress","projectsById","_attachProjectInfoToDuty","_duties","_getValidDutiesAndAttachProjectInfo","assignedTo","watching","duties","dutyType","getWorkInProgress","projectsPromise","getListProjectsByUserId","params_epics","status__is_closed","params_uss","params_tasks","params_issues","assignedEpicsPromise","assignedUserStoriesPromise","assignedTasksPromise","assignedIssuesPromise","watchingEpicsPromise","watchingUserStoriesPromise","watchingTasksPromise","watchingIssuesPromise","HomeProjectListDirective","WorkingOnController","homeService","hiddenAssignedTo","showHiddenAssignedTo","showHiddenWatching","_setAssignedTo","elem","_setWatching","WorkingOnDirective","slot","slots","updateShowHiddenDuties","showHiddenDuties","getShowHiddenDuties","updateHiddenDuties","hiddenDuties","getHiddenDuties","toggleDutyHidden","toggleShowHiddenDuties","InviteMembersFormController","rolesValues","defaultMaxInvites","_areRolesValidated","contactsToInvite","emailsToInvite","_checkLimitMemberships","pendingMembersCount","membersLimit","showWarningMessage","sendInvites","setInvitedContacts","role_id","inviteContactsMessage","InviteMembersFormDirective","onDisplayContactList","onRemoveInvitedContact","onRemoveInvitedEmail","onSendInvites","AddMembersController","userService","displayContactList","_getContacts","excludeProjectId","getContacts","_filterContacts","invited","contact","inviteSuggested","removeContact","testEmptyContacts","inviteEmail","emailData","removeEmail","LightboxAddMembersDirective","SuggestAddMembersController","contactQuery","filterContacts","filteredContacts","setInvited","onInviteSuggested","SuggestAddMembersDirective","onInviteEmail","DropdownNotificationsDirective","notificationsService","notificationsList","newEvent","setAllAsRead","setNotificationsAsRead","DropdownProjectListDirective","newProject","updateLinks","DropdownUserDirective","authService","navUrlsService","isFeedbackEnabled","customSupportUrl","userMenu","NavigationBarDirective","attempts","loadUserPilot","userPilotInterval","isEnabledHeader","userPilotIframe","widget","contentWindow","userPilotTitle","innerText","TAIGA_USER_PILOT_TOKEN","userpilotEnabled","_taigaSendFeedback","NavigationBarService","enabledHeader","NotificationsListDirective","infiniteScrollContainer","infiniteScrollDistance","infiniteScrollDisabled","onlyUnread","NotificationsController","scrollDisabled","initList","loadNotifications","reloadList","getNotificationsList","setAsRead","setNotificationAsRead","$$url","NotificationsService","_notificationTypes","userTimelinePaginationSequenceService","translate_params","title_attr","_getLink","_getUsernameSpan","obj_name","_getNotificationObject","_getDetailObjUrl","getNotifications","_addNotificationAttributes","generate","notificationId","_getType","event_type","_getTitle","projectSectionPath","projectUrl","_translateTitleParams","urlMapping","span","_getParams","notification_type","translation","paramsKeys","ProfileBarController","loadStats","getStats","ProfileBarDirective","ProfileContactsController","loadContacts","ProfileContactsDirective","FavItemDirective","ProfileWatchedController","FavsBaseController","ProfileLikedController","tabName","enableFilterByAll","enableFilterByProjects","enableFilterByEpics","enableFilterByUserStories","enableFilterByTasks","enableFilterByIssues","enableFilterByTextQuery","_getItems","getLiked","ProfileVotedController","getVoted","getWatched","_resetList","_enableLoadingSpinner","_disableLoadingSpinner","_enableScroll","_disableScroll","_checkIfHasMorePages","hasNext","_checkIfHasNoResults","hasNoResults","loadItems","filterByTextQuery","showAll","showProjectsOnly","showEpicsOnly","showUserStoriesOnly","showTasksOnly","showIssuesOnly","ProfileLikedDirective","ProfileVotedDirective","ProfileWatchedDirective","ProfileHints","hintKey","HINTS","hint","linkText","ProfileProjectsController","getProjectsByUserId","attachUserContactsToProjects","ProfileProjectsDirective","ProfileTabDirective","tab","tabIcon","tabActive","tabDisabled","addTab","ProfileTabsController","tabs","toggleTab","ProfileTabsDirective","ProfileController","getUserByUserName","userFullName","userUsername","BlockedProjectExplanationDirective","ContactProjectButtonController","launchContactForm","ContactProjectButtonDirective","layout","ContactProjectLbController","contactProject","sendingFeedback","ContactProjectLbDirective","inject","LikeProjectButtonController","likeButtonService","isMouseOver","showTextWhenMouseIsOver","showTextWhenMouseIsLeave","toggleLike","_unlike","_like","like","unlike","LikeProjectButtonDirective","LikeProjectButtonService","_getProjectIndex","_updateProjects","isFan","projectIndex","totalFans","is_fan","total_fans","setProjects","_updateCurrentProject","setProject","likeProject","unlikeProject","SortProjectsDirective","sortData","sorted_project_ids","bulkUpdateProjectsOrder","WatchProjectButtonController","watchButtonService","showWatchOptions","toggleWatcherOptions","closeWatcherOptions","notifyLevel","WatchProjectButtonDirective","WatchProjectButtonService","isWatcher","totalWatchers","is_watcher","total_watchers","watchProject","unwatchProject","AsanaImportProjectFormController","canCreatePublicProjects","projectForm","platformName","keepExternalReference","project_type","checkUsersLimit","limitMembersPrivateProject","canAddMembersPrivateProject","limitMembersPublicProject","canAddMembersPublicProject","saveForm","onSaveProjectDetails","canCreateProject","isDisabled","AsanaImportProjectFormDirective","onCancelForm","fetchingUsers","AsanaImportController","asanaImportService","importProjectService","projectUsers","startProjectSelector","fetchProjects","onSelectProject","fetchUsers","onCancelMemberSelection","startImport","importProject","importPromise","submitUserSelection","AsanaImportDirective","AsanaImportService","asanaImporter","listProjects","listUsers","userBindings","projectType","getAuthUrl","authUrl","authorize","CreatetProjectFormController","errorList","creation_template","formSubmitLoading","CreateProjectFormDirective","createProjectMembersRestrictionsDirective","createProjectRestrictionsDirective","CreateProjectController","displayScrumDesc","dontAsk","displayOnPremise","displayHelp","displayKanbanDesc","DuplicateProjectController","refreshReferenceProject","getProjectBySlug","referenceProject","invitedMembers","toggleInvitedMember","duplicate","DuplicateProjectDirective","GithubImportProjectFormController","GithubImportProjectFormDirective","GithubImportController","githubImportService","GithubImportDirective","GithubImportService","githubImporter","callbackUri","ImportProjectMembersController","selectImportUserLightbox","warningImportUsers","displayEmailSelector","cancelledUsers","selectedUsers","selectableUsers","userContacts","fetchUser","refreshSelectableUsers","searchUser","searchingUser","beforeSubmitUsers","confirmUser","externalUser","taigaUser","discardSuggestedUser","unselectUser","getSelectedMember","isMemberSelected","userSelected","showSuggestedMatch","getDistinctSelectedTaigaUsers","importMoreUsersDisabled","isImportMoreUsersDisabled","ImportProjectMembersDirective","platform","ImportProjectSelectorController","ImportProjectSelectorDirective","noProjectsMsg","ImportTaigaController","importTaiga","ImportTaigaDirective","LbImportErrorDirective","ImportProjectController","trelloService","jiraService","githubService","asanaService","tgNavUrls","jiraOauthVerifier","trelloOauthToken","from","asanaOauthToken","cancelCurrentImport","oauth_verifier","githubOauthToken","oauth_token","jiraUrl","absUrl","unfoldOptions","unfoldedOptions","isActiveImporter","backToCreate","ImportProjectDirective","onCancelImport","ImportProjectService","importSuccess","importError","restrictionError","getRestrictionError","error_message","errorKey","maxMemberships","membersError","publicError","privateError","InviteMembersController","InviteMembersDirective","onToggleInvitedMember","SingleMemberDirective","JiraImportProjectFormController","importer_type","create_subissues","JiraImportProjectFormDirective","JiraImportController","jiraImportService","JiraImportDirective","JiraImportService","jiraImporter","importerType","NewsletterEmailLightboxDirective","$storageService","openNewsletter","onSelectUser","preference","userEmail","setEmail","SelectImportUserLightboxCtrl","invalid","assignUser","SelectImportUserLightboxDirective","TrelloImportProjectFormController","TrelloImportProjectFormDirective","TrelloImportController","trelloImportService","TrelloImportDirective","TrelloImportService","trelloImporter","verifyCode","WarningUserImportDirective","onConfirm","ProjectsListingController","ProjectRouterController","getProjectHomepage","gotoDefaultProjectHomepage","homepage","ProjectController","activeMembers","registerUrl","ProjectsService","getProjectStats","paginate","transferValidateToken","transferAccept","reason","transferReject","CantOwnProjectExplanationDirective","TransferProject","showAddComment","_refreshUserData","_validateToken","_setProjectData","_checkOwnerData","canBeOwnedByUser","canOwnProject","currentProjects","maxProjects","ownerMessage","validNumberOfMemberships","loadingAccept","loadingReject","hideComment","TransferProjectDirective","Resource","urlsService","urlname","object_id","x-disable-pagination","bulkAttachments","after_attachment_id","bulk_attachments","progressMessage","progressPercent","AsanaResource","GithubResource","JiraResource","TrelloResource","users_bindings","keep_external_reference","jira_url","projectTemplate","requestParams","paginateResponseService","pagination","x-lazy-pagination","slight","getTimeline","only_relevant","services","Resources","serviceName","serviceProperty","serviceFn","getUserByUsername","exclude_project","getProfileTimeline","getUserTimeline","listAllInProject","epicIid","AppMetaService","_set","meta","setTitle","setDescription","setTwitterMetas","origin","setOpenGraphMetas","listener","_listener","metas","AttachmentsService","getMaxFileSize","maxFileSizeFormated","sizeError","saveError","AvatarService","IMAGES","COLORS","logos","getDefault","murmurhash3_32_gc","getUnnamed","avatarParamName","gravatar","root","photo","gravatar_id","CheckPermissionsService","CurrentUserService","storageService","_projects","_projectsById","_joyride","_loadUserInfo","loadProjectsList","totalMembers","membersResult","ErrorHandlingService","errorHandling","showingError","blocked","LightboxFactory","scopeAttrs","PaginateResponse","ProjectLogoService","ProjectService","userActivityService","manageProjectSignal","_project","_section","_sectionsBreadcrumb","_activeMembers","e2e","autoRefresh","watchSignals","signal","fetchRequiredSignals","intervalId","onInactive","onActive","ThemeService","themeName","stylesheetEl","UserActivityService","resetTimer","subscriptionsActive","subscriptionsInactive","isActive","startTimer","idleTimeout","timerId","_fireInactive","_fireActive","_unSubscriptionsActive","_unSubscriptionsInactive","UserListService","excludedUser","UserService","pageNumber","objectType","textQuery","contactsFiltered","contactId","UserTimelineAttachmentDirective","validFileExtensions","extension","templateHtml","UserTimelineItemTitle","_fieldTranslationKey","description_diff","timeline","field_name","new_value","sprint_name","us_name","_getTimelineObj","event_us","related_us_name","epic_name","role_name","keySeq","parent_userstory","timeline_type","getTitle","UserTimelineType","getType","hasIn","UserTimelineItemDirective","UserTimelinePaginationSequence","getContent","minItems","UserTimelineController","userTimelineService","timelineList","getProjectTimeline","loadTimeline","UserTimelineDirective","UserTimelineService","userTimelineItemType","userTimelineItemTitle","_valid_fields","_invalid","value_diff","fieldKey","_isInValidTimeline","_parseEventType","_getTimelineObject","_attachExtraInfoToTimelineEntry","_parseTimeline","newdata","values_diff","moveInBacklog","deleteIn","newItem","_addEntyAttributes","filterNot","IsolateClickDirective","WikiHistoryDiffDirective","WikiHistoryEntryDirective","singleHistoryEntry","historyEntry","WikiHistoryController","initializeHistory","loadHistory","WikiHistoryDirective"],"mappings":"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"}